pi-forge 1.3.6 → 1.3.7

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 (61) hide show
  1. package/README.md +1 -1
  2. package/dist/client/assets/{CodeMirrorEditor-BH6J6WhM.js → CodeMirrorEditor-BklpCqAo.js} +2 -2
  3. package/dist/client/assets/{CodeMirrorEditor-BH6J6WhM.js.map → CodeMirrorEditor-BklpCqAo.js.map} +1 -1
  4. package/dist/client/assets/index-CfPBiBJW.css +1 -0
  5. package/dist/client/assets/{index-bJJrpg1R.js → index-EU82nCUh.js} +82 -81
  6. package/dist/client/assets/index-EU82nCUh.js.map +1 -0
  7. package/dist/client/index.html +2 -2
  8. package/dist/client/sw.js +1 -1
  9. package/dist/client/sw.js.map +1 -1
  10. package/dist/server/cli.js +122 -1
  11. package/dist/server/cli.js.map +1 -1
  12. package/dist/server/config.js +69 -4
  13. package/dist/server/config.js.map +1 -1
  14. package/dist/server/index.js +2 -0
  15. package/dist/server/index.js.map +1 -1
  16. package/dist/server/ldap-auth.js +103 -0
  17. package/dist/server/ldap-auth.js.map +1 -0
  18. package/dist/server/lifecycle-notifications.js +44 -0
  19. package/dist/server/lifecycle-notifications.js.map +1 -0
  20. package/dist/server/mcp/tool-bridge.js +12 -8
  21. package/dist/server/mcp/tool-bridge.js.map +1 -1
  22. package/dist/server/orchestration/config.js +10 -36
  23. package/dist/server/orchestration/config.js.map +1 -1
  24. package/dist/server/orchestration/event-bridge.js +69 -28
  25. package/dist/server/orchestration/event-bridge.js.map +1 -1
  26. package/dist/server/orchestration/inbox.js +157 -124
  27. package/dist/server/orchestration/inbox.js.map +1 -1
  28. package/dist/server/orchestration/init.js +1 -1
  29. package/dist/server/orchestration/store.js +44 -4
  30. package/dist/server/orchestration/store.js.map +1 -1
  31. package/dist/server/orchestration/tools.js +35 -118
  32. package/dist/server/orchestration/tools.js.map +1 -1
  33. package/dist/server/orchestration/types.js +8 -4
  34. package/dist/server/orchestration/types.js.map +1 -1
  35. package/dist/server/orchestration/worker-lifecycle.js +1 -1
  36. package/dist/server/orchestration/worker-lifecycle.js.map +1 -1
  37. package/dist/server/routes/_schemas.js +6 -0
  38. package/dist/server/routes/_schemas.js.map +1 -1
  39. package/dist/server/routes/auth.js +31 -9
  40. package/dist/server/routes/auth.js.map +1 -1
  41. package/dist/server/routes/control.js +52 -13
  42. package/dist/server/routes/control.js.map +1 -1
  43. package/dist/server/routes/health.js +3 -4
  44. package/dist/server/routes/health.js.map +1 -1
  45. package/dist/server/routes/orchestration.js +31 -7
  46. package/dist/server/routes/orchestration.js.map +1 -1
  47. package/dist/server/routes/prompt.js +40 -2
  48. package/dist/server/routes/prompt.js.map +1 -1
  49. package/dist/server/routes/sessions.js +110 -5
  50. package/dist/server/routes/sessions.js.map +1 -1
  51. package/dist/server/routes/stream.js +77 -2
  52. package/dist/server/routes/stream.js.map +1 -1
  53. package/dist/server/session-registry.js +125 -28
  54. package/dist/server/session-registry.js.map +1 -1
  55. package/dist/server/sse-bridge.js +39 -29
  56. package/dist/server/sse-bridge.js.map +1 -1
  57. package/dist/server/subagents-external.js +319 -0
  58. package/dist/server/subagents-external.js.map +1 -0
  59. package/package.json +2 -1
  60. package/dist/client/assets/index-BszHzUYE.css +0 -1
  61. package/dist/client/assets/index-bJJrpg1R.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ldap-auth.js","sourceRoot":"","sources":["../src/ldap-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Send a custom lifecycle/status card with explicit active-run behavior.
