@interf/compiler 0.6.1 → 0.6.4

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 (391) hide show
  1. package/README.md +106 -80
  2. package/builtin-workflows/interf/README.md +5 -5
  3. package/builtin-workflows/interf/compile/stages/shape/SKILL.md +4 -4
  4. package/builtin-workflows/interf/improve/SKILL.md +2 -2
  5. package/builtin-workflows/interf/use/query/SKILL.md +1 -1
  6. package/builtin-workflows/interf/workflow.json +6 -6
  7. package/builtin-workflows/interf/workflow.schema.json +1 -1
  8. package/dist/bin.js +2 -28
  9. package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
  10. package/dist/{commands → cli/commands}/check-draft.js +16 -16
  11. package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
  12. package/dist/{commands → cli/commands}/compile-controller.js +37 -35
  13. package/dist/{commands → cli/commands}/compile.d.ts +2 -2
  14. package/dist/{commands → cli/commands}/compile.js +15 -11
  15. package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
  16. package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
  17. package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +3 -3
  18. package/dist/{commands → cli/commands}/create-workflow-wizard.js +64 -37
  19. package/dist/{commands → cli/commands}/create.d.ts +1 -1
  20. package/dist/{commands → cli/commands}/create.js +15 -18
  21. package/dist/{commands → cli/commands}/dataset-selection.d.ts +1 -1
  22. package/dist/{commands → cli/commands}/default.js +3 -3
  23. package/dist/{commands → cli/commands}/doctor.js +5 -6
  24. package/dist/{commands → cli/commands}/executor-flow.d.ts +1 -1
  25. package/dist/{commands → cli/commands}/executor-flow.js +13 -16
  26. package/dist/{commands → cli/commands}/init.d.ts +4 -1
  27. package/dist/{commands → cli/commands}/init.js +162 -77
  28. package/dist/{commands → cli/commands}/list.js +6 -6
  29. package/dist/{commands → cli/commands}/reset.js +4 -4
  30. package/dist/{commands → cli/commands}/source-config-wizard.d.ts +9 -4
  31. package/dist/{commands → cli/commands}/source-config-wizard.js +168 -94
  32. package/dist/{commands → cli/commands}/status.js +20 -11
  33. package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
  34. package/dist/{commands → cli/commands}/test-flow.js +52 -48
  35. package/dist/cli/commands/test.d.ts +14 -0
  36. package/dist/{commands → cli/commands}/test.js +40 -24
  37. package/dist/{commands → cli/commands}/verify.js +4 -4
  38. package/dist/cli/index.d.ts +21 -0
  39. package/dist/cli/index.js +33 -0
  40. package/dist/index.d.ts +22 -11
  41. package/dist/index.js +15 -6
  42. package/dist/lib/agent-args.d.ts +1 -4
  43. package/dist/lib/agent-args.js +1 -52
  44. package/dist/lib/agent-constants.d.ts +1 -5
  45. package/dist/lib/agent-constants.js +1 -28
  46. package/dist/lib/agent-detection.d.ts +1 -7
  47. package/dist/lib/agent-detection.js +1 -65
  48. package/dist/lib/agent-execution.d.ts +1 -2
  49. package/dist/lib/agent-execution.js +1 -243
  50. package/dist/lib/agent-logs.d.ts +1 -2
  51. package/dist/lib/agent-logs.js +1 -17
  52. package/dist/lib/agent-preflight.d.ts +1 -7
  53. package/dist/lib/agent-preflight.js +1 -77
  54. package/dist/lib/agent-render.d.ts +1 -8
  55. package/dist/lib/agent-render.js +1 -218
  56. package/dist/lib/agent-shells.d.ts +1 -69
  57. package/dist/lib/agent-shells.js +1 -1021
  58. package/dist/lib/agent-status.d.ts +1 -3
  59. package/dist/lib/agent-status.js +1 -58
  60. package/dist/lib/agent-types.d.ts +1 -30
  61. package/dist/lib/agent-types.js +1 -1
  62. package/dist/lib/agents.d.ts +1 -6
  63. package/dist/lib/agents.js +1 -5
  64. package/dist/lib/builtin-compiled-workflow.d.ts +1 -38
  65. package/dist/lib/builtin-compiled-workflow.js +1 -94
  66. package/dist/lib/chart-guidance.d.ts +1 -1
  67. package/dist/lib/chart-guidance.js +1 -8
  68. package/dist/lib/compiled-compile.d.ts +1 -48
  69. package/dist/lib/compiled-compile.js +1 -255
  70. package/dist/lib/compiled-paths.d.ts +1 -40
  71. package/dist/lib/compiled-paths.js +3 -106
  72. package/dist/lib/compiled-raw.d.ts +1 -49
  73. package/dist/lib/compiled-raw.js +3 -102
  74. package/dist/lib/compiled-reset.d.ts +1 -2
  75. package/dist/lib/compiled-reset.js +3 -72
  76. package/dist/lib/compiled-schema.d.ts +1 -31
  77. package/dist/lib/compiled-schema.js +1 -141
  78. package/dist/lib/discovery.d.ts +1 -7
  79. package/dist/lib/discovery.js +1 -84
  80. package/dist/lib/execution-profile.d.ts +1 -17
  81. package/dist/lib/execution-profile.js +1 -84
  82. package/dist/lib/executors.d.ts +1 -32
  83. package/dist/lib/executors.js +1 -43
  84. package/dist/lib/filesystem.d.ts +1 -2
  85. package/dist/lib/filesystem.js +1 -55
  86. package/dist/lib/interf-bootstrap.d.ts +1 -3
  87. package/dist/lib/interf-bootstrap.js +3 -18
  88. package/dist/lib/interf-detect.d.ts +1 -33
  89. package/dist/lib/interf-detect.js +3 -176
  90. package/dist/lib/interf-scaffold.d.ts +1 -2
  91. package/dist/lib/interf-scaffold.js +3 -114
  92. package/dist/lib/interf-workflow-package.d.ts +1 -25
  93. package/dist/lib/interf-workflow-package.js +1 -342
  94. package/dist/lib/interf.d.ts +1 -5
  95. package/dist/lib/interf.js +3 -4
  96. package/dist/lib/local-workflows.d.ts +1 -54
  97. package/dist/lib/local-workflows.js +1 -422
  98. package/dist/lib/logger.d.ts +1 -3
  99. package/dist/lib/logger.js +1 -10
  100. package/dist/lib/package-root.d.ts +1 -0
  101. package/dist/lib/package-root.js +1 -0
  102. package/dist/lib/parse.d.ts +1 -8
  103. package/dist/lib/parse.js +1 -145
  104. package/dist/lib/project-paths.d.ts +1 -11
  105. package/dist/lib/project-paths.js +3 -32
  106. package/dist/lib/runtime-acceptance.d.ts +1 -9
  107. package/dist/lib/runtime-acceptance.js +1 -269
  108. package/dist/lib/runtime-contracts.d.ts +1 -2
  109. package/dist/lib/runtime-contracts.js +1 -48
  110. package/dist/lib/runtime-inventory.d.ts +1 -7
  111. package/dist/lib/runtime-inventory.js +1 -29
  112. package/dist/lib/runtime-paths.d.ts +1 -8
  113. package/dist/lib/runtime-paths.js +1 -26
  114. package/dist/lib/runtime-prompt.d.ts +1 -2
  115. package/dist/lib/runtime-prompt.js +1 -48
  116. package/dist/lib/runtime-reconcile.d.ts +1 -2
  117. package/dist/lib/runtime-reconcile.js +1 -193
  118. package/dist/lib/runtime-runs.d.ts +1 -11
  119. package/dist/lib/runtime-runs.js +1 -262
  120. package/dist/lib/runtime-types.d.ts +1 -43
  121. package/dist/lib/runtime-types.js +1 -1
  122. package/dist/lib/runtime.d.ts +1 -6
  123. package/dist/lib/runtime.js +1 -5
  124. package/dist/lib/schema.d.ts +4 -1073
  125. package/dist/lib/schema.js +6 -542
  126. package/dist/lib/source-config.d.ts +1 -39
  127. package/dist/lib/source-config.js +3 -293
  128. package/dist/lib/state-artifacts.d.ts +1 -8
  129. package/dist/lib/state-artifacts.js +1 -13
  130. package/dist/lib/state-health.d.ts +1 -4
  131. package/dist/lib/state-health.js +1 -132
  132. package/dist/lib/state-io.d.ts +1 -10
  133. package/dist/lib/state-io.js +1 -76
  134. package/dist/lib/state-paths.d.ts +1 -4
  135. package/dist/lib/state-paths.js +1 -13
  136. package/dist/lib/state-view.d.ts +1 -4
  137. package/dist/lib/state-view.js +1 -103
  138. package/dist/lib/state.d.ts +1 -7
  139. package/dist/lib/state.js +1 -12
  140. package/dist/lib/test-execution.d.ts +1 -14
  141. package/dist/lib/test-execution.js +3 -525
  142. package/dist/lib/test-matrices.d.ts +1 -90
  143. package/dist/lib/test-matrices.js +3 -96
  144. package/dist/lib/test-paths.d.ts +1 -12
  145. package/dist/lib/test-paths.js +3 -59
  146. package/dist/lib/test-profile-presets.d.ts +1 -57
  147. package/dist/lib/test-profile-presets.js +3 -50
  148. package/dist/lib/test-sandbox.d.ts +1 -11
  149. package/dist/lib/test-sandbox.js +3 -105
  150. package/dist/lib/test-specs.d.ts +1 -7
  151. package/dist/lib/test-specs.js +3 -114
  152. package/dist/lib/test-targets.d.ts +1 -5
  153. package/dist/lib/test-targets.js +3 -38
  154. package/dist/lib/test-types.d.ts +1 -17
  155. package/dist/lib/test-types.js +3 -1
  156. package/dist/lib/test.d.ts +1 -4
  157. package/dist/lib/test.js +3 -3
  158. package/dist/lib/util.d.ts +1 -4
  159. package/dist/lib/util.js +1 -25
  160. package/dist/lib/validate-compiled.d.ts +1 -27
  161. package/dist/lib/validate-compiled.js +1 -241
  162. package/dist/lib/validate-helpers.d.ts +1 -12
  163. package/dist/lib/validate-helpers.js +1 -41
  164. package/dist/lib/validate.d.ts +1 -21
  165. package/dist/lib/validate.js +1 -249
  166. package/dist/lib/workflow-authoring.d.ts +1 -26
  167. package/dist/lib/workflow-authoring.js +1 -119
  168. package/dist/lib/workflow-definitions.d.ts +1 -78
  169. package/dist/lib/workflow-definitions.js +1 -203
  170. package/dist/lib/workflow-edit-session.d.ts +1 -16
  171. package/dist/lib/workflow-edit-session.js +1 -57
  172. package/dist/lib/workflow-edit-utils.d.ts +1 -10
  173. package/dist/lib/workflow-edit-utils.js +1 -39
  174. package/dist/lib/workflow-helpers.d.ts +1 -38
  175. package/dist/lib/workflow-helpers.js +1 -167
  176. package/dist/lib/workflow-improvement.d.ts +1 -22
  177. package/dist/lib/workflow-improvement.js +1 -209
  178. package/dist/lib/workflow-primitives.d.ts +1 -2
  179. package/dist/lib/workflow-primitives.js +1 -5
  180. package/dist/lib/workflow-review-paths.d.ts +1 -10
  181. package/dist/lib/workflow-review-paths.js +1 -27
  182. package/dist/lib/workflow-stage-policy.d.ts +1 -5
  183. package/dist/lib/workflow-stage-policy.js +1 -31
  184. package/dist/lib/workflow-stage-runner.d.ts +1 -41
  185. package/dist/lib/workflow-stage-runner.js +1 -109
  186. package/dist/lib/workflows.d.ts +1 -15
  187. package/dist/lib/workflows.js +1 -31
  188. package/dist/packages/agents/index.d.ts +18 -0
  189. package/dist/packages/agents/index.js +16 -0
  190. package/dist/packages/agents/lib/agents.d.ts +6 -0
  191. package/dist/packages/agents/lib/agents.js +5 -0
  192. package/dist/packages/agents/lib/args.d.ts +4 -0
  193. package/dist/packages/agents/lib/args.js +52 -0
  194. package/dist/packages/agents/lib/chart-guidance.d.ts +1 -0
  195. package/dist/packages/agents/lib/chart-guidance.js +8 -0
  196. package/dist/packages/agents/lib/compiled-bootstrap.d.ts +3 -0
  197. package/dist/packages/agents/lib/compiled-bootstrap.js +18 -0
  198. package/dist/packages/agents/lib/constants.d.ts +5 -0
  199. package/dist/packages/agents/lib/constants.js +28 -0
  200. package/dist/packages/agents/lib/detection.d.ts +7 -0
  201. package/dist/packages/agents/lib/detection.js +65 -0
  202. package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
  203. package/dist/packages/agents/lib/execution-profile.js +84 -0
  204. package/dist/packages/agents/lib/execution.d.ts +2 -0
  205. package/dist/packages/agents/lib/execution.js +243 -0
  206. package/dist/packages/agents/lib/executors.d.ts +32 -0
  207. package/dist/packages/agents/lib/executors.js +45 -0
  208. package/dist/packages/agents/lib/logs.d.ts +2 -0
  209. package/dist/packages/agents/lib/logs.js +17 -0
  210. package/dist/packages/agents/lib/preflight.d.ts +7 -0
  211. package/dist/packages/agents/lib/preflight.js +77 -0
  212. package/dist/packages/agents/lib/render.d.ts +8 -0
  213. package/dist/packages/agents/lib/render.js +218 -0
  214. package/dist/packages/agents/lib/schema.d.ts +8 -0
  215. package/dist/packages/agents/lib/schema.js +7 -0
  216. package/dist/packages/agents/lib/shells.d.ts +71 -0
  217. package/dist/packages/agents/lib/shells.js +1023 -0
  218. package/dist/packages/agents/lib/status.d.ts +3 -0
  219. package/dist/packages/agents/lib/status.js +58 -0
  220. package/dist/packages/agents/lib/types.d.ts +30 -0
  221. package/dist/packages/agents/lib/types.js +1 -0
  222. package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
  223. package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
  224. package/dist/packages/compiler/compiled-compile.d.ts +4 -0
  225. package/dist/packages/compiler/compiled-compile.js +4 -0
  226. package/dist/packages/compiler/compiled-paths.d.ts +40 -0
  227. package/dist/packages/compiler/compiled-paths.js +106 -0
  228. package/dist/packages/compiler/compiled-pipeline.d.ts +39 -0
  229. package/dist/packages/compiler/compiled-pipeline.js +134 -0
  230. package/dist/packages/compiler/compiled-schema.d.ts +31 -0
  231. package/dist/packages/compiler/compiled-schema.js +141 -0
  232. package/dist/packages/compiler/compiled-stage-plan.d.ts +15 -0
  233. package/dist/packages/compiler/compiled-stage-plan.js +79 -0
  234. package/dist/packages/compiler/compiled-stage-runner.d.ts +10 -0
  235. package/dist/packages/compiler/compiled-stage-runner.js +46 -0
  236. package/dist/packages/compiler/compiled-target.d.ts +11 -0
  237. package/dist/packages/compiler/compiled-target.js +16 -0
  238. package/dist/packages/compiler/discovery.d.ts +7 -0
  239. package/dist/packages/compiler/discovery.js +80 -0
  240. package/dist/packages/compiler/index.d.ts +24 -0
  241. package/dist/packages/compiler/index.js +23 -0
  242. package/dist/packages/compiler/lib/schema.d.ts +684 -0
  243. package/dist/packages/compiler/lib/schema.js +363 -0
  244. package/dist/packages/compiler/raw-snapshot.d.ts +49 -0
  245. package/dist/packages/compiler/raw-snapshot.js +102 -0
  246. package/dist/packages/compiler/reset.d.ts +2 -0
  247. package/dist/packages/compiler/reset.js +72 -0
  248. package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
  249. package/dist/packages/compiler/runtime-acceptance.js +269 -0
  250. package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
  251. package/dist/packages/compiler/runtime-contracts.js +48 -0
  252. package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
  253. package/dist/packages/compiler/runtime-inventory.js +29 -0
  254. package/dist/packages/compiler/runtime-paths.d.ts +8 -0
  255. package/dist/packages/compiler/runtime-paths.js +26 -0
  256. package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
  257. package/dist/packages/compiler/runtime-prompt.js +48 -0
  258. package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
  259. package/dist/packages/compiler/runtime-reconcile.js +193 -0
  260. package/dist/packages/compiler/runtime-runs.d.ts +11 -0
  261. package/dist/packages/compiler/runtime-runs.js +262 -0
  262. package/dist/packages/compiler/runtime-types.d.ts +43 -0
  263. package/dist/packages/compiler/runtime-types.js +1 -0
  264. package/dist/packages/compiler/runtime.d.ts +6 -0
  265. package/dist/packages/compiler/runtime.js +5 -0
  266. package/dist/packages/compiler/state-artifacts.d.ts +8 -0
  267. package/dist/packages/compiler/state-artifacts.js +13 -0
  268. package/dist/packages/compiler/state-health.d.ts +4 -0
  269. package/dist/packages/compiler/state-health.js +132 -0
  270. package/dist/packages/compiler/state-io.d.ts +10 -0
  271. package/dist/packages/compiler/state-io.js +76 -0
  272. package/dist/packages/compiler/state-paths.d.ts +4 -0
  273. package/dist/packages/compiler/state-paths.js +13 -0
  274. package/dist/packages/compiler/state-view.d.ts +4 -0
  275. package/dist/packages/compiler/state-view.js +103 -0
  276. package/dist/packages/compiler/state.d.ts +7 -0
  277. package/dist/packages/compiler/state.js +12 -0
  278. package/dist/packages/compiler/validate-compiled.d.ts +27 -0
  279. package/dist/packages/compiler/validate-compiled.js +241 -0
  280. package/dist/packages/compiler/validate-helpers.d.ts +12 -0
  281. package/dist/packages/compiler/validate-helpers.js +41 -0
  282. package/dist/packages/compiler/validate.d.ts +21 -0
  283. package/dist/packages/compiler/validate.js +249 -0
  284. package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
  285. package/dist/packages/compiler/workflow-primitives.js +5 -0
  286. package/dist/packages/compiler/workflows.d.ts +15 -0
  287. package/dist/packages/compiler/workflows.js +31 -0
  288. package/dist/packages/project-model/compiled-paths.d.ts +1 -0
  289. package/dist/packages/project-model/compiled-paths.js +1 -0
  290. package/dist/packages/project-model/compiled-raw.d.ts +1 -0
  291. package/dist/packages/project-model/compiled-raw.js +1 -0
  292. package/dist/packages/project-model/compiled-reset.d.ts +1 -0
  293. package/dist/packages/project-model/compiled-reset.js +1 -0
  294. package/dist/packages/project-model/index.d.ts +11 -0
  295. package/dist/packages/project-model/index.js +10 -0
  296. package/dist/packages/project-model/interf-bootstrap.d.ts +1 -0
  297. package/dist/packages/project-model/interf-bootstrap.js +1 -0
  298. package/dist/packages/project-model/interf-detect.d.ts +33 -0
  299. package/dist/packages/project-model/interf-detect.js +176 -0
  300. package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
  301. package/dist/packages/project-model/interf-scaffold.js +124 -0
  302. package/dist/packages/project-model/interf.d.ts +5 -0
  303. package/dist/packages/project-model/interf.js +4 -0
  304. package/dist/packages/project-model/lib/schema.d.ts +125 -0
  305. package/dist/packages/project-model/lib/schema.js +62 -0
  306. package/dist/packages/project-model/project-paths.d.ts +11 -0
  307. package/dist/packages/project-model/project-paths.js +32 -0
  308. package/dist/packages/project-model/source-config.d.ts +38 -0
  309. package/dist/packages/project-model/source-config.js +298 -0
  310. package/dist/packages/shared/file-types.d.ts +1 -0
  311. package/dist/packages/shared/file-types.js +4 -0
  312. package/dist/packages/shared/filesystem.d.ts +2 -0
  313. package/dist/packages/shared/filesystem.js +55 -0
  314. package/dist/packages/shared/index.d.ts +7 -0
  315. package/dist/packages/shared/index.js +7 -0
  316. package/dist/packages/shared/logger.d.ts +3 -0
  317. package/dist/packages/shared/logger.js +10 -0
  318. package/dist/packages/shared/naming.d.ts +1 -0
  319. package/dist/packages/shared/naming.js +8 -0
  320. package/dist/packages/shared/parse.d.ts +8 -0
  321. package/dist/packages/shared/parse.js +145 -0
  322. package/dist/packages/shared/path-guards.d.ts +2 -0
  323. package/dist/packages/shared/path-guards.js +14 -0
  324. package/dist/packages/shared/util.d.ts +3 -0
  325. package/dist/packages/shared/util.js +3 -0
  326. package/dist/packages/testing/index.d.ts +13 -0
  327. package/dist/packages/testing/index.js +10 -0
  328. package/dist/packages/testing/lib/schema.d.ts +261 -0
  329. package/dist/packages/testing/lib/schema.js +119 -0
  330. package/dist/packages/testing/test-execution.d.ts +14 -0
  331. package/dist/packages/testing/test-execution.js +525 -0
  332. package/dist/packages/testing/test-matrices.d.ts +90 -0
  333. package/dist/packages/testing/test-matrices.js +96 -0
  334. package/dist/packages/testing/test-paths.d.ts +12 -0
  335. package/dist/packages/testing/test-paths.js +59 -0
  336. package/dist/packages/testing/test-profile-presets.d.ts +57 -0
  337. package/dist/packages/testing/test-profile-presets.js +50 -0
  338. package/dist/packages/testing/test-sandbox.d.ts +11 -0
  339. package/dist/packages/testing/test-sandbox.js +105 -0
  340. package/dist/packages/testing/test-specs.d.ts +7 -0
  341. package/dist/packages/testing/test-specs.js +114 -0
  342. package/dist/packages/testing/test-targets.d.ts +5 -0
  343. package/dist/packages/testing/test-targets.js +38 -0
  344. package/dist/packages/testing/test-types.d.ts +16 -0
  345. package/dist/packages/testing/test-types.js +1 -0
  346. package/dist/packages/testing/test.d.ts +4 -0
  347. package/dist/packages/testing/test.js +3 -0
  348. package/dist/packages/workflow-authoring/index.d.ts +4 -0
  349. package/dist/packages/workflow-authoring/index.js +4 -0
  350. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
  351. package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
  352. package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
  353. package/dist/packages/workflow-authoring/workflow-authoring.js +121 -0
  354. package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
  355. package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
  356. package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
  357. package/dist/packages/workflow-authoring/workflow-improvement.js +210 -0
  358. package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
  359. package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
  360. package/dist/packages/workflow-package/context-interface.d.ts +96 -0
  361. package/dist/packages/workflow-package/context-interface.js +146 -0
  362. package/dist/packages/workflow-package/index.d.ts +11 -0
  363. package/dist/packages/workflow-package/index.js +11 -0
  364. package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
  365. package/dist/packages/workflow-package/interf-workflow-package.js +389 -0
  366. package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
  367. package/dist/packages/workflow-package/lib/package-root.js +6 -0
  368. package/dist/packages/workflow-package/local-workflows.d.ts +57 -0
  369. package/dist/packages/workflow-package/local-workflows.js +424 -0
  370. package/dist/packages/workflow-package/workflow-definitions.d.ts +82 -0
  371. package/dist/packages/workflow-package/workflow-definitions.js +210 -0
  372. package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
  373. package/dist/packages/workflow-package/workflow-helpers.js +167 -0
  374. package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
  375. package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
  376. package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
  377. package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
  378. package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
  379. package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
  380. package/package.json +43 -19
  381. package/dist/commands/test.d.ts +0 -3
  382. package/dist/lib/compiled-home.d.ts +0 -5
  383. package/dist/lib/compiled-home.js +0 -32
  384. package/dist/lib/config.js +0 -9
  385. /package/dist/{commands → cli/commands}/dataset-selection.js +0 -0
  386. /package/dist/{commands → cli/commands}/default.d.ts +0 -0
  387. /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
  388. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  389. /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
  390. /package/dist/{commands → cli/commands}/status.d.ts +0 -0
  391. /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
