@interf/compiler 0.22.0 → 0.33.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 (575) hide show
  1. package/README.md +268 -0
  2. package/dist/bin-mcp.d.ts +2 -0
  3. package/dist/bin-mcp.js +63 -0
  4. package/dist/bin-runtime.d.ts +2 -0
  5. package/dist/bin-runtime.js +111 -0
  6. package/dist/cli/commands/agents.js +4 -4
  7. package/dist/cli/commands/auth.d.ts +20 -0
  8. package/dist/cli/commands/auth.js +161 -0
  9. package/dist/cli/commands/benchmark.d.ts +10 -0
  10. package/dist/cli/commands/benchmark.js +88 -0
  11. package/dist/cli/commands/build-plan.js +95 -103
  12. package/dist/cli/commands/build.d.ts +1 -1
  13. package/dist/cli/commands/build.js +16 -15
  14. package/dist/cli/commands/doctor.js +3 -3
  15. package/dist/cli/commands/graphs.d.ts +2 -0
  16. package/dist/cli/commands/graphs.js +199 -0
  17. package/dist/cli/commands/login.js +4 -6
  18. package/dist/cli/commands/logout.js +1 -1
  19. package/dist/cli/commands/mcp.d.ts +3 -2
  20. package/dist/cli/commands/mcp.js +721 -204
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +202 -0
  23. package/dist/cli/commands/reset.d.ts +1 -1
  24. package/dist/cli/commands/reset.js +10 -10
  25. package/dist/cli/commands/runs.js +52 -26
  26. package/dist/cli/commands/runtime.d.ts +24 -0
  27. package/dist/cli/commands/runtime.js +373 -0
  28. package/dist/cli/commands/status.d.ts +1 -0
  29. package/dist/cli/commands/status.js +33 -22
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +125 -0
  32. package/dist/cli/commands/wizard.js +155 -150
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.js +2 -2
  37. package/dist/packages/build-plans/authoring/brief.d.ts +517 -0
  38. package/dist/packages/build-plans/authoring/brief.js +89 -0
  39. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +10 -10
  40. package/dist/packages/build-plans/authoring/build-plan-authoring.js +66 -26
  41. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +1 -1
  42. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +8 -2
  43. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  44. package/dist/packages/build-plans/authoring/build-plan-improvement.js +39 -42
  45. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  46. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  47. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  48. package/dist/packages/build-plans/index.d.ts +1 -1
  49. package/dist/packages/build-plans/index.js +1 -1
  50. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -12
  51. package/dist/packages/build-plans/package/build-plan-definitions.js +40 -39
  52. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  53. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  54. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  55. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  56. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +4 -4
  57. package/dist/packages/build-plans/package/build-plan-stage-runner.js +22 -11
  58. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +5 -6
  59. package/dist/packages/build-plans/package/builtin-build-plan.js +7 -8
  60. package/dist/packages/build-plans/package/context-interface.d.ts +11 -9
  61. package/dist/packages/build-plans/package/context-interface.js +14 -33
  62. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  63. package/dist/packages/build-plans/package/interf-build-plan-package.js +56 -52
  64. package/dist/packages/build-plans/package/local-build-plans.d.ts +12 -10
  65. package/dist/packages/build-plans/package/local-build-plans.js +56 -31
  66. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  67. package/dist/packages/contracts/index.d.ts +4 -2
  68. package/dist/packages/contracts/index.js +2 -1
  69. package/dist/packages/contracts/lib/project-paths.d.ts +137 -0
  70. package/dist/packages/contracts/lib/project-paths.js +211 -0
  71. package/dist/packages/contracts/lib/project-schema.d.ts +160 -0
  72. package/dist/packages/contracts/lib/project-schema.js +113 -0
  73. package/dist/packages/contracts/lib/schema.d.ts +739 -80
  74. package/dist/packages/contracts/lib/schema.js +410 -75
  75. package/dist/packages/contracts/utils/parse.js +67 -0
  76. package/dist/packages/projects/index.d.ts +6 -0
  77. package/dist/packages/{project → projects}/index.js +0 -3
  78. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  79. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  80. package/dist/packages/projects/interf.d.ts +2 -0
  81. package/dist/packages/projects/interf.js +1 -0
  82. package/dist/packages/projects/lib/schema.d.ts +79 -0
  83. package/dist/packages/projects/lib/schema.js +89 -0
  84. package/dist/packages/projects/source-config.d.ts +58 -0
  85. package/dist/packages/projects/source-config.js +352 -0
  86. package/dist/packages/projects/source-folders.d.ts +11 -0
  87. package/dist/packages/{project → projects}/source-folders.js +26 -26
  88. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  89. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  90. package/dist/packages/runtime/action-values.d.ts +1 -0
  91. package/dist/packages/runtime/action-values.js +1 -0
  92. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  93. package/dist/packages/runtime/actions/errors.js +12 -0
  94. package/dist/packages/runtime/actions/fields.d.ts +82 -0
  95. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  96. package/dist/packages/runtime/actions/form-builders.js +619 -0
  97. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  98. package/dist/packages/runtime/actions/form-validators.js +128 -0
  99. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  100. package/dist/packages/runtime/actions/helpers.js +80 -0
  101. package/dist/packages/runtime/actions/index.d.ts +8 -0
  102. package/dist/packages/runtime/actions/index.js +11 -0
  103. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  104. package/dist/packages/runtime/actions/registry.js +62 -0
  105. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  106. package/dist/packages/runtime/actions/requests.js +158 -0
  107. package/dist/packages/runtime/actions/schemas.d.ts +154 -0
  108. package/dist/packages/runtime/actions/schemas.js +36 -0
  109. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  110. package/dist/packages/runtime/agent-handoff.js +101 -0
  111. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  112. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  113. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  114. package/dist/packages/runtime/agents/lib/args.js +24 -0
  115. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  116. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  117. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  118. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  119. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  120. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  121. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +8 -14
  122. package/dist/packages/{engine → runtime}/agents/lib/execution.js +14 -4
  123. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +15 -13
  124. package/dist/packages/{engine → runtime}/agents/lib/render.js +4 -4
  125. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  126. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  127. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  128. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  129. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  130. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  131. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  132. package/dist/packages/runtime/agents/lib/shell-templates.js +452 -0
  133. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  134. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  135. package/dist/packages/runtime/agents/lib/shells.d.ts +63 -0
  136. package/dist/packages/runtime/agents/lib/shells.js +383 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  138. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  139. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  140. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  141. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  142. package/dist/packages/runtime/agents/providers/codex.js +64 -0
  143. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  144. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  145. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  146. package/dist/packages/runtime/agents/providers/index.js +31 -0
  147. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  148. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  149. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  150. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  151. package/dist/packages/{engine → runtime}/agents/role-executors.js +7 -6
  152. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  153. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  154. package/dist/packages/runtime/auth/account-context.js +68 -0
  155. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  156. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  157. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  158. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  159. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  160. package/dist/packages/runtime/auth/keychain.js +85 -0
  161. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  162. package/dist/packages/runtime/auth/session-store.js +88 -0
  163. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  164. package/dist/packages/runtime/auth/workos-client.js +87 -0
  165. package/dist/packages/runtime/benchmark-question-draft.d.ts +20 -0
  166. package/dist/packages/runtime/benchmark-question-draft.js +124 -0
  167. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  168. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  169. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +5 -5
  170. package/dist/packages/{engine → runtime}/build/artifact-status.js +25 -23
  171. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  172. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  173. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  174. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  175. package/dist/packages/runtime/build/build-evidence.d.ts +15 -0
  176. package/dist/packages/runtime/build/build-evidence.js +173 -0
  177. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  178. package/dist/packages/runtime/build/build-pipeline.js +304 -0
  179. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  180. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  181. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  182. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  183. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  184. package/dist/packages/{engine → runtime}/build/build-stage-plan.js +28 -29
  185. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  186. package/dist/packages/runtime/build/build-stage-runner.js +165 -0
  187. package/dist/packages/{engine → runtime}/build/build-target.d.ts +4 -4
  188. package/dist/packages/runtime/build/build-target.js +16 -0
  189. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  190. package/dist/packages/runtime/build/check-evaluator.js +575 -0
  191. package/dist/packages/runtime/build/context-graph-paths.d.ts +51 -0
  192. package/dist/packages/runtime/build/context-graph-paths.js +133 -0
  193. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  194. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  195. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  196. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  197. package/dist/packages/{engine → runtime}/build/index.d.ts +5 -3
  198. package/dist/packages/{engine → runtime}/build/index.js +5 -3
  199. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +221 -88
  200. package/dist/packages/{engine → runtime}/build/lib/schema.js +61 -41
  201. package/dist/packages/runtime/build/reset.d.ts +2 -0
  202. package/dist/packages/runtime/build/reset.js +62 -0
  203. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +5 -5
  204. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  205. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  206. package/dist/packages/{engine → runtime}/build/runtime-paths.js +6 -6
  207. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +7 -6
  208. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  209. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  210. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  211. package/dist/packages/runtime/build/runtime-runs.js +265 -0
  212. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +6 -6
  213. package/dist/packages/runtime/build/runtime-types.js +1 -0
  214. package/dist/packages/runtime/build/runtime.d.ts +6 -0
  215. package/dist/packages/runtime/build/runtime.js +5 -0
  216. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  217. package/dist/packages/runtime/build/source-files.js +184 -0
  218. package/dist/packages/runtime/build/source-inventory.d.ts +27 -0
  219. package/dist/packages/runtime/build/source-inventory.js +273 -0
  220. package/dist/packages/runtime/build/source-manifest.d.ts +52 -0
  221. package/dist/packages/runtime/build/source-manifest.js +192 -0
  222. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  223. package/dist/packages/runtime/build/stage-evidence.js +317 -0
  224. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  225. package/dist/packages/runtime/build/stage-reuse.js +142 -0
  226. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  227. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  228. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  229. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  230. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  231. package/dist/packages/runtime/build/state-io.js +119 -0
  232. package/dist/packages/{engine → runtime}/build/state-paths.d.ts +3 -1
  233. package/dist/packages/runtime/build/state-paths.js +22 -0
  234. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  235. package/dist/packages/{engine → runtime}/build/state-view.js +60 -33
  236. package/dist/packages/runtime/build/state.d.ts +7 -0
  237. package/dist/packages/runtime/build/state.js +12 -0
  238. package/dist/packages/runtime/build/traces.d.ts +30 -0
  239. package/dist/packages/runtime/build/traces.js +133 -0
  240. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  241. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +48 -35
  242. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  243. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  244. package/dist/packages/{engine → runtime}/client.d.ts +15 -15
  245. package/dist/packages/{engine → runtime}/client.js +41 -24
  246. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  247. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  248. package/dist/packages/runtime/context-checks.d.ts +10 -0
  249. package/dist/packages/runtime/context-checks.js +114 -0
  250. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  251. package/dist/packages/runtime/context-graph-scaffold.js +134 -0
  252. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  253. package/dist/packages/runtime/entitlement-guard.js +70 -0
  254. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  255. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  256. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +270 -192
  257. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  258. package/dist/packages/runtime/index.d.ts +29 -0
  259. package/dist/packages/runtime/index.js +21 -0
  260. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  261. package/dist/packages/runtime/instance-paths.js +29 -0
  262. package/dist/packages/{engine → runtime}/native-run-handlers.d.ts +4 -4
  263. package/dist/packages/{engine → runtime}/native-run-handlers.js +184 -152
  264. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  265. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  266. package/dist/packages/runtime/project-entries.d.ts +11 -0
  267. package/dist/packages/runtime/project-entries.js +49 -0
  268. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  269. package/dist/packages/runtime/project-source-state.js +53 -0
  270. package/dist/packages/runtime/project-store.d.ts +85 -0
  271. package/dist/packages/runtime/project-store.js +168 -0
  272. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  273. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  274. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  275. package/dist/packages/{engine → runtime}/run-observability.js +166 -84
  276. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  277. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  278. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  279. package/dist/packages/runtime/runtime-build-plans.js +131 -0
  280. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  281. package/dist/packages/runtime/runtime-build-runs.js +562 -0
  282. package/dist/packages/runtime/runtime-caches.d.ts +91 -0
  283. package/dist/packages/{engine → runtime}/runtime-caches.js +77 -49
  284. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  285. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  286. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  287. package/dist/packages/runtime/runtime-executor.js +131 -0
  288. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  289. package/dist/packages/runtime/runtime-jobs.js +463 -0
  290. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  291. package/dist/packages/runtime/runtime-observability.js +39 -0
  292. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  293. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  294. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  295. package/dist/packages/runtime/runtime-project-mutations.js +64 -0
  296. package/dist/packages/runtime/runtime-project-reads.d.ts +15 -0
  297. package/dist/packages/runtime/runtime-project-reads.js +381 -0
  298. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  299. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  300. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +21 -16
  301. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +48 -38
  302. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  303. package/dist/packages/runtime/runtime-verify-runs.js +295 -0
  304. package/dist/packages/runtime/runtime.d.ts +1165 -0
  305. package/dist/packages/runtime/runtime.js +417 -0
  306. package/dist/packages/runtime/schemas/actions.d.ts +1182 -0
  307. package/dist/packages/runtime/schemas/actions.js +117 -0
  308. package/dist/packages/runtime/schemas/agents.d.ts +76 -0
  309. package/dist/packages/runtime/schemas/agents.js +41 -0
  310. package/dist/packages/runtime/schemas/build-plans.d.ts +959 -0
  311. package/dist/packages/runtime/schemas/build-plans.js +107 -0
  312. package/dist/packages/runtime/schemas/files.d.ts +567 -0
  313. package/dist/packages/runtime/schemas/files.js +51 -0
  314. package/dist/packages/runtime/schemas/index.d.ts +8 -0
  315. package/dist/packages/runtime/schemas/index.js +12 -0
  316. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  317. package/dist/packages/runtime/schemas/instance.js +143 -0
  318. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  319. package/dist/packages/runtime/schemas/jobs.js +103 -0
  320. package/dist/packages/runtime/schemas/projects.d.ts +339 -0
  321. package/dist/packages/runtime/schemas/projects.js +136 -0
  322. package/dist/packages/runtime/schemas/runs.d.ts +2676 -0
  323. package/dist/packages/runtime/schemas/runs.js +98 -0
  324. package/dist/packages/runtime/service/index.d.ts +3 -0
  325. package/dist/packages/runtime/service/index.js +3 -0
  326. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  327. package/dist/packages/runtime/service/openapi.js +117 -0
  328. package/dist/packages/runtime/service/operations.d.ts +1490 -0
  329. package/dist/packages/runtime/service/operations.js +245 -0
  330. package/dist/packages/runtime/service/routes.d.ts +106 -0
  331. package/dist/packages/runtime/service/routes.js +120 -0
  332. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  333. package/dist/packages/runtime/service/server-api-files.js +85 -0
  334. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  335. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  336. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  337. package/dist/packages/runtime/service/server-guards.js +181 -0
  338. package/dist/packages/runtime/service/server-helpers.d.ts +27 -0
  339. package/dist/packages/runtime/service/server-helpers.js +89 -0
  340. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  341. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  342. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  343. package/dist/packages/runtime/service/server-routes-action-proposals.js +43 -0
  344. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  345. package/dist/packages/runtime/service/server-routes-agents.js +198 -0
  346. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  347. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  348. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  349. package/dist/packages/runtime/service/server-routes-build-plans.js +83 -0
  350. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  351. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  352. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  353. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  354. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  355. package/dist/packages/runtime/service/server-routes-project-context.js +192 -0
  356. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  357. package/dist/packages/runtime/service/server-routes-project-jobs.js +130 -0
  358. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  359. package/dist/packages/runtime/service/server-routes-project-runs.js +85 -0
  360. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  361. package/dist/packages/runtime/service/server-routes-projects.js +92 -0
  362. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  363. package/dist/packages/runtime/service/server-routes-runs.js +112 -0
  364. package/dist/packages/runtime/service/server.d.ts +37 -0
  365. package/dist/packages/runtime/service/server.js +300 -0
  366. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  367. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  368. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  369. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  370. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  371. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  372. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  373. package/dist/packages/{engine → runtime}/verify/lib/schema.js +26 -18
  374. package/dist/packages/{engine → runtime}/verify/verify-execution.js +11 -11
  375. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +4 -4
  376. package/dist/packages/runtime/verify/verify-paths.js +61 -0
  377. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  378. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  379. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  380. package/dist/packages/{engine → runtime}/verify/verify-specs.js +5 -3
  381. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  382. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  383. package/dist/packages/runtime/verify/verify-types.js +1 -0
  384. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  385. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  386. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  387. package/dist/packages/runtime/wire-schemas.js +27 -0
  388. package/package.json +40 -30
  389. package/public-repo/CONTRIBUTING.md +7 -16
  390. package/public-repo/README.md +175 -234
  391. package/public-repo/SECURITY.md +3 -4
  392. package/public-repo/build-plans/interf-default/README.md +19 -14
  393. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +18 -11
  394. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +12 -5
  395. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +16 -4
  396. package/public-repo/build-plans/interf-default/build-plan.json +34 -28
  397. package/public-repo/build-plans/interf-default/build-plan.schema.json +54 -32
  398. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  399. package/public-repo/build-plans/interf-default/use/query/SKILL.md +17 -11
  400. package/public-repo/openapi/local-service.openapi.json +6803 -0
  401. package/public-repo/skills/interf/SKILL.md +460 -179
  402. package/dist/cli/commands/prep.d.ts +0 -2
  403. package/dist/cli/commands/prep.js +0 -240
  404. package/dist/cli/commands/test.d.ts +0 -10
  405. package/dist/cli/commands/test.js +0 -85
  406. package/dist/cli/commands/web.d.ts +0 -2
  407. package/dist/cli/commands/web.js +0 -286
  408. package/dist/interf-ui/404.html +0 -1
  409. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  410. package/dist/interf-ui/__next._full.txt +0 -20
  411. package/dist/interf-ui/__next._head.txt +0 -5
  412. package/dist/interf-ui/__next._index.txt +0 -5
  413. package/dist/interf-ui/__next._tree.txt +0 -5
  414. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_buildManifest.js +0 -11
  415. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_clientMiddlewareManifest.js +0 -1
  416. package/dist/interf-ui/_next/static/_qJKnA0dammQ306MG_zMq/_ssgManifest.js +0 -1
  417. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  418. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  419. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  420. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  421. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  422. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  423. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  424. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  425. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  426. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  427. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  428. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  429. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  430. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  431. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  432. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  433. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  434. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  435. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  436. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  437. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  438. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  439. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  440. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  441. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  442. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  443. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  444. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  445. package/dist/interf-ui/_not-found.html +0 -1
  446. package/dist/interf-ui/_not-found.txt +0 -15
  447. package/dist/interf-ui/index.html +0 -1
  448. package/dist/interf-ui/index.txt +0 -20
  449. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  450. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  451. package/dist/packages/engine/action-definitions.d.ts +0 -407
  452. package/dist/packages/engine/action-definitions.js +0 -1158
  453. package/dist/packages/engine/action-values.d.ts +0 -1
  454. package/dist/packages/engine/action-values.js +0 -1
  455. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  456. package/dist/packages/engine/agents/lib/args.js +0 -52
  457. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  458. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  459. package/dist/packages/engine/agents/lib/constants.js +0 -28
  460. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  461. package/dist/packages/engine/agents/lib/schema.js +0 -7
  462. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  463. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  464. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  465. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  466. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  467. package/dist/packages/engine/build/build-pipeline.js +0 -175
  468. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  469. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  470. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  471. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  472. package/dist/packages/engine/build/build-target.js +0 -16
  473. package/dist/packages/engine/build/check-evaluator.js +0 -298
  474. package/dist/packages/engine/build/reset.d.ts +0 -2
  475. package/dist/packages/engine/build/reset.js +0 -74
  476. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  477. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  478. package/dist/packages/engine/build/runtime-runs.js +0 -224
  479. package/dist/packages/engine/build/runtime.d.ts +0 -5
  480. package/dist/packages/engine/build/runtime.js +0 -4
  481. package/dist/packages/engine/build/source-files.d.ts +0 -46
  482. package/dist/packages/engine/build/source-files.js +0 -149
  483. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  484. package/dist/packages/engine/build/state-artifacts.js +0 -14
  485. package/dist/packages/engine/build/state-health.d.ts +0 -4
  486. package/dist/packages/engine/build/state-io.d.ts +0 -11
  487. package/dist/packages/engine/build/state-io.js +0 -82
  488. package/dist/packages/engine/build/state-paths.js +0 -16
  489. package/dist/packages/engine/build/state-view.d.ts +0 -5
  490. package/dist/packages/engine/build/state.d.ts +0 -7
  491. package/dist/packages/engine/build/state.js +0 -12
  492. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  493. package/dist/packages/engine/build/validate-helpers.js +0 -41
  494. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  495. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  496. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  497. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  498. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  499. package/dist/packages/engine/cloud-seams.js +0 -84
  500. package/dist/packages/engine/index.d.ts +0 -22
  501. package/dist/packages/engine/index.js +0 -15
  502. package/dist/packages/engine/instance-paths.d.ts +0 -106
  503. package/dist/packages/engine/instance-paths.js +0 -171
  504. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  505. package/dist/packages/engine/lib/schema.js +0 -730
  506. package/dist/packages/engine/preparation-store.d.ts +0 -105
  507. package/dist/packages/engine/preparation-store.js +0 -213
  508. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  509. package/dist/packages/engine/readiness-check-draft.js +0 -111
  510. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  511. package/dist/packages/engine/routes.d.ts +0 -85
  512. package/dist/packages/engine/routes.js +0 -99
  513. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  514. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  515. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  516. package/dist/packages/engine/runtime.d.ts +0 -371
  517. package/dist/packages/engine/runtime.js +0 -2463
  518. package/dist/packages/engine/server.d.ts +0 -58
  519. package/dist/packages/engine/server.js +0 -1399
  520. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  521. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  522. package/dist/packages/engine/verify/verify-paths.js +0 -61
  523. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  524. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  525. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  526. package/dist/packages/engine/wire-schemas.js +0 -59
  527. package/dist/packages/project/index.d.ts +0 -9
  528. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  529. package/dist/packages/project/interf-bootstrap.js +0 -1
  530. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  531. package/dist/packages/project/interf-scaffold.js +0 -136
  532. package/dist/packages/project/interf.d.ts +0 -4
  533. package/dist/packages/project/interf.js +0 -3
  534. package/dist/packages/project/lib/schema.d.ts +0 -328
  535. package/dist/packages/project/lib/schema.js +0 -136
  536. package/dist/packages/project/preparation-entries.d.ts +0 -11
  537. package/dist/packages/project/preparation-entries.js +0 -49
  538. package/dist/packages/project/source-config.d.ts +0 -46
  539. package/dist/packages/project/source-config.js +0 -394
  540. package/dist/packages/project/source-folders.d.ts +0 -11
  541. package/public-repo/plugins/README.md +0 -9
  542. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  543. package/public-repo/plugins/interf/.mcp.json +0 -12
  544. package/public-repo/plugins/interf/README.md +0 -32
  545. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  546. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  547. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  548. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  549. /package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +0 -0
  550. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  551. /package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +0 -0
  552. /package/dist/packages/{engine → runtime}/agents/lib/executors.js +0 -0
  553. /package/dist/packages/{engine → runtime}/agents/lib/logs.d.ts +0 -0
  554. /package/dist/packages/{engine → runtime}/agents/lib/logs.js +0 -0
  555. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  556. /package/dist/packages/{engine → runtime}/agents/lib/render.d.ts +0 -0
  557. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  558. /package/dist/packages/{engine → runtime}/agents/lib/status.js +0 -0
  559. /package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +0 -0
  560. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  561. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  562. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  563. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  564. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  565. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  566. /package/dist/packages/{engine → runtime}/build/runtime-paths.d.ts +0 -0
  567. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  568. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  569. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  570. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  571. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  572. /package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +0 -0
  573. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  574. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  575. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -0,0 +1,383 @@
