@interf/compiler 0.22.2 → 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 +175 -234
  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 +39 -31
  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/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  415. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  416. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_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,91 @@
1
+ /**
2
+ * Runtime read-side caches.
3
+ *
4
+ * The local service runtime fronts a filesystem-backed model: every
5
+ * "list" or "get" call walks `.interf/runtime/...`, parses each JSON
6
+ * record through Zod, and returns the typed shape. Polling clients
7
+ * (Interf Desktop renderer, CLI status loops) hit those endpoints multiple times
8
+ * per second; on instances with hundreds of Build / benchmark runs this
9
+ * shows up as the dominant CPU cost.
10
+ *
11
+ * The caches here memoize the parsed-and-validated results. Each cache
12
+ * is keyed by Project data directory so independent Projects do
13
+ * not cross-pollinate, and each cache exposes both a read path (`get(...)`) and an explicit
14
+ * invalidation hook (`invalidate(...)`). The runtime calls
15
+ * `invalidate*` whenever it writes, so the next read repopulates from
16
+ * disk. Invalidation is intentionally broad (per-Project, not
17
+ * per-record) — staleness is the only correctness bug worth avoiding,
18
+ * and per-record invalidation introduces fan-out without measurably
19
+ * lowering recompute cost.
20
+ */
21
+ /**
22
+ * Per-(Project data directory, project) cache for Build records, plus a
23
+ * runId -> project index so `getBuildRun(runId)` can resolve to
24
+ * the owning Project without scanning every Project's runs.
25
+ */
26
+ export declare class RunListingCache<TRecord> {
27
+ /** projectDataDir -> project id -> records (newest-first sorted). */
28
+ private byProjectRoot;
29
+ /** projectDataDir -> runId -> project. */
30
+ private runIndex;
31
+ get(projectDataDir: string, project: string, fill: () => TRecord[], runIdOf: (record: TRecord) => string): TRecord[];
32
+ /** Look up which project owns this runId, if known. */
33
+ projectFor(projectDataDir: string, runId: string): string | null;
34
+ /** Invalidate a single project's cached records and id index. */
35
+ invalidateProject(projectDataDir: string, project: string): void;
36
+ /** Drop everything for a Project data directory (e.g. after a reset). */
37
+ invalidateProjectRoot(projectDataDir: string): void;
38
+ }
39
+ /**
40
+ * Per-(Project data directory, project) readiness cache. Readiness joins build
41
+ * runs, benchmark runs, and the Project config; it
42
+ * is computed on every poll. The cache invalidates when the runtime
43
+ * writes any of those underlying objects for a given project.
44
+ */
45
+ export declare class ReadinessCache<TReadiness> {
46
+ private byProjectRoot;
47
+ get(projectDataDir: string, project: string, compute: () => TReadiness): TReadiness;
48
+ invalidateProject(projectDataDir: string, project: string): void;
49
+ invalidateProjectRoot(projectDataDir: string): void;
50
+ }
51
+ /**
52
+ * Source-folder listing cache keyed by `(cacheKey, folderRootMtime)`.
53
+ * `cacheKey` is the slot identifier; `folderPath` is the directory the
54
+ * cache stats for an mtime probe. UI polling is the hot path; CLI
55
+ * commands rarely hit the same path twice in <2s, hence the short TTL
56
+ * fallback.
57
+ */
58
+ export declare class MtimeListingCache<TList> {
59
+ private static readonly TTL_MS;
60
+ private cache;
61
+ get(cacheKey: string, folderPath: string, fill: () => TList): TList;
62
+ invalidate(cacheKey: string): void;
63
+ invalidateAll(): void;
64
+ }
65
+ /**
66
+ * Build Plan listing cache keyed by the joined mtimes of the
67
+ * bundled / user-library / Project-local Build Plan package roots. If
68
+ * any of those ticks (a new local Build Plan package, an edit to the user library, etc.) the cache
69
+ * misses and we re-resolve.
70
+ */
71
+ export declare class BuildPlanListingCache<TList> {
72
+ private cache;
73
+ get(cacheKey: string, rootPaths: string[], fill: () => TList): TList;
74
+ invalidate(cacheKey: string): void;
75
+ invalidateAll(): void;
76
+ }
77
+ /**
78
+ * Per-Project source-state cache.
79
+ *
80
+ * Computing the file index hash requires reading every source file's first
81
+ * 64KB; on Projects with thousands of files this is the dominant cost of a
82
+ * drift check. The cache keys by Project id and invalidates on Build
83
+ * completion (which produces a new Context Graph the drift verdict compares to).
84
+ */
85
+ export declare class ProjectSourceStateCache<TState> {
86
+ private byProjectId;
87
+ get(projectId: string, compute: () => TState): TState;
88
+ set(projectId: string, value: TState): void;
89
+ invalidateProject(projectId: string): void;
90
+ invalidateAll(): void;
91
+ }
@@ -4,16 +4,16 @@
4
4
  * The local service runtime fronts a filesystem-backed model: every
