@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
@@ -2,12 +2,12 @@
2
2
  * `interf` (no subcommand) and `interf init` — the wizard.
3
3
  *
4
4
  * Casual-user entry point. End-to-end onboarding:
5
- * - If no connection → connect to an already-running local engine, or ask
6
- * whether to start the foreground local engine, connect remote, or quit.
7
- * - Once connected → action menu (list / create / build / test / open UI / stop engine / quit).
5
+ * - If no connection → connect to an already-running local service, or ask
6
+ * whether to start the foreground local service, connect remote, or quit.
7
+ * - Once connected → action menu (list / create / build / test / stop service / quit).
8
8
  * - Each action loops back to the menu instead of exiting.
9
9
  *
10
- * Agents bypass the wizard entirely. They use `interf prep`, `interf build`,
10
+ * Agents bypass the wizard entirely. They use `interf project`, `interf build`,
11
11
  * etc. directly. The wizard is purely a UX wrapper around those CLI commands.
12
12
  */
13
13
  import chalk from "chalk";
@@ -16,30 +16,9 @@ import { existsSync, statSync } from "node:fs";
16
16
  import { homedir } from "node:os";
17
17
  import { basename, resolve } from "node:path";
18
18
  import { spawn } from "node:child_process";
19
- import { ConnectionRecordSchema, readActiveConnection, writeConnection, } from "../../packages/engine/connection-config.js";
20
- import { LOCAL_SERVICE_DEFAULT_HOST, LOCAL_SERVICE_DEFAULT_PORT } from "../../packages/engine/routes.js";
21
- async function callJson(url, token) {
22
- const headers = new Headers();
23
- if (token)
24
- headers.set("authorization", `Bearer ${token}`);
25
- try {
26
- const response = await fetch(url, { headers });
27
- const raw = await response.text();
28
- let body = null;
29
- if (raw) {
30
- try {
31
- body = JSON.parse(raw);
32
- }
33
- catch {
34
- body = null;
35
- }
36
- }
37
- return { status: response.status, body };
38
- }
39
- catch {
40
- return { status: 0, body: null };
41
- }
42
- }
19
+ import { ConnectionRecordSchema, readActiveConnection, writeConnection, } from "../../packages/runtime/connection-config.js";
20
+ import { callJsonSafe } from "../lib/http-client.js";
21
+ import { LOCAL_SERVICE_DEFAULT_HOST, LOCAL_SERVICE_DEFAULT_PORT } from "../../packages/runtime/service/routes.js";
43
22
  function spawnInterf(args) {
44
23
  return new Promise((resolveSpawn) => {
45
24
  const child = spawn(process.argv[1] ?? "interf", args, { stdio: "inherit" });
@@ -60,9 +39,9 @@ function isHttpUrl(value) {
60
39
  }
61
40
  }
62
41
  /**
63
- * Probe a URL's `/health` endpoint and return whether the engine is up.
42
+ * Probe a URL's `/health` endpoint and return whether the local service is up.
64
43
  * Used as a fallback when `connection.json` may be missing (e.g. older
65
- * `interf web` binaries that don't write the 0.13 record).
44
+ * `interf runtime` binaries that don't write the connection record).
66
45
  */
67
46
  async function probeHealth(url) {
68
47
  try {
@@ -73,29 +52,64 @@ async function probeHealth(url) {
73
52
  return false;
74
53
  }
75
54
  }
55
+ async function serviceRequiresAuth(url) {
56
+ try {
57
+ const response = await fetch(`${url.replace(/\/+$/, "")}/v1/instance`);
58
+ if (response.status !== 200)
59
+ return true;
60
+ const body = await response.json();
61
+ return body.auth_required === true;
62
+ }
63
+ catch {
64
+ return true;
65
+ }
66
+ }
67
+ function activeConnectionForUrl(url) {
68
+ const normalized = url.replace(/\/+$/, "");
69
+ const conn = readActiveConnection();
70
+ if (!conn)
71
+ return null;
72
+ return conn.url.replace(/\/+$/, "") === normalized
73
+ ? { url: normalized, token: conn.auth_token }
74
+ : null;
75
+ }
76
+ async function connectToReachableEngine(url) {
77
+ const normalized = url.replace(/\/+$/, "");
78
+ const existing = activeConnectionForUrl(normalized);
79
+ if (existing)
80
+ return existing;
81
+ if (await serviceRequiresAuth(normalized))
82
+ return null;
83
+ try {
84
+ writeConnection({ url: normalized, auth_token: null });
85
+ }
86
+ catch {
87
+ // best effort
88
+ }
89
+ return { url: normalized, token: null };
90
+ }
76
91
  /**
77
- * Connect to an engine. Either an existing one already running on the
92
+ * Connect to a local service. Either an existing one already running on the
78
93
  * default port (with a `wasAlreadyRunning` flag so the caller can tell
79
94
  * the user honestly) or a fresh one we spawn here.
80
95
  *
81
96
  * Returns null on timeout / error.
82
97
  */
83
98
  async function startLocalEngineInBackground() {
84
- // First: check whether an engine is ALREADY running on the default
99
+ // First: check whether a local service is ALREADY running on the default
85
100
  // port. If so, don't pretend to start a new one — just connect.
86
101
  if (await probeHealth(DEFAULT_ENGINE_URL)) {
87
- try {
88
- writeConnection({ url: DEFAULT_ENGINE_URL, auth_token: null });
89
- }
90
- catch {
91
- // best effort
102
+ const existing = await connectToReachableEngine(DEFAULT_ENGINE_URL);
103
+ if (!existing) {
104
+ console.log(chalk.yellow(` Local service already running at ${DEFAULT_ENGINE_URL}, but no bearer token is available.`));
105
+ return null;
92
106
  }
93
- console.log(chalk.dim(` Engine already running at ${DEFAULT_ENGINE_URL} — connecting.`));
94
- return { url: DEFAULT_ENGINE_URL, token: null, wasAlreadyRunning: true };
107
+ console.log(chalk.dim(` Local service already running at ${DEFAULT_ENGINE_URL} — connecting.`));
108
+ return { ...existing, wasAlreadyRunning: true };
95
109
  }
96
110
  const spinner = p.spinner();
97
- spinner.start("Starting local Interf engine…");
98
- const child = spawn(process.argv[1] ?? "interf", ["web"], {
111
+ spinner.start("Starting local Interf service...");
112
+ const child = spawn(process.argv[1] ?? "interf", ["runtime"], {
99
113
  detached: true,
100
114
  stdio: "ignore",
101
115
  });
@@ -104,34 +118,31 @@ async function startLocalEngineInBackground() {
104
118
  const timeoutMs = 30_000;
105
119
  while (Date.now() - startedAt < timeoutMs) {
106
120
  await new Promise((r) => setTimeout(r, 250));
107
- // Path A: connection.json written by the spawned 0.13+ server.
121
+ // Path A: connection.json written by the spawned server.
108
122
  const conn = readActiveConnection();
109
123
  if (conn) {
110
124
  const url = conn.url.replace(/\/+$/, "");
111
125
  if (await probeHealth(url)) {
112
- spinner.stop(chalk.green(`Engine ready at ${url}`));
126
+ spinner.stop(chalk.green(`Local service ready at ${url}`));
113
127
  return { url, token: conn.auth_token, wasAlreadyRunning: false };
114
128
  }
115
129
  }
116
- // Path B: spawned engine is ready on the default URL.
130
+ // Path B: spawned service is ready on the default URL.
117
131
  if (await probeHealth(DEFAULT_ENGINE_URL)) {
118
- try {
119
- writeConnection({ url: DEFAULT_ENGINE_URL, auth_token: null });
120
- }
121
- catch {
122
- // best effort
132
+ const existing = await connectToReachableEngine(DEFAULT_ENGINE_URL);
133
+ if (existing) {
134
+ spinner.stop(chalk.green(`Local service ready at ${DEFAULT_ENGINE_URL}`));
135
+ return { ...existing, wasAlreadyRunning: false };
123
136
  }
124
- spinner.stop(chalk.green(`Engine ready at ${DEFAULT_ENGINE_URL}`));
125
- return { url: DEFAULT_ENGINE_URL, token: null, wasAlreadyRunning: false };
126
137
  }
127
138
  }
128
- spinner.stop(chalk.red("Timed out waiting for engine to start."));
139
+ spinner.stop(chalk.red("Timed out waiting for local service to start."));
129
140
  return null;
130
141
  }
131
142
  /**
132
143
  * Print the canonical connect-or-error hint and exit non-zero. Used
133
- * whenever the wizard needs an engine but no reachable connection
134
- * exists. The wizard does NOT auto-start an engine — `interf web` is
144
+ * whenever the wizard needs a local service but no reachable connection
145
+ * exists. The wizard does NOT auto-start a service — `interf runtime` is
135
146
  * the explicit, foreground way to run one.
136
147
  */
137
148
  function exitNoEngineConnected(reason) {
@@ -139,9 +150,9 @@ function exitNoEngineConnected(reason) {
139
150
  console.log(chalk.yellow(` ${reason}`));
140
151
  console.log();
141
152
  console.log(" Start one in another terminal:");
142
- console.log(chalk.bold(" interf web"));
153
+ console.log(chalk.bold(" interf runtime"));
143
154
  console.log();
144
- console.log(" Or connect to a remote engine:");
155
+ console.log(" Or connect to a remote service:");
145
156
  console.log(chalk.bold(" interf login --url <https://…>"));
146
157
  console.log();
147
158
  process.exit(1);
@@ -156,8 +167,8 @@ async function promptForConnection(reason) {
156
167
  const choice = await p.select({
157
168
  message: "How do you want to continue?",
158
169
  options: [
159
- { value: "start-local", label: "Start local engine (serves Interf UI)" },
160
- { value: "connect-remote", label: "Connect to remote engine" },
170
+ { value: "start-local", label: "Start local service" },
171
+ { value: "connect-remote", label: "Connect to remote service" },
161
172
  { value: "quit", label: chalk.dim("Exit") },
162
173
  ],
163
174
  initialValue: "start-local",
@@ -168,13 +179,13 @@ async function promptForConnection(reason) {
168
179
  }
169
180
  if (choice === "start-local") {
170
181
  console.log();
171
- console.log(chalk.dim(" Starting `interf web` in this terminal. Press Ctrl-C to stop the engine."));
182
+ console.log(chalk.dim(" Starting `interf runtime` in this terminal. Press Ctrl-C to stop the service."));
172
183
  console.log();
173
- const code = await spawnInterf(["web"]);
184
+ const code = await spawnInterf(["runtime"]);
174
185
  process.exit(code);
175
186
  }
176
187
  const urlValue = await p.text({
177
- message: "Remote engine URL",
188
+ message: "Remote service URL",
178
189
  placeholder: "https://api.interf.cloud",
179
190
  validate: (value) => {
180
191
  const trimmed = String(value ?? "").trim();
@@ -201,7 +212,7 @@ async function promptForConnection(reason) {
201
212
  auth_token: String(tokenValue ?? "").trim() || null,
202
213
  });
203
214
  const url = record.url.replace(/\/+$/, "");
204
- const probe = await callJson(`${url}/health`, record.auth_token);
215
+ const probe = await callJsonSafe(`${url}/health`, record.auth_token);
205
216
  if (probe.status === 0) {
206
217
  return promptForConnection(`Connection ${url} is unreachable.`);
207
218
  }
@@ -265,28 +276,28 @@ async function promptSourcePath() {
265
276
  }
266
277
  return String(choice);
267
278
  }
268
- async function flowCreatePreparation(conn) {
269
- const prepId = await p.text({
270
- message: "Preparation id (a short name for this unit of agent work)",
271
- placeholder: "my-prep",
279
+ async function flowCreateProject(conn) {
280
+ const projectId = await p.text({
281
+ message: "Project id (a short name for this agent task)",
282
+ placeholder: "my-project",
272
283
  validate: (value) => (/^[a-z0-9][a-z0-9-]*$/.test(value) ? undefined : "Lowercase letters, numbers, and dashes only."),
273
284
  });
274
- if (p.isCancel(prepId))
275
- return null;
276
- const about = await p.text({
277
- message: "What is this preparation for? (one line — the agent task intent)",
278
- placeholder: "Prepare these notes so an agent can answer questions about them.",
279
- });
280
- if (p.isCancel(about))
285
+ if (p.isCancel(projectId))
281
286
  return null;
282
- const aboutText = String(about ?? "").trim();
283
287
  const sourcePath = await promptSourcePath();
284
288
  if (!sourcePath)
285
289
  return null;
290
+ const intent = await p.text({
291
+ message: "What should the agent do with this Source?",
292
+ placeholder: "Compare the launch timeline against approval notes and produce a sourced handoff.",
293
+ validate: (value) => String(value).trim().length > 0 ? undefined : "Agent task is required.",
294
+ });
295
+ if (p.isCancel(intent))
296
+ return null;
286
297
  // Offer saved Build Plans, but keep selection optional. The agent-first
287
- // path usually creates the Preparation from requested Artifacts first,
288
- // then drafts a custom Build Plan for review.
289
- const buildPlansResp = await callJson(`${conn.url}/v1/build-plans`, conn.token);
298
+ // path usually creates the Project from Source first, then drafts a
299
+ // custom Build Plan for review.
300
+ const buildPlansResp = await callJsonSafe(`${conn.url}/v1/build-plans`, conn.token);
290
301
  const buildPlans = buildPlansResp.body?.build_plans ?? [];
291
302
  const buildPlanOptions = buildPlans
292
303
  .map((plan) => ({ value: plan.build_plan_id ?? plan.id ?? "", label: `${plan.build_plan_id ?? plan.id ?? "(?)"}${plan.label ? ` - ${plan.label}` : ""}` }))
@@ -339,30 +350,31 @@ async function flowCreatePreparation(conn) {
339
350
  }
340
351
  }
341
352
  const exitCode = await spawnInterf([
342
- "prep",
353
+ "project",
343
354
  "create",
344
- String(prepId),
355
+ String(projectId),
345
356
  "--source",
346
357
  resolve(String(sourcePath)),
358
+ "--intent",
359
+ String(intent),
347
360
  ...(buildPlanId ? ["--build-plan", buildPlanId] : []),
348
- ...(aboutText ? ["--about", aboutText] : []),
349
361
  ]);
350
362
  if (exitCode !== 0)
351
363
  return null;
352
- return String(prepId);
364
+ return { id: String(projectId), buildPlanId };
353
365
  }
354
- async function pickPreparation(conn, message) {
355
- const preps = await callJson(`${conn.url}/v1/preparations`, conn.token);
356
- const list = preps.body?.preparations ?? [];
366
+ async function pickProject(conn, message) {
367
+ const projects = await callJsonSafe(`${conn.url}/v1/projects`, conn.token);
368
+ const list = projects.body?.projects ?? [];
357
369
  if (list.length === 0) {
358
- console.log(chalk.dim(" No preparations yet. Create one first."));
370
+ console.log(chalk.dim(" No Projects yet. Create one first."));
359
371
  return null;
360
372
  }
361
373
  const choice = await p.select({
362
374
  message,
363
- options: list.map((prep) => ({
364
- value: prep.id,
365
- label: `${prep.id} ${chalk.dim(`(${prep.build_plan_id ?? "no Build Plan"} · ${prep.readiness?.status ?? "-"})`)}`,
375
+ options: list.map((project) => ({
376
+ value: project.id,
377
+ label: `${project.id} ${chalk.dim(`(${project.build_plan_id ?? "no Build Plan"} · ${project.readiness?.status ?? "-"})`)}`,
366
378
  })),
367
379
  });
368
380
  if (p.isCancel(choice))
@@ -371,28 +383,27 @@ async function pickPreparation(conn, message) {
371
383
  }
372
384
  async function showActionMenu(conn, options = { allowAgentRuns: true }) {
373
385
  const buildLabel = options.allowAgentRuns
374
- ? "Build a preparation"
375
- : chalk.dim("Build a preparation (no agents available)");
376
- const testLabel = options.allowAgentRuns
377
- ? "Run readiness checks"
378
- : chalk.dim("Readiness checks (no agents available)");
386
+ ? "Build a Project"
387
+ : chalk.dim("Build a Project (no agents available)");
388
+ const benchmarkLabel = options.allowAgentRuns
389
+ ? "Run benchmark/evaluation"
390
+ : chalk.dim("Benchmark/evaluation (no agents available)");
379
391
  const action = await p.select({
380
392
  message: "What do you want to do?",
381
393
  options: [
382
- { value: "ui", label: "Open Interf UI" },
383
- { value: "ls", label: "List preparations" },
384
- { value: "create", label: "Create a new preparation" },
394
+ { value: "ls", label: "List Projects" },
395
+ { value: "create", label: "Create a new Project" },
385
396
  { value: "agents", label: "Manage agents (list / register / role-map)" },
386
397
  { value: "build", label: buildLabel },
387
- { value: "test", label: testLabel },
388
- { value: "stop", label: "Stop the local engine" },
398
+ { value: "benchmark", label: benchmarkLabel },
399
+ { value: "stop", label: "Stop the local service" },
389
400
  { value: "quit", label: "Quit" },
390
401
  ],
391
402
  });
392
403
  if (p.isCancel(action) || action === "quit")
393
404
  return "exit";
394
405
  if (action === "ls") {
395
- await spawnInterf(["prep", "ls"]);
406
+ await spawnInterf(["project", "ls"]);
396
407
  return "continue";
397
408
  }
398
409
  if (action === "agents") {
@@ -400,17 +411,21 @@ async function showActionMenu(conn, options = { allowAgentRuns: true }) {
400
411
  return "continue";
401
412
  }
402
413
  if (action === "create") {
403
- const newId = await flowCreatePreparation(conn);
404
- if (newId) {
414
+ const created = await flowCreateProject(conn);
415
+ if (created) {
405
416
  if (!options.allowAgentRuns) {
406
417
  console.log(chalk.dim(" Skipping build prompt — no agents available. Install one then run `interf build " +
407
- newId +
418
+ created.id +
408
419
  "`."));
409
420
  }
421
+ else if (!created.buildPlanId) {
422
+ console.log(chalk.dim(` Project ${created.id} created. Draft or select a Build Plan before building: ` +
423
+ `interf plan draft ${created.id} --intent "...".`));
424
+ }
410
425
  else {
411
- const buildNow = await p.confirm({ message: `Build ${newId} now?`, initialValue: true });
426
+ const buildNow = await p.confirm({ message: `Build ${created.id} now?`, initialValue: true });
412
427
  if (!p.isCancel(buildNow) && buildNow) {
413
- await spawnInterf(["build", newId]);
428
+ await spawnInterf(["build", created.id]);
414
429
  }
415
430
  }
416
431
  }
@@ -423,43 +438,25 @@ async function showActionMenu(conn, options = { allowAgentRuns: true }) {
423
438
  console.log(" register a custom CLI: `interf agents register <name> --command <cmd>`.");
424
439
  return "continue";
425
440
  }
426
- const id = await pickPreparation(conn, "Which preparation to build?");
441
+ const id = await pickProject(conn, "Which Project to build?");
427
442
  if (id)
428
443
  await spawnInterf(["build", id]);
429
444
  return "continue";
430
445
  }
431
- if (action === "test") {
446
+ if (action === "benchmark") {
432
447
  if (!options.allowAgentRuns) {
433
- console.log(chalk.yellow(" Cannot run readiness checks — no agents available."));
448
+ console.log(chalk.yellow(" Cannot run benchmark/evaluation — no agents available."));
434
449
  return "continue";
435
450
  }
436
- const id = await pickPreparation(conn, "Which preparation should Interf test?");
451
+ const id = await pickProject(conn, "Which Project should Interf benchmark?");
437
452
  if (id)
438
- await spawnInterf(["test", id]);
439
- return "continue";
440
- }
441
- if (action === "ui") {
442
- const target = `${conn.url}/`;
443
- console.log();
444
- console.log(` Opening ${chalk.bold(target)} in your browser…`);
445
- const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
446
- try {
447
- const child = spawn(command, [target], { detached: true, stdio: "ignore" });
448
- child.on("error", () => {
449
- console.log(chalk.dim(` (Could not open browser; visit ${target} manually.)`));
450
- });
451
- child.unref();
452
- }
453
- catch {
454
- console.log(chalk.dim(` (Could not open browser; visit ${target} manually.)`));
455
- }
456
- console.log();
453
+ await spawnInterf(["benchmark", id]);
457
454
  return "continue";
458
455
  }
459
456
  if (action === "stop") {
460
- const ok = await p.confirm({ message: "Stop the connected engine?", initialValue: false });
457
+ const ok = await p.confirm({ message: "Stop the connected local service?", initialValue: false });
461
458
  if (!p.isCancel(ok) && ok) {
462
- await spawnInterf(["web", "stop"]);
459
+ await spawnInterf(["runtime", "stop"]);
463
460
  return "exit";
464
461
  }
465
462
  return "continue";
@@ -467,17 +464,17 @@ async function showActionMenu(conn, options = { allowAgentRuns: true }) {
467
464
  return "continue";
468
465
  }
469
466
  /**
470
- * Agent install-cards menu shown when the connected engine has zero
467
+ * Agent install-cards menu shown when the connected service has zero
471
468
  * detected + registered agents. Returns:
472
469
  * - "rerun" → user installed an agent and wants to retry detection
473
- * - "skip" → continue in UI-only mode (no build/test)
470
+ * - "skip" → continue in read-only mode (no build/benchmark)
474
471
  * - "quit" → exit
475
472
  */
476
473
  async function showAgentInstallCards() {
477
474
  console.log();
478
475
  console.log(chalk.yellow(" No agents detected."));
479
476
  console.log();
480
- console.log(" Interf needs at least one agent to build verifiable context and run readiness checks.");
477
+ console.log(" Interf needs at least one agent to build a Context Graph and run benchmark/evaluation passes.");
481
478
  console.log();
482
479
  const choice = await p.select({
483
480
  message: "How do you want to proceed?",
@@ -500,7 +497,7 @@ async function showAgentInstallCards() {
500
497
  },
501
498
  {
502
499
  value: "skip",
503
- label: chalk.dim("Skip UI-only mode (browse existing verifiable context only)"),
500
+ label: chalk.dim("Skip - read-only mode (browse existing Context Graph only)"),
504
501
  },
505
502
  { value: "quit", label: chalk.dim("Quit") },
506
503
  ],
@@ -568,7 +565,7 @@ async function showAgentInstallCards() {
568
565
  message: "What now?",
569
566
  options: [
570
567
  { value: "rerun", label: "I installed it — re-detect" },
571
- { value: "skip", label: chalk.dim("Skip continue in UI-only mode") },
568
+ { value: "skip", label: chalk.dim("Skip - continue in read-only mode") },
572
569
  { value: "quit", label: chalk.dim("Quit") },
573
570
  ],
574
571
  });
@@ -580,13 +577,13 @@ async function showAgentInstallCards() {
580
577
  }
581
578
  return "rerun";
582
579
  }
583
- async function fetchAgentSnapshot(conn) {
584
- const instance = await callJson(`${conn.url}/v1/instance`, conn.token);
585
- const agentsResponse = await callJson(`${conn.url}/v1/agents`, conn.token);
580
+ async function fetchAgentState(conn) {
581
+ const instance = await callJsonSafe(`${conn.url}/v1/instance`, conn.token);
582
+ const agentsResponse = await callJsonSafe(`${conn.url}/v1/agents`, conn.token);
586
583
  if (instance.status !== 200)
587
584
  return null;
588
- // Engines pre-0.15 don't expose /v1/agents. Surface the gap explicitly
589
- // so the wizard can tell the user to restart instead of silently going
585
+ // Older engines don't expose /v1/agents. Surface the gap explicitly so
586
+ // the wizard can tell the user to restart instead of silently going
590
587
  // through the install-cards flow.
591
588
  const engineSupportsAgents = agentsResponse.status === 200 && instance.body?.agent_count !== undefined;
592
589
  return {
@@ -598,7 +595,7 @@ async function fetchAgentSnapshot(conn) {
598
595
  }
599
596
  async function runWizard(args) {
600
597
  // The wizard is the human entry point, so it can ask how to connect.
601
- // It still never auto-starts an engine: starting `interf web` is an
598
+ // It still never auto-starts a service: starting `interf runtime` is an
602
599
  // explicit foreground choice, and script/agent commands keep the
603
600
  // connect-or-error behavior.
604
601
  const initial = readActiveConnection({
@@ -608,34 +605,32 @@ async function runWizard(args) {
608
605
  let conn = null;
609
606
  if (!initial) {
610
607
  if (await probeHealth(DEFAULT_ENGINE_URL)) {
611
- try {
612
- writeConnection({ url: DEFAULT_ENGINE_URL, auth_token: null });
608
+ conn = await connectToReachableEngine(DEFAULT_ENGINE_URL);
609
+ if (conn) {
610
+ console.log();
611
+ console.log(chalk.dim(` Local service already running at ${DEFAULT_ENGINE_URL} — connecting.`));
613
612
  }
614
- catch {
615
- // best effort
613
+ else {
614
+ conn = await promptForConnection(`Local service is running at ${DEFAULT_ENGINE_URL}, but no bearer token is available.`);
616
615
  }
617
- console.log();
618
- console.log(chalk.dim(` Engine already running at ${DEFAULT_ENGINE_URL} — connecting.`));
619
- conn = { url: DEFAULT_ENGINE_URL, token: null };
620
616
  }
621
617
  else {
622
- conn = await promptForConnection("No Interf engine is connected.");
618
+ conn = await promptForConnection("No Interf local service is connected.");
623
619
  }
624
620
  }
625
621
  else {
626
622
  const url = initial.url.replace(/\/+$/, "");
627
- const probe = await callJson(`${url}/health`, initial.auth_token);
623
+ const probe = await callJsonSafe(`${url}/health`, initial.auth_token);
628
624
  if (probe.status === 0) {
629
625
  if (!args.url && await probeHealth(DEFAULT_ENGINE_URL)) {
630
- try {
631
- writeConnection({ url: DEFAULT_ENGINE_URL, auth_token: null });
626
+ conn = await connectToReachableEngine(DEFAULT_ENGINE_URL);
627
+ if (conn) {
628
+ console.log();
629
+ console.log(chalk.dim(` Saved connection ${url} is unreachable; using local service at ${DEFAULT_ENGINE_URL}.`));
632
630
  }
633
- catch {
634
- // best effort
631
+ else {
632
+ conn = await promptForConnection(`Saved connection ${url} is unreachable. The default local service is running, but no bearer token is available.`);
635
633
  }
636
- console.log();
637
- console.log(chalk.dim(` Saved connection ${url} is unreachable; using local engine at ${DEFAULT_ENGINE_URL}.`));
638
- conn = { url: DEFAULT_ENGINE_URL, token: null };
639
634
  }
640
635
  else {
641
636
  conn = await promptForConnection(`Connection ${url} is unreachable.`);
@@ -648,26 +643,24 @@ async function runWizard(args) {
648
643
  if (!conn) {
649
644
  return;
650
645
  }
651
- const instance = await callJson(`${conn.url}/v1/instance`, conn.token);
646
+ const instance = await callJsonSafe(`${conn.url}/v1/instance`, conn.token);
652
647
  console.log();
653
648
  console.log(chalk.bold(` Connected to ${conn.url}`));
654
- if (instance.body?.package_version) {
655
- console.log(chalk.dim(` v${instance.body.package_version} · ${instance.body.preparation_count ?? 0} preparation(s)`));
656
- }
657
- // 0.15 — surface the connected agents up front. When zero are
649
+ console.log(chalk.dim(` ${instance.body?.project_count ?? 0} project(s)`));
650
+ // surface the execution agents up front. When zero are
658
651
  // detected, run the install-cards menu before letting the user
659
- // try to build or run readiness checks.
660
- let agents = await fetchAgentSnapshot(conn);
652
+ // try to build or run benchmark/evaluation passes.
653
+ let agents = await fetchAgentState(conn);
661
654
  if (agents && !agents.engineSupportsAgents) {
662
655
  console.log();
663
- console.log(chalk.yellow(" The connected engine is older than this CLI."));
656
+ console.log(chalk.yellow(" The connected local service is older than this CLI."));
664
657
  console.log(chalk.dim(" /v1/agents is not available — agent management is disabled."));
665
658
  console.log();
666
659
  const choice = await p.select({
667
- message: "Restart the engine now to pick up new features?",
660
+ message: "Restart the local service now to pick up new features?",
668
661
  options: [
669
- { value: "restart", label: "Yes stop old engine, start new one" },
670
- { value: "continue", label: chalk.dim("No continue with limited features (no agents UI / build / test)") },
662
+ { value: "restart", label: "Yes - stop old service, start new one" },
663
+ { value: "continue", label: chalk.dim("No - continue with limited features (no agent management, Build runs, or benchmark runs)") },
671
664
  { value: "quit", label: "Quit" },
672
665
  ],
673
666
  initialValue: "restart",
@@ -678,26 +671,26 @@ async function runWizard(args) {
678
671
  }
679
672
  if (choice === "restart") {
680
673
  console.log();
681
- console.log(chalk.dim(" Stopping old engine…"));
682
- await spawnInterf(["web", "stop"]);
674
+ console.log(chalk.dim(" Stopping old service..."));
675
+ await spawnInterf(["runtime", "stop"]);
683
676
  // Small grace period for the OS to release the port.
684
677
  await new Promise((r) => setTimeout(r, 800));
685
678
  const restarted = await startLocalEngineInBackground();
686
679
  if (!restarted) {
687
- console.log(chalk.red(" Could not start the new engine. Try manually: interf web"));
680
+ console.log(chalk.red(" Could not start the new local service. Try manually: interf runtime"));
688
681
  process.exit(1);
689
682
  }
690
683
  conn = restarted;
691
- agents = await fetchAgentSnapshot(conn);
684
+ agents = await fetchAgentState(conn);
692
685
  }
693
686
  }
694
687
  // Treat "all registered agents are unavailable" the same as "no agents
695
688
  // detected" — the install-cards menu lets the user install or register
696
689
  // a real one before the active-agent picker runs.
697
- function installedAgentCount(snapshot) {
698
- if (!snapshot)
690
+ function installedAgentCount(registry) {
691
+ if (!registry)
699
692
  return 0;
700
- return snapshot.agents.filter((agent) => agent.available !== false).length;
693
+ return registry.agents.filter((agent) => agent.available !== false).length;
701
694
  }
702
695
  let allowAgentRuns = installedAgentCount(agents) > 0;
703
696
  while (agents &&
@@ -713,7 +706,7 @@ async function runWizard(args) {
713
706
  break;
714
707
  }
715
708
  // decision === "rerun"
716
- agents = await fetchAgentSnapshot(conn);
709
+ agents = await fetchAgentState(conn);
717
710
  allowAgentRuns = installedAgentCount(agents) > 0;
718
711
  }
719
712
  if (agents && agents.engineSupportsAgents && installedAgentCount(agents) > 0) {
@@ -724,7 +717,7 @@ async function runWizard(args) {
724
717
  //
725
718
  // Custom agents whose CLI is no longer on PATH carry `available: false`
726
719
  // — show them in a hint instead of as selectable choices so the picker
727
- // does not let the user pick something the engine cannot run.
720
+ // does not let the user pick something the local service cannot run.
728
721
  const stale = agents.agents.filter((agent) => agent.available === false);
729
722
  if (stale.length > 0) {
730
723
  const names = stale.map((agent) => agent.display_name || agent.name).join(", ");
@@ -756,14 +749,14 @@ async function runWizard(args) {
756
749
  p.outro("Bye.");
757
750
  return;
758
751
  }
759
- agents = await fetchAgentSnapshot(conn);
752
+ agents = await fetchAgentState(conn);
760
753
  }
761
754
  else if (choice !== agents.defaultAgent) {
762
755
  // Switch active agent before proceeding. Reuse the existing CLI to
763
756
  // sweep the role-map's `general` row + any role pinned to the
764
757
  // previous active.
765
758
  await spawnInterf(["agents", "use", String(choice)]);
766
- agents = await fetchAgentSnapshot(conn);
759
+ agents = await fetchAgentState(conn);
767
760
  }
768
761
  if (agents && agents.defaultAgent) {
769
762
  console.log(chalk.dim(` Active: ${agents.defaultAgent} · roles default to ${agents.defaultAgent}`));