@moxt-ai/mobius 0.0.348 → 0.0.350

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 (28) hide show
  1. package/dist/cli.js +60 -16
  2. package/dist/cli.js.map +2 -2
  3. package/dist/engine/generated/acp-session-store-migrations.d.ts +3 -0
  4. package/dist/engine/generated/acp-session-store-migrations.d.ts.map +1 -1
  5. package/dist/engine/generated/acp-session-store-migrations.js +5 -1
  6. package/dist/engine/generated/acp-session-store-migrations.js.map +1 -1
  7. package/dist/engine/schema/acp-session-store/execution-receipt.d.ts +16 -0
  8. package/dist/engine/schema/acp-session-store/execution-receipt.d.ts.map +1 -1
  9. package/dist/engine/schema/acp-session-store/execution-receipt.js +2 -0
  10. package/dist/engine/schema/acp-session-store/execution-receipt.js.map +1 -1
  11. package/dist/engine/session/turn/execution-receipts.d.ts +3 -4
  12. package/dist/engine/session/turn/execution-receipts.d.ts.map +1 -1
  13. package/dist/engine/session/turn/execution-receipts.js +20 -11
  14. package/dist/engine/session/turn/execution-receipts.js.map +1 -1
  15. package/dist/engine/storage/session/execution-receipt-table.d.ts +1 -0
  16. package/dist/engine/storage/session/execution-receipt-table.d.ts.map +1 -1
  17. package/dist/engine/storage/session/execution-receipt-table.js +25 -7
  18. package/dist/engine/storage/session/execution-receipt-table.js.map +1 -1
  19. package/dist/engine/storage/sqlite/local-databases.d.ts.map +1 -1
  20. package/dist/engine/storage/sqlite/local-databases.js +6 -1
  21. package/dist/engine/storage/sqlite/local-databases.js.map +1 -1
  22. package/dist/engine/storage/sqlite/local-sqlite-database.d.ts +5 -0
  23. package/dist/engine/storage/sqlite/local-sqlite-database.d.ts.map +1 -1
  24. package/dist/engine/storage/sqlite/local-sqlite-database.js +9 -0
  25. package/dist/engine/storage/sqlite/local-sqlite-database.js.map +1 -1
  26. package/dist/engine.js +60 -16
  27. package/dist/engine.js.map +2 -2
  28. package/package.json +2 -2
@@ -25,5 +25,8 @@ export declare const acpSessionStoreMigrations: readonly [{
25
25
  }, {
26
26
  readonly name: "0008_execution_identity.sql";
27
27
  readonly sql: "CREATE TABLE `execution_identity` (\n\t`command_id` text PRIMARY KEY NOT NULL,\n\t`session_id` text NOT NULL,\n\t`command_hash` text NOT NULL\n);\n";
28
+ }, {
29
+ readonly name: "0009_receipt_admission_order.sql";
30
+ readonly sql: "ALTER TABLE `execution_receipt` ADD `admission_order` integer;";
28
31
  }];
29
32
  //# sourceMappingURL=acp-session-store-migrations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"acp-session-store-migrations.d.ts","sourceRoot":"","sources":["../../../src/engine/generated/acp-session-store-migrations.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB;aAE9B,IAAM,EAAE,iCAAiC;aACzC,GAAK,EAAE,2ZAA2Z;;aAGla,IAAM,EAAE,4BAA4B;aACpC,GAAK,EAAE,gEAAgE;;aAGvE,IAAM,EAAE,4BAA4B;aACpC,GAAK,EAAE,ybAAyb;;aAGhc,IAAM,EAAE,yBAAyB;aACjC,GAAK,EAAE,gCAAgC;;aAGvC,IAAM,EAAE,6BAA6B;aACrC,GAAK,EAAE,8HAA8H;;aAGrI,IAAM,EAAE,2BAA2B;aACnC,GAAK,EAAE,4EAA4E;;aAGnF,IAAM,EAAE,yCAAyC;aACjD,GAAK,EAAE,iKAAiK;;aAGxK,IAAM,EAAE,yBAAyB;aACjC,GAAK,EAAE,8RAA8R;;aAGrS,IAAM,EAAE,6BAA6B;aACrC,GAAK,EAAE,qJAAqJ;EAE1J,CAAC"}
