@goah/cli 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/cli.js +98 -7
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +2 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/inspect.d.ts +61 -0
  8. package/dist/inspect.d.ts.map +1 -0
  9. package/dist/inspect.js +110 -0
  10. package/dist/inspect.js.map +1 -0
  11. package/node_modules/goah-ledger-contract/dist/execution.d.ts +50 -4
  12. package/node_modules/goah-ledger-contract/dist/execution.d.ts.map +1 -1
  13. package/node_modules/goah-ledger-contract/dist/execution.js +5 -1
  14. package/node_modules/goah-ledger-contract/dist/execution.js.map +1 -1
  15. package/node_modules/goah-ledger-contract/dist/kernel.d.ts +3 -1
  16. package/node_modules/goah-ledger-contract/dist/kernel.d.ts.map +1 -1
  17. package/node_modules/goah-ledger-contract/dist/kernel.js +1 -1
  18. package/node_modules/goah-ledger-contract/dist/kernel.js.map +1 -1
  19. package/node_modules/goah-ledger-contract/dist/session.d.ts +24 -0
  20. package/node_modules/goah-ledger-contract/dist/session.d.ts.map +1 -1
  21. package/node_modules/goah-ledger-contract/dist/session.js +67 -5
  22. package/node_modules/goah-ledger-contract/dist/session.js.map +1 -1
  23. package/node_modules/goah-ledger-contract/package.json +1 -1
  24. package/node_modules/goah-ledger-sqlite/dist/index.d.ts +5 -3
  25. package/node_modules/goah-ledger-sqlite/dist/index.d.ts.map +1 -1
  26. package/node_modules/goah-ledger-sqlite/dist/index.js +159 -9
  27. package/node_modules/goah-ledger-sqlite/dist/index.js.map +1 -1
  28. package/node_modules/goah-ledger-sqlite/package.json +2 -2
  29. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts +3 -0
  30. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts.map +1 -1
  31. package/node_modules/goah-runner-pi/dist/pi-worker.js +44 -16
  32. package/node_modules/goah-runner-pi/dist/pi-worker.js.map +1 -1
  33. package/node_modules/goah-runner-pi/package.json +2 -2
  34. package/node_modules/goah-supervisor/dist/context-view.d.ts +6 -1
  35. package/node_modules/goah-supervisor/dist/context-view.d.ts.map +1 -1
  36. package/node_modules/goah-supervisor/dist/context-view.js +16 -1
  37. package/node_modules/goah-supervisor/dist/context-view.js.map +1 -1
  38. package/node_modules/goah-supervisor/dist/index.d.ts +16 -2
  39. package/node_modules/goah-supervisor/dist/index.d.ts.map +1 -1
  40. package/node_modules/goah-supervisor/dist/index.js +185 -9
  41. package/node_modules/goah-supervisor/dist/index.js.map +1 -1
  42. package/node_modules/goah-supervisor/dist/roles.d.ts.map +1 -1
  43. package/node_modules/goah-supervisor/dist/roles.js +5 -1
  44. package/node_modules/goah-supervisor/dist/roles.js.map +1 -1
  45. package/node_modules/goah-supervisor/package.json +2 -2
  46. package/node_modules/goah-testkit/dist/faux-runner-worker.js +4 -1
  47. package/node_modules/goah-testkit/dist/faux-runner-worker.js.map +1 -1
  48. package/node_modules/goah-testkit/dist/index.d.ts.map +1 -1
  49. package/node_modules/goah-testkit/dist/index.js +15 -0
  50. package/node_modules/goah-testkit/dist/index.js.map +1 -1
  51. package/node_modules/goah-testkit/package.json +5 -5
  52. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  const wakeTransitions = { queued: ["leased", "abnormal"], leased: ["queued", "running", "abnormal"], running: ["done", "abnormal", "merge_blocked"], done: [], abnormal: [], merge_blocked: [] };
2
2
  const actionTransitions = { requested: ["approved", "failed"], approved: ["dispatching", "failed"], dispatching: ["confirmed", "failed", "unknown"], unknown: ["dispatching", "confirmed", "failed"], confirmed: [], failed: [] };
3
+ const goalTransitions = { active: ["paused", "blocked", "complete"], paused: ["active", "complete"], blocked: ["active", "complete"], complete: [] };
3
4
  export function assertWakeTransition(from, to) { if (!wakeTransitions[from].includes(to))
4
5
  throw new Error(`invalid wake transition: ${from} -> ${to}`); }
5
6
  export function assertActionTransition(from, to) { if (!actionTransitions[from].includes(to))
6
7
  throw new Error(`invalid action transition: ${from} -> ${to}`); }
8
+ export function assertGoalTransition(from, to) { if (from !== to && !goalTransitions[from].includes(to))
9
+ throw new Error(`invalid goal transition: ${from} -> ${to}`); }
7
10
  export function assertHandoff(value) { if (!Array.isArray(value.observations) || !Array.isArray(value.results) || !Array.isArray(value.nextSteps))
8
11
  throw new Error("invalid handoff: observations, results and nextSteps are required arrays"); }
