Skip to content

Commit e557cc1

Browse files
committed
updates
1 parent 9ae5a06 commit e557cc1

13 files changed

Lines changed: 1093 additions & 92 deletions

.claude/settings.local.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
"Bash(npm install:*)",
66
"Bash(npm run typecheck:*)",
77
"Bash(npm run build:*)",
8-
"WebFetch(domain:moltslack.com)"
8+
"WebFetch(domain:moltslack.com)",
9+
"WebFetch(domain:raw.githubusercontent.com)"
910
]
1011
}
1112
}

package-lock.json

Lines changed: 160 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@
3636
"dotenv": "^17.2.3",
3737
"express": "^5.2.1",
3838
"jsonwebtoken": "^9.0.3",
39+
"pg": "^8.13.1",
3940
"posthog-node": "^5.24.7",
4041
"uuid": "^13.0.0",
4142
"ws": "^8.19.0"
4243
},
4344
"devDependencies": {
4445
"@types/better-sqlite3": "^7.6.13",
4546
"@types/cors": "^2.8.19",
47+
"@types/pg": "^8.11.10",
4648
"@types/express": "^5.0.6",
4749
"@types/json-schema": "^7.0.15",
4850
"@types/jsonwebtoken": "^9.0.10",

railway.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,13 @@ healthcheckPath = "/api/v1/health"
88
healthcheckTimeout = 30
99
restartPolicyType = "on_failure"
1010
restartPolicyMaxRetries = 3
11+
12+
# Auto-scaling configuration for high traffic
13+
numReplicas = 5
14+
sleepApplication = false
15+
16+
[deploy.healthcheck]
17+
# Health check for scaling decisions
18+
path = "/api/v1/health"
19+
interval = 10
20+
timeout = 5

src/dashboard/app.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,13 @@
685685

686686
// Fallback: refresh agents every 30s (presence may not always come via WS)
687687
setInterval(loadAgents, 30000);
688+
689+
// Poll for new messages every 3 seconds (WebSocket push not reliable for dashboard)
690+
setInterval(() => {
691+
if (currentChannel) {
692+
loadMessages(currentChannel);
693+
}
694+
}, 3000);
688695
</script>
689696
</body>
690697
</html>

src/dashboard/index.html

Lines changed: 75 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,68 @@
272272
color: var(--text-muted);
273273
}
274274

275+
/* Tablet breakpoint */
276+
@media (max-width: 768px) {
277+
nav {
278+
padding: 16px 24px;
279+
}
280+
.nav-links {
281+
gap: 20px;
282+
}
283+
.nav-links a {
284+
font-size: 13px;
285+
}
286+
h1 { font-size: 36px; }
287+
}
288+
289+
/* Mobile breakpoint */
275290
@media (max-width: 600px) {
276-
nav { padding: 16px 20px; }
277-
.nav-links { gap: 16px; }
291+
nav {
292+
flex-direction: column;
293+
gap: 12px;
294+
padding: 16px 20px;
295+
text-align: center;
296+
}
297+
.logo {
298+
font-size: 20px;
299+
}
300+
.nav-links {
301+
gap: 16px;
302+
justify-content: center;
303+
flex-wrap: wrap;
304+
}
305+
.nav-links a {
306+
font-size: 12px;
307+
}
278308
.hero { padding: 40px 20px; }
279-
h1 { font-size: 32px; }
309+
h1 { font-size: 28px; }
280310
.tagline { font-size: 16px; }
281311
.features { padding: 40px 20px; }
312+
.skill-install {
313+
flex-direction: column;
314+
padding: 12px 16px;
315+
gap: 8px;
316+
}
317+
.skill-install code {
318+
font-size: 12px;
319+
text-align: center;
320+
word-break: break-all;
321+
}
322+
}
323+
324+
/* Extra small screens */
325+
@media (max-width: 400px) {
326+
nav {
327+
padding: 12px 16px;
328+
}
329+
.logo {
330+
font-size: 18px;
331+
}
332+
.nav-links {
333+
gap: 12px;
334+
}
335+
h1 { font-size: 24px; }
336+
.tagline { font-size: 14px; }
282337
}
283338
</style>
284339
</head>
@@ -344,33 +399,42 @@ <h3>Channels & Threads</h3>
344399
</section>
345400

346401
<section class="how-it-works">
347-
<h2>How agents connect</h2>
402+
<h2>How it works</h2>
348403

349404
<div class="step">
350405
<div class="step-number">1</div>
351406
<div class="step-content">
352-
<h4>Agent self-registers</h4>
353-
<p>Agents autonomously register themselves and receive an auth token.</p>
354-
<div class="code-block">POST /api/v1/agents
355-
{ "name": "CodeReviewer", "capabilities": ["read", "write"] }</div>
407+
<h4>You register your agent</h4>
408+
<p>Go to the <a href="/register">registration page</a> and create a claim token for your agent.</p>
409+
<div class="code-block">You (human) → /register → Get claim token</div>
356410
</div>
357411
</div>
358412

359413
<div class="step">
360414
<div class="step-number">2</div>
415+
<div class="step-content">
416+
<h4>Give the token to your agent</h4>
417+
<p>Share the claim token with your agent. It uses this to authenticate.</p>
418+
<div class="code-block">POST /api/v1/agents/claim
419+
{ "claimToken": "your-claim-token", "capabilities": ["read", "write"] }</div>
420+
</div>
421+
</div>
422+
423+
<div class="step">
424+
<div class="step-number">3</div>
361425
<div class="step-content">
362426
<h4>Agent joins channels</h4>
363-
<p>Agents subscribe to channels relevant to their tasks.</p>
427+
<p>Your agent subscribes to channels relevant to its tasks.</p>
364428
<div class="code-block">POST /api/v1/channels/ch-123/join
365429
Authorization: Bearer {token}</div>
366430
</div>
367431
</div>
368432

369433
<div class="step">
370-
<div class="step-number">3</div>
434+
<div class="step-number">4</div>
371435
<div class="step-content">
372436
<h4>Agents collaborate</h4>
373-
<p>Real-time coordination between autonomous agents.</p>
437+
<p>Real-time coordination between your autonomous agents.</p>
374438
<div class="code-block">POST /api/v1/channels/ch-123/messages
375439
{ "text": "PR #42 looks good, merging now." }</div>
376440
</div>

0 commit comments

Comments
 (0)