ftown 0.26.0 → 0.28.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.
Files changed (83) hide show
  1. package/dist/attention-cli.d.ts +32 -0
  2. package/dist/attention-cli.js +310 -0
  3. package/dist/attention-cli.js.map +1 -0
  4. package/dist/attention-events.d.ts +2 -1
  5. package/dist/attention-events.js.map +1 -1
  6. package/dist/attention-store.d.ts +6 -3
  7. package/dist/attention-store.js +60 -2
  8. package/dist/attention-store.js.map +1 -1
  9. package/dist/brief-cli.d.ts +10 -0
  10. package/dist/brief-cli.js +163 -0
  11. package/dist/brief-cli.js.map +1 -0
  12. package/dist/command-rpc.d.ts +11 -0
  13. package/dist/command-rpc.js +83 -16
  14. package/dist/command-rpc.js.map +1 -1
  15. package/dist/coordination/attention-routing.d.ts +37 -0
  16. package/dist/coordination/attention-routing.js +154 -0
  17. package/dist/coordination/attention-routing.js.map +1 -0
  18. package/dist/coordination/board.js +82 -3
  19. package/dist/coordination/board.js.map +1 -1
  20. package/dist/coordination/contract-b.d.ts +206 -0
  21. package/dist/coordination/contract-b.js +58 -0
  22. package/dist/coordination/contract-b.js.map +1 -0
  23. package/dist/coordination/contract-c.d.ts +117 -0
  24. package/dist/coordination/contract-c.js +47 -0
  25. package/dist/coordination/contract-c.js.map +1 -0
  26. package/dist/coordination/contract.d.ts +8 -1
  27. package/dist/coordination/contract.js +1 -1
  28. package/dist/coordination/contract.js.map +1 -1
  29. package/dist/coordination/format.js +51 -12
  30. package/dist/coordination/format.js.map +1 -1
  31. package/dist/coordination/plan.d.ts +74 -0
  32. package/dist/coordination/plan.js +534 -0
  33. package/dist/coordination/plan.js.map +1 -0
  34. package/dist/coordination/routes-brief.d.ts +10 -0
  35. package/dist/coordination/routes-brief.js +149 -0
  36. package/dist/coordination/routes-brief.js.map +1 -0
  37. package/dist/coordination/routes-plan.d.ts +13 -0
  38. package/dist/coordination/routes-plan.js +182 -0
  39. package/dist/coordination/routes-plan.js.map +1 -0
  40. package/dist/coordination/routes-worktrees.d.ts +29 -0
  41. package/dist/coordination/routes-worktrees.js +138 -0
  42. package/dist/coordination/routes-worktrees.js.map +1 -0
  43. package/dist/coordination/wiring.d.ts +17 -2
  44. package/dist/coordination/wiring.js +81 -11
  45. package/dist/coordination/wiring.js.map +1 -1
  46. package/dist/coordination-cli.d.ts +6 -1
  47. package/dist/coordination-cli.js +23 -7
  48. package/dist/coordination-cli.js.map +1 -1
  49. package/dist/create-ftown-session.d.ts +26 -1
  50. package/dist/create-ftown-session.js +208 -104
  51. package/dist/create-ftown-session.js.map +1 -1
  52. package/dist/ftown-cli.js +14 -2
  53. package/dist/ftown-cli.js.map +1 -1
  54. package/dist/index.js +29 -0
  55. package/dist/index.js.map +1 -1
  56. package/dist/local-api-server.d.ts +24 -0
  57. package/dist/local-api-server.js +473 -32
  58. package/dist/local-api-server.js.map +1 -1
  59. package/dist/mail-delivery.d.ts +18 -4
  60. package/dist/mail-delivery.js +50 -8
  61. package/dist/mail-delivery.js.map +1 -1
  62. package/dist/plan-cli.d.ts +52 -0
  63. package/dist/plan-cli.js +357 -0
  64. package/dist/plan-cli.js.map +1 -0
  65. package/dist/security/bridge/permissions.js +55 -5
  66. package/dist/security/bridge/permissions.js.map +1 -1
  67. package/dist/session-controller.d.ts +17 -1
  68. package/dist/session-controller.js +93 -2
  69. package/dist/session-controller.js.map +1 -1
  70. package/dist/sessions-commands.js +75 -5
  71. package/dist/sessions-commands.js.map +1 -1
  72. package/dist/types.d.ts +9 -1
  73. package/dist/worktrees-cli.d.ts +39 -0
  74. package/dist/worktrees-cli.js +168 -0
  75. package/dist/worktrees-cli.js.map +1 -0
  76. package/dist/worktrees.d.ts +16 -0
  77. package/dist/worktrees.js +292 -0
  78. package/dist/worktrees.js.map +1 -0
  79. package/hooks/ftown-antigravity-hook.sh +12 -6
  80. package/package.json +2 -2
  81. package/skills/ftown/SKILL.md +88 -5
  82. package/skills/ftown/references/orchestrator.md +32 -29
  83. package/skills/ftown/references/sessions.md +155 -12
