@the-open-engine/zeroshot 6.38.0 → 6.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/cli/event-copy.js +8 -7
  2. package/cli/event-copy.ts +12 -0
  3. package/cli/index.js +7 -31
  4. package/cli/json-export.js +61 -64
  5. package/cli/json-export.ts +112 -0
  6. package/cli/message-formatter-utils.js +68 -56
  7. package/cli/message-formatter-utils.ts +121 -0
  8. package/cli/message-formatters-normal.js +124 -259
  9. package/cli/message-formatters-normal.ts +250 -0
  10. package/cli/message-formatters-watch.js +81 -84
  11. package/cli/message-formatters-watch.ts +189 -0
  12. package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -1
  13. package/lib/agent-cli-provider/adapters/codex.js +3 -1
  14. package/lib/agent-cli-provider/adapters/codex.js.map +1 -1
  15. package/lib/cluster/generated/protocol-schema.cjs +1 -1
  16. package/lib/cluster/generated/protocol-schema.mjs +1 -1
  17. package/lib/cluster/generated/protocol.d.cts +8 -0
  18. package/lib/cluster/generated/protocol.d.mts +8 -0
  19. package/lib/cluster/generated/protocol.d.ts +8 -0
  20. package/lib/clusters-registry.d.ts +23 -0
  21. package/lib/clusters-registry.js +17 -29
  22. package/lib/completion.d.ts +12 -0
  23. package/lib/completion.js +84 -94
  24. package/lib/compose-utils.d.ts +32 -0
  25. package/lib/compose-utils.js +57 -72
  26. package/lib/detached-startup.d.ts +83 -0
  27. package/lib/detached-startup.js +231 -302
  28. package/lib/docker-config.d.ts +43 -0
  29. package/lib/docker-config.js +150 -325
  30. package/lib/docker-env-auth.d.ts +17 -0
  31. package/lib/docker-env-auth.js +75 -0
  32. package/lib/git-remote-utils.d.ts +48 -0
  33. package/lib/git-remote-utils.js +147 -213
  34. package/lib/id-detector.d.ts +15 -0
  35. package/lib/id-detector.js +37 -41
  36. package/lib/path-check.d.ts +30 -0
  37. package/lib/path-check.js +42 -45
  38. package/lib/process-liveness.d.ts +16 -0
  39. package/lib/process-liveness.js +19 -12
  40. package/lib/provider-credential-path.d.ts +16 -0
  41. package/lib/provider-credential-path.js +31 -29
  42. package/lib/provider-defaults.d.ts +30 -0
  43. package/lib/provider-defaults.js +47 -42
  44. package/lib/provider-detection.d.ts +11 -0
  45. package/lib/provider-detection.js +91 -54
  46. package/lib/provider-names.d.ts +38 -0
  47. package/lib/provider-names.js +56 -64
  48. package/lib/repo-settings.d.ts +28 -0
  49. package/lib/repo-settings.js +83 -59
  50. package/lib/run-mode.d.ts +21 -0
  51. package/lib/run-mode.js +21 -20
  52. package/lib/run-plan.d.ts +28 -0
  53. package/lib/run-plan.js +17 -16
  54. package/lib/settings/claude-auth.d.ts +35 -0
  55. package/lib/settings/claude-auth.js +30 -47
  56. package/lib/settings-defaults.d.ts +20 -0
  57. package/lib/settings-defaults.js +149 -0
  58. package/lib/settings-error.d.ts +7 -0
  59. package/lib/settings-error.js +8 -0
  60. package/lib/settings-issue-providers.d.ts +10 -0
  61. package/lib/settings-issue-providers.js +12 -0
  62. package/lib/settings-models.d.ts +22 -0
  63. package/lib/settings-models.js +93 -0
  64. package/lib/settings-storage.d.ts +23 -0
  65. package/lib/settings-storage.js +205 -0
  66. package/lib/settings-validation.d.ts +7 -0
  67. package/lib/settings-validation.js +182 -0
  68. package/lib/settings.d.ts +29 -0
  69. package/lib/settings.js +41 -736
  70. package/lib/setup-apply-types.d.ts +66 -0
  71. package/lib/setup-apply-types.js +2 -0
  72. package/lib/setup-apply.d.ts +39 -0
  73. package/lib/setup-apply.js +267 -264
  74. package/lib/setup-journal.d.ts +41 -0
  75. package/lib/setup-journal.js +119 -76
  76. package/lib/setup-plan-types.d.ts +102 -0
  77. package/lib/setup-plan-types.js +2 -0
  78. package/lib/setup-plan.d.ts +30 -0
  79. package/lib/setup-plan.js +300 -324
  80. package/lib/setup-undo.d.ts +44 -0
  81. package/lib/setup-undo.js +61 -74
  82. package/lib/start-cluster-config.d.ts +26 -0
  83. package/lib/start-cluster-config.js +56 -0
  84. package/lib/start-cluster-environment.d.ts +40 -0
  85. package/lib/start-cluster-environment.js +134 -0
  86. package/lib/start-cluster-run-options.d.ts +53 -0
  87. package/lib/start-cluster-run-options.js +147 -0
  88. package/lib/start-cluster.d.ts +64 -0
  89. package/lib/start-cluster.js +98 -454
  90. package/lib/stream-json-parser.d.ts +17 -0
  91. package/lib/stream-json-parser.js +51 -52
  92. package/npm-shrinkwrap.json +2 -2
  93. package/package.json +12 -6
  94. package/scripts/postinstall.js +27 -0
  95. package/scripts/rust-distribution.js +23 -14
  96. package/src/agent/agent-command-proofs-context.js +35 -45
  97. package/src/agent/agent-command-proofs-context.ts +87 -0
  98. package/src/agent/agent-config-settings.js +19 -0
  99. package/src/agent/agent-config-settings.ts +41 -0
  100. package/src/agent/agent-config.js +122 -231
  101. package/src/agent/agent-config.ts +285 -0
  102. package/src/agent/agent-context-builder.js +38 -273
  103. package/src/agent/agent-context-builder.ts +51 -0
  104. package/src/agent/agent-context-environment-sections.js +105 -0
  105. package/src/agent/agent-context-environment-sections.ts +134 -0
  106. package/src/agent/agent-context-packs.js +165 -0
  107. package/src/agent/agent-context-packs.ts +296 -0
  108. package/src/agent/agent-context-prompt-sections.js +100 -0
  109. package/src/agent/agent-context-prompt-sections.ts +148 -0
  110. package/src/agent/agent-context-sections.js +25 -334
  111. package/src/agent/agent-context-sections.ts +36 -0
  112. package/src/agent/agent-context-sources.js +96 -149
  113. package/src/agent/agent-context-sources.ts +253 -0
  114. package/src/agent/agent-context-types.js +2 -0
  115. package/src/agent/agent-context-types.ts +132 -0
  116. package/src/agent/agent-context-validation-sections.js +73 -0
  117. package/src/agent/agent-context-validation-sections.ts +129 -0
  118. package/src/agent/agent-input-injector.js +99 -118
  119. package/src/agent/agent-input-injector.ts +195 -0
  120. package/src/agent/agent-liveness-poll.js +74 -78
  121. package/src/agent/agent-liveness-poll.ts +163 -0
  122. package/src/agent/agent-quality-gate-schema.js +77 -86
  123. package/src/agent/agent-quality-gate-schema.ts +135 -0
  124. package/src/agent/agent-quality-gates-context.js +44 -50
  125. package/src/agent/agent-quality-gates-context.ts +91 -0
  126. package/src/agent/agent-stuck-detector.js +171 -239
  127. package/src/agent/agent-stuck-detector.ts +288 -0
  128. package/src/agent/agent-trigger-evaluator.js +29 -46
  129. package/src/agent/agent-trigger-evaluator.ts +98 -0
  130. package/src/agent/context-metrics.js +110 -141
  131. package/src/agent/context-metrics.ts +261 -0
  132. package/src/agent/context-pack-builder.js +72 -358
  133. package/src/agent/context-pack-builder.ts +105 -0
  134. package/src/agent/context-pack-core.js +70 -0
  135. package/src/agent/context-pack-core.ts +96 -0
  136. package/src/agent/context-pack-selection.js +119 -0
  137. package/src/agent/context-pack-selection.ts +187 -0
  138. package/src/agent/context-pack-truncation.js +139 -0
  139. package/src/agent/context-pack-truncation.ts +208 -0
  140. package/src/agent/context-pack-types.js +2 -0
  141. package/src/agent/context-pack-types.ts +98 -0
  142. package/src/agent/context-replay-policy.js +30 -39
  143. package/src/agent/context-replay-policy.ts +71 -0
  144. package/src/agent/critical-agent-policy.js +6 -10
  145. package/src/agent/critical-agent-policy.ts +20 -0
  146. package/src/agent/guidance-queue.js +74 -87
  147. package/src/agent/guidance-queue.ts +166 -0
  148. package/src/agent/output-extraction-error-detail.js +45 -0
  149. package/src/agent/output-extraction-error-detail.ts +49 -0
  150. package/src/agent/output-extraction-failures.js +125 -0
  151. package/src/agent/output-extraction-failures.ts +149 -0
  152. package/src/agent/output-extraction-json.js +234 -0
  153. package/src/agent/output-extraction-json.ts +235 -0
  154. package/src/agent/output-extraction-pi.js +124 -0
  155. package/src/agent/output-extraction-pi.ts +137 -0
  156. package/src/agent/output-extraction-types.js +2 -0
  157. package/src/agent/output-extraction-types.ts +49 -0
  158. package/src/agent/output-extraction.js +17 -617
  159. package/src/agent/output-extraction.ts +30 -0
  160. package/src/agent/output-reformatter-errors.js +83 -0
  161. package/src/agent/output-reformatter-errors.ts +106 -0
  162. package/src/agent/output-reformatter-types.js +2 -0
  163. package/src/agent/output-reformatter-types.ts +86 -0
  164. package/src/agent/output-reformatter.js +140 -185
  165. package/src/agent/output-reformatter.ts +238 -0
  166. package/src/agent/pi-terminal-lifecycle-types.js +2 -0
  167. package/src/agent/pi-terminal-lifecycle-types.ts +41 -0
  168. package/src/agent/pi-terminal-lifecycle.js +186 -206
  169. package/src/agent/pi-terminal-lifecycle.ts +297 -0
  170. package/src/agent/provider-control-plane.js +22 -21
  171. package/src/agent/provider-control-plane.ts +52 -0
  172. package/src/agent/provider-terminal-failure-types.js +2 -0
  173. package/src/agent/provider-terminal-failure-types.ts +60 -0
  174. package/src/agent/provider-terminal-failure.js +194 -191
  175. package/src/agent/provider-terminal-failure.ts +262 -0
  176. package/src/agent/rate-limit-backoff.js +31 -74
  177. package/src/agent/rate-limit-backoff.ts +71 -0
  178. package/src/agent/schema-utils.js +85 -125
  179. package/src/agent/schema-utils.ts +148 -0
  180. package/src/agent/structured-output-error.js +34 -33
  181. package/src/agent/structured-output-error.ts +105 -0
  182. package/src/agent/validation-platform.js +27 -27
  183. package/src/agent/validation-platform.ts +49 -0
  184. package/src/agent-cli-provider/adapters/codex.ts +3 -1
  185. package/src/attach/attach-client.js +232 -405
  186. package/src/attach/attach-client.ts +300 -0
  187. package/src/attach/attach-server-cleanup.js +43 -0
  188. package/src/attach/attach-server-cleanup.ts +39 -0
  189. package/src/attach/attach-server-clients.js +117 -0
  190. package/src/attach/attach-server-clients.ts +122 -0
  191. package/src/attach/attach-server-events.js +38 -0
  192. package/src/attach/attach-server-events.ts +36 -0
  193. package/src/attach/attach-server-pty.js +45 -0
  194. package/src/attach/attach-server-pty.ts +64 -0
  195. package/src/attach/attach-server-runtime.js +73 -0
  196. package/src/attach/attach-server-runtime.ts +62 -0
  197. package/src/attach/attach-server-socket.js +28 -0
  198. package/src/attach/attach-server-socket.ts +23 -0
  199. package/src/attach/attach-server-types.js +2 -0
  200. package/src/attach/attach-server-types.ts +82 -0
  201. package/src/attach/attach-server.js +106 -523
  202. package/src/attach/attach-server.ts +158 -0
  203. package/src/attach/index.js +18 -35
  204. package/src/attach/index.ts +18 -0
  205. package/src/attach/protocol.js +95 -184
  206. package/src/attach/protocol.ts +181 -0
  207. package/src/attach/ring-buffer.js +76 -102
  208. package/src/attach/ring-buffer.ts +109 -0
  209. package/src/attach/send-input.js +64 -75
  210. package/src/attach/send-input.ts +94 -0
  211. package/src/attach/socket-discovery.js +164 -218
  212. package/src/attach/socket-discovery.ts +230 -0
  213. package/src/attach/socket-paths.js +42 -61
  214. package/src/attach/socket-paths.ts +81 -0
  215. package/src/claude-credentials.js +51 -54
  216. package/src/claude-credentials.ts +89 -0
  217. package/src/cluster/generated/protocol-schema.ts +1 -1
  218. package/src/cluster/generated/protocol.ts +2 -1
  219. package/src/command-proofs.js +110 -141
  220. package/src/command-proofs.ts +216 -0
  221. package/src/config-router.js +81 -73
  222. package/src/config-router.ts +131 -0
  223. package/src/copy-worker.js +53 -29
  224. package/src/copy-worker.ts +75 -0
  225. package/src/darwin-keychain-boundary.js +80 -111
  226. package/src/darwin-keychain-boundary.ts +148 -0
  227. package/src/guidance-topics.js +4 -5
  228. package/src/guidance-topics.ts +10 -0
  229. package/src/input-helpers.js +33 -54
  230. package/src/input-helpers.ts +58 -0
  231. package/src/ledger-sequence.js +45 -48
  232. package/src/ledger-sequence.ts +63 -0
  233. package/src/legacy-lib/clusters-registry.ts +40 -0
  234. package/src/legacy-lib/completion.ts +148 -0
  235. package/src/legacy-lib/compose-utils.ts +102 -0
  236. package/src/legacy-lib/detached-startup.ts +449 -0
  237. package/src/legacy-lib/docker-config.ts +282 -0
  238. package/src/legacy-lib/docker-env-auth.ts +116 -0
  239. package/src/legacy-lib/git-remote-utils.ts +244 -0
  240. package/src/legacy-lib/id-detector.ts +57 -0
  241. package/src/legacy-lib/js-yaml.d.ts +3 -0
  242. package/src/legacy-lib/omelette.d.ts +15 -0
  243. package/src/legacy-lib/path-check.ts +89 -0
  244. package/src/legacy-lib/process-liveness.ts +36 -0
  245. package/src/legacy-lib/provider-credential-path.ts +57 -0
  246. package/src/legacy-lib/provider-defaults.ts +114 -0
  247. package/src/legacy-lib/provider-detection.ts +67 -0
  248. package/src/legacy-lib/provider-names.ts +126 -0
  249. package/src/legacy-lib/repo-settings.ts +88 -0
  250. package/src/legacy-lib/run-mode.ts +58 -0
  251. package/src/legacy-lib/run-plan.ts +49 -0
  252. package/src/legacy-lib/settings/claude-auth.ts +80 -0
  253. package/src/legacy-lib/settings-defaults.ts +212 -0
  254. package/src/legacy-lib/settings-error.ts +8 -0
  255. package/src/legacy-lib/settings-issue-providers.ts +18 -0
  256. package/src/legacy-lib/settings-models.ts +124 -0
  257. package/src/legacy-lib/settings-storage.ts +277 -0
  258. package/src/legacy-lib/settings-validation.ts +220 -0
  259. package/src/legacy-lib/settings.ts +87 -0
  260. package/src/legacy-lib/setup-apply-types.ts +70 -0
  261. package/src/legacy-lib/setup-apply.ts +456 -0
  262. package/src/legacy-lib/setup-journal.ts +185 -0
  263. package/src/legacy-lib/setup-plan-types.ts +96 -0
  264. package/src/legacy-lib/setup-plan.ts +500 -0
  265. package/src/legacy-lib/setup-undo.ts +142 -0
  266. package/src/legacy-lib/start-cluster-config.ts +124 -0
  267. package/src/legacy-lib/start-cluster-environment.ts +165 -0
  268. package/src/legacy-lib/start-cluster-run-options.ts +279 -0
  269. package/src/legacy-lib/start-cluster.ts +237 -0
  270. package/src/legacy-lib/stream-json-parser.ts +88 -0
  271. package/src/message-buffer.js +55 -71
  272. package/src/message-buffer.ts +107 -0
  273. package/src/message-bus-bridge.js +92 -133
  274. package/src/message-bus-bridge.ts +149 -0
  275. package/src/name-generator-shared.js +220 -0
  276. package/src/name-generator-shared.ts +231 -0
  277. package/src/name-generator.js +8 -217
  278. package/src/name-generator.ts +27 -0
  279. package/src/omp-blob-root.js +83 -64
  280. package/src/omp-blob-root.ts +116 -0
  281. package/src/omp-config-overlay.js +65 -38
  282. package/src/omp-config-overlay.ts +110 -0
  283. package/src/omp-execution-fingerprint.js +38 -43
  284. package/src/omp-execution-fingerprint.ts +92 -0
  285. package/src/omp-session-limits.js +10 -15
  286. package/src/omp-session-limits.ts +53 -0
  287. package/src/omp-session-partition.js +2 -2
  288. package/src/omp-session-verifier.js +1 -1
  289. package/src/orchestrator.js +19 -4
  290. package/src/providers/anthropic/index.js +3 -1
  291. package/src/providers/anthropic/index.ts +13 -0
  292. package/src/providers/capabilities.js +19 -27
  293. package/src/providers/capabilities.ts +44 -0
  294. package/src/providers/google/index.js +3 -1
  295. package/src/providers/google/index.ts +13 -0
  296. package/src/providers/openai/index.js +3 -1
  297. package/src/providers/openai/index.ts +13 -0
  298. package/src/providers/opencode/index.js +3 -1
  299. package/src/providers/opencode/index.ts +13 -0
  300. package/src/quality-gates.js +67 -127
  301. package/src/quality-gates.ts +149 -0
  302. package/src/repo-settings-access.js +40 -0
  303. package/src/repo-settings-access.ts +64 -0
  304. package/src/schemas/sub-cluster.js +127 -183
  305. package/src/schemas/sub-cluster.ts +238 -0
  306. package/src/state-snapshot-normalization.js +224 -0
  307. package/src/state-snapshot-normalization.ts +222 -0
  308. package/src/state-snapshot.js +192 -359
  309. package/src/state-snapshot.ts +291 -0
  310. package/src/state-snapshotter.js +118 -130
  311. package/src/state-snapshotter.ts +167 -0
  312. package/src/sub-cluster-wrapper.js +4 -13
  313. package/src/task-run-model-args.js +87 -124
  314. package/src/task-run-model-args.ts +204 -0
  315. package/src/task-runner.js +5 -25
  316. package/src/task-runner.ts +28 -0
  317. package/src/task-startup-error.js +73 -58
  318. package/src/task-startup-error.ts +126 -0
  319. package/src/template-validation/consensus-gate-contracts.js +2 -0
  320. package/src/template-validation/consensus-gate-contracts.ts +70 -0
  321. package/src/template-validation/consensus-gate-scenarios.js +76 -0
  322. package/src/template-validation/consensus-gate-scenarios.ts +130 -0
  323. package/src/template-validation/consensus-gate-stage.js +34 -0
  324. package/src/template-validation/consensus-gate-stage.ts +56 -0
  325. package/src/template-validation/random-topology-contracts.js +2 -0
  326. package/src/template-validation/random-topology-contracts.ts +54 -0
  327. package/src/template-validation/random-topology-dispatch.js +25 -0
  328. package/src/template-validation/random-topology-dispatch.ts +33 -0
  329. package/src/template-validation/random-topology-message-loop.js +53 -0
  330. package/src/template-validation/random-topology-message-loop.ts +73 -0
  331. package/src/template-validation/random-topology-operations.js +79 -0
  332. package/src/template-validation/random-topology-operations.ts +101 -0
  333. package/src/template-validation/random-topology-runtime.js +25 -0
  334. package/src/template-validation/random-topology-runtime.ts +43 -0
  335. package/src/template-validation/random-topology-scenario.js +52 -0
  336. package/src/template-validation/random-topology-scenario.ts +57 -0
  337. package/src/template-validation/random-topology-schema.js +159 -0
  338. package/src/template-validation/random-topology-schema.ts +190 -0
  339. package/src/template-validation/random-topology-state.js +28 -0
  340. package/src/template-validation/random-topology-state.ts +30 -0
  341. package/src/template-validation/random-topology-trigger-evaluation.js +45 -0
  342. package/src/template-validation/random-topology-trigger-evaluation.ts +65 -0
  343. package/src/template-validation/random-topology-trigger.js +75 -0
  344. package/src/template-validation/random-topology-trigger.ts +88 -0
  345. package/src/template-validation/report-formatter.js +40 -46
  346. package/src/template-validation/report-formatter.ts +101 -0
  347. package/src/template-validation/simulate-consensus-gates.js +111 -302
  348. package/src/template-validation/simulate-consensus-gates.ts +196 -0
  349. package/src/template-validation/simulate-random-topology.js +26 -519
  350. package/src/template-validation/simulate-random-topology.ts +57 -0
  351. package/src/template-validation/simulate-two-stage-validation.js +41 -265
  352. package/src/template-validation/simulate-two-stage-validation.ts +55 -0
  353. package/src/template-validation/simulation-agent-runtime.js +25 -0
  354. package/src/template-validation/simulation-agent-runtime.ts +40 -0
  355. package/src/template-validation/simulation-agent.js +29 -0
  356. package/src/template-validation/simulation-agent.ts +73 -0
  357. package/src/template-validation/simulation-runtime.js +34 -0
  358. package/src/template-validation/simulation-runtime.ts +72 -0
  359. package/src/template-validation/two-stage-contracts.js +2 -0
  360. package/src/template-validation/two-stage-contracts.ts +41 -0
  361. package/src/template-validation/two-stage-inputs.js +21 -0
  362. package/src/template-validation/two-stage-inputs.ts +29 -0
  363. package/src/template-validation/two-stage-results.js +30 -0
  364. package/src/template-validation/two-stage-results.ts +40 -0
  365. package/src/template-validation/two-stage-scenario.js +86 -0
  366. package/src/template-validation/two-stage-scenario.ts +120 -0
  367. package/src/worktree-claude-config.js +182 -220
  368. package/src/worktree-claude-config.ts +272 -0
  369. package/src/worktree-tooling-env.js +103 -125
  370. package/src/worktree-tooling-env.ts +142 -0
  371. package/task-lib/completion.js +2 -3
  372. package/task-lib/completion.ts +9 -0
  373. package/task-lib/config.js +1 -4
  374. package/task-lib/config.ts +11 -0
  375. package/task-lib/name-generator.js +4 -226
  376. package/task-lib/name-generator.ts +11 -0
  377. package/task-lib/omp-session-cleanup.js +1 -1
  378. package/task-lib/omp-storage-root.js +8 -12
  379. package/task-lib/omp-storage-root.ts +62 -0
  380. package/task-lib/process-termination.js +143 -166
  381. package/task-lib/process-termination.ts +268 -0
