@polderlabs/bizar-omp 0.2.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 (202) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +45 -0
  3. package/agents/bizar-architect.md +10 -0
  4. package/agents/bizar-docs.md +10 -0
  5. package/agents/bizar-implementer.md +10 -0
  6. package/agents/bizar-planner.md +10 -0
  7. package/agents/bizar-researcher.md +10 -0
  8. package/agents/bizar-reviewer.md +10 -0
  9. package/agents/bizar-security-reviewer.md +10 -0
  10. package/agents/bizar-verifier.md +10 -0
  11. package/dist/cli/doctor.d.ts +36 -0
  12. package/dist/cli/doctor.d.ts.map +1 -0
  13. package/dist/cli/doctor.js +15 -0
  14. package/dist/cli/doctor.js.map +1 -0
  15. package/dist/cli/install.d.ts +126 -0
  16. package/dist/cli/install.d.ts.map +1 -0
  17. package/dist/cli/install.js +148 -0
  18. package/dist/cli/install.js.map +1 -0
  19. package/dist/cli/main.d.ts +3 -0
  20. package/dist/cli/main.d.ts.map +1 -0
  21. package/dist/cli/main.js +76 -0
  22. package/dist/cli/main.js.map +1 -0
  23. package/dist/cli/migrate.d.ts +19 -0
  24. package/dist/cli/migrate.d.ts.map +1 -0
  25. package/dist/cli/migrate.js +14 -0
  26. package/dist/cli/migrate.js.map +1 -0
  27. package/dist/cli/run.d.ts +3 -0
  28. package/dist/cli/run.d.ts.map +1 -0
  29. package/dist/cli/run.js +5 -0
  30. package/dist/cli/run.js.map +1 -0
  31. package/dist/core/errors.d.ts +21 -0
  32. package/dist/core/errors.d.ts.map +1 -0
  33. package/dist/core/errors.js +30 -0
  34. package/dist/core/errors.js.map +1 -0
  35. package/dist/core/evidence.d.ts +6 -0
  36. package/dist/core/evidence.d.ts.map +1 -0
  37. package/dist/core/evidence.js +31 -0
  38. package/dist/core/evidence.js.map +1 -0
  39. package/dist/core/policies.d.ts +10 -0
  40. package/dist/core/policies.d.ts.map +1 -0
  41. package/dist/core/policies.js +41 -0
  42. package/dist/core/policies.js.map +1 -0
  43. package/dist/core/recovery.d.ts +7 -0
  44. package/dist/core/recovery.d.ts.map +1 -0
  45. package/dist/core/recovery.js +56 -0
  46. package/dist/core/recovery.js.map +1 -0
  47. package/dist/core/transitions.d.ts +14 -0
  48. package/dist/core/transitions.d.ts.map +1 -0
  49. package/dist/core/transitions.js +59 -0
  50. package/dist/core/transitions.js.map +1 -0
  51. package/dist/core/types.d.ts +204 -0
  52. package/dist/core/types.d.ts.map +1 -0
  53. package/dist/core/types.js +2 -0
  54. package/dist/core/types.js.map +1 -0
  55. package/dist/extension.d.ts +43 -0
  56. package/dist/extension.d.ts.map +1 -0
  57. package/dist/extension.js +199 -0
  58. package/dist/extension.js.map +1 -0
  59. package/dist/index.d.ts +16 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +16 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/omp/autonomous-settings.d.ts +9 -0
  64. package/dist/omp/autonomous-settings.d.ts.map +1 -0
  65. package/dist/omp/autonomous-settings.js +47 -0
  66. package/dist/omp/autonomous-settings.js.map +1 -0
  67. package/dist/omp/compatibility.d.ts +22 -0
  68. package/dist/omp/compatibility.d.ts.map +1 -0
  69. package/dist/omp/compatibility.js +4 -0
  70. package/dist/omp/compatibility.js.map +1 -0
  71. package/dist/omp/completion.d.ts +8 -0
  72. package/dist/omp/completion.d.ts.map +1 -0
  73. package/dist/omp/completion.js +14 -0
  74. package/dist/omp/completion.js.map +1 -0
  75. package/dist/omp/config.d.ts +11 -0
  76. package/dist/omp/config.d.ts.map +1 -0
  77. package/dist/omp/config.js +13 -0
  78. package/dist/omp/config.js.map +1 -0
  79. package/dist/omp/context.d.ts +16 -0
  80. package/dist/omp/context.d.ts.map +1 -0
  81. package/dist/omp/context.js +3 -0
  82. package/dist/omp/context.js.map +1 -0
  83. package/dist/omp/dispatch-admission.d.ts +3 -0
  84. package/dist/omp/dispatch-admission.d.ts.map +1 -0
  85. package/dist/omp/dispatch-admission.js +12 -0
  86. package/dist/omp/dispatch-admission.js.map +1 -0
  87. package/dist/omp/integration-recovery.d.ts +11 -0
  88. package/dist/omp/integration-recovery.d.ts.map +1 -0
  89. package/dist/omp/integration-recovery.js +18 -0
  90. package/dist/omp/integration-recovery.js.map +1 -0
  91. package/dist/omp/isolation-policy.d.ts +15 -0
  92. package/dist/omp/isolation-policy.d.ts.map +1 -0
  93. package/dist/omp/isolation-policy.js +9 -0
  94. package/dist/omp/isolation-policy.js.map +1 -0
  95. package/dist/omp/lifecycle.d.ts +15 -0
  96. package/dist/omp/lifecycle.d.ts.map +1 -0
  97. package/dist/omp/lifecycle.js +14 -0
  98. package/dist/omp/lifecycle.js.map +1 -0
  99. package/dist/omp/memory.d.ts +17 -0
  100. package/dist/omp/memory.d.ts.map +1 -0
  101. package/dist/omp/memory.js +4 -0
  102. package/dist/omp/memory.js.map +1 -0
  103. package/dist/omp/model-roles.d.ts +10 -0
  104. package/dist/omp/model-roles.d.ts.map +1 -0
  105. package/dist/omp/model-roles.js +5 -0
  106. package/dist/omp/model-roles.js.map +1 -0
  107. package/dist/omp/result-reconciliation.d.ts +3 -0
  108. package/dist/omp/result-reconciliation.d.ts.map +1 -0
  109. package/dist/omp/result-reconciliation.js +9 -0
  110. package/dist/omp/result-reconciliation.js.map +1 -0
  111. package/dist/omp/rpc.d.ts +62 -0
  112. package/dist/omp/rpc.d.ts.map +1 -0
  113. package/dist/omp/rpc.js +4 -0
  114. package/dist/omp/rpc.js.map +1 -0
  115. package/dist/storage/journal.d.ts +13 -0
  116. package/dist/storage/journal.d.ts.map +1 -0
  117. package/dist/storage/journal.js +72 -0
  118. package/dist/storage/journal.js.map +1 -0
  119. package/dist/storage/migrations.d.ts +9 -0
  120. package/dist/storage/migrations.d.ts.map +1 -0
  121. package/dist/storage/migrations.js +38 -0
  122. package/dist/storage/migrations.js.map +1 -0
  123. package/dist/storage/repository-identity.d.ts +12 -0
  124. package/dist/storage/repository-identity.d.ts.map +1 -0
  125. package/dist/storage/repository-identity.js +67 -0
  126. package/dist/storage/repository-identity.js.map +1 -0
  127. package/dist/tools/evidence.d.ts +9 -0
  128. package/dist/tools/evidence.d.ts.map +1 -0
  129. package/dist/tools/evidence.js +9 -0
  130. package/dist/tools/evidence.js.map +1 -0
  131. package/dist/tools/integrate.d.ts +13 -0
  132. package/dist/tools/integrate.d.ts.map +1 -0
  133. package/dist/tools/integrate.js +106 -0
  134. package/dist/tools/integrate.js.map +1 -0
  135. package/dist/tools/result.d.ts +10 -0
  136. package/dist/tools/result.d.ts.map +1 -0
  137. package/dist/tools/result.js +2 -0
  138. package/dist/tools/result.js.map +1 -0
  139. package/dist/tools/verify.d.ts +14 -0
  140. package/dist/tools/verify.d.ts.map +1 -0
  141. package/dist/tools/verify.js +37 -0
  142. package/dist/tools/verify.js.map +1 -0
  143. package/dist/tools/workflow.d.ts +9 -0
  144. package/dist/tools/workflow.d.ts.map +1 -0
  145. package/dist/tools/workflow.js +65 -0
  146. package/dist/tools/workflow.js.map +1 -0
  147. package/dist/workflows/direct.d.ts +10 -0
  148. package/dist/workflows/direct.d.ts.map +1 -0
  149. package/dist/workflows/direct.js +2 -0
  150. package/dist/workflows/direct.js.map +1 -0
  151. package/dist/workflows/implement.d.ts +3 -0
  152. package/dist/workflows/implement.d.ts.map +1 -0
  153. package/dist/workflows/implement.js +4 -0
  154. package/dist/workflows/implement.js.map +1 -0
  155. package/dist/workflows/plan.d.ts +18 -0
  156. package/dist/workflows/plan.d.ts.map +1 -0
  157. package/dist/workflows/plan.js +6 -0
  158. package/dist/workflows/plan.js.map +1 -0
  159. package/dist/workflows/research.d.ts +16 -0
  160. package/dist/workflows/research.d.ts.map +1 -0
  161. package/dist/workflows/research.js +2 -0
  162. package/dist/workflows/research.js.map +1 -0
  163. package/dist/workflows/review.d.ts +16 -0
  164. package/dist/workflows/review.d.ts.map +1 -0
  165. package/dist/workflows/review.js +2 -0
  166. package/dist/workflows/review.js.map +1 -0
  167. package/dist/workflows/verify.d.ts +10 -0
  168. package/dist/workflows/verify.d.ts.map +1 -0
  169. package/dist/workflows/verify.js +2 -0
  170. package/dist/workflows/verify.js.map +1 -0
  171. package/docs/compatibility/baseline.json +8 -0
  172. package/docs/compatibility/lifecycle-observation.md +5 -0
  173. package/docs/compatibility/phase-0-report.md +5 -0
  174. package/docs/compatibility/recovery-report.md +3 -0
  175. package/docs/compatibility/supported-surfaces.json +7 -0
  176. package/docs/decisions/native-api-boundary.md +5 -0
  177. package/docs/evaluations/baseline.md +3 -0
  178. package/docs/migration/agent-disposition.json +6 -0
  179. package/docs/migration/final-disposition.json +9 -0
  180. package/docs/migration/legacy-inventory.json +16 -0
  181. package/docs/releases/0.2.0.md +9 -0
  182. package/docs/releases/beta-acceptance.md +3 -0
  183. package/docs/releases/native-stable.md +3 -0
  184. package/docs/releases/npm-publishing.md +22 -0
  185. package/docs/releases/rollback.md +3 -0
  186. package/docs/releases/support-matrix.md +11 -0
  187. package/docs/security/qualification.md +3 -0
  188. package/docs/security/threat-model.md +5 -0
  189. package/optional/openkan/index.ts +3 -0
  190. package/package.json +59 -0
  191. package/prompts/bizar-system.md +3 -0
  192. package/rules/bizar-core.md +7 -0
  193. package/rules/bizar-native-omp.md +6 -0
  194. package/schemas/evidence-record.schema.json +16 -0
  195. package/schemas/workflow-run.schema.json +16 -0
  196. package/skills/bizar-architecture/SKILL.md +6 -0
  197. package/skills/bizar-planning/SKILL.md +6 -0
  198. package/skills/bizar-research/SKILL.md +6 -0
  199. package/skills/bizar-review/SKILL.md +6 -0
  200. package/skills/bizar-security/SKILL.md +6 -0
  201. package/skills/bizar-testing/SKILL.md +6 -0
  202. package/skills/bizar-workflow/SKILL.md +6 -0
