@interf/compiler 0.7.3 → 0.9.1

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 (302) hide show
  1. package/README.md +123 -89
  2. package/TRADEMARKS.md +1 -1
  3. package/agent-skills/interf-actions/SKILL.md +71 -0
  4. package/agent-skills/interf-actions/references/cli.md +190 -0
  5. package/apps/compiler-ui/.next/server/app/index.html +1 -0
  6. package/apps/compiler-ui/.next/static/XWKL548yXD_UOG4ID9G3J/_buildManifest.js +11 -0
  7. package/apps/compiler-ui/.next/static/XWKL548yXD_UOG4ID9G3J/_clientMiddlewareManifest.js +1 -0
  8. package/apps/compiler-ui/.next/static/XWKL548yXD_UOG4ID9G3J/_ssgManifest.js +1 -0
  9. package/apps/compiler-ui/.next/static/chunks/03~yq9q893hmn.js +1 -0
  10. package/apps/compiler-ui/.next/static/chunks/06z~l3kwb891e.js +1 -0
  11. package/apps/compiler-ui/.next/static/chunks/08g7lvje.te.u.js +1 -0
  12. package/apps/compiler-ui/.next/static/chunks/08m7vf5asqlsm.js +91 -0
  13. package/apps/compiler-ui/.next/static/chunks/0_i-3_5l9t2qe.js +1 -0
  14. package/apps/compiler-ui/.next/static/chunks/0b-ywny_j0g~0.js +1 -0
  15. package/apps/compiler-ui/.next/static/chunks/0b52v41o1gixx.js +1 -0
  16. package/apps/compiler-ui/.next/static/chunks/0fgt_8knmicoz.js +124 -0
  17. package/apps/compiler-ui/.next/static/chunks/0gpzgsv0w.q~m.js +31 -0
  18. package/apps/compiler-ui/.next/static/chunks/0ilwfezfvu6~-.js +1 -0
  19. package/apps/compiler-ui/.next/static/chunks/0n51hrfoufc7g.js +1 -0
  20. package/apps/compiler-ui/.next/static/chunks/0ti_66mx7~w2-.js +5 -0
  21. package/apps/compiler-ui/.next/static/chunks/0xxmf45eskdt~.css +1 -0
  22. package/apps/compiler-ui/.next/static/chunks/0y5z3t-z1c8ks.js.map +5 -0
  23. package/apps/compiler-ui/.next/static/chunks/13g~4mamjft.c.css +3 -0
  24. package/apps/compiler-ui/.next/static/chunks/14wtz~vq25~qq.js +1 -0
  25. package/apps/compiler-ui/.next/static/chunks/turbopack-109rtik40vwh5.js +1 -0
  26. package/apps/compiler-ui/.next/static/chunks/turbopack-10e~t1yzi4svj.js +1 -0
  27. package/apps/compiler-ui/.next/static/chunks/turbopack-worker-0sjn--fhq~1cg.js +1 -0
  28. package/apps/compiler-ui/.next/static/media/GeistMono_Variable.p.17jn9btb_52pq.woff2 +0 -0
  29. package/apps/compiler-ui/.next/static/media/Geist_Variable-s.p.0-te~ja_gpvcf.woff2 +0 -0
  30. package/apps/compiler-ui/.next/static/media/worker.102zas1s52_pf.js +109 -0
  31. package/builtin-workflows/interf/README.md +8 -8
  32. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +4 -4
  33. package/builtin-workflows/interf/compile/stages/structure/SKILL.md +1 -1
  34. package/builtin-workflows/interf/improve/SKILL.md +1 -1
  35. package/builtin-workflows/interf/use/query/SKILL.md +1 -1
  36. package/builtin-workflows/interf/workflow.json +8 -8
  37. package/builtin-workflows/interf/workflow.schema.json +1 -1
  38. package/dist/cli/commands/check-draft.d.ts +5 -4
  39. package/dist/cli/commands/check-draft.js +18 -17
  40. package/dist/cli/commands/compile-controller.d.ts +3 -0
  41. package/dist/cli/commands/compile-controller.js +53 -45
  42. package/dist/cli/commands/compile.js +83 -27
  43. package/dist/cli/commands/compiled-flow.d.ts +3 -0
  44. package/dist/cli/commands/compiled-flow.js +9 -7
  45. package/dist/cli/commands/control-path.d.ts +11 -0
  46. package/dist/cli/commands/control-path.js +72 -0
  47. package/dist/cli/commands/create-workflow-wizard.d.ts +6 -0
  48. package/dist/cli/commands/create-workflow-wizard.js +191 -77
  49. package/dist/cli/commands/create.js +54 -40
  50. package/dist/cli/commands/default.js +4 -3
  51. package/dist/cli/commands/doctor.js +5 -5
  52. package/dist/cli/commands/executor-flow.js +1 -1
  53. package/dist/cli/commands/init.js +326 -76
  54. package/dist/cli/commands/list.js +8 -7
  55. package/dist/cli/commands/preparation-selection.d.ts +6 -0
  56. package/dist/cli/commands/preparation-selection.js +11 -0
  57. package/dist/cli/commands/reset.js +3 -3
  58. package/dist/cli/commands/source-config-wizard.d.ts +4 -3
  59. package/dist/cli/commands/source-config-wizard.js +175 -197
  60. package/dist/cli/commands/status.js +116 -8
  61. package/dist/cli/commands/test-flow.d.ts +1 -1
  62. package/dist/cli/commands/test-flow.js +31 -31
  63. package/dist/cli/commands/test.d.ts +4 -0
  64. package/dist/cli/commands/test.js +95 -58
  65. package/dist/cli/commands/verify.js +7 -7
  66. package/dist/cli/commands/web.d.ts +11 -0
  67. package/dist/cli/commands/web.js +373 -0
  68. package/dist/cli/index.d.ts +2 -1
  69. package/dist/cli/index.js +3 -1
  70. package/dist/index.d.ts +4 -2
  71. package/dist/index.js +3 -1
  72. package/dist/packages/agents/lib/execution.js +4 -2
  73. package/dist/packages/agents/lib/executors.d.ts +1 -0
  74. package/dist/packages/agents/lib/executors.js +1 -0
  75. package/dist/packages/agents/lib/render.d.ts +2 -2
  76. package/dist/packages/agents/lib/render.js +10 -9
  77. package/dist/packages/agents/lib/shells.d.ts +3 -11
  78. package/dist/packages/agents/lib/shells.js +45 -96
  79. package/dist/packages/agents/lib/types.d.ts +1 -0
  80. package/dist/packages/compiler/compiled-paths.d.ts +4 -1
  81. package/dist/packages/compiler/compiled-paths.js +7 -1
  82. package/dist/packages/compiler/compiled-pipeline.d.ts +7 -0
  83. package/dist/packages/compiler/compiled-pipeline.js +15 -4
  84. package/dist/packages/compiler/compiled-schema.js +1 -1
  85. package/dist/packages/compiler/compiled-stage-plan.d.ts +2 -2
  86. package/dist/packages/compiler/compiled-stage-plan.js +4 -4
  87. package/dist/packages/compiler/compiled-stage-runner.d.ts +5 -0
  88. package/dist/packages/compiler/compiled-stage-runner.js +50 -2
  89. package/dist/packages/compiler/compiled-target.d.ts +1 -1
  90. package/dist/packages/compiler/compiled-target.js +2 -2
  91. package/dist/packages/compiler/lib/schema.d.ts +161 -1
  92. package/dist/packages/compiler/lib/schema.js +87 -1
  93. package/dist/packages/compiler/raw-snapshot.d.ts +9 -2
  94. package/dist/packages/compiler/runtime-acceptance.js +1 -1
  95. package/dist/packages/compiler/runtime-contracts.js +2 -2
  96. package/dist/packages/compiler/runtime-prompt.js +6 -6
  97. package/dist/packages/compiler/runtime-reconcile.js +3 -3
  98. package/dist/packages/compiler/runtime-runs.js +3 -0
  99. package/dist/packages/compiler/runtime-types.d.ts +1 -0
  100. package/dist/packages/compiler/state-health.js +1 -1
  101. package/dist/packages/compiler/state-view.js +2 -2
  102. package/dist/packages/compiler/validate-compiled.js +11 -9
  103. package/dist/packages/execution/adapters.d.ts +15 -0
  104. package/dist/packages/execution/adapters.js +1 -0
  105. package/dist/packages/execution/events.d.ts +8 -0
  106. package/dist/packages/execution/events.js +16 -0
  107. package/dist/packages/execution/index.d.ts +9 -0
  108. package/dist/packages/execution/index.js +6 -0
  109. package/dist/packages/execution/lib/schema.d.ts +1554 -0
  110. package/dist/packages/execution/lib/schema.js +319 -0
  111. package/dist/packages/local-service/action-values.d.ts +23 -0
  112. package/dist/packages/local-service/action-values.js +31 -0
  113. package/dist/packages/local-service/client.d.ts +119 -0
  114. package/dist/packages/local-service/client.js +356 -0
  115. package/dist/packages/local-service/index.d.ts +15 -0
  116. package/dist/packages/local-service/index.js +11 -0
  117. package/dist/packages/local-service/lib/schema.d.ts +7355 -0
  118. package/dist/packages/local-service/lib/schema.js +636 -0
  119. package/dist/packages/local-service/routes.d.ts +27 -0
  120. package/dist/packages/local-service/routes.js +32 -0
  121. package/dist/packages/local-service/runtime.d.ts +134 -0
  122. package/dist/packages/local-service/runtime.js +2841 -0
  123. package/dist/packages/local-service/server.d.ts +17 -0
  124. package/dist/packages/local-service/server.js +572 -0
  125. package/dist/packages/project-model/index.d.ts +2 -1
  126. package/dist/packages/project-model/index.js +1 -0
  127. package/dist/packages/project-model/interf-detect.d.ts +6 -2
  128. package/dist/packages/project-model/interf-detect.js +25 -10
  129. package/dist/packages/project-model/interf-scaffold.js +9 -6
  130. package/dist/packages/project-model/interf.d.ts +1 -1
  131. package/dist/packages/project-model/interf.js +1 -1
  132. package/dist/packages/project-model/lib/schema.d.ts +80 -6
  133. package/dist/packages/project-model/lib/schema.js +29 -19
  134. package/dist/packages/project-model/source-config.d.ts +22 -13
  135. package/dist/packages/project-model/source-config.js +140 -123
  136. package/dist/packages/project-model/source-folders.d.ts +11 -0
  137. package/dist/packages/project-model/source-folders.js +110 -0
  138. package/dist/packages/testing/test-execution.js +5 -5
  139. package/dist/packages/testing/test-paths.js +1 -3
  140. package/dist/packages/workflow-authoring/workflow-authoring.d.ts +4 -6
  141. package/dist/packages/workflow-authoring/workflow-authoring.js +45 -86
  142. package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +2 -0
  143. package/dist/packages/workflow-authoring/workflow-edit-session.js +80 -49
  144. package/dist/packages/workflow-authoring/workflow-improvement.js +2 -1
  145. package/dist/packages/workflow-package/context-interface.js +1 -1
  146. package/dist/packages/workflow-package/interf-workflow-package.d.ts +6 -0
  147. package/dist/packages/workflow-package/interf-workflow-package.js +115 -8
  148. package/dist/packages/workflow-package/local-workflows.js +33 -17
  149. package/dist/packages/workflow-package/workflow-definitions.d.ts +5 -5
  150. package/dist/packages/workflow-package/workflow-definitions.js +23 -22
  151. package/dist/packages/workflow-package/workflow-helpers.js +10 -6
  152. package/dist/packages/workflow-package/workflow-stage-runner.d.ts +1 -0
  153. package/dist/packages/workflow-package/workflow-stage-runner.js +2 -0
  154. package/package.json +17 -1
  155. package/dist/cli/commands/dataset-selection.d.ts +0 -6
  156. package/dist/cli/commands/dataset-selection.js +0 -11
  157. package/dist/lib/agent-args.d.ts +0 -1
  158. package/dist/lib/agent-args.js +0 -1
  159. package/dist/lib/agent-constants.d.ts +0 -1
  160. package/dist/lib/agent-constants.js +0 -1
  161. package/dist/lib/agent-detection.d.ts +0 -1
  162. package/dist/lib/agent-detection.js +0 -1
  163. package/dist/lib/agent-execution.d.ts +0 -1
  164. package/dist/lib/agent-execution.js +0 -1
  165. package/dist/lib/agent-logs.d.ts +0 -1
  166. package/dist/lib/agent-logs.js +0 -1
  167. package/dist/lib/agent-preflight.d.ts +0 -1
  168. package/dist/lib/agent-preflight.js +0 -1
  169. package/dist/lib/agent-render.d.ts +0 -1
  170. package/dist/lib/agent-render.js +0 -1
  171. package/dist/lib/agent-shells.d.ts +0 -1
  172. package/dist/lib/agent-shells.js +0 -1
  173. package/dist/lib/agent-status.d.ts +0 -1
  174. package/dist/lib/agent-status.js +0 -1
  175. package/dist/lib/agent-types.d.ts +0 -1
  176. package/dist/lib/agent-types.js +0 -1
  177. package/dist/lib/agents.d.ts +0 -1
  178. package/dist/lib/agents.js +0 -1
  179. package/dist/lib/builtin-compiled-workflow.d.ts +0 -1
  180. package/dist/lib/builtin-compiled-workflow.js +0 -1
  181. package/dist/lib/chart-guidance.d.ts +0 -1
  182. package/dist/lib/chart-guidance.js +0 -1
  183. package/dist/lib/compiled-compile.d.ts +0 -1
  184. package/dist/lib/compiled-compile.js +0 -1
  185. package/dist/lib/compiled-paths.d.ts +0 -1
  186. package/dist/lib/compiled-paths.js +0 -3
  187. package/dist/lib/compiled-raw.d.ts +0 -1
  188. package/dist/lib/compiled-raw.js +0 -3
  189. package/dist/lib/compiled-reset.d.ts +0 -1
  190. package/dist/lib/compiled-reset.js +0 -3
  191. package/dist/lib/compiled-schema.d.ts +0 -1
  192. package/dist/lib/compiled-schema.js +0 -1
  193. package/dist/lib/discovery.d.ts +0 -1
  194. package/dist/lib/discovery.js +0 -1
  195. package/dist/lib/execution-profile.d.ts +0 -1
  196. package/dist/lib/execution-profile.js +0 -1
  197. package/dist/lib/executors.d.ts +0 -1
  198. package/dist/lib/executors.js +0 -1
  199. package/dist/lib/filesystem.d.ts +0 -1
  200. package/dist/lib/filesystem.js +0 -1
  201. package/dist/lib/interf-bootstrap.d.ts +0 -1
  202. package/dist/lib/interf-bootstrap.js +0 -3
  203. package/dist/lib/interf-detect.d.ts +0 -1
  204. package/dist/lib/interf-detect.js +0 -3
  205. package/dist/lib/interf-scaffold.d.ts +0 -1
  206. package/dist/lib/interf-scaffold.js +0 -3
  207. package/dist/lib/interf-workflow-package.d.ts +0 -1
  208. package/dist/lib/interf-workflow-package.js +0 -1
  209. package/dist/lib/interf.d.ts +0 -1
  210. package/dist/lib/interf.js +0 -3
  211. package/dist/lib/local-workflows.d.ts +0 -1
  212. package/dist/lib/local-workflows.js +0 -1
  213. package/dist/lib/logger.d.ts +0 -1
  214. package/dist/lib/logger.js +0 -1
  215. package/dist/lib/package-root.d.ts +0 -1
  216. package/dist/lib/package-root.js +0 -1
  217. package/dist/lib/parse.d.ts +0 -1
  218. package/dist/lib/parse.js +0 -1
  219. package/dist/lib/project-paths.d.ts +0 -1
  220. package/dist/lib/project-paths.js +0 -3
  221. package/dist/lib/runtime-acceptance.d.ts +0 -1
  222. package/dist/lib/runtime-acceptance.js +0 -1
  223. package/dist/lib/runtime-contracts.d.ts +0 -1
  224. package/dist/lib/runtime-contracts.js +0 -1
  225. package/dist/lib/runtime-inventory.d.ts +0 -1
  226. package/dist/lib/runtime-inventory.js +0 -1
  227. package/dist/lib/runtime-paths.d.ts +0 -1
  228. package/dist/lib/runtime-paths.js +0 -1
  229. package/dist/lib/runtime-prompt.d.ts +0 -1
  230. package/dist/lib/runtime-prompt.js +0 -1
  231. package/dist/lib/runtime-reconcile.d.ts +0 -1
  232. package/dist/lib/runtime-reconcile.js +0 -1
  233. package/dist/lib/runtime-runs.d.ts +0 -1
  234. package/dist/lib/runtime-runs.js +0 -1
  235. package/dist/lib/runtime-types.d.ts +0 -1
  236. package/dist/lib/runtime-types.js +0 -1
  237. package/dist/lib/runtime.d.ts +0 -1
  238. package/dist/lib/runtime.js +0 -1
  239. package/dist/lib/schema.d.ts +0 -4
  240. package/dist/lib/schema.js +0 -6
  241. package/dist/lib/source-config.d.ts +0 -1
  242. package/dist/lib/source-config.js +0 -3
  243. package/dist/lib/state-artifacts.d.ts +0 -1
  244. package/dist/lib/state-artifacts.js +0 -1
  245. package/dist/lib/state-health.d.ts +0 -1
  246. package/dist/lib/state-health.js +0 -1
  247. package/dist/lib/state-io.d.ts +0 -1
  248. package/dist/lib/state-io.js +0 -1
  249. package/dist/lib/state-paths.d.ts +0 -1
  250. package/dist/lib/state-paths.js +0 -1
  251. package/dist/lib/state-view.d.ts +0 -1
  252. package/dist/lib/state-view.js +0 -1
  253. package/dist/lib/state.d.ts +0 -1
  254. package/dist/lib/state.js +0 -1
  255. package/dist/lib/test-execution.d.ts +0 -1
  256. package/dist/lib/test-execution.js +0 -3
  257. package/dist/lib/test-matrices.d.ts +0 -1
  258. package/dist/lib/test-matrices.js +0 -3
  259. package/dist/lib/test-paths.d.ts +0 -1
  260. package/dist/lib/test-paths.js +0 -3
  261. package/dist/lib/test-profile-presets.d.ts +0 -1
  262. package/dist/lib/test-profile-presets.js +0 -3
  263. package/dist/lib/test-sandbox.d.ts +0 -1
  264. package/dist/lib/test-sandbox.js +0 -3
  265. package/dist/lib/test-specs.d.ts +0 -1
  266. package/dist/lib/test-specs.js +0 -3
  267. package/dist/lib/test-targets.d.ts +0 -1
  268. package/dist/lib/test-targets.js +0 -3
  269. package/dist/lib/test-types.d.ts +0 -1
  270. package/dist/lib/test-types.js +0 -3
  271. package/dist/lib/test.d.ts +0 -1
  272. package/dist/lib/test.js +0 -3
  273. package/dist/lib/util.d.ts +0 -1
  274. package/dist/lib/util.js +0 -1
  275. package/dist/lib/validate-compiled.d.ts +0 -1
  276. package/dist/lib/validate-compiled.js +0 -1
  277. package/dist/lib/validate-helpers.d.ts +0 -1
  278. package/dist/lib/validate-helpers.js +0 -1
  279. package/dist/lib/validate.d.ts +0 -1
  280. package/dist/lib/validate.js +0 -1
  281. package/dist/lib/workflow-authoring.d.ts +0 -1
  282. package/dist/lib/workflow-authoring.js +0 -1
  283. package/dist/lib/workflow-definitions.d.ts +0 -1
  284. package/dist/lib/workflow-definitions.js +0 -1
  285. package/dist/lib/workflow-edit-session.d.ts +0 -1
  286. package/dist/lib/workflow-edit-session.js +0 -1
  287. package/dist/lib/workflow-edit-utils.d.ts +0 -1
  288. package/dist/lib/workflow-edit-utils.js +0 -1
  289. package/dist/lib/workflow-helpers.d.ts +0 -1
  290. package/dist/lib/workflow-helpers.js +0 -1
  291. package/dist/lib/workflow-improvement.d.ts +0 -1
  292. package/dist/lib/workflow-improvement.js +0 -1
  293. package/dist/lib/workflow-primitives.d.ts +0 -1
  294. package/dist/lib/workflow-primitives.js +0 -1
  295. package/dist/lib/workflow-review-paths.d.ts +0 -1
  296. package/dist/lib/workflow-review-paths.js +0 -1
  297. package/dist/lib/workflow-stage-policy.d.ts +0 -1
  298. package/dist/lib/workflow-stage-policy.js +0 -1
  299. package/dist/lib/workflow-stage-runner.d.ts +0 -1
  300. package/dist/lib/workflow-stage-runner.js +0 -1
  301. package/dist/lib/workflows.d.ts +0 -1
  302. package/dist/lib/workflows.js +0 -1
