@interf/compiler 0.22.2 → 0.50.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 (616) hide show
  1. package/README.md +119 -282
  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 -35
  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 +9 -0
  10. package/dist/cli/commands/benchmark.js +58 -0
  11. package/dist/cli/commands/build-plan.js +107 -139
  12. package/dist/cli/commands/build.d.ts +3 -4
  13. package/dist/cli/commands/build.js +16 -45
  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 +344 -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 +4 -2
  20. package/dist/cli/commands/mcp.js +846 -232
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +176 -0
  23. package/dist/cli/commands/reset.d.ts +3 -4
  24. package/dist/cli/commands/reset.js +10 -31
  25. package/dist/cli/commands/runs.js +136 -57
  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 +35 -45
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +97 -0
  32. package/dist/cli/commands/wizard.js +171 -178
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/cli/lib/http-client.d.ts +39 -0
  36. package/dist/cli/lib/http-client.js +73 -0
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +2 -2
  39. package/dist/packages/build-plans/authoring/brief.d.ts +538 -0
  40. package/dist/packages/build-plans/authoring/brief.js +89 -0
  41. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +52 -11
  42. package/dist/packages/build-plans/authoring/build-plan-authoring.js +493 -46
  43. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +10 -1
  44. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +27 -4
  45. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  46. package/dist/packages/build-plans/authoring/build-plan-improvement.js +97 -46
  47. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.d.ts +1 -0
  48. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  49. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  50. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  51. package/dist/packages/build-plans/index.d.ts +1 -1
  52. package/dist/packages/build-plans/index.js +1 -1
  53. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -13
  54. package/dist/packages/build-plans/package/build-plan-definitions.js +45 -42
  55. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  56. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  57. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  58. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  59. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +5 -4
  60. package/dist/packages/build-plans/package/build-plan-stage-runner.js +23 -11
  61. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +7 -8
  62. package/dist/packages/build-plans/package/builtin-build-plan.js +10 -11
  63. package/dist/packages/build-plans/package/context-interface.d.ts +14 -9
  64. package/dist/packages/build-plans/package/context-interface.js +14 -33
  65. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  66. package/dist/packages/build-plans/package/interf-build-plan-package.js +68 -64
  67. package/dist/packages/build-plans/package/local-build-plans.d.ts +21 -14
  68. package/dist/packages/build-plans/package/local-build-plans.js +105 -55
  69. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  70. package/dist/packages/contracts/index.d.ts +5 -2
  71. package/dist/packages/contracts/index.js +3 -1
  72. package/dist/packages/contracts/lib/context-graph-layer.d.ts +161 -0
  73. package/dist/packages/contracts/lib/context-graph-layer.js +216 -0
  74. package/dist/packages/contracts/lib/project-paths.d.ts +144 -0
  75. package/dist/packages/contracts/lib/project-paths.js +220 -0
  76. package/dist/packages/contracts/lib/project-schema.d.ts +423 -0
  77. package/dist/packages/contracts/lib/project-schema.js +138 -0
  78. package/dist/packages/contracts/lib/schema.d.ts +1273 -81
  79. package/dist/packages/contracts/lib/schema.js +675 -79
  80. package/dist/packages/contracts/utils/filesystem.d.ts +1 -0
  81. package/dist/packages/contracts/utils/filesystem.js +29 -1
  82. package/dist/packages/contracts/utils/parse.js +67 -0
  83. package/dist/packages/projects/index.d.ts +6 -0
  84. package/dist/packages/{project → projects}/index.js +0 -3
  85. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  86. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  87. package/dist/packages/projects/interf.d.ts +2 -0
  88. package/dist/packages/projects/interf.js +1 -0
  89. package/dist/packages/projects/lib/schema.d.ts +77 -0
  90. package/dist/packages/projects/lib/schema.js +91 -0
  91. package/dist/packages/projects/source-config.d.ts +53 -0
  92. package/dist/packages/projects/source-config.js +339 -0
  93. package/dist/packages/projects/source-folders.d.ts +11 -0
  94. package/dist/packages/{project → projects}/source-folders.js +26 -26
  95. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  96. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  97. package/dist/packages/runtime/action-values.d.ts +1 -0
  98. package/dist/packages/runtime/action-values.js +1 -0
  99. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  100. package/dist/packages/runtime/actions/errors.js +12 -0
  101. package/dist/packages/runtime/actions/fields.d.ts +86 -0
  102. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  103. package/dist/packages/runtime/actions/form-builders.js +667 -0
  104. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  105. package/dist/packages/runtime/actions/form-validators.js +134 -0
  106. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  107. package/dist/packages/runtime/actions/helpers.js +80 -0
  108. package/dist/packages/runtime/actions/index.d.ts +8 -0
  109. package/dist/packages/runtime/actions/index.js +11 -0
  110. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  111. package/dist/packages/runtime/actions/registry.js +62 -0
  112. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  113. package/dist/packages/runtime/actions/requests.js +164 -0
  114. package/dist/packages/runtime/actions/schemas.d.ts +161 -0
  115. package/dist/packages/runtime/actions/schemas.js +37 -0
  116. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  117. package/dist/packages/runtime/agent-handoff.js +102 -0
  118. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  119. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  120. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  121. package/dist/packages/runtime/agents/lib/args.js +24 -0
  122. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  123. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  124. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  125. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  126. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  127. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  128. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +14 -0
  129. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +31 -14
  130. package/dist/packages/{engine → runtime}/agents/lib/execution.js +22 -6
  131. package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +1 -0
  132. package/dist/packages/{engine → runtime}/agents/lib/executors.js +11 -2
  133. package/dist/packages/runtime/agents/lib/logs.d.ts +12 -0
  134. package/dist/packages/runtime/agents/lib/logs.js +41 -0
  135. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +19 -14
  136. package/dist/packages/runtime/agents/lib/render.d.ts +26 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/render.js +48 -22
  138. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  139. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  140. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  141. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  142. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  143. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  144. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  145. package/dist/packages/runtime/agents/lib/shell-templates.js +494 -0
  146. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  147. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  148. package/dist/packages/runtime/agents/lib/shells.d.ts +92 -0
  149. package/dist/packages/runtime/agents/lib/shells.js +509 -0
  150. package/dist/packages/runtime/agents/lib/source-context-scan.d.ts +10 -0
  151. package/dist/packages/runtime/agents/lib/source-context-scan.js +388 -0
  152. package/dist/packages/{engine → runtime}/agents/lib/status.js +1 -14
  153. package/dist/packages/runtime/agents/lib/string-utils.d.ts +16 -0
  154. package/dist/packages/runtime/agents/lib/string-utils.js +36 -0
  155. package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +1 -0
  156. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  157. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  158. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  159. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  160. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  161. package/dist/packages/runtime/agents/providers/codex.js +66 -0
  162. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  163. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  164. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  165. package/dist/packages/runtime/agents/providers/index.js +31 -0
  166. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  167. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  168. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  169. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  170. package/dist/packages/{engine → runtime}/agents/role-executors.js +9 -7
  171. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  172. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  173. package/dist/packages/runtime/auth/account-context.js +68 -0
  174. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  175. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  176. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  177. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  178. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  179. package/dist/packages/runtime/auth/keychain.js +85 -0
  180. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  181. package/dist/packages/runtime/auth/session-store.js +96 -0
  182. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  183. package/dist/packages/runtime/auth/workos-client.js +87 -0
  184. package/dist/packages/runtime/benchmark-question-draft.d.ts +23 -0
  185. package/dist/packages/runtime/benchmark-question-draft.js +153 -0
  186. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  187. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  188. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +6 -6
  189. package/dist/packages/{engine → runtime}/build/artifact-status.js +26 -24
  190. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  191. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  192. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  193. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  194. package/dist/packages/runtime/build/build-evidence.d.ts +16 -0
  195. package/dist/packages/runtime/build/build-evidence.js +179 -0
  196. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  197. package/dist/packages/runtime/build/build-pipeline.js +388 -0
  198. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  199. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  200. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  201. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  202. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  203. package/dist/packages/runtime/build/build-stage-plan.js +101 -0
  204. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  205. package/dist/packages/runtime/build/build-stage-runner.js +302 -0
  206. package/dist/packages/{engine → runtime}/build/build-target.d.ts +7 -4
  207. package/dist/packages/runtime/build/build-target.js +40 -0
  208. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  209. package/dist/packages/runtime/build/check-evaluator.js +1226 -0
  210. package/dist/packages/runtime/build/context-graph-paths.d.ts +64 -0
  211. package/dist/packages/runtime/build/context-graph-paths.js +160 -0
  212. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  213. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  214. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  215. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  216. package/dist/packages/{engine → runtime}/build/index.d.ts +7 -5
  217. package/dist/packages/{engine → runtime}/build/index.js +7 -5
  218. package/dist/packages/runtime/build/inspect-map.d.ts +10 -0
  219. package/dist/packages/runtime/build/inspect-map.js +270 -0
  220. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +449 -123
  221. package/dist/packages/runtime/build/lib/schema.js +494 -0
  222. package/dist/packages/runtime/build/native-entrypoint.d.ts +2 -0
  223. package/dist/packages/runtime/build/native-entrypoint.js +286 -0
  224. package/dist/packages/runtime/build/reset.d.ts +2 -0
  225. package/dist/packages/runtime/build/reset.js +62 -0
  226. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +13 -7
  227. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  228. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  229. package/dist/packages/runtime/build/runtime-log-paths.d.ts +3 -0
  230. package/dist/packages/runtime/build/runtime-log-paths.js +16 -0
  231. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +12 -9
  232. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  233. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  234. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  235. package/dist/packages/runtime/build/runtime-runs.js +318 -0
  236. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +9 -6
  237. package/dist/packages/runtime/build/runtime-types.js +1 -0
  238. package/dist/packages/runtime/build/runtime.d.ts +8 -0
  239. package/dist/packages/runtime/build/runtime.js +7 -0
  240. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  241. package/dist/packages/runtime/build/source-files.js +193 -0
  242. package/dist/packages/runtime/build/source-inventory.d.ts +28 -0
  243. package/dist/packages/runtime/build/source-inventory.js +512 -0
  244. package/dist/packages/runtime/build/source-manifest.d.ts +63 -0
  245. package/dist/packages/runtime/build/source-manifest.js +220 -0
  246. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  247. package/dist/packages/runtime/build/stage-evidence.js +386 -0
  248. package/dist/packages/runtime/build/stage-manifest.d.ts +45 -0
  249. package/dist/packages/runtime/build/stage-manifest.js +1125 -0
  250. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  251. package/dist/packages/runtime/build/stage-reuse.js +154 -0
  252. package/dist/packages/runtime/build/stage-session.d.ts +81 -0
  253. package/dist/packages/runtime/build/stage-session.js +308 -0
  254. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  255. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  256. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  257. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  258. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  259. package/dist/packages/runtime/build/state-io.js +118 -0
  260. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  261. package/dist/packages/runtime/build/state-view.js +121 -0
  262. package/dist/packages/runtime/build/state.d.ts +7 -0
  263. package/dist/packages/runtime/build/state.js +12 -0
  264. package/dist/packages/runtime/build/summary-coverage-index.d.ts +21 -0
  265. package/dist/packages/runtime/build/summary-coverage-index.js +189 -0
  266. package/dist/packages/runtime/build/traces.d.ts +30 -0
  267. package/dist/packages/runtime/build/traces.js +133 -0
  268. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  269. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +49 -36
  270. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  271. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  272. package/dist/packages/{engine → runtime}/client.d.ts +18 -18
  273. package/dist/packages/{engine → runtime}/client.js +48 -36
  274. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  275. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  276. package/dist/packages/runtime/context-checks.d.ts +10 -0
  277. package/dist/packages/runtime/context-checks.js +127 -0
  278. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  279. package/dist/packages/runtime/context-graph-scaffold.js +135 -0
  280. package/dist/packages/runtime/context-graph-semantic-graph.d.ts +9 -0
  281. package/dist/packages/runtime/context-graph-semantic-graph.js +416 -0
  282. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  283. package/dist/packages/runtime/entitlement-guard.js +70 -0
  284. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  285. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  286. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +272 -191
  287. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  288. package/dist/packages/runtime/index.d.ts +29 -0
  289. package/dist/packages/runtime/index.js +21 -0
  290. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  291. package/dist/packages/runtime/instance-paths.js +29 -0
  292. package/dist/packages/runtime/native-run-handlers.d.ts +63 -0
  293. package/dist/packages/{engine → runtime}/native-run-handlers.js +217 -166
  294. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  295. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  296. package/dist/packages/runtime/project-entries.d.ts +11 -0
  297. package/dist/packages/runtime/project-entries.js +49 -0
  298. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  299. package/dist/packages/runtime/project-source-state.js +56 -0
  300. package/dist/packages/runtime/project-store.d.ts +90 -0
  301. package/dist/packages/runtime/project-store.js +195 -0
  302. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  303. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  304. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  305. package/dist/packages/{engine → runtime}/run-observability.js +174 -87
  306. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  307. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  308. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  309. package/dist/packages/runtime/runtime-build-plans.js +175 -0
  310. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  311. package/dist/packages/runtime/runtime-build-runs.js +555 -0
  312. package/dist/packages/runtime/runtime-caches.d.ts +117 -0
  313. package/dist/packages/runtime/runtime-caches.js +266 -0
  314. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  315. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  316. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  317. package/dist/packages/runtime/runtime-executor.js +131 -0
  318. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  319. package/dist/packages/runtime/runtime-jobs.js +463 -0
  320. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  321. package/dist/packages/runtime/runtime-observability.js +39 -0
  322. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  323. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  324. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  325. package/dist/packages/runtime/runtime-project-mutations.js +65 -0
  326. package/dist/packages/runtime/runtime-project-reads.d.ts +18 -0
  327. package/dist/packages/runtime/runtime-project-reads.js +574 -0
  328. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  329. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  330. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +23 -16
  331. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +58 -46
  332. package/dist/packages/runtime/runtime-status.d.ts +14 -0
  333. package/dist/packages/runtime/runtime-status.js +15 -0
  334. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  335. package/dist/packages/runtime/runtime-verify-runs.js +296 -0
  336. package/dist/packages/runtime/runtime.d.ts +1582 -0
  337. package/dist/packages/runtime/runtime.js +431 -0
  338. package/dist/packages/runtime/schemas/actions.d.ts +1206 -0
  339. package/dist/packages/runtime/schemas/actions.js +117 -0
  340. package/dist/packages/runtime/schemas/agents.d.ts +104 -0
  341. package/dist/packages/runtime/schemas/agents.js +74 -0
  342. package/dist/packages/runtime/schemas/build-plans.d.ts +1132 -0
  343. package/dist/packages/runtime/schemas/build-plans.js +141 -0
  344. package/dist/packages/runtime/schemas/context-graphs.d.ts +1522 -0
  345. package/dist/packages/runtime/schemas/context-graphs.js +110 -0
  346. package/dist/packages/runtime/schemas/files.d.ts +227 -0
  347. package/dist/packages/runtime/schemas/files.js +28 -0
  348. package/dist/packages/runtime/schemas/index.d.ts +9 -0
  349. package/dist/packages/runtime/schemas/index.js +13 -0
  350. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  351. package/dist/packages/runtime/schemas/instance.js +143 -0
  352. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  353. package/dist/packages/runtime/schemas/jobs.js +107 -0
  354. package/dist/packages/runtime/schemas/projects.d.ts +366 -0
  355. package/dist/packages/runtime/schemas/projects.js +160 -0
  356. package/dist/packages/runtime/schemas/runs.d.ts +3445 -0
  357. package/dist/packages/runtime/schemas/runs.js +115 -0
  358. package/dist/packages/runtime/service/index.d.ts +3 -0
  359. package/dist/packages/runtime/service/index.js +3 -0
  360. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  361. package/dist/packages/runtime/service/openapi.js +118 -0
  362. package/dist/packages/runtime/service/operations.d.ts +3011 -0
  363. package/dist/packages/runtime/service/operations.js +375 -0
  364. package/dist/packages/runtime/service/routes.d.ts +114 -0
  365. package/dist/packages/runtime/service/routes.js +128 -0
  366. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  367. package/dist/packages/runtime/service/server-api-files.js +85 -0
  368. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  369. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  370. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  371. package/dist/packages/runtime/service/server-guards.js +181 -0
  372. package/dist/packages/runtime/service/server-helpers.d.ts +38 -0
  373. package/dist/packages/runtime/service/server-helpers.js +108 -0
  374. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  375. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  376. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  377. package/dist/packages/runtime/service/server-routes-action-proposals.js +45 -0
  378. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  379. package/dist/packages/runtime/service/server-routes-agents.js +132 -0
  380. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  381. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  382. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  383. package/dist/packages/runtime/service/server-routes-build-plans.js +86 -0
  384. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  385. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  386. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  387. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  388. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  389. package/dist/packages/runtime/service/server-routes-project-context.js +287 -0
  390. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  391. package/dist/packages/runtime/service/server-routes-project-jobs.js +137 -0
  392. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  393. package/dist/packages/runtime/service/server-routes-project-runs.js +88 -0
  394. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  395. package/dist/packages/runtime/service/server-routes-projects.js +96 -0
  396. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  397. package/dist/packages/runtime/service/server-routes-runs.js +119 -0
  398. package/dist/packages/runtime/service/server.d.ts +37 -0
  399. package/dist/packages/runtime/service/server.js +300 -0
  400. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  401. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  402. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  403. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  404. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  405. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  406. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  407. package/dist/packages/{engine → runtime}/verify/lib/schema.js +38 -18
  408. package/dist/packages/runtime/verify/test-file-guard.d.ts +2 -0
  409. package/dist/packages/runtime/verify/test-file-guard.js +29 -0
  410. package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +7 -0
  411. package/dist/packages/{engine → runtime}/verify/verify-execution.js +119 -45
  412. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +5 -4
  413. package/dist/packages/runtime/verify/verify-paths.js +65 -0
  414. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  415. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  416. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  417. package/dist/packages/runtime/verify/verify-specs.js +126 -0
  418. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  419. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  420. package/dist/packages/runtime/verify/verify-types.js +1 -0
  421. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  422. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  423. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  424. package/dist/packages/runtime/wire-schemas.js +27 -0
  425. package/package.json +32 -30
  426. package/public-repo/CONTRIBUTING.md +16 -18
  427. package/public-repo/README.md +119 -282
  428. package/public-repo/SECURITY.md +3 -4
  429. package/public-repo/build-plans/interf-default/README.md +24 -16
  430. package/public-repo/build-plans/interf-default/build/stages/entrypoint/SKILL.md +74 -0
  431. package/public-repo/build-plans/interf-default/build/stages/knowledge/SKILL.md +95 -0
  432. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +49 -4
  433. package/public-repo/build-plans/interf-default/build-plan.json +49 -39
  434. package/public-repo/build-plans/interf-default/build-plan.schema.json +59 -33
  435. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  436. package/public-repo/build-plans/interf-default/use/query/SKILL.md +18 -11
  437. package/public-repo/openapi/local-service.openapi.json +14227 -0
  438. package/public-repo/skills/interf/SKILL.md +508 -187
  439. package/dist/cli/commands/prep.d.ts +0 -2
  440. package/dist/cli/commands/prep.js +0 -240
  441. package/dist/cli/commands/test.d.ts +0 -10
  442. package/dist/cli/commands/test.js +0 -85
  443. package/dist/cli/commands/web.d.ts +0 -2
  444. package/dist/cli/commands/web.js +0 -286
  445. package/dist/interf-ui/404.html +0 -1
  446. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  447. package/dist/interf-ui/__next._full.txt +0 -20
  448. package/dist/interf-ui/__next._head.txt +0 -5
  449. package/dist/interf-ui/__next._index.txt +0 -5
  450. package/dist/interf-ui/__next._tree.txt +0 -5
  451. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  452. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  453. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
  454. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  455. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  456. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  457. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  458. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  459. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  460. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  461. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  462. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  463. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  464. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  465. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  466. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  467. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  468. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  469. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  470. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  471. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  472. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  473. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  474. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  475. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  476. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  477. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  478. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  479. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  480. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  481. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  482. package/dist/interf-ui/_not-found.html +0 -1
  483. package/dist/interf-ui/_not-found.txt +0 -15
  484. package/dist/interf-ui/index.html +0 -1
  485. package/dist/interf-ui/index.txt +0 -20
  486. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  487. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  488. package/dist/packages/engine/action-definitions.d.ts +0 -407
  489. package/dist/packages/engine/action-definitions.js +0 -1158
  490. package/dist/packages/engine/action-values.d.ts +0 -1
  491. package/dist/packages/engine/action-values.js +0 -1
  492. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  493. package/dist/packages/engine/agents/lib/args.js +0 -52
  494. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  495. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  496. package/dist/packages/engine/agents/lib/constants.js +0 -28
  497. package/dist/packages/engine/agents/lib/logs.d.ts +0 -2
  498. package/dist/packages/engine/agents/lib/logs.js +0 -17
  499. package/dist/packages/engine/agents/lib/render.d.ts +0 -8
  500. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  501. package/dist/packages/engine/agents/lib/schema.js +0 -7
  502. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  503. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  504. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  505. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  506. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  507. package/dist/packages/engine/build/build-pipeline.js +0 -175
  508. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  509. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  510. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  511. package/dist/packages/engine/build/build-stage-plan.js +0 -100
  512. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  513. package/dist/packages/engine/build/build-target.js +0 -16
  514. package/dist/packages/engine/build/check-evaluator.js +0 -298
  515. package/dist/packages/engine/build/lib/schema.js +0 -316
  516. package/dist/packages/engine/build/reset.d.ts +0 -2
  517. package/dist/packages/engine/build/reset.js +0 -74
  518. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  519. package/dist/packages/engine/build/runtime-paths.d.ts +0 -8
  520. package/dist/packages/engine/build/runtime-paths.js +0 -26
  521. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  522. package/dist/packages/engine/build/runtime-runs.js +0 -224
  523. package/dist/packages/engine/build/runtime.d.ts +0 -5
  524. package/dist/packages/engine/build/runtime.js +0 -4
  525. package/dist/packages/engine/build/source-files.d.ts +0 -46
  526. package/dist/packages/engine/build/source-files.js +0 -149
  527. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  528. package/dist/packages/engine/build/state-artifacts.js +0 -14
  529. package/dist/packages/engine/build/state-health.d.ts +0 -4
  530. package/dist/packages/engine/build/state-io.d.ts +0 -11
  531. package/dist/packages/engine/build/state-io.js +0 -82
  532. package/dist/packages/engine/build/state-paths.d.ts +0 -5
  533. package/dist/packages/engine/build/state-paths.js +0 -16
  534. package/dist/packages/engine/build/state-view.d.ts +0 -5
  535. package/dist/packages/engine/build/state-view.js +0 -94
  536. package/dist/packages/engine/build/state.d.ts +0 -7
  537. package/dist/packages/engine/build/state.js +0 -12
  538. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  539. package/dist/packages/engine/build/validate-helpers.js +0 -41
  540. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  541. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  542. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  543. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  544. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  545. package/dist/packages/engine/cloud-seams.js +0 -84
  546. package/dist/packages/engine/index.d.ts +0 -22
  547. package/dist/packages/engine/index.js +0 -15
  548. package/dist/packages/engine/instance-paths.d.ts +0 -106
  549. package/dist/packages/engine/instance-paths.js +0 -171
  550. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  551. package/dist/packages/engine/lib/schema.js +0 -730
  552. package/dist/packages/engine/native-run-handlers.d.ts +0 -25
  553. package/dist/packages/engine/preparation-store.d.ts +0 -105
  554. package/dist/packages/engine/preparation-store.js +0 -213
  555. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  556. package/dist/packages/engine/readiness-check-draft.js +0 -111
  557. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  558. package/dist/packages/engine/routes.d.ts +0 -85
  559. package/dist/packages/engine/routes.js +0 -99
  560. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  561. package/dist/packages/engine/runtime-caches.js +0 -191
  562. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  563. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  564. package/dist/packages/engine/runtime.d.ts +0 -371
  565. package/dist/packages/engine/runtime.js +0 -2463
  566. package/dist/packages/engine/server.d.ts +0 -58
  567. package/dist/packages/engine/server.js +0 -1399
  568. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  569. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  570. package/dist/packages/engine/verify/verify-paths.js +0 -61
  571. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  572. package/dist/packages/engine/verify/verify-specs.js +0 -114
  573. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  574. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  575. package/dist/packages/engine/wire-schemas.js +0 -59
  576. package/dist/packages/project/index.d.ts +0 -9
  577. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  578. package/dist/packages/project/interf-bootstrap.js +0 -1
  579. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  580. package/dist/packages/project/interf-scaffold.js +0 -136
  581. package/dist/packages/project/interf.d.ts +0 -4
  582. package/dist/packages/project/interf.js +0 -3
  583. package/dist/packages/project/lib/schema.d.ts +0 -328
  584. package/dist/packages/project/lib/schema.js +0 -136
  585. package/dist/packages/project/preparation-entries.d.ts +0 -11
  586. package/dist/packages/project/preparation-entries.js +0 -49
  587. package/dist/packages/project/source-config.d.ts +0 -46
  588. package/dist/packages/project/source-config.js +0 -394
  589. package/dist/packages/project/source-folders.d.ts +0 -11
  590. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +0 -27
  591. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +0 -21
  592. package/public-repo/plugins/README.md +0 -9
  593. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  594. package/public-repo/plugins/interf/.mcp.json +0 -12
  595. package/public-repo/plugins/interf/README.md +0 -32
  596. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  597. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  598. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  599. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  600. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  601. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  602. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  603. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  604. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  605. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  606. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  607. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  608. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  609. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  610. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  611. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  612. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  613. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  614. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  615. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  616. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -1,4 +1,5 @@
