@the-open-engine/zeroshot 6.38.1 → 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 (377) 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/cluster/generated/protocol-schema.cjs +1 -1
  13. package/lib/cluster/generated/protocol-schema.mjs +1 -1
  14. package/lib/cluster/generated/protocol.d.cts +8 -0
  15. package/lib/cluster/generated/protocol.d.mts +8 -0
  16. package/lib/cluster/generated/protocol.d.ts +8 -0
  17. package/lib/clusters-registry.d.ts +23 -0
  18. package/lib/clusters-registry.js +17 -29
  19. package/lib/completion.d.ts +12 -0
  20. package/lib/completion.js +84 -94
  21. package/lib/compose-utils.d.ts +32 -0
  22. package/lib/compose-utils.js +57 -72
  23. package/lib/detached-startup.d.ts +83 -0
  24. package/lib/detached-startup.js +231 -302
  25. package/lib/docker-config.d.ts +43 -0
  26. package/lib/docker-config.js +150 -325
  27. package/lib/docker-env-auth.d.ts +17 -0
  28. package/lib/docker-env-auth.js +75 -0
  29. package/lib/git-remote-utils.d.ts +48 -0
  30. package/lib/git-remote-utils.js +147 -213
  31. package/lib/id-detector.d.ts +15 -0
  32. package/lib/id-detector.js +37 -41
  33. package/lib/path-check.d.ts +30 -0
  34. package/lib/path-check.js +42 -45
  35. package/lib/process-liveness.d.ts +16 -0
  36. package/lib/process-liveness.js +19 -12
  37. package/lib/provider-credential-path.d.ts +16 -0
  38. package/lib/provider-credential-path.js +31 -29
  39. package/lib/provider-defaults.d.ts +30 -0
  40. package/lib/provider-defaults.js +47 -42
  41. package/lib/provider-detection.d.ts +11 -0
  42. package/lib/provider-detection.js +91 -54
  43. package/lib/provider-names.d.ts +38 -0
  44. package/lib/provider-names.js +56 -64
  45. package/lib/repo-settings.d.ts +28 -0
  46. package/lib/repo-settings.js +83 -59
  47. package/lib/run-mode.d.ts +21 -0
  48. package/lib/run-mode.js +21 -20
  49. package/lib/run-plan.d.ts +28 -0
  50. package/lib/run-plan.js +17 -16
  51. package/lib/settings/claude-auth.d.ts +35 -0
  52. package/lib/settings/claude-auth.js +30 -47
  53. package/lib/settings-defaults.d.ts +20 -0
  54. package/lib/settings-defaults.js +149 -0
  55. package/lib/settings-error.d.ts +7 -0
  56. package/lib/settings-error.js +8 -0
  57. package/lib/settings-issue-providers.d.ts +10 -0
  58. package/lib/settings-issue-providers.js +12 -0
  59. package/lib/settings-models.d.ts +22 -0
  60. package/lib/settings-models.js +93 -0
  61. package/lib/settings-storage.d.ts +23 -0
  62. package/lib/settings-storage.js +205 -0
  63. package/lib/settings-validation.d.ts +7 -0
  64. package/lib/settings-validation.js +182 -0
  65. package/lib/settings.d.ts +29 -0
  66. package/lib/settings.js +41 -736
  67. package/lib/setup-apply-types.d.ts +66 -0
  68. package/lib/setup-apply-types.js +2 -0
  69. package/lib/setup-apply.d.ts +39 -0
  70. package/lib/setup-apply.js +267 -264
  71. package/lib/setup-journal.d.ts +41 -0
  72. package/lib/setup-journal.js +119 -76
  73. package/lib/setup-plan-types.d.ts +102 -0
  74. package/lib/setup-plan-types.js +2 -0
  75. package/lib/setup-plan.d.ts +30 -0
  76. package/lib/setup-plan.js +300 -324
  77. package/lib/setup-undo.d.ts +44 -0
  78. package/lib/setup-undo.js +61 -74
  79. package/lib/start-cluster-config.d.ts +26 -0
  80. package/lib/start-cluster-config.js +56 -0
  81. package/lib/start-cluster-environment.d.ts +40 -0
  82. package/lib/start-cluster-environment.js +134 -0
  83. package/lib/start-cluster-run-options.d.ts +53 -0
  84. package/lib/start-cluster-run-options.js +147 -0
  85. package/lib/start-cluster.d.ts +64 -0
  86. package/lib/start-cluster.js +98 -454
  87. package/lib/stream-json-parser.d.ts +17 -0
  88. package/lib/stream-json-parser.js +51 -52
  89. package/npm-shrinkwrap.json +2 -2
  90. package/package.json +12 -6
  91. package/scripts/postinstall.js +27 -0
  92. package/scripts/rust-distribution.js +23 -14
  93. package/src/agent/agent-command-proofs-context.js +35 -45
  94. package/src/agent/agent-command-proofs-context.ts +87 -0
  95. package/src/agent/agent-config-settings.js +19 -0
  96. package/src/agent/agent-config-settings.ts +41 -0
  97. package/src/agent/agent-config.js +122 -231
  98. package/src/agent/agent-config.ts +285 -0
  99. package/src/agent/agent-context-builder.js +38 -273
  100. package/src/agent/agent-context-builder.ts +51 -0
  101. package/src/agent/agent-context-environment-sections.js +105 -0
  102. package/src/agent/agent-context-environment-sections.ts +134 -0
  103. package/src/agent/agent-context-packs.js +165 -0
  104. package/src/agent/agent-context-packs.ts +296 -0
  105. package/src/agent/agent-context-prompt-sections.js +100 -0
  106. package/src/agent/agent-context-prompt-sections.ts +148 -0
  107. package/src/agent/agent-context-sections.js +25 -334
  108. package/src/agent/agent-context-sections.ts +36 -0
  109. package/src/agent/agent-context-sources.js +96 -149
  110. package/src/agent/agent-context-sources.ts +253 -0
  111. package/src/agent/agent-context-types.js +2 -0
  112. package/src/agent/agent-context-types.ts +132 -0
  113. package/src/agent/agent-context-validation-sections.js +73 -0
  114. package/src/agent/agent-context-validation-sections.ts +129 -0
  115. package/src/agent/agent-input-injector.js +99 -118
  116. package/src/agent/agent-input-injector.ts +195 -0
  117. package/src/agent/agent-liveness-poll.js +74 -78
  118. package/src/agent/agent-liveness-poll.ts +163 -0
  119. package/src/agent/agent-quality-gate-schema.js +77 -86
  120. package/src/agent/agent-quality-gate-schema.ts +135 -0
  121. package/src/agent/agent-quality-gates-context.js +44 -50
  122. package/src/agent/agent-quality-gates-context.ts +91 -0
  123. package/src/agent/agent-stuck-detector.js +171 -239
  124. package/src/agent/agent-stuck-detector.ts +288 -0
  125. package/src/agent/agent-trigger-evaluator.js +29 -46
  126. package/src/agent/agent-trigger-evaluator.ts +98 -0
  127. package/src/agent/context-metrics.js +110 -141
  128. package/src/agent/context-metrics.ts +261 -0
  129. package/src/agent/context-pack-builder.js +72 -358
  130. package/src/agent/context-pack-builder.ts +105 -0
  131. package/src/agent/context-pack-core.js +70 -0
  132. package/src/agent/context-pack-core.ts +96 -0
  133. package/src/agent/context-pack-selection.js +119 -0
  134. package/src/agent/context-pack-selection.ts +187 -0
  135. package/src/agent/context-pack-truncation.js +139 -0
  136. package/src/agent/context-pack-truncation.ts +208 -0
  137. package/src/agent/context-pack-types.js +2 -0
  138. package/src/agent/context-pack-types.ts +98 -0
  139. package/src/agent/context-replay-policy.js +30 -39
  140. package/src/agent/context-replay-policy.ts +71 -0
  141. package/src/agent/critical-agent-policy.js +6 -10
  142. package/src/agent/critical-agent-policy.ts +20 -0
  143. package/src/agent/guidance-queue.js +74 -87
  144. package/src/agent/guidance-queue.ts +166 -0
  145. package/src/agent/output-extraction-error-detail.js +45 -0
  146. package/src/agent/output-extraction-error-detail.ts +49 -0
  147. package/src/agent/output-extraction-failures.js +125 -0
  148. package/src/agent/output-extraction-failures.ts +149 -0
  149. package/src/agent/output-extraction-json.js +234 -0
  150. package/src/agent/output-extraction-json.ts +235 -0
  151. package/src/agent/output-extraction-pi.js +124 -0
  152. package/src/agent/output-extraction-pi.ts +137 -0
  153. package/src/agent/output-extraction-types.js +2 -0
  154. package/src/agent/output-extraction-types.ts +49 -0
  155. package/src/agent/output-extraction.js +17 -617
  156. package/src/agent/output-extraction.ts +30 -0
  157. package/src/agent/output-reformatter-errors.js +83 -0
  158. package/src/agent/output-reformatter-errors.ts +106 -0
  159. package/src/agent/output-reformatter-types.js +2 -0
  160. package/src/agent/output-reformatter-types.ts +86 -0
  161. package/src/agent/output-reformatter.js +140 -185
  162. package/src/agent/output-reformatter.ts +238 -0
  163. package/src/agent/pi-terminal-lifecycle-types.js +2 -0
  164. package/src/agent/pi-terminal-lifecycle-types.ts +41 -0
  165. package/src/agent/pi-terminal-lifecycle.js +186 -206
  166. package/src/agent/pi-terminal-lifecycle.ts +297 -0
  167. package/src/agent/provider-control-plane.js +22 -21
  168. package/src/agent/provider-control-plane.ts +52 -0
  169. package/src/agent/provider-terminal-failure-types.js +2 -0
  170. package/src/agent/provider-terminal-failure-types.ts +60 -0
  171. package/src/agent/provider-terminal-failure.js +194 -191
  172. package/src/agent/provider-terminal-failure.ts +262 -0
  173. package/src/agent/rate-limit-backoff.js +31 -74
  174. package/src/agent/rate-limit-backoff.ts +71 -0
  175. package/src/agent/schema-utils.js +85 -125
  176. package/src/agent/schema-utils.ts +148 -0
  177. package/src/agent/structured-output-error.js +34 -33
  178. package/src/agent/structured-output-error.ts +105 -0
  179. package/src/agent/validation-platform.js +27 -27
  180. package/src/agent/validation-platform.ts +49 -0
  181. package/src/attach/attach-client.js +232 -405
  182. package/src/attach/attach-client.ts +300 -0
  183. package/src/attach/attach-server-cleanup.js +43 -0
  184. package/src/attach/attach-server-cleanup.ts +39 -0
  185. package/src/attach/attach-server-clients.js +117 -0
  186. package/src/attach/attach-server-clients.ts +122 -0
  187. package/src/attach/attach-server-events.js +38 -0
  188. package/src/attach/attach-server-events.ts +36 -0
  189. package/src/attach/attach-server-pty.js +45 -0
  190. package/src/attach/attach-server-pty.ts +64 -0
  191. package/src/attach/attach-server-runtime.js +73 -0
  192. package/src/attach/attach-server-runtime.ts +62 -0
  193. package/src/attach/attach-server-socket.js +28 -0
  194. package/src/attach/attach-server-socket.ts +23 -0
  195. package/src/attach/attach-server-types.js +2 -0
  196. package/src/attach/attach-server-types.ts +82 -0
  197. package/src/attach/attach-server.js +106 -523
  198. package/src/attach/attach-server.ts +158 -0
  199. package/src/attach/index.js +18 -35
  200. package/src/attach/index.ts +18 -0
  201. package/src/attach/protocol.js +95 -184
  202. package/src/attach/protocol.ts +181 -0
  203. package/src/attach/ring-buffer.js +76 -102
  204. package/src/attach/ring-buffer.ts +109 -0
  205. package/src/attach/send-input.js +64 -75
  206. package/src/attach/send-input.ts +94 -0
  207. package/src/attach/socket-discovery.js +164 -218
  208. package/src/attach/socket-discovery.ts +230 -0
  209. package/src/attach/socket-paths.js +42 -61
  210. package/src/attach/socket-paths.ts +81 -0
  211. package/src/claude-credentials.js +51 -54
  212. package/src/claude-credentials.ts +89 -0
  213. package/src/cluster/generated/protocol-schema.ts +1 -1
  214. package/src/cluster/generated/protocol.ts +2 -1
  215. package/src/command-proofs.js +110 -141
  216. package/src/command-proofs.ts +216 -0
  217. package/src/config-router.js +81 -73
  218. package/src/config-router.ts +131 -0
  219. package/src/copy-worker.js +53 -29
  220. package/src/copy-worker.ts +75 -0
  221. package/src/darwin-keychain-boundary.js +80 -111
  222. package/src/darwin-keychain-boundary.ts +148 -0
  223. package/src/guidance-topics.js +4 -5
  224. package/src/guidance-topics.ts +10 -0
  225. package/src/input-helpers.js +33 -54
  226. package/src/input-helpers.ts +58 -0
  227. package/src/ledger-sequence.js +45 -48
  228. package/src/ledger-sequence.ts +63 -0
  229. package/src/legacy-lib/clusters-registry.ts +40 -0
  230. package/src/legacy-lib/completion.ts +148 -0
  231. package/src/legacy-lib/compose-utils.ts +102 -0
  232. package/src/legacy-lib/detached-startup.ts +449 -0
  233. package/src/legacy-lib/docker-config.ts +282 -0
  234. package/src/legacy-lib/docker-env-auth.ts +116 -0
  235. package/src/legacy-lib/git-remote-utils.ts +244 -0
  236. package/src/legacy-lib/id-detector.ts +57 -0
  237. package/src/legacy-lib/js-yaml.d.ts +3 -0
  238. package/src/legacy-lib/omelette.d.ts +15 -0
  239. package/src/legacy-lib/path-check.ts +89 -0
  240. package/src/legacy-lib/process-liveness.ts +36 -0
  241. package/src/legacy-lib/provider-credential-path.ts +57 -0
  242. package/src/legacy-lib/provider-defaults.ts +114 -0
  243. package/src/legacy-lib/provider-detection.ts +67 -0
  244. package/src/legacy-lib/provider-names.ts +126 -0
  245. package/src/legacy-lib/repo-settings.ts +88 -0
  246. package/src/legacy-lib/run-mode.ts +58 -0
  247. package/src/legacy-lib/run-plan.ts +49 -0
  248. package/src/legacy-lib/settings/claude-auth.ts +80 -0
  249. package/src/legacy-lib/settings-defaults.ts +212 -0
  250. package/src/legacy-lib/settings-error.ts +8 -0
  251. package/src/legacy-lib/settings-issue-providers.ts +18 -0
  252. package/src/legacy-lib/settings-models.ts +124 -0
  253. package/src/legacy-lib/settings-storage.ts +277 -0
  254. package/src/legacy-lib/settings-validation.ts +220 -0
  255. package/src/legacy-lib/settings.ts +87 -0
  256. package/src/legacy-lib/setup-apply-types.ts +70 -0
  257. package/src/legacy-lib/setup-apply.ts +456 -0
  258. package/src/legacy-lib/setup-journal.ts +185 -0
  259. package/src/legacy-lib/setup-plan-types.ts +96 -0
  260. package/src/legacy-lib/setup-plan.ts +500 -0
  261. package/src/legacy-lib/setup-undo.ts +142 -0
  262. package/src/legacy-lib/start-cluster-config.ts +124 -0
  263. package/src/legacy-lib/start-cluster-environment.ts +165 -0
  264. package/src/legacy-lib/start-cluster-run-options.ts +279 -0
  265. package/src/legacy-lib/start-cluster.ts +237 -0
  266. package/src/legacy-lib/stream-json-parser.ts +88 -0
  267. package/src/message-buffer.js +55 -71
  268. package/src/message-buffer.ts +107 -0
  269. package/src/message-bus-bridge.js +92 -133
  270. package/src/message-bus-bridge.ts +149 -0
  271. package/src/name-generator-shared.js +220 -0
  272. package/src/name-generator-shared.ts +231 -0
  273. package/src/name-generator.js +8 -217
  274. package/src/name-generator.ts +27 -0
  275. package/src/omp-blob-root.js +83 -64
  276. package/src/omp-blob-root.ts +116 -0
  277. package/src/omp-config-overlay.js +65 -38
  278. package/src/omp-config-overlay.ts +110 -0
  279. package/src/omp-execution-fingerprint.js +38 -43
  280. package/src/omp-execution-fingerprint.ts +92 -0
  281. package/src/omp-session-limits.js +10 -15
  282. package/src/omp-session-limits.ts +53 -0
  283. package/src/omp-session-partition.js +2 -2
  284. package/src/omp-session-verifier.js +1 -1
  285. package/src/orchestrator.js +19 -4
  286. package/src/providers/anthropic/index.js +3 -1
  287. package/src/providers/anthropic/index.ts +13 -0
  288. package/src/providers/capabilities.js +19 -27
  289. package/src/providers/capabilities.ts +44 -0
  290. package/src/providers/google/index.js +3 -1
  291. package/src/providers/google/index.ts +13 -0
  292. package/src/providers/openai/index.js +3 -1
  293. package/src/providers/openai/index.ts +13 -0
  294. package/src/providers/opencode/index.js +3 -1
  295. package/src/providers/opencode/index.ts +13 -0
  296. package/src/quality-gates.js +67 -127
  297. package/src/quality-gates.ts +149 -0
  298. package/src/repo-settings-access.js +40 -0
  299. package/src/repo-settings-access.ts +64 -0
  300. package/src/schemas/sub-cluster.js +127 -183
  301. package/src/schemas/sub-cluster.ts +238 -0
  302. package/src/state-snapshot-normalization.js +224 -0
  303. package/src/state-snapshot-normalization.ts +222 -0
  304. package/src/state-snapshot.js +192 -359
  305. package/src/state-snapshot.ts +291 -0
  306. package/src/state-snapshotter.js +118 -130
  307. package/src/state-snapshotter.ts +167 -0
  308. package/src/sub-cluster-wrapper.js +4 -13
  309. package/src/task-run-model-args.js +87 -124
  310. package/src/task-run-model-args.ts +204 -0
  311. package/src/task-runner.js +5 -25
  312. package/src/task-runner.ts +28 -0
  313. package/src/task-startup-error.js +73 -58
  314. package/src/task-startup-error.ts +126 -0
  315. package/src/template-validation/consensus-gate-contracts.js +2 -0
  316. package/src/template-validation/consensus-gate-contracts.ts +70 -0
  317. package/src/template-validation/consensus-gate-scenarios.js +76 -0
  318. package/src/template-validation/consensus-gate-scenarios.ts +130 -0
  319. package/src/template-validation/consensus-gate-stage.js +34 -0
  320. package/src/template-validation/consensus-gate-stage.ts +56 -0
  321. package/src/template-validation/random-topology-contracts.js +2 -0
  322. package/src/template-validation/random-topology-contracts.ts +54 -0
  323. package/src/template-validation/random-topology-dispatch.js +25 -0
  324. package/src/template-validation/random-topology-dispatch.ts +33 -0
  325. package/src/template-validation/random-topology-message-loop.js +53 -0
  326. package/src/template-validation/random-topology-message-loop.ts +73 -0
  327. package/src/template-validation/random-topology-operations.js +79 -0
  328. package/src/template-validation/random-topology-operations.ts +101 -0
  329. package/src/template-validation/random-topology-runtime.js +25 -0
  330. package/src/template-validation/random-topology-runtime.ts +43 -0
  331. package/src/template-validation/random-topology-scenario.js +52 -0
  332. package/src/template-validation/random-topology-scenario.ts +57 -0
  333. package/src/template-validation/random-topology-schema.js +159 -0
  334. package/src/template-validation/random-topology-schema.ts +190 -0
  335. package/src/template-validation/random-topology-state.js +28 -0
  336. package/src/template-validation/random-topology-state.ts +30 -0
  337. package/src/template-validation/random-topology-trigger-evaluation.js +45 -0
  338. package/src/template-validation/random-topology-trigger-evaluation.ts +65 -0
  339. package/src/template-validation/random-topology-trigger.js +75 -0
  340. package/src/template-validation/random-topology-trigger.ts +88 -0
  341. package/src/template-validation/report-formatter.js +40 -46
  342. package/src/template-validation/report-formatter.ts +101 -0
  343. package/src/template-validation/simulate-consensus-gates.js +111 -302
  344. package/src/template-validation/simulate-consensus-gates.ts +196 -0
  345. package/src/template-validation/simulate-random-topology.js +26 -519
  346. package/src/template-validation/simulate-random-topology.ts +57 -0
  347. package/src/template-validation/simulate-two-stage-validation.js +41 -265
  348. package/src/template-validation/simulate-two-stage-validation.ts +55 -0
  349. package/src/template-validation/simulation-agent-runtime.js +25 -0
  350. package/src/template-validation/simulation-agent-runtime.ts +40 -0
  351. package/src/template-validation/simulation-agent.js +29 -0
  352. package/src/template-validation/simulation-agent.ts +73 -0
  353. package/src/template-validation/simulation-runtime.js +34 -0
  354. package/src/template-validation/simulation-runtime.ts +72 -0
  355. package/src/template-validation/two-stage-contracts.js +2 -0
  356. package/src/template-validation/two-stage-contracts.ts +41 -0
  357. package/src/template-validation/two-stage-inputs.js +21 -0
  358. package/src/template-validation/two-stage-inputs.ts +29 -0
  359. package/src/template-validation/two-stage-results.js +30 -0
  360. package/src/template-validation/two-stage-results.ts +40 -0
  361. package/src/template-validation/two-stage-scenario.js +86 -0
  362. package/src/template-validation/two-stage-scenario.ts +120 -0
  363. package/src/worktree-claude-config.js +182 -220
  364. package/src/worktree-claude-config.ts +272 -0
  365. package/src/worktree-tooling-env.js +103 -125
  366. package/src/worktree-tooling-env.ts +142 -0
  367. package/task-lib/completion.js +2 -3
  368. package/task-lib/completion.ts +9 -0
  369. package/task-lib/config.js +1 -4
  370. package/task-lib/config.ts +11 -0
  371. package/task-lib/name-generator.js +4 -226
  372. package/task-lib/name-generator.ts +11 -0
  373. package/task-lib/omp-session-cleanup.js +1 -1
  374. package/task-lib/omp-storage-root.js +8 -12
  375. package/task-lib/omp-storage-root.ts +62 -0
  376. package/task-lib/process-termination.js +143 -166
  377. 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;