@@ -0,0 +1,373 @@
1
+ import { existsSync, mkdirSync, readFileSync, } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import chalk from "chalk";
4
+ import { resolveLocalExecutor, } from "../../packages/agents/lib/executors.js";
5
+ import { ActionProposalPlanSchema, startLocalService, } from "../../packages/local-service/index.js";
6
+ import { loadSourceFolderConfig, saveSourceFolderConfig, sourceFolderConfigPath, } from "../../packages/project-model/source-config.js";
7
+ import { runConfiguredCompiledCompile, } from "./compile-controller.js";
8
+ import { draftReadinessChecks, } from "./check-draft.js";
9
+ import { runTestCommand, } from "./test.js";
10
+ import { runWorkflowAuthoringDraft, } from "../../packages/workflow-authoring/workflow-authoring.js";
11
+ import { PACKAGE_ROOT } from "../../packages/workflow-package/lib/package-root.js";
12
+ import { seedLocalDefaultWorkflow } from "../../packages/workflow-package/local-workflows.js";
13
+ import { findNearestInterfInstanceConfig, hasInterfInstanceConfig, relativeSourceFolderPath, resolveInterfInstanceContext, } from "./control-path.js";
14
+ import { listSourceFolderChoices, } from "../../packages/project-model/source-folders.js";
15
+ export const webCommand = {
16
+ command: "web",
17
+ describe: "Start Interf UI and the local Interf API",
18
+ builder: (yargs) => yargs
19
+ .option("host", {
20
+ type: "string",
21
+ describe: "Host for the local Interf service",
22
+ })
23
+ .option("port", {
24
+ type: "number",
25
+ describe: "Port for the local Interf service",
26
+ })
27
+ .option("control-path", {
28
+ type: "string",
29
+ describe: "Folder where Interf stores local config, Methods, runs, and portable context",
30
+ })
31
+ .option("source-folder", {
32
+ type: "string",
33
+ describe: "Source Folder to prepare when initializing a new Interf Workspace",
34
+ }),
35
+ handler: async (argv) => {
36
+ await runWebCommand(argv);
37
+ },
38
+ };
39
+ function stringOption(value) {
40
+ return typeof value === "string" && value.trim().length > 0
41
+ ? value.trim()
42
+ : undefined;
43
+ }
44
+ function numberOption(value) {
45
+ if (typeof value !== "number" || !Number.isInteger(value))
46
+ return undefined;
47
+ return value;
48
+ }
49
+ function extractJsonObject(text) {
50
+ try {
51
+ return JSON.parse(text);
52
+ }
53
+ catch {
54
+ const match = text.match(/\{[\s\S]*\}/);
55
+ if (!match)
56
+ throw new Error("Planner did not write a JSON object.");
57
+ return JSON.parse(match[0]);
58
+ }
59
+ }
60
+ function readActionSkill() {
61
+ const skillDir = join(PACKAGE_ROOT, "agent-skills", "interf-actions");
62
+ const skillPath = join(skillDir, "SKILL.md");
63
+ const cliReferencePath = join(skillDir, "references", "cli.md");
64
+ try {
65
+ const skill = readFileSync(skillPath, "utf8");
66
+ const cliReference = readFileSync(cliReferencePath, "utf8");
67
+ return [
68
+ skill,
69
+ "## Bundled reference: references/cli.md",
70
+ cliReference,
71
+ ].join("\n\n");
72
+ }
73
+ catch {
74
+ return [
75
+ "# Interf Actions",
76
+ "Use `interf --help`, `interf list`, `interf status`, and command-specific help as the source of truth.",
77
+ "In Interf proposal mode, do not run CLI commands. Write the requested JSON proposal only.",
78
+ ].join("\n\n");
79
+ }
80
+ }
81
+ export function resolveWebProjectPaths(argv = {}, cwd = process.cwd()) {
82
+ const currentPath = resolve(cwd);
83
+ const configuredControlPath = stringOption(argv["control-path"]);
84
+ const configuredSourceFolder = stringOption(argv["source-folder"]);
85
+ if (configuredControlPath) {
86
+ return {
87
+ controlPath: resolve(currentPath, configuredControlPath),
88
+ sourceFolderPath: configuredSourceFolder ? resolve(currentPath, configuredSourceFolder) : null,
89
+ };
90
+ }
91
+ const existingControlPath = findNearestInterfInstanceConfig(currentPath);
92
+ if (existingControlPath) {
93
+ return {
94
+ controlPath: existingControlPath,
95
+ sourceFolderPath: configuredSourceFolder ? resolve(currentPath, configuredSourceFolder) : null,
96
+ };
97
+ }
98
+ if (configuredSourceFolder) {
99
+ const resolvedSourceFolder = resolve(currentPath, configuredSourceFolder);
100
+ const context = resolveInterfInstanceContext(resolvedSourceFolder);
101
+ return {
102
+ controlPath: context.controlPath,
103
+ sourceFolderPath: resolvedSourceFolder,
104
+ };
105
+ }
106
+ const context = resolveInterfInstanceContext(currentPath);
107
+ return {
108
+ controlPath: context.controlPath,
109
+ sourceFolderPath: context.defaultSourceFolderPath ?? currentPath,
110
+ };
111
+ }
112
+ export function ensureWebProjectInitialized(controlPath, options = {}) {
113
+ const inferSourceFolderPath = () => {
114
+ if (options.sourceFolderPath)
115
+ return options.sourceFolderPath;
116
+ const choices = listSourceFolderChoices(controlPath);
117
+ return choices.length === 1 ? resolve(controlPath, choices[0]?.value ?? "") : null;
118
+ };
119
+ if (existsSync(sourceFolderConfigPath(controlPath))) {
120
+ if (!hasInterfInstanceConfig(controlPath)) {
121
+ throw new Error(`Interf Workspace path is not usable: ${sourceFolderConfigPath(controlPath)}. Choose a different --control-path.`);
122
+ }
123
+ const existing = loadSourceFolderConfig(controlPath);
124
+ const sourceFolderPath = existing?.source_folder ? null : inferSourceFolderPath();
125
+ if (existing && sourceFolderPath) {
126
+ saveSourceFolderConfig(controlPath, {
127
+ source_folder: {
128
+ path: relativeSourceFolderPath(controlPath, sourceFolderPath),
129
+ },
130
+ preparations: existing.preparations ?? existing.datasets ?? [],
131
+ });
132
+ }
133
+ return;
134
+ }
135
+ seedLocalDefaultWorkflow({ sourcePath: controlPath });
136
+ const sourceFolderPath = inferSourceFolderPath();
137
+ saveSourceFolderConfig(controlPath, {
138
+ ...(sourceFolderPath
139
+ ? {
140
+ source_folder: {
141
+ path: relativeSourceFolderPath(controlPath, sourceFolderPath),
142
+ },
143
+ }
144
+ : {}),
145
+ preparations: [],
146
+ });
147
+ }
148
+ function buildActionPlannerPrompt(request, context, outputPath) {
149
+ const actionSkill = readActionSkill();
150
+ const preparations = context.datasets.map((preparation) => ({
151
+ name: preparation.name,
152
+ path: preparation.path,
153
+ about: preparation.about ?? null,
154
+ method: preparation.method ?? preparation.workflow ?? null,
155
+ checks: preparation.checks?.length ?? 0,
156
+ }));
157
+ const recentProposals = context.recentProposals.map((proposal) => ({
158
+ status: proposal.status,
159
+ action_type: proposal.action_type,
160
+ title: proposal.title,
161
+ preparation: proposal.preparation ?? null,
162
+ request: proposal.request,
163
+ command_preview: proposal.command_preview ?? null,
164
+ }));
165
+ const sourceFolders = context.sourceFolders.map((folder) => ({
166
+ path: folder.value,
167
+ label: folder.label,
168
+ hint: folder.hint,
169
+ }));
170
+ return `You are the local Interf action planner.
171
+
172
+ User request:
173
+ ${request.message}
174
+
175
+ Selected Preparation hint: ${request.preparation ?? "(none)"}
176
+
177
+ Structured request values:
178
+ ${JSON.stringify(request.values ?? {}, null, 2)}
179
+
180
+ Available Preparations:
181
+ ${JSON.stringify(preparations, null, 2)}
182
+
183
+ Visible Source Folders:
184
+ ${JSON.stringify(sourceFolders, null, 2)}
185
+
186
+ Action health:
187
+ ${JSON.stringify(context.preparationHealth, null, 2)}
188
+
189
+ Recent proposals, newest first. A short follow-up like "target source only" may be correcting the latest pending proposal:
190
+ ${JSON.stringify(recentProposals, null, 2)}
191
+
192
+ Interf action skill source:
193
+ ${actionSkill}
194
+
195
+ Use the Interf action skill source as the authority for CLI semantics and Interf proposal mode. Preserve user intent over defaults.
196
+ Use Action health to avoid proposing work that cannot run yet. If can_check_readiness is false, prefer the recommended next actions; do not propose a generic readiness check unless the user explicitly asks for a source-files-only baseline.
197
+ If the user is asking a question or making casual conversation, return "clarification" with a helpful assistant_message. Do not invent a CLI command for non-action chat.
198
+ If a field does not apply, omit it instead of writing null or an empty string.
199
+ Do not run any CLI command. Do not edit files except the output JSON file.
200
+
201
+ Write only this JSON object to:
202
+ ${outputPath}
203
+
204
+ JSON schema:
205
+ {
206
+ "action_type": "preparation-setup" | "compile" | "test" | "readiness-check-draft" | "method-authoring" | "clarification",
207
+ "preparation": "Preparation id if applicable",
208
+ "method": "Method id if applicable",
209
+ "values": {},
210
+ "title": "short approval card title",
211
+ "summary": "one sentence describing what will run",
212
+ "assistant_message": "concise explanation for the user",
213
+ "command_preview": "interf command the user is approving"
214
+ }
215
+ `;
216
+ }
217
+ export async function runWebCommand(argv = {}) {
218
+ const { controlPath, sourceFolderPath } = resolveWebProjectPaths(argv);
219
+ ensureWebProjectInitialized(controlPath, { sourceFolderPath });
220
+ const handlers = {
221
+ async planActionProposal(request, context) {
222
+ const resolved = resolveLocalExecutor({ preflight: true });
223
+ if (!resolved.executor) {
224
+ return ActionProposalPlanSchema.parse({
225
+ action_type: "clarification",
226
+ preparation: request.preparation,
227
+ assistant_message: resolved.error ?? "No local agent detected for action planning.",
228
+ });
229
+ }
230
+ const planRoot = join(context.sourcePath, "interf", ".service", "action-plans", Date.now().toString(36));
231
+ mkdirSync(planRoot, { recursive: true });
232
+ const outputPath = join(planRoot, "proposal.json");
233
+ const prompt = buildActionPlannerPrompt(request, context, outputPath);
234
+ const exitCode = await resolved.executor.execute(context.sourcePath, prompt, {
235
+ eventLogPath: join(planRoot, "planner.events.ndjson"),
236
+ statusLogPath: join(planRoot, "planner.status.log"),
237
+ completionCheck: () => existsSync(outputPath),
238
+ });
239
+ if (exitCode !== 0 && !existsSync(outputPath)) {
240
+ return ActionProposalPlanSchema.parse({
241
+ action_type: "clarification",
242
+ preparation: request.preparation,
243
+ assistant_message: `${resolved.executor.displayName} could not create a safe Interf proposal.`,
244
+ });
245
+ }
246
+ try {
247
+ return ActionProposalPlanSchema.parse(extractJsonObject(readFileSync(outputPath, "utf8")));
248
+ }
249
+ catch {
250
+ return ActionProposalPlanSchema.parse({
251
+ action_type: "clarification",
252
+ preparation: request.preparation,
253
+ assistant_message: "I can help with this Interf Workspace. Ask a question about Interf, or ask me to create a Preparation, prepare, check readiness, improve, or draft a Method and I will prepare an approval proposal.",
254
+ });
255
+ }
256
+ },
257
+ async createCompileRun(request, context) {
258
+ const resolved = resolveLocalExecutor({ preflight: true });
259
+ if (!resolved.executor) {
260
+ throw new Error(resolved.error ?? "No local agent detected.");
261
+ }
262
+ const ok = await runConfiguredCompiledCompile({
263
+ executor: resolved.executor,
264
+ compiledPath: context.compiledPath,
265
+ sourcePath: context.sourcePath,
266
+ compiledConfig: context.datasetConfig,
267
+ maxAttemptsOverride: request.max_attempts ?? null,
268
+ maxLoopsOverride: request.max_loops ?? null,
269
+ preserveStageShells: request.preserve_stage_shells,
270
+ runId: context.runId,
271
+ events: context.events,
272
+ });
273
+ return { ok };
274
+ },
275
+ async createTestRun(request, context) {
276
+ const failureRef = {};
277
+ const ok = await runTestCommand({
278
+ sourcePath: context.sourcePath,
279
+ dataset: context.datasetConfig.name,
280
+ datasetConfig: context.datasetConfig,
281
+ target: request.mode,
282
+ skipService: true,
283
+ onFailure(result) {
284
+ failureRef.current = result;
285
+ },
286
+ });
287
+ return {
288
+ ok,
289
+ ...(failureRef.current ? { error: failureRef.current.message } : {}),
290
+ };
291
+ },
292
+ async createReadinessCheckDraft(request, context) {
293
+ const resolved = resolveLocalExecutor({ preflight: true });
294
+ if (!resolved.executor) {
295
+ throw new Error(resolved.error ?? "No local agent detected.");
296
+ }
297
+ context.emit({
298
+ type: "log.appended",
299
+ step_id: "agent-draft",
300
+ message: `Using ${resolved.executor.displayName} for readiness-check drafting.`,
301
+ });
302
+ const drafted = await draftReadinessChecks({
303
+ datasetName: request.preparation,
304
+ datasetPath: request.source_folder_path,
305
+ about: request.about,
306
+ executor: resolved.executor,
307
+ targetCount: request.target_count,
308
+ onStatus: (line) => context.emit({
309
+ type: "log.appended",
310
+ step_id: "agent-draft",
311
+ message: line,
312
+ }),
313
+ });
314
+ if (!drafted.checks) {
315
+ throw new Error(drafted.error ?? "Could not draft readiness checks from this Source Folder.");
316
+ }
317
+ return {
318
+ checks: drafted.checks,
319
+ };
320
+ },
321
+ async createWorkflowAuthoringRun(request, context) {
322
+ const resolved = resolveLocalExecutor({ preflight: true });
323
+ if (!resolved.executor) {
324
+ throw new Error(resolved.error ?? "No local agent detected.");
325
+ }
326
+ context.emit({
327
+ type: "log.appended",
328
+ step_id: "draft-package",
329
+ message: `Using ${resolved.executor.displayName} for Method authoring.`,
330
+ });
331
+ const result = await runWorkflowAuthoringDraft({
332
+ sourcePath: context.sourcePath,
333
+ datasetPath: request.source_folder_path,
334
+ baseWorkflowId: request.reference_method_id ?? request.base_method_id,
335
+ workflowId: request.method_id,
336
+ label: request.label,
337
+ hint: request.hint,
338
+ taskPrompt: request.task_prompt,
339
+ checks: request.checks,
340
+ executor: resolved.executor,
341
+ onStatus: (line) => context.emit({
342
+ type: "log.appended",
343
+ step_id: "draft-package",
344
+ message: line,
345
+ }),
346
+ });
347
+ return {
348
+ status: result.status,
349
+ changed: result.changed,
350
+ summary: result.summary,
351
+ validation: result.validation,
352
+ method_path: result.workflowPath,
353
+ shell_path: result.shellPath,
354
+ };
355
+ },
356
+ };
357
+ const service = await startLocalService({
358
+ rootPath: controlPath,
359
+ host: stringOption(argv.host),
360
+ port: numberOption(argv.port),
361
+ handlers,
362
+ });
363
+ console.log(chalk.green(` Interf: ${service.url}/`));
364
+ console.log(chalk.dim(` Health: ${service.url}/health`));
365
+ console.log(chalk.dim(" Press Ctrl-C to stop the local Interf service."));
366
+ await new Promise((resolve) => {
367
+ const shutdown = () => {
368
+ void service.close().finally(resolve);
369
+ };
370
+ process.once("SIGINT", shutdown);
371
+ process.once("SIGTERM", shutdown);
372
+ });
373
+ }
@@ -8,6 +8,7 @@ import { statusCommand } from "./commands/status.js";
8
8
  import { resetCommand } from "./commands/reset.js";