9
12
  export function assertActionRequest(value) { if (!value.reason.trim())
@@ -13,6 +16,7 @@ export function assertActionRequest(value) { if (!value.reason.trim())
13
16
  throw new Error("action connector is required"); if (value.reconciledAt !== null)
14
17
  throw new Error("requested action cannot be reconciled"); }
15
18
  export function assertGoalSnapshot(value) { if (!value.objective.trim() || !value.owner.trim())
16
- throw new Error("goal objective and owner are required"); }
19
+ throw new Error("goal objective and owner are required"); if (!["active", "paused", "blocked", "complete"].includes(value.phase))
20
+ throw new Error(`invalid goal phase: ${value.phase}`); }
17
21
  export function capabilityFor(manifest, kind) { return manifest.capabilities.find((capability) => capability.kind === kind) ?? null; }
18
22
  //# sourceMappingURL=execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AA6EA,MAAM,eAAe,GAA8C,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AAC5O,MAAM,iBAAiB,GAAkD,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACjR,MAAM,UAAU,oBAAoB,CAAC,IAAgB,EAAE,EAAc,IAAU,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACvL,MAAM,UAAU,sBAAsB,CAAC,IAAkB,EAAE,EAAgB,IAAU,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjM,MAAM,UAAU,aAAa,CAAC,KAAc,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC,CAAC,CAAC;AAChQ,MAAM,UAAU,mBAAmB,CAAC,KAAqB,IAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;IAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;IAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;IAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;IAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC;AACzd,MAAM,UAAU,kBAAkB,CAAC,KAAmB,IAAU,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;IAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC;AAC/K,MAAM,UAAU,aAAa,CAAC,QAA2B,EAAE,IAAY,IAAgC,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"AA4GA,MAAM,eAAe,GAA8C,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AAC5O,MAAM,iBAAiB,GAAkD,EAAE,SAAS,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AACjR,MAAM,eAAe,GAA4C,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC9L,MAAM,UAAU,oBAAoB,CAAC,IAAgB,EAAE,EAAc,IAAU,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACvL,MAAM,UAAU,sBAAsB,CAAC,IAAkB,EAAE,EAAgB,IAAU,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjM,MAAM,UAAU,oBAAoB,CAAC,IAAe,EAAE,EAAa,IAAU,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACpM,MAAM,UAAU,aAAa,CAAC,KAAc,IAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC,CAAC,CAAC;AAChQ,MAAM,UAAU,mBAAmB,CAAC,KAAqB,IAAU,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;IAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW;IAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE;IAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;IAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC;AACzd,MAAM,UAAU,kBAAkB,CAAC,KAAmB,IAAU,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;IAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9S,MAAM,UAAU,aAAa,CAAC,QAA2B,EAAE,IAAY,IAAgC,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const CONTRACT_VERSION: "0.3.0";
1
+ export declare const CONTRACT_VERSION: "0.4.0";
2
2
  export declare const CONTRACT_STABILITY: "experimental";
3
3
  export type JsonPrimitive = string | number | boolean | null;
