@interf/compiler 0.22.2 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (616) hide show
  1. package/README.md +119 -282
  2. package/dist/bin-mcp.d.ts +2 -0
  3. package/dist/bin-mcp.js +63 -0
  4. package/dist/bin-runtime.d.ts +2 -0
  5. package/dist/bin-runtime.js +111 -0
  6. package/dist/cli/commands/agents.js +4 -35
  7. package/dist/cli/commands/auth.d.ts +20 -0
  8. package/dist/cli/commands/auth.js +161 -0
  9. package/dist/cli/commands/benchmark.d.ts +9 -0
  10. package/dist/cli/commands/benchmark.js +58 -0
  11. package/dist/cli/commands/build-plan.js +107 -139
  12. package/dist/cli/commands/build.d.ts +3 -4
  13. package/dist/cli/commands/build.js +16 -45
  14. package/dist/cli/commands/doctor.js +3 -3
  15. package/dist/cli/commands/graphs.d.ts +2 -0
  16. package/dist/cli/commands/graphs.js +344 -0
  17. package/dist/cli/commands/login.js +4 -6
  18. package/dist/cli/commands/logout.js +1 -1
  19. package/dist/cli/commands/mcp.d.ts +4 -2
  20. package/dist/cli/commands/mcp.js +846 -232
  21. package/dist/cli/commands/project.d.ts +2 -0
  22. package/dist/cli/commands/project.js +176 -0
  23. package/dist/cli/commands/reset.d.ts +3 -4
  24. package/dist/cli/commands/reset.js +10 -31
  25. package/dist/cli/commands/runs.js +136 -57
  26. package/dist/cli/commands/runtime.d.ts +24 -0
  27. package/dist/cli/commands/runtime.js +373 -0
  28. package/dist/cli/commands/status.d.ts +1 -0
  29. package/dist/cli/commands/status.js +35 -45
  30. package/dist/cli/commands/traces.d.ts +2 -0
  31. package/dist/cli/commands/traces.js +97 -0
  32. package/dist/cli/commands/wizard.js +171 -178
  33. package/dist/cli/index.d.ts +7 -4
  34. package/dist/cli/index.js +13 -7
  35. package/dist/cli/lib/http-client.d.ts +39 -0
  36. package/dist/cli/lib/http-client.js +73 -0
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +2 -2
  39. package/dist/packages/build-plans/authoring/brief.d.ts +538 -0
  40. package/dist/packages/build-plans/authoring/brief.js +89 -0
  41. package/dist/packages/build-plans/authoring/build-plan-authoring.d.ts +52 -11
  42. package/dist/packages/build-plans/authoring/build-plan-authoring.js +493 -46
  43. package/dist/packages/build-plans/authoring/build-plan-edit-session.d.ts +10 -1
  44. package/dist/packages/build-plans/authoring/build-plan-edit-session.js +27 -4
  45. package/dist/packages/build-plans/authoring/build-plan-improvement.d.ts +9 -6
  46. package/dist/packages/build-plans/authoring/build-plan-improvement.js +97 -46
  47. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.d.ts +1 -0
  48. package/dist/packages/build-plans/authoring/lib/build-plan-edit-utils.js +7 -7
  49. package/dist/packages/build-plans/build-plan-resolution.d.ts +1 -1
  50. package/dist/packages/build-plans/build-plan-resolution.js +3 -3
  51. package/dist/packages/build-plans/index.d.ts +1 -1
  52. package/dist/packages/build-plans/index.js +1 -1
  53. package/dist/packages/build-plans/package/build-plan-definitions.d.ts +14 -13
  54. package/dist/packages/build-plans/package/build-plan-definitions.js +45 -42
  55. package/dist/packages/build-plans/package/build-plan-helpers.d.ts +3 -2
  56. package/dist/packages/build-plans/package/build-plan-helpers.js +27 -13
  57. package/dist/packages/build-plans/package/build-plan-review-paths.d.ts +5 -5
  58. package/dist/packages/build-plans/package/build-plan-review-paths.js +15 -15
  59. package/dist/packages/build-plans/package/build-plan-stage-runner.d.ts +5 -4
  60. package/dist/packages/build-plans/package/build-plan-stage-runner.js +23 -11
  61. package/dist/packages/build-plans/package/builtin-build-plan.d.ts +7 -8
  62. package/dist/packages/build-plans/package/builtin-build-plan.js +10 -11
  63. package/dist/packages/build-plans/package/context-interface.d.ts +14 -9
  64. package/dist/packages/build-plans/package/context-interface.js +14 -33
  65. package/dist/packages/build-plans/package/interf-build-plan-package.d.ts +6 -17
  66. package/dist/packages/build-plans/package/interf-build-plan-package.js +68 -64
  67. package/dist/packages/build-plans/package/local-build-plans.d.ts +21 -14
  68. package/dist/packages/build-plans/package/local-build-plans.js +105 -55
  69. package/dist/packages/build-plans/package/user-build-plans.js +1 -1
  70. package/dist/packages/contracts/index.d.ts +5 -2
  71. package/dist/packages/contracts/index.js +3 -1
  72. package/dist/packages/contracts/lib/context-graph-layer.d.ts +161 -0
  73. package/dist/packages/contracts/lib/context-graph-layer.js +216 -0
  74. package/dist/packages/contracts/lib/project-paths.d.ts +144 -0
  75. package/dist/packages/contracts/lib/project-paths.js +220 -0
  76. package/dist/packages/contracts/lib/project-schema.d.ts +423 -0
  77. package/dist/packages/contracts/lib/project-schema.js +138 -0
  78. package/dist/packages/contracts/lib/schema.d.ts +1273 -81
  79. package/dist/packages/contracts/lib/schema.js +675 -79
  80. package/dist/packages/contracts/utils/filesystem.d.ts +1 -0
  81. package/dist/packages/contracts/utils/filesystem.js +29 -1
  82. package/dist/packages/contracts/utils/parse.js +67 -0
  83. package/dist/packages/projects/index.d.ts +6 -0
  84. package/dist/packages/{project → projects}/index.js +0 -3
  85. package/dist/packages/{project → projects}/interf-detect.d.ts +12 -12
  86. package/dist/packages/{project → projects}/interf-detect.js +56 -50
  87. package/dist/packages/projects/interf.d.ts +2 -0
  88. package/dist/packages/projects/interf.js +1 -0
  89. package/dist/packages/projects/lib/schema.d.ts +77 -0
  90. package/dist/packages/projects/lib/schema.js +91 -0
  91. package/dist/packages/projects/source-config.d.ts +53 -0
  92. package/dist/packages/projects/source-config.js +339 -0
  93. package/dist/packages/projects/source-folders.d.ts +11 -0
  94. package/dist/packages/{project → projects}/source-folders.js +26 -26
  95. package/dist/packages/{engine → runtime}/action-planner.d.ts +1 -1
  96. package/dist/packages/{engine → runtime}/action-planner.js +20 -22
  97. package/dist/packages/runtime/action-values.d.ts +1 -0
  98. package/dist/packages/runtime/action-values.js +1 -0
  99. package/dist/packages/runtime/actions/errors.d.ts +2 -0
  100. package/dist/packages/runtime/actions/errors.js +12 -0
  101. package/dist/packages/runtime/actions/fields.d.ts +86 -0
  102. package/dist/packages/runtime/actions/form-builders.d.ts +14 -0
  103. package/dist/packages/runtime/actions/form-builders.js +667 -0
  104. package/dist/packages/runtime/actions/form-validators.d.ts +8 -0
  105. package/dist/packages/runtime/actions/form-validators.js +134 -0
  106. package/dist/packages/runtime/actions/helpers.d.ts +11 -0
  107. package/dist/packages/runtime/actions/helpers.js +80 -0
  108. package/dist/packages/runtime/actions/index.d.ts +8 -0
  109. package/dist/packages/runtime/actions/index.js +11 -0
  110. package/dist/packages/runtime/actions/registry.d.ts +64 -0
  111. package/dist/packages/runtime/actions/registry.js +62 -0
  112. package/dist/packages/runtime/actions/requests.d.ts +45 -0
  113. package/dist/packages/runtime/actions/requests.js +164 -0
  114. package/dist/packages/runtime/actions/schemas.d.ts +161 -0
  115. package/dist/packages/runtime/actions/schemas.js +37 -0
  116. package/dist/packages/runtime/agent-handoff.d.ts +11 -0
  117. package/dist/packages/runtime/agent-handoff.js +102 -0
  118. package/dist/packages/{engine → runtime}/agents/index.d.ts +1 -2
  119. package/dist/packages/{engine → runtime}/agents/index.js +1 -2
  120. package/dist/packages/runtime/agents/lib/args.d.ts +14 -0
  121. package/dist/packages/runtime/agents/lib/args.js +24 -0
  122. package/dist/packages/{engine → runtime}/agents/lib/constants.d.ts +4 -1
  123. package/dist/packages/runtime/agents/lib/constants.js +13 -0
  124. package/dist/packages/runtime/agents/lib/context-graph-bootstrap.d.ts +3 -0
  125. package/dist/packages/{engine/agents/lib/verifiable-context-bootstrap.js → runtime/agents/lib/context-graph-bootstrap.js} +5 -6
  126. package/dist/packages/{engine → runtime}/agents/lib/detection.d.ts +5 -0
  127. package/dist/packages/{engine → runtime}/agents/lib/detection.js +16 -7
  128. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.d.ts +14 -0
  129. package/dist/packages/{engine → runtime}/agents/lib/execution-profile.js +31 -14
  130. package/dist/packages/{engine → runtime}/agents/lib/execution.js +22 -6
  131. package/dist/packages/{engine → runtime}/agents/lib/executors.d.ts +1 -0
  132. package/dist/packages/{engine → runtime}/agents/lib/executors.js +11 -2
  133. package/dist/packages/runtime/agents/lib/logs.d.ts +12 -0
  134. package/dist/packages/runtime/agents/lib/logs.js +41 -0
  135. package/dist/packages/{engine → runtime}/agents/lib/preflight.js +19 -14
  136. package/dist/packages/runtime/agents/lib/render.d.ts +26 -0
  137. package/dist/packages/{engine → runtime}/agents/lib/render.js +48 -22
  138. package/dist/packages/runtime/agents/lib/shell-fs.d.ts +18 -0
  139. package/dist/packages/runtime/agents/lib/shell-fs.js +190 -0
  140. package/dist/packages/runtime/agents/lib/shell-paths.d.ts +16 -0
  141. package/dist/packages/runtime/agents/lib/shell-paths.js +63 -0
  142. package/dist/packages/runtime/agents/lib/shell-projection.d.ts +25 -0
  143. package/dist/packages/runtime/agents/lib/shell-projection.js +314 -0
  144. package/dist/packages/runtime/agents/lib/shell-templates.d.ts +30 -0
  145. package/dist/packages/runtime/agents/lib/shell-templates.js +494 -0
  146. package/dist/packages/runtime/agents/lib/shell-workspace.d.ts +17 -0
  147. package/dist/packages/runtime/agents/lib/shell-workspace.js +70 -0
  148. package/dist/packages/runtime/agents/lib/shells.d.ts +92 -0
  149. package/dist/packages/runtime/agents/lib/shells.js +509 -0
  150. package/dist/packages/runtime/agents/lib/source-context-scan.d.ts +10 -0
  151. package/dist/packages/runtime/agents/lib/source-context-scan.js +388 -0
  152. package/dist/packages/{engine → runtime}/agents/lib/status.js +1 -14
  153. package/dist/packages/runtime/agents/lib/string-utils.d.ts +16 -0
  154. package/dist/packages/runtime/agents/lib/string-utils.js +36 -0
  155. package/dist/packages/{engine → runtime}/agents/lib/types.d.ts +1 -0
  156. package/dist/packages/{engine → runtime}/agents/lib/user-config.d.ts +8 -2
  157. package/dist/packages/{engine → runtime}/agents/lib/user-config.js +8 -2
  158. package/dist/packages/runtime/agents/providers/claude-code.d.ts +13 -0
  159. package/dist/packages/runtime/agents/providers/claude-code.js +45 -0
  160. package/dist/packages/runtime/agents/providers/codex.d.ts +17 -0
  161. package/dist/packages/runtime/agents/providers/codex.js +66 -0
  162. package/dist/packages/runtime/agents/providers/cursor.d.ts +9 -0
  163. package/dist/packages/runtime/agents/providers/cursor.js +24 -0
  164. package/dist/packages/runtime/agents/providers/index.d.ts +9 -0
  165. package/dist/packages/runtime/agents/providers/index.js +31 -0
  166. package/dist/packages/runtime/agents/providers/types.d.ts +50 -0
  167. package/dist/packages/{engine → runtime}/agents/registry.d.ts +13 -2
  168. package/dist/packages/{engine → runtime}/agents/registry.js +48 -10
  169. package/dist/packages/{engine → runtime}/agents/role-executors.d.ts +1 -1
  170. package/dist/packages/{engine → runtime}/agents/role-executors.js +9 -7
  171. package/dist/packages/{engine → runtime}/agents/role-router.js +7 -5
  172. package/dist/packages/runtime/auth/account-context.d.ts +52 -0
  173. package/dist/packages/runtime/auth/account-context.js +68 -0
  174. package/dist/packages/runtime/auth/auth-flow.d.ts +73 -0
  175. package/dist/packages/runtime/auth/auth-flow.js +189 -0
  176. package/dist/packages/runtime/auth/jwt-validator.d.ts +58 -0
  177. package/dist/packages/runtime/auth/jwt-validator.js +86 -0
  178. package/dist/packages/runtime/auth/keychain.d.ts +35 -0
  179. package/dist/packages/runtime/auth/keychain.js +85 -0
  180. package/dist/packages/runtime/auth/session-store.d.ts +38 -0
  181. package/dist/packages/runtime/auth/session-store.js +96 -0
  182. package/dist/packages/runtime/auth/workos-client.d.ts +58 -0
  183. package/dist/packages/runtime/auth/workos-client.js +87 -0
  184. package/dist/packages/runtime/benchmark-question-draft.d.ts +23 -0
  185. package/dist/packages/runtime/benchmark-question-draft.js +153 -0
  186. package/dist/packages/runtime/build/artifact-counts.d.ts +1 -0
  187. package/dist/packages/{engine → runtime}/build/artifact-counts.js +5 -9
  188. package/dist/packages/{engine → runtime}/build/artifact-status.d.ts +6 -6
  189. package/dist/packages/{engine → runtime}/build/artifact-status.js +26 -24
  190. package/dist/packages/runtime/build/atomic-fs.d.ts +3 -0
  191. package/dist/packages/runtime/build/atomic-fs.js +95 -0
  192. package/dist/packages/runtime/build/billing-events.d.ts +78 -0
  193. package/dist/packages/{engine → runtime}/build/billing-events.js +17 -19
  194. package/dist/packages/runtime/build/build-evidence.d.ts +16 -0
  195. package/dist/packages/runtime/build/build-evidence.js +179 -0
  196. package/dist/packages/{engine → runtime}/build/build-pipeline.d.ts +12 -8
  197. package/dist/packages/runtime/build/build-pipeline.js +388 -0
  198. package/dist/packages/{engine → runtime}/build/build-plan-primitives.d.ts +1 -1
  199. package/dist/packages/{engine → runtime}/build/build-plan-primitives.js +0 -1
  200. package/dist/packages/runtime/build/build-plan-runs.d.ts +14 -0
  201. package/dist/packages/runtime/build/build-plan-runs.js +31 -0
  202. package/dist/packages/runtime/build/build-stage-plan.d.ts +16 -0
  203. package/dist/packages/runtime/build/build-stage-plan.js +101 -0
  204. package/dist/packages/{engine → runtime}/build/build-stage-runner.d.ts +2 -1
  205. package/dist/packages/runtime/build/build-stage-runner.js +302 -0
  206. package/dist/packages/{engine → runtime}/build/build-target.d.ts +7 -4
  207. package/dist/packages/runtime/build/build-target.js +40 -0
  208. package/dist/packages/{engine → runtime}/build/check-evaluator.d.ts +14 -16
  209. package/dist/packages/runtime/build/check-evaluator.js +1226 -0
  210. package/dist/packages/runtime/build/context-graph-paths.d.ts +64 -0
  211. package/dist/packages/runtime/build/context-graph-paths.js +160 -0
  212. package/dist/packages/runtime/build/context-graph-schema.d.ts +19 -0
  213. package/dist/packages/runtime/build/context-graph-schema.js +39 -0
  214. package/dist/packages/{engine → runtime}/build/discovery.d.ts +2 -2
  215. package/dist/packages/{engine → runtime}/build/discovery.js +4 -4
  216. package/dist/packages/{engine → runtime}/build/index.d.ts +7 -5
  217. package/dist/packages/{engine → runtime}/build/index.js +7 -5
  218. package/dist/packages/runtime/build/inspect-map.d.ts +10 -0
  219. package/dist/packages/runtime/build/inspect-map.js +270 -0
  220. package/dist/packages/{engine → runtime}/build/lib/schema.d.ts +449 -123
  221. package/dist/packages/runtime/build/lib/schema.js +494 -0
  222. package/dist/packages/runtime/build/native-entrypoint.d.ts +2 -0
  223. package/dist/packages/runtime/build/native-entrypoint.js +286 -0
  224. package/dist/packages/runtime/build/reset.d.ts +2 -0
  225. package/dist/packages/runtime/build/reset.js +62 -0
  226. package/dist/packages/{engine → runtime}/build/runtime-contracts.js +13 -7
  227. package/dist/packages/runtime/build/runtime-inventory.d.ts +7 -0
  228. package/dist/packages/{engine → runtime}/build/runtime-inventory.js +3 -3
  229. package/dist/packages/runtime/build/runtime-log-paths.d.ts +3 -0
  230. package/dist/packages/runtime/build/runtime-log-paths.js +16 -0
  231. package/dist/packages/{engine → runtime}/build/runtime-prompt.js +12 -9
  232. package/dist/packages/{engine → runtime}/build/runtime-reconcile.d.ts +1 -1
  233. package/dist/packages/{engine → runtime}/build/runtime-reconcile.js +25 -21
  234. package/dist/packages/runtime/build/runtime-runs.d.ts +10 -0
  235. package/dist/packages/runtime/build/runtime-runs.js +318 -0
  236. package/dist/packages/{engine → runtime}/build/runtime-types.d.ts +9 -6
  237. package/dist/packages/runtime/build/runtime-types.js +1 -0
  238. package/dist/packages/runtime/build/runtime.d.ts +8 -0
  239. package/dist/packages/runtime/build/runtime.js +7 -0
  240. package/dist/packages/runtime/build/source-files.d.ts +58 -0
  241. package/dist/packages/runtime/build/source-files.js +193 -0
  242. package/dist/packages/runtime/build/source-inventory.d.ts +28 -0
  243. package/dist/packages/runtime/build/source-inventory.js +512 -0
  244. package/dist/packages/runtime/build/source-manifest.d.ts +63 -0
  245. package/dist/packages/runtime/build/source-manifest.js +220 -0
  246. package/dist/packages/runtime/build/stage-evidence.d.ts +22 -0
  247. package/dist/packages/runtime/build/stage-evidence.js +386 -0
  248. package/dist/packages/runtime/build/stage-manifest.d.ts +45 -0
  249. package/dist/packages/runtime/build/stage-manifest.js +1125 -0
  250. package/dist/packages/runtime/build/stage-reuse.d.ts +11 -0
  251. package/dist/packages/runtime/build/stage-reuse.js +154 -0
  252. package/dist/packages/runtime/build/stage-session.d.ts +81 -0
  253. package/dist/packages/runtime/build/stage-session.js +308 -0
  254. package/dist/packages/runtime/build/state-artifacts.d.ts +9 -0
  255. package/dist/packages/runtime/build/state-artifacts.js +14 -0
  256. package/dist/packages/runtime/build/state-health.d.ts +4 -0
  257. package/dist/packages/{engine → runtime}/build/state-health.js +21 -26
  258. package/dist/packages/runtime/build/state-io.d.ts +12 -0
  259. package/dist/packages/runtime/build/state-io.js +118 -0
  260. package/dist/packages/runtime/build/state-view.d.ts +5 -0
  261. package/dist/packages/runtime/build/state-view.js +121 -0
  262. package/dist/packages/runtime/build/state.d.ts +7 -0
  263. package/dist/packages/runtime/build/state.js +12 -0
  264. package/dist/packages/runtime/build/summary-coverage-index.d.ts +21 -0
  265. package/dist/packages/runtime/build/summary-coverage-index.js +189 -0
  266. package/dist/packages/runtime/build/traces.d.ts +30 -0
  267. package/dist/packages/runtime/build/traces.js +133 -0
  268. package/dist/packages/{engine/build/validate-verifiable-context.d.ts → runtime/build/validate-context-graph.d.ts} +6 -6
  269. package/dist/packages/{engine/build/validate-verifiable-context.js → runtime/build/validate-context-graph.js} +49 -36
  270. package/dist/packages/{engine → runtime}/build/validate.d.ts +5 -5
  271. package/dist/packages/{engine → runtime}/build/validate.js +26 -26
  272. package/dist/packages/{engine → runtime}/client.d.ts +18 -18
  273. package/dist/packages/{engine → runtime}/client.js +48 -36
  274. package/dist/packages/{engine → runtime}/connection-config.d.ts +3 -2
  275. package/dist/packages/{engine → runtime}/connection-config.js +9 -8
  276. package/dist/packages/runtime/context-checks.d.ts +10 -0
  277. package/dist/packages/runtime/context-checks.js +127 -0
  278. package/dist/packages/runtime/context-graph-scaffold.d.ts +9 -0
  279. package/dist/packages/runtime/context-graph-scaffold.js +135 -0
  280. package/dist/packages/runtime/context-graph-semantic-graph.d.ts +9 -0
  281. package/dist/packages/runtime/context-graph-semantic-graph.js +416 -0
  282. package/dist/packages/runtime/entitlement-guard.d.ts +43 -0
  283. package/dist/packages/runtime/entitlement-guard.js +70 -0
  284. package/dist/packages/{engine → runtime}/execution/index.d.ts +2 -2
  285. package/dist/packages/{engine → runtime}/execution/index.js +1 -1
  286. package/dist/packages/{engine → runtime}/execution/lib/schema.d.ts +272 -191
  287. package/dist/packages/{engine → runtime}/execution/lib/schema.js +35 -32
  288. package/dist/packages/runtime/index.d.ts +29 -0
  289. package/dist/packages/runtime/index.js +21 -0
  290. package/dist/packages/runtime/instance-paths.d.ts +30 -0
  291. package/dist/packages/runtime/instance-paths.js +29 -0
  292. package/dist/packages/runtime/native-run-handlers.d.ts +63 -0
  293. package/dist/packages/{engine → runtime}/native-run-handlers.js +217 -166
  294. package/dist/packages/runtime/plan-artifact-contract.d.ts +17 -0
  295. package/dist/packages/runtime/plan-artifact-contract.js +42 -0
  296. package/dist/packages/runtime/project-entries.d.ts +11 -0
  297. package/dist/packages/runtime/project-entries.js +49 -0
  298. package/dist/packages/runtime/project-source-state.d.ts +26 -0
  299. package/dist/packages/runtime/project-source-state.js +56 -0
  300. package/dist/packages/runtime/project-store.d.ts +90 -0
  301. package/dist/packages/runtime/project-store.js +195 -0
  302. package/dist/packages/runtime/requested-artifacts.d.ts +7 -0
  303. package/dist/packages/{engine → runtime}/requested-artifacts.js +23 -1
  304. package/dist/packages/{engine → runtime}/run-observability.d.ts +2 -1
  305. package/dist/packages/{engine → runtime}/run-observability.js +174 -87
  306. package/dist/packages/runtime/runtime-action-proposals.d.ts +7 -0
  307. package/dist/packages/runtime/runtime-action-proposals.js +542 -0
  308. package/dist/packages/runtime/runtime-build-plans.d.ts +5 -0
  309. package/dist/packages/runtime/runtime-build-plans.js +175 -0
  310. package/dist/packages/runtime/runtime-build-runs.d.ts +47 -0
  311. package/dist/packages/runtime/runtime-build-runs.js +555 -0
  312. package/dist/packages/runtime/runtime-caches.d.ts +117 -0
  313. package/dist/packages/runtime/runtime-caches.js +266 -0
  314. package/dist/packages/{engine → runtime}/runtime-event-applier.d.ts +3 -1
  315. package/dist/packages/{engine → runtime}/runtime-event-applier.js +53 -17
  316. package/dist/packages/runtime/runtime-executor.d.ts +22 -0
  317. package/dist/packages/runtime/runtime-executor.js +131 -0
  318. package/dist/packages/runtime/runtime-jobs.d.ts +13 -0
  319. package/dist/packages/runtime/runtime-jobs.js +463 -0
  320. package/dist/packages/runtime/runtime-observability.d.ts +11 -0
  321. package/dist/packages/runtime/runtime-observability.js +39 -0
  322. package/dist/packages/{engine → runtime}/runtime-persistence.d.ts +9 -18
  323. package/dist/packages/{engine → runtime}/runtime-persistence.js +25 -25
  324. package/dist/packages/runtime/runtime-project-mutations.d.ts +7 -0
  325. package/dist/packages/runtime/runtime-project-mutations.js +65 -0
  326. package/dist/packages/runtime/runtime-project-reads.d.ts +18 -0
  327. package/dist/packages/runtime/runtime-project-reads.js +574 -0
  328. package/dist/packages/runtime/runtime-proposal-helpers.d.ts +22 -0
  329. package/dist/packages/runtime/runtime-proposal-helpers.js +223 -0
  330. package/dist/packages/{engine → runtime}/runtime-resource-builders.d.ts +23 -16
  331. package/dist/packages/{engine → runtime}/runtime-resource-builders.js +58 -46
  332. package/dist/packages/runtime/runtime-status.d.ts +14 -0
  333. package/dist/packages/runtime/runtime-status.js +15 -0
  334. package/dist/packages/runtime/runtime-verify-runs.d.ts +84 -0
  335. package/dist/packages/runtime/runtime-verify-runs.js +296 -0
  336. package/dist/packages/runtime/runtime.d.ts +1582 -0
  337. package/dist/packages/runtime/runtime.js +431 -0
  338. package/dist/packages/runtime/schemas/actions.d.ts +1206 -0
  339. package/dist/packages/runtime/schemas/actions.js +117 -0
  340. package/dist/packages/runtime/schemas/agents.d.ts +104 -0
  341. package/dist/packages/runtime/schemas/agents.js +74 -0
  342. package/dist/packages/runtime/schemas/build-plans.d.ts +1132 -0
  343. package/dist/packages/runtime/schemas/build-plans.js +141 -0
  344. package/dist/packages/runtime/schemas/context-graphs.d.ts +1522 -0
  345. package/dist/packages/runtime/schemas/context-graphs.js +110 -0
  346. package/dist/packages/runtime/schemas/files.d.ts +227 -0
  347. package/dist/packages/runtime/schemas/files.js +28 -0
  348. package/dist/packages/runtime/schemas/index.d.ts +9 -0
  349. package/dist/packages/runtime/schemas/index.js +13 -0
  350. package/dist/packages/runtime/schemas/instance.d.ts +141 -0
  351. package/dist/packages/runtime/schemas/instance.js +143 -0
  352. package/dist/packages/runtime/schemas/jobs.d.ts +339 -0
  353. package/dist/packages/runtime/schemas/jobs.js +107 -0
  354. package/dist/packages/runtime/schemas/projects.d.ts +366 -0
  355. package/dist/packages/runtime/schemas/projects.js +160 -0
  356. package/dist/packages/runtime/schemas/runs.d.ts +3445 -0
  357. package/dist/packages/runtime/schemas/runs.js +115 -0
  358. package/dist/packages/runtime/service/index.d.ts +3 -0
  359. package/dist/packages/runtime/service/index.js +3 -0
  360. package/dist/packages/runtime/service/openapi.d.ts +7 -0
  361. package/dist/packages/runtime/service/openapi.js +118 -0
  362. package/dist/packages/runtime/service/operations.d.ts +3011 -0
  363. package/dist/packages/runtime/service/operations.js +375 -0
  364. package/dist/packages/runtime/service/routes.d.ts +114 -0
  365. package/dist/packages/runtime/service/routes.js +128 -0
  366. package/dist/packages/runtime/service/server-api-files.d.ts +10 -0
  367. package/dist/packages/runtime/service/server-api-files.js +85 -0
  368. package/dist/packages/runtime/service/server-app-boot.d.ts +4 -0
  369. package/dist/packages/runtime/service/server-app-boot.js +46 -0
  370. package/dist/packages/runtime/service/server-guards.d.ts +63 -0
  371. package/dist/packages/runtime/service/server-guards.js +181 -0
  372. package/dist/packages/runtime/service/server-helpers.d.ts +38 -0
  373. package/dist/packages/runtime/service/server-helpers.js +108 -0
  374. package/dist/packages/runtime/service/server-instance-helpers.d.ts +30 -0
  375. package/dist/packages/runtime/service/server-instance-helpers.js +114 -0
  376. package/dist/packages/runtime/service/server-routes-action-proposals.d.ts +3 -0
  377. package/dist/packages/runtime/service/server-routes-action-proposals.js +45 -0
  378. package/dist/packages/runtime/service/server-routes-agents.d.ts +4 -0
  379. package/dist/packages/runtime/service/server-routes-agents.js +132 -0
  380. package/dist/packages/runtime/service/server-routes-auth.d.ts +33 -0
  381. package/dist/packages/runtime/service/server-routes-auth.js +138 -0
  382. package/dist/packages/runtime/service/server-routes-build-plans.d.ts +3 -0
  383. package/dist/packages/runtime/service/server-routes-build-plans.js +86 -0
  384. package/dist/packages/runtime/service/server-routes-discovery.d.ts +4 -0
  385. package/dist/packages/runtime/service/server-routes-discovery.js +196 -0
  386. package/dist/packages/runtime/service/server-routes-events.d.ts +5 -0
  387. package/dist/packages/runtime/service/server-routes-events.js +99 -0
  388. package/dist/packages/runtime/service/server-routes-project-context.d.ts +9 -0
  389. package/dist/packages/runtime/service/server-routes-project-context.js +287 -0
  390. package/dist/packages/runtime/service/server-routes-project-jobs.d.ts +9 -0
  391. package/dist/packages/runtime/service/server-routes-project-jobs.js +137 -0
  392. package/dist/packages/runtime/service/server-routes-project-runs.d.ts +14 -0
  393. package/dist/packages/runtime/service/server-routes-project-runs.js +88 -0
  394. package/dist/packages/runtime/service/server-routes-projects.d.ts +4 -0
  395. package/dist/packages/runtime/service/server-routes-projects.js +96 -0
  396. package/dist/packages/runtime/service/server-routes-runs.d.ts +3 -0
  397. package/dist/packages/runtime/service/server-routes-runs.js +119 -0
  398. package/dist/packages/runtime/service/server.d.ts +37 -0
  399. package/dist/packages/runtime/service/server.js +300 -0
  400. package/dist/packages/{engine → runtime/service}/service-registry.d.ts +5 -5
  401. package/dist/packages/{engine → runtime/service}/service-registry.js +7 -7
  402. package/dist/packages/runtime/verify/benchmark-run.d.ts +81 -0
  403. package/dist/packages/runtime/verify/benchmark-run.js +303 -0
  404. package/dist/packages/{engine → runtime}/verify/index.d.ts +2 -2
  405. package/dist/packages/{engine → runtime}/verify/index.js +1 -1
  406. package/dist/packages/{engine → runtime}/verify/lib/schema.d.ts +83 -16
  407. package/dist/packages/{engine → runtime}/verify/lib/schema.js +38 -18
  408. package/dist/packages/runtime/verify/test-file-guard.d.ts +2 -0
  409. package/dist/packages/runtime/verify/test-file-guard.js +29 -0
  410. package/dist/packages/{engine → runtime}/verify/verify-execution.d.ts +7 -0
  411. package/dist/packages/{engine → runtime}/verify/verify-execution.js +119 -45
  412. package/dist/packages/{engine → runtime}/verify/verify-paths.d.ts +5 -4
  413. package/dist/packages/runtime/verify/verify-paths.js +65 -0
  414. package/dist/packages/{engine → runtime}/verify/verify-sandbox.d.ts +1 -1
  415. package/dist/packages/runtime/verify/verify-sandbox.js +88 -0
  416. package/dist/packages/{engine → runtime}/verify/verify-specs.d.ts +2 -0
  417. package/dist/packages/runtime/verify/verify-specs.js +126 -0
  418. package/dist/packages/runtime/verify/verify-targets.d.ts +5 -0
  419. package/dist/packages/{engine → runtime}/verify/verify-targets.js +12 -12
  420. package/dist/packages/runtime/verify/verify-types.js +1 -0
  421. package/dist/packages/{engine → runtime}/verify/verify.d.ts +1 -1
  422. package/dist/packages/{engine → runtime}/verify/verify.js +1 -1
  423. package/dist/packages/runtime/wire-schemas.d.ts +18 -0
  424. package/dist/packages/runtime/wire-schemas.js +27 -0
  425. package/package.json +32 -30
  426. package/public-repo/CONTRIBUTING.md +16 -18
  427. package/public-repo/README.md +119 -282
  428. package/public-repo/SECURITY.md +3 -4
  429. package/public-repo/build-plans/interf-default/README.md +24 -16
  430. package/public-repo/build-plans/interf-default/build/stages/entrypoint/SKILL.md +74 -0
  431. package/public-repo/build-plans/interf-default/build/stages/knowledge/SKILL.md +95 -0
  432. package/public-repo/build-plans/interf-default/build/stages/summarize/SKILL.md +49 -4
  433. package/public-repo/build-plans/interf-default/build-plan.json +49 -39
  434. package/public-repo/build-plans/interf-default/build-plan.schema.json +59 -33
  435. package/public-repo/build-plans/interf-default/improve/SKILL.md +3 -3
  436. package/public-repo/build-plans/interf-default/use/query/SKILL.md +18 -11
  437. package/public-repo/openapi/local-service.openapi.json +14227 -0
  438. package/public-repo/skills/interf/SKILL.md +508 -187
  439. package/dist/cli/commands/prep.d.ts +0 -2
  440. package/dist/cli/commands/prep.js +0 -240
  441. package/dist/cli/commands/test.d.ts +0 -10
  442. package/dist/cli/commands/test.js +0 -85
  443. package/dist/cli/commands/web.d.ts +0 -2
  444. package/dist/cli/commands/web.js +0 -286
  445. package/dist/interf-ui/404.html +0 -1
  446. package/dist/interf-ui/__next.__PAGE__.txt +0 -10
  447. package/dist/interf-ui/__next._full.txt +0 -20
  448. package/dist/interf-ui/__next._head.txt +0 -5
  449. package/dist/interf-ui/__next._index.txt +0 -5
  450. package/dist/interf-ui/__next._tree.txt +0 -5
  451. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_buildManifest.js +0 -11
  452. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_clientMiddlewareManifest.js +0 -1
  453. package/dist/interf-ui/_next/static/--reS3xBzM5zc6QxNjZd6/_ssgManifest.js +0 -1
  454. package/dist/interf-ui/_next/static/chunks/0.tjb6f4golw..css +0 -3
  455. package/dist/interf-ui/_next/static/chunks/03~yq9q893hmn.js +0 -1
  456. package/dist/interf-ui/_next/static/chunks/085-n_jv2ng_q.css +0 -1
  457. package/dist/interf-ui/_next/static/chunks/0dn41fa_zvgsl.js +0 -1
  458. package/dist/interf-ui/_next/static/chunks/0g-ea0zj5d-0k.js +0 -1
  459. package/dist/interf-ui/_next/static/chunks/0gwqglc4iz583.js +0 -1
  460. package/dist/interf-ui/_next/static/chunks/0haldgm65ve6l.js +0 -1
  461. package/dist/interf-ui/_next/static/chunks/0nv3am99vjzn4.js +0 -1
  462. package/dist/interf-ui/_next/static/chunks/0s77gt_o4jwtx.js +0 -1
  463. package/dist/interf-ui/_next/static/chunks/0y5z3t-z1c8ks.js.map +0 -5
  464. package/dist/interf-ui/_next/static/chunks/0~a36ujuzpaz..js +0 -116
  465. package/dist/interf-ui/_next/static/chunks/10jeodxe4nkgj.js +0 -31
  466. package/dist/interf-ui/_next/static/chunks/119h2rouych2t.js +0 -1
  467. package/dist/interf-ui/_next/static/chunks/13c8b~m8knjsf.js +0 -1
  468. package/dist/interf-ui/_next/static/chunks/14dznb2qpt-ho.js +0 -91
  469. package/dist/interf-ui/_next/static/chunks/15z_en80lrq-3.js +0 -5
  470. package/dist/interf-ui/_next/static/chunks/turbopack-0p.pvcjrtq-jh.js +0 -1
  471. package/dist/interf-ui/_next/static/chunks/turbopack-0usj_75.8frlw.js +0 -1
  472. package/dist/interf-ui/_next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +0 -1
  473. package/dist/interf-ui/_next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  474. package/dist/interf-ui/_next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  475. package/dist/interf-ui/_next/static/media/worker.102zas1s52_pf.js +0 -109
  476. package/dist/interf-ui/_not-found/__next._full.txt +0 -15
  477. package/dist/interf-ui/_not-found/__next._head.txt +0 -5
  478. package/dist/interf-ui/_not-found/__next._index.txt +0 -5
  479. package/dist/interf-ui/_not-found/__next._not-found.__PAGE__.txt +0 -5
  480. package/dist/interf-ui/_not-found/__next._not-found.txt +0 -5
  481. package/dist/interf-ui/_not-found/__next._tree.txt +0 -2
  482. package/dist/interf-ui/_not-found.html +0 -1
  483. package/dist/interf-ui/_not-found.txt +0 -15
  484. package/dist/interf-ui/index.html +0 -1
  485. package/dist/interf-ui/index.txt +0 -20
  486. package/dist/packages/contracts/lib/preparation-paths.d.ts +0 -117
  487. package/dist/packages/contracts/lib/preparation-paths.js +0 -177
  488. package/dist/packages/engine/action-definitions.d.ts +0 -407
  489. package/dist/packages/engine/action-definitions.js +0 -1158
  490. package/dist/packages/engine/action-values.d.ts +0 -1
  491. package/dist/packages/engine/action-values.js +0 -1
  492. package/dist/packages/engine/agents/lib/args.d.ts +0 -4
  493. package/dist/packages/engine/agents/lib/args.js +0 -52
  494. package/dist/packages/engine/agents/lib/chart-guidance.d.ts +0 -1
  495. package/dist/packages/engine/agents/lib/chart-guidance.js +0 -8
  496. package/dist/packages/engine/agents/lib/constants.js +0 -28
  497. package/dist/packages/engine/agents/lib/logs.d.ts +0 -2
  498. package/dist/packages/engine/agents/lib/logs.js +0 -17
  499. package/dist/packages/engine/agents/lib/render.d.ts +0 -8
  500. package/dist/packages/engine/agents/lib/schema.d.ts +0 -8
  501. package/dist/packages/engine/agents/lib/schema.js +0 -7
  502. package/dist/packages/engine/agents/lib/shells.d.ts +0 -74
  503. package/dist/packages/engine/agents/lib/shells.js +0 -1052
  504. package/dist/packages/engine/agents/lib/verifiable-context-bootstrap.d.ts +0 -3
  505. package/dist/packages/engine/build/artifact-counts.d.ts +0 -1
  506. package/dist/packages/engine/build/billing-events.d.ts +0 -89
  507. package/dist/packages/engine/build/build-pipeline.js +0 -175
  508. package/dist/packages/engine/build/build-plan-runs.d.ts +0 -14
  509. package/dist/packages/engine/build/build-plan-runs.js +0 -31
  510. package/dist/packages/engine/build/build-stage-plan.d.ts +0 -16
  511. package/dist/packages/engine/build/build-stage-plan.js +0 -100
  512. package/dist/packages/engine/build/build-stage-runner.js +0 -94
  513. package/dist/packages/engine/build/build-target.js +0 -16
  514. package/dist/packages/engine/build/check-evaluator.js +0 -298
  515. package/dist/packages/engine/build/lib/schema.js +0 -316
  516. package/dist/packages/engine/build/reset.d.ts +0 -2
  517. package/dist/packages/engine/build/reset.js +0 -74
  518. package/dist/packages/engine/build/runtime-inventory.d.ts +0 -7
  519. package/dist/packages/engine/build/runtime-paths.d.ts +0 -8
  520. package/dist/packages/engine/build/runtime-paths.js +0 -26
  521. package/dist/packages/engine/build/runtime-runs.d.ts +0 -10
  522. package/dist/packages/engine/build/runtime-runs.js +0 -224
  523. package/dist/packages/engine/build/runtime.d.ts +0 -5
  524. package/dist/packages/engine/build/runtime.js +0 -4
  525. package/dist/packages/engine/build/source-files.d.ts +0 -46
  526. package/dist/packages/engine/build/source-files.js +0 -149
  527. package/dist/packages/engine/build/state-artifacts.d.ts +0 -9
  528. package/dist/packages/engine/build/state-artifacts.js +0 -14
  529. package/dist/packages/engine/build/state-health.d.ts +0 -4
  530. package/dist/packages/engine/build/state-io.d.ts +0 -11
  531. package/dist/packages/engine/build/state-io.js +0 -82
  532. package/dist/packages/engine/build/state-paths.d.ts +0 -5
  533. package/dist/packages/engine/build/state-paths.js +0 -16
  534. package/dist/packages/engine/build/state-view.d.ts +0 -5
  535. package/dist/packages/engine/build/state-view.js +0 -94
  536. package/dist/packages/engine/build/state.d.ts +0 -7
  537. package/dist/packages/engine/build/state.js +0 -12
  538. package/dist/packages/engine/build/validate-helpers.d.ts +0 -12
  539. package/dist/packages/engine/build/validate-helpers.js +0 -41
  540. package/dist/packages/engine/build/verifiable-context-paths.d.ts +0 -47
  541. package/dist/packages/engine/build/verifiable-context-paths.js +0 -121
  542. package/dist/packages/engine/build/verifiable-context-schema.d.ts +0 -21
  543. package/dist/packages/engine/build/verifiable-context-schema.js +0 -126
  544. package/dist/packages/engine/cloud-seams.d.ts +0 -115
  545. package/dist/packages/engine/cloud-seams.js +0 -84
  546. package/dist/packages/engine/index.d.ts +0 -22
  547. package/dist/packages/engine/index.js +0 -15
  548. package/dist/packages/engine/instance-paths.d.ts +0 -106
  549. package/dist/packages/engine/instance-paths.js +0 -171
  550. package/dist/packages/engine/lib/schema.d.ts +0 -6304
  551. package/dist/packages/engine/lib/schema.js +0 -730
  552. package/dist/packages/engine/native-run-handlers.d.ts +0 -25
  553. package/dist/packages/engine/preparation-store.d.ts +0 -105
  554. package/dist/packages/engine/preparation-store.js +0 -213
  555. package/dist/packages/engine/readiness-check-draft.d.ts +0 -20
  556. package/dist/packages/engine/readiness-check-draft.js +0 -111
  557. package/dist/packages/engine/requested-artifacts.d.ts +0 -5
  558. package/dist/packages/engine/routes.d.ts +0 -85
  559. package/dist/packages/engine/routes.js +0 -99
  560. package/dist/packages/engine/runtime-caches.d.ts +0 -76
  561. package/dist/packages/engine/runtime-caches.js +0 -191
  562. package/dist/packages/engine/runtime-proposal-helpers.d.ts +0 -35
  563. package/dist/packages/engine/runtime-proposal-helpers.js +0 -247
  564. package/dist/packages/engine/runtime.d.ts +0 -371
  565. package/dist/packages/engine/runtime.js +0 -2463
  566. package/dist/packages/engine/server.d.ts +0 -58
  567. package/dist/packages/engine/server.js +0 -1399
  568. package/dist/packages/engine/verify/readiness-check-run.d.ts +0 -82
  569. package/dist/packages/engine/verify/readiness-check-run.js +0 -265
  570. package/dist/packages/engine/verify/verify-paths.js +0 -61
  571. package/dist/packages/engine/verify/verify-sandbox.js +0 -88
  572. package/dist/packages/engine/verify/verify-specs.js +0 -114
  573. package/dist/packages/engine/verify/verify-targets.d.ts +0 -5
  574. package/dist/packages/engine/wire-schemas.d.ts +0 -547
  575. package/dist/packages/engine/wire-schemas.js +0 -59
  576. package/dist/packages/project/index.d.ts +0 -9
  577. package/dist/packages/project/interf-bootstrap.d.ts +0 -1
  578. package/dist/packages/project/interf-bootstrap.js +0 -1
  579. package/dist/packages/project/interf-scaffold.d.ts +0 -3
  580. package/dist/packages/project/interf-scaffold.js +0 -136
  581. package/dist/packages/project/interf.d.ts +0 -4
  582. package/dist/packages/project/interf.js +0 -3
  583. package/dist/packages/project/lib/schema.d.ts +0 -328
  584. package/dist/packages/project/lib/schema.js +0 -136
  585. package/dist/packages/project/preparation-entries.d.ts +0 -11
  586. package/dist/packages/project/preparation-entries.js +0 -49
  587. package/dist/packages/project/source-config.d.ts +0 -46
  588. package/dist/packages/project/source-config.js +0 -394
  589. package/dist/packages/project/source-folders.d.ts +0 -11
  590. package/public-repo/build-plans/interf-default/build/stages/shape/SKILL.md +0 -27
  591. package/public-repo/build-plans/interf-default/build/stages/structure/SKILL.md +0 -21
  592. package/public-repo/plugins/README.md +0 -9
  593. package/public-repo/plugins/interf/.claude-plugin/plugin.json +0 -21
  594. package/public-repo/plugins/interf/.mcp.json +0 -12
  595. package/public-repo/plugins/interf/README.md +0 -32
  596. package/public-repo/plugins/interf/skills/interf/SKILL.md +0 -376
  597. /package/dist/packages/{engine/agents/lib/types.js → runtime/actions/fields.js} +0 -0
  598. /package/dist/packages/{engine → runtime}/agents/lib/agents.d.ts +0 -0
  599. /package/dist/packages/{engine → runtime}/agents/lib/agents.js +0 -0
  600. /package/dist/packages/{engine → runtime}/agents/lib/execution.d.ts +0 -0
  601. /package/dist/packages/{engine → runtime}/agents/lib/preflight.d.ts +0 -0
  602. /package/dist/packages/{engine → runtime}/agents/lib/status.d.ts +0 -0
  603. /package/dist/packages/{engine/build/runtime-types.js → runtime/agents/lib/types.js} +0 -0
  604. /package/dist/packages/{engine/verify/verify-types.js → runtime/agents/providers/types.js} +0 -0
  605. /package/dist/packages/{engine → runtime}/agents/role-router.d.ts +0 -0
  606. /package/dist/packages/{engine → runtime}/build/build-execution.d.ts +0 -0
  607. /package/dist/packages/{engine → runtime}/build/build-execution.js +0 -0
  608. /package/dist/packages/{engine → runtime}/build/runtime-contracts.d.ts +0 -0
  609. /package/dist/packages/{engine → runtime}/build/runtime-prompt.d.ts +0 -0
  610. /package/dist/packages/{engine → runtime}/execution/adapters.d.ts +0 -0
  611. /package/dist/packages/{engine → runtime}/execution/adapters.js +0 -0
  612. /package/dist/packages/{engine → runtime}/execution/events.d.ts +0 -0
  613. /package/dist/packages/{engine → runtime}/execution/events.js +0 -0
  614. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.d.ts +0 -0
  615. /package/dist/packages/{engine → runtime}/verify/verify-profile-presets.js +0 -0
  616. /package/dist/packages/{engine → runtime}/verify/verify-types.d.ts +0 -0
