@interf/compiler 0.1.12 → 0.2.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 (282) hide show
  1. package/README.md +197 -192
  2. package/dist/commands/benchmark.d.ts.map +1 -1
  3. package/dist/commands/benchmark.js +65 -84
  4. package/dist/commands/benchmark.js.map +1 -1
  5. package/dist/commands/compile.d.ts.map +1 -1
  6. package/dist/commands/compile.js +19 -3
  7. package/dist/commands/compile.js.map +1 -1
  8. package/dist/commands/create.d.ts +3 -0
  9. package/dist/commands/create.d.ts.map +1 -1
  10. package/dist/commands/create.js +39 -14
  11. package/dist/commands/create.js.map +1 -1
  12. package/dist/commands/default.d.ts.map +1 -1
  13. package/dist/commands/default.js +2 -0
  14. package/dist/commands/default.js.map +1 -1
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +8 -63
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/index.d.ts +11 -29
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +7 -16
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/agent-args.d.ts +4 -0
  23. package/dist/lib/agent-args.d.ts.map +1 -0
  24. package/dist/lib/agent-args.js +42 -0
  25. package/dist/lib/agent-args.js.map +1 -0
  26. package/dist/lib/agent-constants.d.ts +6 -0
  27. package/dist/lib/agent-constants.d.ts.map +1 -0
  28. package/dist/lib/agent-constants.js +29 -0
  29. package/dist/lib/agent-constants.js.map +1 -0
  30. package/dist/lib/agent-detection.d.ts +8 -0
  31. package/dist/lib/agent-detection.d.ts.map +1 -0
  32. package/dist/lib/agent-detection.js +66 -0
  33. package/dist/lib/agent-detection.js.map +1 -0
  34. package/dist/lib/agent-execution.d.ts +3 -0
  35. package/dist/lib/agent-execution.d.ts.map +1 -0
  36. package/dist/lib/agent-execution.js +207 -0
  37. package/dist/lib/agent-execution.js.map +1 -0
  38. package/dist/lib/agent-logs.d.ts +3 -0
  39. package/dist/lib/agent-logs.d.ts.map +1 -0
  40. package/dist/lib/agent-logs.js +18 -0
  41. package/dist/lib/agent-logs.js.map +1 -0
  42. package/dist/lib/agent-preflight.d.ts +8 -0
  43. package/dist/lib/agent-preflight.d.ts.map +1 -0
  44. package/dist/lib/agent-preflight.js +77 -0
  45. package/dist/lib/agent-preflight.js.map +1 -0
  46. package/dist/lib/agent-render.d.ts +9 -0
  47. package/dist/lib/agent-render.d.ts.map +1 -0
  48. package/dist/lib/agent-render.js +219 -0
  49. package/dist/lib/agent-render.js.map +1 -0
  50. package/dist/lib/agent-status.d.ts +4 -0
  51. package/dist/lib/agent-status.d.ts.map +1 -0
  52. package/dist/lib/agent-status.js +59 -0
  53. package/dist/lib/agent-status.js.map +1 -0
  54. package/dist/lib/agent-types.d.ts +31 -0
  55. package/dist/lib/agent-types.d.ts.map +1 -0
  56. package/dist/lib/agent-types.js +2 -0
  57. package/dist/lib/agent-types.js.map +1 -0
  58. package/dist/lib/agents.d.ts +7 -49
  59. package/dist/lib/agents.d.ts.map +1 -1
  60. package/dist/lib/agents.js +8 -554
  61. package/dist/lib/agents.js.map +1 -1
  62. package/dist/lib/benchmark-execution.d.ts +9 -0
  63. package/dist/lib/benchmark-execution.d.ts.map +1 -0
  64. package/dist/lib/benchmark-execution.js +488 -0
  65. package/dist/lib/benchmark-execution.js.map +1 -0
  66. package/dist/lib/benchmark-paths.d.ts +11 -0
  67. package/dist/lib/benchmark-paths.d.ts.map +1 -0
  68. package/dist/lib/benchmark-paths.js +38 -0
  69. package/dist/lib/benchmark-paths.js.map +1 -0
  70. package/dist/lib/benchmark-specs.d.ts +8 -0
  71. package/dist/lib/benchmark-specs.d.ts.map +1 -0
  72. package/dist/lib/benchmark-specs.js +115 -0
  73. package/dist/lib/benchmark-specs.js.map +1 -0
  74. package/dist/lib/benchmark-targets.d.ts +5 -0
  75. package/dist/lib/benchmark-targets.d.ts.map +1 -0
  76. package/dist/lib/benchmark-targets.js +72 -0
  77. package/dist/lib/benchmark-targets.js.map +1 -0
  78. package/dist/lib/benchmark-types.d.ts +19 -0
  79. package/dist/lib/benchmark-types.d.ts.map +1 -0
  80. package/dist/lib/benchmark-types.js +2 -0
  81. package/dist/lib/benchmark-types.js.map +1 -0
  82. package/dist/lib/benchmark.d.ts +4 -29
  83. package/dist/lib/benchmark.d.ts.map +1 -1
  84. package/dist/lib/benchmark.js +3 -324
  85. package/dist/lib/benchmark.js.map +1 -1
  86. package/dist/lib/bundled-templates.d.ts +5 -0
  87. package/dist/lib/bundled-templates.d.ts.map +1 -0
  88. package/dist/lib/bundled-templates.js +23 -0
  89. package/dist/lib/bundled-templates.js.map +1 -0
  90. package/dist/lib/config.d.ts +1 -0
  91. package/dist/lib/config.d.ts.map +1 -1
  92. package/dist/lib/config.js +2 -0
  93. package/dist/lib/config.js.map +1 -1
  94. package/dist/lib/eval-packs.d.ts +204 -0
  95. package/dist/lib/eval-packs.d.ts.map +1 -0
  96. package/dist/lib/eval-packs.js +177 -0
  97. package/dist/lib/eval-packs.js.map +1 -0
  98. package/dist/lib/execution-profile.d.ts +18 -0
  99. package/dist/lib/execution-profile.d.ts.map +1 -0
  100. package/dist/lib/execution-profile.js +85 -0
  101. package/dist/lib/execution-profile.js.map +1 -0
  102. package/dist/lib/interf-bootstrap.d.ts +4 -0
  103. package/dist/lib/interf-bootstrap.d.ts.map +1 -1
  104. package/dist/lib/interf-bootstrap.js +71 -68
  105. package/dist/lib/interf-bootstrap.js.map +1 -1
  106. package/dist/lib/interf-compile-plan.d.ts +12 -0
  107. package/dist/lib/interf-compile-plan.d.ts.map +1 -0
  108. package/dist/lib/interf-compile-plan.js +143 -0
  109. package/dist/lib/interf-compile-plan.js.map +1 -0
  110. package/dist/lib/interf-detect.d.ts.map +1 -1
  111. package/dist/lib/interf-detect.js +11 -10
  112. package/dist/lib/interf-detect.js.map +1 -1
  113. package/dist/lib/interf-scaffold.d.ts +1 -10
  114. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  115. package/dist/lib/interf-scaffold.js +25 -362
  116. package/dist/lib/interf-scaffold.js.map +1 -1
  117. package/dist/lib/interf-workflow-package.d.ts +4 -0
  118. package/dist/lib/interf-workflow-package.d.ts.map +1 -0
  119. package/dist/lib/interf-workflow-package.js +131 -0
  120. package/dist/lib/interf-workflow-package.js.map +1 -0
  121. package/dist/lib/interf.d.ts +2 -1
  122. package/dist/lib/interf.d.ts.map +1 -1
  123. package/dist/lib/interf.js +2 -1
  124. package/dist/lib/interf.js.map +1 -1
  125. package/dist/lib/local-workflows.d.ts.map +1 -1
  126. package/dist/lib/local-workflows.js +8 -12
  127. package/dist/lib/local-workflows.js.map +1 -1
  128. package/dist/lib/logger.d.ts +4 -0
  129. package/dist/lib/logger.d.ts.map +1 -0
  130. package/dist/lib/logger.js +11 -0
  131. package/dist/lib/logger.js.map +1 -0
  132. package/dist/lib/obsidian.d.ts.map +1 -1
  133. package/dist/lib/obsidian.js +7 -3
  134. package/dist/lib/obsidian.js.map +1 -1
  135. package/dist/lib/parse.d.ts +2 -2
  136. package/dist/lib/parse.d.ts.map +1 -1
  137. package/dist/lib/parse.js +11 -7
  138. package/dist/lib/parse.js.map +1 -1
  139. package/dist/lib/registry.js +3 -3
  140. package/dist/lib/registry.js.map +1 -1
  141. package/dist/lib/runtime-acceptance.d.ts +4 -0
  142. package/dist/lib/runtime-acceptance.d.ts.map +1 -0
  143. package/dist/lib/runtime-acceptance.js +123 -0
  144. package/dist/lib/runtime-acceptance.js.map +1 -0
  145. package/dist/lib/runtime-contracts.d.ts +4 -0
  146. package/dist/lib/runtime-contracts.d.ts.map +1 -0
  147. package/dist/lib/runtime-contracts.js +63 -0
  148. package/dist/lib/runtime-contracts.js.map +1 -0
  149. package/dist/lib/runtime-paths.d.ts +8 -0
  150. package/dist/lib/runtime-paths.d.ts.map +1 -0
  151. package/dist/lib/runtime-paths.js +28 -0
  152. package/dist/lib/runtime-paths.js.map +1 -0
  153. package/dist/lib/runtime-prompt.d.ts +3 -0
  154. package/dist/lib/runtime-prompt.d.ts.map +1 -0
  155. package/dist/lib/runtime-prompt.js +59 -0
  156. package/dist/lib/runtime-prompt.js.map +1 -0
  157. package/dist/lib/runtime-reconcile.d.ts +6 -0
  158. package/dist/lib/runtime-reconcile.d.ts.map +1 -0
  159. package/dist/lib/runtime-reconcile.js +339 -0
  160. package/dist/lib/runtime-reconcile.js.map +1 -0
  161. package/dist/lib/runtime-runs.d.ts +12 -0
  162. package/dist/lib/runtime-runs.d.ts.map +1 -0
  163. package/dist/lib/runtime-runs.js +337 -0
  164. package/dist/lib/runtime-runs.js.map +1 -0
  165. package/dist/lib/runtime-types.d.ts +42 -0
  166. package/dist/lib/runtime-types.d.ts.map +1 -0
  167. package/dist/lib/runtime-types.js +2 -0
  168. package/dist/lib/runtime-types.js.map +1 -0
  169. package/dist/lib/runtime.d.ts +6 -58
  170. package/dist/lib/runtime.d.ts.map +1 -1
  171. package/dist/lib/runtime.js +5 -614
  172. package/dist/lib/runtime.js.map +1 -1
  173. package/dist/lib/schema.d.ts +156 -13
  174. package/dist/lib/schema.d.ts.map +1 -1
  175. package/dist/lib/schema.js +113 -4
  176. package/dist/lib/schema.js.map +1 -1
  177. package/dist/lib/source-config.d.ts +13 -0
  178. package/dist/lib/source-config.d.ts.map +1 -0
  179. package/dist/lib/source-config.js +75 -0
  180. package/dist/lib/source-config.js.map +1 -0
  181. package/dist/lib/state-artifacts.d.ts +15 -0
  182. package/dist/lib/state-artifacts.d.ts.map +1 -0
  183. package/dist/lib/state-artifacts.js +24 -0
  184. package/dist/lib/state-artifacts.js.map +1 -0
  185. package/dist/lib/state-health.d.ts +9 -0
  186. package/dist/lib/state-health.d.ts.map +1 -0
  187. package/dist/lib/state-health.js +330 -0
  188. package/dist/lib/state-health.js.map +1 -0
  189. package/dist/lib/state-io.d.ts +15 -0
  190. package/dist/lib/state-io.d.ts.map +1 -0
  191. package/dist/lib/state-io.js +219 -0
  192. package/dist/lib/state-io.js.map +1 -0
  193. package/dist/lib/state-paths.d.ts +5 -0
  194. package/dist/lib/state-paths.d.ts.map +1 -0
  195. package/dist/lib/state-paths.js +19 -0
  196. package/dist/lib/state-paths.js.map +1 -0
  197. package/dist/lib/state-view.d.ts +7 -0
  198. package/dist/lib/state-view.d.ts.map +1 -0
  199. package/dist/lib/state-view.js +147 -0
  200. package/dist/lib/state-view.js.map +1 -0
  201. package/dist/lib/state.d.ts +6 -46
  202. package/dist/lib/state.d.ts.map +1 -1
  203. package/dist/lib/state.js +5 -632
  204. package/dist/lib/state.js.map +1 -1
  205. package/dist/lib/summarize-plan.d.ts +1 -0
  206. package/dist/lib/summarize-plan.d.ts.map +1 -1
  207. package/dist/lib/summarize-plan.js +10 -0
  208. package/dist/lib/summarize-plan.js.map +1 -1
  209. package/dist/lib/user-config.js +2 -2
  210. package/dist/lib/user-config.js.map +1 -1
  211. package/dist/lib/validate-helpers.d.ts +21 -0
  212. package/dist/lib/validate-helpers.d.ts.map +1 -0
  213. package/dist/lib/validate-helpers.js +72 -0
  214. package/dist/lib/validate-helpers.js.map +1 -0
  215. package/dist/lib/validate-interface.d.ts +2 -0
  216. package/dist/lib/validate-interface.d.ts.map +1 -1
  217. package/dist/lib/validate-interface.js +103 -53
  218. package/dist/lib/validate-interface.js.map +1 -1
  219. package/dist/lib/validate-kb.d.ts +8 -0
  220. package/dist/lib/validate-kb.d.ts.map +1 -1
  221. package/dist/lib/validate-kb.js +53 -24
  222. package/dist/lib/validate-kb.js.map +1 -1
  223. package/dist/lib/validate.d.ts +1 -1
  224. package/dist/lib/validate.d.ts.map +1 -1
  225. package/dist/lib/validate.js +5 -2
  226. package/dist/lib/validate.js.map +1 -1
  227. package/dist/lib/workflow-definitions.d.ts +1 -1
  228. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  229. package/dist/lib/workflow-definitions.js +90 -166
  230. package/dist/lib/workflow-definitions.js.map +1 -1
  231. package/dist/lib/workflow-helpers.d.ts.map +1 -1
  232. package/dist/lib/workflow-helpers.js +6 -3
  233. package/dist/lib/workflow-helpers.js.map +1 -1
  234. package/dist/lib/workflow-stage-runner.d.ts +41 -0
  235. package/dist/lib/workflow-stage-runner.d.ts.map +1 -0
  236. package/dist/lib/workflow-stage-runner.js +106 -0
  237. package/dist/lib/workflow-stage-runner.js.map +1 -0
  238. package/dist/lib/workflow-starter-docs.d.ts +9 -0
  239. package/dist/lib/workflow-starter-docs.d.ts.map +1 -0
  240. package/dist/lib/workflow-starter-docs.js +18 -0
  241. package/dist/lib/workflow-starter-docs.js.map +1 -0
  242. package/dist/lib/workflows-interface-contracts.d.ts +24 -0
  243. package/dist/lib/workflows-interface-contracts.d.ts.map +1 -0
  244. package/dist/lib/workflows-interface-contracts.js +304 -0
  245. package/dist/lib/workflows-interface-contracts.js.map +1 -0
  246. package/dist/lib/workflows-interface.d.ts +3 -10
  247. package/dist/lib/workflows-interface.d.ts.map +1 -1
  248. package/dist/lib/workflows-interface.js +117 -365
  249. package/dist/lib/workflows-interface.js.map +1 -1
  250. package/dist/lib/workflows-kb.d.ts.map +1 -1
  251. package/dist/lib/workflows-kb.js +79 -55
  252. package/dist/lib/workflows-kb.js.map +1 -1
  253. package/dist/lib/workflows.d.ts.map +1 -1
  254. package/dist/lib/workflows.js +1 -1
  255. package/dist/lib/workflows.js.map +1 -1
  256. package/package.json +15 -4
  257. package/skills/interface/analyze/SKILL.md +79 -28
  258. package/skills/interface/compile/SKILL.md +27 -28
  259. package/skills/interface/create/SKILL.md +53 -230
  260. package/skills/interface/create/references/compile-plan-format.md +31 -31
  261. package/skills/interface/create/references/workflows.md +17 -32
  262. package/skills/interface/query/SKILL.md +15 -1
  263. package/skills/interface/retrieve/SKILL.md +32 -65
  264. package/skills/knowledge-base/compile/SKILL.md +59 -83
  265. package/skills/knowledge-base/compile/references/stage-claims.md +1 -1
  266. package/skills/knowledge-base/compile/references/stage-entities.md +2 -2
  267. package/skills/knowledge-base/query/SKILL.md +13 -1
  268. package/skills/knowledge-base/summarize/SKILL.md +54 -24
  269. package/templates/interface/README.md +13 -12
  270. package/templates/interface/interfaces.md +14 -11
  271. package/templates/knowledge-base/README.md +0 -1
  272. package/templates/knowledge-base/registry.md +15 -15
  273. package/templates/workflow-package/README.md +16 -0
  274. package/templates/workflow-package/create/SKILL.md +8 -0
  275. package/templates/workflow-package/interface-query/SKILL.md +29 -0
  276. package/templates/workflow-package/interface-stage/SKILL.md +13 -0
  277. package/templates/workflow-package/knowledge-base-query/SKILL.md +36 -0
  278. package/templates/workflow-package/knowledge-base-stage/SKILL.md +13 -0
  279. package/templates/workflow-starters/interface/interf/README.md +13 -0
  280. package/templates/workflow-starters/interface/interf/create/SKILL.md +15 -0
  281. package/templates/workflow-starters/knowledge-base/interf/README.md +13 -0
  282. package/templates/workflow-starters/knowledge-base/karpathy/README.md +13 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,8DAA8D;AAE9D,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,4BAA4B,EAC5B,YAAY,EACZ,wBAAwB,EACxB,oBAAoB,EACpB,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,iCAAiC,EACjC,mBAAmB,IAAI,2BAA2B,EAClD,eAAe,IAAI,uBAAuB,GAC3C,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,iCAAiC,EACjC,6BAA6B,EAC7B,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,2BAA2B,EAC3B,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,EACnB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,4BAA4B,EAC5B,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,OAAO,EACP,cAAc,EACd,iBAAiB,EACjB,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EACL,qBAAqB,EACrB,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B,EAC9B,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,4EAA4E;AAE5E,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,wCAAwC,GACzC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WorkflowExecutionProfile } from "./executors.js";
