ai-foreman 1.7.29 → 2.0.1

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 (156) hide show
  1. package/README.md +1 -1
  2. package/dist/adapters/claude.d.ts +23 -12
  3. package/dist/adapters/claude.js +231 -26
  4. package/dist/adapters/codex.d.ts +19 -7
  5. package/dist/adapters/codex.js +202 -19
  6. package/dist/adapters/recovering.d.ts +2 -0
  7. package/dist/adapters/recovering.js +5 -1
  8. package/dist/adapters/structured.d.ts +71 -0
  9. package/dist/adapters/structured.js +213 -0
  10. package/dist/adapters/types.d.ts +85 -9
  11. package/dist/agentRun.d.ts +2 -0
  12. package/dist/agentRun.js +2 -1
  13. package/dist/boundedTurnEvidence.d.ts +18 -0
  14. package/dist/boundedTurnEvidence.js +76 -0
  15. package/dist/branch/currentGuard.d.ts +2 -0
  16. package/dist/branch/currentGuard.js +2 -0
  17. package/dist/branch/git.js +3 -8
  18. package/dist/branch/planner.js +1 -4
  19. package/dist/branch/runner.d.ts +2 -1
  20. package/dist/branch/runner.js +10 -7
  21. package/dist/buildAdmission.js +4 -0
  22. package/dist/buildApproval.d.ts +15 -0
  23. package/dist/buildApproval.js +28 -9
  24. package/dist/buildAssignment.d.ts +1 -0
  25. package/dist/buildAssignment.js +82 -23
  26. package/dist/buildInterventions.d.ts +2 -2
  27. package/dist/buildInterventions.js +11 -4
  28. package/dist/buildLaunchGate.js +3 -2
  29. package/dist/buildRuns.d.ts +1 -0
  30. package/dist/buildRuns.js +6 -1
  31. package/dist/builderGuidanceFollowup.js +17 -6
  32. package/dist/cli/doctor.js +3 -1
  33. package/dist/cli/manager.js +22 -20
  34. package/dist/cli/start.js +85 -39
  35. package/dist/cli/tickets.d.ts +0 -8
  36. package/dist/cli/tickets.js +50 -60
  37. package/dist/continuity.d.ts +10 -16
  38. package/dist/continuity.js +223 -208
  39. package/dist/continuityOrigin.d.ts +13 -0
  40. package/dist/continuityOrigin.js +91 -0
  41. package/dist/dispatchNotSent.d.ts +4 -0
  42. package/dist/dispatchNotSent.js +10 -0
  43. package/dist/foreman.d.ts +15 -16
  44. package/dist/foreman.js +70 -278
  45. package/dist/gitExclude.d.ts +16 -0
  46. package/dist/gitExclude.js +46 -0
  47. package/dist/graph/boundary.d.ts +1 -1
  48. package/dist/graph/boundary.js +1 -1
  49. package/dist/graph/host.js +8 -19
  50. package/dist/graph/manager.d.ts +1 -1
  51. package/dist/graph/manager.js +1 -1
  52. package/dist/graph/preparation.d.ts +38 -0
  53. package/dist/graph/preparation.js +7 -6
  54. package/dist/graph/semantic.d.ts +1 -0
  55. package/dist/graph/semantic.js +4 -1
  56. package/dist/graph/session.js +7 -2
  57. package/dist/graph/turn.d.ts +3 -4
  58. package/dist/graph/turn.js +29 -41
  59. package/dist/handoffProtocol.js +2 -2
  60. package/dist/handoffs.d.ts +5 -3
  61. package/dist/handoffs.js +92 -88
  62. package/dist/hostGraphApplicability.d.ts +2 -1
  63. package/dist/hostGraphApplicability.js +17 -19
  64. package/dist/hostQaAugmentation.js +21 -4
  65. package/dist/hostQaComparison.d.ts +21 -2
  66. package/dist/hostQaComparison.js +43 -29
  67. package/dist/hostSourcePreservation.d.ts +38 -0
  68. package/dist/hostSourcePreservation.js +72 -0
  69. package/dist/humanDecision.d.ts +7 -0
  70. package/dist/humanDecision.js +11 -0
  71. package/dist/interviews.d.ts +7 -0
  72. package/dist/interviews.js +18 -1
  73. package/dist/legacyCommunicationDisplay.d.ts +2 -0
  74. package/dist/legacyCommunicationDisplay.js +2 -0
  75. package/dist/managerPacket.js +3 -3
  76. package/dist/markers.d.ts +4 -3
  77. package/dist/markers.js +4 -20
  78. package/dist/observability.js +3 -8
  79. package/dist/probeIpc.d.ts +14 -0
  80. package/dist/probeIpc.js +29 -0
  81. package/dist/qaBuildGate.d.ts +21 -0
  82. package/dist/qaBuildGate.js +60 -13
  83. package/dist/qaBuilderCoverage.js +22 -13
  84. package/dist/qaBuilderEvidence.d.ts +16 -1
  85. package/dist/qaBuilderEvidence.js +48 -8
  86. package/dist/qaContractCoverage.d.ts +2 -2
  87. package/dist/qaContractCoverage.js +4 -9
  88. package/dist/qaContractDelivery.js +34 -20
  89. package/dist/qaCoverageAssembly.d.ts +22 -0
  90. package/dist/qaCoverageAssembly.js +16 -0
  91. package/dist/qaDeliveryJournal.d.ts +2 -0
  92. package/dist/qaDeliveryJournal.js +19 -0
  93. package/dist/qaFailureDelivery.js +97 -85
  94. package/dist/qaHostTransformation.d.ts +26 -0
  95. package/dist/qaHostTransformation.js +100 -0
  96. package/dist/qaPreparation.d.ts +8 -20
  97. package/dist/qaPreparation.js +153 -254
  98. package/dist/qaPreparationInputs.js +19 -0
  99. package/dist/qaPreparationStore.d.ts +11 -0
  100. package/dist/qaPreparationStore.js +44 -4
  101. package/dist/qaPrerequisites.d.ts +2 -1
  102. package/dist/qaPrerequisites.js +21 -1
  103. package/dist/qaProtocolV2.d.ts +15 -0
  104. package/dist/qaRecovery.d.ts +0 -3
  105. package/dist/qaRecovery.js +21 -27
  106. package/dist/qaReview.js +241 -406
  107. package/dist/qaReviewEvidence.d.ts +7 -3
  108. package/dist/qaReviewEvidence.js +15 -4
  109. package/dist/qaRuntime.js +1 -1
  110. package/dist/qaSnapshot.js +76 -21
  111. package/dist/qaStructuredResponse.d.ts +18 -0
  112. package/dist/qaStructuredResponse.js +81 -0
  113. package/dist/qaTimeline.js +2 -2
  114. package/dist/qaVerificationContract.d.ts +1 -2
  115. package/dist/qaVerificationContract.js +24 -35
  116. package/dist/readinessGate.js +5 -4
  117. package/dist/recoveryOwners.d.ts +32 -0
  118. package/dist/recoveryOwners.js +87 -0
  119. package/dist/runtimePreflight.d.ts +11 -0
  120. package/dist/runtimePreflight.js +77 -0
  121. package/dist/runtimeReadiness.js +23 -15
  122. package/dist/sources/sourceRegistry.d.ts +0 -3
  123. package/dist/sources/sourceRegistry.js +0 -42
  124. package/dist/statusReporter.d.ts +2 -0
  125. package/dist/statusReporter.js +2 -0
  126. package/dist/structuredCutover.d.ts +31 -0
  127. package/dist/structuredCutover.js +510 -0
  128. package/dist/structuredCutoverFiles.d.ts +10 -0
  129. package/dist/structuredCutoverFiles.js +181 -0
  130. package/dist/structuredDispatchAuthority.d.ts +22 -0
  131. package/dist/structuredDispatchAuthority.js +110 -0
  132. package/dist/structuredDispatchRecord.d.ts +29 -0
  133. package/dist/structuredDispatchRecord.js +36 -0
  134. package/dist/structuredLiveBudget.d.ts +2 -0
  135. package/dist/structuredLiveBudget.js +23 -0
  136. package/dist/structuredOperation.d.ts +18 -0
  137. package/dist/structuredOperation.js +279 -0
  138. package/dist/supervisedStart.js +35 -21
  139. package/dist/ticketPlanning.d.ts +1 -376
  140. package/dist/ticketPlanning.js +2 -49
  141. package/dist/ticketPopulation.d.ts +0 -3
  142. package/dist/ticketPopulation.js +4 -21
  143. package/dist/ticketPopulationPageAuthority.d.ts +13 -0
  144. package/dist/ticketPopulationPageAuthority.js +30 -0
  145. package/dist/ticketPopulationPaging.d.ts +27 -0
  146. package/dist/ticketPopulationPaging.js +127 -0
  147. package/dist/tickets/renderMarkdown.d.ts +14 -0
  148. package/dist/tickets/renderMarkdown.js +39 -5
  149. package/dist/tickets/ticketLoader.js +10 -0
  150. package/dist/tickets/ticketSchema.d.ts +107 -0
  151. package/dist/tickets/ticketSchema.js +4 -1
  152. package/dist/workflowDb.d.ts +116 -3
  153. package/dist/workflowDb.js +852 -61
  154. package/dist/workflowReader.d.ts +1 -0
  155. package/dist/workflowReader.js +9 -0
  156. package/package.json +23 -7