1
+ {"version":3,"file":"acp-session-store-migrations.d.ts","sourceRoot":"","sources":["../../../src/engine/generated/acp-session-store-migrations.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,yBAAyB;aAE9B,IAAM,EAAE,iCAAiC;aACzC,GAAK,EAAE,2ZAA2Z;;aAGla,IAAM,EAAE,4BAA4B;aACpC,GAAK,EAAE,gEAAgE;;aAGvE,IAAM,EAAE,4BAA4B;aACpC,GAAK,EAAE,ybAAyb;;aAGhc,IAAM,EAAE,yBAAyB;aACjC,GAAK,EAAE,gCAAgC;;aAGvC,IAAM,EAAE,6BAA6B;aACrC,GAAK,EAAE,8HAA8H;;aAGrI,IAAM,EAAE,2BAA2B;aACnC,GAAK,EAAE,4EAA4E;;aAGnF,IAAM,EAAE,yCAAyC;aACjD,GAAK,EAAE,iKAAiK;;aAGxK,IAAM,EAAE,yBAAyB;aACjC,GAAK,EAAE,8RAA8R;;aAGrS,IAAM,EAAE,6BAA6B;aACrC,GAAK,EAAE,qJAAqJ;;aAG5J,IAAM,EAAE,kCAAkC;aAC1C,GAAK,EAAE,gEAAgE;EAErE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // Generated by scripts/generate-sql-modules.ts. Do not edit.
2
- // Sources: ../../../migrations/acp-session-store/0000_slimy_captain_midlands.sql, ../../../migrations/acp-session-store/0001_regular_ultimates.sql, ../../../migrations/acp-session-store/0002_equal_black_queen.sql, ../../../migrations/acp-session-store/0003_silky_ravenous.sql, ../../../migrations/acp-session-store/0004_special_mathemanic.sql, ../../../migrations/acp-session-store/0005_orange_amphibian.sql, ../../../migrations/acp-session-store/0006_live_event_position_allocation.sql, ../../../migrations/acp-session-store/0007_busy_excalibur.sql, ../../../migrations/acp-session-store/0008_execution_identity.sql
2
+ // Sources: ../../../migrations/acp-session-store/0000_slimy_captain_midlands.sql, ../../../migrations/acp-session-store/0001_regular_ultimates.sql, ../../../migrations/acp-session-store/0002_equal_black_queen.sql, ../../../migrations/acp-session-store/0003_silky_ravenous.sql, ../../../migrations/acp-session-store/0004_special_mathemanic.sql, ../../../migrations/acp-session-store/0005_orange_amphibian.sql, ../../../migrations/acp-session-store/0006_live_event_position_allocation.sql, ../../../migrations/acp-session-store/0007_busy_excalibur.sql, ../../../migrations/acp-session-store/0008_execution_identity.sql, ../../../migrations/acp-session-store/0009_receipt_admission_order.sql
3
3
  export const acpSessionStoreMigrations = [
4
4
  {
5
5
  "name": "0000_slimy_captain_midlands.sql",
@@ -36,6 +36,10 @@ export const acpSessionStoreMigrations = [
36
36
  {
37
37
  "name": "0008_execution_identity.sql",
38
38
  "sql": "CREATE TABLE `execution_identity` (\n\t`command_id` text PRIMARY KEY NOT NULL,\n\t`session_id` text NOT NULL,\n\t`command_hash` text NOT NULL\n);\n"
39
+ },
40
+ {
41
+ "name": "0009_receipt_admission_order.sql",
42
+ "sql": "ALTER TABLE `execution_receipt` ADD `admission_order` integer;"
39
43
  }
40
44
  ];
41
45
  //# sourceMappingURL=acp-session-store-migrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"acp-session-store-migrations.js","sourceRoot":"","sources":["../../../src/engine/generated/acp-session-store-migrations.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,ymBAAymB;AACzmB,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC;QACI,MAAM,EAAE,iCAAiC;QACzC,KAAK,EAAE,2ZAA2Z;KACra;IACD;QACI,MAAM,EAAE,4BAA4B;QACpC,KAAK,EAAE,gEAAgE;KAC1E;IACD;QACI,MAAM,EAAE,4BAA4B;QACpC,KAAK,EAAE,ybAAyb;KACnc;IACD;QACI,MAAM,EAAE,yBAAyB;QACjC,KAAK,EAAE,gCAAgC;KAC1C;IACD;QACI,MAAM,EAAE,6BAA6B;QACrC,KAAK,EAAE,8HAA8H;KACxI;IACD;QACI,MAAM,EAAE,2BAA2B;QACnC,KAAK,EAAE,4EAA4E;KACtF;IACD;QACI,MAAM,EAAE,yCAAyC;QACjD,KAAK,EAAE,iKAAiK;KAC3K;IACD;QACI,MAAM,EAAE,yBAAyB;QACjC,KAAK,EAAE,8RAA8R;KACxS;IACD;QACI,MAAM,EAAE,6BAA6B;QACrC,KAAK,EAAE,qJAAqJ;KAC/J;CACK,CAAC"}
1
+ {"version":3,"file":"acp-session-store-migrations.js","sourceRoot":"","sources":["../../../src/engine/generated/acp-session-store-migrations.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,irBAAirB;AACjrB,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC;QACI,MAAM,EAAE,iCAAiC;QACzC,KAAK,EAAE,2ZAA2Z;KACra;IACD;QACI,MAAM,EAAE,4BAA4B;QACpC,KAAK,EAAE,gEAAgE;KAC1E;IACD;QACI,MAAM,EAAE,4BAA4B;QACpC,KAAK,EAAE,ybAAyb;KACnc;IACD;QACI,MAAM,EAAE,yBAAyB;QACjC,KAAK,EAAE,gCAAgC;KAC1C;IACD;QACI,MAAM,EAAE,6BAA6B;QACrC,KAAK,EAAE,8HAA8H;KACxI;IACD;QACI,MAAM,EAAE,2BAA2B;QACnC,KAAK,EAAE,4EAA4E;KACtF;IACD;QACI,MAAM,EAAE,yCAAyC;QACjD,KAAK,EAAE,iKAAiK;KAC3K;IACD;QACI,MAAM,EAAE,yBAAyB;QACjC,KAAK,EAAE,8RAA8R;KACxS;IACD;QACI,MAAM,EAAE,6BAA6B;QACrC,KAAK,EAAE,qJAAqJ;KAC/J;IACD;QACI,MAAM,EAAE,kCAAkC;QAC1C,KAAK,EAAE,gEAAgE;KAC1E;CACK,CAAC"}
@@ -66,6 +66,22 @@ export declare const executionReceipt: import("drizzle-orm/sqlite-core").SQLiteT
66
66
  identity: undefined;
67
67
  generated: undefined;
68
68
  }, {}>;
69
+ admissionOrder: import("drizzle-orm/sqlite-core").SQLiteColumn<{
70
+ name: string;
71
+ tableName: "execution_receipt";
72
+ dataType: "number int53";
73
+ data: number;
74
+ driverParam: number;
75
+ notNull: false;
76
+ hasDefault: false;
77
+ isPrimaryKey: false;
78
+ isAutoincrement: false;
79
+ hasRuntimeDefault: false;
80
+ enumValues: undefined;
81
+ baseColumn: never;
82
+ identity: undefined;
83
+ generated: undefined;
84
+ }, {}>;
69
85
  state: import("drizzle-orm/sqlite-core").SQLiteColumn<{
70
86
  name: string;
71
87
  tableName: "execution_receipt";
@@ -1 +1 @@
1
- {"version":3,"file":"execution-receipt.d.ts","sourceRoot":"","sources":["../../../../src/engine/schema/acp-session-store/execution-receipt.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU3B,CAAC"}
1
+ {"version":3,"file":"execution-receipt.d.ts","sourceRoot":"","sources":["../../../../src/engine/schema/acp-session-store/execution-receipt.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY3B,CAAC"}
@@ -4,6 +4,8 @@ export const executionReceipt = sqliteTable("execution_receipt", {
4
4
  sessionId: text("session_id").notNull(),
5
5
  commandHash: text("command_hash").notNull(),
6
6
  attemptId: text("attempt_id").notNull(),
7
+ // Nullable only for receipts written by older Runtimes; assigned before recovery.
8
+ admissionOrder: integer("admission_order"),
7
9
  // Compatibility projection for older Runtimes; started and outcome own the facts.
8
10
  state: text("state").notNull(),
9
11
  started: integer("started", { mode: "boolean" }).notNull(),
@@ -1 +1 @@
1
- {"version":3,"file":"execution-receipt.js","sourceRoot":"","sources":["../../../../src/engine/schema/acp-session-store/execution-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,mBAAmB,EAAE;IAC7D,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE;IAC1C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;IAC3C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,kFAAkF;IAClF,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1D,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC1C,CAAC,CAAC"}
1
+ {"version":3,"file":"execution-receipt.js","sourceRoot":"","sources":["../../../../src/engine/schema/acp-session-store/execution-receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,CAAC,MAAM,gBAAgB,GAAG,WAAW,CAAC,mBAAmB,EAAE;IAC7D,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE;IAC1C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,EAAE;IAC3C,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IACvC,kFAAkF;IAClF,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAC1C,kFAAkF;IAClF,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IAC1D,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC1C,CAAC,CAAC"}
@@ -22,10 +22,9 @@ export declare class ExecutionReceipts {
22
22
  /** The command's delivery as these receipts know it; another Session's command reads as unknown. */
23
23
  readonly delivery: (commandId: string, sessionId: string) => CommandDelivery;
24
24
  /**
25
- * How the Session's most recent started command ended. Receipts keep admission order, or the
26
- * order they last changed after a restart; commands that never started (queued, or reserved for
27
- * cancellation) are not turns, unless a restart failed them before they could start. Undefined
28
- * while that command still runs, or when no turn is retained.
25
+ * How the Session's most recently admitted turn ended. Admission order survives updates and
26
+ * restarts. Commands that never started (queued, or reserved for cancellation) are not turns,
27
+ * unless they failed before starting. Undefined while the latest turn runs or none is retained.
29
28
  */
30
29
  readonly lastTurn: (sessionId: string) => LastTurnOutcome | undefined;
31
30
  /** Reserves an unseen command for cancellation before a delayed prompt can claim its identity. */
@@ -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;AAUnC,qBAAa,iBAAiB;;IAQ1B,YAAY,KAAK,EAAE,qBAAqB,EAAE,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAsB,EAU3F;IAeD,QAAQ,CAAC,aAAa,QAAO,IAAI,CAE/B;IACF,QAAQ,CAAC,OAAO,cAAe,MAAM,KAAG,mBAAmB,GAAG,SAAS,CAKrE;IACF,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,cAAe,MAAM,aAAa,MAAM,KAAG,eAAe,CA0BzE;IACF;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,cAAe,MAAM,KAAG,eAAe,GAAG,SAAS,CA+BlE;IACF,kGAAkG;IAClG,QAAQ,CAAC,iCAAiC,cAC3B,MAAM,aACN,MAAM,KAClB,mBAAmB,GAAG,SAAS,CA2BhC;IACF,QAAQ,CAAC,aAAa,UAAW,gBAAgB,KAAG,IAAI,CAwBtD;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,CAoCD;IAEF,QAAQ,CAAC,cAAc,cAAe,MAAM,aAAa,MAAM,eAAe,MAAM,KAAG,uBAAuB,CA0C5G;IAEF,QAAQ,CAAC,oBAAoB,cAAe,MAAM,KAAG,IAAI,CAWvD;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,CAIvB;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,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;AAWnC,qBAAa,iBAAiB;;IAQ1B,YAAY,KAAK,EAAE,qBAAqB,EAAE,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAsB,EAU3F;IA2BD,QAAQ,CAAC,aAAa,QAAO,IAAI,CAE/B;IACF,QAAQ,CAAC,OAAO,cAAe,MAAM,KAAG,mBAAmB,GAAG,SAAS,CAKrE;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,kGAAkG;IAClG,QAAQ,CAAC,iCAAiC,cAC3B,MAAM,aACN,MAAM,KAClB,mBAAmB,GAAG,SAAS,CA4BhC;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,CAoCD;IAEF,QAAQ,CAAC,cAAc,cAAe,MAAM,aAAa,MAAM,eAAe,MAAM,KAAG,uBAAuB,CA2C5G;IAEF,QAAQ,CAAC,oBAAoB,cAAe,MAAM,KAAG,IAAI,CAWvD;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,CAIvB;CACL"}
@@ -20,13 +20,14 @@ export class ExecutionReceipts {
20
20
  }
21
21
  }
22
22
  }
23
- #save = (commandId, receipt) => {
23
+ #save = (commandId, receipt, liveOutcome = receipt.outcome) => {
24
24
  const evicted = this.#closing
25
25
  ? []
26
26
  : this.#table.save({ ...receipt, commandId, updatedAt: new Date().toISOString() }, MAX_TERMINAL_RECEIPTS);
27
27
  const previous = this.#executions.get(commandId);
28
28
  const wasActive = previous?.outcome === null;
29
- this.#executions.set(commandId, receipt);
29
+ // Live failure detail may quote user input; only the durable receipt goes to the table.
30
+ this.#executions.set(commandId, { ...receipt, outcome: liveOutcome });
30
31
  for (const evictedCommandId of evicted) {
31
32
  this.#executions.delete(evictedCommandId);
32
33
  this.#recoveredCommands.delete(evictedCommandId);
@@ -34,6 +35,13 @@ export class ExecutionReceipts {
34
35
  this.#activeCount += Number(receipt.outcome === null) - Number(wasActive);
35
36
  this.#onCount(this.#activeCount);
36
37
  };
38
+ #nextAdmissionOrder = () => {
39
+ let latest = 0;
40
+ for (const receipt of this.#executions.values()) {
41
+ latest = Math.max(latest, receipt.admissionOrder);
42
+ }
43
+ return latest + 1;
44
+ };
37
45
  beginShutdown = () => {
38
46
  this.#closing = true;
39
47
  };
@@ -72,21 +80,22 @@ export class ExecutionReceipts {
72
80
  }
73
81
  };
74
82
  /**
75
- * How the Session's most recent started command ended. Receipts keep admission order, or the
76
- * order they last changed after a restart; commands that never started (queued, or reserved for
77
- * cancellation) are not turns, unless a restart failed them before they could start. Undefined
78
- * while that command still runs, or when no turn is retained.
83
+ * How the Session's most recently admitted turn ended. Admission order survives updates and
84
+ * restarts. Commands that never started (queued, or reserved for cancellation) are not turns,
85
+ * unless they failed before starting. Undefined while the latest turn runs or none is retained.
79
86
  */
80
87
  lastTurn = (sessionId) => {
81
88
  let last;
89
+ let latestOrder = 0;
82
90
  for (const [commandId, receipt] of this.#executions) {
83
91
  if (receipt.sessionId !== sessionId) {
84
92
  continue;
85
93
  }
86
94
  const outcome = receipt.outcome === null ? undefined : this.outcome(commandId);
87
95
  const failedBeforeStart = outcome?.type === "lifecycle-metadata" && outcome.payload.kind === "prompt.failed-before-start";
88
- if (receipt.started || failedBeforeStart) {
96
+ if ((receipt.started || failedBeforeStart) && receipt.admissionOrder > latestOrder) {
89
97
  last = commandId;
98
+ latestOrder = receipt.admissionOrder;
90
99
  }
91
100
  }
92
101
  const outcome = last === undefined ? undefined : this.outcome(last);
@@ -127,6 +136,7 @@ export class ExecutionReceipts {
127
136
  }))
128
137
  .digest("hex");
129
138
  this.#save(commandId, {
139
+ admissionOrder: this.#nextAdmissionOrder(),
130
140
  attemptId: randomUUID(),
131
141
  commandHash,
132
142
  sessionId,
@@ -152,10 +162,8 @@ export class ExecutionReceipts {
152
162
  const sanitized = payload.kind === "prompt.completed"
153
163
  ? payload
154
164
  : { ...payload, message: "The local Agent could not complete the request" };
155
- this.#save(payload.commandId, {
156
- ...receipt,
157
- outcome: JSON.stringify({ type: "lifecycle-metadata", payload: sanitized, recordedAt: event.recordedAt }),
158
- });
165
+ const outcome = { type: "lifecycle-metadata", payload, recordedAt: event.recordedAt };
166
+ this.#save(payload.commandId, { ...receipt, outcome: JSON.stringify({ ...outcome, payload: sanitized }) }, JSON.stringify(outcome));
159
167
  };
160
168
  recover = () => {
161
169
  const recovered = [];
@@ -225,6 +233,7 @@ export class ExecutionReceipts {
225
233
  }
226
234
  const attemptId = randomUUID();
227
235
  this.#save(commandId, {
236
+ admissionOrder: this.#nextAdmissionOrder(),
228
237
  attemptId,
229
238
  commandHash,
230
239
  sessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"execution-receipts.js","sourceRoot":"","sources":["../../../../src/engine/session/turn/execution-receipts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-receipts.js","sourceRoot":"","sources":["../../../../src/engine/session/turn/execution-receipts.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ declare const receiptSchema: z.ZodReadonly<z.ZodObject<{
5
5
  sessionId: z.ZodString;
6
6
  commandHash: z.ZodString;
7
7
  attemptId: z.ZodString;
8
+ admissionOrder: z.ZodNumber;
8
9
  updatedAt: z.ZodString;
9
10
  started: z.ZodBoolean;
10
11
  outcome: z.ZodNullable<z.ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"execution-receipt-table.d.ts","sourceRoot":"","sources":["../../../../src/engine/storage/session/execution-receipt-table.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,QAAA,MAAM,aAAa;;;;;;;;kBAUJ,CAAC;AAChB,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtE,QAAA,MAAM,cAAc;;;kBAA0E,CAAC;AAkB/F,2EAA2E;AAC3E,qBAAa,qBAAqB;;IAE9B,YAAY,QAAQ,EAAE,mBAAmB,EAExC;IACD,QAAQ,CAAC,QAAQ,cAAe,MAAM,KAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GAAG,SAAS,CAOjF;IACF,QAAQ,CAAC,IAAI,QAAO,SAAS,yBAAyB,EAAE,CAS9C;IACV,QAAQ,CAAC,IAAI,YAAa,yBAAyB,iBAAiB,MAAM,KAAG,SAAS,MAAM,EAAE,CA+BvF;IACP,QAAQ,CAAC,MAAM,cAAe,MAAM,KAAG,IAAI,CAEzC;CA4BL"}
1
+ {"version":3,"file":"execution-receipt-table.d.ts","sourceRoot":"","sources":["../../../../src/engine/storage/session/execution-receipt-table.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,QAAA,MAAM,aAAa;;;;;;;;;kBAWJ,CAAC;AAChB,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEtE,QAAA,MAAM,cAAc;;;kBAA0E,CAAC;AAkB/F,2EAA2E;AAC3E,qBAAa,qBAAqB;;IAE9B,YAAY,QAAQ,EAAE,mBAAmB,EAExC;IACD,QAAQ,CAAC,QAAQ,cAAe,MAAM,KAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,GAAG,SAAS,CAOjF;IACF,QAAQ,CAAC,IAAI,QAAO,SAAS,yBAAyB,EAAE,CAwBjD;IACP,QAAQ,CAAC,IAAI,YAAa,yBAAyB,iBAAiB,MAAM,KAAG,SAAS,MAAM,EAAE,CA+BvF;IACP,QAAQ,CAAC,MAAM,cAAe,MAAM,KAAG,IAAI,CAEzC;CA4BL"}
@@ -8,6 +8,7 @@ const receiptSchema = z
8
8
  sessionId: z.string(),
9
9
  commandHash: z.string(),
10
10
  attemptId: z.string(),
11
+ admissionOrder: z.number().int().positive().safe(),
11
12
  updatedAt: z.string(),
12
13
  started: z.boolean(),
13
14
  outcome: z.string().nullable(),
@@ -43,13 +44,30 @@ export class ExecutionReceiptTable {
43
44
  .get();
44
45
  return row === undefined ? undefined : identitySchema.parse(row);
45
46
  };
46
- list = () => receiptSchema
47
- .array()
48
- .parse(this.#database.orm
49
- .select()
50
- .from(executionReceipt)
51
- .orderBy(asc(executionReceipt.updatedAt), asc(executionReceipt.commandId))
52
- .all());
47
+ list = () => this.#database.transaction(() => {
48
+ const rows = this.#database.orm
49
+ .select()
50
+ .from(executionReceipt)
51
+ .orderBy(asc(executionReceipt.updatedAt), asc(executionReceipt.commandId))
52
+ .all();
53
+ let latestOrder = rows.reduce((latest, row) => Math.max(latest, row.admissionOrder ?? 0), 0);
54
+ return rows
55
+ .map((row) => {
56
+ if (row.admissionOrder !== null) {
57
+ return receiptSchema.parse(row);
58
+ }
59
+ // Legacy receipts have no admission order. Freeze their available ordering once,
60
+ // before recovery changes updatedAt. Rollback writers' new rows follow known ones.
61
+ const admissionOrder = ++latestOrder;
62
+ this.#database.orm
63
+ .update(executionReceipt)
64
+ .set({ admissionOrder })
65
+ .where(eq(executionReceipt.commandId, row.commandId))
66
+ .run();
67
+ return receiptSchema.parse({ ...row, admissionOrder });
68
+ })
69
+ .sort((left, right) => left.admissionOrder - right.admissionOrder);
70
+ });
53
71
  save = (receipt, terminalLimit) => this.#database.transaction(() => {
54
72
  const row = { ...receipt, state: legacyState(receipt) };
55
73
  this.#database.orm
@@ -1 +1 @@
1
- {"version":3,"file":"execution-receipt-table.js","sourceRoot":"","sources":["../../../../src/engine/storage/session/execution-receipt-table.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-receipt-table.js","sourceRoot":"","sources":["../../../../src/engine/storage/session/execution-receipt-table.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-databases.d.ts","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-databases.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC7B;AAED,mGAAmG;AACnG,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,2BAA2B,CAMlH;AAED,eAAO,MAAM,sBAAsB,SAAU,MAAM,KAAG,mBAC8B,CAAC;AAErF,eAAO,MAAM,6BAA6B,SAAU,MAAM,KAAG,mBAKvD,CAAC"}
1
+ {"version":3,"file":"local-databases.d.ts","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-databases.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,mBAAmB,EAA6B,MAAM,4BAA4B,CAAC;AAE5F,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC7B;AAED,mGAAmG;AACnG,wBAAgB,2BAA2B,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,2BAA2B,CAMlH;AAED,eAAO,MAAM,sBAAsB,SAAU,MAAM,KAAG,mBAajD,CAAC;AAEN,eAAO,MAAM,6BAA6B,SAAU,MAAM,KAAG,mBAKvD,CAAC"}
@@ -11,7 +11,12 @@ export function channelSessionDatabasePaths(stateDirectory, channelId) {
11
11
  sessions: join(stateDirectory, "sessions", `${channelHash}.sqlite`),
12
12
  };
13
13
  }
14
- export const openAcpSessionDatabase = (path) => new LocalSqliteDatabase(path, "ACP Session database", acpSessionStoreMigrations);
14
+ export const openAcpSessionDatabase = (path) => new LocalSqliteDatabase(path, "ACP Session database", acpSessionStoreMigrations.map((migration) => migration.name === "0009_receipt_admission_order.sql"
15
+ ? {
16
+ ...migration,
17
+ compatibleColumn: { table: "execution_receipt", column: "admission_order" },
18
+ }
19
+ : migration));
15
20
  export const openSessionEventCacheDatabase = (path) => new LocalSqliteDatabase(path, "V2 Session event cache", sessionEventCacheMigrations, [
16
21
  "PRAGMA journal_mode = WAL",
17
22
  "PRAGMA synchronous = OFF",
@@ -1 +1 @@
1
- {"version":3,"file":"local-databases.js","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-databases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAOjE,mGAAmG;AACnG,MAAM,UAAU,2BAA2B,CAAC,cAAsB,EAAE,SAAiB;IACjF,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,OAAO;QACH,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,WAAW,gBAAgB,CAAC;QACxE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,WAAW,SAAS,CAAC;KACtE,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAuB,EAAE,CACxE,IAAI,mBAAmB,CAAC,IAAI,EAAE,sBAAsB,EAAE,yBAAyB,CAAC,CAAC;AAErF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,IAAY,EAAuB,EAAE,CAC/E,IAAI,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,EAAE,2BAA2B,EAAE;IACjF,2BAA2B;IAC3B,0BAA0B;IAC1B,2BAA2B;CAC9B,CAAC,CAAC"}
1
+ {"version":3,"file":"local-databases.js","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-databases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iDAAiD,CAAC;AAC5F,OAAO,EAAE,2BAA2B,EAAE,MAAM,mDAAmD,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAA6B,MAAM,4BAA4B,CAAC;AAO5F,mGAAmG;AACnG,MAAM,UAAU,2BAA2B,CAAC,cAAsB,EAAE,SAAiB;IACjF,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,OAAO;QACH,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,WAAW,gBAAgB,CAAC;QACxE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,GAAG,WAAW,SAAS,CAAC;KACtE,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,IAAY,EAAuB,EAAE,CACxE,IAAI,mBAAmB,CACnB,IAAI,EACJ,sBAAsB,EACtB,yBAAyB,CAAC,GAAG,CACzB,CAAC,SAAS,EAAwB,EAAE,CAChC,SAAS,CAAC,IAAI,KAAK,kCAAkC;IACjD,CAAC,CAAC;QACI,GAAG,SAAS;QACZ,gBAAgB,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAE;KAC9E;IACH,CAAC,CAAC,SAAS,CACtB,CACJ,CAAC;AAEN,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,IAAY,EAAuB,EAAE,CAC/E,IAAI,mBAAmB,CAAC,IAAI,EAAE,wBAAwB,EAAE,2BAA2B,EAAE;IACjF,2BAA2B;IAC3B,0BAA0B;IAC1B,2BAA2B;CAC9B,CAAC,CAAC"}
@@ -2,6 +2,11 @@ import { type NodeSQLiteDatabase } from "drizzle-orm/node-sqlite";
2
2
  export interface LocalSqliteMigration {
3
3
  readonly name: string;
4
4
  readonly sql: string;
5
+ /** A single optional column that old readers can ignore, without raising their version floor. */
6
+ readonly compatibleColumn?: {
7
+ readonly table: string;
8
+ readonly column: string;
9
+ };
5
10
  }
6
11
  export declare class LocalSqliteDatabase {
7
12
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"local-sqlite-database.d.ts","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-sqlite-database.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG3E,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,mBAAmB;;IAC5B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IAGjC,YACI,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,oBAAoB,EAAE,EAC3C,OAAO,GAAE,SAAS,MAAM,EAAO,EAelC;IAqBD,QAAQ,CAAC,WAAW,GAAI,MAAM,aAAa,MAAM,MAAM,KAAG,MAAM,CAU9D;IAEF;;;OAGG;IACH,QAAQ,CAAC,IAAI,QAAS,MAAM,KAAG,IAAI,CAEjC;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAAyB;CACrD"}
1
+ {"version":3,"file":"local-sqlite-database.d.ts","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-sqlite-database.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG3E,MAAM,WAAW,oBAAoB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,iGAAiG;IACjG,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACnF;AAED,qBAAa,mBAAmB;;IAC5B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IAGjC,YACI,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,oBAAoB,EAAE,EAC3C,OAAO,GAAE,SAAS,MAAM,EAAO,EAelC;IAgCD,QAAQ,CAAC,WAAW,GAAI,MAAM,aAAa,MAAM,MAAM,KAAG,MAAM,CAU9D;IAEF;;;OAGG;IACH,QAAQ,CAAC,IAAI,QAAS,MAAM,KAAG,IAAI,CAEjC;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAAyB;CACrD"}
@@ -35,6 +35,15 @@ export class LocalSqliteDatabase {
35
35
  throw new Error(`The ${label} migration is unavailable`);
36
36
  }
37
37
  this.transaction(() => {
38
+ if (migration.compatibleColumn !== undefined) {
39
+ const { table, column } = migration.compatibleColumn;
40
+ if (this.#sqlite
41
+ .prepare("SELECT name FROM pragma_table_info(?) WHERE name = ?")
42
+ .get(table, column) === undefined) {
43
+ this.#sqlite.exec(migration.sql);
44
+ }
45
+ return;
46
+ }
38
47
  this.#sqlite.exec(migration.sql);
39
48
  this.#sqlite.exec(`PRAGMA user_version = ${index + 1}`);
40
49
  });
@@ -1 +1 @@
1
- {"version":3,"file":"local-sqlite-database.js","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-sqlite-database.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-sqlite-database.js","sourceRoot":"","sources":["../../../../src/engine/storage/sqlite/local-sqlite-database.ts"],"names":[],"mappings":"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"}
package/dist/engine.js CHANGED
@@ -77572,6 +77572,10 @@ var acpSessionStoreMigrations = [
77572
77572
  {
77573
77573
  "name": "0008_execution_identity.sql",
77574
77574
  "sql": "CREATE TABLE `execution_identity` (\n `command_id` text PRIMARY KEY NOT NULL,\n `session_id` text NOT NULL,\n `command_hash` text NOT NULL\n);\n"
77575
+ },
77576
+ {
77577
+ "name": "0009_receipt_admission_order.sql",
77578
+ "sql": "ALTER TABLE `execution_receipt` ADD `admission_order` integer;"
77575
77579
  }
77576
77580
  ];
77577
77581
 
@@ -82484,6 +82488,13 @@ var LocalSqliteDatabase = class {
82484
82488
  throw new Error(`The ${label} migration is unavailable`);
82485
82489
  }
82486
82490
  this.transaction(() => {
82491
+ if (migration.compatibleColumn !== void 0) {
82492
+ const { table, column } = migration.compatibleColumn;
82493
+ if (this.#sqlite.prepare("SELECT name FROM pragma_table_info(?) WHERE name = ?").get(table, column) === void 0) {
82494
+ this.#sqlite.exec(migration.sql);
82495
+ }
82496
+ return;
82497
+ }
82487
82498
  this.#sqlite.exec(migration.sql);
82488
82499
  this.#sqlite.exec(`PRAGMA user_version = ${index2 + 1}`);
82489
82500
  });
@@ -82518,7 +82529,16 @@ function channelSessionDatabasePaths(stateDirectory, channelId) {
82518
82529
  sessions: join22(stateDirectory, "sessions", `${channelHash}.sqlite`)
82519
82530
  };
82520
82531
  }
82521
- var openAcpSessionDatabase = (path7) => new LocalSqliteDatabase(path7, "ACP Session database", acpSessionStoreMigrations);
82532
+ var openAcpSessionDatabase = (path7) => new LocalSqliteDatabase(
82533
+ path7,
82534
+ "ACP Session database",
82535
+ acpSessionStoreMigrations.map(
82536
+ (migration) => migration.name === "0009_receipt_admission_order.sql" ? {
82537
+ ...migration,
82538
+ compatibleColumn: { table: "execution_receipt", column: "admission_order" }
82539
+ } : migration
82540
+ )
82541
+ );
82522
82542
  var openSessionEventCacheDatabase = (path7) => new LocalSqliteDatabase(path7, "V2 Session event cache", sessionEventCacheMigrations, [
82523
82543
  "PRAGMA journal_mode = WAL",
82524
82544
  "PRAGMA synchronous = OFF",
@@ -83824,6 +83844,8 @@ var executionReceipt = sqliteTable("execution_receipt", {
83824
83844
  sessionId: text("session_id").notNull(),
83825
83845
  commandHash: text("command_hash").notNull(),
83826
83846
  attemptId: text("attempt_id").notNull(),
83847
+ // Nullable only for receipts written by older Runtimes; assigned before recovery.
83848
+ admissionOrder: integer2("admission_order"),
83827
83849
  // Compatibility projection for older Runtimes; started and outcome own the facts.
83828
83850
  state: text("state").notNull(),
83829
83851
  started: integer2("started", { mode: "boolean" }).notNull(),
@@ -83878,6 +83900,7 @@ var receiptSchema = external_exports.object({
83878
83900
  sessionId: external_exports.string(),
83879
83901
  commandHash: external_exports.string(),
83880
83902
  attemptId: external_exports.string(),
83903
+ admissionOrder: external_exports.number().int().positive().safe(),
83881
83904
  updatedAt: external_exports.string(),
83882
83905
  started: external_exports.boolean(),
83883
83906
  outcome: external_exports.string().nullable()
@@ -83902,9 +83925,18 @@ var ExecutionReceiptTable = class {
83902
83925
  const row = this.#database.orm.select({ sessionId: executionIdentity.sessionId, commandHash: executionIdentity.commandHash }).from(executionIdentity).where(eq2(executionIdentity.commandId, commandId)).get();
83903
83926
  return row === void 0 ? void 0 : identitySchema.parse(row);
83904
83927
  };
83905
- list = () => receiptSchema.array().parse(
83906
- this.#database.orm.select().from(executionReceipt).orderBy(asc(executionReceipt.updatedAt), asc(executionReceipt.commandId)).all()
83907
- );
83928
+ list = () => this.#database.transaction(() => {
83929
+ const rows = this.#database.orm.select().from(executionReceipt).orderBy(asc(executionReceipt.updatedAt), asc(executionReceipt.commandId)).all();
83930
+ let latestOrder = rows.reduce((latest, row) => Math.max(latest, row.admissionOrder ?? 0), 0);
83931
+ return rows.map((row) => {
83932
+ if (row.admissionOrder !== null) {
83933
+ return receiptSchema.parse(row);
83934
+ }
83935
+ const admissionOrder = ++latestOrder;
83936
+ this.#database.orm.update(executionReceipt).set({ admissionOrder }).where(eq2(executionReceipt.commandId, row.commandId)).run();
83937
+ return receiptSchema.parse({ ...row, admissionOrder });
83938
+ }).sort((left, right) => left.admissionOrder - right.admissionOrder);
83939
+ });
83908
83940
  save = (receipt, terminalLimit) => this.#database.transaction(() => {
83909
83941
  const row = { ...receipt, state: legacyState(receipt) };
83910
83942
  this.#database.orm.insert(executionReceipt).values(row).onConflictDoUpdate({ target: executionReceipt.commandId, set: row }).run();
@@ -87254,11 +87286,11 @@ var ExecutionReceipts = class {
87254
87286
  }
87255
87287
  }
87256
87288
  }
87257
- #save = (commandId, receipt) => {
87289
+ #save = (commandId, receipt, liveOutcome = receipt.outcome) => {
87258
87290
  const evicted = this.#closing ? [] : this.#table.save({ ...receipt, commandId, updatedAt: (/* @__PURE__ */ new Date()).toISOString() }, MAX_TERMINAL_RECEIPTS);
87259
87291
  const previous = this.#executions.get(commandId);
87260
87292
  const wasActive = previous?.outcome === null;
87261
- this.#executions.set(commandId, receipt);
87293
+ this.#executions.set(commandId, { ...receipt, outcome: liveOutcome });
87262
87294
  for (const evictedCommandId of evicted) {
87263
87295
  this.#executions.delete(evictedCommandId);
87264
87296
  this.#recoveredCommands.delete(evictedCommandId);
@@ -87266,6 +87298,13 @@ var ExecutionReceipts = class {
87266
87298
  this.#activeCount += Number(receipt.outcome === null) - Number(wasActive);
87267
87299
  this.#onCount(this.#activeCount);
87268
87300
  };
87301
+ #nextAdmissionOrder = () => {
87302
+ let latest = 0;
87303
+ for (const receipt of this.#executions.values()) {
87304
+ latest = Math.max(latest, receipt.admissionOrder);
87305
+ }
87306
+ return latest + 1;
87307
+ };
87269
87308
  beginShutdown = () => {
87270
87309
  this.#closing = true;
87271
87310
  };
@@ -87300,21 +87339,22 @@ var ExecutionReceipts = class {
87300
87339
  }
87301
87340
  };
87302
87341
  /**
87303
- * How the Session's most recent started command ended. Receipts keep admission order, or the
87304
- * order they last changed after a restart; commands that never started (queued, or reserved for
87305
- * cancellation) are not turns, unless a restart failed them before they could start. Undefined
87306
- * while that command still runs, or when no turn is retained.
87342
+ * How the Session's most recently admitted turn ended. Admission order survives updates and
87343
+ * restarts. Commands that never started (queued, or reserved for cancellation) are not turns,
87344
+ * unless they failed before starting. Undefined while the latest turn runs or none is retained.
87307
87345
  */
87308
87346
  lastTurn = (sessionId) => {
87309
87347
  let last;
87348
+ let latestOrder = 0;
87310
87349
  for (const [commandId, receipt] of this.#executions) {
87311
87350
  if (receipt.sessionId !== sessionId) {
87312
87351
  continue;
87313
87352
  }
87314
87353
  const outcome2 = receipt.outcome === null ? void 0 : this.outcome(commandId);
87315
87354
  const failedBeforeStart = outcome2?.type === "lifecycle-metadata" && outcome2.payload.kind === "prompt.failed-before-start";
87316
- if (receipt.started || failedBeforeStart) {
87355
+ if ((receipt.started || failedBeforeStart) && receipt.admissionOrder > latestOrder) {
87317
87356
  last = commandId;
87357
+ latestOrder = receipt.admissionOrder;
87318
87358
  }
87319
87359
  }
87320
87360
  const outcome = last === void 0 ? void 0 : this.outcome(last);
@@ -87354,6 +87394,7 @@ var ExecutionReceipts = class {
87354
87394
  })
87355
87395
  ).digest("hex");
87356
87396
  this.#save(commandId, {
87397
+ admissionOrder: this.#nextAdmissionOrder(),
87357
87398
  attemptId: randomUUID15(),
87358
87399
  commandHash,
87359
87400
  sessionId,
@@ -87375,10 +87416,12 @@ var ExecutionReceipts = class {
87375
87416
  return;
87376
87417
  }
87377
87418
  const sanitized = payload.kind === "prompt.completed" ? payload : { ...payload, message: "The local Agent could not complete the request" };
87378
- this.#save(payload.commandId, {
87379
- ...receipt,
87380
- outcome: JSON.stringify({ type: "lifecycle-metadata", payload: sanitized, recordedAt: event.recordedAt })
87381
- });
87419
+ const outcome = { type: "lifecycle-metadata", payload, recordedAt: event.recordedAt };
87420
+ this.#save(
87421
+ payload.commandId,
87422
+ { ...receipt, outcome: JSON.stringify({ ...outcome, payload: sanitized }) },
87423
+ JSON.stringify(outcome)
87424
+ );
87382
87425
  };
87383
87426
  recover = () => {
87384
87427
  const recovered = [];
@@ -87436,6 +87479,7 @@ var ExecutionReceipts = class {
87436
87479
  }
87437
87480
  const attemptId = randomUUID15();
87438
87481
  this.#save(commandId, {
87482
+ admissionOrder: this.#nextAdmissionOrder(),
87439
87483
  attemptId,
87440
87484
  commandHash,
87441
87485
  sessionId,
@@ -90753,7 +90797,7 @@ var sessionPromptCommand = {
90753
90797
  // package.json
90754
90798
  var package_default = {
90755
90799
  name: "@moxt-ai/mobius",
90756
- version: "0.0.348",
90800
+ version: "0.0.350",
90757
90801
  description: "Mobius CLI for pairing and running local AI agent services.",
90758
90802
  type: "module",
90759
90803
  bin: {