@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,63 @@
1
+ import type { IncomingMessage } from "node:http";
2
+ import type { LocalServiceRuntime } from "../runtime.js";
3
+ import { type ValidatedAccessToken } from "../auth/jwt-validator.js";
4
+ /** Generate a fresh per-instance bearer token. */
5
+ export declare function createLocalServiceAuthToken(): string;
6
+ export interface AllowedOrigins {
7
+ hostnames: string[];
8
+ ports: number[];
9
+ hostUrls: string[];
10
+ }
11
+ /**
12
+ * Build the per-instance CORS / Origin allowlist. Only the loopback
13
+ * hostnames bound to the active port count as same-origin. `null` and
14
+ * absent Origin are also accepted (Electron / file:// / CLI tools).
15
+ */
16
+ export declare function buildAllowedOrigins(host: string, port: number): AllowedOrigins;
17
+ export declare function originHeaderValue(req: IncomingMessage): string | null;
18
+ export declare function isOriginAllowed(origin: string | null, allowed: AllowedOrigins): boolean;
19
+ export declare function corsHeadersFor(origin: string | null, allowed: AllowedOrigins): Record<string, string>;
20
+ export declare function isMutatingMethod(method: string | undefined): boolean;
21
+ /**
22
+ * Return whether a request is one of the tokenless local discovery reads.
23
+ *
24
+ * The body of these routes must stay small and must not include Project,
25
+ * Source, Context Graph, trace, or evidence state.
26
+ */
27
+ export declare function isPublicDiscoveryRead(method: string | undefined, path: string): boolean;
28
+ /**
29
+ * Return whether the local-service dispatcher must authenticate this request.
30
+ *
31
+ * Product mode protects every non-discovery `/v1` route, including read-only
32
+ * Project, Source, Context Graph, trace, evidence, account, run, and action
33
+ * resources. Mutating routes are always protected.
34
+ */
35
+ export declare function requiresLocalServiceAuthorization(method: string | undefined, path: string): boolean;
36
+ /**
37
+ * Validate the bearer token on a protected local request. Returns true when:
38
+ * - the runtime has no token (test harness mode), or
39
+ * - the request includes `Authorization: Bearer <token>` matching the runtime token.
40
+ */
41
+ export declare function isAuthorizedLocalBearer(req: IncomingMessage, runtime: LocalServiceRuntime): boolean;
42
+ /** @deprecated use `isAuthorizedLocalBearer`. */
43
+ export declare const isAuthorizedMutation: typeof isAuthorizedLocalBearer;
44
+ export type BearerJwtValidationResult = {
45
+ ok: true;
46
+ account: ValidatedAccessToken;
47
+ } | {
48
+ ok: false;
49
+ reason: "missing" | "malformed" | "invalid";
50
+ message?: string;
51
+ };
52
+ /**
53
+ * Validate a `Authorization: Bearer <jwt>` header against the WorkOS JWKS.
54
+ *
55
+ * Used by the cloud engine binding (`authMode: "jwt"`). The loopback engine
56
+ * stays on `isAuthorizedMutation` — the loopback bind + CORS allowlist + hex
57
+ * bearer are sufficient there, and avoiding the JWKS HTTP fetch keeps the
58
+ * local dev loop snappy.
59
+ *
60
+ * On `ok: true`, the validated claims are returned so the dispatcher can
61
+ * attach them to the request for downstream handlers.
62
+ */
63
+ export declare function validateBearerJwt(req: IncomingMessage): Promise<BearerJwtValidationResult>;
@@ -0,0 +1,181 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { LOCAL_SERVICE_LOOPBACK_HOSTS } from "../schemas/index.js";
3
+ import { JwtValidationError, validateAccessToken, } from "../auth/jwt-validator.js";
4
+ /** HTTP methods that require an authenticated bearer token + Origin guard. */
5
+ const MUTATING_METHODS = new Set(["POST", "PUT", "PATCH", "DELETE"]);
6
+ /** Read-only probes agents may use before authorization. */
7
+ const PUBLIC_DISCOVERY_GET_PATHS = new Set(["/health", "/v1", "/v1/instance", "/v1/openapi.json"]);
8
+ /** Generate a fresh per-instance bearer token. */
9
+ export function createLocalServiceAuthToken() {
10
+ return randomBytes(32).toString("hex");
11
+ }
12
+ /**
13
+ * Build the per-instance CORS / Origin allowlist. Only the loopback
14
+ * hostnames bound to the active port count as same-origin. `null` and
15
+ * absent Origin are also accepted (Electron / file:// / CLI tools).
16
+ */
17
+ export function buildAllowedOrigins(host, port) {
18
+ const hostnames = Array.from(new Set([host, ...LOCAL_SERVICE_LOOPBACK_HOSTS]));
19
+ // Dev mode: also allow the Next.js dev ports so the UI dev server can
20
+ // hit the engine cross-origin. Defaults to 3000,3001 — covers the
21
+ // standard `desktop:renderer:dev` + a previous A/B worktree. Override with the
22
+ // `INTERF_DEV_ORIGINS_PORTS` env var (comma-separated).
23
+ const devPortsRaw = process.env.INTERF_DEV_ORIGINS_PORTS ?? "3000,3001";
24
+ const devPorts = devPortsRaw
25
+ .split(",")
26
+ .map((raw) => Number.parseInt(raw.trim(), 10))
27
+ .filter((value) => Number.isInteger(value) && value > 0 && value !== port);
28
+ const ports = Array.from(new Set([port, ...devPorts]));
29
+ return {
30
+ hostnames,
31
+ ports,
32
+ hostUrls: hostnames.map((hostname) => {
33
+ const wrapped = hostname.includes(":") ? `[${hostname}]` : hostname;
34
+ return `http://${wrapped}:${port}`;
35
+ }),
36
+ };
37
+ }
38
+ export function originHeaderValue(req) {
39
+ const raw = req.headers.origin;
40
+ if (raw === undefined)
41
+ return null;
42
+ const value = Array.isArray(raw) ? raw[0] : raw;
43
+ if (typeof value !== "string")
44
+ return null;
45
+ const trimmed = value.trim();
46
+ return trimmed.length > 0 ? trimmed : null;
47
+ }
48
+ function authorizationHeaderValue(req) {
49
+ const raw = req.headers.authorization;
50
+ if (!raw)
51
+ return null;
52
+ const value = Array.isArray(raw) ? raw[0] : raw;
53
+ if (typeof value !== "string")
54
+ return null;
55
+ const trimmed = value.trim();
56
+ return trimmed.length > 0 ? trimmed : null;
57
+ }
58
+ export function isOriginAllowed(origin, allowed) {
59
+ if (origin === null)
60
+ return true; // CLI / Node fetch / native app — no Origin sent.
61
+ if (origin === "null")
62
+ return true; // Electron / sandboxed / file:// page.
63
+ if (origin === "zero://app" || origin === "zero://inline")
64
+ return true;
65
+ let parsed;
66
+ try {
67
+ parsed = new URL(origin);
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ if (parsed.protocol !== "http:" && parsed.protocol !== "https:")
73
+ return false;
74
+ const hostname = parsed.hostname.replace(/^\[|\]$/g, "");
75
+ if (!allowed.hostnames.includes(hostname))
76
+ return false;
77
+ // Default ports (no explicit port in URL) cannot be the local service.
78
+ if (!parsed.port)
79
+ return false;
80
+ const portNumber = Number.parseInt(parsed.port, 10);
81
+ if (!Number.isInteger(portNumber))
82
+ return false;
83
+ return allowed.ports.includes(portNumber);
84
+ }
85
+ export function corsHeadersFor(origin, allowed) {
86
+ if (!isOriginAllowed(origin, allowed))
87
+ return { vary: "origin" };
88
+ return {
89
+ "access-control-allow-origin": origin ?? allowed.hostUrls[0] ?? "",
90
+ "access-control-allow-credentials": "false",
91
+ "access-control-allow-methods": "GET,POST,PATCH,DELETE,OPTIONS",
92
+ "access-control-allow-headers": "content-type, authorization, x-interf-idempotency-key",
93
+ vary: "origin",
94
+ };
95
+ }
96
+ export function isMutatingMethod(method) {
97
+ return method !== undefined && MUTATING_METHODS.has(method.toUpperCase());
98
+ }
99
+ /**
100
+ * Return whether a request is one of the tokenless local discovery reads.
101
+ *
102
+ * The body of these routes must stay small and must not include Project,
103
+ * Source, Context Graph, trace, or evidence state.
104
+ */
105
+ export function isPublicDiscoveryRead(method, path) {
106
+ return method?.toUpperCase() === "GET" && PUBLIC_DISCOVERY_GET_PATHS.has(path);
107
+ }
108
+ /**
109
+ * Return whether the local-service dispatcher must authenticate this request.
110
+ *
111
+ * Product mode protects every non-discovery `/v1` route, including read-only
112
+ * Project, Source, Context Graph, trace, evidence, account, run, and action
113
+ * resources. Mutating routes are always protected.
114
+ */
115
+ export function requiresLocalServiceAuthorization(method, path) {
116
+ if (isMutatingMethod(method))
117
+ return true;
118
+ if (isPublicDiscoveryRead(method, path))
119
+ return false;
120
+ return method?.toUpperCase() === "GET" && path.startsWith("/v1");
121
+ }
122
+ /**
123
+ * Validate the bearer token on a protected local request. Returns true when:
124
+ * - the runtime has no token (test harness mode), or
125
+ * - the request includes `Authorization: Bearer <token>` matching the runtime token.
126
+ */
127
+ export function isAuthorizedLocalBearer(req, runtime) {
128
+ if (!runtime.authToken)
129
+ return true;
130
+ const authorization = authorizationHeaderValue(req);
131
+ if (!authorization)
132
+ return false;
133
+ const match = /^Bearer\s+([A-Za-z0-9._\-]+)$/.exec(authorization);
134
+ if (!match)
135
+ return false;
136
+ const presented = match[1];
137
+ if (!presented || presented.length !== runtime.authToken.length)
138
+ return false;
139
+ // Constant-time compare to avoid timing oracles.
140
+ let mismatch = 0;
141
+ for (let index = 0; index < runtime.authToken.length; index += 1) {
142
+ mismatch |= presented.charCodeAt(index) ^ runtime.authToken.charCodeAt(index);
143
+ }
144
+ return mismatch === 0;
145
+ }
146
+ /** @deprecated use `isAuthorizedLocalBearer`. */
147
+ export const isAuthorizedMutation = isAuthorizedLocalBearer;
148
+ /**
149
+ * Validate a `Authorization: Bearer <jwt>` header against the WorkOS JWKS.
150
+ *
151
+ * Used by the cloud engine binding (`authMode: "jwt"`). The loopback engine
152
+ * stays on `isAuthorizedMutation` — the loopback bind + CORS allowlist + hex
153
+ * bearer are sufficient there, and avoiding the JWKS HTTP fetch keeps the
154
+ * local dev loop snappy.
155
+ *
156
+ * On `ok: true`, the validated claims are returned so the dispatcher can
157
+ * attach them to the request for downstream handlers.
158
+ */
159
+ export async function validateBearerJwt(req) {
160
+ const authorization = authorizationHeaderValue(req);
161
+ if (!authorization)
162
+ return { ok: false, reason: "missing" };
163
+ const match = /^Bearer\s+(.+)$/.exec(authorization);
164
+ if (!match || !match[1])
165
+ return { ok: false, reason: "malformed" };
166
+ const token = match[1].trim();
167
+ if (token.length === 0)
168
+ return { ok: false, reason: "malformed" };
169
+ try {
170
+ const account = await validateAccessToken(token);
171
+ return { ok: true, account };
172
+ }
173
+ catch (error) {
174
+ const message = error instanceof JwtValidationError
175
+ ? error.message
176
+ : error instanceof Error
177
+ ? error.message
178
+ : String(error);
179
+ return { ok: false, reason: "invalid", message };
180
+ }
181
+ }
@@ -0,0 +1,27 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ /**
3
+ * Per-request response context. Carries the precomputed CORS headers so
4
+ * every helper call echoes the same allowlisted Origin.
5
+ *
6
+ * Default state is `NO_ORIGIN_RESPONSE_CONTEXT` — only `vary: origin`
7
+ * is emitted, no `access-control-allow-origin`, so a browser blocks the
8
+ * cross-origin response. The entry-point handler swaps in a context with
9
+ * `access-control-allow-origin` once it has validated the Origin header.
10
+ */
11
+ export interface ResponseContext {
12
+ cors: Record<string, string>;
13
+ }
14
+ export declare const NO_ORIGIN_RESPONSE_CONTEXT: ResponseContext;
15
+ export declare function attachResponseContext(res: ServerResponse, ctx: ResponseContext): void;
16
+ export declare function writeHeaders(res: ServerResponse, statusCode: number, contextOrHeaders?: ResponseContext | Record<string, string>, headers?: Record<string, string>): void;
17
+ export declare function sendJson(res: ServerResponse, statusCode: number, contextOrValue: ResponseContext | unknown, maybeValue?: unknown): void;
18
+ export declare function sendText(res: ServerResponse, statusCode: number, contextOrValue: ResponseContext | string, maybeValue?: string): void;
19
+ export declare function sendError(res: ServerResponse, statusCode: number, contextOrMessage: ResponseContext | string, maybeMessage?: string): void;
20
+ /**
21
+ * Route any thrown error to its proper response. EntitlementError gets its
22
+ * own status (402) and propagates `upgrade_hint` so clients can render an
23
+ * upgrade CTA. Everything else becomes a 400 with the message body.
24
+ */
25
+ export declare function sendErrorResponse(res: ServerResponse, error: unknown, fallbackStatus?: number): void;
26
+ export declare function readJsonBody(req: IncomingMessage): Promise<unknown>;
27
+ export declare function parseRequestUrl(req: IncomingMessage): URL;
@@ -0,0 +1,89 @@
1
+ import { LocalServiceErrorSchema } from "../schemas/index.js";
2
+ import { EntitlementError } from "../entitlement-guard.js";
3
+ export const NO_ORIGIN_RESPONSE_CONTEXT = { cors: { vary: "origin" } };
4
+ /** Stash slot on the response object that holds the per-request CORS headers. */
5
+ const RESPONSE_CONTEXT_KEY = Symbol.for("interf.localService.responseContext");
6
+ export function attachResponseContext(res, ctx) {
7
+ res[RESPONSE_CONTEXT_KEY] = ctx;
8
+ }
9
+ function activeResponseContext(res) {
10
+ const ctx = res[RESPONSE_CONTEXT_KEY];
11
+ return ctx ?? NO_ORIGIN_RESPONSE_CONTEXT;
12
+ }
13
+ export function writeHeaders(res, statusCode, contextOrHeaders, headers = {}) {
14
+ // Compatibility shim while call sites migrate. Older callers pass a
15
+ // plain headers record as the third argument; new callers thread a
16
+ // `ResponseContext`. When neither is supplied (or only headers are),
17
+ // we read the per-request context the entry-point handler stashed on
18
+ // the response.
19
+ const isContext = contextOrHeaders !== undefined && "cors" in contextOrHeaders;
20
+ const context = isContext ? contextOrHeaders : activeResponseContext(res);
21
+ const extraHeaders = isContext ? headers : (contextOrHeaders ?? {});
22
+ res.writeHead(statusCode, {
23
+ ...context.cors,
24
+ ...extraHeaders,
25
+ });
26
+ }
27
+ export function sendJson(res, statusCode, contextOrValue, maybeValue) {
28
+ const usingContext = contextOrValue !== null
29
+ && typeof contextOrValue === "object"
30
+ && "cors" in contextOrValue
31
+ && maybeValue !== undefined;
32
+ const context = usingContext ? contextOrValue : activeResponseContext(res);
33
+ const value = usingContext ? maybeValue : contextOrValue;
34
+ writeHeaders(res, statusCode, context, {
35
+ "content-type": "application/json; charset=utf-8",
36
+ });
37
+ res.end(`${JSON.stringify(value, null, 2)}\n`);
38
+ }
39
+ export function sendText(res, statusCode, contextOrValue, maybeValue) {
40
+ const usingContext = typeof contextOrValue === "object" && contextOrValue !== null && "cors" in contextOrValue;
41
+ const context = usingContext ? contextOrValue : activeResponseContext(res);
42
+ const value = usingContext ? (maybeValue ?? "") : contextOrValue;
43
+ writeHeaders(res, statusCode, context, {
44
+ "content-type": "text/plain; charset=utf-8",
45
+ });
46
+ res.end(value);
47
+ }
48
+ export function sendError(res, statusCode, contextOrMessage, maybeMessage) {
49
+ const usingContext = typeof contextOrMessage === "object" && contextOrMessage !== null && "cors" in contextOrMessage;
50
+ const context = usingContext ? contextOrMessage : activeResponseContext(res);
51
+ const message = usingContext ? (maybeMessage ?? "") : contextOrMessage;
52
+ sendJson(res, statusCode, context, LocalServiceErrorSchema.parse({
53
+ error: {
54
+ message,
55
+ },
56
+ }));
57
+ }
58
+ /**
59
+ * Route any thrown error to its proper response. EntitlementError gets its
60
+ * own status (402) and propagates `upgrade_hint` so clients can render an
61
+ * upgrade CTA. Everything else becomes a 400 with the message body.
62
+ */
63
+ export function sendErrorResponse(res, error, fallbackStatus = 400) {
64
+ if (error instanceof EntitlementError) {
65
+ sendJson(res, error.httpStatus, LocalServiceErrorSchema.parse({
66
+ error: {
67
+ message: error.message,
68
+ code: "entitlement-required",
69
+ upgrade_hint: error.upgradeHint,
70
+ },
71
+ }));
72
+ return;
73
+ }
74
+ const message = error instanceof Error ? error.message : String(error);
75
+ sendError(res, fallbackStatus, message);
76
+ }
77
+ export async function readJsonBody(req) {
78
+ const chunks = [];
79
+ for await (const chunk of req) {
80
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
81
+ }
82
+ const raw = Buffer.concat(chunks).toString("utf8").trim();
83
+ if (!raw)
84
+ return {};
85
+ return JSON.parse(raw);
86
+ }
87
+ export function parseRequestUrl(req) {
88
+ return new URL(req.url ?? "/", "http://127.0.0.1");
89
+ }
@@ -0,0 +1,30 @@
1
+ import type { BuildRunResource, LocalJobRunResource, RunObservabilityResource, VerifyRunResource } from "../schemas/index.js";
2
+ import type { LocalServiceRuntime } from "../runtime.js";
3
+ type InstanceBuildPlanResource = ReturnType<LocalServiceRuntime["listBuildPlans"]>[number];
4
+ export declare function listInstanceRuns(runtime: LocalServiceRuntime): RunObservabilityResource[];
5
+ export declare function findInstanceRun(runtime: LocalServiceRuntime, runId: string): RunObservabilityResource | null;
6
+ export declare function findInstanceJob(runtime: LocalServiceRuntime, runId: string): {
7
+ job: LocalJobRunResource;
8
+ projectDataDir: string;
9
+ } | null;
10
+ export declare function findInstanceBuildRun(runtime: LocalServiceRuntime, runId: string): {
11
+ run: BuildRunResource;
12
+ projectDataDir: string;
13
+ } | null;
14
+ export declare function findInstanceVerifyRun(runtime: LocalServiceRuntime, runId: string): {
15
+ run: VerifyRunResource;
16
+ projectDataDir: string;
17
+ } | null;
18
+ export declare function listInstanceBuildPlans(runtime: LocalServiceRuntime): InstanceBuildPlanResource[];
19
+ export declare function findInstanceBuildPlan(runtime: LocalServiceRuntime, buildPlanId: string): InstanceBuildPlanResource | null;
20
+ export declare function listInstanceBuildPlanRuns(runtime: LocalServiceRuntime, buildPlanId: string): RunObservabilityResource[];
21
+ /**
22
+ * Resolve the on-disk root path for a Build Plan id. Used by the
23
+ * `/v1/build-plans/<id>/files/<relpath>` route. Resolution order matches
24
+ * the runtime: project-draft (if a project id is supplied) → user
25
+ * library → built-in. Returns `null` when the Build Plan id resolves
26
+ * nowhere.
27
+ */
28
+ export declare function resolveBuildPlanPackageRoot(buildPlanId: string, projectDataDir?: string): string | null;
29
+ export declare function resolveInstanceBuildPlanPackageRoot(runtime: LocalServiceRuntime, buildPlanId: string): string | null;
30
+ export {};
@@ -0,0 +1,114 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { buildPlanDefinitionPath, builtinBuildPlanPackagePath, } from "../../build-plans/package/local-build-plans.js";
4
+ import { userBuildPlanExists, userBuildPlanPath, } from "../../build-plans/package/user-build-plans.js";
5
+ import { listStoredProjects } from "../project-store.js";
6
+ function projectDataDirsForInstance(runtime) {
7
+ return listStoredProjects().map((project) => project.projectDataDir);
8
+ }
9
+ export function listInstanceRuns(runtime) {
10
+ return projectDataDirsForInstance(runtime)
11
+ .flatMap((projectDataDir) => runtime.listRunObservability(projectDataDir))
12
+ .sort((left, right) => {
13
+ const leftMs = Date.parse(left.started_at ?? left.created_at ?? left.finished_at ?? "");
14
+ const rightMs = Date.parse(right.started_at ?? right.created_at ?? right.finished_at ?? "");
15
+ return (Number.isFinite(rightMs) ? rightMs : 0) - (Number.isFinite(leftMs) ? leftMs : 0);
16
+ });
17
+ }
18
+ export function findInstanceRun(runtime, runId) {
19
+ for (const projectDataDir of projectDataDirsForInstance(runtime)) {
20
+ const run = runtime.getRunObservability(projectDataDir, runId);
21
+ if (run)
22
+ return run;
23
+ }
24
+ return null;
25
+ }
26
+ export function findInstanceJob(runtime, runId) {
27
+ for (const projectDataDir of projectDataDirsForInstance(runtime)) {
28
+ const job = runtime.getJob(projectDataDir, runId);
29
+ if (job)
30
+ return { job, projectDataDir };
31
+ }
32
+ return null;
33
+ }
34
+ export function findInstanceBuildRun(runtime, runId) {
35
+ for (const projectDataDir of projectDataDirsForInstance(runtime)) {
36
+ const run = runtime.getBuildRun(projectDataDir, runId);
37
+ if (run)
38
+ return { run, projectDataDir };
39
+ }
40
+ return null;
41
+ }
42
+ export function findInstanceVerifyRun(runtime, runId) {
43
+ for (const projectDataDir of projectDataDirsForInstance(runtime)) {
44
+ const run = runtime.getVerifyRun(projectDataDir, runId);
45
+ if (run)
46
+ return { run, projectDataDir };
47
+ }
48
+ return null;
49
+ }
50
+ export function listInstanceBuildPlans(runtime) {
51
+ const byId = new Map();
52
+ const projectDataDirs = projectDataDirsForInstance(runtime);
53
+ for (const projectDataDir of projectDataDirs.length > 0 ? projectDataDirs : [runtime.rootPath]) {
54
+ for (const buildPlanResource of runtime.listBuildPlans(projectDataDir)) {
55
+ const existing = byId.get(buildPlanResource.id);
56
+ if (!existing) {
57
+ byId.set(buildPlanResource.id, buildPlanResource);
58
+ continue;
59
+ }
60
+ const preferred = existing.built_in && !buildPlanResource.built_in
61
+ ? buildPlanResource
62
+ : existing;
63
+ byId.set(buildPlanResource.id, {
64
+ ...preferred,
65
+ active_for_projects: Array.from(new Set([
66
+ ...existing.active_for_projects,
67
+ ...buildPlanResource.active_for_projects,
68
+ ])).sort(),
69
+ });
70
+ }
71
+ }
72
+ return [...byId.values()].sort((left, right) => left.id.localeCompare(right.id));
73
+ }
74
+ export function findInstanceBuildPlan(runtime, buildPlanId) {
75
+ return listInstanceBuildPlans(runtime).find((buildPlanResource) => buildPlanResource.id === buildPlanId) ?? null;
76
+ }
77
+ export function listInstanceBuildPlanRuns(runtime, buildPlanId) {
78
+ return projectDataDirsForInstance(runtime)
79
+ .flatMap((projectDataDir) => runtime.listBuildPlanRuns(projectDataDir, buildPlanId))
80
+ .sort((left, right) => {
81
+ const leftMs = Date.parse(left.started_at ?? left.created_at ?? left.finished_at ?? "");
82
+ const rightMs = Date.parse(right.started_at ?? right.created_at ?? right.finished_at ?? "");
83
+ return (Number.isFinite(rightMs) ? rightMs : 0) - (Number.isFinite(leftMs) ? leftMs : 0);
84
+ });
85
+ }
86
+ /**
87
+ * Resolve the on-disk root path for a Build Plan id. Used by the
88
+ * `/v1/build-plans/<id>/files/<relpath>` route. Resolution order matches
89
+ * the runtime: project-draft (if a project id is supplied) → user
90
+ * library → built-in. Returns `null` when the Build Plan id resolves
91
+ * nowhere.
92
+ */
93
+ export function resolveBuildPlanPackageRoot(buildPlanId, projectDataDir) {
94
+ if (projectDataDir) {
95
+ const localPath = buildPlanDefinitionPath(projectDataDir, buildPlanId);
96
+ if (existsSync(join(localPath, "build-plan.json")))
97
+ return localPath;
98
+ }
99
+ if (userBuildPlanExists(buildPlanId)) {
100
+ return userBuildPlanPath(buildPlanId);
101
+ }
102
+ const builtinPath = builtinBuildPlanPackagePath(buildPlanId);
103
+ if (existsSync(join(builtinPath, "build-plan.json")))
104
+ return builtinPath;
105
+ return null;
106
+ }
107
+ export function resolveInstanceBuildPlanPackageRoot(runtime, buildPlanId) {
108
+ for (const projectDataDir of projectDataDirsForInstance(runtime)) {
109
+ const localPath = buildPlanDefinitionPath(projectDataDir, buildPlanId);
110
+ if (existsSync(join(localPath, "build-plan.json")))
111
+ return localPath;
112
+ }
113
+ return resolveBuildPlanPackageRoot(buildPlanId);
114
+ }
@@ -0,0 +1,3 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { LocalServiceRuntime } from "../runtime.js";
3
+ export declare function tryHandleActionProposals(req: IncomingMessage, res: ServerResponse, runtime: LocalServiceRuntime, path: string, method: string): Promise<boolean>;
@@ -0,0 +1,43 @@
1
+ import { LOCAL_SERVICE_ROUTES } from "./routes.js";
2
+ import { readJsonBody, sendError, sendJson, } from "./server-helpers.js";
3
+ import { listStoredProjects } from "../project-store.js";
4
+ export async function tryHandleActionProposals(req, res, runtime, path, method) {
5
+ if (method === "GET" && path === LOCAL_SERVICE_ROUTES.actionProposals) {
6
+ const firstProject = listStoredProjects()[0];
7
+ sendJson(res, 200, {
8
+ action_proposals: runtime.listActionProposals(firstProject?.projectDataDir ?? runtime.rootPath),
9
+ });
10
+ return true;
11
+ }
12
+ if (method === "POST" && path === LOCAL_SERVICE_ROUTES.actionProposals) {
13
+ const body = await readJsonBody(req);
14
+ const firstProject = listStoredProjects()[0];
15
+ sendJson(res, 202, await runtime.createActionProposal(firstProject?.projectDataDir ?? runtime.rootPath, body));
16
+ return true;
17
+ }
18
+ const actionProposalMatch = path.match(/^\/v1\/action-proposals\/([^/]+)(?:\/([^/]+))?$/);
19
+ if (actionProposalMatch?.[1]) {
20
+ const proposalId = decodeURIComponent(actionProposalMatch[1]);
21
+ const child = actionProposalMatch[2];
22
+ const firstProject = listStoredProjects()[0];
23
+ const projectDataDir = firstProject?.projectDataDir ?? runtime.rootPath;
24
+ if (method === "GET" && !child) {
25
+ const proposal = runtime.getActionProposal(projectDataDir, proposalId);
26
+ if (!proposal)
27
+ sendError(res, 404, "Action proposal not found.");
28
+ else
29
+ sendJson(res, 200, proposal);
30
+ return true;
31
+ }
32
+ if (method === "POST" && child === "decision") {
33
+ const body = await readJsonBody(req);
34
+ const proposal = await runtime.decideActionProposal(projectDataDir, proposalId, body);
35
+ if (!proposal)
36
+ sendError(res, 404, "Action proposal not found.");
37
+ else
38
+ sendJson(res, 202, proposal);
39
+ return true;
40
+ }
41
+ }
42
+ return false;
43
+ }
@@ -0,0 +1,4 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { LocalServiceRuntime } from "../runtime.js";
3
+ export declare function tryHandleExecutor(req: IncomingMessage, res: ServerResponse, runtime: LocalServiceRuntime, path: string, method: string): Promise<boolean>;
4
+ export declare function tryHandleAgents(req: IncomingMessage, res: ServerResponse, runtime: LocalServiceRuntime, path: string, method: string): Promise<boolean>;