@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,50 @@
1
+ /**
2
+ * Agent provider contract.
3
+ *
4
+ * Every built-in agent (Claude Code, Codex, …) and every user-registered
5
+ * custom agent is exposed as an `AgentProvider`. The engine talks to
6
+ * providers through this interface — no `if (name === "codex")` branches
7
+ * anywhere outside `providers/<name>.ts`.
8
+ *
9
+ * The `Agent` interface in `../types.ts` remains a structural subset of
10
+ * `AgentProvider` so existing callers keep working while we migrate.
11
+ */
12
+ import type { AgentExecutionProfile } from "../lib/executors.js";
13
+ export interface AgentProvider {
14
+ /** Stable agent identifier. Engine code never branches on this value. */
15
+ name: string;
16
+ /** User-facing label. */
17
+ displayName: string;
18
+ /** Default command (first whitespace-separated token must resolve on PATH). */
19
+ command: string;
20
+ /** Where this agent stores its skills (used by detection + scaffolds). */
21
+ skillsDir: string;
22
+ /** Marker dir whose existence indicates the agent is installed locally. */
23
+ homeDir: string;
24
+ /**
25
+ * Whether Interf can drive this agent for automated Build runs today.
26
+ * Detection + the role-router consult this flag.
27
+ */
28
+ supportsAutomatedRuns: boolean;
29
+ /**
30
+ * Internal-acceptance defaults — the model + effort this provider uses
31
+ * when no explicit override is supplied during maintainer test runs.
32
+ * Normal user runs do not consume these unless they opt in.
33
+ */
34
+ defaultModel?: string;
35
+ defaultEffort?: string;
36
+ /**
37
+ * Stderr lines matching any of these regexps are treated as expected
38
+ * noise and suppressed from preflight failures + run logs.
39
+ */
40
+ noiseFilters: ReadonlyArray<RegExp>;
41
+ /** Build the spawn args for a `prompt` + execution profile. */
42
+ buildArgs(prompt: string, profile: AgentExecutionProfile): string[];
43
+ /** Build the spawn env from a base env (defaults to identity). */
44
+ buildEnv(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
45
+ /**
46
+ * Optional. Return true when a preflight failure is transient and the
47
+ * caller should retry. Defaults to false when the method is absent.
48
+ */
49
+ isTransientPreflightFailure?(stderr: string, errorMessage: string): boolean;
50
+ }
@@ -1,4 +1,4 @@
1
- import { type AgentRecord, type AgentsRegistry, type RoleMap } from "../../contracts/lib/schema.js";
1
+ import { type AgentPrefs, type AgentPrefsMap, type AgentRecord, type AgentsRegistry, type RoleMap } from "../../contracts/lib/schema.js";
2
2
  export declare const AGENTS_REGISTRY_FILENAME = "agents.json";
3
3
  /** `~/.interf/agents.json` — persisted custom agents + role-map. */
4
4
  export declare function agentsRegistryPath(): string;
@@ -10,8 +10,19 @@ export declare function agentsRegistryPath(): string;
10
10
  * unreadable; persisted custom agents always have `source: "user"`.
11
11
  */
12
12
  export declare function loadPersistedRegistry(): AgentsRegistry;
13
- /** Persist the on-disk part of the registry (custom agents + role-map). */
13
+ /** Persist the on-disk part of the registry (custom agents + role-map + prefs). */
14
14
  export declare function savePersistedRegistry(registry: AgentsRegistry): void;
15
+ /**
16
+ * Read the prefs map without merging anything else. Used by callers that
17
+ * only need the per-agent overrides (e.g. the run-time spawn merger).
18
+ */
19
+ export declare function loadAgentPrefs(): AgentPrefsMap;
20
+ /**
21
+ * Update one agent's prefs. Pass an empty object (or nullable fields set
22
+ * to null) to clear a specific value; pass a fully empty record to remove
23
+ * that agent's entry entirely. Built-in or custom agent — same code path.
24
+ */
25
+ export declare function setAgentPrefs(name: string, prefs: AgentPrefs): void;
15
26
  /**
16
27
  * Detect built-in agents present on this machine. Filtered to agents
17
28
  * whose marker home directory exists; we do NOT require the command
@@ -6,7 +6,7 @@
6
6
  * are detected dynamically at read time and merged with the persisted
7
7
  * custom agents. The role-map IS persisted.
8
8
  *
9
- * 0.15 contract:
9
+ * contract:
10
10
  * {
11
11
  * "agents": [
12
12
  * { "name": "opencode", "display_name": "OpenCode", "command": "opencode --prompt", "source": "user" }
@@ -22,9 +22,9 @@
22
22
  */
23
23
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
24
24
  import { join } from "node:path";
25
- import { AgentRecordSchema, AgentsRegistrySchema, CANONICAL_ROLES, } from "../../contracts/lib/schema.js";
25
+ import { AgentPrefsSchema, AgentRecordSchema, AgentsRegistrySchema, CANONICAL_ROLES, } from "../../contracts/lib/schema.js";
26
+ import { interfHomeRoot } from "../../contracts/lib/project-paths.js";
26
27
  import { readJsonFileWithSchema } from "../../contracts/utils/parse.js";
27
- import { interfHomeRoot } from "../instance-paths.js";
28
28
  import { agentCommandAvailable, detectAgents, supportsAutomatedRuns } from "./lib/detection.js";
29
29
  import { AGENTS } from "./lib/constants.js";
30
30
  export const AGENTS_REGISTRY_FILENAME = "agents.json";
@@ -47,16 +47,44 @@ export function loadPersistedRegistry() {
47
47
  const value = readJsonFileWithSchema(path, "agents registry", AgentsRegistrySchema);
48
48
  return value ?? AgentsRegistrySchema.parse({});
49
49
  }
50
- /** Persist the on-disk part of the registry (custom agents + role-map). */
50
+ /** Persist the on-disk part of the registry (custom agents + role-map + prefs). */
51
51
  export function savePersistedRegistry(registry) {
52
52
  const home = interfHomeRoot();
53
53
  mkdirSync(home, { recursive: true });
54
54
  const sanitized = {
55
- agents: registry.agents.map(({ available: _available, ...agent }) => AgentRecordSchema.parse({ ...agent, source: "user" })),
55
+ agents: registry.agents.map(({ available: _available, prefs: _prefs, ...agent }) => AgentRecordSchema.parse({ ...agent, source: "user" })),
56
56
  role_map: { ...registry.role_map },
57
+ agent_prefs: { ...(registry.agent_prefs ?? {}) },
57
58
  };
58
59
  writeFileSync(agentsRegistryPath(), `${JSON.stringify(sanitized, null, 2)}\n`);
59
60
  }
61
+ /**
62
+ * Read the prefs map without merging anything else. Used by callers that
63
+ * only need the per-agent overrides (e.g. the run-time spawn merger).
64
+ */
65
+ export function loadAgentPrefs() {
66
+ return loadPersistedRegistry().agent_prefs ?? {};
67
+ }
68
+ /**
69
+ * Update one agent's prefs. Pass an empty object (or nullable fields set
70
+ * to null) to clear a specific value; pass a fully empty record to remove
71
+ * that agent's entry entirely. Built-in or custom agent — same code path.
72
+ */
73
+ export function setAgentPrefs(name, prefs) {
74
+ const persisted = loadPersistedRegistry();
75
+ const next = { ...(persisted.agent_prefs ?? {}) };
76
+ const sanitized = AgentPrefsSchema.parse(prefs);
77
+ const empty = !sanitized.env_vars
78
+ && (sanitized.model === undefined || sanitized.model === null)
79
+ && (sanitized.effort === undefined || sanitized.effort === null);
80
+ if (empty) {
81
+ delete next[name];
82
+ }
83
+ else {
84
+ next[name] = sanitized;
85
+ }
86
+ savePersistedRegistry({ ...persisted, agent_prefs: next });
87
+ }
60
88
  /**
61
89
  * Detect built-in agents present on this machine. Filtered to agents
62
90
  * whose marker home directory exists; we do NOT require the command
@@ -112,9 +140,13 @@ export function listKnownBuiltinAgents() {
112
140
  * against `which` so a stale `~/.interf/agents.json` entry does not
113
141
  * appear as a usable choice.
114
142
  */
115
- function mergeAgents(builtin, persisted) {
143
+ function mergeAgents(builtin, persisted, prefsMap) {
116
144
  const seen = new Set(builtin.map((agent) => agent.name));
117
- const merged = builtin.map((agent) => ({ ...agent, available: true }));
145
+ const merged = builtin.map((agent) => ({
146
+ ...agent,
147
+ available: true,
148
+ ...(prefsMap[agent.name] ? { prefs: prefsMap[agent.name] } : {}),
149
+ }));
118
150
  for (const agent of persisted) {
119
151
  if (seen.has(agent.name))
120
152
  continue;
@@ -123,6 +155,7 @@ function mergeAgents(builtin, persisted) {
123
155
  ...agent,
124
156
  source: "user",
125
157
  available: agentCommandAvailable(agent.command),
158
+ ...(prefsMap[agent.name] ? { prefs: prefsMap[agent.name] } : {}),
126
159
  });
127
160
  }
128
161
  return merged;
@@ -161,7 +194,7 @@ function buildDefaultRoleMap(agents) {
161
194
  export function loadAgentsRegistry() {
162
195
  const persisted = loadPersistedRegistry();
163
196
  const builtinDetected = detectAutomatableBuiltinAgentRecords();
164
- const agents = mergeAgents(builtinDetected, persisted.agents);
197
+ const agents = mergeAgents(builtinDetected, persisted.agents, persisted.agent_prefs ?? {});
165
198
  // Seed the default role-map on first read when the persisted file
166
199
  // has no role-map entries AND we have at least one detectable agent.
167
200
  // (We do not write to disk yet; the seeded map is computed on the
@@ -180,7 +213,7 @@ export function loadAgentsRegistry() {
180
213
  }
181
214
  /** Pure helper — like `loadAgentsRegistry()` but works off in-memory data. */
182
215
  export function resolveRegistry(persisted, builtinDetected) {
183
- const agents = mergeAgents(builtinDetected, persisted.agents);
216
+ const agents = mergeAgents(builtinDetected, persisted.agents, persisted.agent_prefs ?? {});
184
217
  const hasPersistedEntries = Object.keys(persisted.role_map).length > 0;
185
218
  const roleMap = hasPersistedEntries
186
219
  ? { ...persisted.role_map }
@@ -197,6 +230,7 @@ export function updateRoleMap(nextRoleMap) {
197
230
  const next = {
198
231
  agents: current.agents,
199
232
  role_map: { ...nextRoleMap },
233
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
200
234
  };
201
235
  savePersistedRegistry(next);
202
236
  return next;
@@ -218,6 +252,7 @@ export function patchRoleMap(patch) {
218
252
  const updated = {
219
253
  agents: current.agents,
220
254
  role_map: next,
255
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
221
256
  };
222
257
  savePersistedRegistry(updated);
223
258
  return updated;
@@ -252,6 +287,7 @@ export function registerCustomAgent(input) {
252
287
  const next = {
253
288
  agents: [...current.agents, record],
254
289
  role_map: { ...current.role_map },
290
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
255
291
  };
256
292
  savePersistedRegistry(next);
257
293
  return next;
@@ -280,6 +316,7 @@ export function unregisterCustomAgent(name) {
280
316
  const next = {
281
317
  agents: remaining,
282
318
  role_map: trimmedRoleMap,
319
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
283
320
  };
284
321
  savePersistedRegistry(next);
285
322
  return next;
@@ -298,7 +335,7 @@ export function setActiveAgent(name) {
298
335
  throw new Error("Agent name is required.");
299
336
  const persisted = loadPersistedRegistry();
300
337
  const builtinDetected = detectAutomatableBuiltinAgentRecords();
301
- const agents = mergeAgents(builtinDetected, persisted.agents);
338
+ const agents = mergeAgents(builtinDetected, persisted.agents, persisted.agent_prefs ?? {});
302
339
  if (!agents.some((agent) => agent.name === trimmedName)) {
303
340
  throw new Error(`Agent "${trimmedName}" is not detected or registered. Install or register it before making it active.`);
304
341
  }
@@ -315,6 +352,7 @@ export function setActiveAgent(name) {
315
352
  const next = {
316
353
  agents: persisted.agents,
317
354
  role_map: nextRoleMap,
355
+ agent_prefs: { ...(persisted.agent_prefs ?? {}) },
318
356
  };
319
357
  savePersistedRegistry(next);
320
358
  return next;
@@ -27,7 +27,7 @@ export interface BuildRoleExecutorBundleInput {
27
27
  executionProfile?: AgentExecutionProfile;
28
28
  }
29
29
  /**
30
- * Build a per-role executor bundle from a registry snapshot. The
30
+ * Build a per-role executor bundle from registry state. The
31
31
  * `defaultExecutor` is what the pipeline already passes for the
32
32
  * single-active-agent case (so role lookups that fall through to
33
33
  * `fallback-active` resolve to the same executor).
@@ -2,9 +2,9 @@
2
2
  * Role-aware executor factory.
3
3
  *
4
4
  * Bridges the registry layer (`AgentRecord` / `RoleMap`) to the runtime
5
- * layer (`AgentExecutor`). Builds a per-agent-name `AgentExecutor`
5
+ * layer (`AgentExecutor`). Creates a per-agent-name `AgentExecutor`
6
6
  * map up front and exposes a `resolveExecutorForRole(role)` helper that
7
- * the build / readiness-check pipelines can call per-stage.
7
+ * the build / benchmark pipelines can call per-stage.
8
8
  *
9
9
  * Falls back gracefully: when a role isn't mapped, or the mapped agent
10
10
  * is missing, we fall through to `general` and ultimately to the
@@ -33,7 +33,7 @@ function agentRecordToAgent(record) {
33
33
  };
34
34
  }
35
35
  /**
36
- * Build a per-role executor bundle from a registry snapshot. The
36
+ * Build a per-role executor bundle from registry state. The
37
37
  * `defaultExecutor` is what the pipeline already passes for the
38
38
  * single-active-agent case (so role lookups that fall through to
39
39
  * `fallback-active` resolve to the same executor).
@@ -46,7 +46,7 @@ export function buildRoleExecutorBundle(input) {
46
46
  }
47
47
  // Make sure the active / default executor is reachable by name
48
48
  // even when the active agent isn't formally in the registry yet
49
- // (e.g. legacy single-active setups during the 0.14 → 0.15 transition).
49
+ // (e.g. previous single-active setups inherited from older configs).
50
50
  if (input.activeAgent && !executors.has(input.activeAgent.name)) {
51
51
  executors.set(input.activeAgent.name, input.defaultExecutor);
52
52
  }
@@ -63,8 +63,9 @@ export function buildRoleExecutorBundle(input) {
63
63
  const result = resolveAgentForRole(role, context);
64
64
  if ("error" in result) {
65
65
  // Role-router refused — fall back to the default executor and
66
- // synthesize a `fallback-active` resolution. This keeps prepare
67
- // runs alive when the registry is empty / mid-edit.
66
+ // synthesize a `fallback-active` resolution. This is the explicit
67
+ // single-active-agent compatibility path; callers surface the
68
+ // fallback source in run logs.
68
69
  const synthetic = {
69
70
  agent: input.activeAgent
70
71
  ?? {
@@ -4,7 +4,9 @@
4
4
  * failure.
5
5
  */
6
6
  export function resolveAgentForRole(role, context) {
7
- if (context.agents.length === 0) {
7
+ const availableAgents = context.agents.filter((agent) => agent.available !== false);
8
+ const activeAgent = context.activeAgent?.available === false ? null : context.activeAgent;
9
+ if (availableAgents.length === 0) {
8
10
  return {
9
11
  error: "no-agents",
10
12
  detail: "No agents are available. Install Claude Code, Codex, or another agent CLI, " +
@@ -15,7 +17,7 @@ export function resolveAgentForRole(role, context) {
15
17
  // 1. Explicit role-map entry for the requested role.
16
18
  const explicitName = context.roleMap[trimmedRole];
17
19
  if (explicitName) {
18
- const found = context.agents.find((agent) => agent.name === explicitName);
20
+ const found = availableAgents.find((agent) => agent.name === explicitName);
19
21
  if (found) {
20
22
  return { agent: found, role: trimmedRole, source: "explicit" };
21
23
  }
@@ -29,16 +31,16 @@ export function resolveAgentForRole(role, context) {
29
31
  if (trimmedRole !== "general") {
30
32
  const generalName = context.roleMap["general"];
31
33
  if (generalName) {
32
- const found = context.agents.find((agent) => agent.name === generalName);
34
+ const found = availableAgents.find((agent) => agent.name === generalName);
33
35
  if (found) {
34
36
  return { agent: found, role: trimmedRole, source: "fallback-general" };
35
37
  }
36
38
  }
37
39
  }
38
40
  // 3. Active agent.
39
- if (context.activeAgent) {
41
+ if (activeAgent) {
40
42
  return {
41
- agent: context.activeAgent,
43
+ agent: activeAgent,
42
44
  role: trimmedRole,
43
45
  source: "fallback-active",
44
46
  };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Account context types.
3
+ *
4
+ * The current account is a small projection of the WorkOS user identity +
5
+ * Stripe subscription state that the engine and CLI carry around for the
6
+ * lifetime of a session. It is populated at engine boot from
7
+ * `~/.interf/auth/session.json`, when present, and is null for unauthenticated
8
+ * (loopback-only, free-tier) sessions.
9
+ *
10
+ * No vendor types are imported here — the engine treats this as a stable
11
+ * shape and providers (WorkOS today, future swaps) map their domain into it.
12
+ */
13
+ export type AccountPlan = "free" | "pro" | "enterprise" | "anonymous";
14
+ export interface AccountEntitlements {
15
+ /** Maximum number of active Projects this account may create. */
16
+ max_active_projects: number;
17
+ /** Pro features unlocked by the current plan. */
18
+ pro_features: ReadonlyArray<string>;
19
+ }
20
+ export interface CurrentAccount {
21
+ /** Stable account / user identifier (WorkOS user id, e.g. `user_01H...`). */
22
+ user_id: string;
23
+ /** Display email captured at last login. */
24
+ email: string;
25
+ /** Display name (optional; falls back to the email local-part in the UI). */
26
+ display_name: string | null;
27
+ /** Subscription tier. */
28
+ plan: AccountPlan;
29
+ /** Computed entitlements for the current plan. */
30
+ entitlements: AccountEntitlements;
31
+ /** ISO timestamp the session was last refreshed (used for TTL checks). */
32
+ refreshed_at: string;
33
+ }
34
+ /**
35
+ * Tier defaults — feature-based, not usage-based.
36
+ *
37
+ * Three tiers ship; Teams is a "coming soon" marketing surface, not a real
38
+ * plan, so it has no entry here. The Free cap is the conversion lever;
39
+ * Pro removes it. Enterprise is structurally different from Pro — not a
40
+ * bigger Pro bundle but a separate self-hosted deployment with SSO + audit
41
+ * log + governance + custom support.
42
+ *
43
+ * Pro features carry through the locked strategy:
44
+ * - benchmarks (Pro: unlimited; Free: one run)
45
+ * - self-improving Build Plans
46
+ * - multi-source per Project
47
+ * - scheduled resyncs
48
+ * - export bundles
49
+ * - API access
50
+ */
51
+ export declare const TIER_ENTITLEMENTS: Record<AccountPlan, AccountEntitlements>;
52
+ export declare function entitlementsForPlan(plan: AccountPlan): AccountEntitlements;
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Account context types.
3
+ *
4
+ * The current account is a small projection of the WorkOS user identity +
5
+ * Stripe subscription state that the engine and CLI carry around for the
6
+ * lifetime of a session. It is populated at engine boot from
7
+ * `~/.interf/auth/session.json`, when present, and is null for unauthenticated
8
+ * (loopback-only, free-tier) sessions.
9
+ *
10
+ * No vendor types are imported here — the engine treats this as a stable
11
+ * shape and providers (WorkOS today, future swaps) map their domain into it.
12
+ */
13
+ /**
14
+ * Tier defaults — feature-based, not usage-based.
15
+ *
16
+ * Three tiers ship; Teams is a "coming soon" marketing surface, not a real
17
+ * plan, so it has no entry here. The Free cap is the conversion lever;
18
+ * Pro removes it. Enterprise is structurally different from Pro — not a
19
+ * bigger Pro bundle but a separate self-hosted deployment with SSO + audit
20
+ * log + governance + custom support.
21
+ *
22
+ * Pro features carry through the locked strategy:
23
+ * - benchmarks (Pro: unlimited; Free: one run)
24
+ * - self-improving Build Plans
25
+ * - multi-source per Project
26
+ * - scheduled resyncs
27
+ * - export bundles
28
+ * - API access
29
+ */
30
+ export const TIER_ENTITLEMENTS = {
31
+ anonymous: {
32
+ max_active_projects: 10,
33
+ pro_features: [],
34
+ },
35
+ free: {
36
+ max_active_projects: 10,
37
+ pro_features: [],
38
+ },
39
+ pro: {
40
+ max_active_projects: Number.POSITIVE_INFINITY,
41
+ pro_features: [
42
+ "benchmarking-unlimited",
43
+ "self-improving-build-plans",
44
+ "multi-source-per-project",
45
+ "scheduled-resyncs",
46
+ "flow-export",
47
+ "api-access",
48
+ ],
49
+ },
50
+ enterprise: {
51
+ max_active_projects: Number.POSITIVE_INFINITY,
52
+ pro_features: [
53
+ "benchmarking-unlimited",
54
+ "self-improving-build-plans",
55
+ "multi-source-per-project",
56
+ "scheduled-resyncs",
57
+ "flow-export",
58
+ "api-access",
59
+ "sso",
60
+ "audit-log",
61
+ "governance",
62
+ "self-hosted",
63
+ ],
64
+ },
65
+ };
66
+ export function entitlementsForPlan(plan) {
67
+ return TIER_ENTITLEMENTS[plan] ?? TIER_ENTITLEMENTS.anonymous;
68
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * PKCE auth flow orchestration.
3
+ *
4
+ * Drives the public-client OAuth dance: spawns a loopback HTTP server on
5
+ * 127.0.0.1, asks WorkOS for an authorize URL bound to that server's
6
+ * dynamic port, opens the user's browser at AuthKit, and waits for the
7
+ * callback. On callback, the returned `state` is checked against the SDK-
8
+ * generated value and the `code` is exchanged for `{ user, accessToken,
9
+ * refreshToken }` via `authenticateWithCode` with the stored `codeVerifier`.
10
+ *
11
+ * No part of this module touches `~/.interf/auth/*`. Callers (CLI today,
12
+ * desktop shell later) take the returned tokens and decide what to persist.
13
+ *
14
+ * The `transport` seam lets tests stand in for the WorkOS SDK without env
15
+ * config or live HTTP. Production callers use `defaultPkceTransport()`.
16
+ */
17
+ /** Shape we need from the WorkOS SDK. Narrowed so the seam is small. */
18
+ export interface PkceTransport {
19
+ getAuthorizationUrlWithPKCE(input: {
20
+ provider: "authkit";
21
+ redirectUri: string;
22
+ clientId: string;
23
+ loginHint?: string;
24
+ }): Promise<{
25
+ url: string;
26
+ state: string;
27
+ codeVerifier: string;
28
+ }>;
29
+ authenticateWithCode(input: {
30
+ code: string;
31
+ codeVerifier: string;
32
+ clientId: string;
33
+ }): Promise<AuthenticationResult>;
34
+ }
35
+ /** Minimum AuthenticationResponse fields we care about. */
36
+ export interface AuthenticationResult {
37
+ user: {
38
+ id: string;
39
+ email: string;
40
+ firstName?: string | null;
41
+ lastName?: string | null;
42
+ };
43
+ accessToken: string;
44
+ refreshToken: string;
45
+ }
46
+ export interface PkceFlowOptions {
47
+ /** Loopback host to bind. Default 127.0.0.1. */
48
+ callbackHost?: string;
49
+ /** Loopback port to bind. Default 0 (OS-assigned). */
50
+ callbackPort?: number;
51
+ /** Open the user's browser automatically. Default true. */
52
+ autoOpenBrowser?: boolean;
53
+ /** Prefill the AuthKit email field. */
54
+ loginHint?: string;
55
+ /** Hard timeout waiting for callback. Default 5 min. */
56
+ timeoutMs?: number;
57
+ /** Test hook fired after authorize URL is built. Receives `(url, redirectUri)`. */
58
+ onAuthorizeUrl?: (url: string, redirectUri: string) => Promise<void> | void;
59
+ }
60
+ export declare class AuthFlowError extends Error {
61
+ constructor(message: string);
62
+ }
63
+ /**
64
+ * Default transport — proxies to the real WorkOS SDK. Lazy-loads the
65
+ * singleton client on first call so importing this module does not require
66
+ * env config.
67
+ */
68
+ export declare function defaultPkceTransport(): PkceTransport;
69
+ /**
70
+ * Run the full PKCE flow end-to-end. Returns the WorkOS tokens + user.
71
+ * Always closes the loopback server before returning, even on error.
72
+ */
73
+ export declare function runPkceFlow(transport: PkceTransport, options?: PkceFlowOptions): Promise<AuthenticationResult>;