@@ -135,6 +135,7 @@ export declare class WorkflowReader {
135
135
  preparationSuccessor(runId: string): string;
136
136
  pendingBuildLaunches(runId: string): import("./buildAdmission.js").BuildLaunch[];
137
137
  buildAdmission(): import("./buildAdmission.js").BuildAdmission | undefined;
138
+ private verifyContinuityHeads;
138
139
  continuityHeads(runId: string): Array<{
139
140
  role: string;
140
141
  state: string;
@@ -1,8 +1,10 @@
1
+ import { verifyContinuityHeads } from "./continuityOrigin.js";
1
2
  import { bytesDigest } from "./graph/util.js";
2
3
  import { measureQaPreparation } from "./qaPreparationMetrics.js";
3
4
  import { graphDerivedAllowed } from "./graph/derived.js";
4
5
  import { readGraphRecord } from "./graph/storage.js";
5
6
  import { checkBuildOwnershipSchema, canonicalProject } from "./buildAdmission.js";
7
+ import { assertStructuredCutoverComplete } from "./structuredCutover.js";
6
8
  import { existsSync } from "node:fs";
7
9
  import { join, resolve } from "node:path";
8
10
  import Database from "better-sqlite3";
@@ -20,6 +22,7 @@ export class WorkflowReader {
20
22
  this.db = new Database(path, { readonly: true, fileMustExist: true });
21
23
  this.db.pragma("query_only = ON");
22
24
  try {
25
+ assertStructuredCutoverComplete(this.db);
23
26
  checkBuildOwnershipSchema(this.db);
24
27
  }
25
28
  catch (error) {
@@ -214,9 +217,15 @@ export class WorkflowReader {
214
217
  return undefined;
215
218
  }
216
219
  }
220
+ verifyContinuityHeads(runId) {
221
+ if (!this.db)
222
+ return;
223
+ verifyContinuityHeads(this.db, this.projectDir, runId);
224
+ }
217
225
  continuityHeads(runId) {
218
226
  if (!this.db)
219
227
  return [];
228
+ this.verifyContinuityHeads(runId);
220
229
  try {
221
230
  return this.db.prepare("SELECT * FROM continuity_heads WHERE run_id=? ORDER BY role").all(runId).map(row => ({ role: String(row.role), state: String(row.state), sequence: Number(row.event_sequence), digest: String(row.digest), updatedAt: String(row.updated_at) }));
222
231
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-foreman",
3
- "version": "1.7.29",
3
+ "version": "2.0.1",
4
4
  "description": "An orchestrator that keeps Codex CLI / Claude Code builders moving through their step list unattended. Part of Rafi.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -93,6 +93,22 @@
93
93
  "types": "./dist/workflowReader.d.ts",
94
94
  "default": "./dist/workflowReader.js"
95
95
  },
96
+ "./recovery-owners.js": {
97
+ "types": "./dist/recoveryOwners.d.ts",
98
+ "default": "./dist/recoveryOwners.js"
99
+ },
100
+ "./runtime-preflight.js": {
101
+ "types": "./dist/runtimePreflight.d.ts",
102
+ "default": "./dist/runtimePreflight.js"
103
+ },
104
+ "./process-identity.js": {
105
+ "types": "./dist/processIdentity.d.ts",
106
+ "default": "./dist/processIdentity.js"
107
+ },
108
+ "./tickets/reset.js": {
109
+ "types": "./dist/tickets/reset.d.ts",
110
+ "default": "./dist/tickets/reset.js"
111
+ },
96
112
  "./ticket-history-reader.js": {
97
113
  "types": "./dist/ticketHistoryReader.d.ts",
98
114
  "default": "./dist/ticketHistoryReader.js"
@@ -281,7 +297,7 @@
281
297
  "dev": "tsx src/index.ts",
282
298
  "test": "node scripts/test-offline.mjs",
283
299
  "typecheck": "tsc --noEmit",
284
- "test:live-providers": "RAFI_LIVE_PROVIDER_SESSIONS=1 tsx --test test/providerSmoke.test.ts",
300
+ "test:live-providers": "RAFI_LIVE_PROVIDER_SESSIONS=1 node --import tsx --test test/providerSmoke.test.ts",
285
301
  "prepublishOnly": "tsc -p ../spec/tsconfig.build.json && pnpm build && pnpm --filter ai-foreman test && tsc --noEmit"
286
302
  },
287
303
  "keywords": [
@@ -295,7 +311,7 @@
295
311
  "cli"
296
312
  ],
297
313
  "engines": {
298
- "node": ">=20"
314
+ "node": "24.x"
299
315
  },
300
316
  "packageManager": "pnpm@10.2.1",
301
317
  "optionalDependencies": {
@@ -305,21 +321,21 @@
305
321
  "@clack/prompts": "^1.4.0",
306
322
  "ajv": "^8.20.0",
307
323
  "ajv-formats": "^3.0.1",
308
- "better-sqlite3": "^12.10.0",
324
+ "better-sqlite3": "^13.0.3",
309
325
  "commander": "^12.1.0",
310
326
  "ignore": "7.0.5",
311
327
  "luxon": "^3.7.2",
312
328
  "parse5": "7.2.1",
313
329
  "pdfjs-dist": "4.10.38",
314
- "rafi-spec": "0.8.18",
315
- "special-agents": "0.8.18",
330
+ "rafi-spec": "0.9.1",
331
+ "special-agents": "0.9.1",
316
332
  "yaml": "^2.5.1",
317
333
  "zod": "4.4.3"
318
334
  },
319
335
  "devDependencies": {
320
336
  "@types/better-sqlite3": "^7.6.13",
321
337
  "@types/luxon": "^3.7.1",
322
- "@types/node": "^20.14.0",
338
+ "@types/node": "^24.0.0",
323
339
  "tsx": "^4.19.0",
324
340
  "typescript": "^5.6.0"
325
341
  }