2
+ import type { Agent } from "./agent-types.js";
3
+ export declare function buildAgentArgs(agent: Agent, prompt: string, executionProfile?: WorkflowExecutionProfile): string[];
4
+ //# sourceMappingURL=agent-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-args.d.ts","sourceRoot":"","sources":["../../src/lib/agent-args.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,wBAAgB,cAAc,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,gBAAgB,GAAE,wBAA6B,GAC9C,MAAM,EAAE,CA0CV"}
@@ -0,0 +1,42 @@
1
+ export function buildAgentArgs(agent, prompt, executionProfile = {}) {
2
+ if (agent.name === "claude-code") {
3
+ const args = [
4
+ "-p",
5
+ prompt,
6
+ "--output-format",
7
+ "stream-json",
8
+ "--verbose",
9
+ "--allowedTools",
10
+ "Read,Write,Edit,Bash,Grep,Glob,Agent",
11
+ ];
12
+ if (executionProfile.model) {
13
+ args.push("--model", executionProfile.model);
14
+ }
15
+ if (executionProfile.effort) {
16
+ args.push("--effort", executionProfile.effort);
17
+ }
18
+ return args;
19
+ }
20
+ if (agent.name === "codex") {
21
+ const args = [
22
+ "exec",
23
+ "--json",
24
+ "-s",
25
+ "workspace-write",
26
+ "--skip-git-repo-check",
27
+ ];
28
+ if (executionProfile.model) {
29
+ args.push("--model", executionProfile.model);
30
+ }
31
+ if (executionProfile.profile) {
32
+ args.push("--profile", executionProfile.profile);
33
+ }
34
+ if (executionProfile.effort) {
35
+ args.push("-c", `model_reasoning_effort=${JSON.stringify(executionProfile.effort)}`);
36
+ }
37
+ args.push(prompt);
38
+ return args;
39
+ }
40
+ throw new Error(`Agent "${agent.displayName}" is not yet supported for automated compile runs.`);
41
+ }
42
+ //# sourceMappingURL=agent-args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-args.js","sourceRoot":"","sources":["../../src/lib/agent-args.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,cAAc,CAC5B,KAAY,EACZ,MAAc,EACd,mBAA6C,EAAE;IAE/C,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG;YACX,IAAI;YACJ,MAAM;YACN,iBAAiB;YACjB,aAAa;YACb,WAAW;YACX,gBAAgB;YAChB,sCAAsC;SACvC,CAAC;QACF,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG;YACX,MAAM;YACN,QAAQ;YACR,IAAI;YACJ,iBAAiB;YACjB,uBAAuB;SACxB,CAAC;QACF,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,0BAA0B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,WAAW,oDAAoD,CAAC,CAAC;AACnG,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Agent } from "./agent-types.js";
2
+ export declare const SHOW_AGENT_TOOL_EVENTS: boolean;
3
+ export declare const AGENTS: Agent[];
4
+ export declare const CODEX_NOISE_PATTERNS: RegExp[];
5
+ export declare const VISIBLE_STATUS_PREFIXES: string[];
6
+ //# sourceMappingURL=agent-constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-constants.d.ts","sourceRoot":"","sources":["../../src/lib/agent-constants.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,sBAAsB,SAA+C,CAAC;AAEnF,eAAO,MAAM,MAAM,EAAE,KAAK,EAmBzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAGhC,CAAC;AAEF,eAAO,MAAM,uBAAuB,UAA6C,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { join } from "node:path";
2
+ import { homedir } from "node:os";
3
+ export const SHOW_AGENT_TOOL_EVENTS = process.env.INTERF_DEBUG_AGENT_TOOLS === "1";
4
+ export const AGENTS = [
5
+ {
6
+ name: "claude-code",
7
+ displayName: "Claude Code",
8
+ skillsDir: join(homedir(), ".claude", "skills"),
9
+ command: "claude",
10
+ },
11
+ {
12
+ name: "codex",
13
+ displayName: "Codex",
14
+ skillsDir: join(homedir(), ".codex", "skills"),
15
+ command: "codex",
16
+ },
17
+ {
18
+ name: "cursor",
19
+ displayName: "Cursor",
20
+ skillsDir: join(homedir(), ".cursor", "skills"),
21
+ command: "cursor",
22
+ },
23
+ ];
24
+ export const CODEX_NOISE_PATTERNS = [
25
+ /codex_core_skills::loader: failed to stat skills entry .*\/(interf-[^ ]+|knowledge-base\/[^ ]+|interface\/[^ ]+) \(symlink\): No such file or directory/,
26
+ /codex_core::codex: failed to load skill .*\/gstack\/SKILL\.md: invalid description: exceeds maximum length of 1024 characters/,
27
+ ];
28
+ export const VISIBLE_STATUS_PREFIXES = ["STATUS:", "DONE:", "BLOCKED:", "ERROR:"];
29
+ //# sourceMappingURL=agent-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-constants.js","sourceRoot":"","sources":["../../src/lib/agent-constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,MAAM,CAAC,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,GAAG,CAAC;AAEnF,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,aAAa;QAC1B,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC/C,OAAO,EAAE,QAAQ;KAClB;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC9C,OAAO,EAAE,OAAO;KACjB;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC/C,OAAO,EAAE,QAAQ;KAClB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,yJAAyJ;IACzJ,+HAA+H;CAChI,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Agent } from "./agent-types.js";
2
+ export declare function detectAgents(): Agent[];
3
+ export declare function supportsAutomatedRuns(agent: Agent): boolean;
4
+ export declare function resolveAgent(): {
5
+ agent: Agent | null;
6
+ error?: string;
7
+ };
8
+ //# sourceMappingURL=agent-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-detection.d.ts","sourceRoot":"","sources":["../../src/lib/agent-detection.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,wBAAgB,YAAY,IAAI,KAAK,EAAE,CAKtC;AAWD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAE3D;AAED,wBAAgB,YAAY,IAAI;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAoDtE"}
@@ -0,0 +1,66 @@
1
+ import { existsSync } from "node:fs";
2
+ import { execFileSync } from "node:child_process";
3
+ import { homedir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { loadUserConfig } from "./user-config.js";
6
+ import { AGENTS } from "./agent-constants.js";
7
+ export function detectAgents() {
8
+ return AGENTS.filter((agent) => {
9
+ const dir = join(homedir(), `.${agent.name === "claude-code" ? "claude" : agent.name}`);
10
+ return existsSync(dir);
11
+ });
12
+ }
13
+ function commandExists(command) {
14
+ try {
15
+ execFileSync("which", [command], { stdio: "ignore" });
16
+ return true;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ }
22
+ export function supportsAutomatedRuns(agent) {
23
+ return agent.name === "claude-code" || agent.name === "codex";
24
+ }
25
+ export function resolveAgent() {
26
+ const config = loadUserConfig();
27
+ if (config) {
28
+ const configured = AGENTS.find((agent) => agent.command === config.agentCommand) ??
29
+ AGENTS.find((agent) => agent.name === config.agent) ??
30
+ AGENTS.find((agent) => agent.displayName === config.agent);
31
+ if (!configured) {
32
+ return {
33
+ agent: null,
34
+ error: `Configured agent "${config.agent}" is not supported by this Interf build. Run \`interf init\` to choose a supported agent.`,
35
+ };
36
+ }
37
+ if (!commandExists(configured.command)) {
38
+ return {
39
+ agent: null,
40
+ error: `Configured agent "${configured.displayName}" is not available in PATH. Run \`interf init\` to reconfigure.`,
41
+ };
42
+ }
43
+ if (!supportsAutomatedRuns(configured)) {
44
+ return {
45
+ agent: null,
46
+ error: `Configured agent "${configured.displayName}" is detected, but this Interf build can only automate Claude Code or Codex. Run \`interf init\` and choose one of those agents.`,
47
+ };
48
+ }
49
+ return { agent: configured };
50
+ }
51
+ const detected = detectAgents().filter((agent) => commandExists(agent.command) && supportsAutomatedRuns(agent));
52
+ if (detected.length === 0) {
53
+ return {
54
+ agent: null,
55
+ error: "No coding agent detected. Install Claude Code or Codex.",
56
+ };
57
+ }
58
+ if (detected.length > 1) {
59
+ return {
60
+ agent: null,
61
+ error: "Multiple coding agents detected but no default is configured. Run `interf init` to choose which agent compile commands should use.",
62
+ };
63
+ }
64
+ return { agent: detected[0] };
65
+ }
66
+ //# sourceMappingURL=agent-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-detection.js","sourceRoot":"","sources":["../../src/lib/agent-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Agent, SpawnAgentOptions } from "./agent-types.js";
2
+ export declare function spawnAgent(agent: Agent, dirPath: string, prompt: string, options?: SpawnAgentOptions): Promise<number>;
3
+ //# sourceMappingURL=agent-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-execution.d.ts","sourceRoot":"","sources":["../../src/lib/agent-execution.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAsMjB"}
@@ -0,0 +1,207 @@
1
+ import { spawn } from "node:child_process";
2
+ import chalk from "chalk";
3
+ import { ensureRequiredSkill, extractRequiredSkill, } from "./agent-skills.js";
4
+ import { CODEX_NOISE_PATTERNS } from "./agent-constants.js";
5
+ import { buildAgentArgs } from "./agent-args.js";
6
+ import { appendAgentEventLog, appendAgentStatusLog } from "./agent-logs.js";
7
+ import { displayAgentEvent, emitVisibleAgentText, summarizeAgentToolActivity, } from "./agent-render.js";
8
+ import { classifyTerminalVisibleStatus, extractAgentFailureStatus, hasAgentStalled, } from "./agent-status.js";
9
+ export function spawnAgent(agent, dirPath, prompt, options = {}) {
10
+ const requiredSkill = extractRequiredSkill(prompt);
11
+ const skillError = ensureRequiredSkill(agent, requiredSkill);
12
+ if (skillError) {
13
+ console.log(chalk.red(` ${skillError}`));
14
+ return Promise.resolve(1);
15
+ }
16
+ return new Promise((resolve) => {
17
+ const args = buildAgentArgs(agent, prompt, options.executionProfile);
18
+ appendAgentEventLog(options.eventLogPath, {
19
+ type: "spawn",
20
+ command: agent.command,
21
+ args,
22
+ cwd: dirPath,
23
+ });
24
+ const launchLine = `Launching ${agent.displayName}...`;
25
+ console.log(chalk.dim(` ${launchLine}`));
26
+ appendAgentStatusLog(options.statusLogPath, launchLine);
27
+ const proc = spawn(agent.command, args, {
28
+ cwd: dirPath,
29
+ stdio: ["ignore", "pipe", "pipe"],
30
+ });
31
+ const timeoutMs = options.executionProfile?.timeoutMs ?? null;
32
+ let buffer = "";
33
+ let stderrBuffer = "";
34
+ let lastVisibleOutputAt = Date.now();
35
+ let lastActivityAt = Date.now();
36
+ let lastHeartbeatAt = 0;
37
+ let sawRawOutput = false;
38
+ let sawVisibleEvent = false;
39
+ let timedOut = false;
40
+ let completionSatisfied = false;
41
+ let failureStatus = null;
42
+ let terminalSignalSent = false;
43
+ let lastToolActivity = null;
44
+ const lastVisibleText = { current: null };
45
+ const heartbeat = setInterval(() => {
46
+ const now = Date.now();
47
+ const minQuietMs = sawVisibleEvent ? 15000 : 8000;
48
+ const minHeartbeatGapMs = sawVisibleEvent ? 30000 : 12000;
49
+ if (now - lastVisibleOutputAt < minQuietMs)
50
+ return;
51
+ if (now - lastHeartbeatAt < minHeartbeatGapMs)
52
+ return;
53
+ lastHeartbeatAt = now;
54
+ const seconds = Math.floor((now - lastVisibleOutputAt) / 1000);
55
+ const activitySuffix = lastToolActivity ? ` while ${lastToolActivity}` : "";
56
+ const label = sawVisibleEvent
57
+ ? `${agent.displayName} is still running${activitySuffix}... (${seconds}s since last output)`
58
+ : sawRawOutput
59
+ ? `${agent.displayName} is active${activitySuffix}, but has not emitted visible progress yet... (${seconds}s)`
60
+ : `${agent.displayName} started, but has not emitted visible progress yet... (${seconds}s)`;
61
+ console.log(chalk.dim(` ${label}`));
62
+ appendAgentStatusLog(options.statusLogPath, label);
63
+ }, 5000);
64
+ const forwardSignal = () => {
65
+ proc.kill("SIGINT");
66
+ };
67
+ const maybeInterruptAfterTerminalStatus = () => {
68
+ if (options.completionCheck)
69
+ return;
70
+ if (terminalSignalSent || !lastVisibleText.terminalStatus)
71
+ return;
72
+ terminalSignalSent = true;
73
+ appendAgentEventLog(options.eventLogPath, {
74
+ type: "terminal-status",
75
+ status: lastVisibleText.terminalStatus,
76
+ });
77
+ const terminalKind = classifyTerminalVisibleStatus(lastVisibleText.terminalStatus);
78
+ if (terminalKind === "done") {
79
+ completionSatisfied = true;
80
+ }
81
+ else if (terminalKind === "failure") {
82
+ failureStatus ||= lastVisibleText.terminalStatus;
83
+ }
84
+ proc.kill("SIGINT");
85
+ };
86
+ const timeout = typeof timeoutMs === "number" && timeoutMs > 0
87
+ ? setInterval(() => {
88
+ const now = Date.now();
89
+ const idleMs = now - lastActivityAt;
90
+ if (!hasAgentStalled(lastActivityAt, now, timeoutMs))
91
+ return;
92
+ timedOut = true;
93
+ appendAgentEventLog(options.eventLogPath, {
94
+ type: "stall-timeout",
95
+ timeout_ms: timeoutMs,
96
+ idle_ms: idleMs,
97
+ });
98
+ console.log(chalk.red(` ${agent.displayName} stalled for ${Math.round(idleMs / 1000)}s without agent output.`));
99
+ proc.kill("SIGINT");
100
+ }, 2000)
101
+ : null;
102
+ const completionPoll = options.completionCheck
103
+ ? setInterval(() => {
104
+ if (timedOut || completionSatisfied)
105
+ return;
106
+ try {
107
+ if (!options.completionCheck?.())
108
+ return;
109
+ completionSatisfied = true;
110
+ appendAgentEventLog(options.eventLogPath, {
111
+ type: "completion-check-satisfied",
112
+ });
113
+ proc.kill("SIGINT");
114
+ }
115
+ catch {
116
+ // Ignore completion check failures and let the agent continue.
117
+ }
118
+ }, 1000)
119
+ : null;
120
+ process.once("SIGINT", forwardSignal);
121
+ proc.stdout?.on("data", (chunk) => {
122
+ sawRawOutput = true;
123
+ lastActivityAt = Date.now();
124
+ buffer += chunk.toString();
125
+ const lines = buffer.split("\n");
126
+ buffer = lines.pop() ?? "";
127
+ for (const line of lines) {
128
+ if (!line.trim())
129
+ continue;
130
+ appendAgentEventLog(options.eventLogPath, {
131
+ type: "stdout",
132
+ line,
133
+ });
134
+ try {
135
+ const event = JSON.parse(line);
136
+ const toolActivity = summarizeAgentToolActivity(event);
137
+ if (toolActivity) {
138
+ lastToolActivity = toolActivity;
139
+ }
140
+ failureStatus ||= extractAgentFailureStatus(event);
141
+ if (displayAgentEvent(event, options.statusLogPath, lastVisibleText)) {
142
+ sawVisibleEvent = true;
143
+ lastVisibleOutputAt = Date.now();
144
+ }
145
+ maybeInterruptAfterTerminalStatus();
146
+ }
147
+ catch {
148
+ if (emitVisibleAgentText(line, options.statusLogPath, lastVisibleText)) {
149
+ sawVisibleEvent = true;
150
+ lastVisibleOutputAt = Date.now();
151
+ }
152
+ maybeInterruptAfterTerminalStatus();
153
+ }
154
+ }
155
+ });
156
+ proc.stderr?.on("data", (chunk) => {
157
+ lastActivityAt = Date.now();
158
+ stderrBuffer += chunk.toString();
159
+ const lines = stderrBuffer.split("\n");
160
+ stderrBuffer = lines.pop() ?? "";
161
+ for (const line of lines) {
162
+ if (!line.trim())
163
+ continue;
164
+ appendAgentEventLog(options.eventLogPath, {
165
+ type: "stderr",
166
+ line,
167
+ });
168
+ if (CODEX_NOISE_PATTERNS.some((pattern) => pattern.test(line)))
169
+ continue;
170
+ sawRawOutput = true;
171
+ lastVisibleOutputAt = Date.now();
172
+ process.stderr.write(`${line}\n`);
173
+ sawVisibleEvent = true;
174
+ }
175
+ });
176
+ proc.on("close", (code) => {
177
+ clearInterval(heartbeat);
178
+ if (timeout)
179
+ clearInterval(timeout);
180
+ if (completionPoll)
181
+ clearInterval(completionPoll);
182
+ process.removeListener("SIGINT", forwardSignal);
183
+ const finalCode = timedOut ? 124 : failureStatus ? 1 : completionSatisfied ? 0 : (code ?? 0);
184
+ appendAgentEventLog(options.eventLogPath, {
185
+ type: "close",
186
+ code: finalCode,
187
+ failure_status: failureStatus,
188
+ });
189
+ resolve(finalCode);
190
+ });
191
+ proc.on("error", () => {
192
+ clearInterval(heartbeat);
193
+ if (timeout)
194
+ clearInterval(timeout);
195
+ if (completionPoll)
196
+ clearInterval(completionPoll);
197
+ process.removeListener("SIGINT", forwardSignal);
198
+ appendAgentEventLog(options.eventLogPath, {
199
+ type: "error",
200
+ message: `Failed to start ${agent.displayName}`,
201
+ });
202
+ console.log(chalk.red(` Failed to start ${agent.displayName}.`));
203
+ resolve(1);
204
+ });
205
+ });
206
+ }
207
+ //# sourceMappingURL=agent-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-execution.js","sourceRoot":"","sources":["../../src/lib/agent-execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
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;
3
+ //# sourceMappingURL=agent-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-logs.d.ts","sourceRoot":"","sources":["../../src/lib/agent-logs.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI,CAUN;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,IAAI,EAAE,MAAM,GACX,IAAI,CAON"}
@@ -0,0 +1,18 @@
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
+ }
18
+ //# sourceMappingURL=agent-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-logs.js","sourceRoot":"","sources":["../../src/lib/agent-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,UAAU,mBAAmB,CACjC,YAAuC,EACvC,KAA8B;IAE9B,IAAI,CAAC,YAAY;QAAE,OAAO;IAC1B,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,cAAc,CACZ,YAAY,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,GAAG,KAAK;KACT,CAAC,IAAI,CACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,aAAwC,EACxC,IAAY;IAEZ,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,cAAc,CACZ,aAAa,EACb,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Agent, AgentAutomationReadiness, AgentPreflightOptions, AgentPreflightResult } from "./agent-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;
8
+ //# sourceMappingURL=agent-preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-preflight.d.ts","sourceRoot":"","sources":["../../src/lib/agent-preflight.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,KAAK,EACL,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAI1B,wBAAgB,yBAAyB,IAAI,MAAM,CAQlD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAsCtB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,iBAAiB,CAAC;CACpC,GACL,wBAAwB,CAiB1B"}
@@ -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 "./agent-constants.js";
6
+ import { buildAgentArgs } from "./agent-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 ?? 30000;
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
+ timeout: timeoutMs,
26
+ });
27
+ const stdout = typeof result.stdout === "string" ? result.stdout.trim() : "";
28
+ const stderr = sanitizeAgentStderr(typeof result.stderr === "string" ? result.stderr : "");
29
+ const timedOut = result.error?.name === "Error" && result.error.message.includes("timed out");
30
+ if (result.error) {
31
+ return {
32
+ ok: false,
33
+ code: typeof result.status === "number" ? result.status : null,
34
+ timedOut,
35
+ stdout,
36
+ stderr,
37
+ error: result.error.message,
38
+ };
39
+ }
40
+ return {
41
+ ok: result.status === 0,
42
+ code: typeof result.status === "number" ? result.status : null,
43
+ timedOut: false,
44
+ stdout,
45
+ stderr,
46
+ error: result.status === 0 ? null : `Exited with code ${result.status ?? "unknown"}`,
47
+ };
48
+ }
49
+ finally {
50
+ rmSync(dirPath, { recursive: true, force: true });
51
+ }
52
+ }
53
+ export function ensureAgentAutomatedRunReady(agent, options = {}) {
54
+ if (!options.force && successfulPreflightAgents.has(agent.name)) {
55
+ return { ok: true };
56
+ }
57
+ const runPreflight = options.runPreflight ?? runAgentPreflight;
58
+ const result = runPreflight(agent);
59
+ if (!result.ok) {
60
+ const details = [result.error, result.stderr].filter(Boolean).join(" ");
61
+ return {
62
+ ok: false,
63
+ error: `${agent.displayName} failed Interf executor preflight. Run \`interf doctor --live\` for details.${details ? ` ${details}` : ""}`,
64
+ };
65
+ }
66
+ successfulPreflightAgents.add(agent.name);
67
+ return { ok: true };
68
+ }
69
+ function sanitizeAgentStderr(stderr) {
70
+ return stderr
71
+ .split("\n")
72
+ .filter((line) => line.trim().length > 0)
73
+ .filter((line) => !CODEX_NOISE_PATTERNS.some((pattern) => pattern.test(line)))
74
+ .join("\n")
75
+ .trim();
76
+ }
77
+ //# sourceMappingURL=agent-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-preflight.js","sourceRoot":"","sources":["../../src/lib/agent-preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
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;
9
+ //# sourceMappingURL=agent-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-render.d.ts","sourceRoot":"","sources":["../../src/lib/agent-render.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,eAAe,CAAC,EAAE,gBAAgB,GACjC,OAAO,CA2BT;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,eAAe,EAAE,gBAAgB,GAChC,OAAO,CAuET;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAsBxF"}