4
4
  export type JsonValue = JsonPrimitive | JsonValue[] | {
@@ -11,6 +11,8 @@ export interface EventInput {
11
11
  actor: string;
12
12
  type: string;
13
13
  data: JsonValue;
14
+ /** An unfamiliar reader may skip this event without changing replay semantics. */
15
+ ignorable?: true;
14
16
  }
15
17
  /** One immutable fact in the global ledger and in one logical stream. */
16
18
  export interface EventRecord extends EventInput {
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAG,cAAuB,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnF,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;CACjB;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAC5C,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;IAClD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACpE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAC1D,MAAM,IAAI,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,KAAK;IAAG,GAAG,IAAI,IAAI,CAAA;CAAE;AAEtC,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAA6B;AAC/E,wBAAgB,aAAa,CAAC,KAAK,SAAe,GAAG,MAAM,CAA+B;AAC1F,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAA6B"}
1
+ {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,OAAgB,CAAC;AACjD,eAAO,MAAM,kBAAkB,EAAG,cAAuB,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnF,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,kFAAkF;IAClF,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IAC5C,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,WAAW,EAAE,CAAC;IAClD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACpE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC;IAC1D,MAAM,IAAI,WAAW,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,KAAK;IAAG,GAAG,IAAI,IAAI,CAAA;CAAE;AAEtC,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAA6B;AAC/E,wBAAgB,aAAa,CAAC,KAAK,SAAe,GAAG,MAAM,CAA+B;AAC1F,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAA6B"}
@@ -1,4 +1,4 @@
1
- export const CONTRACT_VERSION = "0.3.0";
1
+ export const CONTRACT_VERSION = "0.4.0";
2
2
  export const CONTRACT_STABILITY = "experimental";
3
3
  export function wakeStream(wakeId) { return `wake:${wakeId}`; }
4
4
  export function controlStream(actor = "supervisor") { return `control:${actor}`; }
@@ -1 +1 @@
1
- {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAgB,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAuB,CAAC;AA8B1D,MAAM,UAAU,UAAU,CAAC,MAAc,IAAY,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/E,MAAM,UAAU,aAAa,CAAC,KAAK,GAAG,YAAY,IAAY,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1F,MAAM,UAAU,UAAU,CAAC,MAAc,IAAY,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAgB,CAAC;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAuB,CAAC;AAgC1D,MAAM,UAAU,UAAU,CAAC,MAAc,IAAY,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC;AAC/E,MAAM,UAAU,aAAa,CAAC,KAAK,GAAG,YAAY,IAAY,OAAO,WAAW,KAAK,EAAE,CAAC,CAAC,CAAC;AAC1F,MAAM,UAAU,UAAU,CAAC,MAAc,IAAY,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC"}
@@ -1,5 +1,15 @@
1
1
  import type { EventInput, EventRecord, JsonValue } from "./kernel.js";
2
+ export declare const SESSION_FORMAT_VERSION = 1;
3
+ export declare const SESSION_MIN_READABLE_VERSION = 0;
2
4
  export type SessionEventType = "session.started" | "request.prepared" | "turn.started" | "message.user" | "message.assistant.delta" | "message.assistant.completed" | "tool.called" | "tool.completed" | "context.compacted" | "turn.completed" | "session.completed" | "session.interrupted";
5
+ export interface SessionStarted {
6
+ formatVersion: typeof SESSION_FORMAT_VERSION;
7
+ provider: string;
8
+ model: string;
9
+ runner: string;
10
+ contextWindowTokens: number;
11
+ maxOutputTokensPerTurn: number;
12
+ }
3
13
  export interface SessionMessage {
4
14
  id: string;
5
15
  role: "user" | "assistant" | "tool";
@@ -30,6 +40,20 @@ export interface ReplayedSession {
30
40
  export declare function isSessionEvent(event: Pick<EventRecord, "type">): event is EventRecord & {
31
41
  type: SessionEventType;
32
42
  };
43
+ export declare class SessionFormatUnsupportedError extends Error {
44
+ readonly foundVersion: number;
45
+ readonly supportedVersion: number;
46
+ constructor(foundVersion: number, supportedVersion?: number);
47
+ }
48
+ export declare class SessionEventUnsupportedError extends Error {
49
+ readonly eventType: string;
50
+ constructor(eventType: string);
51
+ }
52
+ export declare class SessionCorruptionError extends Error {
53
+ constructor(message: string);
54
+ }
55
+ /** Import supported legacy records without rewriting the append-only source log. */
56
+ export declare function upgradeSessionEvents(source: readonly EventRecord[]): EventRecord[];
33
57
  /** Rebuild the model-visible transcript from canonical, normalized session events. */
34
58
  export declare function replaySession(events: readonly EventRecord[]): ReplayedSession;
35
59
  /** Synthetic facts that close an interrupted session without hiding unknown tool outcomes. */
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,GAAG,yBAAyB,GAAG,6BAA6B,GAAG,aAAa,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAC9R,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE;AAC/I,MAAM,WAAW,eAAe;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE;AAC1M,MAAM,WAAW,eAAe;IAAG,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;IAAC,aAAa,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAAC,WAAW,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE;AAGnO,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,WAAW,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAA8D;AAEjL,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,eAAe,CA6B7E;AAED,8FAA8F;AAC9F,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAOhH"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,cAAc,GAAG,cAAc,GAAG,yBAAyB,GAAG,6BAA6B,GAAG,aAAa,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;AAC9R,MAAM,WAAW,cAAc;IAAG,aAAa,EAAE,OAAO,sBAAsB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,sBAAsB,EAAE,MAAM,CAAA;CAAE;AAC9L,MAAM,WAAW,cAAc;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE;AAC/I,MAAM,WAAW,eAAe;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,EAAE,SAAS,EAAE,CAAC;IAAC,WAAW,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE;AAC1M,MAAM,WAAW,eAAe;IAAG,QAAQ,EAAE,cAAc,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;IAAC,aAAa,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAAC,WAAW,EAAE,eAAe,GAAG,IAAI,CAAA;CAAE;AAGnO,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,WAAW,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAA8D;AAEjL,qBAAa,6BAA8B,SAAQ,KAAK;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM;IAAE,QAAQ,CAAC,gBAAgB;gBAA/C,YAAY,EAAE,MAAM,EAAW,gBAAgB,SAAyB;CAC9F;AACD,qBAAa,4BAA6B,SAAQ,KAAK;IAAe,QAAQ,CAAC,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAA6H;AAC7N,qBAAa,sBAAuB,SAAQ,KAAK;gBAAe,OAAO,EAAE,MAAM;CAA6D;AAE5I,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,WAAW,EAAE,CAuBlF;AAED,sFAAsF;AACtF,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,eAAe,CA2B7E;AAED,8FAA8F;AAC9F,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAOhH"}
@@ -1,16 +1,68 @@
1
+ export const SESSION_FORMAT_VERSION = 1;
2
+ export const SESSION_MIN_READABLE_VERSION = 0;
1
3
  const SESSION_TYPES = new Set(["session.started", "request.prepared", "turn.started", "message.user", "message.assistant.delta", "message.assistant.completed", "tool.called", "tool.completed", "context.compacted", "turn.completed", "session.completed", "session.interrupted"]);
2
4
  export function isSessionEvent(event) { return SESSION_TYPES.has(event.type); }
5
+ export class SessionFormatUnsupportedError extends Error {
6
+ foundVersion;
7
+ supportedVersion;
8
+ constructor(foundVersion, supportedVersion = SESSION_FORMAT_VERSION) {
9
+ super(`session format ${foundVersion} is unsupported by this harness (supports ${supportedVersion}); upgrade the harness`);
10
+ this.foundVersion = foundVersion;
11
+ this.supportedVersion = supportedVersion;
12
+ this.name = "SessionFormatUnsupportedError";
13
+ }
14
+ }
15
+ export class SessionEventUnsupportedError extends Error {
16
+ eventType;
17
+ constructor(eventType) {
18
+ super(`required session event is unknown to this harness: ${eventType}`);
19
+ this.eventType = eventType;
20
+ this.name = "SessionEventUnsupportedError";
21
+ }
22
+ }
23
+ export class SessionCorruptionError extends Error {
24
+ constructor(message) { super(message); this.name = "SessionCorruptionError"; }
25
+ }
26
+ /** Import supported legacy records without rewriting the append-only source log. */
27
+ export function upgradeSessionEvents(source) {
28
+ assertContiguous(source);
29
+ const starts = source.filter((event) => event.type === "session.started");
30
+ if (starts.length === 0) {
31
+ if (source.some((event) => isSessionNamespace(event.type)))
32
+ throw new SessionCorruptionError("session events exist without session.started");
33
+ return [...source];
34
+ }
35
+ if (starts.length !== 1)
36
+ throw new SessionCorruptionError("session stream contains multiple session.started events");
37
+ const rawVersion = field(starts[0].data, "formatVersion");
38
+ let version = rawVersion === undefined ? 0 : Number(rawVersion);
39
+ if (!Number.isSafeInteger(version) || version < SESSION_MIN_READABLE_VERSION)
40
+ throw new SessionCorruptionError(`invalid session format version: ${String(rawVersion)}`);
41
+ if (version > SESSION_FORMAT_VERSION)
42
+ throw new SessionFormatUnsupportedError(version);
43
+ let events = [...source];
44
+ while (version < SESSION_FORMAT_VERSION) {
45
+ if (version === 0) {
46
+ events = events.map((event) => event.type === "session.started" ? { ...event, data: { ...event.data, formatVersion: 1 } } : event);
47
+ version = 1;
48
+ }
49
+ else
50
+ throw new SessionFormatUnsupportedError(version);
51
+ }
52
+ for (const event of events) {
53
+ if (!isSessionEvent(event) && isSessionNamespace(event.type) && event.ignorable !== true)
54
+ throw new SessionEventUnsupportedError(event.type);
55
+ }
56
+ return events;
57
+ }
3
58
  /** Rebuild the model-visible transcript from canonical, normalized session events. */
4
59
  export function replaySession(events) {
5
- let expected = events[0]?.streamSeq ?? 1;
60
+ const upgraded = upgradeSessionEvents(events);
6
61
  const messages = [];
7
62
  const calls = new Map();
8
63
  let status = "running";
9
64
  let lastRequest = null;
10
- for (const event of events) {
11
- if (event.streamSeq !== expected)
12
- throw new Error(`session stream gap: expected ${expected}, got ${event.streamSeq}`);
13
- expected += 1;
65
+ for (const event of upgraded) {
14
66
  if (!isSessionEvent(event))
15
67
  continue;
16
68
  const data = event.data;
@@ -50,4 +102,14 @@ export function interruptedSessionEvents(events, ts, actor) {
50
102
  repairs.push({ streamId, ts, actor, type: "session.interrupted", data: { reason: "runner interrupted" } });
51
103
  return repairs;
52
104
  }
105
+ function assertContiguous(events) {
106
+ let expected = events[0]?.streamSeq ?? 1;
107
+ for (const event of events) {
108
+ if (event.streamSeq !== expected)
109
+ throw new SessionCorruptionError(`session stream gap: expected ${expected}, got ${event.streamSeq}`);
110
+ expected += 1;
111
+ }
112
+ }
113
+ function isSessionNamespace(type) { return ["session.", "request.", "turn.", "message.", "tool.", "context."].some((prefix) => type.startsWith(prefix)); }
114
+ function field(value, key) { return value && typeof value === "object" && !Array.isArray(value) ? value[key] : undefined; }
53
115
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "goah-ledger-contract",
3
3
  "private": true,
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -1,8 +1,8 @@
1
1
  import { DatabaseSync } from "node:sqlite";
2
- import { type ActionSnapshot, type ActionStatus, type AuditAdvice, type Clock, type EventInput, type EventRecord, type GoalSnapshot, type HandoffCommit, type Ledger, type MailSnapshot, type MetricSample, type ScheduleSnapshot, type WakeSnapshot } from "goah-ledger-contract";
3
- type FaultPoint = "after_event_before_projection";
2
+ import { type ActionSnapshot, type ActionStatus, type AuditAdvice, type Clock, type DelegationRequest, type DelegationResult, type EventInput, type EventRecord, type GoalSnapshot, type HandoffCommit, type Ledger, type MailSnapshot, type MetricSample, type ReassignmentRequest, type ReassignmentResult, type ScheduleSnapshot, type WakeSnapshot } from "goah-ledger-contract";
3
+ type FaultPoint = "after_event_before_projection" | "after_delegation_event" | "after_reassignment_event";
4
4
  type FaultInjector = (point: FaultPoint) => void;
5
- export declare const SQLITE_SCHEMA_VERSION = 6;
5
+ export declare const SQLITE_SCHEMA_VERSION = 7;
6
6
  export interface SqliteLedgerOptions {
7
7
  faultInjector?: FaultInjector;
8
8
  clock?: Clock;
@@ -17,6 +17,8 @@ export declare class SqliteLedger implements Ledger {
17
17
  appendEvents(inputs: EventInput[]): EventRecord[];
18
18
  readStream(streamId: string, fromStreamSeq?: number): EventRecord[];
19
19
  putGoal(goal: GoalSnapshot, actor: string, wakeId?: string): EventRecord;
20
+ commitDelegation(request: DelegationRequest, actor: string, wakeId?: string): DelegationResult;
21
+ commitReassignment(request: ReassignmentRequest, actor: string, wakeId?: string): ReassignmentResult;
20
22
  putSchedule(value: ScheduleSnapshot, actor: string, wakeId?: string): EventRecord;
21
23
  enqueueWake(input: WakeSnapshot, actor: string): {
22
24
  event: EventRecord;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { DatabaseSync } from "node:sqlite";
2
- import { assertActionRequest, assertActionTransition, assertGoalSnapshot, controlStream, goalStream, wakeStream, } from "goah-ledger-contract";
3
- export const SQLITE_SCHEMA_VERSION = 6;
2
+ import { assertActionRequest, assertActionTransition, assertGoalSnapshot, assertGoalTransition, controlStream, goalStream, wakeStream, } from "goah-ledger-contract";
3
+ export const SQLITE_SCHEMA_VERSION = 7;
4
4
  const createGoals = `CREATE TABLE IF NOT EXISTS goals (
5
5
  id TEXT PRIMARY KEY,
6
6
  parent_id TEXT REFERENCES goals(id),
7
7
  objective TEXT NOT NULL,
8
8
  owner TEXT NOT NULL,
9
- phase TEXT NOT NULL,
9
+ phase TEXT NOT NULL CHECK(phase IN ('active','paused','blocked','complete')),
10
10
  revision INTEGER NOT NULL CHECK(revision >= 0)
11
11
  ) STRICT;`;
12
12
  const createWakes = `CREATE TABLE IF NOT EXISTS wakes (
@@ -74,6 +74,14 @@ WHEN OLD.status <> NEW.status AND NOT (
74
74
  (OLD.status = 'unknown' AND NEW.status IN ('dispatching','confirmed','failed'))
75
75
  )
76
76
  BEGIN SELECT RAISE(ABORT, 'invalid action transition'); END;
77
+
78
+ CREATE TRIGGER IF NOT EXISTS goals_valid_transition BEFORE UPDATE OF phase ON goals
79
+ WHEN OLD.phase <> NEW.phase AND NOT (
80
+ (OLD.phase = 'active' AND NEW.phase IN ('paused','blocked','complete')) OR
81
+ (OLD.phase = 'paused' AND NEW.phase IN ('active','complete')) OR
82
+ (OLD.phase = 'blocked' AND NEW.phase IN ('active','complete'))
83
+ )
84
+ BEGIN SELECT RAISE(ABORT, 'invalid goal transition'); END;
77
85
  `;
78
86
  const schema = `
79
87
  CREATE TABLE IF NOT EXISTS events (
@@ -84,6 +92,7 @@ CREATE TABLE IF NOT EXISTS events (
84
92
  actor TEXT NOT NULL,
85
93
  type TEXT NOT NULL,
86
94
  data TEXT NOT NULL CHECK(json_valid(data)),
95
+ ignorable INTEGER CHECK(ignorable IS NULL OR ignorable = 1),
87
96
  UNIQUE(stream_id, stream_seq)
88
97
  ) STRICT;
89
98
  ${createGoals}
@@ -147,7 +156,16 @@ export class SqliteLedger {
147
156
  throw new Error("goal revision CAS failed");
148
157
  if (goal.parentId !== current.parentId)
149
158
  throw new Error("goal reparenting is not supported");
159
+ assertGoalTransition(current.phase, goal.phase);
150
160
  this.#assertGoalAuthority(current.parentId, actor);
161
+ if (current.parentId === null && goal.phase === "complete") {
162
+ const open = this.db.prepare(`WITH RECURSIVE descendants(id) AS (
163
+ SELECT id FROM goals WHERE parent_id=?
164
+ UNION ALL SELECT g.id FROM goals g JOIN descendants d ON g.parent_id=d.id
165
+ ) SELECT 1 FROM goals WHERE id IN (SELECT id FROM descendants) AND phase<>'complete' LIMIT 1`).get(goal.id);
166
+ if (open)
167
+ throw new Error("root goal cannot complete while descendants remain non-complete");
168
+ }
151
169
  }
152
170
  else {
153
171
  if (goal.revision !== 0)
@@ -156,6 +174,105 @@ export class SqliteLedger {
156
174
  }
157
175
  return this.#project("goals", goal, actor, "goal.put", wakeId, undefined, goalStream(goal.id));
158
176
  }
177
+ commitDelegation(request, actor, wakeId) {
178
+ const existing = this.#delegationResult(request.id);
179
+ if (existing) {
180
+ if (existing.goal.id !== request.childGoal.id || existing.goal.parentId !== request.parentGoalId || existing.goal.objective !== request.childGoal.objective || existing.goal.owner !== request.childGoal.owner)
181
+ throw new Error("delegation id was reused with a different child goal");
182
+ return existing;
183
+ }
184
+ if (!request.id.trim() || !request.reason.trim())
185
+ throw new Error("delegation id and reason are required");
186
+ if (!request.childGoal.id.trim() || !request.childGoal.objective.trim() || !request.childGoal.owner.trim())
187
+ throw new Error("delegation child goal is incomplete");
188
+ this.#assertEvidenceExists(request.evidence);
189
+ const parent = this.#getGoal(request.parentGoalId);
190
+ if (!parent)
191
+ throw new Error("delegation parent goal does not exist");
192
+ if (parent.owner !== actor)
193
+ throw new Error("only the parent goal owner may delegate");
194
+ if (parent.phase !== "active")
195
+ throw new Error("delegation parent goal must be active");
196
+ if (this.#getGoal(request.childGoal.id))
197
+ throw new Error("delegation child goal already exists");
198
+ return this.#transaction(() => {
199
+ const goal = { ...request.childGoal, parentId: request.parentGoalId, phase: "active", revision: 0 };
200
+ const mail = {
201
+ id: `delegation-mail:${request.id}`,
202
+ to: goal.owner,
203
+ from: actor,
204
+ level: "decision",
205
+ body: { type: "delegation", delegationId: request.id, goalId: goal.id, parentGoalId: request.parentGoalId, brief: request.brief, reason: request.reason, evidence: request.evidence },
206
+ readAt: null,
207
+ };
208
+ const wakeBase = {
209
+ id: `delegation-wake:${request.id}`,
210
+ agent: goal.owner,
211
+ triggerRef: `delegation:${request.id}`,
212
+ status: "queued",
213
+ leaseUntil: null,
214
+ attempt: 0,
215
+ startedAt: null,
216
+ endedAt: null,
217
+ enqueuedSeq: 0,
218
+ leaseToken: null,
219
+ runnerPid: null,
220
+ };
221
+ this.#insertEvent({
222
+ streamId: wakeId ? wakeStream(wakeId) : controlStream("delegations"),
223
+ ts: this.#now(),
224
+ actor,
225
+ type: "delegation.created",
226
+ data: { delegationId: request.id, parentGoalId: request.parentGoalId, goalId: goal.id, mailId: mail.id, wakeId: wakeBase.id, reason: request.reason, evidence: request.evidence },
227
+ });
228
+ this.#faultInjector?.("after_delegation_event");
229
+ this.#recordProjection("goals", goal, actor, "goal.put", wakeId, undefined, undefined, goalStream(goal.id));
230
+ this.#recordProjection("mailbox", mail, actor, "mail.put", wakeId);
231
+ const wake = { ...wakeBase, enqueuedSeq: this.#nextEventSeq() };
232
+ this.#recordProjection("wakes", wake, "supervisor", "wake.enqueued", wake.id, undefined, wake.enqueuedSeq);
233
+ return { delegationId: request.id, goal, mail, wake };
234
+ });
235
+ }
236
+ commitReassignment(request, actor, wakeId) {
237
+ const existing = this.#reassignmentResult(request.id);
238
+ if (existing) {
239
+ if (existing.goal.id !== request.goalId || existing.goal.owner !== request.newOwner)
240
+ throw new Error("reassignment id was reused with a different target");
241
+ return existing;
242
+ }
243
+ if (!request.id.trim() || !request.newOwner.trim() || !request.reason.trim())
244
+ throw new Error("reassignment id, owner and reason are required");
245
+ this.#assertEvidenceExists(request.evidence);
246
+ const current = this.#getGoal(request.goalId);
247
+ if (!current)
248
+ throw new Error("reassignment goal does not exist");
249
+ if (!current.parentId)
250
+ throw new Error("root goals cannot be reassigned by CEO");
251
+ this.#assertGoalAuthority(current.parentId, actor);
252
+ if (current.phase === "complete")
253
+ throw new Error("completed goals cannot be reassigned");
254
+ if (current.owner === request.newOwner)
255
+ throw new Error("reassignment owner is unchanged");
256
+ return this.#transaction(() => {
257
+ const goal = { ...current, owner: request.newOwner, revision: current.revision + 1 };
258
+ const mail = [
259
+ { id: `reassignment-old-mail:${request.id}`, to: current.owner, from: actor, level: "fyi", body: { type: "reassignment", reassignmentId: request.id, goalId: goal.id, role: "previous_owner", reason: request.reason, evidence: request.evidence }, readAt: null },
260
+ { id: `reassignment-new-mail:${request.id}`, to: goal.owner, from: actor, level: "decision", body: { type: "reassignment", reassignmentId: request.id, goalId: goal.id, role: "new_owner", brief: request.brief, reason: request.reason, evidence: request.evidence }, readAt: null },
261
+ ];
262
+ const wakeBase = { id: `reassignment-wake:${request.id}`, agent: goal.owner, triggerRef: `reassignment:${request.id}`, status: "queued", leaseUntil: null, attempt: 0, startedAt: null, endedAt: null, enqueuedSeq: 0, leaseToken: null, runnerPid: null };
263
+ this.#insertEvent({ streamId: wakeId ? wakeStream(wakeId) : controlStream("reassignments"), ts: this.#now(), actor, type: "goal.reassigned", data: { reassignmentId: request.id, goalId: goal.id, oldOwner: current.owner, newOwner: goal.owner, mailIds: mail.map((item) => item.id), wakeId: wakeBase.id, reason: request.reason, evidence: request.evidence } });
264
+ this.#faultInjector?.("after_reassignment_event");
265
+ this.#recordProjection("goals", goal, actor, "goal.put", wakeId, undefined, undefined, goalStream(goal.id));
266
+ const oldWake = this.queuedWakeForAgent(current.owner);
267
+ if (oldWake)
268
+ this.#recordProjection("wakes", { ...oldWake, status: "abnormal", endedAt: this.#now() }, "supervisor", "wake.suppressed", oldWake.id);
269
+ for (const item of mail)
270
+ this.#recordProjection("mailbox", item, actor, "mail.put", wakeId);
271
+ const wake = { ...wakeBase, enqueuedSeq: this.#nextEventSeq() };
272
+ this.#recordProjection("wakes", wake, "supervisor", "wake.enqueued", wake.id, undefined, wake.enqueuedSeq);
273
+ return { reassignmentId: request.id, goal, mail, wake };
274
+ });
275
+ }
159
276
  putSchedule(value, actor, wakeId) {
160
277
  if (actor !== "supervisor" && actor !== value.agent)
161
278
  throw new Error("schedule may only be set by its agent or supervisor");
@@ -373,6 +490,35 @@ export class SqliteLedger {
373
490
  }
374
491
  });
375
492
  }
493
+ #delegationResult(id) {
494
+ const row = this.db.prepare("SELECT data FROM events WHERE type='delegation.created' AND json_extract(data,'$.delegationId')=? ORDER BY seq LIMIT 1").get(id);
495
+ if (!row)
496
+ return null;
497
+ const data = JSON.parse(row.data);
498
+ const goal = this.#getGoal(data.goalId);
499
+ const mailRow = this.db.prepare("SELECT * FROM mailbox WHERE id=?").get(data.mailId);
500
+ const wake = this.wake(data.wakeId);
501
+ if (!goal || !mailRow || !wake)
502
+ throw new Error("committed delegation projections are incomplete");
503
+ return { delegationId: id, goal, mail: mapMail(mailRow), wake };
504
+ }
505
+ #reassignmentResult(id) {
506
+ const row = this.db.prepare("SELECT data FROM events WHERE type='goal.reassigned' AND json_extract(data,'$.reassignmentId')=? ORDER BY seq LIMIT 1").get(id);
507
+ if (!row)
508
+ return null;
509
+ const data = JSON.parse(row.data);
510
+ const goal = this.#getGoal(data.goalId);
511
+ const mail = data.mailIds.map((mailId) => {
512
+ const mailRow = this.db.prepare("SELECT * FROM mailbox WHERE id=?").get(mailId);
513
+ if (!mailRow)
514
+ throw new Error("committed reassignment mail is missing");
515
+ return mapMail(mailRow);
516
+ });
517
+ const wake = this.wake(data.wakeId);
518
+ if (!goal || !wake)
519
+ throw new Error("committed reassignment projections are incomplete");
520
+ return { reassignmentId: id, goal, mail, wake };
521
+ }
376
522
  #decideAction(id, status, approver, reason, evidence) {
377
523
  if (!reason.trim())
378
524
  throw new Error("approval reason is required");
@@ -427,8 +573,8 @@ export class SqliteLedger {
427
573
  throw new Error("event streamId, actor and type are required");
428
574
  const streamSeq = Number(this.db.prepare("SELECT COALESCE(MAX(stream_seq),0)+1 AS next FROM events WHERE stream_id=?").get(input.streamId).next);
429
575
  const result = expectedSeq === undefined
430
- ? this.db.prepare("INSERT INTO events(stream_id,stream_seq,ts,actor,type,data) VALUES (?,?,?,?,?,json(?))").run(input.streamId, streamSeq, input.ts, input.actor, input.type, JSON.stringify(input.data))
431
- : this.db.prepare("INSERT INTO events(seq,stream_id,stream_seq,ts,actor,type,data) VALUES (?,?,?,?,?,?,json(?))").run(expectedSeq, input.streamId, streamSeq, input.ts, input.actor, input.type, JSON.stringify(input.data));
576
+ ? this.db.prepare("INSERT INTO events(stream_id,stream_seq,ts,actor,type,data,ignorable) VALUES (?,?,?,?,?,json(?),?)").run(input.streamId, streamSeq, input.ts, input.actor, input.type, JSON.stringify(input.data), input.ignorable === true ? 1 : null)
577
+ : this.db.prepare("INSERT INTO events(seq,stream_id,stream_seq,ts,actor,type,data,ignorable) VALUES (?,?,?,?,?,?,json(?),?)").run(expectedSeq, input.streamId, streamSeq, input.ts, input.actor, input.type, JSON.stringify(input.data), input.ignorable === true ? 1 : null);
432
578
  return { ...input, seq: Number(result.lastInsertRowid), streamSeq };
433
579
  }
434
580
  #nextEventSeq() {
@@ -470,7 +616,7 @@ export class SqliteLedger {
470
616
  this.#transaction(() => {
471
617
  this.db.exec(`PRAGMA defer_foreign_keys=ON;
472
618
  DROP TRIGGER IF EXISTS events_no_update; DROP TRIGGER IF EXISTS events_no_delete; DROP TRIGGER IF EXISTS events_fts_insert;
473
- DROP TRIGGER IF EXISTS wakes_valid_transition; DROP TRIGGER IF EXISTS actions_valid_transition;
619
+ DROP TRIGGER IF EXISTS wakes_valid_transition; DROP TRIGGER IF EXISTS actions_valid_transition; DROP TRIGGER IF EXISTS goals_valid_transition;
474
620
  DROP INDEX IF EXISTS events_agent_kind_seq; DROP INDEX IF EXISTS events_wake_seq; DROP INDEX IF EXISTS events_coalesced_trigger;
475
621
  DROP INDEX IF EXISTS events_actor_type_seq; DROP INDEX IF EXISTS events_stream_seq;
476
622
  DROP INDEX IF EXISTS wakes_one_active_agent; DROP INDEX IF EXISTS wakes_queue_order; DROP INDEX IF EXISTS schedule_due; DROP INDEX IF EXISTS actions_agent_status;
@@ -503,14 +649,18 @@ export class SqliteLedger {
503
649
  actor TEXT NOT NULL,
504
650
  type TEXT NOT NULL,
505
651
  data TEXT NOT NULL CHECK(json_valid(data)),
652
+ ignorable INTEGER CHECK(ignorable IS NULL OR ignorable = 1),
506
653
  UNIQUE(stream_id, stream_seq)
507
654
  ) STRICT;
508
- INSERT INTO events(seq,stream_id,stream_seq,ts,actor,type,data)
509
- SELECT seq,stream_id,ROW_NUMBER() OVER (PARTITION BY stream_id ORDER BY seq),ts,agent,kind,data FROM (
655
+ INSERT INTO events(seq,stream_id,stream_seq,ts,actor,type,data,ignorable)
656
+ SELECT seq,stream_id,ROW_NUMBER() OVER (PARTITION BY stream_id ORDER BY seq),ts,agent,kind,data,NULL FROM (
510
657
  SELECT seq,ts,agent,kind,data,CASE WHEN wake_id IS NULL THEN 'control:'||agent ELSE 'wake:'||wake_id END AS stream_id FROM events_legacy
511
658
  );
512
659
  DROP TABLE events_legacy;`);
513
660
  }
661
+ else if (!eventColumns.has("ignorable")) {
662
+ this.db.exec("ALTER TABLE events ADD COLUMN ignorable INTEGER CHECK(ignorable IS NULL OR ignorable = 1)");
663
+ }
514
664
  this.db.exec(`${indexesAndTriggers} INSERT INTO events_fts(events_fts) VALUES('rebuild'); PRAGMA user_version=${SQLITE_SCHEMA_VERSION};`);
515
665
  });
516
666
  }
@@ -528,7 +678,7 @@ export class SqliteLedger {
528
678
  }
529
679
  #now() { return this.#clock.now().toISOString(); }
530
680
  }
531
- function mapEvent(r) { return { seq: Number(r.seq), streamId: String(r.stream_id), streamSeq: Number(r.stream_seq), ts: String(r.ts), actor: String(r.actor), type: String(r.type), data: JSON.parse(String(r.data)) }; }
681
+ function mapEvent(r) { return { seq: Number(r.seq), streamId: String(r.stream_id), streamSeq: Number(r.stream_seq), ts: String(r.ts), actor: String(r.actor), type: String(r.type), data: JSON.parse(String(r.data)), ...(Number(r.ignorable) === 1 ? { ignorable: true } : {}) }; }
532
682
  function mapGoal(r) { return { id: String(r.id), parentId: r.parent_id === null ? null : String(r.parent_id), objective: String(r.objective), owner: String(r.owner), phase: String(r.phase), revision: Number(r.revision) }; }
533
683
  function mapSchedule(r) { return { id: String(r.id), agent: String(r.agent), nextWakeAt: String(r.next_wake_at), reason: String(r.reason), setBy: String(r.set_by) }; }
534
684
  function mapWake(r) { return { id: String(r.id), agent: String(r.agent), triggerRef: String(r.trigger_ref), status: String(r.status), leaseUntil: r.lease_until === null ? null : String(r.lease_until), attempt: Number(r.attempt), startedAt: r.started_at === null ? null : String(r.started_at), endedAt: r.ended_at === null ? null : String(r.ended_at), enqueuedSeq: Number(r.enqueued_seq), leaseToken: r.lease_token === null ? null : String(r.lease_token), runnerPid: r.runner_pid === null ? null : Number(r.runner_pid) }; }