@@ -0,0 +1,243 @@
1
+ import { spawn } from "node:child_process";
2
+ import chalk from "chalk";
3
+ import { CODEX_NOISE_PATTERNS } from "./constants.js";
4
+ import { buildAgentArgs, buildAgentEnv } from "./args.js";
5
+ import { appendAgentEventLog, appendAgentStatusLog } from "./logs.js";
6
+ import { displayAgentEvent, emitVisibleAgentText, summarizeAgentToolActivity, } from "./render.js";
7
+ import { classifyTerminalVisibleStatus, extractAgentFailureStatus, hasAgentStalled, } from "./status.js";
8
+ const STOP_SIGNAL_GRACE_MS = 1500;
9
+ export function spawnAgent(agent, dirPath, prompt, options = {}) {
10
+ return new Promise((resolve) => {
11
+ const args = buildAgentArgs(agent, prompt, options.executionProfile);
12
+ appendAgentEventLog(options.eventLogPath, {
13
+ type: "spawn",
14
+ command: agent.command,
15
+ args,
16
+ cwd: dirPath,
17
+ });
18
+ const launchLine = `Launching ${agent.displayName}...`;
19
+ console.log(chalk.dim(` ${launchLine}`));
20
+ appendAgentStatusLog(options.statusLogPath, launchLine);
21
+ const proc = spawn(agent.command, args, {
22
+ cwd: dirPath,
23
+ env: buildAgentEnv(agent),
24
+ stdio: ["ignore", "pipe", "pipe"],
25
+ });
26
+ const timeoutMs = options.executionProfile?.timeoutMs ?? null;
27
+ let buffer = "";
28
+ let stderrBuffer = "";
29
+ let lastVisibleOutputAt = Date.now();
30
+ let lastActivityAt = Date.now();
31
+ let lastHeartbeatAt = 0;
32
+ let sawRawOutput = false;
33
+ let sawVisibleEvent = false;
34
+ let timedOut = false;
35
+ let completionSatisfied = false;
36
+ let failureStatus = null;
37
+ let terminalSignalSent = false;
38
+ let lastToolActivity = null;
39
+ let stopPhase = "running";
40
+ let stopTimer = null;
41
+ const lastVisibleText = { current: null };
42
+ const clearStopTimer = () => {
43
+ if (!stopTimer)
44
+ return;
45
+ clearTimeout(stopTimer);
46
+ stopTimer = null;
47
+ };
48
+ const requestProcessStop = (signal = "SIGINT") => {
49
+ if (proc.exitCode != null)
50
+ return;
51
+ if (signal === "SIGINT") {
52
+ if (stopPhase !== "running")
53
+ return;
54
+ stopPhase = "sigint";
55
+ }
56
+ else if (signal === "SIGTERM") {
57
+ if (stopPhase === "sigterm" || stopPhase === "sigkill")
58
+ return;
59
+ stopPhase = "sigterm";
60
+ }
61
+ else if (signal === "SIGKILL") {
62
+ if (stopPhase === "sigkill")
63
+ return;
64
+ stopPhase = "sigkill";
65
+ }
66
+ appendAgentEventLog(options.eventLogPath, {
67
+ type: "signal",
68
+ signal,
69
+ });
70
+ proc.kill(signal);
71
+ clearStopTimer();
72
+ if (signal === "SIGKILL")
73
+ return;
74
+ stopTimer = setTimeout(() => {
75
+ if (proc.exitCode != null)
76
+ return;
77
+ requestProcessStop(signal === "SIGINT" ? "SIGTERM" : "SIGKILL");
78
+ }, STOP_SIGNAL_GRACE_MS);
79
+ };
80
+ const heartbeat = setInterval(() => {
81
+ const now = Date.now();
82
+ const minQuietMs = sawVisibleEvent ? 15000 : 8000;
83
+ const minHeartbeatGapMs = sawVisibleEvent ? 30000 : 12000;
84
+ if (now - lastVisibleOutputAt < minQuietMs)
85
+ return;
86
+ if (now - lastHeartbeatAt < minHeartbeatGapMs)
87
+ return;
88
+ lastHeartbeatAt = now;
89
+ const seconds = Math.floor((now - lastVisibleOutputAt) / 1000);
90
+ const activitySuffix = lastToolActivity ? ` while ${lastToolActivity}` : "";
91
+ const label = sawVisibleEvent
92
+ ? `${agent.displayName} is still running${activitySuffix}... (${seconds}s since last output)`
93
+ : sawRawOutput
94
+ ? `${agent.displayName} is active${activitySuffix}, but has not emitted visible progress yet... (${seconds}s)`
95
+ : `${agent.displayName} started, but has not emitted visible progress yet... (${seconds}s)`;
96
+ console.log(chalk.dim(` ${label}`));
97
+ appendAgentStatusLog(options.statusLogPath, label);
98
+ }, 5000);
99
+ const forwardSignal = () => {
100
+ requestProcessStop("SIGINT");
101
+ };
102
+ const maybeInterruptAfterTerminalStatus = () => {
103
+ if (options.completionCheck)
104
+ return;
105
+ if (terminalSignalSent || !lastVisibleText.terminalStatus)
106
+ return;
107
+ terminalSignalSent = true;
108
+ appendAgentEventLog(options.eventLogPath, {
109
+ type: "terminal-status",
110
+ status: lastVisibleText.terminalStatus,
111
+ });
112
+ const terminalKind = classifyTerminalVisibleStatus(lastVisibleText.terminalStatus);
113
+ if (terminalKind === "done") {
114
+ completionSatisfied = true;
115
+ }
116
+ else if (terminalKind === "failure") {
117
+ failureStatus ||= lastVisibleText.terminalStatus;
118
+ }
119
+ requestProcessStop("SIGINT");
120
+ };
121
+ const timeout = typeof timeoutMs === "number" && timeoutMs > 0
122
+ ? setInterval(() => {
123
+ const now = Date.now();
124
+ const idleMs = now - lastActivityAt;
125
+ if (!hasAgentStalled(lastActivityAt, now, timeoutMs))
126
+ return;
127
+ timedOut = true;
128
+ appendAgentEventLog(options.eventLogPath, {
129
+ type: "stall-timeout",
130
+ timeout_ms: timeoutMs,
131
+ idle_ms: idleMs,
132
+ });
133
+ console.log(chalk.red(` ${agent.displayName} stalled for ${Math.round(idleMs / 1000)}s without agent output.`));
134
+ requestProcessStop("SIGINT");
135
+ }, 2000)
136
+ : null;
137
+ const completionPoll = options.completionCheck
138
+ ? setInterval(() => {
139
+ if (timedOut || completionSatisfied)
140
+ return;
141
+ try {
142
+ if (!options.completionCheck?.())
143
+ return;
144
+ completionSatisfied = true;
145
+ appendAgentEventLog(options.eventLogPath, {
146
+ type: "completion-check-satisfied",
147
+ });
148
+ requestProcessStop("SIGINT");
149
+ }
150
+ catch {
151
+ // Ignore completion check failures and let the agent continue.
152
+ }
153
+ }, 1000)
154
+ : null;
155
+ process.once("SIGINT", forwardSignal);
156
+ proc.stdout?.on("data", (chunk) => {
157
+ sawRawOutput = true;
158
+ lastActivityAt = Date.now();
159
+ buffer += chunk.toString();
160
+ const lines = buffer.split("\n");
161
+ buffer = lines.pop() ?? "";
162
+ for (const line of lines) {
163
+ if (!line.trim())
164
+ continue;
165
+ appendAgentEventLog(options.eventLogPath, {
166
+ type: "stdout",
167
+ line,
168
+ });
169
+ try {
170
+ const event = JSON.parse(line);
171
+ const toolActivity = summarizeAgentToolActivity(event);
172
+ if (toolActivity) {
173
+ lastToolActivity = toolActivity;
174
+ }
175
+ failureStatus ||= extractAgentFailureStatus(event);
176
+ if (displayAgentEvent(event, options.statusLogPath, lastVisibleText)) {
177
+ sawVisibleEvent = true;
178
+ lastVisibleOutputAt = Date.now();
179
+ }
180
+ maybeInterruptAfterTerminalStatus();
181
+ }
182
+ catch {
183
+ if (emitVisibleAgentText(line, options.statusLogPath, lastVisibleText)) {
184
+ sawVisibleEvent = true;
185
+ lastVisibleOutputAt = Date.now();
186
+ }
187
+ maybeInterruptAfterTerminalStatus();
188
+ }
189
+ }
190
+ });
191
+ proc.stderr?.on("data", (chunk) => {
192
+ lastActivityAt = Date.now();
193
+ stderrBuffer += chunk.toString();
194
+ const lines = stderrBuffer.split("\n");
195
+ stderrBuffer = lines.pop() ?? "";
196
+ for (const line of lines) {
197
+ if (!line.trim())
198
+ continue;
199
+ appendAgentEventLog(options.eventLogPath, {
200
+ type: "stderr",
201
+ line,
202
+ });
203
+ if (CODEX_NOISE_PATTERNS.some((pattern) => pattern.test(line)))
204
+ continue;
205
+ sawRawOutput = true;
206
+ lastVisibleOutputAt = Date.now();
207
+ process.stderr.write(`${line}\n`);
208
+ sawVisibleEvent = true;
209
+ }
210
+ });
211
+ proc.on("close", (code) => {
212
+ clearInterval(heartbeat);
213
+ if (timeout)
214
+ clearInterval(timeout);
215
+ if (completionPoll)
216
+ clearInterval(completionPoll);
217
+ clearStopTimer();
218
+ process.removeListener("SIGINT", forwardSignal);
219
+ const finalCode = timedOut ? 124 : failureStatus ? 1 : completionSatisfied ? 0 : (code ?? 0);
220
+ appendAgentEventLog(options.eventLogPath, {
221
+ type: "close",
222
+ code: finalCode,
223
+ failure_status: failureStatus,
224
+ });
225
+ resolve(finalCode);
226
+ });
227
+ proc.on("error", () => {
228
+ clearInterval(heartbeat);
229
+ if (timeout)
230
+ clearInterval(timeout);
231
+ if (completionPoll)
232
+ clearInterval(completionPoll);
233
+ clearStopTimer();
234
+ process.removeListener("SIGINT", forwardSignal);
235
+ appendAgentEventLog(options.eventLogPath, {
236
+ type: "error",
237
+ message: `Failed to start ${agent.displayName}`,
238
+ });
239
+ console.log(chalk.red(` Failed to start ${agent.displayName}.`));
240
+ resolve(1);
241
+ });
242
+ });
243
+ }
@@ -0,0 +1,32 @@
1
+ import type { RuntimeExecutorInfo } from "../../compiler/lib/schema.js";
2
+ import type { Agent } from "./types.js";
3
+ export type WorkflowExecutorKind = "local-agent" | "connected-provider" | "managed";
4
+ export interface WorkflowExecutionProfile {
5
+ model?: string | null;
6
+ effort?: string | null;
7
+ profile?: string | null;
8
+ timeoutMs?: number | null;
9
+ }
10
+ export interface WorkflowExecuteOptions {
11
+ eventLogPath?: string | null;
12
+ statusLogPath?: string | null;
13
+ completionCheck?: (() => boolean) | null;
14
+ }
15
+ export interface WorkflowExecutor {
16
+ kind: WorkflowExecutorKind;
17
+ name: string;
18
+ displayName: string;
19
+ command?: string | null;
20
+ executionProfile?: WorkflowExecutionProfile;
21
+ execute(rootPath: string, prompt: string, options?: WorkflowExecuteOptions): Promise<number>;
22
+ }
23
+ export type { RuntimeExecutorInfo } from "../../compiler/lib/schema.js";
24
+ export declare function buildRuntimeExecutorInfo(executor: WorkflowExecutor): RuntimeExecutorInfo;
25
+ export declare function createLocalAgentExecutor(agent: Agent, executionProfile?: WorkflowExecutionProfile): WorkflowExecutor;
26
+ export declare function resolveLocalExecutor(options?: {
27
+ preflight?: boolean;
28
+ executionProfile?: WorkflowExecutionProfile;
29
+ }): {
30
+ executor: WorkflowExecutor | null;
31
+ error?: string;
32
+ };
@@ -0,0 +1,45 @@
1
+ import { resolveAgent } from "./detection.js";
2
+ import { spawnAgent } from "./execution.js";
3
+ import { ensureAgentAutomatedRunReady } from "./preflight.js";
4
+ export function buildRuntimeExecutorInfo(executor) {
5
+ return {
6
+ kind: executor.kind,
7
+ name: executor.name,
8
+ display_name: executor.displayName,
9
+ command: executor.command ?? null,
10
+ model: executor.executionProfile?.model ?? null,
11
+ effort: executor.executionProfile?.effort ?? null,
12
+ profile: executor.executionProfile?.profile ?? null,
13
+ timeout_ms: executor.executionProfile?.timeoutMs ?? null,
14
+ };
15
+ }
16
+ export function createLocalAgentExecutor(agent, executionProfile = {}) {
17
+ return {
18
+ kind: "local-agent",
19
+ name: agent.name,
20
+ displayName: agent.displayName,
21
+ command: agent.command,
22
+ executionProfile,
23
+ execute(rootPath, prompt, options) {
24
+ return spawnAgent(agent, rootPath, prompt, {
25
+ eventLogPath: options?.eventLogPath,
26
+ statusLogPath: options?.statusLogPath,
27
+ executionProfile,
28
+ completionCheck: options?.completionCheck,
29
+ });
30
+ },
31
+ };
32
+ }
33
+ export function resolveLocalExecutor(options = {}) {
34
+ const { agent, error } = resolveAgent();
35
+ if (!agent) {
36
+ return { executor: null, error };
37
+ }
38
+ if (options.preflight !== false) {
39
+ const readiness = ensureAgentAutomatedRunReady(agent);
40
+ if (!readiness.ok) {
41
+ return { executor: null, error: readiness.error };
42
+ }
43
+ }
44
+ return { executor: createLocalAgentExecutor(agent, options.executionProfile) };
45
+ }
@@ -0,0 +1,2 @@
1
+ export declare function appendAgentEventLog(eventLogPath: string | null | undefined, event: Record<string, unknown>): void;
2
+ export declare function appendAgentStatusLog(statusLogPath: string | null | undefined, text: string): void;
@@ -0,0 +1,17 @@
1
+ import { appendFileSync, mkdirSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ export function appendAgentEventLog(eventLogPath, event) {
4
+ if (!eventLogPath)
5
+ return;
6
+ mkdirSync(dirname(eventLogPath), { recursive: true });
7
+ appendFileSync(eventLogPath, `${JSON.stringify({
8
+ timestamp: new Date().toISOString(),
9
+ ...event,
10
+ })}\n`);
11
+ }
12
+ export function appendAgentStatusLog(statusLogPath, text) {
13
+ if (!statusLogPath)
14
+ return;
15
+ mkdirSync(dirname(statusLogPath), { recursive: true });
16
+ appendFileSync(statusLogPath, `${new Date().toISOString()} ${text}\n`);
17
+ }
@@ -0,0 +1,7 @@
1
+ import type { Agent, AgentAutomationReadiness, AgentPreflightOptions, AgentPreflightResult } from "./types.js";
2
+ export declare function buildAgentPreflightPrompt(): string;
3
+ export declare function runAgentPreflight(agent: Agent, options?: AgentPreflightOptions): AgentPreflightResult;
4
+ export declare function ensureAgentAutomatedRunReady(agent: Agent, options?: {
5
+ force?: boolean;
6
+ runPreflight?: typeof runAgentPreflight;
7
+ }): AgentAutomationReadiness;
@@ -0,0 +1,77 @@
1
+ import { mkdtempSync, rmSync } from "node:fs";
2
+ import { spawnSync } from "node:child_process";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { CODEX_NOISE_PATTERNS } from "./constants.js";
6
+ import { buildAgentArgs, buildAgentEnv } from "./args.js";
7
+ const successfulPreflightAgents = new Set();
8
+ export function buildAgentPreflightPrompt() {
9
+ return [
10
+ "Interf doctor preflight.",
11
+ 'Reply with exactly one line: "DONE: Interf doctor ok".',
12
+ "Do not use tools.",
13
+ "Do not read files.",
14
+ "Do not write files.",
15
+ ].join(" ");
16
+ }
17
+ export function runAgentPreflight(agent, options = {}) {
18
+ const timeoutMs = options.timeoutMs ?? 60000;
19
+ const spawnSyncImpl = options.spawnSyncImpl ?? spawnSync;
20
+ const dirPath = mkdtempSync(join(tmpdir(), "interf-doctor-"));
21
+ try {
22
+ const result = spawnSyncImpl(agent.command, buildAgentArgs(agent, buildAgentPreflightPrompt()), {
23
+ cwd: dirPath,
24
+ encoding: "utf8",
25
+ env: buildAgentEnv(agent),
26
+ timeout: timeoutMs,
27
+ });
28
+ const stdout = typeof result.stdout === "string" ? result.stdout.trim() : "";
29
+ const stderr = sanitizeAgentStderr(typeof result.stderr === "string" ? result.stderr : "");
30
+ const timedOut = result.error?.name === "Error" && result.error.message.includes("timed out");
31
+ if (result.error) {
32
+ return {
33
+ ok: false,
34
+ code: typeof result.status === "number" ? result.status : null,
35
+ timedOut,
36
+ stdout,
37
+ stderr,
38
+ error: result.error.message,
39
+ };
40
+ }
41
+ return {
42
+ ok: result.status === 0,
43
+ code: typeof result.status === "number" ? result.status : null,
44
+ timedOut: false,
45
+ stdout,
46
+ stderr,
47
+ error: result.status === 0 ? null : `Exited with code ${result.status ?? "unknown"}`,
48
+ };
49
+ }
50
+ finally {
51
+ rmSync(dirPath, { recursive: true, force: true });
52
+ }
53
+ }
54
+ export function ensureAgentAutomatedRunReady(agent, options = {}) {
55
+ if (!options.force && successfulPreflightAgents.has(agent.name)) {
56
+ return { ok: true };
57
+ }
58
+ const runPreflight = options.runPreflight ?? runAgentPreflight;
59
+ const result = runPreflight(agent);
60
+ if (!result.ok) {
61
+ const details = [result.error, result.stderr].filter(Boolean).join(" ");
62
+ return {
63
+ ok: false,
64
+ error: `${agent.displayName} failed Interf executor preflight. Run \`interf doctor --live\` for details.${details ? ` ${details}` : ""}`,
65
+ };
66
+ }
67
+ successfulPreflightAgents.add(agent.name);
68
+ return { ok: true };
69
+ }
70
+ function sanitizeAgentStderr(stderr) {
71
+ return stderr
72
+ .split("\n")
73
+ .filter((line) => line.trim().length > 0)
74
+ .filter((line) => !CODEX_NOISE_PATTERNS.some((pattern) => pattern.test(line)))
75
+ .join("\n")
76
+ .trim();
77
+ }
@@ -0,0 +1,8 @@
1
+ export interface VisibleTextState {
2
+ current: string | null;
3
+ terminated?: boolean;
4
+ terminalStatus?: string | null;
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;
8
+ export declare function summarizeAgentToolActivity(event: Record<string, unknown>): string | null;
@@ -0,0 +1,218 @@
1
+ import { basename } from "node:path";
2
+ import chalk from "chalk";
3
+ import { SHOW_AGENT_TOOL_EVENTS, VISIBLE_STATUS_PREFIXES, } from "./constants.js";
4
+ import { appendAgentStatusLog } from "./logs.js";
5
+ export function emitVisibleAgentText(text, statusLogPath, lastVisibleText) {
6
+ if (lastVisibleText?.terminated) {
7
+ return false;
8
+ }
9
+ let displayed = false;
10
+ const lines = text
11
+ .split(/\r?\n/)
12
+ .map((line) => line.trim())
13
+ .filter((line) => shouldDisplayAgentText(line));
14
+ for (const line of lines) {
15
+ if (lastVisibleText && lastVisibleText.current === line) {
16
+ continue;
17
+ }
18
+ console.log(chalk.dim(` ${line}`));
19
+ appendAgentStatusLog(statusLogPath, line);
20
+ if (lastVisibleText) {
21
+ lastVisibleText.current = line;
22
+ if (isTerminalVisibleStatus(line)) {
23
+ lastVisibleText.terminated = true;
24
+ lastVisibleText.terminalStatus = line;
25
+ }
26
+ }
27
+ displayed = true;
28
+ }
29
+ return displayed;
30
+ }
31
+ export function displayAgentEvent(event, statusLogPath, lastVisibleText) {
32
+ const type = event.type;
33
+ let displayed = false;
34
+ if (type === "tool_use" && SHOW_AGENT_TOOL_EVENTS) {
35
+ const name = event.name ?? "unknown";
36
+ const input = event.input;
37
+ let detail = "";
38
+ if (input) {
39
+ const path = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? "");
40
+ if (path)
41
+ detail = chalk.dim(` ${path.slice(0, 80)}`);
42
+ }
43
+ console.log(chalk.blue(` → ${name}`) + detail);
44
+ displayed = true;
45
+ }
46
+ if (type === "assistant") {
47
+ const msg = event.message;
48
+ const content = msg?.content;
49
+ if (Array.isArray(content)) {
50
+ for (const block of content) {
51
+ if (block.type === "text" && block.text) {
52
+ const text = block.text.trim();
53
+ displayed = emitVisibleAgentText(text, statusLogPath, lastVisibleText) || displayed;
54
+ }
55
+ if (block.type === "tool_use" && SHOW_AGENT_TOOL_EVENTS) {
56
+ const name = block.name;
57
+ const input = block.input;
58
+ let detail = "";
59
+ if (input) {
60
+ const path = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? "");
61
+ if (path)
62
+ detail = chalk.dim(` ${path.slice(0, 80)}`);
63
+ }
64
+ console.log(chalk.blue(` → ${name}`) + detail);
65
+ displayed = true;
66
+ }
67
+ }
68
+ }
69
+ }
70
+ if (type === "item.started" || type === "item.completed") {
71
+ const item = event.item;
72
+ if (item) {
73
+ displayed = displayItemEvent(type, item, statusLogPath, lastVisibleText) || displayed;
74
+ }
75
+ }
76
+ if (type === "result") {
77
+ const result = event.result;
78
+ const subtype = event.subtype;
79
+ if (result && subtype !== "tool_result") {
80
+ const lines = result.split("\n");
81
+ for (const line of lines) {
82
+ displayed = emitVisibleAgentText(line, statusLogPath, lastVisibleText) || displayed;
83
+ }
84
+ }
85
+ }
86
+ const message = pickString(event.message) ??
87
+ pickString(event.text) ??
88
+ pickString(event.content) ??
89
+ pickString(event.output) ??
90
+ pickString(event.summary);
91
+ if (message && type !== "assistant" && type !== "result") {
92
+ const text = message.trim();
93
+ displayed = emitVisibleAgentText(text, statusLogPath, lastVisibleText) || displayed;
94
+ }
95
+ return displayed;
96
+ }
97
+ export function summarizeAgentToolActivity(event) {
98
+ const type = event.type;
99
+ if (type === "assistant") {
100
+ const message = event.message;
101
+ const content = message?.content;
102
+ if (Array.isArray(content)) {
103
+ for (const block of content) {
104
+ if (block.type === "tool_use") {
105
+ return summarizeToolUse(block.name, block.input);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ if (type === "item.started" || type === "item.completed") {
111
+ const item = event.item;
112
+ if (item?.type === "tool_use") {
113
+ return summarizeToolUse(item.name, item.input);
114
+ }
115
+ }
116
+ return null;
117
+ }
118
+ function pickString(value) {
119
+ if (typeof value === "string")
120
+ return value;
121
+ if (!Array.isArray(value))
122
+ return null;
123
+ for (const entry of value) {
124
+ if (typeof entry === "string")
125
+ return entry;
126
+ if (entry && typeof entry === "object" && "text" in entry && typeof entry.text === "string") {
127
+ return entry.text;
128
+ }
129
+ }
130
+ return null;
131
+ }
132
+ function displayItemEvent(type, item, statusLogPath, lastVisibleText) {
133
+ const itemType = item.type;
134
+ if (itemType === "agent_message") {
135
+ const text = item.text?.trim();
136
+ return text ? emitVisibleAgentText(text, statusLogPath, lastVisibleText) : false;
137
+ }
138
+ if (itemType === "command_execution" && type === "item.completed") {
139
+ const output = item.aggregated_output?.trim();
140
+ if (output) {
141
+ return emitVisibleAgentText(output, statusLogPath, lastVisibleText);
142
+ }
143
+ }
144
+ if (!SHOW_AGENT_TOOL_EVENTS) {
145
+ return false;
146
+ }
147
+ const title = pickString(item.title) ?? pickString(item.name);
148
+ const input = item.input;
149
+ const detail = input ? describeInput(input) : "";
150
+ if (type === "item.started" && title) {
151
+ console.log(chalk.blue(` → ${title}`) + detail);
152
+ return true;
153
+ }
154
+ if (type === "item.completed" && title) {
155
+ console.log(chalk.blue(` → ${title}`) + detail);
156
+ return true;
157
+ }
158
+ return false;
159
+ }
160
+ function describeInput(input) {
161
+ const path = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? "");
162
+ return path ? chalk.dim(` ${path.slice(0, 80)}`) : "";
163
+ }
164
+ function summarizeToolUse(name, input) {
165
+ if (!name)
166
+ return null;
167
+ const target = summarizeToolTarget(input);
168
+ switch (name) {
169
+ case "Read":
170
+ return target ? `reading ${target}` : "reading compiled files";
171
+ case "Write":
172
+ return target ? `writing ${target}` : "writing compiled files";
173
+ case "Edit":
174
+ return target ? `editing ${target}` : "editing compiled files";
175
+ case "Glob":
176
+ case "Grep":
177
+ return target ? `${name.toLowerCase()} on ${target}` : `${name.toLowerCase()}ing compiled files`;
178
+ case "Bash":
179
+ return target ? `running ${target}` : "running a local helper";
180
+ default:
181
+ return target ? `${name} on ${target}` : name;
182
+ }
183
+ }
184
+ function summarizeToolTarget(input) {
185
+ if (!input)
186
+ return null;
187
+ const raw = (input.file_path ?? input.path ?? input.pattern ?? input.command ?? input.notebook_path);
188
+ if (!raw || raw.length === 0)
189
+ return null;
190
+ if (raw.includes("\n")) {
191
+ const commandName = summarizeMultilineCommand(raw);
192
+ return commandName ? `${commandName} helper` : "a multi-line local helper";
193
+ }
194
+ return basename(raw);
195
+ }
196
+ function summarizeMultilineCommand(command) {
197
+ const lines = command
198
+ .split("\n")
199
+ .map((line) => line.trim())
200
+ .filter((line) => line.length > 0 && !line.startsWith("#"));
201
+ for (const line of lines) {
202
+ const token = line.split(/\s+/)[0];
203
+ if (!token)
204
+ continue;
205
+ if (token.includes("="))
206
+ continue;
207
+ return basename(token);
208
+ }
209
+ return null;
210
+ }
211
+ function shouldDisplayAgentText(text) {
212
+ if (text.length === 0 || text.length >= 300)
213
+ return false;
214
+ return VISIBLE_STATUS_PREFIXES.some((prefix) => text.startsWith(prefix));
215
+ }
216
+ function isTerminalVisibleStatus(text) {
217
+ return text.startsWith("DONE:") || text.startsWith("BLOCKED:") || text.startsWith("ERROR:");
218
+ }
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ export declare const InterfUserConfigSchema: z.ZodObject<{
3
+ agent: z.ZodString;
4
+ agentCommand: z.ZodString;
5
+ skillsInstalled: z.ZodBoolean;
6
+ initialized: z.ZodString;
7
+ }, z.core.$strip>;
8
+ export type InterfUserConfig = z.infer<typeof InterfUserConfigSchema>;
@@ -0,0 +1,7 @@
1
+ import { z } from "zod";
2
+ export const InterfUserConfigSchema = z.object({
3
+ agent: z.string(),
4
+ agentCommand: z.string(),
5
+ skillsInstalled: z.boolean(),
6
+ initialized: z.string(),
7
+ });