@@ -0,0 +1,14 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ export function migrationReport(source, apply = false) {
4
+ const items = [];
5
+ const add = (relative, disposition, reason) => { if (existsSync(join(source, relative)))
6
+ items.push({ path: relative, disposition, reason }); };
7
+ add("config/claude/agents", "port", "Roles are re-authored as native OMP agent definitions");
8
+ add("config/skills", "port", "Markdown skill content is selectively re-authored, never mirrored as executable host plumbing");
9
+ add("config/claude/hooks", "retire", "OMP lifecycle events replace Claude hook dispatch");
10
+ add("config/workflows", "native-replacement", "Typed reducers and native task admission replace host-specific workflow scripts");
11
+ add("packages/sdk/src", "retire", "The new package has no second SDK/MCP runtime");
12
+ return { schemaVersion: 1, source, apply, destructive: false, items, summary: { discovered: items.length, applied: 0, preserved: true }, note: apply ? "Apply is intentionally a no-op until each item has an explicit non-destructive migration handler." : "Dry-run only; no source or user state was changed." };
13
+ }
14
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/cli/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,KAAK,GAAG,KAAK;IAC3D,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAE,WAAyC,EAAE,MAAc,EAAE,EAAE,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9L,GAAG,CAAC,sBAAsB,EAAE,MAAM,EAAE,uDAAuD,CAAC,CAAC;IAAC,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,+FAA+F,CAAC,CAAC;IAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,EAAE,mDAAmD,CAAC,CAAC;IAAC,GAAG,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,iFAAiF,CAAC,CAAC;IAAC,GAAG,CAAC,kBAAkB,EAAE,QAAQ,EAAE,+CAA+C,CAAC,CAAC;IAC7gB,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,mGAAmG,CAAC,CAAC,CAAC,oDAAoD,EAAE,CAAC;AACtT,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ObjectiveContract } from "../core/types.js";
2
+ export declare function startRun(objective: ObjectiveContract, cwd?: string): import("../core/types.js").WorkflowRun;
3
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,wBAAgB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,SAAgB,0CAAkK"}
@@ -0,0 +1,5 @@
1
+ import { repositoryIdentity, statePath } from "../storage/repository-identity.js";
2
+ import { Journal } from "../storage/journal.js";
3
+ import { startObjective, bindSession } from "../omp/lifecycle.js";
4
+ export function startRun(objective, cwd = process.cwd()) { const identity = repositoryIdentity(cwd); const binding = bindSession(new Journal(statePath(identity)), { cwd }); return startObjective(binding, objective); }
5
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,UAAU,QAAQ,CAAC,SAA4B,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ export declare class BizarError extends Error {
2
+ readonly code: string;
3
+ readonly details: Record<string, unknown>;
4
+ constructor(code: string, message: string, details?: Record<string, unknown>);
5
+ }
6
+ export declare class InvalidTransitionError extends BizarError {
7
+ constructor(from: string, event: string);
8
+ }
9
+ export declare class StaleEvidenceError extends BizarError {
10
+ constructor(evidenceId: string, reason: string);
11
+ }
12
+ export declare class OwnershipError extends BizarError {
13
+ constructor(message: string, details?: Record<string, unknown>);
14
+ }
15
+ export declare class ContractError extends BizarError {
16
+ constructor(message: string, details?: Record<string, unknown>);
17
+ }
18
+ export declare class UnknownOutcomeError extends BizarError {
19
+ constructor(id: string);
20
+ }
21
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC9B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAMjF;AAED,qBAAa,sBAAuB,SAAQ,UAAU;gBACxC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAGxC;AAED,qBAAa,kBAAmB,SAAQ,UAAU;gBACpC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAG/C;AAED,qBAAa,cAAe,SAAQ,UAAU;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CACnE;AAED,qBAAa,aAAc,SAAQ,UAAU;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CACnE;AAED,qBAAa,mBAAoB,SAAQ,UAAU;gBACrC,EAAE,EAAE,MAAM;CACvB"}
@@ -0,0 +1,30 @@
1
+ export class BizarError extends Error {
2
+ code;
3
+ details;
4
+ constructor(code, message, details = {}) {
5
+ super(message);
6
+ this.name = "BizarError";
7
+ this.code = code;
8
+ this.details = details;
9
+ }
10
+ }
11
+ export class InvalidTransitionError extends BizarError {
12
+ constructor(from, event) {
13
+ super("INVALID_TRANSITION", `Cannot apply ${event} while run is ${from}`, { from, event });
14
+ }
15
+ }
16
+ export class StaleEvidenceError extends BizarError {
17
+ constructor(evidenceId, reason) {
18
+ super("STALE_EVIDENCE", `Evidence ${evidenceId} is stale: ${reason}`, { evidenceId, reason });
19
+ }
20
+ }
21
+ export class OwnershipError extends BizarError {
22
+ constructor(message, details = {}) { super("OWNERSHIP", message, details); }
23
+ }
24
+ export class ContractError extends BizarError {
25
+ constructor(message, details = {}) { super("CONTRACT", message, details); }
26
+ }
27
+ export class UnknownOutcomeError extends BizarError {
28
+ constructor(id) { super("UNKNOWN_OUTCOME", `Effect ${id} has an unknown outcome`, { id }); }
29
+ }
30
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAS;IACb,OAAO,CAA0B;IAC1C,YAAY,IAAY,EAAE,OAAe,EAAE,UAAmC,EAAE;QAC9E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,UAAU;IACpD,YAAY,IAAY,EAAE,KAAa;QACrC,KAAK,CAAC,oBAAoB,EAAE,gBAAgB,KAAK,iBAAiB,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,UAAU;IAChD,YAAY,UAAkB,EAAE,MAAc;QAC5C,KAAK,CAAC,gBAAgB,EAAE,YAAY,UAAU,cAAc,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAChG,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,UAAU;IAC5C,YAAY,OAAe,EAAE,UAAmC,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9G;AAED,MAAM,OAAO,aAAc,SAAQ,UAAU;IAC3C,YAAY,OAAe,EAAE,UAAmC,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7G;AAED,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IACjD,YAAY,EAAU,IAAI,KAAK,CAAC,iBAAiB,EAAE,UAAU,EAAE,yBAAyB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;CACrG"}
@@ -0,0 +1,6 @@
1
+ import type { EvidenceRecord } from "./types.js";
2
+ export declare const digest: (value: string | Uint8Array) => string;
3
+ export declare function createEvidence(input: Omit<EvidenceRecord, "recordedAt" | "stale">): EvidenceRecord;
4
+ export declare function invalidateEvidence(records: EvidenceRecord[], targetDigest: string, changedInputs?: string[]): EvidenceRecord[];
5
+ export declare function requireFreshEvidence(records: EvidenceRecord[], ids: string[], targetDigest: string): EvidenceRecord[];
6
+ //# sourceMappingURL=evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,GAAG,UAAU,WAAqD,CAAC;AAEvG,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,cAAc,CAGlG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,GAAE,MAAM,EAAO,GAAG,cAAc,EAAE,CAOlI;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,cAAc,EAAE,CAQrH"}
@@ -0,0 +1,31 @@
1
+ import { createHash } from "node:crypto";
2
+ import { ContractError, StaleEvidenceError } from "./errors.js";
3
+ export const digest = (value) => createHash("sha256").update(value).digest("hex");
4
+ export function createEvidence(input) {
5
+ if (!input.id.trim())
6
+ throw new ContractError("Evidence ID is required");
7
+ return { ...input, recordedAt: new Date().toISOString(), stale: false };
8
+ }
9
+ export function invalidateEvidence(records, targetDigest, changedInputs = []) {
10
+ return records.map(record => {
11
+ if (record.targetDigest !== targetDigest)
12
+ return { ...record, stale: true, staleReason: `target changed from ${record.targetDigest} to ${targetDigest}` };
13
+ const changed = changedInputs.filter(key => Object.hasOwn(record.inputDigests, key));
14
+ if (changed.length > 0)
15
+ return { ...record, stale: true, staleReason: `input changed: ${changed.join(", ")}` };
16
+ return record;
17
+ });
18
+ }
19
+ export function requireFreshEvidence(records, ids, targetDigest) {
20
+ if (ids.length === 0)
21
+ throw new StaleEvidenceError("unknown", "required evidence is missing");
22
+ const found = ids.map(id => (id.trim() ? records.find(record => record.id === id) : undefined));
23
+ const missingIndex = found.findIndex(record => !record);
24
+ if (missingIndex !== -1)
25
+ throw new StaleEvidenceError(ids[missingIndex] || "unknown", "required evidence is missing");
26
+ const stale = found.find(record => record.stale || record.targetDigest !== targetDigest || record.result !== "passed");
27
+ if (stale)
28
+ throw new StaleEvidenceError(stale.id, "not a fresh passing record for the target tree");
29
+ return found;
30
+ }
31
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGhE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAA0B,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEvG,MAAM,UAAU,cAAc,CAAC,KAAmD;IAChF,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,CAAC,CAAC;IACzE,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAyB,EAAE,YAAoB,EAAE,gBAA0B,EAAE;IAC9G,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC1B,IAAI,MAAM,CAAC,YAAY,KAAK,YAAY;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,uBAAuB,MAAM,CAAC,YAAY,OAAO,YAAY,EAAE,EAAE,CAAC;QAC1J,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;QACrF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC/G,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB,EAAE,GAAa,EAAE,YAAoB;IACjG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,8BAA8B,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,YAAY,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS,EAAE,8BAA8B,CAAC,CAAC;IACtH,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAO,CAAC,KAAK,IAAI,MAAO,CAAC,YAAY,KAAK,YAAY,IAAI,MAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAC1H,IAAI,KAAK;QAAE,MAAM,IAAI,kBAAkB,CAAC,KAAM,CAAC,EAAE,EAAE,gDAAgD,CAAC,CAAC;IACrG,OAAO,KAAyB,CAAC;AACnC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { ObjectiveContract, RouteDecision, RouteTask, TrustPreset } from "./types.js";
2
+ export declare function classifyRoute(task: RouteTask): RouteDecision;
3
+ export declare function objectiveHash(objective: ObjectiveContract): string;
4
+ export declare function trustPolicy(preset: TrustPreset): {
5
+ allowShell: boolean;
6
+ managedIsolation: boolean;
7
+ allowEval: boolean;
8
+ preset: TrustPreset;
9
+ };
10
+ //# sourceMappingURL=policies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/core/policies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAe,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWxG,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,CAmB5D;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM,CAElE;AAQD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW;gBANE,OAAO;sBAAoB,OAAO;eAAa,OAAO;;EAMZ"}
@@ -0,0 +1,41 @@
1
+ import { createHash } from "node:crypto";
2
+ const hash = (value) => createHash("sha256").update(value).digest("hex");
3
+ const hardSignals = [
4
+ [/\b(debug|diagnos|root cause|incident|regression)\b/i, "root-cause analysis", "debugging"],
5
+ [/\b(security|credential|secret|authorization|threat|trust boundary)\b/i, "security boundary", "security"],
6
+ [/\b(architect|migration|schema|distributed|concurrency|recovery)\b/i, "architecture or recovery", "architecture"],
7
+ [/\b(ui|ux|visual|accessibility|layout)\b/i, "interface design", "ui-design"],
8
+ ];
9
+ export function classifyRoute(task) {
10
+ const roleWord = task.role?.match(/security|review|architect|debug|ui/i)?.[0]?.toLowerCase();
11
+ const roleIntent = roleWord === "debug" ? "debugging" : roleWord === "ui" ? "ui-design" : roleWord;
12
+ const explicit = task.intent ?? roleIntent;
13
+ const reasons = [];
14
+ let intent = explicit ?? "general";
15
+ if (explicit)
16
+ reasons.push(`explicit ${explicit} role/intent`);
17
+ for (const [pattern, reason, inferredIntent] of hardSignals) {
18
+ if (pattern.test(task.text) || pattern.test(task.role ?? "")) {
19
+ if (!explicit || ["general", "coding"].includes(explicit))
20
+ intent = inferredIntent;
21
+ reasons.push(reason);
22
+ break;
23
+ }
24
+ }
25
+ const bounded = (task.files?.length ?? 1) <= 4 && task.text.length < 800 && !task.ambiguity;
26
+ const routeClass = reasons.length || intent !== "general" ? "hard" : bounded ? "common" : "default";
27
+ if (!reasons.length)
28
+ reasons.push(bounded ? "bounded task" : "coordination or lookup task");
29
+ const modelRole = routeClass === "hard" ? "bizar_hard" : routeClass === "common" ? "bizar_common" : "bizar_default";
30
+ return { routeClass, intent, modelRole, reason: `${routeClass}-${intent}-policy`, reasons, routingId: hash(JSON.stringify({ task, routeClass, intent })).slice(0, 20), fallbackChain: [] };
31
+ }
32
+ export function objectiveHash(objective) {
33
+ return hash(JSON.stringify(objective));
34
+ }
35
+ const presets = {
36
+ "trusted-development": { allowShell: true, managedIsolation: false, allowEval: true },
37
+ "restricted-managed": { allowShell: true, managedIsolation: true, allowEval: false },
38
+ "untrusted-repository": { allowShell: false, managedIsolation: true, allowEval: false },
39
+ };
40
+ export function trustPolicy(preset) { return { preset, ...presets[preset] }; }
41
+ //# sourceMappingURL=policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/core/policies.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { JournalEntry, StateSnapshot, WorkflowPhase } from "./types.js";
2
+ export declare function emptySnapshot(): StateSnapshot;
3
+ export declare function replay(entries: JournalEntry[]): StateSnapshot;
4
+ export declare function assertOwner(actual: string | undefined, expected: string): void;
5
+ export declare function assertIdempotent(existingKeys: Set<string>, key: string): void;
6
+ export declare function reconcilePhase(phase: WorkflowPhase, status: "settled" | "failed" | "unknown-outcome", hasFreshEvidence: boolean): WorkflowPhase;
7
+ //# sourceMappingURL=recovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,wBAAgB,aAAa,IAAI,aAAa,CAA8H;AAE5K,wBAAgB,MAAM,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,aAAa,CAsB7D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAE9E;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE7E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,GAAG,aAAa,CAI/I"}
@@ -0,0 +1,56 @@
1
+ import { ContractError, OwnershipError } from "./errors.js";
2
+ export function emptySnapshot() { return { revision: 0, dispatches: [], observations: [], evidence: [], integrations: [], decisions: [], lastSequence: 0 }; }
3
+ export function replay(entries) {
4
+ const state = emptySnapshot();
5
+ for (const entry of entries.sort((a, b) => a.sequence - b.sequence)) {
6
+ if (entry.sequence <= state.lastSequence)
7
+ continue;
8
+ const event = entry.event;
9
+ if (event.type === "run.created") {
10
+ state.run = event.run;
11
+ state.dispatches = [];
12
+ state.observations = [];
13
+ state.evidence = [];
14
+ state.integrations = [];
15
+ state.decisions = [];
16
+ }
17
+ else if (event.type === "run.transitioned" && state.run?.runId === event.runId) {
18
+ state.run = { ...state.run, phase: event.to, revision: state.run.revision + 1, updatedAt: entry.at };
19
+ }
20
+ else if (event.type === "work-item.upserted" && state.run?.runId === event.runId)
21
+ state.run = { ...state.run, workItems: [...state.run.workItems.filter(i => i.id !== event.item.id), event.item], revision: state.run.revision + 1, updatedAt: entry.at };
22
+ else if (event.type === "dispatch.recorded" && state.run?.runId === event.runId)
23
+ state.dispatches.push(event.intent);
24
+ else if (event.type === "worker.observed" && state.dispatches.some(intent => intent.id === event.observation.dispatchId))
25
+ state.observations.push(event.observation);
26
+ else if (event.type === "evidence.recorded" && state.run?.runId === event.runId)
27
+ state.evidence.push(event.evidence);
28
+ else if (event.type === "integration.recorded" && state.run?.runId === event.runId)
29
+ state.integrations = [...state.integrations.filter(attempt => attempt.id !== event.attempt.id), event.attempt];
30
+ else if (event.type === "decision.recorded" && state.run?.runId === event.runId)
31
+ state.decisions.push(event.decision);
32
+ else if (event.type === "run.cancelled" && state.run?.runId === event.runId)
33
+ state.run = { ...state.run, phase: "cancelled", cancellation: { requested: true, reason: event.reason }, revision: state.run.revision + 1, updatedAt: entry.at };
34
+ else if (event.type === "run.reconciled" && state.run?.runId === event.runId)
35
+ state.run = { ...state.run, phase: event.phase, revision: event.revision, updatedAt: entry.at };
36
+ state.lastSequence = entry.sequence;
37
+ }
38
+ state.revision = state.run?.revision ?? state.lastSequence;
39
+ return state;
40
+ }
41
+ export function assertOwner(actual, expected) {
42
+ if (!actual || actual !== expected)
43
+ throw new OwnershipError("Only the run owner may advance workflow state", { actual, expected });
44
+ }
45
+ export function assertIdempotent(existingKeys, key) {
46
+ if (existingKeys.has(key))
47
+ throw new ContractError(`Duplicate idempotency key: ${key}`, { key });
48
+ }
49
+ export function reconcilePhase(phase, status, hasFreshEvidence) {
50
+ if (status === "unknown-outcome")
51
+ return "blocked";
52
+ if (status === "failed")
53
+ return "failed";
54
+ return hasFreshEvidence ? phase : "verifying";
55
+ }
56
+ //# sourceMappingURL=recovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../src/core/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG5D,MAAM,UAAU,aAAa,KAAoB,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAE5K,MAAM,UAAU,MAAM,CAAC,OAAuB;IAC5C,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpE,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY;YAAE,SAAS;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACtB,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;YAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;YAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;YAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;YAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACrH,CAAC;aACI,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YAAC,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAAC,CAAC;aACpL,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;aACtP,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAChH,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC;YAAE,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;aAChK,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aAChH,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;aAC9L,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aACjH,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;aACzO,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;QAC9K,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;IACtC,CAAC;IACD,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,EAAE,QAAQ,IAAI,KAAK,CAAC,YAAY,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA0B,EAAE,QAAgB;IACtE,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,QAAQ;QAAE,MAAM,IAAI,cAAc,CAAC,+CAA+C,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AACtI,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAyB,EAAE,GAAW;IACrE,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,aAAa,CAAC,8BAA8B,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,MAAgD,EAAE,gBAAyB;IAC9H,IAAI,MAAM,KAAK,iBAAiB;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACzC,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;AAChD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { EvidenceRecord, JournalEvent, ObjectiveContract, RouteClass, WorkflowPhase, WorkflowRun, WorkItem } from "./types.js";
2
+ export declare function createRun(projectId: string, objective: ObjectiveContract, mode?: RouteClass, nativeSessionId?: string): WorkflowRun;
3
+ export declare function addWorkItem(run: WorkflowRun, input: Omit<WorkItem, "id" | "revision" | "lifecycle" | "attempt">): WorkflowRun;
4
+ export declare function transition(run: WorkflowRun, to: WorkflowPhase, reason: string): {
5
+ run: WorkflowRun;
6
+ event: JournalEvent;
7
+ };
8
+ export declare function acceptWorkItem(run: WorkflowRun, workItemId: string): WorkflowRun;
9
+ export declare function canComplete(run: WorkflowRun, requiredChecks: string[], evidence: Pick<EvidenceRecord, "checkId" | "result" | "stale" | "targetDigest">[], ownedWork: WorkItem[], targetDigest: string): boolean;
10
+ export declare function completeRun(run: WorkflowRun, requiredChecks: string[], evidence: EvidenceRecord[], targetDigest: string): {
11
+ run: WorkflowRun;
12
+ event: JournalEvent;
13
+ };
14
+ //# sourceMappingURL=transitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiBpI,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAGnI;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC,GAAG,WAAW,CAI7H;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAKzH;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAMhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAI/M;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAKnK"}
@@ -0,0 +1,59 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { InvalidTransitionError, ContractError } from "./errors.js";
3
+ import { classifyRoute, objectiveHash } from "./policies.js";
4
+ const now = () => new Date().toISOString();
5
+ const phaseTransitions = {
6
+ created: ["orienting", "planning", "researching", "executing", "blocked", "cancelled"],
7
+ orienting: ["researching", "planning", "ready", "executing", "blocked", "cancelled"],
8
+ researching: ["planning", "ready", "blocked", "cancelled"],
9
+ planning: ["ready", "executing", "blocked", "cancelled"],
10
+ ready: ["executing", "verifying", "cancelled", "blocked"],
11
+ executing: ["integrating", "verifying", "reviewing", "blocked", "failed", "cancelled"],
12
+ integrating: ["verifying", "executing", "blocked", "failed", "cancelled"],
13
+ verifying: ["reviewing", "executing", "blocked", "failed", "cancelled"],
14
+ reviewing: ["executing", "blocked", "failed", "cancelled"],
15
+ complete: [], blocked: ["orienting", "planning", "executing", "verifying", "cancelled"],
16
+ failed: ["orienting", "planning", "executing", "cancelled"], cancelled: [],
17
+ };
18
+ export function createRun(projectId, objective, mode, nativeSessionId) {
19
+ if (!objective.objective.trim() || objective.acceptanceCriteria.length === 0)
20
+ throw new ContractError("Objective and acceptance criteria are required");
21
+ return { schemaVersion: 1, runId: `run_${randomUUID()}`, projectId, nativeSessionId, objective, objectiveHash: objectiveHash(objective), revision: 0, mode: mode ?? classifyRoute({ text: objective.objective }).routeClass, phase: "created", workItems: [], cancellation: { requested: false }, createdAt: now(), updatedAt: now() };
22
+ }
23
+ export function addWorkItem(run, input) {
24
+ if (run.workItems.some(item => item.title === input.title))
25
+ throw new ContractError(`Duplicate work item: ${input.title}`);
26
+ const item = { ...input, id: `work_${createHash("sha256").update(`${run.runId}:${input.title}`).digest("hex").slice(0, 12)}`, revision: 0, lifecycle: "pending", attempt: 0 };
27
+ return { ...run, revision: run.revision + 1, workItems: [...run.workItems, item], updatedAt: now() };
28
+ }
29
+ export function transition(run, to, reason) {
30
+ if (to === "complete")
31
+ throw new ContractError("Use the completion action after evidence and work acceptance checks");
32
+ if (!phaseTransitions[run.phase].includes(to))
33
+ throw new InvalidTransitionError(run.phase, `transition:${to}`);
34
+ const next = { ...run, phase: to, revision: run.revision + 1, updatedAt: now(), cancellation: to === "cancelled" ? { requested: true, reason } : run.cancellation };
35
+ return { run: next, event: { type: "run.transitioned", runId: run.runId, from: run.phase, to, reason } };
36
+ }
37
+ export function acceptWorkItem(run, workItemId) {
38
+ const item = run.workItems.find(candidate => candidate.id === workItemId);
39
+ if (!item)
40
+ throw new ContractError(`Unknown work item: ${workItemId}`);
41
+ if (item.lifecycle === "accepted" || item.lifecycle === "cancelled")
42
+ throw new ContractError(`Work item cannot be accepted from ${item.lifecycle}`);
43
+ const accepted = { ...item, lifecycle: "accepted", revision: item.revision + 1 };
44
+ return { ...run, revision: run.revision + 1, workItems: run.workItems.map(candidate => candidate.id === item.id ? accepted : candidate), updatedAt: now() };
45
+ }
46
+ export function canComplete(run, requiredChecks, evidence, ownedWork, targetDigest) {
47
+ const latest = new Map(evidence.map(item => [item.checkId, item]));
48
+ const checks = new Set([...latest.values()].filter(item => item.result === "passed" && !item.stale && item.targetDigest === targetDigest).map(item => item.checkId));
49
+ return requiredChecks.length > 0 && run.phase !== "cancelled" && run.phase !== "failed" && requiredChecks.every(id => id.trim() && checks.has(id)) && ownedWork.every(item => ["accepted", "cancelled"].includes(item.lifecycle));
50
+ }
51
+ export function completeRun(run, requiredChecks, evidence, targetDigest) {
52
+ if (!canComplete(run, requiredChecks, evidence, run.workItems, targetDigest))
53
+ throw new ContractError("Completion requires fresh checks for the current tree and no outstanding work");
54
+ if (!["executing", "verifying", "reviewing"].includes(run.phase))
55
+ throw new InvalidTransitionError(run.phase, "complete");
56
+ const next = { ...run, phase: "complete", revision: run.revision + 1, updatedAt: now() };
57
+ return { run: next, event: { type: "run.transitioned", runId: run.runId, from: run.phase, to: "complete", reason: "completion checks satisfied" } };
58
+ }
59
+ //# sourceMappingURL=transitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../src/core/transitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ export type JsonPrimitive = string | number | boolean | null;
2
+ export type JsonValue = JsonPrimitive | JsonValue[] | {
3
+ [key: string]: JsonValue;
4
+ };
5
+ export type WorkflowPhase = "created" | "orienting" | "researching" | "planning" | "ready" | "executing" | "integrating" | "verifying" | "reviewing" | "complete" | "blocked" | "failed" | "cancelled";
6
+ export type RouteClass = "default" | "common" | "hard";
7
+ export type RouteIntent = "general" | "coding" | "debugging" | "ui-design" | "review" | "security" | "architecture";
8
+ export type TrustPreset = "trusted-development" | "restricted-managed" | "untrusted-repository";
9
+ export type WorkItemLifecycle = "pending" | "admitted" | "running" | "settled" | "accepted" | "rejected" | "blocked" | "cancelled";
10
+ export interface ObjectiveContract {
11
+ objective: string;
12
+ nonGoals: string[];
13
+ constraints: string[];
14
+ acceptanceCriteria: string[];
15
+ verificationPlan: string[];
16
+ stopConditions: string[];
17
+ userRestrictions: string[];
18
+ }
19
+ export interface WorkItem {
20
+ id: string;
21
+ revision: number;
22
+ role: string;
23
+ title: string;
24
+ scope: string[];
25
+ dependencies: string[];
26
+ acceptanceCriteria: string[];
27
+ verificationPlan: string[];
28
+ lifecycle: WorkItemLifecycle;
29
+ attempt: number;
30
+ targetRevision?: string;
31
+ }
32
+ export interface WorkflowRun {
33
+ schemaVersion: 1;
34
+ runId: string;
35
+ projectId: string;
36
+ nativeSessionId?: string;
37
+ objective: ObjectiveContract;
38
+ objectiveHash: string;
39
+ revision: number;
40
+ mode: RouteClass;
41
+ phase: WorkflowPhase;
42
+ workItems: WorkItem[];
43
+ cancellation: {
44
+ requested: boolean;
45
+ reason?: string;
46
+ };
47
+ createdAt: string;
48
+ updatedAt: string;
49
+ }
50
+ export interface DispatchIntent {
51
+ id: string;
52
+ runId: string;
53
+ runRevision: number;
54
+ workItemId: string;
55
+ idempotencyKey: string;
56
+ expectedParentSession?: string;
57
+ requestedAgent: string;
58
+ scope: string[];
59
+ acceptanceCriteria: string[];
60
+ isolation: "required" | "none";
61
+ apply: false;
62
+ merge: false;
63
+ routeClass: RouteClass;
64
+ routeIntent: RouteIntent;
65
+ modelRole: string;
66
+ status: "admitted" | "acknowledged" | "settled" | "unknown-outcome" | "rejected";
67
+ nativeCallId?: string;
68
+ nativeChildId?: string;
69
+ }
70
+ export interface WorkerObservation {
71
+ dispatchId: string;
72
+ nativeCallId?: string;
73
+ nativeChildId?: string;
74
+ sourceEvent: string;
75
+ sequence: number;
76
+ status: "started" | "running" | "settled" | "failed" | "cancelled" | "unknown-outcome";
77
+ structuredResult?: JsonValue;
78
+ artifactRefs: string[];
79
+ observedAt: string;
80
+ }
81
+ export interface EvidenceRecord {
82
+ id: string;
83
+ runId: string;
84
+ type: "test" | "lint" | "typecheck" | "review" | "research" | "worker" | "git" | "manual";
85
+ checkId: string;
86
+ command?: string[];
87
+ cwd?: string;
88
+ result: "passed" | "failed" | "blocked" | "cancelled" | "unknown";
89
+ exitCode?: number;
90
+ targetDigest: string;
91
+ inputDigests: Record<string, string>;
92
+ stdout?: string;
93
+ stderr?: string;
94
+ artifactHashes: string[];
95
+ provenance: {
96
+ producer: string;
97
+ source?: string;
98
+ observedAt: string;
99
+ };
100
+ recordedAt: string;
101
+ stale: boolean;
102
+ staleReason?: string;
103
+ }
104
+ export interface IntegrationAttempt {
105
+ id: string;
106
+ runId: string;
107
+ workItemId: string;
108
+ baseDigest: string;
109
+ patchDigest: string;
110
+ changedPaths: string[];
111
+ eligibleEvidenceIds: string[];
112
+ lockOwner: string;
113
+ outcome: "eligible" | "applied" | "conflict" | "dirty-parent" | "rejected" | "unknown-outcome";
114
+ resultingDigest?: string;
115
+ recovery?: string;
116
+ attemptedAt: string;
117
+ }
118
+ export interface DecisionRecord {
119
+ id: string;
120
+ runId: string;
121
+ alternatives: string[];
122
+ selected: string;
123
+ rationale: string;
124
+ evidenceIds: string[];
125
+ objectiveRevision: number;
126
+ recordedAt: string;
127
+ }
128
+ export type JournalEvent = {
129
+ type: "run.created";
130
+ run: WorkflowRun;
131
+ } | {
132
+ type: "run.transitioned";
133
+ runId: string;
134
+ from: WorkflowPhase;
135
+ to: WorkflowPhase;
136
+ reason: string;
137
+ } | {
138
+ type: "work-item.upserted";
139
+ runId: string;
140
+ item: WorkItem;
141
+ } | {
142
+ type: "dispatch.recorded";
143
+ runId: string;
144
+ intent: DispatchIntent;
145
+ } | {
146
+ type: "worker.observed";
147
+ runId: string;
148
+ observation: WorkerObservation;
149
+ } | {
150
+ type: "evidence.recorded";
151
+ runId: string;
152
+ evidence: EvidenceRecord;
153
+ } | {
154
+ type: "integration.recorded";
155
+ runId: string;
156
+ attempt: IntegrationAttempt;
157
+ } | {
158
+ type: "decision.recorded";
159
+ runId: string;
160
+ decision: DecisionRecord;
161
+ } | {
162
+ type: "run.cancelled";
163
+ runId: string;
164
+ reason: string;
165
+ } | {
166
+ type: "run.reconciled";
167
+ runId: string;
168
+ revision: number;
169
+ phase: WorkflowPhase;
170
+ reason: string;
171
+ };
172
+ export interface JournalEntry {
173
+ sequence: number;
174
+ at: string;
175
+ idempotencyKey: string;
176
+ event: JournalEvent;
177
+ }
178
+ export interface StateSnapshot {
179
+ revision: number;
180
+ run?: WorkflowRun;
181
+ dispatches: DispatchIntent[];
182
+ observations: WorkerObservation[];
183
+ evidence: EvidenceRecord[];
184
+ integrations: IntegrationAttempt[];
185
+ decisions: DecisionRecord[];
186
+ lastSequence: number;
187
+ }
188
+ export interface RouteTask {
189
+ text: string;
190
+ role?: string;
191
+ intent?: RouteIntent;
192
+ files?: string[];
193
+ ambiguity?: number;
194
+ }
195
+ export interface RouteDecision {
196
+ routeClass: RouteClass;
197
+ intent: RouteIntent;
198
+ modelRole: "bizar_default" | "bizar_common" | "bizar_hard";
199
+ reason: string;
200
+ reasons: string[];
201
+ routingId: string;
202
+ fallbackChain: string[];
203
+ }
204
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}