teamshare-bridge 0.23.0 → 0.25.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 (52) hide show
  1. package/dist/bridge/daemon.js +8 -2
  2. package/dist/bridge/daemon.js.map +1 -1
  3. package/dist/bridge/local-server.d.ts +9 -1
  4. package/dist/bridge/local-server.js.map +1 -1
  5. package/dist/bridge/spawn.d.ts +19 -0
  6. package/dist/bridge/spawn.js +69 -0
  7. package/dist/bridge/spawn.js.map +1 -1
  8. package/dist/bridge/wake-handler.js +73 -3
  9. package/dist/bridge/wake-handler.js.map +1 -1
  10. package/dist/bridge/wake-lanes.d.ts +4 -0
  11. package/dist/bridge/wake-lanes.js +9 -1
  12. package/dist/bridge/wake-lanes.js.map +1 -1
  13. package/dist/bridge/wake-queue-store.js +2 -0
  14. package/dist/bridge/wake-queue-store.js.map +1 -1
  15. package/dist/bridge/wake-routing.d.ts +27 -2
  16. package/dist/bridge/wake-routing.js +68 -0
  17. package/dist/bridge/wake-routing.js.map +1 -1
  18. package/dist/cli/commands/insight.d.ts +1 -0
  19. package/dist/cli/commands/insight.js +266 -0
  20. package/dist/cli/commands/insight.js.map +1 -0
  21. package/dist/cli/commands/research.js +27 -1
  22. package/dist/cli/commands/research.js.map +1 -1
  23. package/dist/cli/commands/workflow.d.ts +1 -0
  24. package/dist/cli/commands/workflow.js +419 -0
  25. package/dist/cli/commands/workflow.js.map +1 -0
  26. package/dist/cli/index.js +12 -0
  27. package/dist/cli/index.js.map +1 -1
  28. package/dist/lib/api-agents.d.ts +5 -1
  29. package/dist/lib/api-agents.js.map +1 -1
  30. package/dist/lib/api-types.d.ts +54 -1
  31. package/dist/lib/api.d.ts +105 -0
  32. package/dist/lib/api.js +77 -0
  33. package/dist/lib/api.js.map +1 -1
  34. package/dist/lib/browser/batch.d.ts +15 -0
  35. package/dist/lib/browser/batch.js +18 -0
  36. package/dist/lib/browser/batch.js.map +1 -1
  37. package/dist/lib/browser/index.d.ts +2 -0
  38. package/dist/lib/browser/index.js +7 -1
  39. package/dist/lib/browser/index.js.map +1 -1
  40. package/dist/lib/browser/login.d.ts +81 -0
  41. package/dist/lib/browser/login.js +371 -0
  42. package/dist/lib/browser/login.js.map +1 -0
  43. package/dist/lib/browser/session.d.ts +31 -2
  44. package/dist/lib/browser/session.js +36 -6
  45. package/dist/lib/browser/session.js.map +1 -1
  46. package/dist/lib/lock.d.ts +9 -1
  47. package/dist/lib/lock.js.map +1 -1
  48. package/dist/lib/orchestrator/handlers/browser.js +34 -0
  49. package/dist/lib/orchestrator/handlers/browser.js.map +1 -1
  50. package/dist/lib/tools/browser-tool.js +39 -0
  51. package/dist/lib/tools/browser-tool.js.map +1 -1
  52. package/package.json +1 -1
@@ -43,7 +43,7 @@ export declare function planModeRoute(event: {
43
43
  workMode?: string | null;
44
44
  }): 'plan' | null;
