modelroom 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +40 -8
- package/dist/bin/modelroom.js +241 -75
- package/dist/bin/modelroom.js.map +1 -1
- package/dist/lib/agents/index.d.ts +6 -0
- package/dist/lib/agents/index.d.ts.map +1 -1
- package/dist/lib/agents/index.js +22 -4
- package/dist/lib/agents/index.js.map +1 -1
- package/dist/lib/artifact.d.ts +1 -1
- package/dist/lib/artifact.d.ts.map +1 -1
- package/dist/lib/artifact.js +9 -5
- package/dist/lib/artifact.js.map +1 -1
- package/dist/lib/config.d.ts +17 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +40 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/frontmatter.d.ts +2 -0
- package/dist/lib/frontmatter.d.ts.map +1 -1
- package/dist/lib/frontmatter.js +11 -2
- package/dist/lib/frontmatter.js.map +1 -1
- package/dist/lib/i18n.d.ts +315 -0
- package/dist/lib/i18n.d.ts.map +1 -0
- package/dist/lib/i18n.js +651 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/lang.d.ts +4 -0
- package/dist/lib/lang.d.ts.map +1 -0
- package/dist/lib/lang.js +5 -0
- package/dist/lib/lang.js.map +1 -0
- package/dist/lib/lint.d.ts +3 -0
- package/dist/lib/lint.d.ts.map +1 -1
- package/dist/lib/lint.js +22 -12
- package/dist/lib/lint.js.map +1 -1
- package/dist/lib/locale.d.ts +9 -0
- package/dist/lib/locale.d.ts.map +1 -0
- package/dist/lib/locale.js +32 -0
- package/dist/lib/locale.js.map +1 -0
- package/dist/lib/opencode.d.ts +31 -1
- package/dist/lib/opencode.d.ts.map +1 -1
- package/dist/lib/opencode.js +83 -1
- package/dist/lib/opencode.js.map +1 -1
- package/dist/lib/server.d.ts +3 -0
- package/dist/lib/server.d.ts.map +1 -1
- package/dist/lib/server.js +79 -36
- package/dist/lib/server.js.map +1 -1
- package/dist/lib/templates.d.ts +7 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +30 -0
- package/dist/lib/templates.js.map +1 -0
- package/docs/02-convention.md +10 -5
- package/docs/03-cli.md +59 -14
- package/docs/04-agents.md +27 -3
- package/package.json +9 -19
- package/templates/{AGENTS.md → en/AGENTS.md} +8 -3
- package/templates/ja/AGENTS.md +38 -0
- package/templates/ja/room/BEHAVIOUR.md +18 -0
- package/templates/ja/room/BRIEF.md +16 -0
- package/templates/ja/room/SPEC.md +9 -0
- package/templates/ja/room/index.html +53 -0
- package/templates/modelroom.json +3 -1
- package/ui/assets/app.js +120 -47
- package/ui/dashboard.html +11 -7
- package/ui/kit.html +13 -9
- package/ui/modelroom.css +1 -2
- package/ui/room.html +11 -7
- package/ui/settings.html +11 -7
- /package/templates/{room → en/room}/BEHAVIOUR.md +0 -0
- /package/templates/{room → en/room}/BRIEF.md +0 -0
- /package/templates/{room → en/room}/SPEC.md +0 -0
- /package/templates/{room → en/room}/index.html +0 -0
package/dist/lib/server.js
CHANGED
|
@@ -15,7 +15,8 @@ import { listRoomNames, roomInfo, publicRoom, isRoomName } from './rooms.js';
|
|
|
15
15
|
import { buildFacets, searchRooms } from './facets.js';
|
|
16
16
|
import { getAdapter, stripAnsi } from './agents/index.js';
|
|
17
17
|
import { renderArtifact, playwrightAvailable } from './artifact.js';
|
|
18
|
-
import { sessionView } from './opencode.js';
|
|
18
|
+
import { sessionView, watchParts } from './opencode.js';
|
|
19
|
+
import { t } from './i18n.js';
|
|
19
20
|
function isRecord(value) {
|
|
20
21
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
21
22
|
}
|
|
@@ -42,17 +43,20 @@ export async function createModelroom(opts = {}) {
|
|
|
42
43
|
cfg.port = Number(opts.port);
|
|
43
44
|
if (opts.host)
|
|
44
45
|
cfg.host = String(opts.host);
|
|
46
|
+
if (opts.lang === 'ja' || opts.lang === 'en')
|
|
47
|
+
cfg.lang = opts.lang;
|
|
48
|
+
const tr = (key, params) => t(cfg.lang, key, params);
|
|
45
49
|
await mkdir(cfg.stateDir, { recursive: true }); // keep state local, never in git
|
|
46
50
|
const state = await loadState(cfg);
|
|
47
51
|
// Settings saved from the UI are local state: re-apply them over modelroom.json
|
|
48
52
|
// so a saved model survives the next start.
|
|
49
53
|
applySettings(cfg, state.settings);
|
|
50
54
|
const clients = new Set();
|
|
51
|
-
const chats = new Map(); // room ->
|
|
55
|
+
const chats = new Map(); // room -> its watcher, if it has one
|
|
52
56
|
let rendering = false;
|
|
53
57
|
const status = {
|
|
54
58
|
phase: 'idle',
|
|
55
|
-
message: 'ready',
|
|
59
|
+
message: tr('common.ready'),
|
|
56
60
|
since: Date.now(),
|
|
57
61
|
lastEvent: null,
|
|
58
62
|
log: [],
|
|
@@ -83,6 +87,15 @@ export async function createModelroom(opts = {}) {
|
|
|
83
87
|
status.since = Date.now();
|
|
84
88
|
broadcast('status', { phase, message, since: status.since });
|
|
85
89
|
};
|
|
90
|
+
/**
|
|
91
|
+
* Wait for best-effort work, but never longer than the budget: a snapshot that
|
|
92
|
+
* lands late is still used, while a hung server must not hold up the chat.
|
|
93
|
+
*/
|
|
94
|
+
const settle = async (work, ms) => {
|
|
95
|
+
if (!work)
|
|
96
|
+
return;
|
|
97
|
+
await Promise.race([work, new Promise((resolve) => setTimeout(resolve, ms).unref())]);
|
|
98
|
+
};
|
|
86
99
|
// ── files ─────────────────────────────────────────────────────────────────
|
|
87
100
|
const send = (res, code, type, body) => {
|
|
88
101
|
res.writeHead(code, { 'content-type': type, 'cache-control': 'no-store' });
|
|
@@ -120,7 +133,7 @@ export async function createModelroom(opts = {}) {
|
|
|
120
133
|
catch (err) {
|
|
121
134
|
// Log locally; the browser gets no path or stack information.
|
|
122
135
|
process.stderr.write(`modelroom: cannot serve ${page}: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
123
|
-
return send(res, 500, 'text/plain; charset=utf-8', 'internal
|
|
136
|
+
return send(res, 500, 'text/plain; charset=utf-8', tr('server.internal'));
|
|
124
137
|
}
|
|
125
138
|
}
|
|
126
139
|
/** Static assets of the tool itself (the built stylesheet and friends). */
|
|
@@ -156,7 +169,7 @@ export async function createModelroom(opts = {}) {
|
|
|
156
169
|
return;
|
|
157
170
|
status.lastEvent = { file, at };
|
|
158
171
|
status.phase = 'change';
|
|
159
|
-
status.message =
|
|
172
|
+
status.message = tr('server.changed', { file });
|
|
160
173
|
status.since = at;
|
|
161
174
|
broadcast('change', { file, at });
|
|
162
175
|
broadcast('status', { phase: 'change', message: status.message, since: at });
|
|
@@ -171,20 +184,30 @@ export async function createModelroom(opts = {}) {
|
|
|
171
184
|
// ── chat ──────────────────────────────────────────────────────────────────
|
|
172
185
|
function runChat(room, prompt) {
|
|
173
186
|
if (!prompt || !prompt.trim())
|
|
174
|
-
return { started: false, reason: '
|
|
187
|
+
return { started: false, reason: tr('server.emptyPrompt') };
|
|
175
188
|
if (chats.has(room))
|
|
176
|
-
return { started: false, reason: '
|
|
189
|
+
return { started: false, reason: tr('server.roomRunningChat') };
|
|
177
190
|
const adapter = getAdapter(cfg.agent.adapter);
|
|
178
191
|
const sessionId = sessionOf(room);
|
|
179
|
-
|
|
180
|
-
setStatus('chat',
|
|
181
|
-
broadcast('chat-start', { room, sessionId, prompt, at:
|
|
192
|
+
const startedAt = Date.now();
|
|
193
|
+
setStatus('chat', tr('server.agentWorking', { room }));
|
|
194
|
+
broadcast('chat-start', { room, sessionId, prompt, at: startedAt });
|
|
182
195
|
broadcast('chat', {
|
|
183
196
|
room,
|
|
184
197
|
sessionId,
|
|
185
198
|
stream: 'meta',
|
|
186
199
|
chunk: `$ ${cfg.agent.command} (agent=${cfg.agent.agent || '-'}, model=${cfg.agent.model || 'default'}, session=${sessionId})\n`,
|
|
187
200
|
});
|
|
201
|
+
// A structured agent keeps its turn on its own server while it works — the text,
|
|
202
|
+
// the tool calls, the patches it wrote. Follow that: it is the only live view of
|
|
203
|
+
// the *shape* of the work, where stdout is just prose. `since` is what separates
|
|
204
|
+
// this answer from the previous one, so a run never opens on the last reply.
|
|
205
|
+
const watcher = adapter.structured
|
|
206
|
+
? watchParts(cfg, sessionId, (parts) => broadcast('chat-parts', { room, sessionId, parts }), {
|
|
207
|
+
since: startedAt,
|
|
208
|
+
})
|
|
209
|
+
: null;
|
|
210
|
+
chats.set(room, watcher);
|
|
188
211
|
const child = adapter.run({
|
|
189
212
|
cfg,
|
|
190
213
|
cwd: cfg.rootDir,
|
|
@@ -196,12 +219,17 @@ export async function createModelroom(opts = {}) {
|
|
|
196
219
|
broadcast('chat', { room, sessionId, stream, chunk: text });
|
|
197
220
|
},
|
|
198
221
|
onExit: (code, err) => {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
222
|
+
void (async () => {
|
|
223
|
+
// The last snapshot belongs to this turn: let it land before the turn is
|
|
224
|
+
// called done, or the answer's last line arrives after the chat let go.
|
|
225
|
+
await settle(watcher?.stop().catch(() => { }), 2500);
|
|
226
|
+
chats.delete(room);
|
|
227
|
+
if (err)
|
|
228
|
+
setStatus('error', err);
|
|
229
|
+
else
|
|
230
|
+
setStatus(code === 0 ? 'ok' : 'error', tr('server.agentExited', { room, code }));
|
|
231
|
+
broadcast('chat-done', { room, sessionId, code, error: err || null, at: Date.now() });
|
|
232
|
+
})();
|
|
205
233
|
},
|
|
206
234
|
});
|
|
207
235
|
return { started: true, sessionId, pid: child.pid };
|
|
@@ -209,14 +237,15 @@ export async function createModelroom(opts = {}) {
|
|
|
209
237
|
// ── artifact render (optional) ────────────────────────────────────────────
|
|
210
238
|
async function render(room, device) {
|
|
211
239
|
if (rendering)
|
|
212
|
-
return { ok: false, error: '
|
|
240
|
+
return { ok: false, error: tr('server.alreadyRendering') };
|
|
241
|
+
const png = cfg.artifact.replace(/\.html?$/i, '.png');
|
|
213
242
|
rendering = true;
|
|
214
|
-
setStatus('rendering',
|
|
243
|
+
setStatus('rendering', tr('server.rendering', { room, file: png }));
|
|
215
244
|
broadcast('render-start', { room, device, at: Date.now() });
|
|
216
245
|
try {
|
|
217
246
|
const result = await renderArtifact({ cfg, room, device });
|
|
218
247
|
if (result.ok) {
|
|
219
|
-
setStatus('ok',
|
|
248
|
+
setStatus('ok', tr('server.rendered', { room, file: png }));
|
|
220
249
|
}
|
|
221
250
|
else {
|
|
222
251
|
setStatus('error', result.error);
|
|
@@ -281,7 +310,7 @@ export async function createModelroom(opts = {}) {
|
|
|
281
310
|
catch (err) {
|
|
282
311
|
const detail = err instanceof Error ? err.message : String(err);
|
|
283
312
|
process.stderr.write(`modelroom: cannot read request body: ${detail}\n`);
|
|
284
|
-
sendJson(res, 400, { error: '
|
|
313
|
+
sendJson(res, 400, { error: tr('server.badBodyRead') });
|
|
285
314
|
return null;
|
|
286
315
|
}
|
|
287
316
|
if (!raw.trim() && optional)
|
|
@@ -289,7 +318,7 @@ export async function createModelroom(opts = {}) {
|
|
|
289
318
|
try {
|
|
290
319
|
const parsed = JSON.parse(raw || '{}');
|
|
291
320
|
if (!isRecord(parsed)) {
|
|
292
|
-
sendJson(res, 400, { error: '
|
|
321
|
+
sendJson(res, 400, { error: tr('server.bodyObject') });
|
|
293
322
|
return null;
|
|
294
323
|
}
|
|
295
324
|
return parsed;
|
|
@@ -297,7 +326,7 @@ export async function createModelroom(opts = {}) {
|
|
|
297
326
|
catch (err) {
|
|
298
327
|
const detail = err instanceof Error ? err.message : String(err);
|
|
299
328
|
process.stderr.write(`modelroom: invalid JSON body: ${detail}\n`);
|
|
300
|
-
sendJson(res, 400, { error: '
|
|
329
|
+
sendJson(res, 400, { error: tr('server.bodyJson') });
|
|
301
330
|
return null;
|
|
302
331
|
}
|
|
303
332
|
}
|
|
@@ -311,6 +340,10 @@ export async function createModelroom(opts = {}) {
|
|
|
311
340
|
const room = isRoomName(param) && names.includes(param) ? param : (names[0] ?? null);
|
|
312
341
|
if (path === '/health')
|
|
313
342
|
return send(res, 200, 'text/plain; charset=utf-8', 'ok');
|
|
343
|
+
// The UI asks this once before its first paint: which language to speak.
|
|
344
|
+
if (path === '/api/meta') {
|
|
345
|
+
return sendJson(res, 200, { lang: cfg.lang, config: publicConfig(cfg) });
|
|
346
|
+
}
|
|
314
347
|
if (path === '/favicon.ico') {
|
|
315
348
|
res.writeHead(204);
|
|
316
349
|
return res.end();
|
|
@@ -347,7 +380,7 @@ export async function createModelroom(opts = {}) {
|
|
|
347
380
|
}
|
|
348
381
|
if (path === '/api/room') {
|
|
349
382
|
if (!room)
|
|
350
|
-
return sendJson(res, 404, { error: '
|
|
383
|
+
return sendJson(res, 404, { error: tr('server.noRooms') });
|
|
351
384
|
const info = await roomInfo(cfg, room);
|
|
352
385
|
return sendJson(res, 200, {
|
|
353
386
|
room: publicRoom(info),
|
|
@@ -359,10 +392,10 @@ export async function createModelroom(opts = {}) {
|
|
|
359
392
|
if (path === '/api/doc' && req.method === 'GET') {
|
|
360
393
|
const name = url.searchParams.get('name') || '';
|
|
361
394
|
if (!cfg.docs.includes(name)) {
|
|
362
|
-
return sendJson(res, 400, { error:
|
|
395
|
+
return sendJson(res, 400, { error: tr('server.docName', { docs: cfg.docs.join(', ') }) });
|
|
363
396
|
}
|
|
364
397
|
if (!room)
|
|
365
|
-
return sendJson(res, 404, { error: '
|
|
398
|
+
return sendJson(res, 404, { error: tr('server.noRooms') });
|
|
366
399
|
try {
|
|
367
400
|
const p = join(cfg.roomsDir, room, name);
|
|
368
401
|
const { text, mtime } = await readDoc(p);
|
|
@@ -386,9 +419,9 @@ export async function createModelroom(opts = {}) {
|
|
|
386
419
|
const target = isRoomName(body.room) && names.includes(body.room) ? body.room : room;
|
|
387
420
|
const name = typeof body.name === 'string' ? body.name : '';
|
|
388
421
|
if (!target)
|
|
389
|
-
return sendJson(res, 404, { error: '
|
|
422
|
+
return sendJson(res, 404, { error: tr('server.noRooms') });
|
|
390
423
|
if (!cfg.docs.includes(name)) {
|
|
391
|
-
return sendJson(res, 403, { error: '
|
|
424
|
+
return sendJson(res, 403, { error: tr('server.notEditable') });
|
|
392
425
|
}
|
|
393
426
|
const p = join(cfg.roomsDir, target, name);
|
|
394
427
|
// The version this save is based on: a content hash when the client sends
|
|
@@ -411,7 +444,7 @@ export async function createModelroom(opts = {}) {
|
|
|
411
444
|
return {
|
|
412
445
|
status: 409,
|
|
413
446
|
body: {
|
|
414
|
-
error: '
|
|
447
|
+
error: tr('server.changedElsewhere'),
|
|
415
448
|
text: current,
|
|
416
449
|
mtime: s.mtimeMs,
|
|
417
450
|
hash: currentHash,
|
|
@@ -442,14 +475,14 @@ export async function createModelroom(opts = {}) {
|
|
|
442
475
|
return sendJson(res, outcome.status, outcome.body);
|
|
443
476
|
}
|
|
444
477
|
if (path === '/api/doc')
|
|
445
|
-
return sendJson(res, 405, { error: '
|
|
478
|
+
return sendJson(res, 405, { error: tr('server.methodDoc') });
|
|
446
479
|
if (path === '/api/chat' && req.method === 'POST') {
|
|
447
480
|
const body = await jsonBody(req, res);
|
|
448
481
|
if (!body)
|
|
449
482
|
return;
|
|
450
483
|
const target = isRoomName(body.room) && names.includes(body.room) ? body.room : room;
|
|
451
484
|
if (!target)
|
|
452
|
-
return sendJson(res, 404, { error: '
|
|
485
|
+
return sendJson(res, 404, { error: tr('server.noRooms') });
|
|
453
486
|
const r = runChat(target, typeof body.prompt === 'string' ? body.prompt : '');
|
|
454
487
|
return sendJson(res, r.started ? 202 : 409, { room: target, ...r });
|
|
455
488
|
}
|
|
@@ -459,9 +492,9 @@ export async function createModelroom(opts = {}) {
|
|
|
459
492
|
return; // malformed JSON: jsonBody already answered 400
|
|
460
493
|
const target = isRoomName(body.room) && names.includes(body.room) ? body.room : room;
|
|
461
494
|
if (!target)
|
|
462
|
-
return sendJson(res, 404, { error: '
|
|
495
|
+
return sendJson(res, 404, { error: tr('server.noRooms') });
|
|
463
496
|
if (chats.has(target))
|
|
464
|
-
return sendJson(res, 409, { error: '
|
|
497
|
+
return sendJson(res, 409, { error: tr('server.roomRunning') });
|
|
465
498
|
const adapter = getAdapter(cfg.agent.adapter);
|
|
466
499
|
const id = adapter.newSessionId();
|
|
467
500
|
state.sessions[target] = id;
|
|
@@ -472,7 +505,7 @@ export async function createModelroom(opts = {}) {
|
|
|
472
505
|
// opencode-only, and best-effort — a failure just means `available: false`.
|
|
473
506
|
if (path === '/api/session' && req.method === 'GET') {
|
|
474
507
|
if (!room)
|
|
475
|
-
return sendJson(res, 404, { error: '
|
|
508
|
+
return sendJson(res, 404, { error: tr('server.noRooms') });
|
|
476
509
|
if (cfg.agent.adapter !== 'opencode') {
|
|
477
510
|
return sendJson(res, 200, { available: false, room, session: null });
|
|
478
511
|
}
|
|
@@ -497,7 +530,7 @@ export async function createModelroom(opts = {}) {
|
|
|
497
530
|
return; // malformed JSON: jsonBody already answered 400
|
|
498
531
|
const target = isRoomName(body.room) && names.includes(body.room) ? body.room : room;
|
|
499
532
|
if (!target)
|
|
500
|
-
return sendJson(res, 404, { error: '
|
|
533
|
+
return sendJson(res, 404, { error: tr('server.noRooms') });
|
|
501
534
|
const device = typeof body.device === 'string' ? body.device : 'tablet';
|
|
502
535
|
const result = await render(target, device);
|
|
503
536
|
return sendJson(res, result.ok ? 200 : 501, result);
|
|
@@ -506,11 +539,18 @@ export async function createModelroom(opts = {}) {
|
|
|
506
539
|
return await serveFile(res, path);
|
|
507
540
|
if (path.startsWith('/ui/'))
|
|
508
541
|
return await serveUiAsset(res, path);
|
|
542
|
+
// The room address is `/rooms/<name>` — plural, like `/api/rooms` and the
|
|
543
|
+
// `rooms/` directory it reads. `/room/<name>` was the old one; it still
|
|
544
|
+
// lands on the room rather than a 404.
|
|
545
|
+
if (path.startsWith('/room/')) {
|
|
546
|
+
res.writeHead(302, { location: `/rooms/${path.slice('/room/'.length)}${url.search}` });
|
|
547
|
+
return res.end();
|
|
548
|
+
}
|
|
509
549
|
const page = path === '/'
|
|
510
550
|
? 'dashboard.html'
|
|
511
551
|
: path === '/settings'
|
|
512
552
|
? 'settings.html'
|
|
513
|
-
: path.startsWith('/
|
|
553
|
+
: path.startsWith('/rooms/')
|
|
514
554
|
? 'room.html'
|
|
515
555
|
: null;
|
|
516
556
|
if (page)
|
|
@@ -534,7 +574,7 @@ export async function createModelroom(opts = {}) {
|
|
|
534
574
|
process.stderr.write(`modelroom: ${detail}\n`);
|
|
535
575
|
}
|
|
536
576
|
try {
|
|
537
|
-
send(res, code, 'text/plain; charset=utf-8', code === 400 ? '
|
|
577
|
+
send(res, code, 'text/plain; charset=utf-8', code === 400 ? tr('server.badRequest') : tr('server.internal'));
|
|
538
578
|
}
|
|
539
579
|
catch {
|
|
540
580
|
/* nothing we can do */
|
|
@@ -565,6 +605,8 @@ export async function createModelroom(opts = {}) {
|
|
|
565
605
|
clearInterval(heartbeat);
|
|
566
606
|
for (const w of watchers)
|
|
567
607
|
w.close();
|
|
608
|
+
for (const chat of chats.values())
|
|
609
|
+
void chat?.stop();
|
|
568
610
|
server.close(() => r());
|
|
569
611
|
}),
|
|
570
612
|
};
|
|
@@ -575,6 +617,7 @@ export function publicConfig(cfg) {
|
|
|
575
617
|
rooms: cfg.rooms,
|
|
576
618
|
artifact: cfg.artifact,
|
|
577
619
|
docs: cfg.docs,
|
|
620
|
+
lang: cfg.lang,
|
|
578
621
|
agent: {
|
|
579
622
|
adapter: cfg.agent.adapter,
|
|
580
623
|
command: cfg.agent.command,
|
package/dist/lib/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../lib/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../lib/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Lang } from './lang.ts';
|
|
2
|
+
export declare const ROOM_FILES: readonly ['BRIEF.md', 'SPEC.md', 'BEHAVIOUR.md', 'index.html'];
|
|
3
|
+
/** The file for a language, falling back to English. */
|
|
4
|
+
export declare function readTemplate(templatesDir: string, lang: Lang, relativePath: string): Promise<string>;
|
|
5
|
+
/** Every language the package actually ships, in a stable order. */
|
|
6
|
+
export declare function shippedLangs(): readonly Lang[];
|
|
7
|
+
//# sourceMappingURL=templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../lib/templates.ts"],"names":[],"mappings":"AAQA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAE7C,eAAO,MAAM,UAAU,YAAI,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC;AAEzF,wDAAwD;AACxD,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,oEAAoE;AACpE,wBAAgB,YAAY,IAAI,SAAS,IAAI,EAAE,CAE9C"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// modelroom — the templates `init` copies.
|
|
2
|
+
//
|
|
3
|
+
// Each language is a directory under `templates/`, so a language is data, not a
|
|
4
|
+
// branch in the code. English is the fallback: a missing file never makes `init`
|
|
5
|
+
// fail, it just lands in the language we know we have.
|
|
6
|
+
import { readFile } from 'node:fs/promises';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { LANGS } from './lang.js';
|
|
9
|
+
export const ROOM_FILES = ['BRIEF.md', 'SPEC.md', 'BEHAVIOUR.md', 'index.html'];
|
|
10
|
+
/** The file for a language, falling back to English. */
|
|
11
|
+
export async function readTemplate(templatesDir, lang, relativePath) {
|
|
12
|
+
const candidates = [join(templatesDir, lang, relativePath)];
|
|
13
|
+
if (lang !== 'en')
|
|
14
|
+
candidates.push(join(templatesDir, 'en', relativePath));
|
|
15
|
+
let lastError = null;
|
|
16
|
+
for (const path of candidates) {
|
|
17
|
+
try {
|
|
18
|
+
return await readFile(path, 'utf8');
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
lastError = error;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
throw lastError instanceof Error ? lastError : new Error(`template not found: ${relativePath}`);
|
|
25
|
+
}
|
|
26
|
+
/** Every language the package actually ships, in a stable order. */
|
|
27
|
+
export function shippedLangs() {
|
|
28
|
+
return LANGS;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../lib/templates.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,uDAAuD;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAa,MAAM,WAAW,CAAC;AAE7C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,CAAU,CAAC;AAEzF,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,YAAoB,EACpB,IAAU,EACV,YAAoB;IAEpB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,IAAI;QAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3E,IAAI,SAAS,GAAY,IAAI,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,YAAY;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/docs/02-convention.md
CHANGED
|
@@ -6,13 +6,18 @@ audience. That is the whole idea; the rest follows.
|
|
|
6
6
|
## Files
|
|
7
7
|
|
|
8
8
|
```
|
|
9
|
-
|
|
10
|
-
├──
|
|
11
|
-
├──
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
modelroom/
|
|
10
|
+
├── AGENTS.md
|
|
11
|
+
├── modelroom.json
|
|
12
|
+
└── rooms/<room>/
|
|
13
|
+
├── BRIEF.md why this room exists → director, everyone
|
|
14
|
+
├── SPEC.md what the artifact cannot show → designer, agent, implementer
|
|
15
|
+
├── BEHAVIOUR.md what it promises → tests, implementer
|
|
16
|
+
└── index.html the artifact (the screen) → director, owner, implementer
|
|
14
17
|
```
|
|
15
18
|
|
|
19
|
+
Local state lives in `.modelroom/` next to `modelroom/`, and is never committed.
|
|
20
|
+
|
|
16
21
|
The artifact is the visible spec. `SPEC.md` is the invisible one. They must not overlap.
|
|
17
22
|
|
|
18
23
|
## Rules
|
package/docs/03-cli.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# CLI
|
|
2
2
|
|
|
3
3
|
```
|
|
4
|
-
modelroom [serve] [--port 4321] [--host 127.0.0.1] [--open]
|
|
5
|
-
modelroom init [<room>] [--dir rooms] [--force]
|
|
4
|
+
modelroom [serve] [--port 4321] [--host 127.0.0.1] [--open] [--lang en|ja]
|
|
5
|
+
modelroom init [<room>] [--dir rooms] [--lang en|ja] [--force]
|
|
6
6
|
modelroom check [--json] [--strict]
|
|
7
7
|
modelroom doctor
|
|
8
8
|
modelroom --version | --help
|
|
@@ -18,7 +18,7 @@ do not count).
|
|
|
18
18
|
Starts the workspace on `127.0.0.1:4321` by default. `modelroom` alone does the same.
|
|
19
19
|
|
|
20
20
|
- `/` — every room, side by side
|
|
21
|
-
- `/
|
|
21
|
+
- `/rooms/<name>` — chat, the room's docs, the artifact
|
|
22
22
|
- `/settings` — which agent to run
|
|
23
23
|
- `/files/<path>` — your repository, served read-only and **unmodified** (no injection)
|
|
24
24
|
|
|
@@ -26,15 +26,50 @@ Starts the workspace on `127.0.0.1:4321` by default. `modelroom` alone does the
|
|
|
26
26
|
|
|
27
27
|
## init
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
`.modelroom/` line in `.gitignore`.
|
|
29
|
+
Creates the design layer in `modelroom/` and keeps local state outside it:
|
|
31
30
|
|
|
32
31
|
```
|
|
33
|
-
|
|
34
|
-
modelroom
|
|
32
|
+
your-repo/
|
|
33
|
+
├── modelroom/ # committed
|
|
34
|
+
│ ├── modelroom.json
|
|
35
|
+
│ ├── AGENTS.md
|
|
36
|
+
│ └── rooms/<room>/{BRIEF,SPEC,BEHAVIOUR}.md + index.html
|
|
37
|
+
└── .modelroom/ # git-ignored state
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`init` writes the room templates and, if missing, `modelroom/modelroom.json`,
|
|
41
|
+
`modelroom/AGENTS.md` and a `/.modelroom/` line in the project's `.gitignore`.
|
|
42
|
+
An existing project keeps its config; running `init` again only adds what is
|
|
43
|
+
missing (`--force` overwrites).
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
modelroom init checkout # modelroom/rooms/checkout/
|
|
47
|
+
modelroom init checkout --dir screens
|
|
48
|
+
modelroom init checkout --lang ja # pin Japanese for the templates and the UI
|
|
35
49
|
modelroom init checkout --force # overwrite existing files
|
|
36
50
|
```
|
|
37
51
|
|
|
52
|
+
### Language
|
|
53
|
+
|
|
54
|
+
Language is automatic by default. It is resolved in this order:
|
|
55
|
+
|
|
56
|
+
1. `--lang en|ja` (only when you want to pin it)
|
|
57
|
+
2. `lang` in `modelroom/modelroom.json`, when it is present
|
|
58
|
+
3. `MODELROOM_LANG`
|
|
59
|
+
4. `LC_ALL` / `LC_MESSAGES` / `LANG`
|
|
60
|
+
5. the OS locale
|
|
61
|
+
6. English
|
|
62
|
+
|
|
63
|
+
`init` never asks. It uses the detected language for the generated templates and writes
|
|
64
|
+
`lang` only when you passed `--lang`; without it the config has no `lang` and every run
|
|
65
|
+
keeps detecting. `--lang` on `init` (or a later one) pins the language for the CLI, the
|
|
66
|
+
web UI and new rooms.
|
|
67
|
+
|
|
68
|
+
Existing room documents are never rewritten; `--lang` affects new rooms only. To translate
|
|
69
|
+
a project that already has rooms, pin the language and ask the agent to translate the
|
|
70
|
+
existing `BRIEF.md` / `SPEC.md` / `BEHAVIOUR.md` files — the frontmatter keys and promise
|
|
71
|
+
ids stay as they are.
|
|
72
|
+
|
|
38
73
|
## check
|
|
39
74
|
|
|
40
75
|
```
|
|
@@ -59,22 +94,27 @@ Exit code is 1 on errors (or on warnings with `--strict`).
|
|
|
59
94
|
|
|
60
95
|
```
|
|
61
96
|
modelroom doctor
|
|
62
|
-
ok node 22.14.0 (needs >=
|
|
63
|
-
ok root exists: /path/to/repo
|
|
64
|
-
ok rooms dir exists: rooms
|
|
97
|
+
ok node 22.14.0 (needs >= 22.18)
|
|
98
|
+
ok root exists: /path/to/repo/modelroom
|
|
99
|
+
ok rooms dir exists: modelroom/rooms
|
|
65
100
|
ok rooms found: checkout, sign-in
|
|
66
|
-
ok config: modelroom.json
|
|
101
|
+
ok config: modelroom/modelroom.json
|
|
102
|
+
ok state: .modelroom
|
|
103
|
+
ok language: ja
|
|
104
|
+
ok agent instructions: modelroom/AGENTS.md
|
|
67
105
|
ok agent command on PATH: opencode
|
|
68
106
|
ok png rendering (playwright): not installed (optional)
|
|
69
107
|
ok room checkout: docs ok
|
|
70
108
|
```
|
|
71
109
|
|
|
72
|
-
## Config: `modelroom.json`
|
|
110
|
+
## Config: `modelroom/modelroom.json`
|
|
73
111
|
|
|
74
112
|
```jsonc
|
|
75
113
|
{
|
|
76
|
-
"root": ".", //
|
|
114
|
+
"root": ".", // the design layer, relative to this file
|
|
77
115
|
"rooms": "rooms", // rooms live here
|
|
116
|
+
"state": "../.modelroom", // local state, relative to this file
|
|
117
|
+
"lang": "ja", // optional; omitted = auto. "en" | "ja"
|
|
78
118
|
"artifact": "index.html", // the file that is the screen
|
|
79
119
|
"docs": ["BRIEF.md", "SPEC.md", "BEHAVIOUR.md"], // the only files the UI may write
|
|
80
120
|
"port": 4321,
|
|
@@ -89,8 +129,13 @@ ok room checkout: docs ok
|
|
|
89
129
|
}
|
|
90
130
|
```
|
|
91
131
|
|
|
132
|
+
`root` is what `/files/...` and the agent's working directory see. With a new
|
|
133
|
+
install that is `modelroom/`, so the design layer cannot read the application
|
|
134
|
+
code. `modelroom` looks for `./modelroom.json` first (the old layout) and then
|
|
135
|
+
`./modelroom/modelroom.json`; existing projects do not move.
|
|
136
|
+
|
|
92
137
|
Anything you change from `/settings` is kept locally in `.modelroom/state.json`
|
|
93
|
-
(git-ignore it) — committed configuration stays in `modelroom.json`.
|
|
138
|
+
(git-ignore it) — committed configuration stays in `modelroom/modelroom.json`.
|
|
94
139
|
|
|
95
140
|
## Thumbnails
|
|
96
141
|
|