9
9
  import { defaultCommand } from "./commands/default.js";
10
10
  import { verifyCommand } from "./commands/verify.js";
11
+ import { webCommand } from "./commands/web.js";
11
12
  export declare function buildCli(argv?: string[]): import("yargs").Argv<{}>;
12
13
  export declare function runCli(argv?: string[]): {
13
14
  [x: string]: unknown;
@@ -18,4 +19,4 @@ export declare function runCli(argv?: string[]): {
18
19
  _: (string | number)[];
19
20
  $0: string;
20
21
  }>;
21
- export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, };
22
+ export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, webCommand, };
package/dist/cli/index.js CHANGED
@@ -10,6 +10,7 @@ import { statusCommand } from "./commands/status.js";
10
10
  import { resetCommand } from "./commands/reset.js";
11
11
  import { defaultCommand } from "./commands/default.js";
12
12
  import { verifyCommand } from "./commands/verify.js";
13
+ import { webCommand } from "./commands/web.js";
13
14
  export function buildCli(argv = hideBin(process.argv)) {
14
15
  return yargs(argv)
15
16
  .scriptName("interf")
@@ -22,6 +23,7 @@ export function buildCli(argv = hideBin(process.argv)) {
22
23
  .command(listCommand)
23
24
  .command(statusCommand)
24
25
  .command(verifyCommand)
26
+ .command(webCommand)
25
27
  .command(resetCommand)
26
28
  .strict()
27
29
  .help()
@@ -30,4 +32,4 @@ export function buildCli(argv = hideBin(process.argv)) {
30
32
  export function runCli(argv = hideBin(process.argv)) {
31
33
  return buildCli(argv).parse();
32
34
  }
33
- export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, };
35
+ export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, webCommand, };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  export * as compiler from "./packages/compiler/index.js";
2
2
  export * as workflowPackage from "./packages/workflow-package/index.js";
3
3
  export * as workflowAuthoring from "./packages/workflow-authoring/index.js";
4
+ export * as execution from "./packages/execution/index.js";
5
+ export * as localService from "./packages/local-service/index.js";
4
6
  export * as projectModel from "./packages/project-model/index.js";
5
7
  export * as agents from "./packages/agents/index.js";
6
8
  export * as testing from "./packages/testing/index.js";
@@ -8,14 +10,14 @@ export { createCompiled, } from "./packages/project-model/interf.js";
8
10
  export { compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./packages/compiler/workflows.js";
9
11
  export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./packages/testing/test.js";
10
12
  export { computeCompiledHealth, } from "./packages/compiler/state.js";
11
- export { SOURCE_FOLDER_CONFIG_FILE, SOURCE_FOLDER_CONFIG_PATH, legacySourceFolderConfigPath, loadSourceFolderConfig, migrateLegacySourceFolderConfig, resolveSourceFolderConfigPath, sourceFolderConfigPath, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
13
+ export { SOURCE_FOLDER_CONFIG_FILE, SOURCE_FOLDER_CONFIG_PATH, loadSourceFolderConfig, resolveSourceFolderConfigPath, sourceFolderConfigPath, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
12
14
  export { validateCompiledSummarize, validateCompiledCompile, } from "./packages/compiler/validate.js";
13
15
  export { InterfConfigSchema, SourceFolderConfigSchema, } from "./packages/project-model/lib/schema.js";
14
16
  export { TestSpecSchema, } from "./packages/testing/lib/schema.js";
15
17
  export { CompiledHealthSchema, } from "./packages/compiler/lib/schema.js";
16
18
  export type { InterfConfig } from "./packages/project-model/lib/schema.js";
17
19
  export type { TestCase, TestSpec, TestCheckResult, TestCaseResult, TestTargetResult, TestTargetRun, LoadedTestSpec, TestTargetCandidate, } from "./packages/testing/index.js";
18
- export type { SourceTruthCheck, SourceDatasetConfig, SourceFolderConfig, } from "./packages/project-model/lib/schema.js";
20
+ export type { SourceReadinessCheck, SourceDatasetConfig, SourceFolderConfig, } from "./packages/project-model/lib/schema.js";
19
21
  export type { TestCaseExpect, } from "./packages/testing/lib/schema.js";
20
22
  export type { CompiledHealth, } from "./packages/compiler/lib/schema.js";
21
23
  export type { CompiledStageValidation, CompiledWorkflowValidation, } from "./packages/compiler/validate.js";
package/dist/index.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export * as compiler from "./packages/compiler/index.js";
2
2
  export * as workflowPackage from "./packages/workflow-package/index.js";
3
3
  export * as workflowAuthoring from "./packages/workflow-authoring/index.js";
4
+ export * as execution from "./packages/execution/index.js";
5
+ export * as localService from "./packages/local-service/index.js";
4
6
  export * as projectModel from "./packages/project-model/index.js";
5
7
  export * as agents from "./packages/agents/index.js";
6
8
  export * as testing from "./packages/testing/index.js";
@@ -8,7 +10,7 @@ export { createCompiled, } from "./packages/project-model/interf.js";
8
10
  export { compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./packages/compiler/workflows.js";
9
11
  export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./packages/testing/test.js";
10
12
  export { computeCompiledHealth, } from "./packages/compiler/state.js";
11
- export { SOURCE_FOLDER_CONFIG_FILE, SOURCE_FOLDER_CONFIG_PATH, legacySourceFolderConfigPath, loadSourceFolderConfig, migrateLegacySourceFolderConfig, resolveSourceFolderConfigPath, sourceFolderConfigPath, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
13
+ export { SOURCE_FOLDER_CONFIG_FILE, SOURCE_FOLDER_CONFIG_PATH, loadSourceFolderConfig, resolveSourceFolderConfigPath, sourceFolderConfigPath, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
12
14
  export { validateCompiledSummarize, validateCompiledCompile, } from "./packages/compiler/validate.js";
13
15
  export { InterfConfigSchema, SourceFolderConfigSchema, } from "./packages/project-model/lib/schema.js";
14
16
  export { TestSpecSchema, } from "./packages/testing/lib/schema.js";
@@ -18,6 +18,7 @@ export function spawnAgent(agent, dirPath, prompt, options = {}) {
18
18
  const launchLine = `Launching ${agent.displayName}...`;
19
19
  console.log(chalk.dim(` ${launchLine}`));
20
20
  appendAgentStatusLog(options.statusLogPath, launchLine);
21
+ options.onStatus?.(launchLine);
21
22
  const proc = spawn(agent.command, args, {
22
23
  cwd: dirPath,
23
24
  env: buildAgentEnv(agent),
@@ -95,6 +96,7 @@ export function spawnAgent(agent, dirPath, prompt, options = {}) {
95
96
  : `${agent.displayName} started, but has not emitted visible progress yet... (${seconds}s)`;
96
97
  console.log(chalk.dim(` ${label}`));
97
98
  appendAgentStatusLog(options.statusLogPath, label);
99
+ options.onStatus?.(label);
98
100
  }, 5000);
99
101
  const forwardSignal = () => {
100
102
  requestProcessStop("SIGINT");
@@ -173,14 +175,14 @@ export function spawnAgent(agent, dirPath, prompt, options = {}) {
173
175
  lastToolActivity = toolActivity;
174
176
  }
175
177
  failureStatus ||= extractAgentFailureStatus(event);
176
- if (displayAgentEvent(event, options.statusLogPath, lastVisibleText)) {
178
+ if (displayAgentEvent(event, options.statusLogPath, lastVisibleText, options.onStatus)) {
177
179
  sawVisibleEvent = true;
178
180
  lastVisibleOutputAt = Date.now();
179
181
  }
180
182
  maybeInterruptAfterTerminalStatus();
181
183
  }
182
184
  catch {
183
- if (emitVisibleAgentText(line, options.statusLogPath, lastVisibleText)) {
185
+ if (emitVisibleAgentText(line, options.statusLogPath, lastVisibleText, options.onStatus)) {
184
186
  sawVisibleEvent = true;
185
187
  lastVisibleOutputAt = Date.now();
186
188
  }
@@ -11,6 +11,7 @@ export interface WorkflowExecuteOptions {
11
11
  eventLogPath?: string | null;
12
12
  statusLogPath?: string | null;
13
13
  completionCheck?: (() => boolean) | null;
14
+ onStatus?: (line: string) => void;
14
15
  }
15
16
  export interface WorkflowExecutor {
16
17
  kind: WorkflowExecutorKind;
@@ -26,6 +26,7 @@ export function createLocalAgentExecutor(agent, executionProfile = {}) {
26
26
  statusLogPath: options?.statusLogPath,
27
27
  executionProfile,
28
28
  completionCheck: options?.completionCheck,
29
+ onStatus: options?.onStatus,
29
30
  });
30
31
  },
31
32
  };
@@ -3,6 +3,6 @@ export interface VisibleTextState {
3
3
  terminated?: boolean;
4
4
  terminalStatus?: string | null;
5
5
  }
6
- export declare function emitVisibleAgentText(text: string, statusLogPath: string | null | undefined, lastVisibleText?: VisibleTextState): boolean;
7
- export declare function displayAgentEvent(event: Record<string, unknown>, statusLogPath: string | null | undefined, lastVisibleText: VisibleTextState): boolean;
6
+ export declare function emitVisibleAgentText(text: string, statusLogPath: string | null | undefined, lastVisibleText?: VisibleTextState, onStatus?: (line: string) => void): boolean;
7
+ export declare function displayAgentEvent(event: Record<string, unknown>, statusLogPath: string | null | undefined, lastVisibleText: VisibleTextState, onStatus?: (line: string) => void): boolean;
8
8
  export declare function summarizeAgentToolActivity(event: Record<string, unknown>): string | null;
@@ -2,7 +2,7 @@ import { basename } from "node:path";
2
2
  import chalk from "chalk";
3
3
  import { SHOW_AGENT_TOOL_EVENTS, VISIBLE_STATUS_PREFIXES, } from "./constants.js";
4
4
  import { appendAgentStatusLog } from "./logs.js";
5
- export function emitVisibleAgentText(text, statusLogPath, lastVisibleText) {
5
+ export function emitVisibleAgentText(text, statusLogPath, lastVisibleText, onStatus) {
6
6
  if (lastVisibleText?.terminated) {
7
7
  return false;
8
8
  }
@@ -17,6 +17,7 @@ export function emitVisibleAgentText(text, statusLogPath, lastVisibleText) {
17
17
  }
18
18
  console.log(chalk.dim(` ${line}`));
19
19
  appendAgentStatusLog(statusLogPath, line);
20
+ onStatus?.(line);
20
21
  if (lastVisibleText) {
21
22
  lastVisibleText.current = line;
22
23
  if (isTerminalVisibleStatus(line)) {
@@ -28,7 +29,7 @@ export function emitVisibleAgentText(text, statusLogPath, lastVisibleText) {
28
29
  }
29
30
  return displayed;
30
31
  }
31
- export function displayAgentEvent(event, statusLogPath, lastVisibleText) {
32
+ export function displayAgentEvent(event, statusLogPath, lastVisibleText, onStatus) {
32
33
  const type = event.type;
33
34
  let displayed = false;
34
35
  if (type === "tool_use" && SHOW_AGENT_TOOL_EVENTS) {
@@ -50,7 +51,7 @@ export function displayAgentEvent(event, statusLogPath, lastVisibleText) {
50
51
  for (const block of content) {
51
52
  if (block.type === "text" && block.text) {
52
53
  const text = block.text.trim();
53
- displayed = emitVisibleAgentText(text, statusLogPath, lastVisibleText) || displayed;
54
+ displayed = emitVisibleAgentText(text, statusLogPath, lastVisibleText, onStatus) || displayed;
54
55
  }
55
56
  if (block.type === "tool_use" && SHOW_AGENT_TOOL_EVENTS) {
56
57
  const name = block.name;
@@ -70,7 +71,7 @@ export function displayAgentEvent(event, statusLogPath, lastVisibleText) {
70
71
  if (type === "item.started" || type === "item.completed") {
71
72
  const item = event.item;
72
73
  if (item) {
73
- displayed = displayItemEvent(type, item, statusLogPath, lastVisibleText) || displayed;
74
+ displayed = displayItemEvent(type, item, statusLogPath, lastVisibleText, onStatus) || displayed;
74
75
  }
75
76
  }
76
77
  if (type === "result") {
@@ -79,7 +80,7 @@ export function displayAgentEvent(event, statusLogPath, lastVisibleText) {
79
80
  if (result && subtype !== "tool_result") {
80
81
  const lines = result.split("\n");
81
82
  for (const line of lines) {
82
- displayed = emitVisibleAgentText(line, statusLogPath, lastVisibleText) || displayed;
83
+ displayed = emitVisibleAgentText(line, statusLogPath, lastVisibleText, onStatus) || displayed;
83
84
  }
84
85
  }
85
86
  }
@@ -90,7 +91,7 @@ export function displayAgentEvent(event, statusLogPath, lastVisibleText) {
90
91
  pickString(event.summary);
91
92
  if (message && type !== "assistant" && type !== "result") {
92
93
  const text = message.trim();
93
- displayed = emitVisibleAgentText(text, statusLogPath, lastVisibleText) || displayed;
94
+ displayed = emitVisibleAgentText(text, statusLogPath, lastVisibleText, onStatus) || displayed;
94
95
  }
95
96
  return displayed;
96
97
  }
@@ -129,16 +130,16 @@ function pickString(value) {
129
130
  }
130
131
  return null;
131
132
  }
132
- function displayItemEvent(type, item, statusLogPath, lastVisibleText) {
133
+ function displayItemEvent(type, item, statusLogPath, lastVisibleText, onStatus) {
133
134
  const itemType = item.type;
134
135
  if (itemType === "agent_message") {
135
136
  const text = item.text?.trim();
136
- return text ? emitVisibleAgentText(text, statusLogPath, lastVisibleText) : false;
137
+ return text ? emitVisibleAgentText(text, statusLogPath, lastVisibleText, onStatus) : false;
137
138
  }
138
139
  if (itemType === "command_execution" && type === "item.completed") {
139
140
  const output = item.aggregated_output?.trim();
140
141
  if (output) {
141
- return emitVisibleAgentText(output, statusLogPath, lastVisibleText);
142
+ return emitVisibleAgentText(output, statusLogPath, lastVisibleText, onStatus);
142
143
  }
143
144
  }
144
145
  if (!SHOW_AGENT_TOOL_EVENTS) {
@@ -1,5 +1,5 @@
1
1
  import type { RuntimeContractType, WorkflowImprovementContext } from "../../compiler/lib/schema.js";
2
- import type { SourceTruthCheck } from "../../project-model/lib/schema.js";
2
+ import type { SourceReadinessCheck } from "../../project-model/lib/schema.js";
3
3
  import { type ContextInterfaceZoneId as WorkflowZoneId } from "../../workflow-package/context-interface.js";
4
4
  export interface NativeStageDefinition {
5
5
  id: string;
@@ -18,22 +18,14 @@ export declare function renderCompiledAgents(compiledPath: string, name: string,
18
18
  export declare function renderCompiledQuerySkill(): string;
19
19
  export declare function syncStageExecutionShellWrites(compiledPath: string, shellRoot: string, stage: NativeStageDefinition, writeArtifacts?: readonly string[]): void;
20
20
  export declare function renderClaudeBootstrap(content: string): string;
21
- export interface WorkflowAuthoringPreviewInfo {
22
- compiledPath: string;
23
- compileResult: {
24
- ok: boolean;
25
- failedStage: string | null;
26
- };
27
- }
28
21
  export declare function createWorkflowAuthoringShell(options: {
29
22
  workflowPath: string;
30
23
  workflowId: string;
31
24
  label: string;
32
- baseWorkflowId: string;
25
+ referenceWorkflowId?: string | null;
33
26
  datasetPath: string;
34
27
  taskPrompt: string;
35
- checks: SourceTruthCheck[];
36
- preview?: WorkflowAuthoringPreviewInfo | null;
28
+ checks: SourceReadinessCheck[];
37
29
  }): {
38
30
  rootPath: string;
39
31
  workflowBeforePath: string;