@moxt-ai/mobius 0.0.387 → 0.0.388

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 (48) hide show
  1. package/dist/{chunk-A62FEGIN.js → chunk-7BSIM5AK.js} +123 -114
  2. package/dist/{chunk-A62FEGIN.js.map → chunk-7BSIM5AK.js.map} +3 -3
  3. package/dist/{chunk-S7PKNDIS.js → chunk-Z4WUPVBL.js} +2 -2
  4. package/dist/{chunk-S7PKNDIS.js.map → chunk-Z4WUPVBL.js.map} +1 -1
  5. package/dist/{cli-43LPJ5ID.js → cli-O57WJIFN.js} +3 -3
  6. package/dist/cli.js +2 -2
  7. package/dist/engine/runtime/command/registry/prompt.d.ts.map +1 -1
  8. package/dist/engine/runtime/command/registry/prompt.js +2 -3
  9. package/dist/engine/runtime/command/registry/prompt.js.map +1 -1
  10. package/dist/engine/runtime/relay/session-event-publisher.d.ts.map +1 -1
  11. package/dist/engine/runtime/relay/session-event-publisher.js +2 -4
  12. package/dist/engine/runtime/relay/session-event-publisher.js.map +1 -1
  13. package/dist/engine/session/api/session-layer.js +3 -3
  14. package/dist/engine/session/api/session-layer.js.map +1 -1
  15. package/dist/engine/session/live/agent-session.d.ts.map +1 -1
  16. package/dist/engine/session/live/agent-session.js +4 -3
  17. package/dist/engine/session/live/agent-session.js.map +1 -1
  18. package/dist/engine/session/prompt/execute-prompt.d.ts +8 -8
  19. package/dist/engine/session/prompt/execute-prompt.d.ts.map +1 -1
  20. package/dist/engine/session/prompt/execute-prompt.js +10 -10
  21. package/dist/engine/session/prompt/execute-prompt.js.map +1 -1
  22. package/dist/engine/session/prompt/prompt-lifecycle.d.ts +8 -4
  23. package/dist/engine/session/prompt/prompt-lifecycle.d.ts.map +1 -1
  24. package/dist/engine/session/prompt/prompt-lifecycle.js +18 -17
  25. package/dist/engine/session/prompt/prompt-lifecycle.js.map +1 -1
  26. package/dist/engine/session/turn/active-executions.d.ts +4 -2
  27. package/dist/engine/session/turn/active-executions.d.ts.map +1 -1
  28. package/dist/engine/session/turn/active-executions.js +4 -6
  29. package/dist/engine/session/turn/active-executions.js.map +1 -1
  30. package/dist/engine/session/turn/active-turn.d.ts +12 -8
  31. package/dist/engine/session/turn/active-turn.d.ts.map +1 -1
  32. package/dist/engine/session/turn/active-turn.js +47 -36
  33. package/dist/engine/session/turn/active-turn.js.map +1 -1
  34. package/dist/engine/session/turn/execution-receipts.d.ts +6 -2
  35. package/dist/engine/session/turn/execution-receipts.d.ts.map +1 -1
  36. package/dist/engine/session/turn/execution-receipts.js +18 -32
  37. package/dist/engine/session/turn/execution-receipts.js.map +1 -1
  38. package/dist/engine/session/turn/session-execution.d.ts +6 -2
  39. package/dist/engine/session/turn/session-execution.d.ts.map +1 -1
  40. package/dist/engine/session/turn/session-execution.js +10 -7
  41. package/dist/engine/session/turn/session-execution.js.map +1 -1
  42. package/dist/engine/session/turn/session-turns.d.ts +1 -1
  43. package/dist/engine/session/turn/session-turns.d.ts.map +1 -1
  44. package/dist/engine/session/turn/session-turns.js +1 -1
  45. package/dist/engine/session/turn/session-turns.js.map +1 -1
  46. package/dist/engine.js +2 -2
  47. package/package.json +2 -2
  48. /package/dist/{cli-43LPJ5ID.js.map → cli-O57WJIFN.js.map} +0 -0
@@ -4,12 +4,14 @@ import type { ExecutionReceipts } from "../turn/execution-receipts.ts";
4
4
  export interface PromptRequestRecovery {
5
5
  readonly queuedPromptRequests: readonly QueuedPromptRequestEventLog[];
6
6
  }