1
+ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync, } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join, relative, resolve } from "node:path";
4
+ import { buildShellSourceState, loadBuildStageInputs, loadContextGraphSourceManifest, loadContextGraphSourceState, } from "../../build/source-manifest.js";
5
+ import { CHECK_PARAM_CONTRACTS, CHECK_KINDS, SourceManifestSchema, StageInputsSchema, } from "../../../contracts/lib/schema.js";
6
+ import { stageExecutionShellsRoot, buildPlanImprovementLoopRoot, buildPlanPackagePathForContextGraph, contextGraphInterfConfigPath, contextGraphRuntimeSourceManifestPath, contextGraphRuntimeRoot, } from "../../build/context-graph-paths.js";
7
+ import { writeFileAtomic, writeJsonAtomic } from "../../build/atomic-fs.js";
8
+ import { resolveBuildPlanImprovementReviewSourcePaths } from "../../../build-plans/package/build-plan-review-paths.js";
9
+ import { copyIfExists, copyResolvedTree, freezePreservedShell, writeIfChanged, writeNativeSkillCopies, } from "./shell-fs.js";
10
+ import { shellLogsPath, shellRuntimePath, } from "./shell-paths.js";
11
+ import { writeStageExecutionWorkspaceManifest, } from "./shell-workspace.js";
12
+ import { readBuildPlanImprovementDoc, readContextGraphQuerySkillSource, renderBuildPlanAuthoringAgents, renderBuildPlanAuthoringSkill, renderBuildPlanImprovementAgents, renderBuildPlanImprovementSkill, renderClaudeBootstrap, renderSourceFilesTestAgents, renderSourceFilesTestQuerySkill, renderStageExecutionAgents, renderStageExecutionSkill, renderContextGraphAgents, renderContextGraphQueryNativeSkill, renderContextGraphQuerySkill, } from "./shell-templates.js";
13
+ import { buildStageArtifactMounts, ensureBuildExecutionSurface, projectBuildPlanMetadata, projectStageArtifactMountAliases, projectContextGraphReviewArtifactsState, projectContextGraphRuntimeArtifacts, projectContextGraphSchemaArtifacts, readStageBuildPlanDoc, stageMaterializedArtifactSet, syncStageExecutionShellWrites, writeExecutionShellPathsFile, } from "./shell-projection.js";
14
+ export { syncStageExecutionShellWrites };
15
+ export { renderClaudeBootstrap, renderContextGraphQuerySkill };
16
+ function shellRelativePathInside(shellRoot, locator) {
17
+ const absolutePath = resolve(shellRoot, locator);
18
+ const relativePath = relative(shellRoot, absolutePath);
19
+ if (relativePath === "" || relativePath.startsWith("..") || resolve(relativePath) === relativePath) {
20
+ return null;
21
+ }
22
+ return absolutePath;
23
+ }
24
+ export function validateStageExecutionShellInputs(options) {
25
+ const canonicalInputs = loadBuildStageInputs(options.contextGraphPath, options.stage.id);
26
+ if (!canonicalInputs) {
27
+ return { ok: false, summary: `Missing canonical stage inputs for ${options.stage.id}.` };
28
+ }
29
+ const canonicalManifest = loadContextGraphSourceManifest(options.contextGraphPath);
30
+ if (!canonicalManifest) {
31
+ return { ok: false, summary: "Missing canonical Source Manifest for stage execution." };
32
+ }
33
+ if (canonicalInputs.version !== 3 || canonicalInputs.source_manifest_id !== canonicalManifest.manifest_id) {
34
+ return { ok: false, summary: "Canonical stage inputs are not backed by the current Source Manifest." };
35
+ }
36
+ const shellInputsPath = shellRuntimePath(options.shellRoot, "stage-inputs.json");
37
+ if (!existsSync(shellInputsPath)) {
38
+ return { ok: false, summary: "Stage shell is missing runtime/stage-inputs.json." };
39
+ }
40
+ let shellInputs;
41
+ try {
42
+ shellInputs = StageInputsSchema.parse(JSON.parse(readFileSync(shellInputsPath, "utf8")));
43
+ }
44
+ catch (error) {
45
+ return {
46
+ ok: false,
47
+ summary: `Stage shell inputs are invalid: ${error instanceof Error ? error.message : String(error)}`,
48
+ };
49
+ }
50
+ if (shellInputs.source_state_id !== canonicalInputs.source_state_id) {
51
+ return { ok: false, summary: "Stage shell inputs do not match the canonical Source state id." };
52
+ }
53
+ if (shellInputs.version !== 3 || shellInputs.source_manifest_id !== canonicalManifest.manifest_id) {
54
+ return { ok: false, summary: "Stage shell inputs do not match the canonical Source Manifest id." };
55
+ }
56
+ if (shellInputs.inputs.length !== canonicalInputs.inputs.length || shellInputs.input_total !== canonicalInputs.input_total) {
57
+ return { ok: false, summary: "Stage shell input count does not match the canonical stage input count." };
58
+ }
59
+ const shellManifestPath = shellRuntimePath(options.shellRoot, "source-manifest.json");
60
+ if (!existsSync(shellManifestPath)) {
61
+ return { ok: false, summary: "Stage shell is missing runtime/source-manifest.json." };
62
+ }
63
+ let shellManifest;
64
+ try {
65
+ shellManifest = SourceManifestSchema.parse(JSON.parse(readFileSync(shellManifestPath, "utf8")));
66
+ }
67
+ catch (error) {
68
+ return {
69
+ ok: false,
70
+ summary: `Stage shell Source Manifest is invalid: ${error instanceof Error ? error.message : String(error)}`,
71
+ };
72
+ }
73
+ if (shellManifest.manifest_id !== canonicalManifest.manifest_id) {
74
+ return { ok: false, summary: "Stage shell Source Manifest does not match the canonical manifest id." };
75
+ }
76
+ const shellInputsByKey = new Map(shellInputs.inputs.map((input) => [`${input.source_file_id}\0${input.path}`, input]));
77
+ for (const canonicalInput of canonicalInputs.inputs) {
78
+ const key = `${canonicalInput.source_file_id}\0${canonicalInput.path}`;
79
+ const shellInput = shellInputsByKey.get(key);
80
+ if (!shellInput) {
81
+ return { ok: false, summary: `Stage shell is missing source input ${canonicalInput.path}.` };
82
+ }
83
+ if (canonicalInput.content_hash && shellInput.content_hash !== canonicalInput.content_hash) {
84
+ return { ok: false, summary: `Stage shell source input ${canonicalInput.path} has a changed content hash.` };
85
+ }
86
+ if (shellInput.locator !== canonicalInput.locator) {
87
+ return { ok: false, summary: `Stage shell source input ${canonicalInput.path} has a changed locator.` };
88
+ }
89
+ }
90
+ return { ok: true, summary: "Stage shell inputs match canonical source slices." };
91
+ }
92
+ export function writeNativeAgentSurface(rootPath, agentsContent, skillName, skillContent) {
93
+ let changed = false;
94
+ changed = writeIfChanged(join(rootPath, "AGENTS.md"), `${agentsContent.trimEnd()}\n`) || changed;
95
+ changed =
96
+ writeIfChanged(join(rootPath, "CLAUDE.md"), renderClaudeBootstrap(agentsContent)) || changed;
97
+ changed = writeNativeSkillCopies(rootPath, skillName, skillContent) || changed;
98
+ return changed;
99
+ }
100
+ export function pruneStageExecutionShells(contextGraphPath) {
101
+ rmSync(stageExecutionShellsRoot(contextGraphPath), { recursive: true, force: true });
102
+ }
103
+ export function projectContextGraphQueryShell(contextGraphPath, contextGraphName, buildPlanId, options) {
104
+ const agentsContent = renderContextGraphAgents(contextGraphPath, contextGraphName, buildPlanId, options);
105
+ const querySkillContent = readContextGraphQuerySkillSource(contextGraphPath);
106
+ return writeNativeAgentSurface(contextGraphPath, agentsContent, "interf-query", renderContextGraphQueryNativeSkill(querySkillContent));
107
+ }
108
+ export function projectSourceFilesTestQueryShell(rootPath) {
109
+ return writeNativeAgentSurface(rootPath, renderSourceFilesTestAgents(), "interf-query", renderSourceFilesTestQuerySkill());
110
+ }
111
+ export function createStageExecutionShell(contextGraphPath, contextGraphName, buildPlanId, stage, writeArtifacts = []) {
112
+ const schema = ensureBuildExecutionSurface(contextGraphPath);
113
+ const materializedArtifacts = stageMaterializedArtifactSet(schema, stage, writeArtifacts);
114
+ const cleanWriteArtifacts = new Set(stage.writes.filter((artifactId) => !stage.reads.includes(artifactId)));
115
+ const shellsRoot = stageExecutionShellsRoot(contextGraphPath);
116
+ const shellRoot = join(shellsRoot, `${stage.id}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`);
117
+ mkdirSync(shellRoot, { recursive: true });
118
+ mkdirSync(join(shellRoot, "runtime"), { recursive: true });
119
+ mkdirSync(join(shellRoot, ".interf", "runtime"), { recursive: true });
120
+ mkdirSync(join(shellRoot, "inputs"), { recursive: true });
121
+ mkdirSync(join(shellRoot, "outputs"), { recursive: true });
122
+ mkdirSync(shellLogsPath(shellRoot), { recursive: true });
123
+ copyResolvedTree({
124
+ sourcePath: contextGraphInterfConfigPath(contextGraphPath),
125
+ targetPath: join(shellRoot, "interf.json"),
126
+ shellType: "stage-execution",
127
+ });
128
+ copyIfExists(join(contextGraphRuntimeRoot(contextGraphPath), "stage-contract.json"), shellRuntimePath(shellRoot, "stage-contract.json"), "stage-execution");
129
+ const sourceState = loadContextGraphSourceState(contextGraphPath);
130
+ const stageInputs = loadBuildStageInputs(contextGraphPath, stage.id);
131
+ const sourceManifest = loadContextGraphSourceManifest(contextGraphPath);
132
+ if (sourceManifest) {
133
+ writeJsonAtomic(shellRuntimePath(shellRoot, "source-manifest.json"), sourceManifest);
134
+ copyIfExists(contextGraphRuntimeSourceManifestPath(contextGraphPath), join(shellRoot, ".interf", "runtime", "source-manifest.json"), "stage-execution");
135
+ }
136
+ if (sourceState && stageInputs) {
137
+ writeJsonAtomic(shellRuntimePath(shellRoot, "stage-inputs.json"), stageInputs);
138
+ writeJsonAtomic(shellRuntimePath(shellRoot, "source-state.json"), buildShellSourceState(sourceState, stageInputs));
139
+ }
140
+ writeStageSelfCheckScript(shellRoot);
141
+ projectContextGraphSchemaArtifacts(contextGraphPath, shellRoot, schema, new Set([...stage.reads, ...stage.writes]), materializedArtifacts, cleanWriteArtifacts);
142
+ projectBuildPlanMetadata(contextGraphPath, shellRoot, stage);
143
+ projectStageArtifactMountAliases(shellRoot, stage, schema);
144
+ writeExecutionShellPathsFile(shellRoot, buildPlanId, stage, buildStageArtifactMounts(contextGraphPath, shellRoot, stage, schema));
145
+ const agentsContent = renderStageExecutionAgents(contextGraphName, buildPlanId, stage);
146
+ writeNativeAgentSurface(shellRoot, agentsContent, "interf-stage", renderStageExecutionSkill(stage, readStageBuildPlanDoc(contextGraphPath, stage)));
147
+ writeStageExecutionWorkspaceManifest({
148
+ contextGraphPath,
149
+ shellRoot,
150
+ buildPlanId,
151
+ stage,
152
+ });
153
+ return {
154
+ rootPath: shellRoot,
155
+ };
156
+ }
157
+ function writeStageSelfCheckScript(shellRoot) {
158
+ const checkEvaluatorModuleUrl = new URL("../../build/check-evaluator.js", import.meta.url).href;
159
+ const runtimeSchemaModuleUrl = new URL("../../build/lib/schema.js", import.meta.url).href;
160
+ const contractsSchemaModuleUrl = new URL("../../../contracts/lib/schema.js", import.meta.url).href;
161
+ const script = [
162
+ "#!/usr/bin/env node",
163
+ "import { existsSync, readFileSync } from \"node:fs\";",
164
+ "import { dirname, resolve } from \"node:path\";",
165
+ "import { fileURLToPath } from \"node:url\";",
166
+ "",
167
+ `const { evaluateChecks } = await import(${JSON.stringify(checkEvaluatorModuleUrl)});`,
168
+ `const { RuntimeStageContractSchema } = await import(${JSON.stringify(runtimeSchemaModuleUrl)});`,
169
+ `const { SourceManifestSchema, StageEvidenceSchema, StageInputsSchema } = await import(${JSON.stringify(contractsSchemaModuleUrl)});`,
170
+ "",
171
+ "const shellRoot = resolve(dirname(fileURLToPath(import.meta.url)), \"..\");",
172
+ "const contractPath = resolve(shellRoot, \"runtime\", \"stage-contract.json\");",
173
+ "const contract = RuntimeStageContractSchema.parse(JSON.parse(readFileSync(contractPath, \"utf8\")));",
174
+ "const artifactResults = [];",
175
+ "const evidenceFailures = [];",
176
+ "const inputFailures = [];",
177
+ "const stageInputsPath = resolve(shellRoot, \"runtime\", \"stage-inputs.json\");",
178
+ "",
179
+ "if (!existsSync(stageInputsPath)) {",
180
+ " inputFailures.push(\"runtime/stage-inputs.json was not written.\");",
181
+ "} else {",
182
+ " try {",
183
+ " const stageInputs = StageInputsSchema.parse(JSON.parse(readFileSync(stageInputsPath, \"utf8\")));",
184
+ " if (stageInputs.input_total !== stageInputs.inputs.length) {",
185
+ " inputFailures.push(`stage-inputs input_total ${stageInputs.input_total} does not match ${stageInputs.inputs.length}.`);",
186
+ " }",
187
+ " const manifestPath = resolve(shellRoot, \"runtime\", \"source-manifest.json\");",
188
+ " if (!existsSync(manifestPath)) {",
189
+ " inputFailures.push(\"runtime/source-manifest.json was not written.\");",
190
+ " } else {",
191
+ " const manifest = SourceManifestSchema.parse(JSON.parse(readFileSync(manifestPath, \"utf8\")));",
192
+ " if (stageInputs.version !== 3 || stageInputs.source_manifest_id !== manifest.manifest_id) {",
193
+ " inputFailures.push(\"stage inputs are not backed by runtime/source-manifest.json.\");",
194
+ " }",
195
+ " }",
196
+ " } catch (error) {",
197
+ " inputFailures.push(`stage inputs JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
198
+ " }",
199
+ "}",
200
+ "",
201
+ "for (const writeContract of contract.artifacts.write_contracts) {",
202
+ " const result = evaluateChecks(writeContract.checks, {",
203
+ " rootPath: shellRoot,",
204
+ " targetPath: writeContract.path,",
205
+ " counts: contract.counts,",
206
+ " });",
207
+ " artifactResults.push({",
208
+ " artifact_id: writeContract.artifact_id,",
209
+ " path: writeContract.path,",
210
+ " check_results: result.check_results,",
211
+ " failures: result.failures,",
212
+ " });",
213
+ "}",
214
+ "",
215
+ "const failures = artifactResults.flatMap((artifact) =>",
216
+ " artifact.failures.map((failure) => ({ artifact, failure })),",
217
+ ");",
218
+ "const totalChecks = artifactResults.reduce((total, artifact) => total + artifact.check_results.length, 0);",
219
+ "const passedChecks = artifactResults.reduce(",
220
+ " (total, artifact) => total + artifact.check_results.filter((check) => check.passed).length,",
221
+ " 0,",
222
+ ");",
223
+ "",
224
+ "if (contract.contract_type === \"build-file-evidence\") {",
225
+ " const evidencePath = resolve(shellRoot, \"runtime\", \"stage-evidence.json\");",
226
+ " if (!existsSync(evidencePath)) {",
227
+ " evidenceFailures.push(\"runtime/stage-evidence.json was not written.\");",
228
+ " } else {",
229
+ " try {",
230
+ " const evidence = StageEvidenceSchema.parse(JSON.parse(readFileSync(evidencePath, \"utf8\")));",
231
+ " if (evidence.run_id !== contract.run_id) {",
232
+ " evidenceFailures.push(`stage evidence run_id ${evidence.run_id} does not match ${contract.run_id}.`);",
233
+ " }",
234
+ " if (evidence.stage !== contract.stage) {",
235
+ " evidenceFailures.push(`stage evidence stage ${evidence.stage} does not match ${contract.stage}.`);",
236
+ " }",
237
+ " const evidenceItemsWithRefs = evidence.items.filter((item) => item.source_refs.length > 0 || item.output_refs.length > 0);",
238
+ " if (evidenceItemsWithRefs.length === 0) {",
239
+ " evidenceFailures.push(\"stage evidence needs at least one source/output evidence item.\");",
240
+ " }",
241
+ " const writableArtifacts = new Set(contract.artifacts.writes);",
242
+ " for (const item of evidence.items) {",
243
+ " for (const ref of item.output_refs) {",
244
+ " if (!writableArtifacts.has(ref.artifact_id)) {",
245
+ " evidenceFailures.push(`stage evidence output artifact ${ref.artifact_id} is not a declared write.`);",
246
+ " }",
247
+ " if (!existsSync(resolve(shellRoot, ref.path))) {",
248
+ " evidenceFailures.push(`stage evidence output path ${ref.path} does not exist.`);",
249
+ " }",
250
+ " }",
251
+ " }",
252
+ " } catch (error) {",
253
+ " evidenceFailures.push(`stage evidence JSON is invalid: ${error instanceof Error ? error.message : String(error)}`);",
254
+ " }",
255
+ " }",
256
+ "}",
257
+ "",
258
+ "if (failures.length === 0 && evidenceFailures.length === 0 && inputFailures.length === 0) {",
259
+ " console.log(`VALID: ${contract.stage} stage outputs satisfy ${passedChecks}/${totalChecks} deterministic check(s).`);",
260
+ " process.exit(0);",
261
+ "}",
262
+ "",
263
+ "console.log(`INVALID: ${failures.length + evidenceFailures.length + inputFailures.length} required deterministic check(s) failed for stage ${contract.stage}.`);",
264
+ "for (const { artifact, failure } of failures) {",
265
+ " console.log(`- ${artifact.artifact_id} (${artifact.path}) / ${failure.check_id}: ${failure.summary}`);",
266
+ " if (failure.details) {",
267
+ " console.log(` details: ${JSON.stringify(failure.details)}`);",
268
+ " }",
269
+ "}",
270
+ "for (const failure of evidenceFailures) {",
271
+ " console.log(`- stage evidence: ${failure}`);",
272
+ "}",
273
+ "for (const failure of inputFailures) {",
274
+ " console.log(`- stage input: ${failure}`);",
275
+ "}",
276
+ "process.exit(1);",
277
+ "",
278
+ ].join("\n");
279
+ writeFileAtomic(shellRuntimePath(shellRoot, "check-stage.mjs"), script);
280
+ }
281
+ export function freezeStageExecutionShell(rootPath) {
282
+ return freezePreservedShell(rootPath, "stage-execution");
283
+ }
284
+ export function createBuildPlanAuthoringShell(options) {
285
+ const shellRoot = mkdtempSync(join(tmpdir(), `interf-build-plan-author-${options.buildPlanId}-`));
286
+ mkdirSync(join(shellRoot, "runtime"), { recursive: true });
287
+ mkdirSync(join(shellRoot, "artifacts"), { recursive: true });
288
+ mkdirSync(join(shellRoot, "logs"), { recursive: true });
289
+ const context = {
290
+ kind: "interf-build-plan-authoring",
291
+ version: 1,
292
+ generated_at: new Date().toISOString(),
293
+ authoring_mode: "from-scratch",
294
+ build_plan_id: options.buildPlanId,
295
+ build_plan_label: options.label,
296
+ ...(options.referenceBuildPlanId ? { reference_build_plan_id: options.referenceBuildPlanId } : {}),
297
+ intent: options.intent,
298
+ ...(options.userPrepInstructions ? { user_prep_instructions: options.userPrepInstructions } : {}),
299
+ allowed_check_kinds: CHECK_KINDS,
300
+ check_param_contracts: CHECK_PARAM_CONTRACTS,
301
+ requested_artifacts: options.requestedArtifacts ?? [],
302
+ checks: options.checks,
303
+ artifact_requirements: options.artifactRequirements ?? [],
304
+ project: {
305
+ source_folder_path: options.sourceFolderPath,
306
+ source_context: options.sourceContext ?? null,
307
+ },
308
+ };
309
+ writeFileSync(join(shellRoot, "runtime", "authoring-context.json"), `${JSON.stringify(context, null, 2)}\n`);
310
+ writeFileSync(join(shellRoot, "runtime", "source-locator.json"), `${JSON.stringify({
311
+ kind: "interf-source-locator",
312
+ version: 1,
313
+ generated_at: new Date().toISOString(),
314
+ source: {
315
+ kind: "local-folder",
316
+ locator: options.sourceFolderPath,
317
+ },
318
+ note: "Interf does not pre-scan Source files for Build Plan authoring. The authoring agent inspects this locator through its own Source access.",
319
+ }, null, 2)}\n`);
320
+ copyResolvedTree({
321
+ sourcePath: options.buildPlanPath,
322
+ targetPath: join(shellRoot, "build-plan"),
323
+ shellType: "build-plan-authoring",
324
+ });
325
+ writeNativeAgentSurface(shellRoot, renderBuildPlanAuthoringAgents({
326
+ buildPlanId: options.buildPlanId,
327
+ label: options.label,
328
+ referenceBuildPlanId: options.referenceBuildPlanId ?? null,
329
+ }), "interf-build-plan-author", renderBuildPlanAuthoringSkill());
330
+ return {
331
+ rootPath: shellRoot,
332
+ buildPlanBeforePath: join(shellRoot, "artifacts", "build-plan-before"),
333
+ buildPlanAfterPath: join(shellRoot, "artifacts", "build-plan-after"),
334
+ promptLogPath: join(shellRoot, "logs", "build-plan-author.prompt.txt"),
335
+ eventLogPath: join(shellRoot, "logs", "build-plan-author.events.ndjson"),
336
+ statusLogPath: join(shellRoot, "logs", "build-plan-author.status.log"),
337
+ };
338
+ }
339
+ export function createBuildPlanImprovementShell(options) {
340
+ const schema = ensureBuildExecutionSurface(options.contextGraphPath);
341
+ const loopRootPath = buildPlanImprovementLoopRoot(options.contextGraphPath, options.runId, options.loopIndex);
342
+ const shellRoot = join(loopRootPath, "shell");
343
+ mkdirSync(shellRoot, { recursive: true });
344
+ mkdirSync(join(shellRoot, "runtime"), { recursive: true });
345
+ mkdirSync(join(shellRoot, "artifacts"), { recursive: true });
346
+ mkdirSync(join(loopRootPath, "logs"), { recursive: true });
347
+ writeFileSync(join(shellRoot, "runtime", "loop-context.json"), `${JSON.stringify(options.context, null, 2)}\n`);
348
+ projectContextGraphReviewArtifactsState(options.contextGraphPath, shellRoot, schema);
349
+ copyResolvedTree({
350
+ sourcePath: buildPlanPackagePathForContextGraph(options.contextGraphPath),
351
+ targetPath: join(shellRoot, "build-plan"),
352
+ shellType: "build-plan-improvement",
353
+ });
354
+ copyIfExists(contextGraphInterfConfigPath(options.contextGraphPath), join(shellRoot, "interf.json"), "build-plan-improvement");
355
+ projectContextGraphRuntimeArtifacts(options.contextGraphPath, shellRoot);
356
+ const reviewSources = resolveBuildPlanImprovementReviewSourcePaths(options.contextGraphPath);
357
+ if (reviewSources.executionShells) {
358
+ copyIfExists(reviewSources.executionShells, join(shellRoot, "artifacts", "execution-shells"), "build-plan-improvement");
359
+ }
360
+ if (reviewSources.benchmarkRuns) {
361
+ copyIfExists(reviewSources.benchmarkRuns, join(shellRoot, "artifacts", "benchmark-runs"), "build-plan-improvement");
362
+ }
363
+ if (reviewSources.targetTestRuns) {
364
+ copyIfExists(reviewSources.targetTestRuns, join(shellRoot, "artifacts", "test-runs"), "build-plan-improvement");
365
+ }
366
+ if (reviewSources.targetTestSandboxes) {
367
+ copyIfExists(reviewSources.targetTestSandboxes, join(shellRoot, "artifacts", "test-sandboxes"), "build-plan-improvement");
368
+ }
369
+ const agentsContent = renderBuildPlanImprovementAgents(options.contextGraphName, options.buildPlanId, options.loopIndex);
370
+ writeNativeAgentSurface(shellRoot, agentsContent, "interf-build-plan-improver", renderBuildPlanImprovementSkill(options.buildPlanId, options.loopIndex, readBuildPlanImprovementDoc(options.contextGraphPath)));
371
+ return {
372
+ rootPath: shellRoot,
373
+ loopRootPath,
374
+ buildPlanBeforePath: join(loopRootPath, "build-plan-before"),
375
+ buildPlanAfterPath: join(loopRootPath, "build-plan-after"),
376
+ promptLogPath: join(loopRootPath, "logs", "build-plan-improver.prompt.txt"),
377
+ eventLogPath: join(loopRootPath, "logs", "build-plan-improver.events.ndjson"),
378
+ statusLogPath: join(loopRootPath, "logs", "build-plan-improver.status.log"),
379
+ };
380
+ }
381
+ export function freezeBuildPlanImprovementShell(rootPath) {
382
+ return freezePreservedShell(rootPath, "build-plan-improvement");
383
+ }
@@ -1,5 +1,11 @@
1
- import { type InterfUserConfig } from "./schema.js";
2
- export type { InterfUserConfig } from "./schema.js";
1
+ import { z } from "zod";
2
+ export declare const InterfUserConfigSchema: z.ZodObject<{
3
+ agent: z.ZodString;
4
+ agentCommand: z.ZodString;
5
+ skillsInstalled: z.ZodBoolean;
6
+ initialized: z.ZodString;
7
+ }, z.core.$strip>;
8
+ export type InterfUserConfig = z.infer<typeof InterfUserConfigSchema>;
3
9
  /** `~/.interf/` (overridable via `INTERF_USER_HOME`). */