@@ -0,0 +1,24 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ /**
4
+ * Cursor provider.
5
+ *
6
+ * Cursor is detected for `interf init` so the listing shows it, but
7
+ * Interf cannot drive automated Build runs through Cursor today.
8
+ * `buildArgs` therefore throws.
9
+ */
10
+ export const cursorProvider = {
11
+ name: "cursor",
12
+ displayName: "Cursor",
13
+ command: "cursor",
14
+ homeDir: join(homedir(), ".cursor"),
15
+ skillsDir: join(homedir(), ".cursor", "skills"),
16
+ supportsAutomatedRuns: false,
17
+ noiseFilters: [],
18
+ buildArgs() {
19
+ throw new Error('Cursor is not yet supported for automated Build runs.');
20
+ },
21
+ buildEnv(baseEnv) {
22
+ return { ...baseEnv };
23
+ },
24
+ };
@@ -0,0 +1,9 @@
1
+ import type { AgentProvider } from "./types.js";
2
+ export type { AgentProvider } from "./types.js";
3
+ export declare const BUILT_IN_PROVIDERS: ReadonlyArray<AgentProvider>;
4
+ /** Look up a built-in provider by name. Returns undefined for custom agents. */
5
+ export declare function getBuiltInProvider(name: string): AgentProvider | undefined;
6
+ /** True when `name` matches a built-in provider. */
7
+ export declare function isBuiltInProviderName(name: string): boolean;
8
+ /** All providers that support automated Build runs. */
9
+ export declare function automatableBuiltInProviders(): AgentProvider[];
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Agent provider registry.
3
+ *
4
+ * The full set of built-in agent providers Interf knows about. Engine
5
+ * code consumes this list as data — there are no name comparisons or
6
+ * `if (agent === "codex")` branches outside the provider files.
7
+ *
8
+ * User-registered custom agents (`source: "user"` in the registry) flow
9
+ * through a separate generic provider that builds spawn args from a
10
+ * stored command template; that path lives outside this list.
11
+ */
12
+ import { claudeCodeProvider } from "./claude-code.js";
13
+ import { codexProvider } from "./codex.js";
14
+ import { cursorProvider } from "./cursor.js";
15
+ export const BUILT_IN_PROVIDERS = [
16
+ claudeCodeProvider,
17
+ codexProvider,
18
+ cursorProvider,
19
+ ];
20
+ /** Look up a built-in provider by name. Returns undefined for custom agents. */
21
+ export function getBuiltInProvider(name) {
22
+ return BUILT_IN_PROVIDERS.find((provider) => provider.name === name);
23
+ }
24
+ /** True when `name` matches a built-in provider. */
25
+ export function isBuiltInProviderName(name) {
26
+ return BUILT_IN_PROVIDERS.some((provider) => provider.name === name);
27
+ }
28
+ /** All providers that support automated Build runs. */
29
+ export function automatableBuiltInProviders() {
30
+ return BUILT_IN_PROVIDERS.filter((provider) => provider.supportsAutomatedRuns);
31
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Agent provider contract.
3
+ *
4
+ * Every built-in agent (Claude Code, Codex, …) and every user-registered
5
+ * custom agent is exposed as an `AgentProvider`. The engine talks to
6
+ * providers through this interface — no `if (name === "codex")` branches
7
+ * anywhere outside `providers/<name>.ts`.
8
+ *
9
+ * The `Agent` interface in `../types.ts` remains a structural subset of
10
+ * `AgentProvider` so existing callers keep working while we migrate.
11
+ */
12
+ import type { AgentExecutionProfile } from "../lib/executors.js";
13
+ export interface AgentProvider {
14
+ /** Stable agent identifier. Engine code never branches on this value. */
15
+ name: string;
16
+ /** User-facing label. */
17
+ displayName: string;
18
+ /** Default command (first whitespace-separated token must resolve on PATH). */
19
+ command: string;
20
+ /** Where this agent stores its skills (used by detection + scaffolds). */
21
+ skillsDir: string;
22
+ /** Marker dir whose existence indicates the agent is installed locally. */
23
+ homeDir: string;
24
+ /**
25
+ * Whether Interf can drive this agent for automated Build runs today.
26
+ * Detection + the role-router consult this flag.
27
+ */
28
+ supportsAutomatedRuns: boolean;
29
+ /**
30
+ * Internal-acceptance defaults — the model + effort this provider uses
31
+ * when no explicit override is supplied during maintainer test runs.
32
+ * Normal user runs do not consume these unless they opt in.
33
+ */
34
+ defaultModel?: string;
35
+ defaultEffort?: string;
36
+ /**
37
+ * Stderr lines matching any of these regexps are treated as expected
38
+ * noise and suppressed from preflight failures + run logs.
39
+ */
40
+ noiseFilters: ReadonlyArray<RegExp>;
41
+ /** Build the spawn args for a `prompt` + execution profile. */
42
+ buildArgs(prompt: string, profile: AgentExecutionProfile): string[];
43
+ /** Build the spawn env from a base env (defaults to identity). */
44
+ buildEnv(baseEnv: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
45
+ /**
46
+ * Optional. Return true when a preflight failure is transient and the
47
+ * caller should retry. Defaults to false when the method is absent.
48
+ */
49
+ isTransientPreflightFailure?(stderr: string, errorMessage: string): boolean;
50
+ }
@@ -1,4 +1,4 @@
1
- import { type AgentRecord, type AgentsRegistry, type RoleMap } from "../../contracts/lib/schema.js";
1
+ import { type AgentPrefs, type AgentPrefsMap, type AgentRecord, type AgentsRegistry, type RoleMap } from "../../contracts/lib/schema.js";
2
2
  export declare const AGENTS_REGISTRY_FILENAME = "agents.json";
3
3
  /** `~/.interf/agents.json` — persisted custom agents + role-map. */
4
4
  export declare function agentsRegistryPath(): string;
@@ -10,8 +10,19 @@ export declare function agentsRegistryPath(): string;
10
10
  * unreadable; persisted custom agents always have `source: "user"`.
11
11
  */
12
12
  export declare function loadPersistedRegistry(): AgentsRegistry;
13
- /** Persist the on-disk part of the registry (custom agents + role-map). */
13
+ /** Persist the on-disk part of the registry (custom agents + role-map + prefs). */
14
14
  export declare function savePersistedRegistry(registry: AgentsRegistry): void;
15
+ /**
16
+ * Read the prefs map without merging anything else. Used by callers that
17
+ * only need the per-agent overrides (e.g. the run-time spawn merger).
18
+ */
19
+ export declare function loadAgentPrefs(): AgentPrefsMap;
20
+ /**
21
+ * Update one agent's prefs. Pass an empty object (or nullable fields set
22
+ * to null) to clear a specific value; pass a fully empty record to remove
23
+ * that agent's entry entirely. Built-in or custom agent — same code path.
24
+ */
25
+ export declare function setAgentPrefs(name: string, prefs: AgentPrefs): void;
15
26
  /**
16
27
  * Detect built-in agents present on this machine. Filtered to agents
17
28
  * whose marker home directory exists; we do NOT require the command
@@ -6,7 +6,7 @@
6
6
  * are detected dynamically at read time and merged with the persisted
7
7
  * custom agents. The role-map IS persisted.
8
8
  *
9
- * 0.15 contract:
9
+ * contract:
10
10
  * {
11
11
  * "agents": [
12
12
  * { "name": "opencode", "display_name": "OpenCode", "command": "opencode --prompt", "source": "user" }
@@ -22,9 +22,9 @@
22
22
  */
23
23
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
24
24
  import { join } from "node:path";
25
- import { AgentRecordSchema, AgentsRegistrySchema, CANONICAL_ROLES, } from "../../contracts/lib/schema.js";
25
+ import { AgentPrefsSchema, AgentRecordSchema, AgentsRegistrySchema, CANONICAL_ROLES, } from "../../contracts/lib/schema.js";
26
+ import { interfHomeRoot } from "../../contracts/lib/project-paths.js";
26
27
  import { readJsonFileWithSchema } from "../../contracts/utils/parse.js";
27
- import { interfHomeRoot } from "../instance-paths.js";
28
28
  import { agentCommandAvailable, detectAgents, supportsAutomatedRuns } from "./lib/detection.js";
29
29
  import { AGENTS } from "./lib/constants.js";
30
30
  export const AGENTS_REGISTRY_FILENAME = "agents.json";
@@ -47,16 +47,44 @@ export function loadPersistedRegistry() {
47
47
  const value = readJsonFileWithSchema(path, "agents registry", AgentsRegistrySchema);
48
48
  return value ?? AgentsRegistrySchema.parse({});
49
49
  }
50
- /** Persist the on-disk part of the registry (custom agents + role-map). */
50
+ /** Persist the on-disk part of the registry (custom agents + role-map + prefs). */
51
51
  export function savePersistedRegistry(registry) {
52
52
  const home = interfHomeRoot();
53
53
  mkdirSync(home, { recursive: true });
54
54
  const sanitized = {
55
- agents: registry.agents.map(({ available: _available, ...agent }) => AgentRecordSchema.parse({ ...agent, source: "user" })),
55
+ agents: registry.agents.map(({ available: _available, prefs: _prefs, ...agent }) => AgentRecordSchema.parse({ ...agent, source: "user" })),
56
56
  role_map: { ...registry.role_map },
57
+ agent_prefs: { ...(registry.agent_prefs ?? {}) },
57
58
  };
58
59
  writeFileSync(agentsRegistryPath(), `${JSON.stringify(sanitized, null, 2)}\n`);
59
60
  }
61
+ /**
62
+ * Read the prefs map without merging anything else. Used by callers that
63
+ * only need the per-agent overrides (e.g. the run-time spawn merger).
64
+ */
65
+ export function loadAgentPrefs() {
66
+ return loadPersistedRegistry().agent_prefs ?? {};
67
+ }
68
+ /**
69
+ * Update one agent's prefs. Pass an empty object (or nullable fields set
70
+ * to null) to clear a specific value; pass a fully empty record to remove
71
+ * that agent's entry entirely. Built-in or custom agent — same code path.
72
+ */
73
+ export function setAgentPrefs(name, prefs) {
74
+ const persisted = loadPersistedRegistry();
75
+ const next = { ...(persisted.agent_prefs ?? {}) };
76
+ const sanitized = AgentPrefsSchema.parse(prefs);
77
+ const empty = !sanitized.env_vars
78
+ && (sanitized.model === undefined || sanitized.model === null)
79
+ && (sanitized.effort === undefined || sanitized.effort === null);
80
+ if (empty) {
81
+ delete next[name];
82
+ }
83
+ else {
84
+ next[name] = sanitized;
85
+ }
86
+ savePersistedRegistry({ ...persisted, agent_prefs: next });
87
+ }
60
88
  /**
61
89
  * Detect built-in agents present on this machine. Filtered to agents
62
90
  * whose marker home directory exists; we do NOT require the command
@@ -112,9 +140,13 @@ export function listKnownBuiltinAgents() {
112
140
  * against `which` so a stale `~/.interf/agents.json` entry does not
113
141
  * appear as a usable choice.
114
142
  */
115
- function mergeAgents(builtin, persisted) {
143
+ function mergeAgents(builtin, persisted, prefsMap) {
116
144
  const seen = new Set(builtin.map((agent) => agent.name));
117
- const merged = builtin.map((agent) => ({ ...agent, available: true }));
145
+ const merged = builtin.map((agent) => ({
146
+ ...agent,
147
+ available: true,
148
+ ...(prefsMap[agent.name] ? { prefs: prefsMap[agent.name] } : {}),
149
+ }));
118
150
  for (const agent of persisted) {
119
151
  if (seen.has(agent.name))
120
152
  continue;
@@ -123,6 +155,7 @@ function mergeAgents(builtin, persisted) {
123
155
  ...agent,
124
156
  source: "user",
125
157
  available: agentCommandAvailable(agent.command),
158
+ ...(prefsMap[agent.name] ? { prefs: prefsMap[agent.name] } : {}),
126
159
  });
127
160
  }
128
161
  return merged;
@@ -161,7 +194,7 @@ function buildDefaultRoleMap(agents) {
161
194
  export function loadAgentsRegistry() {
162
195
  const persisted = loadPersistedRegistry();
163
196
  const builtinDetected = detectAutomatableBuiltinAgentRecords();
164
- const agents = mergeAgents(builtinDetected, persisted.agents);
197
+ const agents = mergeAgents(builtinDetected, persisted.agents, persisted.agent_prefs ?? {});
165
198
  // Seed the default role-map on first read when the persisted file
166
199
  // has no role-map entries AND we have at least one detectable agent.
167
200
  // (We do not write to disk yet; the seeded map is computed on the
@@ -180,7 +213,7 @@ export function loadAgentsRegistry() {
180
213
  }
181
214
  /** Pure helper — like `loadAgentsRegistry()` but works off in-memory data. */
182
215
  export function resolveRegistry(persisted, builtinDetected) {
183
- const agents = mergeAgents(builtinDetected, persisted.agents);
216
+ const agents = mergeAgents(builtinDetected, persisted.agents, persisted.agent_prefs ?? {});
184
217
  const hasPersistedEntries = Object.keys(persisted.role_map).length > 0;
185
218
  const roleMap = hasPersistedEntries
186
219
  ? { ...persisted.role_map }
@@ -197,6 +230,7 @@ export function updateRoleMap(nextRoleMap) {
197
230
  const next = {
198
231
  agents: current.agents,
199
232
  role_map: { ...nextRoleMap },
233
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
200
234
  };
201
235
  savePersistedRegistry(next);
202
236
  return next;
@@ -218,6 +252,7 @@ export function patchRoleMap(patch) {
218
252
  const updated = {
219
253
  agents: current.agents,
220
254
  role_map: next,
255
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
221
256
  };
222
257
  savePersistedRegistry(updated);
223
258
  return updated;
@@ -252,6 +287,7 @@ export function registerCustomAgent(input) {
252
287
  const next = {
253
288
  agents: [...current.agents, record],
254
289
  role_map: { ...current.role_map },
290
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
255
291
  };
256
292
  savePersistedRegistry(next);
257
293
  return next;
@@ -280,6 +316,7 @@ export function unregisterCustomAgent(name) {
280
316
  const next = {
281
317
  agents: remaining,
282
318
  role_map: trimmedRoleMap,
319
+ agent_prefs: { ...(current.agent_prefs ?? {}) },
283
320
  };
284
321
  savePersistedRegistry(next);
285
322
  return next;
@@ -298,7 +335,7 @@ export function setActiveAgent(name) {
298
335
  throw new Error("Agent name is required.");
299
336
  const persisted = loadPersistedRegistry();
300
337
  const builtinDetected = detectAutomatableBuiltinAgentRecords();
301
- const agents = mergeAgents(builtinDetected, persisted.agents);
338
+ const agents = mergeAgents(builtinDetected, persisted.agents, persisted.agent_prefs ?? {});
302
339
  if (!agents.some((agent) => agent.name === trimmedName)) {
303
340
  throw new Error(`Agent "${trimmedName}" is not detected or registered. Install or register it before making it active.`);
304
341
  }
@@ -315,6 +352,7 @@ export function setActiveAgent(name) {
315
352
  const next = {
316
353
  agents: persisted.agents,
317
354
  role_map: nextRoleMap,
355
+ agent_prefs: { ...(persisted.agent_prefs ?? {}) },
318
356
  };
319
357
  savePersistedRegistry(next);
320
358
  return next;
@@ -27,7 +27,7 @@ export interface BuildRoleExecutorBundleInput {
27
27
  executionProfile?: AgentExecutionProfile;
28
28
  }
29
29
  /**
30
- * Build a per-role executor bundle from a registry snapshot. The
30
+ * Build a per-role executor bundle from registry state. The
31
31
  * `defaultExecutor` is what the pipeline already passes for the
32
32
  * single-active-agent case (so role lookups that fall through to
33
33
  * `fallback-active` resolve to the same executor).
@@ -2,9 +2,9 @@
2
2
  * Role-aware executor factory.
3
3
  *
4
4
  * Bridges the registry layer (`AgentRecord` / `RoleMap`) to the runtime
5
- * layer (`AgentExecutor`). Builds a per-agent-name `AgentExecutor`
5
+ * layer (`AgentExecutor`). Creates a per-agent-name `AgentExecutor`
6
6
  * map up front and exposes a `resolveExecutorForRole(role)` helper that
7
- * the build / readiness-check pipelines can call per-stage.
7
+ * the build / benchmark pipelines can call per-stage.
8
8
  *
9
9
  * Falls back gracefully: when a role isn't mapped, or the mapped agent
10
10
  * is missing, we fall through to `general` and ultimately to the
@@ -33,20 +33,21 @@ function agentRecordToAgent(record) {
33
33
  };
34
34
  }
35
35
  /**
36
- * Build a per-role executor bundle from a registry snapshot. The
36
+ * Build a per-role executor bundle from registry state. The
37
37
  * `defaultExecutor` is what the pipeline already passes for the
38
38
  * single-active-agent case (so role lookups that fall through to
39
39
  * `fallback-active` resolve to the same executor).
40
40
  */
41
41
  export function buildRoleExecutorBundle(input) {
42
42
  const executors = new Map();
43
+ const executionProfile = input.executionProfile ?? input.defaultExecutor.executionProfile;
43
44
  for (const record of input.agents) {
44
45
  const agent = agentRecordToAgent(record);
45
- executors.set(record.name, createLocalAgentExecutor(agent, input.executionProfile));
46
+ executors.set(record.name, createLocalAgentExecutor(agent, executionProfile));
46
47
  }
47
48
  // Make sure the active / default executor is reachable by name
48
49
  // even when the active agent isn't formally in the registry yet
49
- // (e.g. legacy single-active setups during the 0.14 → 0.15 transition).
50
+ // (e.g. previous single-active setups inherited from older configs).
50
51
  if (input.activeAgent && !executors.has(input.activeAgent.name)) {
51
52
  executors.set(input.activeAgent.name, input.defaultExecutor);
52
53
  }
@@ -63,8 +64,9 @@ export function buildRoleExecutorBundle(input) {
63
64
  const result = resolveAgentForRole(role, context);
64
65
  if ("error" in result) {
65
66
  // Role-router refused — fall back to the default executor and
66
- // synthesize a `fallback-active` resolution. This keeps prepare
67
- // runs alive when the registry is empty / mid-edit.
67
+ // synthesize a `fallback-active` resolution. This is the explicit
68
+ // single-active-agent compatibility path; callers surface the
69
+ // fallback source in run logs.
68
70
  const synthetic = {
69
71
  agent: input.activeAgent
70
72
  ?? {
@@ -4,7 +4,9 @@
4
4
  * failure.
5
5
  */
6
6
  export function resolveAgentForRole(role, context) {
7
- if (context.agents.length === 0) {
7
+ const availableAgents = context.agents.filter((agent) => agent.available !== false);
8
+ const activeAgent = context.activeAgent?.available === false ? null : context.activeAgent;
9
+ if (availableAgents.length === 0) {
8
10
  return {
9
11
  error: "no-agents",
10
12
  detail: "No agents are available. Install Claude Code, Codex, or another agent CLI, " +
@@ -15,7 +17,7 @@ export function resolveAgentForRole(role, context) {
15
17
  // 1. Explicit role-map entry for the requested role.
16
18
  const explicitName = context.roleMap[trimmedRole];
17
19
  if (explicitName) {
18
- const found = context.agents.find((agent) => agent.name === explicitName);
20
+ const found = availableAgents.find((agent) => agent.name === explicitName);
19
21
  if (found) {
20
22
  return { agent: found, role: trimmedRole, source: "explicit" };
21
23
  }
@@ -29,16 +31,16 @@ export function resolveAgentForRole(role, context) {
29
31
  if (trimmedRole !== "general") {
30
32
  const generalName = context.roleMap["general"];
31
33
  if (generalName) {
32
- const found = context.agents.find((agent) => agent.name === generalName);
34
+ const found = availableAgents.find((agent) => agent.name === generalName);
33
35
  if (found) {
34
36
  return { agent: found, role: trimmedRole, source: "fallback-general" };
35
37
  }
36
38
  }
37
39
  }
38
40
  // 3. Active agent.
39
- if (context.activeAgent) {
41
+ if (activeAgent) {
40
42
  return {
41
- agent: context.activeAgent,
43
+ agent: activeAgent,
42
44
  role: trimmedRole,
43
45
  source: "fallback-active",
44
46
  };
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Account context types.
3
+ *
4
+ * The current account is a small projection of the WorkOS user identity +
5
+ * Stripe subscription state that the engine and CLI carry around for the
6
+ * lifetime of a session. It is populated at engine boot from
7
+ * `~/.interf/auth/session.json`, when present, and is null for unauthenticated
8
+ * (loopback-only, free-tier) sessions.
9
+ *
10
+ * No vendor types are imported here — the engine treats this as a stable
11
+ * shape and providers (WorkOS today, future swaps) map their domain into it.
12
+ */
13
+ export type AccountPlan = "free" | "pro" | "enterprise" | "anonymous";
14
+ export interface AccountEntitlements {
15
+ /** Maximum number of active Projects this account may create. */
16
+ max_active_projects: number;
17
+ /** Pro features unlocked by the current plan. */
18
+ pro_features: ReadonlyArray<string>;
19
+ }
20
+ export interface CurrentAccount {
21
+ /** Stable account / user identifier (WorkOS user id, e.g. `user_01H...`). */
22
+ user_id: string;
23
+ /** Display email captured at last login. */
24
+ email: string;
25
+ /** Display name (optional; falls back to the email local-part in the UI). */
26
+ display_name: string | null;
27
+ /** Subscription tier. */
28
+ plan: AccountPlan;
29
+ /** Computed entitlements for the current plan. */
30
+ entitlements: AccountEntitlements;
31
+ /** ISO timestamp the session was last refreshed (used for TTL checks). */
32
+ refreshed_at: string;
33
+ }
34
+ /**
35
+ * Tier defaults — feature-based, not usage-based.
36
+ *
37
+ * Three tiers ship; Teams is a "coming soon" marketing surface, not a real
38
+ * plan, so it has no entry here. The Free cap is the conversion lever;
39
+ * Pro removes it. Enterprise is structurally different from Pro — not a
40
+ * bigger Pro bundle but a separate self-hosted deployment with SSO + audit
41
+ * log + governance + custom support.
42
+ *
43
+ * Pro features carry through the locked strategy:
44
+ * - benchmarks (Pro: unlimited; Free: one run)
45
+ * - self-improving Build Plans
46
+ * - multi-source per Project
47
+ * - scheduled resyncs
48
+ * - export bundles
49
+ * - API access
50
+ */
51
+ export declare const TIER_ENTITLEMENTS: Record<AccountPlan, AccountEntitlements>;
52
+ export declare function entitlementsForPlan(plan: AccountPlan): AccountEntitlements;
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Account context types.
3
+ *
4
+ * The current account is a small projection of the WorkOS user identity +
5
+ * Stripe subscription state that the engine and CLI carry around for the
6
+ * lifetime of a session. It is populated at engine boot from
7
+ * `~/.interf/auth/session.json`, when present, and is null for unauthenticated
8
+ * (loopback-only, free-tier) sessions.
9
+ *
10
+ * No vendor types are imported here — the engine treats this as a stable
11
+ * shape and providers (WorkOS today, future swaps) map their domain into it.
12
+ */
13
+ /**
14
+ * Tier defaults — feature-based, not usage-based.
15
+ *
16
+ * Three tiers ship; Teams is a "coming soon" marketing surface, not a real
17
+ * plan, so it has no entry here. The Free cap is the conversion lever;
18
+ * Pro removes it. Enterprise is structurally different from Pro — not a
19
+ * bigger Pro bundle but a separate self-hosted deployment with SSO + audit
20
+ * log + governance + custom support.
21
+ *
22
+ * Pro features carry through the locked strategy:
23
+ * - benchmarks (Pro: unlimited; Free: one run)
24
+ * - self-improving Build Plans
25
+ * - multi-source per Project
26
+ * - scheduled resyncs
27
+ * - export bundles
28
+ * - API access
29
+ */
30
+ export const TIER_ENTITLEMENTS = {
31
+ anonymous: {
32
+ max_active_projects: 10,
33
+ pro_features: [],
34
+ },
35
+ free: {
36
+ max_active_projects: 10,
37
+ pro_features: [],
38
+ },
39
+ pro: {
40
+ max_active_projects: Number.POSITIVE_INFINITY,
41
+ pro_features: [
42
+ "benchmarking-unlimited",
43
+ "self-improving-build-plans",
44
+ "multi-source-per-project",
45
+ "scheduled-resyncs",
46
+ "flow-export",
47
+ "api-access",
48
+ ],
49
+ },
50
+ enterprise: {
51
+ max_active_projects: Number.POSITIVE_INFINITY,
52
+ pro_features: [
53
+ "benchmarking-unlimited",
54
+ "self-improving-build-plans",
55
+ "multi-source-per-project",
56
+ "scheduled-resyncs",
57
+ "flow-export",
58
+ "api-access",
59
+ "sso",
60
+ "audit-log",
61
+ "governance",
62
+ "self-hosted",
63
+ ],
64
+ },
65
+ };
66
+ export function entitlementsForPlan(plan) {
67
+ return TIER_ENTITLEMENTS[plan] ?? TIER_ENTITLEMENTS.anonymous;
68
+ }
@@ -0,0 +1,73 @@
1
+ /**
2
+ * PKCE auth flow orchestration.
3
+ *
4
+ * Drives the public-client OAuth dance: spawns a loopback HTTP server on
5
+ * 127.0.0.1, asks WorkOS for an authorize URL bound to that server's
6
+ * dynamic port, opens the user's browser at AuthKit, and waits for the
7
+ * callback. On callback, the returned `state` is checked against the SDK-
8
+ * generated value and the `code` is exchanged for `{ user, accessToken,
9
+ * refreshToken }` via `authenticateWithCode` with the stored `codeVerifier`.
10
+ *
11
+ * No part of this module touches `~/.interf/auth/*`. Callers (CLI today,
12
+ * desktop shell later) take the returned tokens and decide what to persist.
13
+ *
14
+ * The `transport` seam lets tests stand in for the WorkOS SDK without env
15
+ * config or live HTTP. Production callers use `defaultPkceTransport()`.
16
+ */
17
+ /** Shape we need from the WorkOS SDK. Narrowed so the seam is small. */
18
+ export interface PkceTransport {
19
+ getAuthorizationUrlWithPKCE(input: {
20
+ provider: "authkit";
21
+ redirectUri: string;
22
+ clientId: string;
23
+ loginHint?: string;
24
+ }): Promise<{
25
+ url: string;
26
+ state: string;
27
+ codeVerifier: string;
28
+ }>;
29
+ authenticateWithCode(input: {
30
+ code: string;
31
+ codeVerifier: string;
32
+ clientId: string;
33
+ }): Promise<AuthenticationResult>;
34
+ }
35
+ /** Minimum AuthenticationResponse fields we care about. */
36
+ export interface AuthenticationResult {
37
+ user: {
38
+ id: string;
39
+ email: string;
40
+ firstName?: string | null;
41
+ lastName?: string | null;
42
+ };
43
+ accessToken: string;
44
+ refreshToken: string;
45
+ }
46
+ export interface PkceFlowOptions {
47
+ /** Loopback host to bind. Default 127.0.0.1. */
48
+ callbackHost?: string;
49
+ /** Loopback port to bind. Default 0 (OS-assigned). */
50
+ callbackPort?: number;
51
+ /** Open the user's browser automatically. Default true. */
52
+ autoOpenBrowser?: boolean;
53
+ /** Prefill the AuthKit email field. */
54
+ loginHint?: string;
55
+ /** Hard timeout waiting for callback. Default 5 min. */
56
+ timeoutMs?: number;
57
+ /** Test hook fired after authorize URL is built. Receives `(url, redirectUri)`. */
58
+ onAuthorizeUrl?: (url: string, redirectUri: string) => Promise<void> | void;
59
+ }
60
+ export declare class AuthFlowError extends Error {
61
+ constructor(message: string);
62
+ }
63
+ /**
64
+ * Default transport — proxies to the real WorkOS SDK. Lazy-loads the
65
+ * singleton client on first call so importing this module does not require
66
+ * env config.
67
+ */
68
+ export declare function defaultPkceTransport(): PkceTransport;
69
+ /**
70
+ * Run the full PKCE flow end-to-end. Returns the WorkOS tokens + user.
71
+ * Always closes the loopback server before returning, even on error.
72
+ */
73
+ export declare function runPkceFlow(transport: PkceTransport, options?: PkceFlowOptions): Promise<AuthenticationResult>;