@@ -0,0 +1,64 @@
1
+ interface Settings extends Record<string, unknown> {
2
+ }
3
+ interface ClusterConfig extends Record<string, unknown> {
4
+ }
5
+ interface ClusterInput extends Record<string, string> {
6
+ }
7
+ interface OrchestratorFacade {
8
+ loadConfig(configPath: string): ClusterConfig;
9
+ start(config: ClusterConfig, input: ClusterInput, options: unknown): unknown;
10
+ }
11
+ interface ProviderOverrideOptions {
12
+ provider?: string | null;
13
+ envProvider?: string | null;
14
+ validateProvider?: unknown;
15
+ }
16
+ interface StartClusterArgs extends Record<string, unknown> {
17
+ orchestrator?: OrchestratorFacade;
18
+ config?: ClusterConfig | null;
19
+ configPath?: string | null;
20
+ configName?: string | null;
21
+ settings?: Settings;
22
+ providerOverride?: string | null;
23
+ modelOverride?: unknown;
24
+ forceProvider?: unknown;
25
+ clusterId?: unknown;
26
+ options?: Record<string, unknown>;
27
+ text: string;
28
+ issue: string;
29
+ file: string;
30
+ }
31
+ declare function buildTextInput(text: string): ClusterInput;
32
+ declare function buildIssueInput(issue: string): ClusterInput;
33
+ declare function buildFileInput(file: string): ClusterInput;
34
+ declare function detectRunInput(inputArg: string, settings?: Settings, forceProvider?: string | null): ClusterInput;
35
+ declare function isStdinInput(inputArg: string): boolean;
36
+ declare function readStdinText(stream?: AsyncIterable<string | Uint8Array>): Promise<string>;
37
+ declare function encodeStdinEnv(text: string): string;
38
+ declare function decodeStdinEnv(value: string): string;
39
+ declare function resolveProviderOverride(options?: ProviderOverrideOptions): string | null;
40
+ declare function startClusterFromText(args: StartClusterArgs): unknown;
41
+ declare function startClusterFromIssue(args: StartClusterArgs): unknown;
42
+ declare function startClusterFromFile(args: StartClusterArgs): unknown;
43
+ declare const _default: {
44
+ buildTextInput: typeof buildTextInput;
45
+ buildIssueInput: typeof buildIssueInput;
46
+ buildFileInput: typeof buildFileInput;
47
+ detectRunInput: typeof detectRunInput;
48
+ isStdinInput: typeof isStdinInput;
49
+ readStdinText: typeof readStdinText;
50
+ encodeStdinEnv: typeof encodeStdinEnv;
51
+ decodeStdinEnv: typeof decodeStdinEnv;
52
+ resolveProviderOverride: typeof resolveProviderOverride;
53
+ resolveConfigPath: (configName: string) => string;
54
+ prepareClusterConfig: (config: ClusterConfig, settings?: Settings, providerOverride?: string | null) => ClusterConfig;
55
+ loadClusterConfig: (orchestrator: OrchestratorFacade, configPath: string, settings?: Settings, providerOverride?: string | null) => ClusterConfig;
56
+ buildStartOptions: (args: Record<string, unknown>) => unknown;
57
+ buildTrustedStartOptions: (args: Record<string, unknown>) => unknown;
58
+ resolveEffectiveRunPlan: (options?: Record<string, unknown>, settings?: Settings) => unknown;
59
+ startClusterFromText: typeof startClusterFromText;
60
+ startClusterFromIssue: typeof startClusterFromIssue;
61
+ startClusterFromFile: typeof startClusterFromFile;
62
+ detectGitRepoRoot: () => string;
63
+ };
64
+ export = _default;
@@ -1,485 +1,129 @@
1
- const path = require('path');
2
- const { spawnSync } = require('child_process');
3
- const chalk = require('chalk');
4
- const { normalizeProviderName, getDefaultProviderId } = require('./provider-names');
5
- const { getProvider } = require('../src/providers');
6
- const { detectProvider } = require('../src/issue-providers');
7
- const TemplateResolver = require('../src/template-resolver');
8
- const { runModeFromPlan } = require('./run-mode');
9
- const { resolveRunPlan } = require('./run-plan');
10
-
11
- const PACKAGE_ROOT = path.resolve(__dirname, '..');
12
-
13
- function firstTruthy(...values) {
14
- return values.find(Boolean);
15
- }
16
- function anyTruthy(...values) {
17
- return values.some(Boolean);
18
- }
19
- function optionalValue(value) {
20
- return value || undefined;
21
- }
22
- function resolveTargetCwd() {
23
- return firstTruthy(process.env.ZEROSHOT_CWD, detectGitRepoRoot());
24
- }
25
-
26
- function detectGitRepoRoot() {
27
- try {
28
- const result = spawnSync('git', ['rev-parse', '--show-toplevel'], {
29
- encoding: 'utf8',
30
- stdio: ['pipe', 'pipe', 'pipe'],
31
- });
32
- if (result.status !== 0) {
33
- return process.cwd();
34
- }
35
- return result.stdout.trim();
36
- } catch {
37
- return process.cwd();
38
- }
39
- }
40
-
41
- function resolveOptionalString(value) {
42
- if (typeof value !== 'string') return undefined;
43
- const trimmed = value.trim();
44
- return trimmed.length > 0 ? trimmed : undefined;
45
- }
46
-
47
- function resolveEnvBool(value) {
48
- if (typeof value !== 'string') return undefined;
49
- const trimmed = value.trim().toLowerCase();
50
- if (trimmed === '1' || trimmed === 'true' || trimmed === 'yes') return true;
51
- if (trimmed === '0' || trimmed === 'false' || trimmed === 'no') return false;
52
- return undefined;
53
- }
54
-
55
- function resolveCloseIssueMode(value) {
56
- const trimmed = resolveOptionalString(value);
57
- if (!trimmed) return undefined;
58
- const normalized = trimmed.toLowerCase();
59
- if (normalized === 'auto' || normalized === 'always' || normalized === 'never') {
60
- return normalized;
61
- }
62
- return undefined;
63
- }
64
-
65
- function parseRunOptionsEnv() {
66
- const raw = resolveOptionalString(process.env.ZEROSHOT_RUN_OPTIONS);
67
- if (!raw) return null;
68
- try {
69
- const parsed = JSON.parse(raw);
70
- if (!parsed || typeof parsed !== 'object') {
71
- return null;
72
- }
73
- return parsed;
74
- } catch {
75
- return null;
76
- }
77
- }
78
-
79
- function parseMountSpecs(specs) {
80
- return specs.map((spec) => {
81
- const parts = spec.split(':');
82
- if (parts.length < 2) {
83
- throw new Error(`Invalid mount spec: "${spec}". Format: host:container[:ro]`);
84
- }
85
- const host = parts[0];
86
- const container = parts[1];
87
- const readonly = parts[2] === 'ro';
88
- return { host, container, readonly };
89
- });
90
- }
91
-
1
+ "use strict";
2
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
3
+ const providerNames = require('./provider-names');
4
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
5
+ const providers = require('../src/providers');
6
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
7
+ const issueProviders = require('../src/issue-providers');
8
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
9
+ const configHelpers = require('./start-cluster-config');
10
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
11
+ const runOptionsHelpers = require('./start-cluster-run-options');
12
+ const { normalizeProviderName } = providerNames;
13
+ const { getProvider } = providers;
14
+ const { detectProvider } = issueProviders;
15
+ const { resolveConfigPath, prepareClusterConfig, loadClusterConfig } = configHelpers;
16
+ const { buildStartOptions, buildTrustedStartOptions, resolveEffectiveRunPlan, detectGitRepoRoot } = runOptionsHelpers;
92
17
  function buildTextInput(text) {
93
- return { text };
18
+ return { text };
94
19
  }