1
1
  import { resolveAgent } from "./detection.js";
2
+ import { resolveEffectiveAgentExecutionProfile } from "./execution-profile.js";
2
3
  import { spawnAgent } from "./execution.js";
3
4
  import { ensureAgentAutomatedRunReady } from "./preflight.js";
4
5
  export function buildRuntimeExecutorInfo(executor) {
@@ -14,17 +15,25 @@ export function buildRuntimeExecutorInfo(executor) {
14
15
  };
15
16
  }
16
17
  export function createLocalAgentExecutor(agent, executionProfile = {}) {
18
+ // Resolve the EFFECTIVE profile (per-run override ∨ saved agent prefs) ONCE,
19
+ // here, at construction. The executor then carries this single resolved value
20
+ // as `executionProfile`, so the model `buildRuntimeExecutorInfo` records and
21
+ // the model `buildAgentArgs` runs are sourced from the same object and can
22
+ // never disagree (F1). `spawnAgent` no longer re-merges prefs — it consumes
23
+ // this resolved profile as-is.
24
+ const effectiveProfile = resolveEffectiveAgentExecutionProfile(agent, executionProfile);
17
25
  return {
18
26
  kind: "local-agent",
19
27
  name: agent.name,
20
28
  displayName: agent.displayName,
21
29
  command: agent.command,
22
- executionProfile,
30
+ executionProfile: effectiveProfile,
23
31
  execute(rootPath, prompt, options) {
24
32
  return spawnAgent(agent, rootPath, prompt, {
25
33
  eventLogPath: options?.eventLogPath,
26
34
  statusLogPath: options?.statusLogPath,
27
- executionProfile,
35
+ reasoningLogPath: options?.reasoningLogPath,
36
+ executionProfile: effectiveProfile,
28
37
  completionCheck: options?.completionCheck,
29
38
  onStatus: options?.onStatus,
30
39
  });
@@ -0,0 +1,12 @@
1
+ export declare function appendAgentEventLog(eventLogPath: string | null | undefined, event: Record<string, unknown>): void;
2
+ export declare function appendAgentStatusLog(statusLogPath: string | null | undefined, text: string): void;
3
+ /**
4
+ * Append one reasoning/thinking span to the best-effort reasoning transcript
5
+ * (one JSON object per line). Reasoning capture must never block or fail a run,
6
+ * so any write error is swallowed — a missing reasoning line is acceptable, a
7
+ * crashed Build is not.
8
+ */
9
+ export declare function appendAgentReasoningLog(reasoningLogPath: string | null | undefined, span: {
10
+ kind: string;
11
+ text: string;
12
+ }): void;
@@ -0,0 +1,41 @@
1
+ import { appendFileSync, mkdirSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ /**
4
+ * Append one line to a run log file, creating its directory on demand.
5
+ *
6
+ * Run log writes are observability, never run control: a mid-run disk hiccup
7
+ * (mkdir/append failure) must record a recoverable session, not throw an
8
+ * unhandled rejection that crashes the Build and dangles the session's
9
+ * `logs.event_stream_path`/`logs.status_path`. The single explicit policy for
10
+ * every agent run log is therefore best-effort — a missing log line is
11
+ * acceptable, a crashed run is not. A null/empty path is a no-op.
12
+ */
13
+ function ensureLogFile(path, content) {
14
+ if (!path)
15
+ return;
16
+ try {
17
+ mkdirSync(dirname(path), { recursive: true });
18
+ appendFileSync(path, content);
19
+ }
20
+ catch {
21
+ // Best-effort only: log writes must never block or fail a run.
22
+ }
23
+ }
24
+ export function appendAgentEventLog(eventLogPath, event) {
25
+ ensureLogFile(eventLogPath, `${JSON.stringify({
26
+ timestamp: new Date().toISOString(),
27
+ ...event,
28
+ })}\n`);
29
+ }
30
+ export function appendAgentStatusLog(statusLogPath, text) {
31
+ ensureLogFile(statusLogPath, `${new Date().toISOString()} ${text}\n`);
32
+ }
33
+ /**
34
+ * Append one reasoning/thinking span to the best-effort reasoning transcript
35
+ * (one JSON object per line). Reasoning capture must never block or fail a run,
36
+ * so any write error is swallowed — a missing reasoning line is acceptable, a
37
+ * crashed Build is not.
38
+ */
39
+ export function appendAgentReasoningLog(reasoningLogPath, span) {
40
+ ensureLogFile(reasoningLogPath, `${JSON.stringify({ timestamp: new Date().toISOString(), ...span })}\n`);
41
+ }
@@ -2,7 +2,8 @@ import { mkdtempSync, rmSync } from "node:fs";
2
2
  import { spawnSync } from "node:child_process";
3
3
  import { tmpdir } from "node:os";
4
4
  import { join } from "node:path";
5
- import { CODEX_NOISE_PATTERNS } from "./constants.js";
5
+ import { getBuiltInProvider } from "../providers/index.js";
6
+ import { loadAgentPrefs } from "../registry.js";
6
7
  import { buildAgentArgs, buildAgentEnv } from "./args.js";
7
8
  const successfulPreflightAgents = new Set();
8
9
  export function buildAgentPreflightPrompt() {
@@ -19,15 +20,18 @@ export function runAgentPreflight(agent, options = {}) {
19
20
  const spawnSyncImpl = options.spawnSyncImpl ?? spawnSync;
20
21
  const dirPath = mkdtempSync(join(tmpdir(), "interf-doctor-"));
21
22
  try {
23
+ const prefs = loadAgentPrefs()[agent.name];
24
+ const baseEnv = buildAgentEnv(agent);
25
+ const env = prefs?.env_vars ? { ...baseEnv, ...prefs.env_vars } : baseEnv;
22
26
  const result = spawnSyncImpl(agent.command, buildAgentArgs(agent, buildAgentPreflightPrompt()), {
23
27
  cwd: dirPath,
24
28
  encoding: "utf8",
25
- env: buildAgentEnv(agent),
29
+ env,
26
30
  input: "",
27
31
  timeout: timeoutMs,
28
32
  });
29
33
  const stdout = typeof result.stdout === "string" ? result.stdout.trim() : "";
30
- const stderr = sanitizeAgentStderr(typeof result.stderr === "string" ? result.stderr : "");
34
+ const stderr = sanitizeAgentStderr(agent, typeof result.stderr === "string" ? result.stderr : "");
31
35
  const timedOut = result.error?.name === "Error" && result.error.message.includes("timed out");
32
36
  if (result.error) {
33
37
  return {
@@ -65,7 +69,7 @@ export function ensureAgentAutomatedRunReady(agent, options = {}) {
65
69
  successfulPreflightAgents.add(agent.name);
66
70
  return { ok: true };
67
71
  }
68
- if (!isTransientCodexPreflightFailure(agent, result) || attempt === 3) {
72
+ if (!isTransientPreflightFailure(agent, result) || attempt === 3) {
69
73
  break;
70
74
  }
71
75
  sleepSync(retryDelayMs * attempt);
@@ -73,25 +77,26 @@ export function ensureAgentAutomatedRunReady(agent, options = {}) {
73
77
  const details = result ? [result.error, result.stderr].filter(Boolean).join(" ") : "";
74
78
  return {
75
79
  ok: false,
76
- error: `${agent.displayName} failed Interf executor preflight. Run \`interf doctor --live\` for details.${details ? ` ${details}` : ""}`,
80
+ error: `${agent.displayName} failed Interf executor preflight. ` +
81
+ `Run \`interf doctor --live\` for details, or switch active agent with \`interf agents use <name>\` ` +
82
+ `(e.g. \`interf agents use claude-code\`).` +
83
+ (details ? ` ${details}` : ""),
77
84
  };
78
85
  }
79
- function sanitizeAgentStderr(stderr) {
86
+ function sanitizeAgentStderr(agent, stderr) {
87
+ const filters = getBuiltInProvider(agent.name)?.noiseFilters ?? [];
80
88
  return stderr
81
89
  .split("\n")
82
90
  .filter((line) => line.trim().length > 0)
83
- .filter((line) => !CODEX_NOISE_PATTERNS.some((pattern) => pattern.test(line)))
91
+ .filter((line) => !filters.some((pattern) => pattern.test(line)))
84
92
  .join("\n")
85
93
  .trim();
86
94
  }
87
- function isTransientCodexPreflightFailure(agent, result) {
88
- if (agent.name !== "codex")
95
+ function isTransientPreflightFailure(agent, result) {
96
+ const provider = getBuiltInProvider(agent.name);
97
+ if (!provider?.isTransientPreflightFailure)
89
98
  return false;
90
- const text = `${result.error ?? ""}\n${result.stderr ?? ""}`;
91
- if (/usage limit/i.test(text))
92
- return false;
93
- return /failed to record rollout items/i.test(text) ||
94
- /thread\s+[0-9a-f-]+\s+not found/i.test(text);
99
+ return provider.isTransientPreflightFailure(result.stderr ?? "", result.error ?? "");
95
100
  }
96
101
  function sleepSync(ms) {
97
102
  if (ms <= 0)
@@ -0,0 +1,26 @@
1
+ export interface VisibleTextState {
2
+ current: string | null;
3
+ terminated?: boolean;
4
+ terminalStatus?: string | null;
5
+ }
6
+ export declare function emitVisibleAgentText(text: string, statusLogPath: string | null | undefined, lastVisibleText?: VisibleTextState, onStatus?: (line: string) => void): boolean;
7
+ export declare function displayAgentEvent(event: Record<string, unknown>, statusLogPath: string | null | undefined, lastVisibleText: VisibleTextState, onStatus?: (line: string) => void): boolean;
8
+ /**
9
+ * One reasoning/thinking span lifted from an agent event, for the best-effort
10
+ * reasoning transcript. `kind` records where it came from so the transcript
11
+ * stays inspectable across executors.
12
+ */
13
+ export interface AgentReasoningSpan {
14
+ kind: "thinking" | "reasoning";
15
+ text: string;
16
+ }
17
+ /**
18
+ * Extract any reasoning/thinking spans from a single parsed agent event. The
19
+ * event stream is already parsed for display; this lifts the reasoning the
20
+ * display path discards (it never renders thinking) so it can be teed to a
21
+ * runtime file. Covers Claude Code `assistant` messages carrying `thinking`
22
+ * content blocks and Codex `item.*` reasoning items. Returns `[]` for events
23
+ * with no reasoning — callers must treat reasoning capture as best-effort.
24
+ */
25
+ export declare function extractAgentReasoning(event: Record<string, unknown>): AgentReasoningSpan[];
26
+ export declare function summarizeAgentToolActivity(event: Record<string, unknown>): string | null;
@@ -2,6 +2,7 @@ import { basename } from "node:path";
2
2
  import chalk from "chalk";
3
3
  import { SHOW_AGENT_TOOL_EVENTS, VISIBLE_STATUS_PREFIXES, } from "./constants.js";
4
4
  import { appendAgentStatusLog } from "./logs.js";
5
+ import { extractInputPath, pickString } from "./string-utils.js";
5
6
  export function emitVisibleAgentText(text, statusLogPath, lastVisibleText, onStatus) {
6
7
  if (lastVisibleText?.terminated) {
7
8
  return false;
@@ -37,7 +38,7 @@ export function displayAgentEvent(event, statusLogPath, lastVisibleText, onStatu
37
38
  const input = event.input;
38
39
  let detail = "";
39
40
  if (input) {
40
- const path = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? "");
41
+ const path = extractInputPath(input);
41
42
  if (path)
42
43
  detail = chalk.dim(` ${path.slice(0, 80)}`);
43
44
  }
@@ -58,7 +59,7 @@ export function displayAgentEvent(event, statusLogPath, lastVisibleText, onStatu
58
59
  const input = block.input;
59
60
  let detail = "";
60
61
  if (input) {
61
- const path = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? "");
62
+ const path = extractInputPath(input);
62
63
  if (path)
63
64
  detail = chalk.dim(` ${path.slice(0, 80)}`);
64
65
  }
@@ -95,6 +96,45 @@ export function displayAgentEvent(event, statusLogPath, lastVisibleText, onStatu
95
96
  }
96
97
  return displayed;
97
98
  }
99
+ /**
100
+ * Extract any reasoning/thinking spans from a single parsed agent event. The
101
+ * event stream is already parsed for display; this lifts the reasoning the
102
+ * display path discards (it never renders thinking) so it can be teed to a
103
+ * runtime file. Covers Claude Code `assistant` messages carrying `thinking`
104
+ * content blocks and Codex `item.*` reasoning items. Returns `[]` for events
105
+ * with no reasoning — callers must treat reasoning capture as best-effort.
106
+ */
107
+ export function extractAgentReasoning(event) {
108
+ const type = event.type;
109
+ const spans = [];
110
+ if (type === "assistant") {
111
+ const message = event.message;
112
+ const content = message?.content;
113
+ if (Array.isArray(content)) {
114
+ for (const block of content) {
115
+ if (block.type === "thinking" || block.type === "redacted_thinking") {
116
+ const text = pickString(block.thinking) ?? pickString(block.text);
117
+ if (text)
118
+ spans.push({ kind: "thinking", text });
119
+ }
120
+ }
121
+ }
122
+ }
123
+ if (type === "item.started" || type === "item.completed") {
124
+ const item = event.item;
125
+ if (item?.type === "reasoning") {
126
+ const text = pickString(item.text) ?? pickString(item.summary) ?? pickString(item.content);
127
+ if (text)
128
+ spans.push({ kind: "reasoning", text });
129
+ }
130
+ }
131
+ if (type === "reasoning") {
132
+ const text = pickString(event.text) ?? pickString(event.summary) ?? pickString(event.content);
133
+ if (text)
134
+ spans.push({ kind: "reasoning", text });
135
+ }
136
+ return spans;
137
+ }
98
138
  export function summarizeAgentToolActivity(event) {
99
139
  const type = event.type;
100
140
  if (type === "assistant") {
@@ -116,20 +156,6 @@ export function summarizeAgentToolActivity(event) {
116
156
  }
117
157
  return null;
118
158
  }
119
- function pickString(value) {
120
- if (typeof value === "string")
121
- return value;
122
- if (!Array.isArray(value))
123
- return null;
124
- for (const entry of value) {
125
- if (typeof entry === "string")
126
- return entry;
127
- if (entry && typeof entry === "object" && "text" in entry && typeof entry.text === "string") {
128
- return entry.text;
129
- }
130
- }
131
- return null;
132
- }
133
159
  function displayItemEvent(type, item, statusLogPath, lastVisibleText, onStatus) {
134
160
  const itemType = item.type;
135
161
  if (itemType === "agent_message") {
@@ -159,7 +185,7 @@ function displayItemEvent(type, item, statusLogPath, lastVisibleText, onStatus)
159
185
  return false;
160
186
  }
161
187
  function describeInput(input) {
162
- const path = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? "");
188
+ const path = extractInputPath(input);
163
189
  return path ? chalk.dim(` ${path.slice(0, 80)}`) : "";
164
190
  }
165
191
  function summarizeToolUse(name, input) {
@@ -168,14 +194,14 @@ function summarizeToolUse(name, input) {
168
194
  const target = summarizeToolTarget(input);
169
195
  switch (name) {
170
196
  case "Read":
171
- return target ? `reading ${target}` : "reading verifiable context files";
197
+ return target ? `reading ${target}` : "reading context graph files";
172
198
  case "Write":
173
- return target ? `writing ${target}` : "writing verifiable context files";
199
+ return target ? `writing ${target}` : "writing context graph files";
174
200
  case "Edit":
175
- return target ? `editing ${target}` : "editing verifiable context files";
201
+ return target ? `editing ${target}` : "editing context graph files";
176
202
  case "Glob":
177
203
  case "Grep":
178
- return target ? `${name.toLowerCase()} on ${target}` : `${name.toLowerCase()}ing verifiable context files`;
204
+ return target ? `${name.toLowerCase()} on ${target}` : `${name.toLowerCase()}ing context graph files`;
179
205
  case "Bash":
180
206
  return target ? `running ${target}` : "running a local helper";
181
207
  default:
@@ -185,7 +211,7 @@ function summarizeToolUse(name, input) {
185
211
  function summarizeToolTarget(input) {
186
212
  if (!input)
187
213
  return null;
188
- const raw = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? input.notebook_path);
214
+ const raw = extractInputPath(input);
189
215
  if (!raw || raw.length === 0)
190
216
  return null;
191
217
  if (raw.includes("\n")) {
@@ -0,0 +1,18 @@
1
+ import type { PreservedShellType } from "../../build/lib/schema.js";
2
+ export declare function writeIfChanged(path: string, content: string): boolean;
3
+ export declare function writeNativeSkillCopies(rootPath: string, skillName: string, content: string): boolean;
4
+ export declare function linkPath(targetPath: string, linkPathname: string): void;
5
+ export declare function linkIfExists(targetPath: string, linkPathname: string): void;
6
+ export declare function linkRelativePath(targetPath: string, linkPathname: string): void;
7
+ export declare function copyResolvedTree(options: {
8
+ sourcePath: string;
9
+ targetPath: string;
10
+ shellType: PreservedShellType;
11
+ relativePath?: string;
12
+ activeRealPaths?: Set<string>;
13
+ materializedRealPaths?: Map<string, string>;
14
+ }): {
15
+ materializedSymlinks: number;
16
+ };
17
+ export declare function copyIfExists(sourcePath: string, targetPath: string, shellType: PreservedShellType): void;
18
+ export declare function freezePreservedShell(rootPath: string, shellType: PreservedShellType): string | null;
@@ -0,0 +1,190 @@
1
+ import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, symlinkSync, writeFileSync, lstatSync, } from "node:fs";
2
+ import { dirname, join, relative, sep as pathSep } from "node:path";
3
+ import { LOCAL_SKILL_ROOTS, preservedShellManifestPath, } from "./shell-paths.js";
4
+ export function writeIfChanged(path, content) {
5
+ if (existsSync(path) && readFileSync(path, "utf8") === content) {
6
+ return false;
7
+ }
8
+ mkdirSync(dirname(path), { recursive: true });
9
+ writeFileSync(path, content);
10
+ return true;
11
+ }
12
+ export function writeNativeSkillCopies(rootPath, skillName, content) {
13
+ let changed = false;
14
+ for (const skillsRoot of LOCAL_SKILL_ROOTS) {
15
+ const skillPath = join(rootPath, skillsRoot, skillName, "SKILL.md");
16
+ changed = writeIfChanged(skillPath, content) || changed;
17
+ }
18
+ return changed;
19
+ }
20
+ export function linkPath(targetPath, linkPathname) {
21
+ mkdirSync(dirname(linkPathname), { recursive: true });
22
+ symlinkSync(targetPath, linkPathname);
23
+ }
24
+ export function linkIfExists(targetPath, linkPathname) {
25
+ if (!existsSync(targetPath))
26
+ return;
27
+ linkPath(targetPath, linkPathname);
28
+ }
29
+ export function linkRelativePath(targetPath, linkPathname) {
30
+ mkdirSync(dirname(linkPathname), { recursive: true });
31
+ symlinkSync(relative(dirname(linkPathname), targetPath), linkPathname);
32
+ }
33
+ function shouldSkipFrozenStageShellRelativePath(relativePath) {
34
+ const normalized = relativePath.replaceAll("\\", "/");
35
+ return normalized === "execution-shells" ||
36
+ normalized.endsWith("/execution-shells") ||
37
+ normalized.includes("/execution-shells/") ||
38
+ normalized === "improvement-loops" ||
39
+ normalized.endsWith("/improvement-loops") ||
40
+ normalized.includes("/improvement-loops/");
41
+ }
42
+ /**
43
+ * System path prefixes a malicious symlink in a Build Plan package must
44
+ * never reach. Without this, the preserved-shell logic could be
45
+ * tricked into copying anything the running user has access to —
46
+ * `/etc/passwd`, `~/.ssh/id_rsa`, etc. (CSO finding).
47
+ *
48
+ * We deliberately allow targets that escape the immediate freeze
49
+ * root: legitimate execution shells contain symlinks pointing back
50
+ * to the parent Project's `interf.json`. The threat is only links
51
+ * that resolve into truly system-level paths.
52
+ */
53
+ const FORBIDDEN_SYMLINK_TARGET_PREFIXES = [
54
+ "/etc",
55
+ "/sys",
56
+ "/proc",
57
+ "/dev",
58
+ "/var/run",
59
+ "/var/lib",
60
+ "/usr",
61
+ "/bin",
62
+ "/sbin",
63
+ "/boot",
64
+ "/root",
65
+ ];
66
+ function ensureSymlinkTargetSafe(realTarget, symlinkPath) {
67
+ for (const prefix of FORBIDDEN_SYMLINK_TARGET_PREFIXES) {
68
+ if (realTarget === prefix || realTarget.startsWith(`${prefix}${pathSep}`)) {
69
+ throw new Error(`Refusing to follow symlink ${symlinkPath} → ${realTarget}: ` +
70
+ `resolves into system directory ${prefix}.`);
71
+ }
72
+ }
73
+ // Also refuse links that escape into another user's SSH directory
74
+ // even if the path is not on the literal forbidden list.
75
+ if (/\/\.ssh(\/|$)/.test(realTarget)) {
76
+ throw new Error(`Refusing to follow symlink ${symlinkPath} → ${realTarget}: ` +
77
+ `targets a .ssh directory.`);
78
+ }
79
+ }
80
+ export function copyResolvedTree(options) {
81
+ const relativePath = options.relativePath ?? "";
82
+ if (options.shellType === "stage-execution" && shouldSkipFrozenStageShellRelativePath(relativePath)) {
83
+ return { materializedSymlinks: 0 };
84
+ }
85
+ const stat = lstatSync(options.sourcePath);
86
+ if (stat.isSymbolicLink()) {
87
+ // existsSync follows symlinks, so a dangling link (target absent)
88
+ // returns false. Skip those entries: realpathSync would throw
89
+ // ENOENT, and the freeze step is best-effort review material —
90
+ // losing one unresolvable link is better than aborting the whole
91
+ // preserved shell. Production trigger: createStageExecutionShell links
92
+ // runtime/stage-contract.json before writeStageContract runs, so
93
+ // any failure between those two points leaves a dangling link
94
+ // that the per-stage finally-block freeze would otherwise hit.
95
+ if (!existsSync(options.sourcePath)) {
96
+ return { materializedSymlinks: 0 };
97
+ }
98
+ const realTarget = realpathSync(options.sourcePath);
99
+ // Refuse symlinks resolving into system paths (CSO finding). We
100
+ // deliberately allow links that escape the immediate freeze root
101
+ // because legitimate execution shells contain links back to the
102
+ // parent Project's interf.json — the only thing we care about
103
+ // is that the realpath does not land in /etc, /sys, /proc, etc.
104
+ ensureSymlinkTargetSafe(realTarget, options.sourcePath);
105
+ const realStat = statSync(realTarget);
106
+ if (realStat.isDirectory()) {
107
+ const mappedTarget = options.materializedRealPaths?.get(realTarget);
108
+ if (mappedTarget) {
109
+ linkRelativePath(mappedTarget, options.targetPath);
110
+ return { materializedSymlinks: 1 };
111
+ }
112
+ return {
113
+ materializedSymlinks: 1 + copyResolvedTree({
114
+ sourcePath: realTarget,
115
+ targetPath: options.targetPath,
116
+ shellType: options.shellType,
117
+ relativePath,
118
+ activeRealPaths: options.activeRealPaths,
119
+ materializedRealPaths: options.materializedRealPaths,
120
+ }).materializedSymlinks,
121
+ };
122
+ }
123
+ mkdirSync(dirname(options.targetPath), { recursive: true });
124
+ copyFileSync(realTarget, options.targetPath);
125
+ return { materializedSymlinks: 1 };
126
+ }
127
+ if (stat.isDirectory()) {
128
+ const realSource = realpathSync(options.sourcePath);
129
+ const mappedTarget = options.materializedRealPaths?.get(realSource);
130
+ if (mappedTarget && mappedTarget !== options.targetPath) {
131
+ linkRelativePath(mappedTarget, options.targetPath);
132
+ return { materializedSymlinks: 0 };
133
+ }
134
+ const nextRealPaths = new Set([...(options.activeRealPaths ?? []), realSource]);
135
+ const nextMaterializedRealPaths = new Map(options.materializedRealPaths ?? []);
136
+ nextMaterializedRealPaths.set(realSource, options.targetPath);
137
+ mkdirSync(options.targetPath, { recursive: true });
138
+ let materializedSymlinks = 0;
139
+ for (const entry of readdirSync(options.sourcePath)) {
140
+ const childRelativePath = relativePath.length > 0 ? `${relativePath}/${entry}` : entry;
141
+ const copied = copyResolvedTree({
142
+ sourcePath: join(options.sourcePath, entry),
143
+ targetPath: join(options.targetPath, entry),
144
+ shellType: options.shellType,
145
+ relativePath: childRelativePath,
146
+ activeRealPaths: nextRealPaths,
147
+ materializedRealPaths: nextMaterializedRealPaths,
148
+ });
149
+ materializedSymlinks += copied.materializedSymlinks;
150
+ }
151
+ return { materializedSymlinks };
152
+ }
153
+ mkdirSync(dirname(options.targetPath), { recursive: true });
154
+ copyFileSync(options.sourcePath, options.targetPath);
155
+ return { materializedSymlinks: 0 };
156
+ }
157
+ export function copyIfExists(sourcePath, targetPath, shellType) {
158
+ if (!existsSync(sourcePath))
159
+ return;
160
+ copyResolvedTree({
161
+ sourcePath,
162
+ targetPath,
163
+ shellType,
164
+ });
165
+ }
166
+ export function freezePreservedShell(rootPath, shellType) {
167
+ if (!existsSync(rootPath))
168
+ return null;
169
+ const manifestPath = preservedShellManifestPath(rootPath);
170
+ if (existsSync(manifestPath))
171
+ return manifestPath;
172
+ const tempRoot = `${rootPath}.frozen-${Date.now().toString(36)}`;
173
+ const copied = copyResolvedTree({
174
+ sourcePath: rootPath,
175
+ targetPath: tempRoot,
176
+ shellType,
177
+ });
178
+ const manifest = {
179
+ kind: "interf-preserved-shell",
180
+ version: 1,
181
+ shell_type: shellType,
182
+ generated_at: new Date().toISOString(),
183
+ root_path: rootPath,
184
+ materialized_symlinks: copied.materializedSymlinks,
185
+ };
186
+ writeFileSync(preservedShellManifestPath(tempRoot), `${JSON.stringify(manifest, null, 2)}\n`);
187
+ rmSync(rootPath, { recursive: true, force: true });
188
+ renameSync(tempRoot, rootPath);
189
+ return manifestPath;
190
+ }
@@ -0,0 +1,16 @@
1
+ import type { ContextInterfaceArtifact as BuildPlanArtifact } from "../../../build-plans/package/context-interface.js";
2
+ export declare const LOCAL_SKILL_ROOTS: readonly [".claude/skills", ".codex/skills", ".agents/skills", ".cursor/skills"];
3
+ export declare function contextGraphQuerySkillSourcePath(contextGraphPath: string): string;
4
+ export declare function stageShellBuildPlanRoot(shellRoot: string): string;
5
+ export declare function shellArtifactAliasMountPath(shellRoot: string, artifact: BuildPlanArtifact, mountKind: "inputs" | "outputs"): string;
6
+ export declare function describeShellArtifactAliasMountPath(artifact: BuildPlanArtifact, mountKind: "inputs" | "outputs"): string;
7
+ export declare function shellRuntimePath(shellRoot: string, relativePath: string): string;
8
+ export declare function shellLogsPath(shellRoot: string, relativePath?: string): string;
9
+ export declare function shellPromptLogPath(shellRoot: string, runId: string): string;
10
+ export declare function shellEventLogPath(shellRoot: string, runId: string): string;
11
+ export declare function shellStatusLogPath(shellRoot: string, runId: string): string;
12
+ export declare function shellWorkspaceManifestPath(shellRoot: string): string;
13
+ export declare function preservedShellManifestPath(rootPath: string): string;
14
+ export declare function improvementBuildPlanDocsPath(contextGraphPath: string): string;
15
+ export declare function normalizeArtifactRelativePath(path: string): string;
16
+ export declare function relativePathEqualsOrWithin(basePath: string, candidatePath: string): boolean;
@@ -0,0 +1,63 @@
1
+ import { basename, join } from "node:path";
2
+ import { BUILD_PLAN_PACKAGE_DIR } from "../../../projects/interf-detect.js";
3
+ import { buildPlanPackagePathForContextGraph } from "../../build/context-graph-paths.js";
4
+ export const LOCAL_SKILL_ROOTS = [
5
+ ".claude/skills",
6
+ ".codex/skills",
7
+ ".agents/skills",
8
+ ".cursor/skills",
9
+ ];
10
+ export function contextGraphQuerySkillSourcePath(contextGraphPath) {
11
+ return join(buildPlanPackagePathForContextGraph(contextGraphPath), "use", "query", "SKILL.md");
12
+ }
13
+ export function stageShellBuildPlanRoot(shellRoot) {
14
+ return join(shellRoot, BUILD_PLAN_PACKAGE_DIR);
15
+ }
16
+ export function shellArtifactAliasMountPath(shellRoot, artifact, mountKind) {
17
+ const mountRoot = join(shellRoot, mountKind, artifact.id);
18
+ return artifact.kind === "file"
19
+ ? join(mountRoot, basename(artifact.path))
20
+ : mountRoot;
21
+ }
22
+ export function describeShellArtifactAliasMountPath(artifact, mountKind) {
23
+ return artifact.kind === "file"
24
+ ? `${mountKind}/${artifact.id}/${basename(artifact.path)}`
25
+ : `${mountKind}/${artifact.id}`;
26
+ }
27
+ export function shellRuntimePath(shellRoot, relativePath) {
28
+ return join(shellRoot, "runtime", relativePath);
29
+ }
30
+ export function shellLogsPath(shellRoot, relativePath = "") {
31
+ return relativePath ? join(shellRoot, "logs", relativePath) : join(shellRoot, "logs");
32
+ }
33
+ export function shellPromptLogPath(shellRoot, runId) {
34
+ return shellLogsPath(shellRoot, `${runId}.prompt.txt`);
35
+ }
36
+ export function shellEventLogPath(shellRoot, runId) {
37
+ return shellLogsPath(shellRoot, `${runId}.events.ndjson`);
38
+ }
39
+ export function shellStatusLogPath(shellRoot, runId) {
40
+ return shellLogsPath(shellRoot, `${runId}.status.log`);
41
+ }
42
+ export function shellWorkspaceManifestPath(shellRoot) {
43
+ return shellRuntimePath(shellRoot, "workspace.json");
44
+ }
45
+ export function preservedShellManifestPath(rootPath) {
46
+ return shellRuntimePath(rootPath, "preserved-shell.json");
47
+ }
48
+ export function improvementBuildPlanDocsPath(contextGraphPath) {
49
+ return join(buildPlanPackagePathForContextGraph(contextGraphPath), "improve");
50
+ }
51
+ export function normalizeArtifactRelativePath(path) {
52
+ return path
53
+ .replaceAll("\\", "/")
54
+ .replace(/^\.?\//, "")
55
+ .replace(/\/+$/g, "");
56
+ }
57
+ export function relativePathEqualsOrWithin(basePath, candidatePath) {
58
+ const base = normalizeArtifactRelativePath(basePath);
59
+ const candidate = normalizeArtifactRelativePath(candidatePath);
60
+ if (base.length === 0 || candidate.length === 0)
61
+ return false;
62
+ return candidate === base || candidate.startsWith(`${base}/`);
63
+ }
@@ -0,0 +1,25 @@
1
+ import { type ContextInterface as BuildPlanContextSchema, type ContextInterfaceArtifact as BuildPlanArtifact, type ContextInterfaceArtifactId as BuildPlanArtifactId } from "../../../build-plans/package/context-interface.js";
2
+ import type { ExecutionShellArtifactMount } from "../../build/lib/schema.js";
3
+ import type { NativeStageDefinition } from "./shell-templates.js";
4
+ export declare function loadContextGraphSchema(contextGraphPath: string): BuildPlanContextSchema;
5
+ export declare function artifactMap(schema: BuildPlanContextSchema): Map<BuildPlanArtifactId, BuildPlanArtifact>;
6
+ export declare function artifactOrThrow(artifacts: Map<BuildPlanArtifactId, BuildPlanArtifact>, artifactId: BuildPlanArtifactId): BuildPlanArtifact;
7
+ export declare function stageWriteArtifactSet(schema: BuildPlanContextSchema, stage: NativeStageDefinition): Set<BuildPlanArtifactId>;
8
+ export declare function stageMaterializedArtifactSet(schema: BuildPlanContextSchema, stage: NativeStageDefinition, writeArtifacts?: readonly string[]): Set<BuildPlanArtifactId>;
9
+ export declare function ensureBuildExecutionSurface(contextGraphPath: string): BuildPlanContextSchema;
10
+ export declare function readStageBuildPlanDoc(contextGraphPath: string, stage: NativeStageDefinition): string | null;
11
+ export declare function stageBuildPlanDocsPath(contextGraphPath: string, stage: NativeStageDefinition): string;
12
+ export declare function projectBuildPlanMetadata(contextGraphPath: string, shellRoot: string, stage: NativeStageDefinition): void;
13
+ export declare function projectContextGraphSchemaArtifacts(contextGraphPath: string, shellRoot: string, schema: BuildPlanContextSchema, artifactIds?: Iterable<BuildPlanArtifactId>, materializedArtifactIds?: ReadonlySet<BuildPlanArtifactId>, cleanMaterializedArtifactIds?: ReadonlySet<BuildPlanArtifactId>): void;
14
+ export declare function buildStageArtifactMounts(_contextGraphPath: string, _shellRoot: string, stage: NativeStageDefinition, schema: BuildPlanContextSchema): {
15
+ reads: ExecutionShellArtifactMount[];
16
+ writes: ExecutionShellArtifactMount[];
17
+ };
18
+ export declare function projectStageArtifactMountAliases(shellRoot: string, stage: NativeStageDefinition, schema: BuildPlanContextSchema): void;
19
+ export declare function writeExecutionShellPathsFile(shellRoot: string, buildPlanId: string, stage: NativeStageDefinition, mounts: {
20
+ reads: ExecutionShellArtifactMount[];
21
+ writes: ExecutionShellArtifactMount[];
22
+ }): void;
23
+ export declare function syncStageExecutionShellWrites(contextGraphPath: string, shellRoot: string, stage: NativeStageDefinition, writeArtifacts?: readonly string[]): void;
24
+ export declare function projectContextGraphReviewArtifactsState(contextGraphPath: string, shellRoot: string, schema: BuildPlanContextSchema): void;
25
+ export declare function projectContextGraphRuntimeArtifacts(contextGraphPath: string, shellRoot: string): void;