7
+ /** Whether a command started or settled, as its execution receipt records it. */
8
+ type ExecutionProgress = Pick<ExecutionReceipts, "hasStarted" | "isTerminalExecution">;
7
9
  export declare class PromptLifecycle {
8
10
  #private;
9
- constructor(sink: SessionEventSink, recordLifecycle: (sessionId: string, event: SessionEventPayload) => Promise<boolean>, recordActiveTurn: (event: SessionLiveEvent) => void, hasStarted: (commandId: string, sessionId: string) => boolean);
11
+ constructor(sink: SessionEventSink, recordLifecycle: (sessionId: string, event: SessionEventPayload) => Promise<boolean>, recordActiveTurn: (event: SessionLiveEvent) => void, executions: ExecutionProgress);
10
12
  readonly requested: (command: SessionPromptCommand) => void;
11
- /** Metadata for an execution already claimed by the receipt owner. */
12
- readonly started: (sessionId: string, commandId: string, attemptId: string, epoch: string, disposition: string) => {
13
+ /** The lifecycle metadata the Agent session records when it starts this claimed command. */
14
+ readonly lifecycle: (sessionId: string, commandId: string, attemptId: string, epoch: string, disposition: string) => {
13
15
  readonly attemptId: string;
14
16
  readonly content: readonly ContentBlock[];
15
17
  readonly disposition?: string;
@@ -22,8 +24,10 @@ export declare class PromptLifecycle {
22
24
  readonly replayOutcome: (sessionId: string, event: SessionEventPayload) => Promise<void>;
23
25
  readonly queueChanged: (sessionId: string) => Promise<void>;
24
26
  readonly completed: (sessionId: string, commandId: string, stopReason: string) => Promise<void>;
25
- readonly failed: (sessionId: string, commandId: string, code: string, message: string) => Promise<void>;
27
+ /** Settles a failed command; whether it failed before or after starting is its receipt's fact. */
28
+ readonly failed: (sessionId: string, commandId: string, attemptId: string, code: string, message: string) => Promise<void>;
26
29
  readonly promptRequestRecovery: (sessionId: string) => PromptRequestRecovery;
27
30
  }
28
31
  export declare function settleAbandonedTurn(projection: PromptLifecycle, operations: ExecutionReceipts, cancellation: SessionCancelCommand): Promise<void>;
32
+ export {};
29
33
  //# sourceMappingURL=prompt-lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/prompt/prompt-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAgBvE,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACzE;AA8BD,qBAAa,eAAe;;IASxB,YACI,IAAI,EAAE,gBAAgB,EACtB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,EACpF,gBAAgB,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,EACnD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,EAMhE;IAED,QAAQ,CAAC,SAAS,YAAa,oBAAoB,KAAG,IAAI,CAaxD;IAEF,sEAAsE;IACtE,QAAQ,CAAC,OAAO,cACD,MAAM,aACN,MAAM,aACN,MAAM,SACV,MAAM,eACA,MAAM,KACpB;QACC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;QAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;QACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KACrC,CAaC;IAEF,QAAQ,CAAC,MAAM,aAAc,gBAAgB,KAAG,IAAI,CAsBlD;IAEF,QAAQ,CAAC,eAAe,cAAe,MAAM,aAAa,MAAM,KAAG,IAAI,CAyBrE;IAEF,QAAQ,CAAC,aAAa,cAAqB,MAAM,SAAS,mBAAmB,KAAG,OAAO,CAAC,IAAI,CAAC,CAM3F;IAEF,QAAQ,CAAC,YAAY,cAAqB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAK9D;IAEF,QAAQ,CAAC,SAAS,cAAqB,MAAM,aAAa,MAAM,cAAc,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAsBlG;IAEF,QAAQ,CAAC,MAAM,cAAqB,MAAM,aAAa,MAAM,QAAQ,MAAM,WAAW,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAY1G;IAEF,QAAQ,CAAC,qBAAqB,cAAe,MAAM,KAAG,qBAAqB,CASxE;CACN;AAED,wBAAsB,mBAAmB,CACrC,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,oBAAoB,GACnC,OAAO,CAAC,IAAI,CAAC,CAkBf"}
1
+ {"version":3,"file":"prompt-lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/prompt/prompt-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,YAAY,EACZ,sBAAsB,EACtB,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAgBvE,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,2BAA2B,EAAE,CAAC;CACzE;AA8BD,iFAAiF;AACjF,KAAK,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,qBAAqB,CAAC,CAAC;AAEvF,qBAAa,eAAe;;IAUxB,YACI,IAAI,EAAE,gBAAgB,EACtB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,EACpF,gBAAgB,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,EACnD,UAAU,EAAE,iBAAiB,EAMhC;IAED,QAAQ,CAAC,SAAS,YAAa,oBAAoB,KAAG,IAAI,CAaxD;IAEF,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,cACH,MAAM,aACN,MAAM,aACN,MAAM,SACV,MAAM,eACA,MAAM,KACpB;QACC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;QAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;QACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KACrC,CAaC;IAEF,QAAQ,CAAC,MAAM,aAAc,gBAAgB,KAAG,IAAI,CAiBlD;IAEF,QAAQ,CAAC,eAAe,cAAe,MAAM,aAAa,MAAM,KAAG,IAAI,CAyBrE;IAEF,QAAQ,CAAC,aAAa,cAAqB,MAAM,SAAS,mBAAmB,KAAG,OAAO,CAAC,IAAI,CAAC,CAM3F;IAEF,QAAQ,CAAC,YAAY,cAAqB,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAK9D;IAEF,QAAQ,CAAC,SAAS,cAAqB,MAAM,aAAa,MAAM,cAAc,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAsBlG;IAEF,kGAAkG;IAClG,QAAQ,CAAC,MAAM,cACA,MAAM,aACN,MAAM,aACN,MAAM,QACX,MAAM,WACH,MAAM,KAChB,OAAO,CAAC,IAAI,CAAC,CAcd;IAEF,QAAQ,CAAC,qBAAqB,cAAe,MAAM,KAAG,qBAAqB,CAYxE;CACN;AAED,wBAAsB,mBAAmB,CACrC,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EAAE,oBAAoB,GACnC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -1,4 +1,4 @@
1
- import { SESSION_CLOSED_ERROR_CODE } from "@moxt-ai/mobius-sdk/protocol";
1
+ import { isPromptTerminal, SESSION_CLOSED_ERROR_CODE } from "@moxt-ai/mobius-sdk/protocol";
2
2
  import { isTextPromptResourceMediaType } from "./prompt-artifacts.js";
3
3
  function promptContent(command) {
4
4
  const content = [];
@@ -27,16 +27,17 @@ function promptContent(command) {
27
27
  }
28
28
  export class PromptLifecycle {
29
29
  #sink;
30
+ /** Terminal events held until their command's admission and execution state are released. */
30
31
  #terminal = new Map();
31
32
  #publications = new Map();
32
33
  #queued = new Map();
33
34
  #recordActiveTurn;
34
- #hasStarted;
35
+ #executions;
35
36
  #recordLifecycle;
36
- constructor(sink, recordLifecycle, recordActiveTurn, hasStarted) {
37
+ constructor(sink, recordLifecycle, recordActiveTurn, executions) {
37
38
  this.#recordLifecycle = recordLifecycle;
38
39
  this.#recordActiveTurn = recordActiveTurn;
39
- this.#hasStarted = hasStarted;
40
+ this.#executions = executions;
40
41
  this.#sink = sink;
41
42
  }
42
43
  requested = (command) => {
@@ -53,8 +54,8 @@ export class PromptLifecycle {
53
54
  ...(command.targetCommandId.length === 0 ? {} : { targetCommandId: command.targetCommandId }),
54
55
  });
55
56
  };
56
- /** Metadata for an execution already claimed by the receipt owner. */
57
- started = (sessionId, commandId, attemptId, epoch, disposition) => {
57
+ /** The lifecycle metadata the Agent session records when it starts this claimed command. */
58
+ lifecycle = (sessionId, commandId, attemptId, epoch, disposition) => {
58
59
  const request = this.#queued.get(commandId);
59
60
  if (request?.sessionId === sessionId) {
60
61
  return {
@@ -71,10 +72,7 @@ export class PromptLifecycle {
71
72
  record = (recorded) => {
72
73
  this.#recordActiveTurn(recorded);
73
74
  const sessionId = recorded.sessionId;
74
- if (recorded.type === "lifecycle-metadata" &&
75
- (recorded.payload.kind === "prompt.completed" ||
76
- recorded.payload.kind === "prompt.failed" ||
77
- recorded.payload.kind === "prompt.failed-before-start")) {
75
+ if (recorded.type === "lifecycle-metadata" && isPromptTerminal(recorded.payload)) {
78
76
  // Publish termination after prompt admission and execution state are settled.
79
77
  this.#terminal.set(recorded.payload.commandId, recorded);
80
78
  const pending = this.#publications.get(sessionId) ?? [];
@@ -129,7 +127,7 @@ export class PromptLifecycle {
129
127
  };
130
128
  completed = async (sessionId, commandId, stopReason) => {
131
129
  const request = this.#queued.get(commandId);
132
- if (request?.sessionId !== sessionId || this.#terminal.has(commandId)) {
130
+ if (request?.sessionId !== sessionId || this.#executions.isTerminalExecution(commandId, sessionId)) {
133
131
  return;
134
132
  }
135
133
  const recorded = await this.#recordLifecycle(sessionId, {
@@ -138,21 +136,24 @@ export class PromptLifecycle {
138
136
  kind: "prompt.completed",
139
137
  commandId,
140
138
  stopReason,
141
- ...(this.#hasStarted(commandId, sessionId) ? {} : { execution: "not-started" }),
139
+ ...(this.#executions.hasStarted(commandId, sessionId) ? {} : { execution: "not-started" }),
142
140
  },
143
141
  });
144
142
  if (!recorded) {
145
143
  this.#sink.publishOperationFailure(sessionId, commandId, "cancelled", "The prompt was cancelled before execution");
146
144
  }
147
145
  };
148
- failed = async (sessionId, commandId, code, message) => {
146
+ /** Settles a failed command; whether it failed before or after starting is its receipt's fact. */
147
+ failed = async (sessionId, commandId, attemptId, code, message) => {
149
148
  const request = this.#queued.get(commandId);
150
- if (request?.sessionId !== sessionId || this.#terminal.has(commandId)) {
149
+ if (request?.sessionId !== sessionId || this.#executions.isTerminalExecution(commandId, sessionId)) {
151
150
  return;
152
151
  }
153
152
  const recorded = await this.#recordLifecycle(sessionId, {
154
153
  type: "lifecycle-metadata",
155
- payload: { kind: "prompt.failed-before-start", commandId, code, message },
154
+ payload: this.#executions.hasStarted(commandId, sessionId)
155
+ ? { kind: "prompt.failed", attemptId, commandId, code, message }
156
+ : { kind: "prompt.failed-before-start", commandId, code, message },
156
157
  });
157
158
  if (!recorded || code === SESSION_CLOSED_ERROR_CODE) {
158
159
  this.#sink.publishOperationFailure(sessionId, commandId, code, message);
@@ -160,7 +161,7 @@ export class PromptLifecycle {
160
161
  };
161
162
  promptRequestRecovery = (sessionId) => ({
162
163
  queuedPromptRequests: [...this.#queued.values()]
163
- .filter((request) => request.sessionId === sessionId && !this.#hasStarted(request.commandId, sessionId))
164
+ .filter((request) => request.sessionId === sessionId && !this.#executions.hasStarted(request.commandId, sessionId))
164
165
  .map(({ commandId, content, disposition, targetCommandId }) => ({
165
166
  commandId,
166
167
  content,
@@ -180,7 +181,7 @@ export async function settleAbandonedTurn(projection, operations, cancellation)
180
181
  console.warn("Mobius daemon ignored cancellation for an inactive turn");
181
182
  return;
182
183
  }
183
- await projection.failed(cancellation.sessionId, cancellation.commandId, "agent_execution_abandoned", "The local Agent execution was abandoned before it completed");
184
+ await projection.failed(cancellation.sessionId, cancellation.commandId, attemptId, "agent_execution_abandoned", "The local Agent execution was abandoned before it completed");
184
185
  projection.publishTerminal(cancellation.sessionId, cancellation.commandId);
185
186
  }
186
187
  //# sourceMappingURL=prompt-lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-lifecycle.js","sourceRoot":"","sources":["../../../../src/engine/session/prompt/prompt-lifecycle.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAmBtE,SAAS,aAAa,CAAC,OAA6B;IAChD,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QAC3C,OAAO,CAAC,IAAI,CACR,UAAU,CAAC,IAAI,KAAK,OAAO;YACvB,CAAC,CAAC;gBACI,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,QAAQ,EAAE,UAAU,CAAC,UAAU;gBAC/B,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE,UAAU,CAAC,GAAG;aACtB;YACH,CAAC,CAAC;gBACI,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,QAAQ,EAAE,6BAA6B,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;gBAChF,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,WAAW,EAAE,UAAU,CAAC,UAAU;gBAClC,IAAI,EAAE,mBAAmB;gBACzB,GAAG,EAAE,UAAU,CAAC,GAAG;aACtB,CACV,CAAC;IACN,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,eAAe;IACf,KAAK,CAAmB;IACxB,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IAChD,aAAa,GAAG,IAAI,GAAG,EAA8B,CAAC;IACtD,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IACjD,iBAAiB,CAAoC;IACrD,WAAW,CAAoD;IAE/D,gBAAgB,CAAsE;IAC/F,YACI,IAAsB,EACtB,eAAoF,EACpF,gBAAmD,EACnD,UAA6D;QAE7D,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,CAAC;IAEQ,SAAS,GAAG,CAAC,OAA6B,EAAQ,EAAE;QACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC;YAC/B,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;YAClF,OAAO,EAAE;gBACL,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;aACzD;YACD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;SAChG,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,sEAAsE;IAC7D,OAAO,GAAG,CACf,SAAiB,EACjB,SAAiB,EACjB,SAAiB,EACjB,KAAa,EACb,WAAmB,EAQrB,EAAE;QACA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO;gBACH,SAAS;gBACT,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,WAAW;gBACX,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;aACjG,CAAC;QACN,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC/E,CAAC,CAAC;IAEO,MAAM,GAAG,CAAC,QAA0B,EAAQ,EAAE;QACnD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,IACI,QAAQ,CAAC,IAAI,KAAK,oBAAoB;YACtC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,kBAAkB;gBACzC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,eAAe;gBACzC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,4BAA4B,CAAC,EAC7D,CAAC;YACC,8EAA8E;YAC9E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3C,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACL,CAAC,CAAC;IAEO,eAAe,GAAG,CAAC,SAAiB,EAAE,SAAiB,EAAQ,EAAE;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrB,MAAM;gBACV,CAAC;gBACD,IACI,IAAI,CAAC,IAAI,KAAK,oBAAoB;oBAClC,WAAW,IAAI,IAAI,CAAC,OAAO;oBAC3B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAC5C,CAAC;oBACC,MAAM;gBACV,CAAC;gBACD,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC;IAEO,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAE,KAA0B,EAAiB,EAAE;QAC5F,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzE,OAAO;QACX,CAAC;QACD,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEO,YAAY,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;QAC/D,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YACnC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE;SAC7C,CAAC,CAAC;IACP,CAAC,CAAC;IAEO,SAAS,GAAG,KAAK,EAAE,SAAiB,EAAE,SAAiB,EAAE,UAAkB,EAAiB,EAAE;QACnG,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YACpD,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE;gBACL,IAAI,EAAE,kBAAkB;gBACxB,SAAS;gBACT,UAAU;gBACV,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAsB,EAAE,CAAC;aAC3F;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAC9B,SAAS,EACT,SAAS,EACT,WAAW,EACX,2CAA2C,CAC9C,CAAC;QACN,CAAC;IACL,CAAC,CAAC;IAEO,MAAM,GAAG,KAAK,EAAE,SAAiB,EAAE,SAAiB,EAAE,IAAY,EAAE,OAAe,EAAiB,EAAE;QAC3G,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,OAAO;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;YACpD,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;SAC5E,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;IACL,CAAC,CAAC;IAEO,qBAAqB,GAAG,CAAC,SAAiB,EAAyB,EAAE,CAAC,CAAC;QAC5E,oBAAoB,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;aAC3C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;aACvG,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC;YAC5D,SAAS;YACT,OAAO;YACP,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;YACrD,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;SAChE,CAAC,CAAC;KACV,CAAC,CAAC;CACN;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,UAA2B,EAC3B,UAA6B,EAC7B,YAAkC;IAElC,MAAM,OAAO,GAAG,UAAU,CAAC,iCAAiC,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IAC7G,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAAG,UAAU,CAAC,sBAAsB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACpG,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO;IACX,CAAC;IACD,MAAM,UAAU,CAAC,MAAM,CACnB,YAAY,CAAC,SAAS,EACtB,YAAY,CAAC,SAAS,EACtB,2BAA2B,EAC3B,6DAA6D,CAChE,CAAC;IACF,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"prompt-lifecycle.js","sourceRoot":"","sources":["../../../../src/engine/session/prompt/prompt-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  /**
2
- * The prompt executing in each Session. Cancellation names the command it stops and never outlives that command's
3
- * execution; a command cancelled before its execution begins is refused by its own turn instead.
2
+ * The prompt each Session's Agent process is driving, and the cancellation sent to it. Session admission is the only
3
+ * owner of whether a Session is busy and admits one execution at a time, so this records that execution without
4
+ * deciding it again. Cancellation names the command it stops and never outlives that command's execution; a command
5
+ * cancelled before its execution begins is withdrawn by its own turn instead.
4
6
  */
5
7
  export declare class ActiveExecutions {
6
8
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"active-executions.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-executions.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,qBAAa,gBAAgB;;IAEzB,QAAQ,CAAC,OAAO,OAAQ,MAAM,KAAG,MAAM,GAAG,SAAS,CAAqC;IACxF,QAAQ,CAAC,YAAY,OAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAG7D;IACF,QAAQ,CAAC,MAAM,OAAQ,MAAM,KAAG,OAAO,CAA0B;IACjE,QAAQ,CAAC,KAAK,OAAQ,MAAM,aAAa,MAAM,KAAG,IAAI,CAKpD;IACF,QAAQ,CAAC,MAAM,OAAQ,MAAM,aAAa,MAAM,QAAQ,MAAM,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAYzF;IACF,QAAQ,CAAC,MAAM,OAAQ,MAAM,aAAa,MAAM,KAAG,IAAI,CAIrD;CACL"}
1
+ {"version":3,"file":"active-executions.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-executions.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,qBAAa,gBAAgB;;IAEzB,QAAQ,CAAC,OAAO,OAAQ,MAAM,KAAG,MAAM,GAAG,SAAS,CAAqC;IACxF,QAAQ,CAAC,YAAY,OAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAG7D;IACF,QAAQ,CAAC,MAAM,OAAQ,MAAM,KAAG,OAAO,CAA0B;IACjE,QAAQ,CAAC,KAAK,OAAQ,MAAM,aAAa,MAAM,KAAG,IAAI,CAEpD;IACF,QAAQ,CAAC,MAAM,OAAQ,MAAM,aAAa,MAAM,QAAQ,MAAM,OAAO,CAAC,IAAI,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAYzF;IACF,QAAQ,CAAC,MAAM,OAAQ,MAAM,aAAa,MAAM,KAAG,IAAI,CAIrD;CACL"}
@@ -1,7 +1,8 @@
1
- import { AcpExecutionError } from "../../acp/acp-error.js";
2
1
  /**
3
- * The prompt executing in each Session. Cancellation names the command it stops and never outlives that command's
4
- * execution; a command cancelled before its execution begins is refused by its own turn instead.
2
+ * The prompt each Session's Agent process is driving, and the cancellation sent to it. Session admission is the only
3
+ * owner of whether a Session is busy and admits one execution at a time, so this records that execution without
4
+ * deciding it again. Cancellation names the command it stops and never outlives that command's execution; a command
5
+ * cancelled before its execution begins is withdrawn by its own turn instead.
5
6
  */
6
7
  export class ActiveExecutions {
7
8
  #entries = new Map();
@@ -12,9 +13,6 @@ export class ActiveExecutions {
12
13
  };
13
14
  isBusy = (id) => this.#entries.has(id);
14
15
  begin = (id, commandId) => {
15
- if (this.#entries.has(id)) {
16
- throw new AcpExecutionError("Another prompt is already running in this conversation", {}, "session_busy");
17
- }
18
16
  this.#entries.set(id, { kind: "running", commandId });
19
17
  };
20
18
  cancel = (id, commandId, stop) => {
@@ -1 +1 @@
1
- {"version":3,"file":"active-executions.js","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-executions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAChB,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IACxC,OAAO,GAAG,CAAC,EAAU,EAAsB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IAC/E,YAAY,GAAG,CAAC,EAAU,EAA6B,EAAE;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,KAAK,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC,CAAC;IACO,MAAM,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,KAAK,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAQ,EAAE;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,iBAAiB,CAAC,wDAAwD,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;QAC9G,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC;IACO,MAAM,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAE,IAAyB,EAAiB,EAAE;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9E,OAAO,UAAU,CAAC,OAAO,CAAC;IAC9B,CAAC,CAAC;IACO,MAAM,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAQ,EAAE;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC,CAAC;CACL"}
1
+ {"version":3,"file":"active-executions.js","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-executions.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;IAChB,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IACxC,OAAO,GAAG,CAAC,EAAU,EAAsB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC;IAC/E,YAAY,GAAG,CAAC,EAAU,EAA6B,EAAE;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,OAAO,KAAK,EAAE,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC,CAAC;IACO,MAAM,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACxD,KAAK,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAQ,EAAE;QACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC;IACO,MAAM,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAE,IAAyB,EAAiB,EAAE;QAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QACD,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;QACjD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9E,OAAO,UAAU,CAAC,OAAO,CAAC;IAC9B,CAAC,CAAC;IACO,MAAM,GAAG,CAAC,EAAU,EAAE,SAAiB,EAAQ,EAAE;QACtD,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC,CAAC;CACL"}
@@ -1,4 +1,4 @@
1
- import { type NativeSessionResult, type SessionCancelCommand, type SessionElicitationRequestedEvent, type SessionElicitationResolvedEvent, type SessionPermissionRequestedEvent, type SessionPermissionResolvedEvent, type SessionPromptCommand, type SessionPromptDispositionCommand } from "@moxt-ai/mobius-sdk/protocol";
1
+ import { type NativeSessionResult, type SessionElicitationRequestedEvent, type SessionElicitationResolvedEvent, type SessionPermissionRequestedEvent, type SessionPermissionResolvedEvent, type SessionPromptCommand, type SessionPromptDispositionCommand } from "@moxt-ai/mobius-sdk/protocol";
2
2
  type ActiveTurnSnapshot = Extract<NativeSessionResult, {
3
3
  readonly action: "active-turn";
4
4
  }>["turn"];
@@ -16,24 +16,28 @@ export declare class ActiveRuntimeTurn {
16
16
  #private;
17
17
  readonly attemptId: string;
18
18
  readonly command: SessionPromptCommand;
19
- constructor(command: SessionPromptCommand, attemptId: string);
19
+ readonly epoch: string & import("zod").$brand<"Identifier">;
20
+ /** `started` reads the command's execution receipt, the single owner of whether the command started. */
21
+ constructor(command: SessionPromptCommand, attemptId: string, started: () => boolean);
20
22
  readonly enqueue: () => void;
21
23
  readonly isQueued: () => boolean;
24
+ /** Whether the command's execution was handed to the Agent. */
25
+ readonly hasStarted: () => boolean;
22
26
  readonly abortRuntime: () => void;
23
27
  readonly finish: () => void;
24
- readonly activate: (execution: string) => {
25
- readonly epoch: string;
26
- readonly sequence: 0;
27
- };
28
28
  readonly promoteQueuedPrompt: (command: SessionPromptDispositionCommand) => "accepted" | "already-started" | "unavailable";
29
29
  readonly admit: () => string;
30
30
  readonly queuePromotion: () => Promise<void> | null;
31
31
  readonly effectiveDisposition: () => string;
32
+ /** A steering prompt joins the execution of the turn it steers; every other prompt owns its execution. */
33
+ readonly execution: () => string;
32
34
  readonly recordEvent: (event: RecordedSessionEvent) => RecordedSessionEvent;
33
- readonly recordSteeringPrompt: (command: SessionPromptCommand) => boolean;
34
35
  readonly snapshot: () => ActiveTurnSnapshot;
35
- readonly matches: (cancellation: SessionCancelCommand) => boolean;
36
36
  readonly matchesInteraction: (interactionId: string, sessionId: string) => boolean;
37
+ /**
38
+ * Before the command starts, cancellation withdraws it by aborting its own admission and preparation. Once it
39
+ * started, the Agent execution it belongs to must be asked to stop.
40
+ */
37
41
  readonly requestCancellation: () => TurnCancellation;
38
42
  readonly cancellationRequested: () => boolean;
39
43
  get signal(): AbortSignal;
@@ -1 +1 @@
1
- {"version":3,"file":"active-turn.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-turn.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,mBAAmB,EAKxB,KAAK,oBAAoB,EACzB,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EAEzB,KAAK,+BAA+B,EACvC,MAAM,8BAA8B,CAAC;AAEtC,KAAK,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnG,yEAAyE;AACzE,MAAM,MAAM,oBAAoB,GAC1B,gCAAgC,GAChC,+BAA+B,GAC/B,+BAA+B,GAC/B,8BAA8B,CAAC;AAUrC,MAAM,MAAM,gBAAgB,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,qBAAa,iBAAiB;;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IAYvC,YAAY,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAK3D;IAED,QAAQ,CAAC,OAAO,QAAO,IAAI,CAKzB;IAEF,QAAQ,CAAC,QAAQ,QAAO,OAAO,CAGM;IAErC,QAAQ,CAAC,YAAY,QAAO,IAAI,CAE9B;IAEF,QAAQ,CAAC,MAAM,QAAO,IAAI,CAExB;IAEF,QAAQ,CAAC,QAAQ,cAAe,MAAM,KAAG;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAA;KAAE,CAGvF;IAEF,QAAQ,CAAC,mBAAmB,YACf,+BAA+B,KACzC,UAAU,GAAG,iBAAiB,GAAG,aAAa,CAwB/C;IAEF,QAAQ,CAAC,KAAK,QAAO,MAAM,CAMzB;IAEF,QAAQ,CAAC,cAAc,QAAO,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAKhD;IAEF,QAAQ,CAAC,oBAAoB,QAAO,MAAM,CACyD;IAEnG,QAAQ,CAAC,WAAW,UAAW,oBAAoB,KAAG,oBAAoB,CAgBxE;IAEF,QAAQ,CAAC,oBAAoB,YAAa,oBAAoB,KAAG,OAAO,CAMtE;IAEF,QAAQ,CAAC,QAAQ,QAAO,kBAAkB,CAWxC;IAEF,QAAQ,CAAC,OAAO,iBAAkB,oBAAoB,KAAG,OAAO,CAC2C;IAE3G,QAAQ,CAAC,kBAAkB,kBAAmB,MAAM,aAAa,MAAM,KAAG,OAAO,CACc;IAE/F,QAAQ,CAAC,mBAAmB,QAAO,gBAAgB,CAUjD;IAEF,QAAQ,CAAC,qBAAqB,QAAO,OAAO,CAAgC;IAE5E,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9B;CACJ"}
1
+ {"version":3,"file":"active-turn.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-turn.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,mBAAmB,EAKxB,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACpC,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,KAAK,oBAAoB,EAEzB,KAAK,+BAA+B,EACvC,MAAM,8BAA8B,CAAC;AAEtC,KAAK,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnG,yEAAyE;AACzE,MAAM,MAAM,oBAAoB,GAC1B,gCAAgC,GAChC,+BAA+B,GAC/B,+BAA+B,GAC/B,8BAA8B,CAAC;AAYrC,MAAM,MAAM,gBAAgB,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,qBAAa,iBAAiB;;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,KAAK,8CAAkC;IAYhD,wGAAwG;IACxG,YAAY,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAAO,EAKnF;IAED,QAAQ,CAAC,OAAO,QAAO,IAAI,CAKzB;IAEF,QAAQ,CAAC,QAAQ,QAAO,OAAO,CAIM;IAErC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,QAAO,OAAO,CAAoB;IAErD,QAAQ,CAAC,YAAY,QAAO,IAAI,CAE9B;IAEF,QAAQ,CAAC,MAAM,QAAO,IAAI,CAExB;IAEF,QAAQ,CAAC,mBAAmB,YACf,+BAA+B,KACzC,UAAU,GAAG,iBAAiB,GAAG,aAAa,CAsB/C;IAEF,QAAQ,CAAC,KAAK,QAAO,MAAM,CAMzB;IAEF,QAAQ,CAAC,cAAc,QAAO,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAKhD;IAEF,QAAQ,CAAC,oBAAoB,QAAO,MAAM,CAUxC;IAEF,0GAA0G;IAC1G,QAAQ,CAAC,SAAS,QAAO,MAAM,CAGE;IAEjC,QAAQ,CAAC,WAAW,UAAW,oBAAoB,KAAG,oBAAoB,CAgBxE;IAEF,QAAQ,CAAC,QAAQ,QAAO,kBAAkB,CAWxC;IAEF,QAAQ,CAAC,kBAAkB,kBAAmB,MAAM,aAAa,MAAM,KAAG,OAAO,CACc;IAE/F;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,QAAO,gBAAgB,CAUjD;IAEF,QAAQ,CAAC,qBAAqB,QAAO,OAAO,CAAgC;IAE5E,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,IAAI,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAE9B;CACJ"}
@@ -3,58 +3,57 @@ import { decodeIdentifier, SESSION_ELICITATION_REQUESTED_KIND, SESSION_ELICITATI
3
3
  export class ActiveRuntimeTurn {
4
4
  attemptId;
5
5
  command;
6
+ epoch = decodeIdentifier(randomUUID());
6
7
  #controller;
7
8
  #finished = Promise.withResolvers();
9
+ #started;
8
10
  #cancellationRequested = false;
9
- #dispatch;
11
+ #admission = { kind: "waiting" };
10
12
  #sequence = 0;
11
13
  #interaction = null;
12
- #epoch = decodeIdentifier(randomUUID());
13
- constructor(command, attemptId) {
14
+ /** `started` reads the command's execution receipt, the single owner of whether the command started. */
15
+ constructor(command, attemptId, started) {
14
16
  this.attemptId = attemptId;
15
17
  this.command = command;
16
18
  this.#controller = new AbortController();
17
- this.#dispatch = { kind: "pending" };
19
+ this.#started = started;
18
20
  }
19
21
  enqueue = () => {
20
- if (this.#dispatch.kind !== "pending") {
21
- throw new Error("Only a pending prompt can enter the queue");
22
+ if (this.#admission.kind !== "waiting") {
23
+ throw new Error("Only a waiting prompt can enter the queue");
22
24
  }
23
- this.#dispatch = { kind: "queued", promotion: Promise.withResolvers() };
25
+ this.#admission = { kind: "queued", promotion: Promise.withResolvers() };
24
26
  };
25
- isQueued = () => (this.#dispatch.kind === "queued" ||
26
- (this.#dispatch.kind === "admitted" && this.#dispatch.disposition === SessionPromptDisposition.Queue)) &&
27
+ isQueued = () => (this.#admission.kind === "queued" ||
28
+ (this.#admission.kind === "admitted" && this.#admission.disposition === SessionPromptDisposition.Queue)) &&
29
+ !this.#started() &&
27
30
  !this.#controller.signal.aborted;
31
+ /** Whether the command's execution was handed to the Agent. */
32
+ hasStarted = () => this.#started();
28
33
  abortRuntime = () => {
29
34
  this.#controller.abort();
30
35
  };
31
36
  finish = () => {
32
37
  this.#finished.resolve();
33
38
  };
34
- activate = (execution) => {
35
- this.#dispatch = { kind: "running", execution };
36
- return { epoch: this.#epoch, sequence: 0 };
37
- };
38
39
  promoteQueuedPrompt = (command) => {
39
40
  if (command.commandId !== this.command.commandId ||
40
41
  command.sessionId !== this.command.sessionId ||
41
42
  this.#controller.signal.aborted) {
42
43
  return "unavailable";
43
44
  }
44
- switch (this.#dispatch.kind) {
45
+ switch (this.#admission.kind) {
45
46
  case "queued": {
46
- const promotion = this.#dispatch.promotion;
47
- this.#dispatch = { kind: "promoted" };
47
+ const promotion = this.#admission.promotion;
48
+ this.#admission = { kind: "promoted" };
48
49
  promotion.resolve();
49
50
  return "accepted";
50
51
  }
51
52
  case "promoted":
52
53
  return "accepted";
53
54
  case "admitted":
54
- return this.#dispatch.disposition === SessionPromptDisposition.Steer ? "accepted" : "already-started";
55
- case "running":
56
- return "already-started";
57
- case "pending":
55
+ return this.#admission.disposition === SessionPromptDisposition.Steer ? "accepted" : "already-started";
56
+ case "waiting":
58
57
  return "unavailable";
59
58
  }
60
59
  };
@@ -62,16 +61,30 @@ export class ActiveRuntimeTurn {
62
61
  const disposition = this.effectiveDisposition();
63
62
  // Claim the dispatch before asynchronous Agent preparation so a late promotion
64
63
  // cannot change a disposition that execution has already selected.
65
- this.#dispatch = { kind: "admitted", disposition };
64
+ this.#admission = { kind: "admitted", disposition };
66
65
  return disposition;
67
66
  };
68
67
  queuePromotion = () => {
69
- if (this.#dispatch.kind === "queued") {
70
- return this.#dispatch.promotion.promise;
68
+ if (this.#admission.kind === "queued") {
69
+ return this.#admission.promotion.promise;
70
+ }
71
+ return this.#admission.kind === "promoted" ? Promise.resolve() : null;
72
+ };
73
+ effectiveDisposition = () => {
74
+ switch (this.#admission.kind) {
75
+ case "waiting":
76
+ case "queued":
77
+ return this.command.disposition;
78
+ case "promoted":
79
+ return SessionPromptDisposition.Steer;
80
+ case "admitted":
81
+ return this.#admission.disposition;
71
82
  }
72
- return this.#dispatch.kind === "promoted" ? Promise.resolve() : null;
73
83
  };
74
- effectiveDisposition = () => this.#dispatch.kind === "promoted" ? SessionPromptDisposition.Steer : this.command.disposition;
84
+ /** A steering prompt joins the execution of the turn it steers; every other prompt owns its execution. */
85
+ execution = () => this.effectiveDisposition() === SessionPromptDisposition.Steer
86
+ ? this.command.targetCommandId
87
+ : this.command.commandId;
75
88
  recordEvent = (event) => {
76
89
  if (event.sessionId !== this.command.sessionId ||
77
90
  ("commandId" in event && event.commandId !== this.command.commandId)) {
@@ -86,35 +99,33 @@ export class ActiveRuntimeTurn {
86
99
  }
87
100
  return event;
88
101
  };
89
- recordSteeringPrompt = (command) => {
90
- return (this.#dispatch.kind === "running" &&
91
- command.sessionId === this.command.sessionId &&
92
- command.targetCommandId === this.command.commandId);
93
- };
94
102
  snapshot = () => {
95
- if (this.#dispatch.kind !== "running") {
103
+ if (!this.#started()) {
96
104
  return null;
97
105
  }
98
106
  return {
99
107
  commandId: decodeIdentifier(this.command.commandId),
100
- epoch: this.#epoch,
108
+ epoch: this.epoch,
101
109
  interaction: this.#interaction,
102
110
  sequence: this.#sequence,
103
111
  state: "running",
104
112
  };
105
113
  };
106
- matches = (cancellation) => cancellation.commandId === this.command.commandId && cancellation.sessionId === this.command.sessionId;
107
114
  matchesInteraction = (interactionId, sessionId) => this.command.sessionId === sessionId && this.#interaction?.interactionId === interactionId;
115
+ /**
116
+ * Before the command starts, cancellation withdraws it by aborting its own admission and preparation. Once it
117
+ * started, the Agent execution it belongs to must be asked to stop.
118
+ */
108
119
  requestCancellation = () => {
109
120
  if (this.#cancellationRequested) {
110
121
  return { kind: "already-requested" };
111
122
  }
112
123
  this.#cancellationRequested = true;
113
- if (this.#dispatch.kind !== "running") {
114
- this.#controller.abort(new Error("The queued Agent turn was cancelled"));
124
+ if (!this.#started()) {
125
+ this.#controller.abort(new Error("The Agent turn was cancelled before it started"));
115
126
  return { kind: "pending" };
116
127
  }
117
- return { kind: "running", execution: this.#dispatch.execution };
128
+ return { kind: "running", execution: this.execution() };
118
129
  };
119
130
  cancellationRequested = () => this.#cancellationRequested;
120
131
  get signal() {
@@ -1 +1 @@
1
- {"version":3,"file":"active-turn.js","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-turn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACH,gBAAgB,EAEhB,kCAAkC,EAClC,iCAAiC,EACjC,iCAAiC,EACjC,gCAAgC,EAOhC,wBAAwB,GAE3B,MAAM,8BAA8B,CAAC;AAwBtC,MAAM,OAAO,iBAAiB;IACjB,SAAS,CAAS;IAClB,OAAO,CAAuB;IAC9B,WAAW,CAAkB;IAC7B,SAAS,GAAG,OAAO,CAAC,aAAa,EAAQ,CAAC;IACnD,sBAAsB,GAAG,KAAK,CAAC;IAC/B,SAAS,CAAoB;IAC7B,SAAS,GAAG,CAAC,CAAC;IACd,YAAY,GAGD,IAAI,CAAC;IACP,MAAM,GAAG,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;IAEjD,YAAY,OAA6B,EAAE,SAAiB;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACzC,CAAC;IAEQ,OAAO,GAAG,GAAS,EAAE;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,aAAa,EAAQ,EAAE,CAAC;IAClF,CAAC,CAAC;IAEO,QAAQ,GAAG,GAAY,EAAE,CAC9B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1G,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;IAE5B,YAAY,GAAG,GAAS,EAAE;QAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,MAAM,GAAG,GAAS,EAAE;QACzB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEO,QAAQ,GAAG,CAAC,SAAiB,EAAoD,EAAE;QACxF,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAChD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC/C,CAAC,CAAC;IAEO,mBAAmB,GAAG,CAC3B,OAAwC,EACM,EAAE;QAChD,IACI,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS;YAC5C,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS;YAC5C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EACjC,CAAC;YACC,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1B,KAAK,QAAQ,EAAE,CAAC;gBACZ,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;gBAC3C,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBACtC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,UAAU,CAAC;YACtB,CAAC;YACD,KAAK,UAAU;gBACX,OAAO,UAAU,CAAC;YACtB,KAAK,UAAU;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;YAC1G,KAAK,SAAS;gBACV,OAAO,iBAAiB,CAAC;YAC7B,KAAK,SAAS;gBACV,OAAO,aAAa,CAAC;QAC7B,CAAC;IACL,CAAC,CAAC;IAEO,KAAK,GAAG,GAAW,EAAE;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAChD,+EAA+E;QAC/E,mEAAmE;QACnE,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QACnD,OAAO,WAAW,CAAC;IACvB,CAAC,CAAC;IAEO,cAAc,GAAG,GAAyB,EAAE;QACjD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;QAC5C,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACzE,CAAC,CAAC;IAEO,oBAAoB,GAAG,GAAW,EAAE,CACzC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAE1F,WAAW,GAAG,CAAC,KAA2B,EAAwB,EAAE;QACzE,IACI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS;YAC1C,CAAC,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EACtE,CAAC;YACC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,iCAAiC,IAAI,KAAK,CAAC,IAAI,KAAK,kCAAkC,EAAE,CAAC;YACxG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,IACH,CAAC,KAAK,CAAC,IAAI,KAAK,gCAAgC,IAAI,KAAK,CAAC,IAAI,KAAK,iCAAiC,CAAC;YACrG,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK,KAAK,CAAC,aAAa,EAC1D,CAAC;YACC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,CAAC;IAEO,oBAAoB,GAAG,CAAC,OAA6B,EAAW,EAAE;QACvE,OAAO,CACH,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS;YACjC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS;YAC5C,OAAO,CAAC,eAAe,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CACrD,CAAC;IACN,CAAC,CAAC;IAEO,QAAQ,GAAG,GAAuB,EAAE;QACzC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO;YACH,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACnD,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,WAAW,EAAE,IAAI,CAAC,YAAY;YAC9B,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,KAAK,EAAE,SAAS;SACnB,CAAC;IACN,CAAC,CAAC;IAEO,OAAO,GAAG,CAAC,YAAkC,EAAW,EAAE,CAC/D,YAAY,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAElG,kBAAkB,GAAG,CAAC,aAAqB,EAAE,SAAiB,EAAW,EAAE,CAChF,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,KAAK,aAAa,CAAC;IAEtF,mBAAmB,GAAG,GAAqB,EAAE;QAClD,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;YACzE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IACpE,CAAC,CAAC;IAEO,qBAAqB,GAAG,GAAY,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC;IAE5E,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACnC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;IAClC,CAAC;CACJ"}
1
+ {"version":3,"file":"active-turn.js","sourceRoot":"","sources":["../../../../src/engine/session/turn/active-turn.ts"],"names":[],"mappings":"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"}
@@ -31,14 +31,18 @@ export declare class ExecutionReceipts {
31
31
  readonly hasStarted: (commandId: string, sessionId: string) => boolean;
32
32
  /** Reserves an unseen command for cancellation before a delayed prompt can claim its identity. */
33
33
  readonly recordCancellationBeforeAdmission: (commandId: string, sessionId: string) => SessionEventPayload | undefined;
34
- readonly recordOutcome: (event: SessionLiveEvent) => void;
34
+ /**
35
+ * Receipts follow their command's recorded lifecycle. `prompt.started` is recorded where the command is handed
36
+ * to the Agent, so the started mark and the event clients see are one transition; a terminal event settles the
37
+ * receipt. Nothing else marks a command started.
38
+ */
39
+ readonly record: (event: SessionLiveEvent) => void;
35
40
  readonly recover: () => readonly {
36
41
  readonly sessionId: string;
37
42
  readonly event: SessionEventPayload;
38
43
  readonly recordedAt: string;
39
44
  }[];
40
45
  readonly claimExecution: (commandId: string, sessionId: string, commandJson: string) => RuntimeExecutionReceipt;
41
- readonly markExecutionStarted: (commandId: string) => void;
42
46
  /** Only commands without a terminal result can still be cancelled. */
43
47
  readonly findUnsettledAttemptId: (commandId: string, sessionId: string) => string | null;
44
48
  readonly isTerminalExecution: (commandId: string, sessionId: string) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-receipts.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/turn/execution-receipts.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,eAAe,EAGpB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACxB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAI9F,MAAM,MAAM,uBAAuB,GAC7B,QAAQ,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;CACpB,CAAC,GACF,QAAQ,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC5C,CAAC,GACF;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAmDnC,qBAAa,iBAAiB;;IAO1B,YAAY,KAAK,EAAE,qBAAqB,EAAE,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAsB,EAW3F;IAwCD,QAAQ,CAAC,aAAa,QAAO,IAAI,CAE/B;IACF,QAAQ,CAAC,OAAO,cAAe,MAAM,KAAG,mBAAmB,GAAG,SAAS,CAIrE;IACF,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,cAAe,MAAM,aAAa,MAAM,KAAG,eAAe,CA0BzE;IACF;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,cAAe,MAAM,KAAG,eAAe,GAAG,SAAS,CAiClE;IACF,uFAAuF;IACvF,QAAQ,CAAC,UAAU,cAAe,MAAM,aAAa,MAAM,KAAG,OAAO,CAMnE;IAEF,kGAAkG;IAClG,QAAQ,CAAC,iCAAiC,cAC3B,MAAM,aACN,MAAM,KAClB,mBAAmB,GAAG,SAAS,CAyChC;IACF,QAAQ,CAAC,aAAa,UAAW,gBAAgB,KAAG,IAAI,CA0BtD;IACF,QAAQ,CAAC,OAAO,QAAO,SAAS;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC/B,EAAE,CAwCD;IAEF,QAAQ,CAAC,cAAc,cAAe,MAAM,aAAa,MAAM,eAAe,MAAM,KAAG,uBAAuB,CA0C5G;IAEF,QAAQ,CAAC,oBAAoB,cAAe,MAAM,KAAG,IAAI,CAoBvD;IAEF,sEAAsE;IACtE,QAAQ,CAAC,sBAAsB,cAAe,MAAM,aAAa,MAAM,KAAG,MAAM,GAAG,IAAI,CAGrF;IAEF,QAAQ,CAAC,mBAAmB,cAAe,MAAM,aAAa,MAAM,KAAG,OAAO,CAG5E;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAGvB;CACL"}
1
+ {"version":3,"file":"execution-receipts.d.ts","sourceRoot":"","sources":["../../../../src/engine/session/turn/execution-receipts.ts"],"names":[],"mappings":"AACA,OAAO,EACH,KAAK,eAAe,EAIpB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACxB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AAI9F,MAAM,MAAM,uBAAuB,GAC7B,QAAQ,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;CACpB,CAAC,GACF,QAAQ,CAAC;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAAC;CAC5C,CAAC,GACF;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAmDnC,qBAAa,iBAAiB;;IAO1B,YAAY,KAAK,EAAE,qBAAqB,EAAE,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAsB,EAW3F;IAwCD,QAAQ,CAAC,aAAa,QAAO,IAAI,CAE/B;IACF,QAAQ,CAAC,OAAO,cAAe,MAAM,KAAG,mBAAmB,GAAG,SAAS,CAIrE;IACF,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,cAAe,MAAM,aAAa,MAAM,KAAG,eAAe,CAwBzE;IACF;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,cAAe,MAAM,KAAG,eAAe,GAAG,SAAS,CA+BlE;IACF,uFAAuF;IACvF,QAAQ,CAAC,UAAU,cAAe,MAAM,aAAa,MAAM,KAAG,OAAO,CAMnE;IAEF,kGAAkG;IAClG,QAAQ,CAAC,iCAAiC,cAC3B,MAAM,aACN,MAAM,KAClB,mBAAmB,GAAG,SAAS,CAyChC;IACF;;;;OAIG;IACH,QAAQ,CAAC,MAAM,UAAW,gBAAgB,KAAG,IAAI,CA8B/C;IACF,QAAQ,CAAC,OAAO,QAAO,SAAS;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;KAC/B,EAAE,CAwCD;IAEF,QAAQ,CAAC,cAAc,cAAe,MAAM,aAAa,MAAM,eAAe,MAAM,KAAG,uBAAuB,CA0C5G;IAEF,sEAAsE;IACtE,QAAQ,CAAC,sBAAsB,cAAe,MAAM,aAAa,MAAM,KAAG,MAAM,GAAG,IAAI,CAGrF;IAEF,QAAQ,CAAC,mBAAmB,cAAe,MAAM,aAAa,MAAM,KAAG,OAAO,CAG5E;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAGvB;CACL"}
@@ -1,5 +1,5 @@
1
1
  import { createHash, randomUUID } from "node:crypto";
2
- import { decodeKnownSessionEventPayload, encodeSessionCancelBeforeStartCommand, } from "@moxt-ai/mobius-sdk/protocol";
2
+ import { decodeKnownSessionEventPayload, encodeSessionCancelBeforeStartCommand, isPromptTerminal, } from "@moxt-ai/mobius-sdk/protocol";
3
3
  import { z } from "zod";
4
4
  const MAX_TERMINAL_RECEIPTS = 1_024;
5
5
  // Keep the execution claim after settlement: the outcome alone cannot decide replay safety.
@@ -107,7 +107,7 @@ export class ExecutionReceipts {
107
107
  return { state: "accepted" };
108
108
  }
109
109
  const outcome = this.outcome(commandId);
110
- if (outcome?.type !== "lifecycle-metadata") {
110
+ if (outcome?.type !== "lifecycle-metadata" || !isPromptTerminal(outcome.payload)) {
111
111
  return { state: "expired" };
112
112
  }
113
113
  switch (outcome.payload.kind) {
@@ -116,8 +116,6 @@ export class ExecutionReceipts {
116
116
  case "prompt.failed":
117
117
  case "prompt.failed-before-start":
118
118
  return { code: outcome.payload.code, state: "failed" };
119
- default:
120
- return { state: "expired" };
121
119
  }
122
120
  };
123
121
  /**
@@ -140,7 +138,7 @@ export class ExecutionReceipts {
140
138
  }
141
139
  }
142
140
  const outcome = last === undefined ? undefined : this.outcome(last);
143
- if (last === undefined || outcome?.type !== "lifecycle-metadata") {
141
+ if (last === undefined || outcome?.type !== "lifecycle-metadata" || !isPromptTerminal(outcome.payload)) {
144
142
  return undefined;
145
143
  }
146
144
  switch (outcome.payload.kind) {
@@ -154,8 +152,6 @@ export class ExecutionReceipts {
154
152
  message: outcome.payload.message,
155
153
  state: "failed",
156
154
  };
157
- default:
158
- return undefined;
159
155
  }
160
156
  };
161
157
  /** Started identities remain authoritative after their detailed receipt is evicted. */
@@ -205,14 +201,25 @@ export class ExecutionReceipts {
205
201
  });
206
202
  return outcome;
207
203
  };
208
- recordOutcome = (event) => {
204
+ /**
205
+ * Receipts follow their command's recorded lifecycle. `prompt.started` is recorded where the command is handed
206
+ * to the Agent, so the started mark and the event clients see are one transition; a terminal event settles the
207
+ * receipt. Nothing else marks a command started.
208
+ */
209
+ record = (event) => {
209
210
  if (event.type !== "lifecycle-metadata") {
210
211
  return;
211
212
  }
212
213
  const payload = event.payload;
213
- if (payload.kind !== "prompt.completed" &&
214
- payload.kind !== "prompt.failed" &&
215
- payload.kind !== "prompt.failed-before-start") {
214
+ if (payload.kind === "prompt.started") {
215
+ const receipt = this.#executions.get(payload.commandId);
216
+ // A start reported after settlement does not reopen the execution.
217
+ if (receipt?.state.kind === "pending") {
218
+ this.#save(payload.commandId, { ...receipt, state: { kind: "started" } });
219
+ }
220
+ return;
221
+ }
222
+ if (!isPromptTerminal(payload)) {
216
223
  return;
217
224
  }
218
225
  const receipt = this.#executions.get(payload.commandId);
@@ -305,27 +312,6 @@ export class ExecutionReceipts {
305
312
  });
306
313
  return { attemptId, commandId, kind: "accepted" };
307
314
  };
308
- markExecutionStarted = (commandId) => {
309
- const current = this.#executions.get(commandId);
310
- if (current === undefined) {
311
- throw new Error("The runtime execution receipt does not exist");
312
- }
313
- const state = current.state;
314
- switch (state.kind) {
315
- case "pending":
316
- this.#save(commandId, { ...current, state: { kind: "started" } });
317
- return;
318
- case "started":
319
- return;
320
- case "settled-before-start":
321
- case "settled-after-start":
322
- throw new Error("The runtime execution transition is invalid");
323
- default: {
324
- const unreachable = state;
325
- throw new Error("Unexpected execution state", { cause: unreachable });
326
- }
327
- }
328
- };
329
315
  /** Only commands without a terminal result can still be cancelled. */
330
316
  findUnsettledAttemptId = (commandId, sessionId) => {
331
317
  const receipt = this.#executions.get(commandId);