4
10
  export declare function interfHome(): string;
5
11
  /** `~/.interf/config.json` — local executor preferences. */
@@ -1,8 +1,14 @@
1
1
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
+ import { z } from "zod";
3
4
  import { readJsonFileWithSchema } from "../../../contracts/utils/parse.js";
4
- import { interfHomeRoot } from "../../../contracts/lib/preparation-paths.js";
5
- import { InterfUserConfigSchema } from "./schema.js";
5
+ import { interfHomeRoot } from "../../../contracts/lib/project-paths.js";
6
+ export const InterfUserConfigSchema = z.object({
7
+ agent: z.string(),
8
+ agentCommand: z.string(),
9
+ skillsInstalled: z.boolean(),
10
+ initialized: z.string(),
11
+ });
6
12
  /** `~/.interf/` (overridable via `INTERF_USER_HOME`). */
7
13
  export function interfHome() {
8
14
  return interfHomeRoot();
@@ -0,0 +1,13 @@
1
+ import type { AgentProvider } from "./types.js";
2
+ /**
3
+ * Claude Code provider.
4
+ *
5
+ * Configuration follows Anthropic's third-party integration spec:
6
+ * https://code.claude.com/docs/en/third-party-integrations
7
+ *
8
+ * The user-facing model knob is the alias (`opus`, `sonnet`, `haiku`)
9
+ * which Anthropic resolves server-side to the current pinned version.
10
+ * Hosts that need to pin a specific version do it via the
11
+ * `ANTHROPIC_DEFAULT_*_MODEL` env vars supplied by the user.
12
+ */
13
+ export declare const claudeCodeProvider: AgentProvider;
@@ -0,0 +1,45 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ /**
4
+ * Claude Code provider.
5
+ *
6
+ * Configuration follows Anthropic's third-party integration spec:
7
+ * https://code.claude.com/docs/en/third-party-integrations
8
+ *
9
+ * The user-facing model knob is the alias (`opus`, `sonnet`, `haiku`)
10
+ * which Anthropic resolves server-side to the current pinned version.
11
+ * Hosts that need to pin a specific version do it via the
12
+ * `ANTHROPIC_DEFAULT_*_MODEL` env vars supplied by the user.
13
+ */
14
+ export const claudeCodeProvider = {
15
+ name: "claude-code",
16
+ displayName: "Claude Code",
17
+ command: "claude",
18
+ homeDir: join(homedir(), ".claude"),
19
+ skillsDir: join(homedir(), ".claude", "skills"),
20
+ supportsAutomatedRuns: true,
21
+ defaultModel: "claude-sonnet-4-6",
22
+ defaultEffort: "low",
23
+ noiseFilters: [],
24
+ buildArgs(prompt, profile) {
25
+ const args = [
26
+ "-p",
27
+ prompt,
28
+ "--output-format",
29
+ "stream-json",
30
+ "--verbose",
31
+ "--allowedTools",
32
+ "Read,Write,Edit,Bash,Grep,Glob,Agent",
33
+ ];
34
+ if (profile.model) {
35
+ args.push("--model", profile.model);
36
+ }
37
+ if (profile.effort) {
38
+ args.push("--effort", profile.effort);
39
+ }
40
+ return args;
41
+ },
42
+ buildEnv(baseEnv) {
43
+ return { ...baseEnv };
44
+ },
45
+ };
@@ -0,0 +1,17 @@
1
+ import type { AgentProvider } from "./types.js";
2
+ /**
3
+ * Codex provider.
4
+ *
5
+ * Reasoning effort is passed via the documented config override
6
+ * (`-c model_reasoning_effort=...`) rather than a flag.
7
+ *
8
+ * The `SHELL` env var is stripped from the spawn so Codex picks a
9
+ * sandbox-safe default shell instead of inheriting the host login shell.
10
+ *
11
+ * Two stderr noise lines are expected on every run and must not be
12
+ * treated as preflight failures.
13
+ *
14
+ * Codex preflight is retried when it reports transient session-record
15
+ * errors that resolve on a second attempt.
16
+ */
17
+ export declare const codexProvider: AgentProvider;
@@ -0,0 +1,64 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ const SANDBOX_MODE = `work${"space-write"}`;
4
+ /**
5
+ * Codex provider.
6
+ *
7
+ * Reasoning effort is passed via the documented config override
8
+ * (`-c model_reasoning_effort=...`) rather than a flag.
9
+ *
10
+ * The `SHELL` env var is stripped from the spawn so Codex picks a
11
+ * sandbox-safe default shell instead of inheriting the host login shell.
12
+ *
13
+ * Two stderr noise lines are expected on every run and must not be
14
+ * treated as preflight failures.
15
+ *
16
+ * Codex preflight is retried when it reports transient session-record
17
+ * errors that resolve on a second attempt.
18
+ */
19
+ export const codexProvider = {
20
+ name: "codex",
21
+ displayName: "Codex",
22
+ command: "codex",
23
+ homeDir: join(homedir(), ".codex"),
24
+ skillsDir: join(homedir(), ".codex", "skills"),
25
+ supportsAutomatedRuns: true,
26
+ defaultModel: "gpt-5.3-codex",
27
+ defaultEffort: "high",
28
+ noiseFilters: [
29
+ /codex_core_skills::loader: failed to stat skills entry .*\/interf-[^ ]+ \(symlink\): No such file or directory/,
30
+ /codex_core::codex: failed to load skill .*\/gstack\/SKILL\.md: invalid description: exceeds maximum length of 1024 characters/,
31
+ ],
32
+ buildArgs(prompt, profile) {
33
+ const args = [
34
+ "exec",
35
+ "--json",
36
+ "-s",
37
+ SANDBOX_MODE,
38
+ "--skip-git-repo-check",
39
+ ];
40
+ if (profile.model) {
41
+ args.push("--model", profile.model);
42
+ }
43
+ if (profile.profile) {
44
+ args.push("--profile", profile.profile);
45
+ }
46
+ if (profile.effort) {
47
+ args.push("-c", `model_reasoning_effort=${JSON.stringify(profile.effort)}`);
48
+ }
49
+ args.push(prompt);
50
+ return args;
51
+ },
52
+ buildEnv(baseEnv) {
53
+ const env = { ...baseEnv };
54
+ delete env.SHELL;
55
+ return env;
56
+ },
57
+ isTransientPreflightFailure(stderr, errorMessage) {
58
+ const text = `${errorMessage}\n${stderr}`;
59
+ if (/usage limit/i.test(text))
60
+ return false;
61
+ return /failed to record rollout items/i.test(text)
62
+ || /thread\s+[0-9a-f-]+\s+not found/i.test(text);
63
+ },
64
+ };
@@ -0,0 +1,9 @@
1
+ import type { AgentProvider } from "./types.js";
2
+ /**
3
+ * Cursor provider.
4
+ *
5
+ * Cursor is detected for `interf init` so the listing shows it, but
6
+ * Interf cannot drive automated Build runs through Cursor today.
7
+ * `buildArgs` therefore throws.
8
+ */
9
+ export declare const cursorProvider: AgentProvider;
@@ -0,0 +1,24 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ /**
4
+ * Cursor provider.
5
+ *
6
+ * Cursor is detected for `interf init` so the listing shows it, but
7
+ * Interf cannot drive automated Build runs through Cursor today.
8
+ * `buildArgs` therefore throws.
9
+ */
10
+ export const cursorProvider = {
11
+ name: "cursor",
12
+ displayName: "Cursor",
13
+ command: "cursor",
14
+ homeDir: join(homedir(), ".cursor"),
15
+ skillsDir: join(homedir(), ".cursor", "skills"),
16
+ supportsAutomatedRuns: false,
17
+ noiseFilters: [],
18
+ buildArgs() {
19
+ throw new Error('Cursor is not yet supported for automated Build runs.');
20
+ },
21
+ buildEnv(baseEnv) {
22
+ return { ...baseEnv };
23
+ },
24
+ };
@@ -0,0 +1,9 @@
1
+ import type { AgentProvider } from "./types.js";
2
+ export type { AgentProvider } from "./types.js";
3
+ export declare const BUILT_IN_PROVIDERS: ReadonlyArray<AgentProvider>;
4
+ /** Look up a built-in provider by name. Returns undefined for custom agents. */
5
+ export declare function getBuiltInProvider(name: string): AgentProvider | undefined;
6
+ /** True when `name` matches a built-in provider. */
7
+ export declare function isBuiltInProviderName(name: string): boolean;
8
+ /** All providers that support automated Build runs. */
9
+ export declare function automatableBuiltInProviders(): AgentProvider[];
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Agent provider registry.
3
+ *
4
+ * The full set of built-in agent providers Interf knows about. Engine
5
+ * code consumes this list as data — there are no name comparisons or
6
+ * `if (agent === "codex")` branches outside the provider files.
7
+ *
8
+ * User-registered custom agents (`source: "user"` in the registry) flow
9
+ * through a separate generic provider that builds spawn args from a
10
+ * stored command template; that path lives outside this list.
11
+ */
12
+ import { claudeCodeProvider } from "./claude-code.js";
13
+ import { codexProvider } from "./codex.js";
14
+ import { cursorProvider } from "./cursor.js";
15
+ export const BUILT_IN_PROVIDERS = [
16
+ claudeCodeProvider,
17
+ codexProvider,
18
+ cursorProvider,
19
+ ];
20
+ /** Look up a built-in provider by name. Returns undefined for custom agents. */
21
+ export function getBuiltInProvider(name) {
22
+ return BUILT_IN_PROVIDERS.find((provider) => provider.name === name);
23
+ }
24
+ /** True when `name` matches a built-in provider. */
25
+ export function isBuiltInProviderName(name) {
26
+ return BUILT_IN_PROVIDERS.some((provider) => provider.name === name);
27
+ }
28
+ /** All providers that support automated Build runs. */
29
+ export function automatableBuiltInProviders() {
30
+ return BUILT_IN_PROVIDERS.filter((provider) => provider.supportsAutomatedRuns);
31
+ }