95
20
  function buildIssueInput(issue) {
96
- return { issue };
21
+ return { issue };
97
22
  }
98
23
  function buildFileInput(file) {
99
- return { file };
24
+ return { file };
100
25
  }
101
-
102
26
  function detectRunInput(inputArg, settings = {}, forceProvider = null) {
103
- const isMarkdownFile = /\.(md|markdown)$/i.test(inputArg);
104
- if (isMarkdownFile) {
105
- return buildFileInput(inputArg);
106
- }
107
-
108
- const ProviderClass = detectProvider(inputArg, settings, forceProvider);
109
- if (ProviderClass) {
110
- return buildIssueInput(inputArg);
111
- }
112
-
113
- return buildTextInput(inputArg);
27
+ const isMarkdownFile = /\.(md|markdown)$/i.test(inputArg);
28
+ if (isMarkdownFile) {
29
+ return buildFileInput(inputArg);
30
+ }
31
+ const ProviderClass = detectProvider(inputArg, settings, forceProvider);
32
+ if (ProviderClass) {
33
+ return buildIssueInput(inputArg);
34
+ }
35
+ return buildTextInput(inputArg);
114
36
  }
115
-
116
37
  const STDIN_MARKER = '-';
117
-
118
38
  function isStdinInput(inputArg) {
119
- return inputArg === STDIN_MARKER;
39
+ return inputArg === STDIN_MARKER;
120
40
  }