@@ -8,6 +8,20 @@ import { HARNESSES, harnessAcceptsPromptAsCliArg } from './harness-registry.js';
8
8
  import { staggerSpawn } from './spawn-stagger.js';
9
9
  import { PROVIDER_AUTH_ENV, PROVIDER_RUNTIME_ENV, loadProviderEnv } from './provider-env-store.js';
10
10
  import { registerSessionWorkspace } from './session-registry.js';
11
+ import { GitWorktrees } from './worktrees.js';
12
+ import { WorktreeError } from './coordination/contract-b.js';
13
+ export { WorktreeError };
14
+ /**
15
+ * Raised when `--plan-item` cannot be honoured BEFORE a session record is
16
+ * created: unknown or already-started plan item, missing plan tracking, or a
17
+ * missing parent. The local API server maps this to 400.
18
+ */
19
+ export class PlanItemError extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'PlanItemError';
23
+ }
24
+ }
11
25
  export async function resolveParentSessionId(store, parentSessionId) {
12
26
  if (!parentSessionId)
13
27
  return undefined;
@@ -264,11 +278,32 @@ async function createFtownSessionImpl(deps, input) {
264
278
  const prompt = input.prompt?.trim() ?? '';
265
279
  let parentSessionId;
266
280
  let parentName;
281
+ let parentWorkingDir;
267
282
  if (input.parentSessionId) {
268
283
  parentSessionId = await resolveParentSessionId(deps.store, input.parentSessionId);
269
284
  if (parentSessionId) {
270
285
  const parentSession = await deps.store.loadSession(parentSessionId);
271
286
  parentName = parentSession?.name ?? parentSessionId.slice(0, 8);
287
+ parentWorkingDir = parentSession?.workingDir;
288
+ }
289
+ }
290
+ // `--plan-item` binds the new child to a todo item on the parent's plan.
291
+ // Validation happens BEFORE any session record is created; failures are 400s.
292
+ const planItem = input.planItem;
293
+ if (planItem !== undefined) {
294
+ if (!parentSessionId) {
295
+ throw new PlanItemError('--plan-item requires a parent session');
296
+ }
297
+ if (!deps.planStore) {
298
+ throw new PlanItemError('Plan tracking is not available');
299
+ }
300
+ const plan = await deps.planStore.get(parentSessionId);
301
+ const item = plan?.items.find((candidate) => candidate.id === planItem);
302
+ if (!item) {
303
+ throw new PlanItemError(`Plan item ${planItem} does not exist on parent ${parentSessionId}`);
304
+ }
305
+ if (item.state !== 'todo') {
306
+ throw new PlanItemError(`Plan item ${planItem} is ${item.state}, not todo`);
272
307
  }
273
308
  }
274
309
  const isAgent = input.shellType !== 'shell';
@@ -295,124 +330,189 @@ async function createFtownSessionImpl(deps, input) {
295
330
  ...providerAuth,
296
331
  }
297
332
  : undefined;
298
- const workingDir = prepareWorkingDir(input.workingDir, input.createMissingWorkingDir);
299
- const effectiveInput = { ...input, workingDir };
300
- // Base command (no prompt arg) — persisted on the session and used for the
301
- // default name; the prompt-bearing launch command must not be replayed on revive.
302
- const command = buildSessionCommand(effectiveInput);
333
+ let workingDir = prepareWorkingDir(input.workingDir, input.createMissingWorkingDir);
334
+ const initialCommand = buildSessionCommand({ ...input, workingDir });
303
335
  const explicitName = input.name?.trim();
304
336
  const shouldSuffixGeneratedName = !explicitName && Boolean(workingDir);
305
- const generatedBaseName = (workingDir ? basename(workingDir) : '') || (prompt || command).slice(0, 80);
337
+ const generatedBaseName = (workingDir ? basename(workingDir) : '') || (prompt || initialCommand).slice(0, 80);
306
338
  const sessionName = explicitName
307
339
  ?? (shouldSuffixGeneratedName
308
340
  ? nextAvailableGeneratedName(generatedBaseName, (await deps.store.listSessions()).map((session) => session.name))
309
341
  : generatedBaseName);
310
- const sessionId = uuidv4();
311
- const session = {
312
- id: sessionId,
313
- name: sessionName,
314
- command,
315
- prompt: prompt || undefined,
316
- status: 'running',
317
- bridgeId: deps.bridgeId,
318
- createdAt: new Date().toISOString(),
319
- updatedAt: new Date().toISOString(),
320
- workingDir,
321
- shellType: input.shellType,
322
- model: input.model,
323
- claudeSessionId: input.claudeSessionId,
324
- cursorSessionId: input.cursorSessionId,
325
- codexSessionId: input.codexSessionId,
326
- piSessionId: input.piSessionId,
327
- piSessionFile: input.piSessionFile,
328
- opencodeSessionId: input.opencodeSessionId,
329
- museSessionId: input.museSessionId,
330
- grokSessionId: input.grokSessionId,
331
- antigravitySessionId: input.antigravitySessionId,
332
- env: sessionEnv,
333
- parentSessionId,
334
- runtime: deps.runner.getPreferredRuntime(),
335
- };
336
- await deps.store.saveSession(session);
342
+ let worktree;
343
+ let worktrees;
344
+ if (input.worktree) {
345
+ const wtOpts = typeof input.worktree === 'object' ? input.worktree : {};
346
+ const fromDir = workingDir ?? parentWorkingDir ?? process.cwd();
347
+ worktrees = deps.worktrees ?? new GitWorktrees();
348
+ worktree = await worktrees.create({
349
+ fromDir,
350
+ name: sessionName,
351
+ ...(wtOpts.branch !== undefined ? { branch: wtOpts.branch } : {}),
352
+ ...(wtOpts.base !== undefined ? { base: wtOpts.base } : {}),
353
+ });
354
+ workingDir = worktree.path;
355
+ }
337
356
  try {
338
- await deps.centrifugo.publishSessionUpdate(deps.userId, session);
357
+ const effectiveInput = { ...input, workingDir };
358
+ // Base command (no prompt arg) — persisted on the session and used for the
359
+ // default name; the prompt-bearing launch command must not be replayed on revive.
360
+ const command = buildSessionCommand(effectiveInput);
361
+ const sessionId = uuidv4();
362
+ const session = {
363
+ id: sessionId,
364
+ name: sessionName,
365
+ command,
366
+ prompt: prompt || undefined,
367
+ status: 'running',
368
+ bridgeId: deps.bridgeId,
369
+ createdAt: new Date().toISOString(),
370
+ updatedAt: new Date().toISOString(),
371
+ workingDir,
372
+ shellType: input.shellType,
373
+ model: input.model,
374
+ claudeSessionId: input.claudeSessionId,
375
+ cursorSessionId: input.cursorSessionId,
376
+ codexSessionId: input.codexSessionId,
377
+ piSessionId: input.piSessionId,
378
+ piSessionFile: input.piSessionFile,
379
+ opencodeSessionId: input.opencodeSessionId,
380
+ museSessionId: input.museSessionId,
381
+ grokSessionId: input.grokSessionId,
382
+ antigravitySessionId: input.antigravitySessionId,
383
+ env: sessionEnv,
384
+ parentSessionId,
385
+ runtime: deps.runner.getPreferredRuntime(),
386
+ ...(worktree ? { worktree } : {}),
387
+ };
388
+ await deps.store.saveSession(session);
389
+ try {
390
+ await deps.centrifugo.publishSessionUpdate(deps.userId, session);
391
+ }
392
+ catch (err) {
393
+ // UI sync failure must not fail session creation — resurrection treats
394
+ // publish errors the same way.
395
+ console.error(`[Bridge] Failed to publish session create for ${sessionId}:`, err);
396
+ }
397
+ registerSessionWorkspace(sessionId, workingDir);
398
+ // Agent sessions (anything but a plain 'shell') spawned by a parent get a
399
+ // one-paragraph briefing prepended to their first input so they know their
400
+ // place in the session tree and how to talk to parent/siblings.
401
+ const childBriefing = !input.suppressBriefing && parentSessionId && parentName && isAgent
402
+ ? buildChildBriefing({
403
+ childName: session.name,
404
+ childId: sessionId,
405
+ parentName,
406
+ parentId: parentSessionId,
407
+ })
408
+ : undefined;
409
+ const briefing = childBriefing;
410
+ // Composer TUIs need the submit CR sent separately after the paste settles —
411
+ // a CR inside the pasted chunk becomes a newline, and ESC+CR reads as
412
+ // Alt+Enter (newline) on current Claude Code, so plain CR it is.
413
+ const promptSubmitSuffix = '\r';
414
+ let initialInput;
415
+ let initialInputDelay;
416
+ let submitSuffix;
417
+ if (briefing) {
418
+ initialInput = prompt ? `${briefing}\n\nTask: ${prompt}` : briefing;
419
+ initialInputDelay = input.initialInputDelay ?? 2000;
420
+ submitSuffix = promptSubmitSuffix;
421
+ }
422
+ else if (input.initialInput !== undefined) {
423
+ // Raw passthrough: callers own the submit keystrokes; suppress the default CR.
424
+ initialInput = input.initialInput;
425
+ initialInputDelay = input.initialInputDelay;
426
+ submitSuffix = '';
427
+ }
428
+ else {
429
+ initialInput = prompt || undefined;
430
+ initialInputDelay = input.initialInputDelay ?? (prompt ? 2000 : undefined);
431
+ submitSuffix = promptSubmitSuffix;
432
+ }
433
+ // Some harnesses accept the initial prompt as a CLI argument — far more
434
+ // reliable than racing the composer TUI with delayed keystrokes. The registry
435
+ // says which (and which resume field suppresses it); typed injection remains
436
+ // for custom commands, resumes, and raw passthrough.
437
+ const shellTypeForPrompt = effectiveInput.shellType ?? 'claude';
438
+ const promptAsCliArg = initialInput !== undefined &&
439
+ effectiveInput.initialInput === undefined &&
440
+ !effectiveInput.command?.trim() &&
441
+ harnessAcceptsPromptAsCliArg(shellTypeForPrompt, effectiveInput);
442
+ const launchCommand = promptAsCliArg
443
+ ? buildSessionCommand({ ...effectiveInput, initialPrompt: initialInput })
444
+ : command;
445
+ if (promptAsCliArg) {
446
+ initialInput = undefined;
447
+ initialInputDelay = undefined;
448
+ submitSuffix = undefined;
449
+ }
450
+ if (effectiveInput.shellType === 'codex') {
451
+ // Codex blocks on an interactive "Do you trust this directory?" prompt
452
+ // unless the resolved workdir is trusted in ~/.codex/config.toml.
453
+ ensureCodexWorkdirTrust(workingDir ?? process.cwd());
454
+ }
455
+ await staggerHarnessSpawn(effectiveInput.shellType);
456
+ deps.runner.run(sessionId, launchCommand, {
457
+ workingDir,
458
+ env: sessionEnv,
459
+ initialInput,
460
+ initialInputDelay,
461
+ submitSuffix,
462
+ hookPort: deps.hookPort,
463
+ hookToken: deps.hookToken,
464
+ parentSessionId,
465
+ });
466
+ deps.wireTerminalInput(sessionId);
467
+ // Bind the plan item after the child exists and is launched. A failure here
468
+ // must not roll back the session — the manager still sees it and can start
469
+ // the item manually.
470
+ if (planItem !== undefined && parentSessionId && deps.planStore) {
471
+ try {
472
+ await deps.planStore.startForChild(parentSessionId, planItem, sessionId);
473
+ }
474
+ catch (err) {
475
+ console.warn(`[Bridge] Failed to start plan item ${planItem} for child ${sessionId}:`, err instanceof Error ? err.message : String(err));
476
+ }
477
+ }
478
+ return session;
339
479
  }
340
480
  catch (err) {
341
- // UI sync failure must not fail session creation — resurrection treats
342
- // publish errors the same way.
343
- console.error(`[Bridge] Failed to publish session create for ${sessionId}:`, err);
344
- }
345
- registerSessionWorkspace(sessionId, workingDir);
346
- // Agent sessions (anything but a plain 'shell') spawned by a parent get a
347
- // one-paragraph briefing prepended to their first input so they know their
348
- // place in the session tree and how to talk to parent/siblings.
349
- const childBriefing = !input.suppressBriefing && parentSessionId && parentName && isAgent
350
- ? buildChildBriefing({
351
- childName: session.name,
352
- childId: sessionId,
353
- parentName,
354
- parentId: parentSessionId,
355
- })
356
- : undefined;
357
- const briefing = childBriefing;
358
- // Composer TUIs need the submit CR sent separately after the paste settles —
359
- // a CR inside the pasted chunk becomes a newline, and ESC+CR reads as
360
- // Alt+Enter (newline) on current Claude Code, so plain CR it is.
361
- const promptSubmitSuffix = '\r';
362
- let initialInput;
363
- let initialInputDelay;
364
- let submitSuffix;
365
- if (briefing) {
366
- initialInput = prompt ? `${briefing}\n\nTask: ${prompt}` : briefing;
367
- initialInputDelay = input.initialInputDelay ?? 2000;
368
- submitSuffix = promptSubmitSuffix;
481
+ if (worktree && worktrees) {
482
+ try {
483
+ await worktrees.remove(worktree, { force: false, deleteBranch: true });
484
+ }
485
+ catch (cleanupErr) {
486
+ console.warn(`[Bridge] Failed to clean up worktree at ${worktree.path}:`, cleanupErr);
487
+ }
488
+ }
489
+ throw err;
369
490
  }
370
- else if (input.initialInput !== undefined) {
371
- // Raw passthrough: callers own the submit keystrokes; suppress the default CR.
372
- initialInput = input.initialInput;
373
- initialInputDelay = input.initialInputDelay;
374
- submitSuffix = '';
491
+ }
492
+ function parseWorktreeInput(raw) {
493
+ if (raw === undefined)
494
+ return undefined;
495
+ if (raw === true)
496
+ return true;
497
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
498
+ throw new WorktreeError('bad_branch', 'Invalid worktree option: expected true or { branch?: string; base?: string }');
375
499
  }
376
- else {
377
- initialInput = prompt || undefined;
378
- initialInputDelay = input.initialInputDelay ?? (prompt ? 2000 : undefined);
379
- submitSuffix = promptSubmitSuffix;
500
+ const obj = raw;
501
+ for (const key of Object.keys(obj)) {
502
+ if (key !== 'branch' && key !== 'base') {
503
+ throw new WorktreeError('bad_branch', `Invalid worktree option: unknown key '${key}'`);
504
+ }
380
505
  }
381
- // Some harnesses accept the initial prompt as a CLI argument — far more
382
- // reliable than racing the composer TUI with delayed keystrokes. The registry
383
- // says which (and which resume field suppresses it); typed injection remains
384
- // for custom commands, resumes, and raw passthrough.
385
- const shellTypeForPrompt = effectiveInput.shellType ?? 'claude';
386
- const promptAsCliArg = initialInput !== undefined &&
387
- effectiveInput.initialInput === undefined &&
388
- !effectiveInput.command?.trim() &&
389
- harnessAcceptsPromptAsCliArg(shellTypeForPrompt, effectiveInput);
390
- const launchCommand = promptAsCliArg
391
- ? buildSessionCommand({ ...effectiveInput, initialPrompt: initialInput })
392
- : command;
393
- if (promptAsCliArg) {
394
- initialInput = undefined;
395
- initialInputDelay = undefined;
396
- submitSuffix = undefined;
506
+ if (obj.branch !== undefined && typeof obj.branch !== 'string') {
507
+ throw new WorktreeError('bad_branch', 'Invalid worktree option: branch must be a string');
397
508
  }
398
- if (effectiveInput.shellType === 'codex') {
399
- // Codex blocks on an interactive "Do you trust this directory?" prompt
400
- // unless the resolved workdir is trusted in ~/.codex/config.toml.
401
- ensureCodexWorkdirTrust(workingDir ?? process.cwd());
509
+ if (obj.base !== undefined && typeof obj.base !== 'string') {
510
+ throw new WorktreeError('bad_branch', 'Invalid worktree option: base must be a string');
402
511
  }
403
- await staggerHarnessSpawn(effectiveInput.shellType);
404
- deps.runner.run(sessionId, launchCommand, {
405
- workingDir,
406
- env: sessionEnv,
407
- initialInput,
408
- initialInputDelay,
409
- submitSuffix,
410
- hookPort: deps.hookPort,
411
- hookToken: deps.hookToken,
412
- parentSessionId,
413
- });
414
- deps.wireTerminalInput(sessionId);
415
- return session;
512
+ return {
513
+ ...(obj.branch !== undefined ? { branch: obj.branch } : {}),
514
+ ...(obj.base !== undefined ? { base: obj.base } : {}),
515
+ };
416
516
  }
417
517
  /** Map a Local API JSON body into create input. */
418
518
  export function parseCreateSessionBody(body, callerSessionId) {
@@ -444,6 +544,10 @@ export function parseCreateSessionBody(body, callerSessionId) {
444
544
  initialInputDelay: typeof body.initialInputDelay === 'number' ? body.initialInputDelay : undefined,
445
545
  suppressBriefing: body.suppressBriefing === true,
446
546
  createMissingWorkingDir: body.createMissingWorkingDir === true,
547
+ worktree: parseWorktreeInput(body.worktree),
548
+ planItem: typeof body.planItem === 'string' && /^p\d{1,6}$/.test(body.planItem)
549
+ ? body.planItem
550
+ : undefined,
447
551
  };
448
552
  }
449
553
  /** Hold launch admission across all asynchronous preparation and persistence. */
@@ -1 +1 @@
1
- {"version":3,"file":"create-ftown-session.js","sourceRoot":"","sources":["../src/create-ftown-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-ftown-session.js","sourceRoot":"","sources":["../src/create-ftown-session.ts"],"names":[],"mappings":"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"}
package/dist/ftown-cli.js CHANGED
@@ -7,11 +7,15 @@ import { runStart } from './start-commands.js';
7
7
  import { runSecurity } from './security-cli.js';
8
8
  import { runQuotaCli } from './quota-cli.js';
9
9
  import { runBoard, runEvents, runStatus } from './coordination-cli.js';
10
+ import { runAttention } from './attention-cli.js';
11
+ import { runBrief } from './brief-cli.js';
12
+ import { runWorktrees } from './worktrees-cli.js';
13
+ import { runPlan } from './plan-cli.js';
10
14
  import { executeCli, isCliEntry } from './cli-entry.js';
11
15
  export { isCliEntry } from './cli-entry.js';
12
16
  export function usage() {
13
17
  return `Usage: ftown [bridge options]
14
- ftown <setup|start|sessions|harness|env|security|quota|status|board|events> [args...]
18
+ ftown <setup|start|sessions|harness|env|security|quota|status|board|events|attention|brief|worktrees|plan> [args...]
15
19
 
16
20
  With no subcommand, start the bridge. Run setup explicitly before the first start.
17
21
 
@@ -25,7 +29,11 @@ Subcommands:
25
29
  quota Subscription quota left, routing advice and model lists per harness (--json for agents)
26
30
  status Own status card: show, set or clear
27
31
  board Child-session board for this session's tree
28
- events Tree event log for this session's tree`;
32
+ events Tree event log for this session's tree
33
+ attention Answer or escalate questions routed from child sessions
34
+ brief Manager brief for a session (show, set, note)
35
+ worktrees List or prune bridge-owned git worktrees
36
+ plan Manager plan list (add, start, done, drop, todo, edit, rm)`;
29
37
  }
30
38
  export async function runFtown(argv, start = runStart) {
31
39
  const [group, ...args] = argv;
@@ -44,6 +52,10 @@ export async function runFtown(argv, start = runStart) {
44
52
  case 'status': return runStatus(args);
45
53
  case 'board': return runBoard(args);
46
54
  case 'events': return runEvents(args);
55
+ case 'attention': return runAttention(args);
56
+ case 'brief': return runBrief(args);
57
+ case 'worktrees': return runWorktrees(args);
58
+ case 'plan': return runPlan(args);
47
59
  case 'setup': return runSetup(args);
48
60
  case 'start': return start(args);
49
61
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"ftown-cli.js","sourceRoot":"","sources":["../src/ftown-cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,UAAU,KAAK;IACnB,OAAO;;;;;;;;;;;;;;;oDAe2C,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc,EAAE,QAA6C,QAAQ;IAClG,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IACjF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,UAAU,CAAC,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,SAAS,CAAC,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,KAAK,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,KAAK,UAAU,CAAC,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,OAAO,CAAC,CAAC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,QAAQ,CAAC,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC;YAAS,OAAO,CAAC,KAAK,CAAC,8BAA8B,KAAK,GAAG,CAAC,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;IACnG,CAAC;AACH,CAAC;AAED,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"ftown-cli.js","sourceRoot":"","sources":["../src/ftown-cli.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -61,6 +61,23 @@ import { resolveStableRelease, prepareRelease, discardPreparedRelease } from './
61
61
  import { assertUpdateReservationAllowed, readUpdateRestartContext, reportUpdateReady, reserveUpdate, prepareHandoff, readUpdateReceipt, writeUpdateReceipt } from './update-handoff.js';
62
62
  /** Bridge package version — doubles as the default panel bundle version. */
63
63
  const BRIDGE_VERSION = JSON.parse(readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), '..', 'package.json'), 'utf8')).version;
64
+ /** Open attention items for one session, any route. Pages until the ledger is exhausted. */
65
+ async function openBoardAttention(store, sessionId) {
66
+ const items = [];
67
+ let cursor;
68
+ for (let page = 0; page < 20; page += 1) {
69
+ const result = await store.list(sessionId, {
70
+ ...(cursor !== undefined ? { cursor } : {}),
71
+ limit: 100,
72
+ includeResolved: false,
73
+ });
74
+ items.push(...result.events);
75
+ if (!result.hasMore || result.cursor === cursor)
76
+ break;
77
+ cursor = result.cursor;
78
+ }
79
+ return items;
80
+ }
64
81
  /** LAN IPv4 addresses for the solo banner (loopback excluded). */
65
82
  function networkInterfacesForBanner() {
66
83
  const out = [];
@@ -758,6 +775,9 @@ export async function runBridge(argv, commandName = 'ftown-bridge') {
758
775
  mail: mailStore,
759
776
  publishSession: (session) => { void centrifugo.publishSessionUpdate(userId, session); },
760
777
  now: Date.now,
778
+ onAttentionEscalated: (sessionId, item) => {
779
+ localApiServer.publishHumanAttention(sessionId, item);
780
+ },
761
781
  });
762
782
  localApiServer.setCoordination(coordination);
763
783
  const stopPushSessionObserver = centrifugo.onLocalPublication((channel, data) => {
@@ -796,6 +816,7 @@ export async function runBridge(argv, commandName = 'ftown-bridge') {
796
816
  notifyScriptPath,
797
817
  wireTerminalInput,
798
818
  getTerminalSize: (sid) => terminalManager.getSize(sid),
819
+ planStore: coordination.plan,
799
820
  };
800
821
  localApiServer.setSessionFactory(sessionFactoryDeps);
801
822
  // Terminal output pump: buffers runner PTY output and owns the runner
@@ -848,6 +869,7 @@ export async function runBridge(argv, commandName = 'ftown-bridge') {
848
869
  publishSyntheticStop: (sid, reason) => pump.publishSyntheticStop(sid, reason),
849
870
  withSessionWrite: (sid, task) => pump.withSessionWrite(sid, task),
850
871
  unregisterSession: handleSessionExit,
872
+ onSessionEnding: (session) => coordination.onSessionExit(session.id, session),
851
873
  flushTerminalBuffer: (sid) => pump.flush(sid),
852
874
  destroyTerminal: (sid) => terminalManager.destroy(sid),
853
875
  });
@@ -966,6 +988,13 @@ export async function runBridge(argv, commandName = 'ftown-bridge') {
966
988
  let result;
967
989
  await createCommandHandler({ bridgeId, security, sessionController, attentionStore, updates, updateEffects, pullRequestStatuses, pullRequestReview,
968
990
  modelRouting: () => modelRouting,
991
+ sessionBoard: {
992
+ board: (query) => coordination.board.board(query),
993
+ // Read when get_session_board asks. An eager property would touch
994
+ // coordination while every other command is building its handler.
995
+ get events() { return coordination.events; },
996
+ openAttention: (sessionId) => openBoardAttention(attentionStore, sessionId),
997
+ },
969
998
  enqueueSessionMessage: (session, message) => localApiServer.enqueueSessionMessage(session, message),
970
999
  acceptSessionMail: (session, body) => localApiServer.acceptSessionMail(session, body),
971
1000
  publishAttentionChanged: (sessionId) => { localApiServer.emit('event', { sessionId, eventName: 'AttentionSnapshot', data: {} }); },