45
45
  export interface WakeEvent {
46
- type: 'task.assigned' | 'task.run' | 'comment.mention' | 'chat.mention' | 'document.mention' | 'document.edit_request' | 'board.mention' | 'build.trigger' | 'build.stop' | 'question.answered' | 'question.expired' | 'plan.trigger' | 'tool.trigger' | 'tool.stop' | 'document.job' | 'blog.generate'
46
+ type: 'task.assigned' | 'task.run' | 'comment.mention' | 'chat.mention' | 'document.mention' | 'document.edit_request' | 'board.mention' | 'build.trigger' | 'build.stop' | 'question.answered' | 'question.expired' | 'plan.trigger' | 'tool.trigger' | 'tool.stop' | 'document.job' | 'blog.generate' | 'insight.narrate' | 'workflow.run'
47
47
  /** Manual interrupt (2026-08): kill the live harness for this agent. */
48
48
  | 'session.stop';
49
49
  taskId?: string;
@@ -79,6 +79,16 @@ export interface WakeEvent {
79
79
  blogGenerationId?: string;
80
80
  /** BlogPost id the generation writes into (blog.generate). */
81
81
  blogPostId?: string;
82
+ /** InsightNarrativeRun id (insight.narrate) - the run to narrate. */
83
+ insightRunId?: string;
84
+ /** WorkflowRun id (workflow.run) - the run to execute. */
85
+ workflowRunId?: string;
86
+ /**
87
+ * Execution surface for this run (workflow.run): 'folder' (the linked
88
+ * folder) | 'mirror' (an isolated worktree + branch + PR). Set by the hub
89
+ * from Workflow.isolation; `preflightWake` routes `needsMirror` on it.
90
+ */
91
+ isolation?: 'folder' | 'mirror';
82
92
  by?: {
83
93
  id: string;
84
94
  name: string;
@@ -154,7 +164,7 @@ export type WakeOutcome = 'spawned' | 'queued' | 'deferred' | 'skipped' | 'block
154
164
  * Which session a wake will start. Decided BEFORE isolation so a wake that
155
165
  * cannot spawn never builds a mirror (2026-09 - see {@link preflightWake}).
156
166
  */
157
- export type WakeKind = 'plan' | 'tool' | 'doc' | 'board' | 'build' | 'chat' | 'blog' | 'code' | 'stop' | 'none';
167
+ export type WakeKind = 'plan' | 'tool' | 'doc' | 'board' | 'build' | 'chat' | 'blog' | 'insight' | 'workflow' | 'code' | 'stop' | 'none';
158
168
  export interface PreflightInput {
159
169
  event: WakeEvent;
160
170
  /** Freshly fetched task for task-scoped wakes (null when not fetched). */
@@ -164,6 +174,12 @@ export interface PreflightInput {
164
174
  workMode?: string | null;
165
175
  planRunCount?: unknown;
166
176
  toolRunId?: string | null;
177
+ /**
178
+ * Frozen per-kind snapshot (the task's toolSpec column): workflow tasks
179
+ * carry `{ workflowRunId, isolation }`. Typed `unknown` because each
180
+ * kind freezes a different shape - read it via {@link workflowSpecOf}.
181
+ */
182
+ toolSpec?: unknown;
167
183
  } | null;
168
184
  /** `hasHarnessSession(agentId, taskId, 'plan')` - the twin-spawn race guard. */
169
185
  hasLocalPlanSession?: boolean;
@@ -178,6 +194,15 @@ export interface PreflightInput {
178
194
  /** Plain read-only chat mention (no `#task:` reference). */
179
195
  plainChat?: boolean;
180
196
  }
197
+ /**
198
+ * The frozen workflow snapshot on a kind='workflow' task (the task's
199
+ * toolSpec column, written by the hub at run creation). Read defensively:
200
+ * a task from an older hub has no snapshot at all.
201
+ */
202
+ export declare function workflowSpecOf(task: PreflightInput['task']): {
203
+ workflowRunId: string | null;
204
+ isolation: string | null;
205
+ } | null;
181
206
  export interface PreflightResult {
182
207
  outcome: 'spawn' | 'skip' | 'stop';
183
208
  kind: WakeKind;
@@ -6,6 +6,7 @@ exports.wakeInFlightKey = wakeInFlightKey;
6
6
  exports.planModeRoute = planModeRoute;
7
7
  exports.chatReferencesFromBody = chatReferencesFromBody;
8
8
  exports.chatMentionTaskId = chatMentionTaskId;
9
+ exports.workflowSpecOf = workflowSpecOf;
9
10
  exports.preflightWake = preflightWake;
10
11
  /**
11
12
  * Wake routing: the wake event contract, dedupe keys, plan/build routing
@@ -64,6 +65,16 @@ function wakeDedupeKey(event) {
64
65
  // collapse a live-WS + reconnect-drain pair arriving seconds apart.
65
66
  return event.blogGenerationId ? `blog:${event.blogGenerationId}` : null;
66
67
  }
68
+ if (event.type === 'insight.narrate') {
69
+ // A narrative run id is unique per run (same reasoning as blog.generate).
70
+ return event.insightRunId ? `insight:${event.insightRunId}` : null;
71
+ }
72
+ if (event.type === 'workflow.run') {
73
+ // A workflow run id is unique per run: two runs of one workflow never
74
+ // coalesce, even though both carry the same backing task id. Keyed anyway
75
+ // so the in-flight marker collapses a live-WS + reconnect-drain pair.
76
+ return event.workflowRunId ? `workflow:${event.workflowRunId}` : null;
77
+ }
67
78
  return null;
68
79
  }
69
80
  /**
@@ -143,6 +154,21 @@ function chatMentionTaskId(event) {
143
154
  const id = ref?.id ?? event.taskId ?? '';
144
155
  return exports.UUID_RE.test(id) ? id.toLowerCase() : undefined;
145
156
  }
157
+ /**
158
+ * The frozen workflow snapshot on a kind='workflow' task (the task's
159
+ * toolSpec column, written by the hub at run creation). Read defensively:
160
+ * a task from an older hub has no snapshot at all.
161
+ */
162
+ function workflowSpecOf(task) {
163
+ const spec = task?.toolSpec;
164
+ if (!spec || typeof spec !== 'object')
165
+ return null;
166
+ const s = spec;
167
+ return {
168
+ workflowRunId: typeof s.workflowRunId === 'string' ? s.workflowRunId : null,
169
+ isolation: typeof s.isolation === 'string' ? s.isolation : null,
170
+ };
171
+ }
146
172
  /**
147
173
  * DECIDE, THEN BUILD (2026-09).
148
174
  *
@@ -232,6 +258,16 @@ function preflightWake(input) {
232
258
  reason: `${event.type} without taskId`,
233
259
  };
234
260
  }
261
+ // Custom workflows (2026-10): a run that paused to ask a question resumes
262
+ // as a WORKFLOW session, not a code session - `needsMirror` follows the
263
+ // workflow's isolation, because that is the tree the saved harness
264
+ // record's cwd points at. Checked before the run/plan/build branches: a
265
+ // workflow backing task would otherwise resume as code and lose both the
266
+ // tree and the conversation.
267
+ if (task?.kind === 'workflow') {
268
+ const spec = workflowSpecOf(task);
269
+ return spawn('workflow', spec?.isolation === 'mirror');
270
+ }
235
271
  if (input.hasLocalRunSession)
236
272
  return spawn('code', true);
237
273
  const isToolTask = task?.kind === 'research' || task?.kind === 'tool';
@@ -275,6 +311,19 @@ function preflightWake(input) {
275
311
  task.toolRunId) {
276
312
  return spawn('tool', false);
277
313
  }
314
+ // Custom workflows (2026-10): a backing task worked DIRECTLY (Run task
315
+ // button, reassignment) runs the WORKFLOW, not a code session. The task
316
+ // exists only as the run's trace: a code session would work from a guess
317
+ // while the WorkflowRun it belongs to sat pending forever. `needsMirror`
318
+ // follows the workflow's own isolation, exactly like `workflow.run`.
319
+ if ((event.type === 'task.assigned' || event.type === 'task.run') &&
320
+ task?.kind === 'workflow') {
321
+ const spec = workflowSpecOf(task);
322
+ if (!spec?.workflowRunId) {
323
+ return { outcome: 'skip', kind: 'none', needsMirror: false, reason: 'workflow task without a run id' };
324
+ }
325
+ return spawn('workflow', spec.isolation === 'mirror');
326
+ }
278
327
  // Automated plan gate: a plan-mode task that already ran a planning pass is
279
328
  // never re-planned by an AUTOMATED wake. Checked here (above isolation) so a
280
329
  // skip can never build a mirror.
@@ -364,6 +413,25 @@ function preflightWake(input) {
364
413
  }
365
414
  return spawn('blog', false);
366
415
  }
416
+ // Insights harness (2026-10): narrates frozen facts, needs no repo/mirror.
417
+ if (event.type === 'insight.narrate') {
418
+ if (!event.insightRunId) {
419
+ return { outcome: 'skip', kind: 'none', needsMirror: false, reason: 'insight.narrate without insightRunId' };
420
+ }
421
+ return spawn('insight', false);
422
+ }
423
+ // Custom workflows (2026-10): execute the user's authored steps. MUST sit
424
+ // above the `code` tail below: the wake always carries a backing taskId, so
425
+ // falling through would demand nothing but route a workflow run into a code
426
+ // session with no run id. `needsMirror` follows the workflow's isolation,
427
+ // carried on the wake by the hub (folder = the linked folder, like a
428
+ // tool/research run; mirror = a private worktree + branch + PR, like code).
429
+ if (event.type === 'workflow.run') {
430
+ if (!event.projectId || !event.workflowRunId) {
431
+ return { outcome: 'skip', kind: 'none', needsMirror: false, reason: 'workflow.run without projectId/workflowRunId' };
432
+ }
433
+ return spawn('workflow', event.isolation === 'mirror');
434
+ }
367
435
  if (event.type === 'comment.mention' && event.documentId) {
368
436
  if (!event.projectId) {
369
437
  return { outcome: 'skip', kind: 'none', needsMirror: false, reason: 'comment.mention without projectId' };
@@ -1 +1 @@
1
- {"version":3,"file":"wake-routing.js","sourceRoot":"","sources":["../../src/bridge/wake-routing.ts"],"names":[],"mappings":";;;AAuBA,sCAuCC;AAcD,0CAGC;AAYD,sCAkBC;AAyHD,wDAWC;AAQD,8CAIC;AAgFD,sCAsOC;AAnjBD;;;;;GAKG;AACH,wDAA6D;AAE7D,oEAAoE;AACvD,QAAA,OAAO,GAClB,iEAAiE,CAAC;AAEpE;;;;;;GAMG;AACU,QAAA,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC7B,QAAA,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE/C,qEAAqE;AACrE,SAAgB,aAAa,CAAC,KAAgB;IAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,SAAS;YACpB,CAAC,CAAC,QAAQ,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE;YACrE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpH,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,0EAA0E;QAC1E,qEAAqE;QACrE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,uEAAuE;QACvE,sEAAsE;QACtE,oEAAoE;QACpE,OAAO,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe,CAAC,KAAgB;IAC9C,IAAI,KAAK,CAAC,MAAM,IAAI,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,QAAQ,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;IAC5F,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAC3B,KAAmE,EACnE,IAAwD;IAExD,IACE,KAAK,CAAC,IAAI,KAAK,eAAe;QAC9B,KAAK,CAAC,IAAI,KAAK,UAAU;QACzB,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,2EAA2E;IAC3E,wEAAwE;IACxE,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACxD,0EAA0E;IAC1E,0DAA0D;IAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AA8GD,2EAA2E;AAC3E,MAAM,kBAAkB,GACtB,qHAAqH,CAAC;AAExH;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,IAAa;IAClD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAChE,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAA0B,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,KAAgB;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7D,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IACzC,OAAO,eAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAgED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,aAAa,CAAC,KAAqB;IACjD,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,IAAc,EAAE,WAAoB,EAAmB,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,OAAO;QAChB,IAAI;QACJ,WAAW;KACZ,CAAC,CAAC;IAEH,4DAA4D;IAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC/D,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,2DAA2D;IAC3D,EAAE;IACF,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,kDAAkD;IAClD,EAAE;IACF,6EAA6E;IAC7E,0EAA0E;IAC1E,8BAA8B;IAC9B,iEAAiE;IACjE,yEAAyE;IACzE,6EAA6E;IAC7E,6DAA6D;IAC7D,EAAE;IACF,+EAA+E;IAC/E,6EAA6E;IAC7E,+EAA+E;IAC/E,EAAE;IACF,+EAA+E;IAC/E,6EAA6E;IAC7E,6EAA6E;IAC7E,2FAA2F;IAC3F,EAAE;IACF,2EAA2E;IAC3E,8EAA8E;IAC9E,8EAA8E;IAC9E,6EAA6E;IAC7E,mEAAmE;IACnE,IACE,KAAK,CAAC,IAAI,KAAK,mBAAmB;QAClC,KAAK,CAAC,IAAI,KAAK,kBAAkB,EACjC,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,oBAAoB;aAC1C,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,qEAAqE;QACrE,IAAI,KAAK,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACtD,qEAAqE;QACrE,oEAAoE;QACpE,qEAAqE;QACrE,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,yDAAyD;QACzD,IAAI,KAAK,CAAC,mBAAmB;YAAE,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,MAAM;gBACZ,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,iBAAiB;aACvC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,kBAAkB;YAAE,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,EAAE,IAAI,KAAK,UAAU,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;QACtE,MAAM,WAAW,GAAG,CAAC,UAAU,IAAI,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;QAC9D,IAAI,WAAW,IAAI,KAAK,CAAC,mBAAmB;YAAE,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1E,iEAAiE;QACjE,iDAAiD;QACjD,IAAI,KAAK,CAAC,oBAAoB;YAAE,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAE5D,qDAAqD;QACrD,EAAE;QACF,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,sEAAsE;QACtE,6EAA6E;QAC7E,uEAAuE;QACvE,uDAAuD;QACvD,2EAA2E;QAC3E,0CAA0C;QAC1C,EAAE;QACF,2EAA2E;QAC3E,6EAA6E;QAC7E,wEAAwE;QACxE,wEAAwE;QACxE,6DAA6D;QAC7D,sEAAsE;QACtE,iEAAiE;QACjE,oEAAoE;QACpE,yCAAyC;QACzC,IAAI,WAAW;YAAE,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,2EAA2E;IAC3E,qEAAqE;IACrE,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC;QAC7D,IAAI;QACJ,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC;QAClD,IAAI,CAAC,SAAS,EACd,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,iCAAiC;IACjC,EAAE;IACF,2EAA2E;IAC3E,2EAA2E;IAC3E,wEAAwE;IACxE,6CAA6C;IAC7C,wEAAwE;IACxE,6EAA6E;IAC7E,yEAAyE;IACzE,IAAI,aAAa,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;QAChD,6EAA6E;QAC7E,0EAA0E;QAC1E,yEAAyE;QACzE,uEAAuE;QACvE,wEAAwE;QACxE,kEAAkE;QAClE,4DAA4D;QAC5D,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,IAAA,6BAAiB,EAC5B,IAAI,EACJ,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CACnC,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,MAAM;oBACf,IAAI,EAAE,MAAM;oBACZ,WAAW,EAAE,KAAK;oBAClB,MAAM,EAAE,qBAAqB,IAAI,CAAC,MAAM,GAAG;oBAC3C,MAAM,EAAE,YAAY,IAAI,CAAC,QAAQ,EAAE;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,0EAA0E;IAC1E,mEAAmE;IACnE,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAC;QACzG,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,qBAAqB,EAAE,CAAC;QAC3G,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;QAC7G,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;QAC1G,CAAC;QACD,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;QACtG,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;QAC/G,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,8EAA8E;IAC9E,4EAA4E;IAC5E,+DAA+D;IAC/D,EAAE;IACF,8EAA8E;IAC9E,6EAA6E;IAC7E,qEAAqE;IACrE,8EAA8E;IAC9E,6EAA6E;IAC7E,iDAAiD;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;QACjH,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;QAC5G,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,0EAA0E;IAC1E,2CAA2C;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,eAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,yBAAyB,MAAM,GAAG;SAC3C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"wake-routing.js","sourceRoot":"","sources":["../../src/bridge/wake-routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function cmdInsight(flags: Map<string, string>): Promise<void>;
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cmdInsight = cmdInsight;
4
+ /**
5
+ * `insight` command (2026-10): narrate deterministic insight facts.
6
+ *
7
+ * Replaces the server-side LLM call for AI insights: the hub creates an
8
+ * `InsightNarrativeRun` row and wakes the build agent with `insight.narrate`;
9
+ * this command fetches the frozen facts, runs the agent's harness on THIS
10
+ * machine, and posts the narrative back. No provider key is needed on the
11
+ * server - the harness is the model.
12
+ *
13
+ * DELIVERABLE CONTRACT: the harness writes `narrative.json` into its scratch
14
+ * folder shaped as `{ summary, risks[], recommendations[{title,detail,impact}] }`.
15
+ * A file (not an MCP tool) because it gives the agent a place to iterate.
16
+ */
17
+ const node_path_1 = require("node:path");
18
+ const node_fs_1 = require("node:fs");
19
+ const node_os_1 = require("node:os");
20
+ const api_1 = require("../../lib/api");
21
+ const brief_1 = require("../../lib/brief");
22
+ const lock_1 = require("../../lib/lock");
23
+ const daemon_reporter_1 = require("../../lib/chat/daemon-reporter");
24
+ const session_stream_1 = require("../../lib/chat/session-stream");
25
+ const config_1 = require("../../lib/config");
26
+ const utils_1 = require("../utils");
27
+ const harness_1 = require("./harness");
28
+ const DELIVERABLE_FILE = "narrative.json";
29
+ const MAX_FACT_CHARS = 6000;
30
+ function scratchDirFor(cwd, runId) {
31
+ const base = process.env.TEAMSHARE_SCRATCH_DIR ?? (0, node_path_1.join)((0, node_os_1.homedir)(), ".teamshare", "scratch");
32
+ const dir = (0, node_path_1.join)(base, "insight", runId);
33
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
34
+ void cwd;
35
+ return dir;
36
+ }
37
+ function buildBrief(ctx, scratchDir, agentName) {
38
+ const lines = [];
39
+ lines.push(`# Narrate insight facts (${ctx.kind}, ${ctx.scope} scope)`);
40
+ lines.push("");
41
+ lines.push(`- Run: ${ctx.id}`);
42
+ lines.push(`- Agent: ${agentName}`);
43
+ lines.push(`- Write your deliverable to: ${(0, node_path_1.join)(scratchDir, DELIVERABLE_FILE)}`);
44
+ lines.push("");
45
+ lines.push("## Rules");
46
+ lines.push("");
47
+ lines.push("- Using ONLY the JSON facts below, write STRICT JSON (no markdown).");
48
+ lines.push('- Shape: {"summary": string (2-3 sentences), "risks": string[] (max 5), "recommendations": [{"title": string, "detail": string, "impact": "high"|"medium"|"low"}] (max 5)}.');
49
+ lines.push("- Never invent numbers - only reference values present in the facts.");
50
+ lines.push("");
51
+ lines.push("## Facts");
52
+ lines.push("");
53
+ lines.push("```json");
54
+ try {
55
+ const json = JSON.stringify(ctx.facts ?? {}, null, 2);
56
+ lines.push(json.length > MAX_FACT_CHARS ? json.slice(0, MAX_FACT_CHARS) : json);
57
+ }
58
+ catch {
59
+ lines.push("{}");
60
+ }
61
+ lines.push("```");
62
+ return lines.join("\n");
63
+ }
64
+ function readDeliverable(scratchDir) {
65
+ const path = (0, node_path_1.join)(scratchDir, DELIVERABLE_FILE);
66
+ if (!(0, node_fs_1.existsSync)(path))
67
+ return null;
68
+ try {
69
+ const raw = (0, node_fs_1.readFileSync)(path, "utf8");
70
+ const start = raw.indexOf("{");
71
+ const end = raw.lastIndexOf("}");
72
+ if (start === -1 || end <= start)
73
+ return null;
74
+ const parsed = JSON.parse(raw.slice(start, end + 1));
75
+ if (typeof parsed.summary !== "string" || !parsed.summary.trim())
76
+ return null;
77
+ const risks = Array.isArray(parsed.risks)
78
+ ? parsed.risks.filter((r) => typeof r === "string").slice(0, 5)
79
+ : [];
80
+ const recs = Array.isArray(parsed.recommendations)
81
+ ? parsed.recommendations
82
+ .filter((r) => !!r &&
83
+ typeof r === "object" &&
84
+ typeof r.title === "string" &&
85
+ typeof r.detail === "string" &&
86
+ ["high", "medium", "low"].includes(r.impact))
87
+ .slice(0, 5)
88
+ : [];
89
+ return { summary: parsed.summary, risks, recommendations: recs };
90
+ }
91
+ catch {
92
+ return null;
93
+ }
94
+ }
95
+ async function cmdInsight(flags) {
96
+ const agentId = (0, utils_1.need)(flags, "agent");
97
+ const runId = flags.get("run");
98
+ if (!runId) {
99
+ console.error("insight requires --run <runId>");
100
+ process.exitCode = 2;
101
+ return;
102
+ }
103
+ const apiKey = (0, utils_1.resolveApiKey)(flags);
104
+ const api = new api_1.TeamshareApi(process.env.TEAMSHARE_API_URL, apiKey, "run");
105
+ let log = (0, utils_1.makeLog)(null);
106
+ const settings = await (0, utils_1.fetchAgentSettings)(api, agentId, log);
107
+ const harness = (0, utils_1.harnessOf)(flags, settings);
108
+ const projectId = flags.get("project") ?? undefined;
109
+ const ctx = await api.getInsightRun(runId).catch((err) => {
110
+ log(`[insight] cannot read run ${runId}: ${(0, config_1.msg)(err)}`, "stderr");
111
+ return null;
112
+ });
113
+ if (!ctx) {
114
+ process.exitCode = 1;
115
+ return;
116
+ }
117
+ if (ctx.status !== "pending" && ctx.status !== "running") {
118
+ log(`[insight] run ${runId} is already ${ctx.status} - nothing to do`);
119
+ return;
120
+ }
121
+ const cwd = flags.get("cwd") ?? process.cwd();
122
+ const scratchDir = scratchDirFor(cwd, runId);
123
+ const dryRun = flags.get("dry-run") === "true";
124
+ const brief = buildBrief({ id: ctx.id, scope: ctx.scope, kind: ctx.kind, facts: ctx.facts }, scratchDir, agentId);
125
+ if (dryRun) {
126
+ log(`[insight] ${ctx.kind}/${ctx.scope} ${runId} (${ctx.status}) -> ${scratchDir}`);
127
+ log(brief);
128
+ return;
129
+ }
130
+ const sessionId = flags.get("session") ?? (0, session_stream_1.newSessionId)();
131
+ const lock = await (0, lock_1.acquireLock)(agentId, "insight", { projectId, insightRunId: runId }, { onWaiting: () => log(`[lock] agent ${agentId} is busy - waiting...`) });
132
+ if (!lock) {
133
+ console.error(`[lock] gave up waiting for agent ${agentId}`);
134
+ process.exitCode = 1;
135
+ return;
136
+ }
137
+ const fresh = await api.getInsightRun(runId).catch(() => null);
138
+ if (fresh && fresh.status !== "pending" && fresh.status !== "running") {
139
+ log(`[insight] run ${runId} is already ${fresh.status} - nothing to do`);
140
+ (0, lock_1.releaseLock)(agentId);
141
+ return;
142
+ }
143
+ const reporter = new daemon_reporter_1.DaemonReporter({
144
+ sessionId,
145
+ agentId,
146
+ mode: "run",
147
+ projectId,
148
+ });
149
+ reporter.connect();
150
+ const progress = makeProgress(api, runId, sessionId);
151
+ const reporterLog = (0, utils_1.makeLog)(reporter);
152
+ log = (text, level = "stdout") => {
153
+ reporterLog(text, level);
154
+ progress([{ stream: level, text }]);
155
+ };
156
+ (0, utils_1.applyOpenCodeKey)(agentId, log, settings);
157
+ let exitCode = 0;
158
+ try {
159
+ await (0, brief_1.reportStatus)(api, agentId, "working", undefined, sessionId);
160
+ progress([], "narrating");
161
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(scratchDir, "brief.md"), brief, "utf8");
162
+ const prompt = `You are a concise business analyst embedded in a work-management tool.\n\n` +
163
+ brief +
164
+ ((0, utils_1.systemPromptOf)(flags, settings)
165
+ ? `\n\n## Additional instructions\n${(0, utils_1.systemPromptOf)(flags, settings)}`
166
+ : "");
167
+ exitCode = await (0, harness_1.spawnHarness)(harness, prompt, log, {
168
+ model: (0, utils_1.modelOf)(flags, settings),
169
+ temperature: (0, utils_1.temperatureOf)(flags, settings),
170
+ effort: (0, utils_1.effortOf)(flags, settings) ?? (0, utils_1.defaultEffort)(harness),
171
+ cwd,
172
+ timeoutMin: (0, utils_1.sessionTimeoutMin)(flags),
173
+ title: `Insight ${ctx.kind} (${runId})`,
174
+ agentKey: api.apiKey,
175
+ apiBaseUrl: api.baseUrl,
176
+ providerKey: settings.providerKey ?? undefined,
177
+ sessionMode: "run",
178
+ sessionId,
179
+ sessionStore: { agentId, taskId: runId, mode: "research" },
180
+ fresh: flags.get("fresh") === "true",
181
+ fork: flags.get("fork") === "true",
182
+ });
183
+ if (exitCode !== 0) {
184
+ progress([], "failed");
185
+ await api
186
+ .completeInsightRun(runId, {
187
+ ok: false,
188
+ error: `The narrative session exited ${exitCode}`,
189
+ ...(settings.model ? { model: settings.model } : {}),
190
+ sessionId,
191
+ })
192
+ .catch(() => undefined);
193
+ log(`[insight] run ${runId} failed (harness exited ${exitCode})`);
194
+ process.exitCode = 1;
195
+ return;
196
+ }
197
+ progress([], "saving");
198
+ const narrative = readDeliverable(scratchDir);
199
+ if (!narrative) {
200
+ await api
201
+ .completeInsightRun(runId, {
202
+ ok: false,
203
+ error: `The agent finished without writing ${DELIVERABLE_FILE}`,
204
+ ...(settings.model ? { model: settings.model } : {}),
205
+ sessionId,
206
+ })
207
+ .catch(() => undefined);
208
+ log(`[insight] run ${runId} failed (no deliverable)`, "stderr");
209
+ process.exitCode = 1;
210
+ return;
211
+ }
212
+ await api.completeInsightRun(runId, {
213
+ ok: true,
214
+ narrative,
215
+ ...(settings.model ? { model: settings.model } : {}),
216
+ sessionId,
217
+ });
218
+ log(`[insight] narrative delivered for run ${runId}`);
219
+ progress([], "done");
220
+ }
221
+ catch (err) {
222
+ log(`[insight] error: ${(0, config_1.msg)(err)}`, "stderr");
223
+ progress([], "failed");
224
+ await api
225
+ .completeInsightRun(runId, {
226
+ ok: false,
227
+ error: (0, config_1.msg)(err).slice(0, 1000),
228
+ sessionId,
229
+ })
230
+ .catch(() => undefined);
231
+ process.exitCode = 1;
232
+ }
233
+ finally {
234
+ await (0, brief_1.reportStatus)(api, agentId, "online", undefined, sessionId).catch(() => undefined);
235
+ (0, lock_1.releaseLock)(agentId);
236
+ await reporter.end(exitCode);
237
+ }
238
+ }
239
+ function makeProgress(api, runId, sessionId) {
240
+ let pending = [];
241
+ let timer = null;
242
+ let lastPhase;
243
+ const flush = () => {
244
+ const lines = pending;
245
+ pending = [];
246
+ timer = null;
247
+ if (!lines.length && !lastPhase)
248
+ return;
249
+ api
250
+ .reportInsightProgress(runId, lines, {
251
+ ...(lastPhase ? { phase: lastPhase } : {}),
252
+ sessionId,
253
+ })
254
+ .catch(() => undefined);
255
+ };
256
+ return (lines, phase) => {
257
+ if (phase)
258
+ lastPhase = phase;
259
+ pending.push(...lines.slice(-20));
260
+ if (!timer) {
261
+ timer = setTimeout(flush, 2000);
262
+ timer.unref?.();
263
+ }
264
+ };
265
+ }
266
+ //# sourceMappingURL=insight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insight.js","sourceRoot":"","sources":["../../../src/cli/commands/insight.ts"],"names":[],"mappings":"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"}
@@ -766,6 +766,31 @@ async function cmdResearch(flags) {
766
766
  const instructions = buildInstructions(run, folderBase);
767
767
  const systemPrompt = (0, utils_1.systemPromptOf)(flags, settings);
768
768
  const label = TOOL_SYSTEM_LABEL[run.toolKey] ?? "tool agent";
769
+ // QA login (browser-agent): the run form may hold encrypted credentials
770
+ // (username/password). Inject them into the PROMPT ONLY (never brief.md on
771
+ // disk) so the agent drives browser_action({action:"login"}) without the
772
+ // operator pasting them into the task. QA test accounts only.
773
+ let credentialBlock = "";
774
+ if (run.toolKey === "browser-agent") {
775
+ try {
776
+ const secrets = await api.getToolRunSecrets(run.id);
777
+ if (secrets && (secrets.username || secrets.password)) {
778
+ const p = (run.params ?? {});
779
+ const url = typeof p.url === "string" ? p.url : "";
780
+ credentialBlock =
781
+ `\n\n## Login credentials (QA test account)\n` +
782
+ (url ? `- Login page: ${url}\n` : `- Navigate to the site's login page first.\n`) +
783
+ (secrets.username ? `- Username / email: ${secrets.username}\n` : "") +
784
+ (secrets.password ? `- Password: ${secrets.password}\n` : "") +
785
+ `\nSign in with: browser_open({ allowCredentials: true }) then ` +
786
+ `browser_action({ action: "login", username, password }). ` +
787
+ `If a one-time code or captcha appears, stop and ask the human.\n`;
788
+ }
789
+ }
790
+ catch {
791
+ /* best-effort: a missing secret just means no credential block. */
792
+ }
793
+ }
769
794
  if (cwd) {
770
795
  // Keep the local mirror out of git so it never shows as dirty and is
771
796
  // never swept into a later task's stash or commit (best-effort).
@@ -807,7 +832,7 @@ async function cmdResearch(flags) {
807
832
  return;
808
833
  }
809
834
  const endpoint = (0, utils_1.selfLlmEndpoint)(flags, settings, harness, log);
810
- const prompt = `${brief}${instructions}`;
835
+ const prompt = `${brief}${instructions}${credentialBlock}`;
811
836
  const result = await (0, llm_1.runLlmSession)(api, run.taskId ?? run.id, prompt, {
812
837
  baseUrl: endpoint.baseUrl,
813
838
  apiKey: llmApiKey,
@@ -826,6 +851,7 @@ async function cmdResearch(flags) {
826
851
  const prompt = `You are a ${label} working on a TeamShare tool run for project "${projectName}".\n\n` +
827
852
  brief +
828
853
  instructions +
854
+ credentialBlock +
829
855
  (systemPrompt ? `\n\n## Additional instructions\n${systemPrompt}` : "");
830
856
  exitCode = await (0, harness_1.spawnHarness)(harness, prompt, log, {
831
857
  model: (0, utils_1.modelOf)(flags, settings),