@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,373 @@
1
+ /**
2
+ * `interf runtime` — start the local service in the foreground until Ctrl-C.
3
+ *
4
+ * interf runtime # start on default port; hard error if port busy
5
+ * interf runtime start # start the service in the background
6
+ * interf runtime stop # send SIGTERM to the running service
7
+ * interf runtime status # print service info via the connected URL
8
+ *
9
+ * Pure server. No reuse / register-with-existing logic. Writes
10
+ * `~/.interf/connection.json` on startup so subsequent CLI commands can
11
+ * connect without a pointer file.
12
+ */
13
+ import chalk from "chalk";
14
+ import { closeSync, mkdirSync, openSync, readFileSync } from "node:fs";
15
+ import { spawn } from "node:child_process";
16
+ import { dirname } from "node:path";
17
+ import { LOCAL_SERVICE_DEFAULT_HOST, LOCAL_SERVICE_DEFAULT_PORT, buildLocalServiceUrl, } from "../../packages/runtime/service/routes.js";
18
+ import { startLocalService } from "../../packages/runtime/service/server.js";
19
+ import { createNativeLocalServiceRunHandlers } from "../../packages/runtime/native-run-handlers.js";
20
+ import { CONNECT_OR_ERROR_HINT, clearConnection, readActiveConnection, writeConnection, } from "../../packages/runtime/connection-config.js";
21
+ import { serviceRegistryPath } from "../../packages/contracts/lib/project-paths.js";
22
+ function packageVersionFromManifest() {
23
+ try {
24
+ const url = new URL("../../../package.json", import.meta.url);
25
+ const raw = readFileSync(url, "utf8");
26
+ const parsed = JSON.parse(raw);
27
+ return parsed.version;
28
+ }
29
+ catch {
30
+ return undefined;
31
+ }
32
+ }
33
+ function isPortInUseError(error) {
34
+ if (!error || typeof error !== "object")
35
+ return false;
36
+ const code = error.code;
37
+ return code === "EADDRINUSE";
38
+ }
39
+ export async function runRuntimeForeground(args) {
40
+ const host = args.host ?? LOCAL_SERVICE_DEFAULT_HOST;
41
+ const port = args.port ?? LOCAL_SERVICE_DEFAULT_PORT;
42
+ let service;
43
+ try {
44
+ service = await startLocalService({
45
+ host,
46
+ port,
47
+ packageVersion: packageVersionFromManifest(),
48
+ handlers: createNativeLocalServiceRunHandlers(),
49
+ ownerKind: args.appOwned ? "desktop-app" : "headless",
50
+ ...(args.parentPid ? { ownerPid: args.parentPid } : {}),
51
+ });
52
+ }
53
+ catch (error) {
54
+ if (isPortInUseError(error)) {
55
+ console.error(chalk.red(`Error: another Interf local service is already running at ${buildLocalServiceUrl({ host, port })}.`));
56
+ console.error("Stop it first with `interf runtime stop`.");
57
+ process.exit(1);
58
+ }
59
+ throw error;
60
+ }
61
+ const shutdown = async () => {
62
+ try {
63
+ await service.close();
64
+ }
65
+ catch {
66
+ // best effort
67
+ }
68
+ process.exit(0);
69
+ };
70
+ console.log();
71
+ console.log(` Interf service: ${chalk.bold(service.url)}${args.appOwned ? chalk.dim(" (app-owned)") : ""}`);
72
+ console.log(` Health: ${service.url}/health`);
73
+ console.log(chalk.dim(" Press Ctrl-C to stop."));
74
+ console.log();
75
+ process.on("SIGINT", shutdown);
76
+ process.on("SIGTERM", shutdown);
77
+ if (args.appOwned && args.parentPid) {
78
+ const parentPid = args.parentPid;
79
+ const monitor = setInterval(() => {
80
+ try {
81
+ process.kill(parentPid, 0);
82
+ }
83
+ catch {
84
+ clearInterval(monitor);
85
+ void shutdown();
86
+ }
87
+ }, 1000);
88
+ monitor.unref();
89
+ }
90
+ await new Promise(() => {
91
+ /* block forever; signals trigger shutdown */
92
+ });
93
+ }
94
+ async function isServiceReachable(url) {
95
+ try {
96
+ const response = await fetch(`${url}/health`);
97
+ return response.status === 200;
98
+ }
99
+ catch {
100
+ return false;
101
+ }
102
+ }
103
+ async function serviceRequiresAuth(url) {
104
+ try {
105
+ const response = await fetch(`${url}/v1/instance`);
106
+ if (response.status !== 200)
107
+ return true;
108
+ const body = await response.json();
109
+ return body.auth_required === true;
110
+ }
111
+ catch {
112
+ return true;
113
+ }
114
+ }
115
+ function activeConnectionForUrl(url) {
116
+ const conn = readActiveConnection();
117
+ if (!conn)
118
+ return null;
119
+ return conn.url.replace(/\/+$/, "") === url.replace(/\/+$/, "")
120
+ ? { url: conn.url.replace(/\/+$/, ""), auth_token: conn.auth_token }
121
+ : null;
122
+ }
123
+ async function waitForService(url, timeoutMs) {
124
+ const started = Date.now();
125
+ while (Date.now() - started < timeoutMs) {
126
+ if (await isServiceReachable(url))
127
+ return true;
128
+ await new Promise((resolveWait) => setTimeout(resolveWait, 150));
129
+ }
130
+ return false;
131
+ }
132
+ function managedRuntimeLogPath(port) {
133
+ return `${dirname(serviceRegistryPath())}/interf-runtime-${port}.log`;
134
+ }
135
+ export async function runRuntimeStart(args) {
136
+ const host = args.host ?? LOCAL_SERVICE_DEFAULT_HOST;
137
+ const port = args.port ?? LOCAL_SERVICE_DEFAULT_PORT;
138
+ const url = buildLocalServiceUrl({ host, port });
139
+ if (await isServiceReachable(url)) {
140
+ const existing = activeConnectionForUrl(url);
141
+ if (existing) {
142
+ writeConnection(existing);
143
+ }
144
+ else if (await serviceRequiresAuth(url)) {
145
+ console.error(chalk.red(`Interf local service is already running at ${chalk.bold(url)}, but no bearer token is available.`));
146
+ console.error("Use the existing connection.json, pass --token, or restart the service from this CLI.");
147
+ process.exit(1);
148
+ }
149
+ else {
150
+ writeConnection({ url, auth_token: null });
151
+ }
152
+ console.log(chalk.green(`Interf local service is already running at ${chalk.bold(url)}.`));
153
+ return;
154
+ }
155
+ const binPath = process.argv[1];
156
+ if (!binPath) {
157
+ console.error(chalk.red("Cannot locate the Interf CLI entrypoint for managed start."));
158
+ console.error("Try running `interf runtime` in a separate terminal instead.");
159
+ process.exit(1);
160
+ }
161
+ const logPath = args.log ?? managedRuntimeLogPath(port);
162
+ mkdirSync(dirname(logPath), { recursive: true });
163
+ const stdoutFd = openSync(logPath, "a");
164
+ const stderrFd = openSync(logPath, "a");
165
+ let child;
166
+ try {
167
+ child = spawn(process.execPath, [binPath, "runtime", "--host", host, "--port", String(port)], {
168
+ detached: true,
169
+ stdio: ["ignore", stdoutFd, stderrFd],
170
+ env: process.env,
171
+ });
172
+ child.unref();
173
+ }
174
+ finally {
175
+ closeSync(stdoutFd);
176
+ closeSync(stderrFd);
177
+ }
178
+ const ready = await waitForService(url, args.timeoutMs ?? 5000);
179
+ if (!ready) {
180
+ console.error(chalk.red(`Timed out waiting for Interf local service at ${url}.`));
181
+ console.error(`Log: ${logPath}`);
182
+ process.exit(1);
183
+ }
184
+ const conn = activeConnectionForUrl(url);
185
+ if (conn) {
186
+ writeConnection(conn);
187
+ }
188
+ else if (await serviceRequiresAuth(url)) {
189
+ console.error(chalk.red(`Interf local service started at ${url}, but no bearer token was written to connection.json.`));
190
+ console.error(`Log: ${logPath}`);
191
+ process.exit(1);
192
+ }
193
+ else {
194
+ writeConnection({ url, auth_token: null });
195
+ }
196
+ console.log(chalk.green(`Started Interf local service at ${chalk.bold(url)}.`));
197
+ console.log(`Log: ${logPath}`);
198
+ console.log(chalk.dim("Stop it with `interf runtime stop`."));
199
+ }
200
+ function findServicePidByUrl(url) {
201
+ try {
202
+ const raw = readFileSync(serviceRegistryPath(), "utf8");
203
+ const parsed = JSON.parse(raw);
204
+ const entry = parsed.services?.find((s) => s.url === url);
205
+ return entry?.pid ?? null;
206
+ }
207
+ catch {
208
+ return null;
209
+ }
210
+ }
211
+ function isPidAlive(pid) {
212
+ try {
213
+ // Signal 0 is a no-op probe — succeeds if the PID exists and we can
214
+ // signal it; throws ESRCH otherwise.
215
+ process.kill(pid, 0);
216
+ return true;
217
+ }
218
+ catch {
219
+ return false;
220
+ }
221
+ }
222
+ /**
223
+ * Scan ~/.interf/services.json for engines whose PID is still alive.
224
+ * Used by `interf runtime stop` when ~/.interf/connection.json is missing
225
+ * — the registry tells us which local service processes are actually running
226
+ * regardless of which one the wizard last connected to.
227
+ */
228
+ function listLiveServicesFromRegistry() {
229
+ try {
230
+ const raw = readFileSync(serviceRegistryPath(), "utf8");
231
+ const parsed = JSON.parse(raw);
232
+ return (parsed.services ?? []).filter((entry) => typeof entry.pid === "number" && isPidAlive(entry.pid));
233
+ }
234
+ catch {
235
+ return [];
236
+ }
237
+ }
238
+ export async function runRuntimeStop(args) {
239
+ // Resolution order: explicit --url override → active connection.json
240
+ // → fall back to scanning services.json for any live service. The
241
+ // last fallback recovers from the case where connection.json was
242
+ // cleared while a service was still running (e.g. another `interf
243
+ // runtime` attempt failed mid-startup, or `interf logout` was run while
244
+ // the service kept going).
245
+ const conn = readActiveConnection({
246
+ urlOverride: args.url,
247
+ authTokenOverride: args.token,
248
+ });
249
+ let urlToStop = conn ? conn.url.replace(/\/+$/, "") : null;
250
+ let pidToStop = urlToStop ? findServicePidByUrl(urlToStop) : null;
251
+ if (!pidToStop) {
252
+ const liveServices = listLiveServicesFromRegistry();
253
+ if (liveServices.length === 0) {
254
+ console.error("No live Interf local service to stop.");
255
+ console.error("Checked ~/.interf/connection.json and ~/.interf/services.json — neither pointed at a running process.");
256
+ process.exit(1);
257
+ }
258
+ if (liveServices.length > 1 && !urlToStop) {
259
+ console.error(`Multiple live Interf local services registered. Pick one with --url:`);
260
+ for (const entry of liveServices) {
261
+ console.error(` ${entry.url} (pid ${entry.pid})`);
262
+ }
263
+ process.exit(1);
264
+ }
265
+ const target = urlToStop
266
+ ? liveServices.find((entry) => entry.url === urlToStop)
267
+ : liveServices[0];
268
+ if (!target) {
269
+ console.error(`No live local service matches ${urlToStop ?? "the active connection"} in services.json.`);
270
+ process.exit(1);
271
+ }
272
+ urlToStop = target.url;
273
+ pidToStop = target.pid;
274
+ if (!conn) {
275
+ console.log(chalk.dim(` No active connection.json — recovering service pid ${pidToStop} from services.json.`));
276
+ }
277
+ }
278
+ try {
279
+ process.kill(pidToStop, "SIGTERM");
280
+ console.log(chalk.green(`Sent SIGTERM to service pid ${pidToStop} (${urlToStop}).`));
281
+ if (conn)
282
+ clearConnection();
283
+ }
284
+ catch (error) {
285
+ console.error(`Failed to stop service pid ${pidToStop}: ${error instanceof Error ? error.message : String(error)}`);
286
+ process.exit(1);
287
+ }
288
+ }
289
+ export async function runRuntimeStatus(args) {
290
+ const existingForUrl = args.url ? activeConnectionForUrl(args.url) : null;
291
+ const conn = readActiveConnection({
292
+ urlOverride: args.url,
293
+ authTokenOverride: args.token ?? existingForUrl?.auth_token ?? null,
294
+ });
295
+ if (!conn) {
296
+ console.error(CONNECT_OR_ERROR_HINT);
297
+ process.exit(1);
298
+ }
299
+ const url = conn.url.replace(/\/+$/, "");
300
+ try {
301
+ const headers = new Headers();
302
+ if (conn.auth_token)
303
+ headers.set("authorization", `Bearer ${conn.auth_token}`);
304
+ const response = await fetch(`${url}/v1/instance`, { headers });
305
+ const raw = await response.text();
306
+ if (response.status !== 200) {
307
+ console.error(chalk.red(`Local service status request failed (HTTP ${response.status}).`));
308
+ if (raw)
309
+ console.error(raw);
310
+ process.exit(1);
311
+ }
312
+ if (args.requireOwnerKind || args.requireOwnerPid) {
313
+ const parsed = JSON.parse(raw);
314
+ if (args.requireOwnerKind && parsed.owner_kind !== args.requireOwnerKind) {
315
+ console.error(chalk.red(`Local service owner mismatch: expected ${args.requireOwnerKind}, got ${String(parsed.owner_kind ?? "unknown")}.`));
316
+ process.exit(1);
317
+ }
318
+ if (args.requireOwnerPid && parsed.owner_pid !== args.requireOwnerPid) {
319
+ console.error(chalk.red(`Local service owner pid mismatch: expected ${args.requireOwnerPid}, got ${String(parsed.owner_pid ?? "unknown")}.`));
320
+ process.exit(1);
321
+ }
322
+ }
323
+ console.log(raw);
324
+ }
325
+ catch (error) {
326
+ console.error(chalk.red(`Local service ${url} unreachable: ${error instanceof Error ? error.message : String(error)}`));
327
+ process.exit(1);
328
+ }
329
+ }
330
+ export const runtimeCommand = {
331
+ command: "runtime [subcommand]",
332
+ describe: "Start / stop / inspect the Interf local service",
333
+ builder: (yargs) => yargs
334
+ .command("start", "Start the local service in the background", (y) => y
335
+ .option("host", { type: "string", default: LOCAL_SERVICE_DEFAULT_HOST, describe: "Host to bind" })
336
+ .option("port", { type: "number", default: LOCAL_SERVICE_DEFAULT_PORT, describe: "Port to bind" })
337
+ .option("timeout-ms", { type: "number", default: 5000, describe: "How long to wait for startup" })
338
+ .option("log", { type: "string", describe: "Path to write background service logs" }), runRuntimeStart)
339
+ .command("stop", "Stop the connected local service", (y) => y
340
+ .option("url", { type: "string", describe: "Override the active connection URL" })
341
+ .option("token", { type: "string", describe: "Override the active bearer token" }), runRuntimeStop)
342
+ .command("status", "Show local service status via the connected URL", (y) => y
343
+ .option("url", { type: "string", describe: "Override the active connection URL" })
344
+ .option("token", { type: "string", describe: "Override the active bearer token" })
345
+ .option("require-owner-kind", {
346
+ choices: ["desktop-app", "headless"],
347
+ describe: "Exit non-zero unless the connected service has this owner kind",
348
+ hidden: true,
349
+ })
350
+ .option("require-owner-pid", {
351
+ type: "number",
352
+ describe: "Exit non-zero unless the connected service was started for this owner PID",
353
+ hidden: true,
354
+ }), runRuntimeStatus)
355
+ .command("$0", "Start the local service in the foreground (default)", (y) => y
356
+ .option("host", { type: "string", default: LOCAL_SERVICE_DEFAULT_HOST, describe: "Host to bind" })
357
+ .option("port", { type: "number", default: LOCAL_SERVICE_DEFAULT_PORT, describe: "Port to bind" })
358
+ .option("app-owned", {
359
+ type: "boolean",
360
+ default: false,
361
+ describe: "Run as a foreground service child process",
362
+ hidden: true,
363
+ })
364
+ .option("parent-pid", {
365
+ type: "number",
366
+ describe: "Parent process pid for app-owned service shutdown",
367
+ hidden: true,
368
+ }), runRuntimeForeground)
369
+ .strict(),
370
+ handler: () => {
371
+ /* yargs subcommand handlers do the work */
372
+ },
373
+ };
@@ -2,6 +2,7 @@ import type { CommandModule } from "yargs";
2
2
  interface StatusArgs {
3
3
  url?: string;
4
4
  token?: string;
5
+ debug?: boolean;
5
6
  }