5
5
  * "list" or "get" call walks `.interf/runtime/...`, parses each JSON
6
6
  * record through Zod, and returns the typed shape. Polling clients
7
- * (Interf UI, CLI status loops) hit those endpoints multiple times
8
- * per second; on instances with hundreds of build / test runs this
7
+ * (Interf Desktop renderer, CLI status loops) hit those endpoints multiple times
8
+ * per second; on instances with hundreds of Build / benchmark runs this
9
9
  * shows up as the dominant CPU cost.
10
10
  *
11
11
  * The caches here memoize the parsed-and-validated results. Each cache
12
- * is keyed by Preparation data directory so independent Preparations do
12
+ * is keyed by Project data directory so independent Projects do
13
13
  * not cross-pollinate, and each cache exposes both a read path (`get(...)`) and an explicit
14
14
  * invalidation hook (`invalidate(...)`). The runtime calls
15
15
  * `invalidate*` whenever it writes, so the next read repopulates from
16
- * disk. Invalidation is intentionally broad (per-preparation, not
16
+ * disk. Invalidation is intentionally broad (per-Project, not
17
17
  * per-record) — staleness is the only correctness bug worth avoiding,
18
18
  * and per-record invalidation introduces fan-out without measurably
19
19
  * lowering recompute cost.
@@ -21,101 +21,101 @@
21
21
  import { existsSync, statSync } from "node:fs";
22
22
  import { resolve } from "node:path";
23
23
  /**
24
- * Per-(Preparation data directory, preparation) cache for Build run records, plus a
25
- * runId -> preparation index so `getBuildRun(runId)` can resolve to
26
- * the owning preparation without scanning every preparation's runs.
24
+ * Per-(Project data directory, project) cache for Build records, plus a
25
+ * runId -> project index so `getBuildRun(runId)` can resolve to
26
+ * the owning Project without scanning every Project's runs.
27
27
  */
28
28
  export class RunListingCache {
29
- /** prepDataDir -> preparation -> records (newest-first sorted). */
30
- byPreparationRoot = new Map();
31
- /** prepDataDir -> runId -> preparation. */
29
+ /** projectDataDir -> project id -> records (newest-first sorted). */
30
+ byProjectRoot = new Map();
31
+ /** projectDataDir -> runId -> project. */
32
32
  runIndex = new Map();
33
- get(prepDataDir, preparation, fill, runIdOf) {
34
- const wsKey = resolve(prepDataDir);
35
- let bucket = this.byPreparationRoot.get(wsKey);
33
+ get(projectDataDir, project, fill, runIdOf) {
34
+ const wsKey = resolve(projectDataDir);
35
+ let bucket = this.byProjectRoot.get(wsKey);
36
36
  if (!bucket) {
37
37
  bucket = new Map();
38
- this.byPreparationRoot.set(wsKey, bucket);
38
+ this.byProjectRoot.set(wsKey, bucket);
39
39
  }
40
- const cached = bucket.get(preparation);
40
+ const cached = bucket.get(project);
41
41
  if (cached)
42
42
  return cached;
43
43
  const fresh = fill();
44
- bucket.set(preparation, fresh);
44
+ bucket.set(project, fresh);
45
45
  let index = this.runIndex.get(wsKey);
46
46
  if (!index) {
47
47
  index = new Map();
48
48
  this.runIndex.set(wsKey, index);
49
49
  }
50
50
  for (const record of fresh) {
51
- index.set(runIdOf(record), preparation);
51
+ index.set(runIdOf(record), project);
52
52
  }
53
53
  return fresh;
54
54
  }
55
- /** Look up which preparation owns this runId, if known. */
56
- preparationFor(prepDataDir, runId) {
57
- const wsKey = resolve(prepDataDir);
55
+ /** Look up which project owns this runId, if known. */
56
+ projectFor(projectDataDir, runId) {
57
+ const wsKey = resolve(projectDataDir);
58
58
  return this.runIndex.get(wsKey)?.get(runId) ?? null;
59
59
  }
60
- /** Invalidate a single preparation's cached records and id index. */
61
- invalidatePreparation(prepDataDir, preparation) {
62
- const wsKey = resolve(prepDataDir);
63
- const bucket = this.byPreparationRoot.get(wsKey);
60
+ /** Invalidate a single project's cached records and id index. */
61
+ invalidateProject(projectDataDir, project) {
62
+ const wsKey = resolve(projectDataDir);
63
+ const bucket = this.byProjectRoot.get(wsKey);
64
64
  if (bucket) {
65
- bucket.delete(preparation);
65
+ bucket.delete(project);
66
66
  if (bucket.size === 0)
67
- this.byPreparationRoot.delete(wsKey);
67
+ this.byProjectRoot.delete(wsKey);
68
68
  }
69
69
  const index = this.runIndex.get(wsKey);
70
70
  if (index) {
71
71
  for (const [runId, owner] of index) {
72
- if (owner === preparation)
72
+ if (owner === project)
73
73
  index.delete(runId);
74
74
  }
75
75
  if (index.size === 0)
76
76
  this.runIndex.delete(wsKey);
77
77
  }
78
78
  }
79
- /** Drop everything for a Preparation data directory (e.g. after a reset). */
80
- invalidatePreparationRoot(prepDataDir) {
81
- const wsKey = resolve(prepDataDir);
82
- this.byPreparationRoot.delete(wsKey);
79
+ /** Drop everything for a Project data directory (e.g. after a reset). */
80
+ invalidateProjectRoot(projectDataDir) {
81
+ const wsKey = resolve(projectDataDir);
82
+ this.byProjectRoot.delete(wsKey);
83
83
  this.runIndex.delete(wsKey);
84
84
  }
85
85
  }
86
86
  /**
87
- * Per-(Preparation data directory, preparation) readiness cache. Readiness joins build
88
- * runs, test runs, readiness-check runs, and the preparation config; it
87
+ * Per-(Project data directory, project) readiness cache. Readiness joins build
88
+ * runs, benchmark runs, and the Project config; it
89
89
  * is computed on every poll. The cache invalidates when the runtime
90
- * writes any of those underlying objects for a given preparation.
90
+ * writes any of those underlying objects for a given project.
91
91
  */
92
92
  export class ReadinessCache {
93
- byPreparationRoot = new Map();
94
- get(prepDataDir, preparation, compute) {
95
- const wsKey = resolve(prepDataDir);
96
- let bucket = this.byPreparationRoot.get(wsKey);
93
+ byProjectRoot = new Map();
94
+ get(projectDataDir, project, compute) {
95
+ const wsKey = resolve(projectDataDir);
96
+ let bucket = this.byProjectRoot.get(wsKey);
97
97
  if (!bucket) {
98
98
  bucket = new Map();
99
- this.byPreparationRoot.set(wsKey, bucket);
99
+ this.byProjectRoot.set(wsKey, bucket);
100
100
  }
101
- const cached = bucket.get(preparation);
101
+ const cached = bucket.get(project);
102
102
  if (cached !== undefined)
103
103
  return cached;
104
104
  const fresh = compute();
105
- bucket.set(preparation, fresh);
105
+ bucket.set(project, fresh);
106
106
  return fresh;
107
107
  }
108
- invalidatePreparation(prepDataDir, preparation) {
109
- const wsKey = resolve(prepDataDir);
110
- const bucket = this.byPreparationRoot.get(wsKey);
108
+ invalidateProject(projectDataDir, project) {
109
+ const wsKey = resolve(projectDataDir);
110
+ const bucket = this.byProjectRoot.get(wsKey);
111
111
  if (bucket) {
112
- bucket.delete(preparation);
112
+ bucket.delete(project);
113
113
  if (bucket.size === 0)
114
- this.byPreparationRoot.delete(wsKey);
114
+ this.byProjectRoot.delete(wsKey);
115
115
  }
116
116
  }
117
- invalidatePreparationRoot(prepDataDir) {
118
- this.byPreparationRoot.delete(resolve(prepDataDir));
117
+ invalidateProjectRoot(projectDataDir) {
118
+ this.byProjectRoot.delete(resolve(projectDataDir));
119
119
  }
120
120
  }
121
121
  /**
@@ -155,7 +155,7 @@ export class MtimeListingCache {
155
155
  }
156
156
  /**
157
157
  * Build Plan listing cache keyed by the joined mtimes of the
158
- * bundled / user-library / Preparation-local Build Plan package roots. If
158
+ * bundled / user-library / Project-local Build Plan package roots. If
159
159
  * any of those ticks (a new local Build Plan package, an edit to the user library, etc.) the cache
160
160
  * misses and we re-resolve.
161
161
  */
@@ -189,3 +189,31 @@ function safeStat(path) {
189
189
  return null;
190
190
  }
191
191
  }
192
+ /**
193
+ * Per-Project source-state cache.
194
+ *
195
+ * Computing the file index hash requires reading every source file's first
196
+ * 64KB; on Projects with thousands of files this is the dominant cost of a
197
+ * drift check. The cache keys by Project id and invalidates on Build
198
+ * completion (which produces a new Context Graph the drift verdict compares to).
199
+ */
200
+ export class ProjectSourceStateCache {
201
+ byProjectId = new Map();
202
+ get(projectId, compute) {
203
+ const cached = this.byProjectId.get(projectId);
204
+ if (cached !== undefined)
205
+ return cached;
206
+ const fresh = compute();
207
+ this.byProjectId.set(projectId, fresh);
208
+ return fresh;
209
+ }
210
+ set(projectId, value) {
211
+ this.byProjectId.set(projectId, value);
212
+ }
213
+ invalidateProject(projectId) {
214
+ this.byProjectId.delete(projectId);
215
+ }
216
+ invalidateAll() {
217
+ this.byProjectId.clear();
218
+ }
219
+ }
@@ -7,6 +7,8 @@
7
7
  * compose these without learning the resource shape.
8
8
  */
9
9
  import { type BuildRun, type InterfRunEvent } from "./execution/lib/schema.js";
10
- import { type LocalJobEvent, type LocalJobRunResource } from "./lib/schema.js";
10
+ import { type LocalJobEvent, type LocalJobRunResource } from "./schemas/index.js";
11
+ export declare const INTERRUPTED_BUILD_RUN_REASON = "Build interrupted because the local service stopped before the run reached a terminal state.";
12
+ export declare function reconcileBuildRunTerminalStatus(run: BuildRun): BuildRun;
11
13
  export declare function applyEventToBuildRun(run: BuildRun, event: InterfRunEvent): BuildRun;
12
14
  export declare function applyEventToLocalJob(run: LocalJobRunResource, event: LocalJobEvent): LocalJobRunResource;
@@ -1,4 +1,47 @@
1
1
  import { uniqueArtifacts } from "./run-observability.js";
2
+ export const INTERRUPTED_BUILD_RUN_REASON = "Build interrupted because the local service stopped before the run reached a terminal state.";
3
+ function isRecoverableCancellation(event) {
4
+ return event.type === "run.cancelled" && event.reason === INTERRUPTED_BUILD_RUN_REASON;
5
+ }
6
+ export function reconcileBuildRunTerminalStatus(run) {
7
+ let status = run.status;
8
+ let finishedAt = run.finished_at;
9
+ let stickyCancellationAt = null;
10
+ for (const event of run.events) {
11
+ if (event.type === "run.cancelled") {
12
+ status = "cancelled";
13
+ finishedAt = event.timestamp;
14
+ stickyCancellationAt = isRecoverableCancellation(event) ? null : event.timestamp;
15
+ continue;
16
+ }
17
+ if (event.type === "run.completed") {
18
+ if (stickyCancellationAt) {
19
+ status = "cancelled";
20
+ finishedAt = stickyCancellationAt;
21
+ }
22
+ else {
23
+ status = "succeeded";
24
+ finishedAt = event.timestamp;
25
+ }
26
+ continue;
27
+ }
28
+ if (event.type === "run.failed") {
29
+ if (stickyCancellationAt) {
30
+ status = "cancelled";
31
+ finishedAt = stickyCancellationAt;
32
+ }
33
+ else {
34
+ status = "failed";
35
+ finishedAt = event.timestamp;
36
+ }
37
+ }
38
+ }
39
+ return {
40
+ ...run,
41
+ status,
42
+ ...(finishedAt ? { finished_at: finishedAt } : {}),
43
+ };
44
+ }
2
45
  export function applyEventToBuildRun(run, event) {
3
46
  const now = event.timestamp;
4
47
  const stageFor = (stageId) => {
@@ -32,6 +75,7 @@ export function applyEventToBuildRun(run, event) {
32
75
  started_at: now,
33
76
  stage_index: event.stage_index,
34
77
  stage_total: event.stage_total,
78
+ ...(event.logs ? { logs: event.logs } : {}),
35
79
  });
36
80
  break;
37
81
  case "artifact.written": {
@@ -41,15 +85,15 @@ export function applyEventToBuildRun(run, event) {
41
85
  });
42
86
  break;
43
87
  }
44
- case "proof.updated":
88
+ case "evidence.updated":
45
89
  if (event.stage_id) {
46
90
  updateStage(event.stage_id, {
47
- latest_proof: event.proof,
91
+ latest_evidence: event.evidence,
48
92
  });
49
93
  }
50
94
  return {
51
95
  ...run,
52
- latest_proof: event.proof,
96
+ latest_evidence: event.evidence,
53
97
  events: [...run.events, event],
54
98
  };
55
99
  case "log.appended":
@@ -71,28 +115,20 @@ export function applyEventToBuildRun(run, event) {
71
115
  });
72
116
  break;
73
117
  case "run.completed":
74
- return {
118
+ return reconcileBuildRunTerminalStatus({
75
119
  ...run,
76
- // Once cancelled, the cancelled status is sticky; the handler may
77
- // still emit a completion event after the cancel signal has landed.
78
- status: run.status === "cancelled" ? "cancelled" : "succeeded",
79
- finished_at: run.finished_at ?? now,
80
120
  events: [...run.events, event],
81
- };
121
+ });
82
122
  case "run.failed":
83
- return {
123
+ return reconcileBuildRunTerminalStatus({
84
124
  ...run,
85
- status: run.status === "cancelled" ? "cancelled" : "failed",
86
- finished_at: run.finished_at ?? now,
87
125
  events: [...run.events, event],
88
- };
126
+ });
89
127
  case "run.cancelled":
90
- return {
128
+ return reconcileBuildRunTerminalStatus({
91
129
  ...run,
92
- status: "cancelled",
93
- finished_at: run.finished_at ?? now,
94
130
  events: [...run.events, event],
95
- };
131
+ });
96
132
  case "readiness.updated":
97
133
  return {
98
134
  ...run,
@@ -0,0 +1,22 @@
1
+ import { type LocalExecutorStatus } from "./schemas/index.js";
2
+ import type { AgentPrefs, AgentRecord, RoleMap } from "../contracts/lib/schema.js";
3
+ export interface AgentsRegistryState {
4
+ agents: AgentRecord[];
5
+ role_map: RoleMap;
6
+ active_agent: AgentRecord | null;
7
+ }
8
+ export interface AgentsRegistryRoleState {
9
+ role_map: RoleMap;
10
+ active_agent: AgentRecord | null;
11
+ }
12
+ export declare function getExecutorStatus(): LocalExecutorStatus;
13
+ export declare function selectExecutor(requestValue: unknown): LocalExecutorStatus;
14
+ export declare function getAgentsRegistry(): AgentsRegistryState;
15
+ export declare function registerCustomAgent(input: {
16
+ name: string;
17
+ display_name: string;
18
+ command: string;
19
+ }): AgentsRegistryState;
20
+ export declare function unregisterCustomAgent(name: string): AgentsRegistryState;
21
+ export declare function patchAgentsRoleMap(patch: Record<string, string>): AgentsRegistryRoleState;
22
+ export declare function setAgentPrefs(name: string, prefs: AgentPrefs): AgentsRegistryState;
@@ -0,0 +1,131 @@
1
+ import { detectAgents, resolveAgent, supportsAutomatedRuns, } from "./agents/lib/detection.js";
2
+ import { loadUserConfig, saveUserConfig, } from "./agents/lib/user-config.js";
3
+ import { AGENTS } from "./agents/lib/constants.js";
4
+ import { loadAgentsRegistry, patchRoleMap, registerCustomAgent as registerCustomAgentRecord, setActiveAgent, setAgentPrefs as setAgentPrefsRecord, unregisterCustomAgent as unregisterCustomAgentRecord, } from "./agents/registry.js";
5
+ import { LocalExecutorSelectRequestSchema, LocalExecutorStatusSchema, } from "./schemas/index.js";
6
+ function configuredAgentName() {
7
+ const config = loadUserConfig();
8
+ if (!config)
9
+ return null;
10
+ const configured = AGENTS.find((agent) => agent.command === config.agentCommand) ??
11
+ AGENTS.find((agent) => agent.name === config.agent) ??
12
+ AGENTS.find((agent) => agent.displayName === config.agent);
13
+ return configured?.name ?? null;
14
+ }
15
+ function detectedExecutorOptions(currentAgentName) {
16
+ return detectAgents()
17
+ .filter(supportsAutomatedRuns)
18
+ .map((agent) => ({
19
+ name: agent.name,
20
+ display_name: agent.displayName,
21
+ command: agent.command,
22
+ current: agent.name === currentAgentName,
23
+ }));
24
+ }
25
+ export function getExecutorStatus() {
26
+ const checkedAt = new Date().toISOString();
27
+ try {
28
+ const resolved = resolveAgent();
29
+ const currentName = resolved.agent?.name ?? configuredAgentName();
30
+ const availableExecutors = detectedExecutorOptions(currentName);
31
+ if (!resolved.agent) {
32
+ return LocalExecutorStatusSchema.parse({
33
+ kind: "interf-local-executor-status",
34
+ version: 1,
35
+ status: "unavailable",
36
+ checked_at: checkedAt,
37
+ executor: null,
38
+ available_executors: availableExecutors,
39
+ message: resolved.error ?? "No supported local coding agent is configured.",
40
+ });
41
+ }
42
+ return LocalExecutorStatusSchema.parse({
43
+ kind: "interf-local-executor-status",
44
+ version: 1,
45
+ status: "connected",
46
+ checked_at: checkedAt,
47
+ executor: {
48
+ name: resolved.agent.name,
49
+ display_name: resolved.agent.displayName,
50
+ command: resolved.agent.command,
51
+ },
52
+ available_executors: availableExecutors.length > 0
53
+ ? availableExecutors
54
+ : [{
55
+ name: resolved.agent.name,
56
+ display_name: resolved.agent.displayName,
57
+ command: resolved.agent.command,
58
+ current: true,
59
+ }],
60
+ message: `${resolved.agent.displayName} is configured for local Interf actions.`,
61
+ });
62
+ }
63
+ catch (error) {
64
+ const currentName = configuredAgentName();
65
+ return LocalExecutorStatusSchema.parse({
66
+ kind: "interf-local-executor-status",
67
+ version: 1,
68
+ status: "unavailable",
69
+ checked_at: checkedAt,
70
+ executor: null,
71
+ available_executors: detectedExecutorOptions(currentName),
72
+ message: error instanceof Error ? error.message : String(error),
73
+ });
74
+ }
75
+ }
76
+ export function selectExecutor(requestValue) {
77
+ const request = LocalExecutorSelectRequestSchema.parse(requestValue);
78
+ const selected = detectAgents()
79
+ .filter(supportsAutomatedRuns)
80
+ .find((agent) => agent.name === request.agent);
81
+ if (!selected) {
82
+ throw new Error(`Local agent "${request.agent}" is not detected or cannot run Interf runs.`);
83
+ }
84
+ const current = loadUserConfig();
85
+ saveUserConfig({
86
+ agent: selected.name,
87
+ agentCommand: selected.command,
88
+ skillsInstalled: current?.skillsInstalled ?? false,
89
+ initialized: current?.initialized ?? new Date().toISOString(),
90
+ });
91
+ // Mirror the selection into the role-map. `setActiveAgent` also sweeps
92
+ // any role still pointing at the previous active so single-active-agent
93
+ // setups stay coherent across CLIs.
94
+ try {
95
+ setActiveAgent(selected.name);
96
+ }
97
+ catch {
98
+ // Best effort — the registry update is convenience for the new
99
+ // role-aware path. The user_config.json write above is the source of
100
+ // truth for the previous `getExecutorStatus()`.
101
+ }
102
+ return getExecutorStatus();
103
+ }
104
+ export function getAgentsRegistry() {
105
+ const registry = loadAgentsRegistry();
106
+ return {
107
+ agents: registry.agents,
108
+ role_map: registry.roleMap,
109
+ active_agent: registry.activeAgent,
110
+ };
111
+ }
112
+ export function registerCustomAgent(input) {
113
+ registerCustomAgentRecord(input);
114
+ return getAgentsRegistry();
115
+ }
116
+ export function unregisterCustomAgent(name) {
117
+ unregisterCustomAgentRecord(name);
118
+ return getAgentsRegistry();
119
+ }
120
+ export function patchAgentsRoleMap(patch) {
121
+ patchRoleMap(patch);
122
+ const registry = loadAgentsRegistry();
123
+ return {
124
+ role_map: registry.roleMap,
125
+ active_agent: registry.activeAgent,
126
+ };
127
+ }
128
+ export function setAgentPrefs(name, prefs) {
129
+ setAgentPrefsRecord(name, prefs);
130
+ return getAgentsRegistry();
131
+ }
@@ -0,0 +1,13 @@
1
+ import { type LocalJobEvent, type LocalJobRunResource } from "./schemas/index.js";
2
+ import type { LocalServiceJobRunContext, LocalServiceRuntime } from "./runtime.js";
3
+ export declare function listJobs(projectDataDir: string): LocalJobRunResource[];
4
+ export declare function getJob(projectDataDir: string, runId: string): LocalJobRunResource | null;
5
+ export declare function getJobEvents(projectDataDir: string, runId: string): LocalJobEvent[] | null;
6
+ export declare function createJobRun(runtime: LocalServiceRuntime, projectDataDir: string, requestValue: unknown): LocalJobRunResource;
7
+ export declare function appendJobRunEvent(runtime: LocalServiceRuntime, projectDataDir: string, runId: string, requestValue: unknown): LocalJobRunResource | null;
8
+ export declare function createBenchmarkQuestionDraftRun(runtime: LocalServiceRuntime, projectDataDir: string, requestValue: unknown): Promise<LocalJobRunResource>;
9
+ export declare function createBuildPlanAuthoringRun(runtime: LocalServiceRuntime, projectDataDir: string, requestValue: unknown, jobType?: "build-plan-draft" | "build-plan-improvement"): Promise<LocalJobRunResource>;
10
+ export declare function jobRunContext(runtime: LocalServiceRuntime, projectDataDir: string, runId: string): LocalServiceJobRunContext;
11
+ export declare function writeJobRun(runtime: LocalServiceRuntime, projectDataDir: string, run: LocalJobRunResource): void;
12
+ export declare function setJobRunResult(runtime: LocalServiceRuntime, projectDataDir: string, runId: string, result: unknown): void;
13
+ export declare function finalizeInterruptedJobRuns(runtime: LocalServiceRuntime, projectDataDir: string): void;