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.
- package/dist/bridge/daemon.js +8 -2
- package/dist/bridge/daemon.js.map +1 -1
- package/dist/bridge/local-server.d.ts +9 -1
- package/dist/bridge/local-server.js.map +1 -1
- package/dist/bridge/spawn.d.ts +19 -0
- package/dist/bridge/spawn.js +69 -0
- package/dist/bridge/spawn.js.map +1 -1
- package/dist/bridge/wake-handler.js +73 -3
- package/dist/bridge/wake-handler.js.map +1 -1
- package/dist/bridge/wake-lanes.d.ts +4 -0
- package/dist/bridge/wake-lanes.js +9 -1
- package/dist/bridge/wake-lanes.js.map +1 -1
- package/dist/bridge/wake-queue-store.js +2 -0
- package/dist/bridge/wake-queue-store.js.map +1 -1
- package/dist/bridge/wake-routing.d.ts +27 -2
- package/dist/bridge/wake-routing.js +68 -0
- package/dist/bridge/wake-routing.js.map +1 -1
- package/dist/cli/commands/insight.d.ts +1 -0
- package/dist/cli/commands/insight.js +266 -0
- package/dist/cli/commands/insight.js.map +1 -0
- package/dist/cli/commands/research.js +27 -1
- package/dist/cli/commands/research.js.map +1 -1
- package/dist/cli/commands/workflow.d.ts +1 -0
- package/dist/cli/commands/workflow.js +419 -0
- package/dist/cli/commands/workflow.js.map +1 -0
- package/dist/cli/index.js +12 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/api-agents.d.ts +5 -1
- package/dist/lib/api-agents.js.map +1 -1
- package/dist/lib/api-types.d.ts +54 -1
- package/dist/lib/api.d.ts +105 -0
- package/dist/lib/api.js +77 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/browser/batch.d.ts +15 -0
- package/dist/lib/browser/batch.js +18 -0
- package/dist/lib/browser/batch.js.map +1 -1
- package/dist/lib/browser/index.d.ts +2 -0
- package/dist/lib/browser/index.js +7 -1
- package/dist/lib/browser/index.js.map +1 -1
- package/dist/lib/browser/login.d.ts +81 -0
- package/dist/lib/browser/login.js +371 -0
- package/dist/lib/browser/login.js.map +1 -0
- package/dist/lib/browser/session.d.ts +31 -2
- package/dist/lib/browser/session.js +36 -6
- package/dist/lib/browser/session.js.map +1 -1
- package/dist/lib/lock.d.ts +9 -1
- package/dist/lib/lock.js.map +1 -1
- package/dist/lib/orchestrator/handlers/browser.js +34 -0
- package/dist/lib/orchestrator/handlers/browser.js.map +1 -1
- package/dist/lib/tools/browser-tool.js +39 -0
- package/dist/lib/tools/browser-tool.js.map +1 -1
- 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":"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"}
|
|
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),
|