6
7
  export declare const statusCommand: CommandModule<unknown, StatusArgs>;
7
8
  export {};
@@ -1,36 +1,17 @@
1
1
  /**
2
- * `interf status` — print connection state + preparation summary.
2
+ * `interf status` — print connection state + Project summary.
3
3
  */
4
4
  import chalk from "chalk";
5
- import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/engine/connection-config.js";
6
- async function callJson(url, token) {
7
- const headers = new Headers();
8
- if (token)
9
- headers.set("authorization", `Bearer ${token}`);
10
- try {
11
- const response = await fetch(url, { headers });
12
- const raw = await response.text();
13
- let body = null;
14
- if (raw) {
15
- try {
16
- body = JSON.parse(raw);
17
- }
18
- catch {
19
- body = null;
20
- }
21
- }
22
- return { status: response.status, body };
23
- }
24
- catch {
25
- return { status: 0, body: null };
26
- }
27
- }
5
+ import { CONNECT_OR_ERROR_HINT, readActiveConnection } from "../../packages/runtime/connection-config.js";
6
+ import { callJsonSafe } from "../lib/http-client.js";
7
+ import { InstanceResourceSchema, ProjectListResponseSchema, } from "../../packages/runtime/schemas/index.js";
28
8
  export const statusCommand = {
29
9
  command: "status",
30
- describe: "Show connection + preparation summary",
10
+ describe: "Show connection + Project summary",
31
11
  builder: (yargs) => yargs
32
12
  .option("url", { type: "string", describe: "Override the active connection URL" })
33
- .option("token", { type: "string", describe: "Override the active bearer token" }),
13
+ .option("token", { type: "string", describe: "Override the active bearer token" })
14
+ .option("debug", { type: "boolean", default: false, describe: "Show debug metadata such as package version" }),
34
15
  handler: async (args) => {
35
16
  const conn = readActiveConnection({
36
17
  urlOverride: args.url,
@@ -42,37 +23,46 @@ export const statusCommand = {
42
23
  }
43
24
  const url = conn.url.replace(/\/+$/, "");
44
25
  const token = conn.auth_token;
45
- const instance = await callJson(`${url}/v1/instance`, token);
26
+ const instance = await callJsonSafe(`${url}/v1/instance`, token);
46
27
  if (instance.status === 0) {
47
28
  console.error(chalk.red(`Connection ${url} is unreachable.`));
48
29
  console.error(CONNECT_OR_ERROR_HINT);
49
30
  process.exit(1);
50
31
  }
32
+ const instanceResource = InstanceResourceSchema.safeParse(instance.body);
33
+ if (!instanceResource.success) {
34
+ console.error(chalk.red("Connected service returned an invalid instance resource."));
35
+ process.exit(1);
36
+ }
51
37
  console.log();
52
- console.log(chalk.bold(" Interf engine"));
38
+ console.log(chalk.bold(" Interf local service"));
53
39
  console.log(` URL: ${url}`);
54
- if (instance.body?.pid)
55
- console.log(` PID: ${instance.body.pid}`);
56
- if (instance.body?.package_version)
57
- console.log(` Version: ${instance.body.package_version}`);
58
- if (instance.body?.uptime_seconds !== undefined) {
59
- console.log(` Uptime: ${instance.body.uptime_seconds}s`);
40
+ if (instanceResource.data.pid)
41
+ console.log(` PID: ${instanceResource.data.pid}`);
42
+ if (args.debug && instanceResource.data.package_version) {
43
+ console.log(` Version: ${instanceResource.data.package_version}`);
44
+ }
45
+ if (instanceResource.data.uptime_seconds !== undefined) {
46
+ console.log(` Uptime: ${instanceResource.data.uptime_seconds}s`);
47
+ }
48
+ console.log(` Auth: ${instanceResource.data.auth_required ? "required (token in connection.json)" : "open (explicit dev/test mode)"}`);
49
+ const projects = await callJsonSafe(`${url}/v1/projects`, token);
50
+ const parsedProjects = ProjectListResponseSchema.safeParse(projects.body);
51
+ if (!parsedProjects.success) {
52
+ console.error(chalk.red("Connected service returned an invalid Project list."));
53
+ process.exit(1);
60
54
  }
61
- console.log(` Auth: ${instance.body?.auth_required ? "required (token in connection.json)" : "open (loopback)"}`);
62
- const preps = await callJson(`${url}/v1/preparations`, token);
63
- const list = preps.body?.preparations ?? [];
55
+ const list = parsedProjects.data.projects;
64
56
  console.log();
65
- console.log(chalk.bold(` Preparations (${list.length})`));
57
+ console.log(chalk.bold(` Projects (${list.length})`));
66
58
  if (list.length === 0) {
67
- console.log(chalk.dim(" No preparations yet. `interf prep create <id> --source <path>`."));
59
+ console.log(chalk.dim(" No Projects yet. `interf project create <id> --source <path>`."));
68
60
  }
69
61
  else {
70
- for (const prep of list) {
71
- const readiness = prep.readiness?.status ?? "";
72
- const buildPlan = prep.build_plan_id ?? "no Build Plan";
73
- const requested = prep.requested_artifacts?.length ?? 0;
74
- console.log(` ${chalk.bold(prep.id)} ${chalk.dim(`(${buildPlan} · ${requested} requested · ${readiness})`)}`);
75
- console.log(chalk.dim(` source: ${prep.source.locator}`));
62
+ for (const project of list) {
63
+ const buildPlan = project.build_plan_id ?? "no Plan";
64
+ console.log(` ${chalk.bold(project.id)} ${chalk.dim(`(${buildPlan})`)}`);
65
+ console.log(chalk.dim(` source: ${project.source.locator}`));
76
66
  }
77
67
  }
78
68
  console.log();
@@ -0,0 +1,2 @@
1
+ import type { CommandModule } from "yargs";
2
+ export declare const tracesCommand: CommandModule;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * `interf traces` — inspect Context Graph traces on the connected instance.
3
+ *
4
+ * interf traces ls --project <id>
5
+ * interf traces show <trace-kind> --project <id>
6
+ */
7
+ import chalk from "chalk";
8
+ import { callJson, resolveConnection } from "../lib/http-client.js";
9
+ import { TracesSchema, } from "../../packages/contracts/lib/project-schema.js";
10
+ import { projectSubresourcePath } from "../../packages/runtime/service/routes.js";
11
+ function tracesUrl(baseUrl, projectId) {
12
+ return `${baseUrl}${projectSubresourcePath(projectId, "traces")}`;
13
+ }
14
+ async function readTraces(baseUrl, token, projectId) {
15
+ const { status, body, raw } = await callJson(tracesUrl(baseUrl, projectId), token);
16
+ if (status !== 200 || !body) {
17
+ console.error(chalk.red(`Failed to read Context Graph traces (HTTP ${status}).`));
18
+ if (raw)
19
+ console.error(raw);
20
+ process.exit(1);
21
+ }
22
+ const parsed = TracesSchema.safeParse(body);
23
+ if (!parsed.success) {
24
+ console.error(chalk.red("Failed to parse Context Graph traces."));
25
+ process.exit(1);
26
+ }
27
+ return parsed.data;
28
+ }
29
+ function renderTrace(trace) {
30
+ const marker = trace.passed === false ? chalk.red("fail") : chalk.green("pass");
31
+ const value = trace.count === undefined
32
+ ? ""
33
+ : trace.total === undefined
34
+ ? chalk.dim(` ${trace.count}`)
35
+ : chalk.dim(` ${trace.count}/${trace.total}`);
36
+ console.log(` ${marker} ${chalk.bold(trace.kind)}${value}`);
37
+ console.log(chalk.dim(` ${trace.label}`));
38
+ if (trace.detail)
39
+ console.log(chalk.dim(` ${trace.detail}`));
40
+ }
41
+ export const tracesCommand = {
42
+ command: "traces <subcommand>",
43
+ describe: "Inspect Context Graph traces for a Project",
44
+ builder: (yargs) => yargs
45
+ .option("url", { type: "string", describe: "Override the active connection URL" })
46
+ .option("token", { type: "string", describe: "Override the active bearer token" })
47
+ .option("project", { type: "string", demandOption: true, describe: "Project id" })
48
+ .command("ls", "List Context Graph traces for a Project", (y) => y, async (args) => {
49
+ const { url, token } = resolveConnection(args);
50
+ const traces = await readTraces(url, token, args.project);
51
+ const items = traces.items ?? [];
52
+ console.log();
53
+ console.log(chalk.bold(` ${traces.project_id} / ${traces.graph_id}`));
54
+ console.log(chalk.dim(` files: ${traces.files_processed}/${traces.files_total}`));
55
+ console.log(chalk.dim(` checks: ${traces.checks_passed}/${traces.checks_total}`));
56
+ console.log(chalk.dim(` ready: ${traces.ready ? "yes" : "no"}`));
57
+ if (items.length === 0) {
58
+ console.log(chalk.dim(" No trace items."));
59
+ }
60
+ else {
61
+ console.log();
62
+ for (const trace of items)
63
+ renderTrace(trace);
64
+ }
65
+ console.log();
66
+ })
67
+ .command("show <traceKind>", "Show one Context Graph trace item", (y) => y
68
+ .positional("traceKind", {
69
+ type: "string",
70
+ demandOption: true,
71
+ describe: "Trace kind, for example files-processed or checks",
72
+ })
73
+ .option("json", {
74
+ type: "boolean",
75
+ default: false,
76
+ describe: "Print the raw trace item JSON",
77
+ }), async (args) => {
78
+ const { url, token } = resolveConnection(args);
79
+ const traces = await readTraces(url, token, args.project);
80
+ const trace = (traces.items ?? []).find((item) => item.kind === args.traceKind);
81
+ if (!trace) {
82
+ console.error(chalk.red(`Trace ${args.traceKind} was not found for Project ${args.project}.`));
83
+ process.exit(1);
84
+ }
85
+ if (args.json) {
86
+ console.log(JSON.stringify(trace, null, 2));
87
+ return;
88
+ }
89
+ console.log();
90
+ renderTrace(trace);
91
+ console.log();
92
+ })
93
+ .demandCommand(1, "Choose a traces subcommand."),
94
+ handler: () => {
95
+ // Subcommands own all behavior.
96
+ },
97
+ };