3
+ *
4
+ * While streaming, lifecycle cards use `steer` so the card is available
5
+ * to the active run's next model step rather than being delivered after
6
+ * `agent_end` as a follow-up. If the current LLM request is already in
7
+ * flight, the SDK cannot inject into that already-sent request; the earliest
8
+ * possible context point is the next agent step.
9
+ *
10
+ * When idle, `triggerTurn` controls whether the card starts a new model turn:
11
+ * failures trigger; success/informational cards only append/display.
12
+ */
13
+ export function sendCustomLifecycleMessage(session, message, options) {
14
+ if (options.dedupe !== undefined &&
15
+ hasExistingNotification(session.messages, message.customType, options.dedupe)) {
16
+ return;
17
+ }
18
+ const send = (sendOptions) => {
19
+ void session.sendCustomMessage(message, sendOptions).catch((err) => {
20
+ options.onError?.(err);
21
+ });
22
+ };
23
+ if (session.isStreaming) {
24
+ send({ deliverAs: "steer", triggerTurn: options.triggerTurn });
25
+ return;
26
+ }
27
+ if (options.dedupe !== undefined &&
28
+ hasExistingNotification(session.messages, message.customType, options.dedupe)) {
29
+ return;
30
+ }
31
+ send({ triggerTurn: options.triggerTurn });
32
+ }
33
+ function hasExistingNotification(messages, customType, dedupe) {
34
+ return messages.some((message) => {
35
+ const m = message;
36
+ if (m.role !== "custom" || m.customType !== customType)
37
+ return false;
38
+ if (typeof m.details !== "object" || m.details === null)
39
+ return false;
40
+ const details = m.details;
41
+ return details[dedupe.detailKey] === dedupe.detailValue;
42
+ });
43
+ }
44
+ //# sourceMappingURL=lifecycle-notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-notifications.js","sourceRoot":"","sources":["../src/lifecycle-notifications.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAyB,EACzB,OAA+B,EAC/B,OAIC;IAED,IACE,OAAO,CAAC,MAAM,KAAK,SAAS;QAC5B,uBAAuB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EAC7E,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,WAAuE,EAAQ,EAAE;QAC7F,KAAK,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YAC1E,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,IACE,OAAO,CAAC,MAAM,KAAK,SAAS;QAC5B,uBAAuB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,EAC7E,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAA4B,EAC5B,UAAkB,EAClB,MAAkD;IAElD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,OAAsE,CAAC;QACjF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACtE,MAAM,OAAO,GAAG,CAAC,CAAC,OAAkC,CAAC;QACrD,OAAO,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,WAAW,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -124,10 +124,11 @@ export function mcpResultToAgentResult(res) {
124
124
  * usually has the most recent / most relevant items in time-ordered
125
125
  * lists.
126
126
  *
127
- * Marker text is read by the agent and tells it (a) truncation
128
- * happened, (b) by how much, (c) what to do about it. Imperative
129
- * phrasing nudges the model to narrow scope rather than re-running
130
- * the same call.
127
+ * Warning text is placed at the very start of the returned text so
128
+ * even simple models notice it before consuming a large head/tail
129
+ * payload. It tells the agent (a) truncation happened, (b) by how
130
+ * much, and (c) what to do next. Imperative phrasing nudges the
131
+ * model to narrow scope rather than re-running the same call.
131
132
  *
132
133
  * No per-tool override yet — add when a real workload needs a higher
133
134
  * or lower cap. Hardcoded constant is the deliberate first cut.