121
-
122
41
  async function readStdinText(stream = process.stdin) {
123
- const chunks = [];
124
- for await (const chunk of stream) {
125
- chunks.push(chunk);
126
- }
127
- return Buffer.concat(chunks.map((chunk) => (Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk))))
128
- .toString('utf8')
129
- .trim();
42
+ const chunks = [];
43
+ for await (const chunk of stream) {
44
+ chunks.push(chunk);
45
+ }
46
+ return Buffer.concat(chunks.map((chunk) => (Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk))))
47
+ .toString('utf8')
48
+ .trim();
130
49
  }
131
-
132
50
  function encodeStdinEnv(text) {
133
- return Buffer.from(text, 'utf8').toString('base64');
51
+ return Buffer.from(text, 'utf8').toString('base64');
134
52
  }
135
-
136
53
  function decodeStdinEnv(value) {
137
- return Buffer.from(value, 'base64').toString('utf8');
54
+ return Buffer.from(value, 'base64').toString('utf8');
138
55
  }
139
-
140
56
  function resolveProviderOverride(options = {}) {
141
- const override = options.provider || options.envProvider || process.env.ZEROSHOT_PROVIDER;
142
- if (!override || (typeof override === 'string' && !override.trim())) {
143
- return null;
144
- }
145
- const normalized = normalizeProviderName(override);
146
- if (options.validateProvider) {
147
- getProvider(normalized);
148
- }
149
- return normalized;
150
- }
151
-
152
- function resolveConfigPath(configName) {
153
- if (path.isAbsolute(configName) || configName.startsWith('./') || configName.startsWith('../')) {
154
- return path.resolve(process.cwd(), configName);
155
- }
156
- if (configName.endsWith('.json')) {
157
- return path.join(PACKAGE_ROOT, 'cluster-templates', configName);
158
- }
159
- return path.join(PACKAGE_ROOT, 'cluster-templates', `${configName}.json`);
160
- }
161
-
162
- function ensureConfigProviderDefaults(config, settings) {
163
- if (!config.defaultProvider) {
164
- config.defaultProvider = settings.defaultProvider || getDefaultProviderId();
165
- }
166
- config.defaultProvider = normalizeProviderName(config.defaultProvider) || getDefaultProviderId();
167
- }
168
-
169
- function applyProviderOverrideToConfig(config, providerOverride, settings) {
170
- const provider = getProvider(providerOverride);
171
- const providerSettings = settings.providerSettings?.[providerOverride] || {};
172
- config.forceProvider = providerOverride;
173
- config.defaultProvider = providerOverride;
174
- config.forceLevel = providerSettings.defaultLevel || provider.getDefaultLevel();
175
- config.defaultLevel = config.forceLevel;
176
- console.log(chalk.dim(`Provider override: ${providerOverride} (all agents)`));
177
- }
178
-
179
- function resolveParameterizedConfigFile(config) {
180
- if (!config?.params || Object.keys(config.params).length === 0) {
181
- return config;
182
- }
183
-
184
- const resolver = new TemplateResolver(path.join(PACKAGE_ROOT, 'cluster-templates'));
185
- return resolver.resolveTemplate(config, {});
186
- }
187
-
188
- function prepareClusterConfig(config, settings = {}, providerOverride) {
189
- const prepared = resolveParameterizedConfigFile(config);
190
- ensureConfigProviderDefaults(prepared, settings);
191
- if (providerOverride) {
192
- applyProviderOverrideToConfig(prepared, providerOverride, settings);
193
- }
194
- return prepared;
195
- }
196
-
197
- function loadClusterConfig(orchestrator, configPath, settings = {}, providerOverride) {
198
- return prepareClusterConfig(orchestrator.loadConfig(configPath), settings, providerOverride);
199
- }
200
-
201
- const RUN_MODE_KEYS = ['docker', 'worktree', 'pr', 'ship', 'noIsolation', 'isolation'];
202
-
203
- function hasExplicitRunMode(options) {
204
- return RUN_MODE_KEYS.some(
205
- (key) => options[key] === true || (key === 'isolation' && options[key] === false)
206
- );
207
- }
208
-
209
- function mergeRunOptions(options) {
210
- const envRunOptions = parseRunOptionsEnv();
211
- if (!envRunOptions) return options;
212
- if (!hasExplicitRunMode(options)) return { ...envRunOptions, ...options };
213
- const withoutEnvMode = { ...envRunOptions };
214
- for (const key of RUN_MODE_KEYS) delete withoutEnvMode[key];
215
- return { ...withoutEnvMode, ...options };
216
- }
217
-
218
- function validateSavedRunModes(settings) {
219
- const isolation = settings.defaultIsolation || 'none';
220
- const delivery = settings.defaultDelivery || 'none';
221
- if (!['none', 'worktree', 'docker'].includes(isolation)) {
222
- throw new Error(`Invalid saved isolation mode: ${isolation}`);
223
- }
224
- if (!['none', 'pr', 'ship'].includes(delivery)) {
225
- throw new Error(`Invalid saved delivery mode: ${delivery}`);
226
- }
227
- return { isolation, delivery };
228
- }
229
-
230
- function resolveEffectiveIsolation(options, savedIsolation) {
231
- if (options.noIsolation === true || options.isolation === false) return 'none';
232
- if (options.docker === true) return 'docker';
233
- if (options.worktree === true || options.pr === true || options.ship === true) return 'worktree';
234
- if (resolveEnvBool(process.env.ZEROSHOT_DOCKER) === true) return 'docker';
235
- if (resolveEnvBool(process.env.ZEROSHOT_WORKTREE) === true) return 'worktree';
236
- return savedIsolation;
237
- }
238
-
239
- function resolveEffectiveDelivery(options, savedDelivery) {
240
- if (options.ship === true || options.autoMerge === true) return 'ship';
241
- if (options.pr === true || resolveEnvBool(process.env.ZEROSHOT_PR) === true) return 'pr';
242
- return savedDelivery;
243
- }
244
-
245
- function resolveEffectiveRunPlan(options = {}, settings = {}) {
246
- const mergedOptions = mergeRunOptions(options);
247
- const noIsolation = mergedOptions.noIsolation === true || mergedOptions.isolation === false;
248
- const conflicts = ['docker', 'worktree', 'pr', 'ship'].filter(
249
- (key) => mergedOptions[key] === true
250
- );
251
- if (noIsolation && conflicts.length > 0) {
252
- throw new Error(`--no-isolation conflicts with --${conflicts.join(', --')}`);
253
- }
254
-
255
- const saved = validateSavedRunModes(settings);
256
- let isolation = resolveEffectiveIsolation(mergedOptions, saved.isolation);
257
- const delivery = resolveEffectiveDelivery(mergedOptions, saved.delivery);
258
- if (delivery !== 'none' && isolation === 'none') {
259
- if (noIsolation) {
260
- throw new Error(`--no-isolation conflicts with saved delivery mode "${delivery}"`);
57
+ const override = options.provider || options.envProvider || process.env.ZEROSHOT_PROVIDER;
58
+ if (!override || !override.trim()) {
59
+ return null;
261
60
  }
262
- isolation = 'worktree';
263
- }
264
- return resolveRunPlan({
265
- docker: isolation === 'docker',
266
- worktree: isolation === 'worktree',
267
- pr: delivery === 'pr',
268
- ship: delivery === 'ship',
269
- });
270
- }
271
-
272
- function resolveMergeQueue(mergedOptions) {
273
- if (typeof mergedOptions.mergeQueue === 'boolean') {
274
- return mergedOptions.mergeQueue;
275
- }
276
- return resolveEnvBool(process.env.ZEROSHOT_MERGE_QUEUE);
277
- }
278
-
279
- function resolvePrBase(mergedOptions) {
280
- return (
281
- resolveOptionalString(mergedOptions.prBase) ||
282
- resolveOptionalString(process.env.ZEROSHOT_PR_BASE) ||
283
- undefined
284
- );
285
- }
286
-
287
- function resolveCloseIssue(mergedOptions) {
288
- return (
289
- resolveCloseIssueMode(mergedOptions.closeIssue) ||
290
- resolveCloseIssueMode(process.env.ZEROSHOT_CLOSE_ISSUE) ||
291
- undefined
292
- );
293
- }
294
-
295
- function resolveMounts(mergedOptions) {
296
- return mergedOptions.mount ? parseMountSpecs(mergedOptions.mount) : undefined;
297
- }
298
-
299
- function buildStartOptions({
300
- clusterId,
301
- options = {},
302
- settings = {},
303
- providerOverride,
304
- modelOverride,
305
- forceProvider,
306
- }) {
307
- const mergedOptions = mergeRunOptions(options);
308
- const plan = resolveEffectiveRunPlan(options, settings);
309
- return buildStartOptionsFromPlan({
310
- clusterId,
311
- plan,
312
- options: mergedOptions,
313
- settings,
314
- providerOverride,
315
- modelOverride,
316
- forceProvider,
317
- environment: true,
318
- });
319
- }
320
-
321
- function buildStartOptionsFromPlan({
322
- clusterId,
323
- plan,
324
- options,
325
- settings,
326
- providerOverride,
327
- modelOverride,
328
- forceProvider,
329
- preparedWorktree,
330
- environment,
331
- }) {
332
- const targetCwd = environment ? resolveTargetCwd() : options.cwd;
333
- return Object.freeze({
334
- clusterId,
335
- cwd: targetCwd,
336
- isolation: plan.isolation === 'docker',
337
- isolationImage: environment
338
- ? firstTruthy(options.dockerImage, process.env.ZEROSHOT_DOCKER_IMAGE)
339
- : optionalValue(options.dockerImage),
340
- worktree: plan.isolation === 'worktree',
341
- preparedWorktree: preparedWorktree || undefined,
342
- autoPr: plan.delivery !== 'none',
343
- autoMerge: plan.autoMerge,
344
- autoPush: environment ? process.env.ZEROSHOT_PUSH === '1' : options.autoPush === true,
345
- modelOverride: optionalValue(modelOverride),
346
- providerOverride: optionalValue(providerOverride),
347
- noMounts: anyTruthy(options.mounts === false, options.noMounts === true),
348
- mounts: resolveMounts(options),
349
- containerHome: optionalValue(options.containerHome),
350
- forceProvider: optionalValue(forceProvider),
351
- prBase: environment ? resolvePrBase(options) : optionalValue(options.prBase),
352
- mergeQueue: environment ? resolveMergeQueue(options) : optionalValue(options.mergeQueue),
353
- closeIssue: environment ? resolveCloseIssue(options) : optionalValue(options.closeIssue),
354
- ship: plan.delivery === 'ship',
355
- runMode: runModeFromPlan(plan),
356
- requiredQualityGates: options.requiredQualityGates,
357
- settings,
358
- });
359
- }
360
-
361
- /**
362
- * Build start options from a registry-owned canonical plan. Unlike the CLI
363
- * builder, this function never reads ZEROSHOT_RUN_OPTIONS or mode-related
364
- * environment variables. The caller must resolve and validate the deployment
365
- * profile before invoking it.
366
- */
367
- function buildTrustedStartOptions({
368
- clusterId,
369
- plan,
370
- options = {},
371
- settings = {},
372
- providerOverride,
373
- modelOverride,
374
- forceProvider,
375
- }) {
376
- if (!plan || !Object.isFrozen(plan)) {
377
- throw new Error('Trusted start requires a frozen canonical run plan');
378
- }
379
- const canonical = resolveRunPlan({
380
- docker: plan.isolation === 'docker',
381
- worktree: plan.isolation === 'worktree',
382
- pr: plan.delivery === 'pr',
383
- ship: plan.delivery === 'ship',
384
- });
385
- if (
386
- canonical.isolation !== plan.isolation ||
387
- canonical.delivery !== plan.delivery ||
388
- canonical.autoMerge !== plan.autoMerge
389
- ) {
390
- throw new Error('Trusted start plan is not canonical');
391
- }
392
- if (canonical.isolation === 'none') {
393
- throw new Error('Trusted worker start requires worktree or docker isolation');
394
- }
395
- if (options.preparedWorktree && canonical.isolation !== 'worktree') {
396
- throw new Error('Prepared worktree requires canonical worktree isolation');
397
- }
398
- return buildStartOptionsFromPlan({
399
- clusterId,
400
- plan: canonical,
401
- options,
402
- settings,
403
- providerOverride,
404
- modelOverride,
405
- forceProvider,
406
- preparedWorktree: options.preparedWorktree,
407
- environment: false,
408
- });
61
+ const normalized = normalizeProviderName(override);
62
+ if (options.validateProvider) {
63
+ getProvider(normalized);
64
+ }
65
+ return normalized;
409
66
  }
410
-
411
- function resolveConfigOrThrow({
412
- orchestrator,
413
- config,
414
- configPath,
415
- configName,
416
- settings,
417
- providerOverride,
418
- }) {
419
- if (config) {
420
- return config;
421
- }
422
- const resolvedPath = configPath || (configName ? resolveConfigPath(configName) : null);
423
- if (!resolvedPath) {
424
- throw new Error('configPath or configName is required when config is not provided');
425
- }
426
- return loadClusterConfig(orchestrator, resolvedPath, settings, providerOverride);
67
+ function resolveConfigOrThrow({ orchestrator, config, configPath, configName, settings, providerOverride, }) {
68
+ if (config) {
69
+ return config;
70
+ }
71
+ const resolvedPath = configPath || (configName ? resolveConfigPath(configName) : null);
72
+ if (!resolvedPath) {
73
+ throw new Error('configPath or configName is required when config is not provided');
74
+ }
75
+ return loadClusterConfig(orchestrator, resolvedPath, settings, providerOverride);
427
76
  }
428
-
429
77
  function startClusterWithInput(args, input) {
430
- const { orchestrator, config, configPath, configName, settings, providerOverride } = args;
431
- if (!orchestrator) {
432
- throw new Error('orchestrator is required');
433
- }
434
- const resolvedConfig = resolveConfigOrThrow({
435
- orchestrator,
436
- config,
437
- configPath,
438
- configName,
439
- settings,
440
- providerOverride,
441
- });
442
- const startOptions = buildStartOptions({
443
- clusterId: args.clusterId,
444
- options: args.options || {},
445
- settings,
446
- providerOverride,
447
- modelOverride: args.modelOverride,
448
- forceProvider: args.forceProvider,
449
- });
450
- return orchestrator.start(resolvedConfig, input, startOptions);
78
+ const { orchestrator, config, configPath, configName, settings, providerOverride } = args;
79
+ if (!orchestrator) {
80
+ throw new Error('orchestrator is required');
81
+ }
82
+ const resolvedConfig = resolveConfigOrThrow({
83
+ orchestrator,
84
+ config,
85
+ configPath,
86
+ configName,
87
+ settings,
88
+ providerOverride,
89
+ });
90
+ const startOptions = buildStartOptions({
91
+ clusterId: args.clusterId,
92
+ options: args.options || {},
93
+ settings,
94
+ providerOverride,
95
+ modelOverride: args.modelOverride,
96
+ forceProvider: args.forceProvider,
97
+ });
98
+ return orchestrator.start(resolvedConfig, input, startOptions);
451
99
  }
452
-
453
100
  function startClusterFromText(args) {
454
- return startClusterWithInput(args, buildTextInput(args.text));
101
+ return startClusterWithInput(args, buildTextInput(args.text));
455
102
  }
456
-
457
103
  function startClusterFromIssue(args) {
458
- return startClusterWithInput(args, buildIssueInput(args.issue));
104
+ return startClusterWithInput(args, buildIssueInput(args.issue));
459
105
  }
460
-
461
106
  function startClusterFromFile(args) {
462
- return startClusterWithInput(args, buildFileInput(args.file));
107
+ return startClusterWithInput(args, buildFileInput(args.file));
463
108
  }
464
-
465
109
  module.exports = {
466
- buildTextInput,
467
- buildIssueInput,
468
- buildFileInput,
469
- detectRunInput,
470
- isStdinInput,
471
- readStdinText,
472
- encodeStdinEnv,
473
- decodeStdinEnv,
474
- resolveProviderOverride,
475
- resolveConfigPath,
476
- prepareClusterConfig,
477
- loadClusterConfig,
478
- buildStartOptions,
479
- buildTrustedStartOptions,
480
- resolveEffectiveRunPlan,
481
- startClusterFromText,
482
- startClusterFromIssue,
483
- startClusterFromFile,
484
- detectGitRepoRoot,
110
+ buildTextInput,
111
+ buildIssueInput,
112
+ buildFileInput,
113
+ detectRunInput,
114
+ isStdinInput,
115
+ readStdinText,
116
+ encodeStdinEnv,
117
+ decodeStdinEnv,
118
+ resolveProviderOverride,
119
+ resolveConfigPath,
120
+ prepareClusterConfig,
121
+ loadClusterConfig,
122
+ buildStartOptions,
123
+ buildTrustedStartOptions,
124
+ resolveEffectiveRunPlan,
125
+ startClusterFromText,
126
+ startClusterFromIssue,
127
+ startClusterFromFile,
128
+ detectGitRepoRoot,
485
129
  };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Provider-agnostic stream-json parser for `zeroshot logs`.
3
+ *
4
+ * Provider parsing is delegated to the helper-backed runtime provider facade.
5
+ */
6
+ type ParsedEvent = Readonly<Record<string, unknown>>;
7
+ type ProviderEvent = ParsedEvent | ParsedEvent[] | null;
8
+ interface ProviderParser {
9
+ parseEvent(line: string): ProviderEvent;
10
+ }
11
+ declare function parseEvent(line: unknown, providerParsers?: readonly ProviderParser[]): ProviderEvent;
12
+ declare function parseChunk(chunk: unknown): ParsedEvent[];
13
+ declare const _default: {
14
+ parseEvent: typeof parseEvent;
15
+ parseChunk: typeof parseChunk;
16
+ };
17
+ export = _default;