@@ -154,10 +155,13 @@ export function capTextContent(blocks) {
154
155
  const head = flat.slice(0, headLen);
155
156
  const tail = flat.slice(flat.length - tailLen);
156
157
  const omitted = flat.length - headLen - tailLen;
157
- const marker = `\n\n[--- ${omitted.toLocaleString()} characters (~${Math.round(omitted / 4).toLocaleString()} tokens) ` +
158
- `truncated to keep the result under the ${MCP_TEXT_CAP_CHARS.toLocaleString()}-char cap. ` +
159
- `Refine the query (smaller scope, narrower filter, paginate if available) to see the missing middle. ---]\n\n`;
160
- const truncatedText = head + marker + tail;
158
+ const warning = `MCP_RESULT_TRUNCATED: ${omitted.toLocaleString()} characters ` +
159
+ `(~${Math.round(omitted / 4).toLocaleString()} tokens) were omitted from the middle of this tool result. ` +
160
+ `Do not assume the missing content was irrelevant. Next step: call the MCP tool again with a smaller scope, ` +
161
+ `narrower filter, or pagination to inspect the omitted content.\n\n`;
162
+ const marker = `\n\n[--- MCP_RESULT_TRUNCATED: omitted middle content. Use a smaller scope, narrower filter, ` +
163
+ `or pagination to inspect it. ---]\n\n`;
164
+ const truncatedText = warning + head + marker + tail;
161
165
  // Keep one text block with the truncated payload + every image
162
166
  // block from the original (in its original relative order). Drop
163
167
  // duplicate text blocks since they were already absorbed into
@@ -1 +1 @@
1
- {"version":3,"file":"tool-bridge.js","sourceRoot":"","sources":["../../src/mcp/tool-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-bridge.js","sourceRoot":"","sources":["../../src/mcp/tool-bridge.ts"],"names":[],"mappings":"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"}
@@ -1,49 +1,23 @@
1
1
  /**
2
2
  * Runtime config for the orchestration feature.
3
3
  *
4
- * Instance-level kill switch + tunable limits. Read fresh on every
5
- * call (no caching) so changing env requires only a process restart,
6
- * not a code edit. Defaults are safe — orchestration is OFF by
7
- * default; the operator opts in with `ORCHESTRATION_ENABLED=true`.
8
- *
9
- * MINIMAL_UI is a HARD gate (checked separately in routes + tool
10
- * registration): even with `ORCHESTRATION_ENABLED=true`, a deployment
11
- * running under MINIMAL_UI never surfaces orchestration. Same posture
12
- * as the webhooks mutation gate, applied to BOTH routes AND the
13
- * agent-facing tool surface.
4
+ * Enabled by default with an instance-level disable switch + tunable
5
+ * limits. MINIMAL_UI is a HARD gate (checked separately in routes +
6
+ * tool registration): a deployment running under MINIMAL_UI never
7
+ * surfaces orchestration. Same posture as the webhooks mutation gate,
8
+ * applied to BOTH routes AND the agent-facing tool surface.
14
9
  */
15
10
  import { config } from "../config.js";
16
- import { DEFAULT_MAX_WORKERS_PER_SUPERVISOR } from "./types.js";
17
- function readBoolEnv(key, fallback) {
18
- const raw = process.env[key];
19
- if (raw === undefined || raw === "")
20
- return fallback;
21
- const v = raw.toLowerCase();
22
- if (["1", "true", "yes", "on"].includes(v))
23
- return true;
24
- if (["0", "false", "no", "off"].includes(v))
25
- return false;
26
- return fallback;
27
- }
28
- function readIntEnv(key, fallback, min, max) {
29
- const raw = process.env[key];
30
- if (raw === undefined || raw === "")
31
- return fallback;
32
- const n = Number.parseInt(raw, 10);
33
- if (!Number.isFinite(n) || n < min || n > max)
34
- return fallback;
35
- return n;
36
- }
37
11
  /**
38
12
  * True when orchestration tools may surface AND the REST routes may
39
- * accept mutations. Combines the instance-level env flag with the
40
- * MINIMAL_UI hard gate — under MINIMAL_UI, orchestration is OFF
41
- * regardless of the env flag.
13
+ * accept mutations. Combines the instance-level feature config with
14
+ * the MINIMAL_UI hard gate — under MINIMAL_UI, orchestration is OFF
15
+ * regardless of the disable switch.
42
16
  */
43
17
  export function isOrchestrationEnabled() {
44
18
  if (config.minimalUi)
45
19
  return false;
46
- return readBoolEnv("ORCHESTRATION_ENABLED", false);
20
+ return config.orchestrationEnabled;
47
21
  }
48
22
  /**
49
23
  * Reason string for the disabled state — surfaced in 403 responses
@@ -56,6 +30,6 @@ export function orchestrationDisabledReason() {
56
30
  return "orchestration_disabled";
57
31
  }
58
32
  export function maxWorkersPerSupervisor() {
59
- return readIntEnv("ORCHESTRATION_MAX_WORKERS_PER_SUPERVISOR", DEFAULT_MAX_WORKERS_PER_SUPERVISOR, 1, 100);
33
+ return config.orchestrationMaxWorkersPerSupervisor;
60
34
  }
61
35
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/orchestration/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kCAAkC,EAAE,MAAM,YAAY,CAAC;AAEhE,SAAS,WAAW,CAAC,GAAW,EAAE,QAAiB;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAW;IACzE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG;QAAE,OAAO,QAAQ,CAAC;IAC/D,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,WAAW,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,qBAAqB,CAAC;IACnD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CACf,0CAA0C,EAC1C,kCAAkC,EAClC,CAAC,EACD,GAAG,CACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/orchestration/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,MAAM,CAAC,oBAAoB,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,qBAAqB,CAAC;IACnD,OAAO,wBAAwB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,oCAAoC,CAAC;AACrD,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { bridgeWorkerEvent } from "./inbox.js";
2
+ import { getWorkerRecord, updateWorkerLifecycle } from "./store.js";
2
3
  function findLastAssistant(messages) {
3
4
  for (let i = messages.length - 1; i >= 0; i--) {
4
5
  const m = messages[i];
@@ -28,49 +29,65 @@ function extractAssistantText(content) {
28
29
  }
29
30
  if (parts.length === 0)
30
31
  return undefined;
31
- // Cap to 600 chars in the inbox payload — the supervisor LLM
32
- // sees this as a quick summary; if it wants more it calls
33
- // `orchestrate_read_worker`. Bigger payloads bloat the inbox
34
- // file and the supervisor's tool-result context.
35
- const joined = parts.join("\n");
36
- return joined.length > 600 ? `${joined.slice(0, 600)}…` : joined;
32
+ // Worker completion notifications are the supervisor's actionable
33
+ // context now, so include the full final assistant text rather than a
34
+ // preview that requires a follow-up inbox/transcript read.
35
+ return parts.join("\n");
37
36
  }
38
37
  /**
39
38
  * Called from `session-registry.makeSubscribeHandler` for every
40
- * AgentSessionEvent on every live session. Filters for the two SDK
41
- * events that map to inbox items; everything else is ignored.
39
+ * AgentSessionEvent on every live session. Only authoritative
40
+ * lifecycle signals wake the supervisor: agent_end (final turn
41
+ * outcome) and explicit blocked state from ask_user_question (below).
42
+ * Retry events are deliberately ignored here; if retries ultimately
43
+ * fail, the SDK reports the terminal outcome on agent_end or the
44
+ * explicit stop/delete path reports no agent_end was observed.
42
45
  */
43
46
  export async function bridgeWorkerAgentEvent(meta, event) {
44
47
  const e = event;
45
- if (e.type === "agent_end") {
46
- const messages = meta.session.messages;
47
- const lastAssistant = findLastAssistant(messages);
48
- const errorMessage = meta.session.errorMessage ??
49
- lastAssistant?.errorMessage;
50
- await bridgeWorkerEvent(meta.sessionId, "worker.ended", {
51
- stopReason: lastAssistant?.stopReason ?? null,
52
- errorMessage: errorMessage ?? null,
53
- assistantTextPreview: lastAssistant?.text ?? null,
48
+ const now = new Date().toISOString();
49
+ if (e.type === "agent_start") {
50
+ await updateWorkerLifecycle(meta.sessionId, {
51
+ state: "running",
52
+ turnOpen: true,
53
+ lastStateAt: now,
54
+ lastAgentStartAt: now,
55
+ stopReason: null,
56
+ errorMessage: null,
54
57
  });
55
58
  return;
56
59
  }
57
- if (e.type === "auto_retry_end" && e.success === false) {
58
- await bridgeWorkerEvent(meta.sessionId, "worker.auto_retry_failed", {
59
- attempt: e.attempt ?? null,
60
- maxAttempts: e.maxAttempts ?? null,
61
- finalError: e.finalError ?? null,
62
- });
60
+ if (e.type !== "agent_end")
63
61
  return;
64
- }
62
+ const messages = meta.session.messages;
63
+ const lastAssistant = findLastAssistant(messages);
64
+ const errorMessage = meta.session.errorMessage ??
65
+ lastAssistant?.errorMessage;
66
+ const hasError = typeof errorMessage === "string" && errorMessage.length > 0;
67
+ await updateWorkerLifecycle(meta.sessionId, {
68
+ state: hasError ? "errored" : "ended",
69
+ turnOpen: false,
70
+ lastStateAt: now,
71
+ lastAgentEndAt: now,
72
+ stopReason: lastAssistant?.stopReason ?? null,
73
+ errorMessage: errorMessage ?? null,
74
+ });
75
+ await bridgeWorkerEvent(meta.sessionId, "worker.ended", {
76
+ stopReason: lastAssistant?.stopReason ?? null,
77
+ errorMessage: errorMessage ?? null,
78
+ assistantText: lastAssistant?.text ?? null,
79
+ });
65
80
  }
66
81
  export async function bridgeWorkerAskUserQuestion(sessionId, questions, requestId) {
82
+ await updateWorkerLifecycle(sessionId, {
83
+ state: "awaiting_question",
84
+ lastStateAt: new Date().toISOString(),
85
+ });
67
86
  await bridgeWorkerEvent(sessionId, "worker.ask_user", {
68
87
  requestId,
69
88
  questionCount: questions.length,
70
- // Keep the inbox payload tight preview is the first question's
71
- // header so the supervisor sees enough to decide whether to read
72
- // the worker's transcript. Full question detail is in the
73
- // worker's session, fetched via orchestrate_read_worker.
89
+ // Include the question detail directly so the supervisor can react
90
+ // from the pushed notification without first draining an inbox.
74
91
  firstQuestionHeader: questions[0]?.header ?? null,
75
92
  firstQuestionText: questions[0]?.question ?? null,
76
93
  });
@@ -96,7 +113,31 @@ export async function bridgeWorkerProcessAlert(sessionId, info, reason) {
96
113
  success: info.success,
97
114
  });
98
115
  }
116
+ export async function bridgeWorkerExecutionStopped(sessionId, meta) {
117
+ const rec = await getWorkerRecord(sessionId);
118
+ if (rec?.turnOpen !== true)
119
+ return;
120
+ await updateWorkerLifecycle(sessionId, {
121
+ state: "stopped",
122
+ turnOpen: false,
123
+ lastStateAt: new Date().toISOString(),
124
+ stopReason: meta.reason,
125
+ });
126
+ await bridgeWorkerEvent(sessionId, "worker.execution_stopped_without_agent_end", {
127
+ reason: meta.reason,
128
+ wasLive: meta.wasLive,
129
+ lastAgentStartAt: rec.lastAgentStartAt ?? null,
130
+ });
131
+ }
99
132
  export async function bridgeWorkerDeleted(sessionId, meta) {
133
+ const reason = meta.reason ?? "deleted";
134
+ await bridgeWorkerExecutionStopped(sessionId, { wasLive: meta.wasLive, reason });
135
+ await updateWorkerLifecycle(sessionId, {
136
+ state: "deleted",
137
+ turnOpen: false,
138
+ lastStateAt: new Date().toISOString(),
139
+ stopReason: reason,
140
+ });
100
141
  await bridgeWorkerEvent(sessionId, "worker.deleted", {
101
142
  wasLive: meta.wasLive,
102
143
  });
@@ -1 +1 @@
1
- {"version":3,"file":"event-bridge.js","sourceRoot":"","sources":["../../src/orchestration/event-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"event-bridge.js","sourceRoot":"","sources":["../../src/orchestration/event-bridge.ts"],"names":[],"mappings":"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"}