@the-open-engine/zeroshot 5.4.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 (295) hide show
  1. package/CHANGELOG.md +539 -0
  2. package/LICENSE +21 -0
  3. package/README.md +508 -0
  4. package/cli/commands/inspect-render.js +135 -0
  5. package/cli/commands/inspect.js +294 -0
  6. package/cli/commands/providers.js +149 -0
  7. package/cli/index.js +5431 -0
  8. package/cli/lib/first-run.js +211 -0
  9. package/cli/lib/update-checker.js +281 -0
  10. package/cli/message-formatter-utils.js +75 -0
  11. package/cli/message-formatters-normal.js +275 -0
  12. package/cli/message-formatters-watch.js +185 -0
  13. package/cluster-templates/base-templates/debug-workflow.json +422 -0
  14. package/cluster-templates/base-templates/full-workflow.json +727 -0
  15. package/cluster-templates/base-templates/heavy-validation.json +272 -0
  16. package/cluster-templates/base-templates/quick-validation.json +285 -0
  17. package/cluster-templates/base-templates/single-worker.json +71 -0
  18. package/cluster-templates/base-templates/worker-validator.json +230 -0
  19. package/cluster-templates/conductor-bootstrap.json +130 -0
  20. package/docker/zeroshot-cluster/Dockerfile +153 -0
  21. package/docker/zeroshot-cluster/pre-baked-deps.json +28 -0
  22. package/lib/agent-cli-provider/adapters/claude-parser.d.ts +3 -0
  23. package/lib/agent-cli-provider/adapters/claude-parser.d.ts.map +1 -0
  24. package/lib/agent-cli-provider/adapters/claude-parser.js +122 -0
  25. package/lib/agent-cli-provider/adapters/claude-parser.js.map +1 -0
  26. package/lib/agent-cli-provider/adapters/claude-recovery.d.ts +15 -0
  27. package/lib/agent-cli-provider/adapters/claude-recovery.d.ts.map +1 -0
  28. package/lib/agent-cli-provider/adapters/claude-recovery.js +165 -0
  29. package/lib/agent-cli-provider/adapters/claude-recovery.js.map +1 -0
  30. package/lib/agent-cli-provider/adapters/claude.d.ts +3 -0
  31. package/lib/agent-cli-provider/adapters/claude.d.ts.map +1 -0
  32. package/lib/agent-cli-provider/adapters/claude.js +181 -0
  33. package/lib/agent-cli-provider/adapters/claude.js.map +1 -0
  34. package/lib/agent-cli-provider/adapters/codex-parser.d.ts +3 -0
  35. package/lib/agent-cli-provider/adapters/codex-parser.d.ts.map +1 -0
  36. package/lib/agent-cli-provider/adapters/codex-parser.js +192 -0
  37. package/lib/agent-cli-provider/adapters/codex-parser.js.map +1 -0
  38. package/lib/agent-cli-provider/adapters/codex.d.ts +3 -0
  39. package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -0
  40. package/lib/agent-cli-provider/adapters/codex.js +151 -0
  41. package/lib/agent-cli-provider/adapters/codex.js.map +1 -0
  42. package/lib/agent-cli-provider/adapters/common.d.ts +28 -0
  43. package/lib/agent-cli-provider/adapters/common.d.ts.map +1 -0
  44. package/lib/agent-cli-provider/adapters/common.js +71 -0
  45. package/lib/agent-cli-provider/adapters/common.js.map +1 -0
  46. package/lib/agent-cli-provider/adapters/gemini.d.ts +3 -0
  47. package/lib/agent-cli-provider/adapters/gemini.d.ts.map +1 -0
  48. package/lib/agent-cli-provider/adapters/gemini.js +176 -0
  49. package/lib/agent-cli-provider/adapters/gemini.js.map +1 -0
  50. package/lib/agent-cli-provider/adapters/index.d.ts +9 -0
  51. package/lib/agent-cli-provider/adapters/index.d.ts.map +1 -0
  52. package/lib/agent-cli-provider/adapters/index.js +95 -0
  53. package/lib/agent-cli-provider/adapters/index.js.map +1 -0
  54. package/lib/agent-cli-provider/adapters/opencode.d.ts +3 -0
  55. package/lib/agent-cli-provider/adapters/opencode.d.ts.map +1 -0
  56. package/lib/agent-cli-provider/adapters/opencode.js +228 -0
  57. package/lib/agent-cli-provider/adapters/opencode.js.map +1 -0
  58. package/lib/agent-cli-provider/contract-actions.d.ts +5 -0
  59. package/lib/agent-cli-provider/contract-actions.d.ts.map +1 -0
  60. package/lib/agent-cli-provider/contract-actions.js +140 -0
  61. package/lib/agent-cli-provider/contract-actions.js.map +1 -0
  62. package/lib/agent-cli-provider/contract-env.d.ts +11 -0
  63. package/lib/agent-cli-provider/contract-env.d.ts.map +1 -0
  64. package/lib/agent-cli-provider/contract-env.js +113 -0
  65. package/lib/agent-cli-provider/contract-env.js.map +1 -0
  66. package/lib/agent-cli-provider/contract-envelope.d.ts +49 -0
  67. package/lib/agent-cli-provider/contract-envelope.d.ts.map +1 -0
  68. package/lib/agent-cli-provider/contract-envelope.js +52 -0
  69. package/lib/agent-cli-provider/contract-envelope.js.map +1 -0
  70. package/lib/agent-cli-provider/contract-errors.d.ts +22 -0
  71. package/lib/agent-cli-provider/contract-errors.d.ts.map +1 -0
  72. package/lib/agent-cli-provider/contract-errors.js +71 -0
  73. package/lib/agent-cli-provider/contract-errors.js.map +1 -0
  74. package/lib/agent-cli-provider/contract-fallback.d.ts +7 -0
  75. package/lib/agent-cli-provider/contract-fallback.d.ts.map +1 -0
  76. package/lib/agent-cli-provider/contract-fallback.js +102 -0
  77. package/lib/agent-cli-provider/contract-fallback.js.map +1 -0
  78. package/lib/agent-cli-provider/contract-invoke.d.ts +5 -0
  79. package/lib/agent-cli-provider/contract-invoke.d.ts.map +1 -0
  80. package/lib/agent-cli-provider/contract-invoke.js +89 -0
  81. package/lib/agent-cli-provider/contract-invoke.js.map +1 -0
  82. package/lib/agent-cli-provider/contract-options.d.ts +3 -0
  83. package/lib/agent-cli-provider/contract-options.d.ts.map +1 -0
  84. package/lib/agent-cli-provider/contract-options.js +140 -0
  85. package/lib/agent-cli-provider/contract-options.js.map +1 -0
  86. package/lib/agent-cli-provider/contract-parse.d.ts +15 -0
  87. package/lib/agent-cli-provider/contract-parse.d.ts.map +1 -0
  88. package/lib/agent-cli-provider/contract-parse.js +81 -0
  89. package/lib/agent-cli-provider/contract-parse.js.map +1 -0
  90. package/lib/agent-cli-provider/contract-support.d.ts +18 -0
  91. package/lib/agent-cli-provider/contract-support.d.ts.map +1 -0
  92. package/lib/agent-cli-provider/contract-support.js +154 -0
  93. package/lib/agent-cli-provider/contract-support.js.map +1 -0
  94. package/lib/agent-cli-provider/contract.d.ts +13 -0
  95. package/lib/agent-cli-provider/contract.d.ts.map +1 -0
  96. package/lib/agent-cli-provider/contract.js +30 -0
  97. package/lib/agent-cli-provider/contract.js.map +1 -0
  98. package/lib/agent-cli-provider/env-safety.d.ts +11 -0
  99. package/lib/agent-cli-provider/env-safety.d.ts.map +1 -0
  100. package/lib/agent-cli-provider/env-safety.js +83 -0
  101. package/lib/agent-cli-provider/env-safety.js.map +1 -0
  102. package/lib/agent-cli-provider/errors.d.ts +5 -0
  103. package/lib/agent-cli-provider/errors.d.ts.map +1 -0
  104. package/lib/agent-cli-provider/errors.js +115 -0
  105. package/lib/agent-cli-provider/errors.js.map +1 -0
  106. package/lib/agent-cli-provider/executable.d.ts +3 -0
  107. package/lib/agent-cli-provider/executable.d.ts.map +1 -0
  108. package/lib/agent-cli-provider/executable.js +24 -0
  109. package/lib/agent-cli-provider/executable.js.map +1 -0
  110. package/lib/agent-cli-provider/index.d.ts +8 -0
  111. package/lib/agent-cli-provider/index.d.ts.map +1 -0
  112. package/lib/agent-cli-provider/index.js +31 -0
  113. package/lib/agent-cli-provider/index.js.map +1 -0
  114. package/lib/agent-cli-provider/invoke-evidence.d.ts +4 -0
  115. package/lib/agent-cli-provider/invoke-evidence.d.ts.map +1 -0
  116. package/lib/agent-cli-provider/invoke-evidence.js +17 -0
  117. package/lib/agent-cli-provider/invoke-evidence.js.map +1 -0
  118. package/lib/agent-cli-provider/json.d.ts +16 -0
  119. package/lib/agent-cli-provider/json.d.ts.map +1 -0
  120. package/lib/agent-cli-provider/json.js +110 -0
  121. package/lib/agent-cli-provider/json.js.map +1 -0
  122. package/lib/agent-cli-provider/log-prefix.d.ts +2 -0
  123. package/lib/agent-cli-provider/log-prefix.d.ts.map +1 -0
  124. package/lib/agent-cli-provider/log-prefix.js +22 -0
  125. package/lib/agent-cli-provider/log-prefix.js.map +1 -0
  126. package/lib/agent-cli-provider/process-runner.d.ts +17 -0
  127. package/lib/agent-cli-provider/process-runner.d.ts.map +1 -0
  128. package/lib/agent-cli-provider/process-runner.js +89 -0
  129. package/lib/agent-cli-provider/process-runner.js.map +1 -0
  130. package/lib/agent-cli-provider/redaction.d.ts +9 -0
  131. package/lib/agent-cli-provider/redaction.d.ts.map +1 -0
  132. package/lib/agent-cli-provider/redaction.js +227 -0
  133. package/lib/agent-cli-provider/redaction.js.map +1 -0
  134. package/lib/agent-cli-provider/schema.d.ts +5 -0
  135. package/lib/agent-cli-provider/schema.d.ts.map +1 -0
  136. package/lib/agent-cli-provider/schema.js +136 -0
  137. package/lib/agent-cli-provider/schema.js.map +1 -0
  138. package/lib/agent-cli-provider/single-agent-runtime.d.ts +15 -0
  139. package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -0
  140. package/lib/agent-cli-provider/single-agent-runtime.js +228 -0
  141. package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -0
  142. package/lib/agent-cli-provider/types.d.ts +194 -0
  143. package/lib/agent-cli-provider/types.d.ts.map +1 -0
  144. package/lib/agent-cli-provider/types.js +12 -0
  145. package/lib/agent-cli-provider/types.js.map +1 -0
  146. package/lib/completion.js +174 -0
  147. package/lib/detached-startup.js +220 -0
  148. package/lib/docker-config.js +220 -0
  149. package/lib/git-remote-utils.js +165 -0
  150. package/lib/id-detector.js +55 -0
  151. package/lib/provider-defaults.js +62 -0
  152. package/lib/provider-detection.js +59 -0
  153. package/lib/provider-names.js +57 -0
  154. package/lib/repo-settings.js +69 -0
  155. package/lib/settings/claude-auth.js +78 -0
  156. package/lib/settings.js +542 -0
  157. package/lib/start-cluster.js +321 -0
  158. package/lib/stream-json-parser.js +67 -0
  159. package/package.json +162 -0
  160. package/scripts/fix-node-pty-permissions.js +75 -0
  161. package/scripts/record-demo.sh +279 -0
  162. package/scripts/setup-merge-queue.sh +170 -0
  163. package/scripts/test-install.sh +40 -0
  164. package/scripts/validate-templates.js +107 -0
  165. package/src/agent/agent-config.js +266 -0
  166. package/src/agent/agent-context-builder.js +189 -0
  167. package/src/agent/agent-context-sections.js +338 -0
  168. package/src/agent/agent-context-sources.js +147 -0
  169. package/src/agent/agent-hook-executor.js +721 -0
  170. package/src/agent/agent-input-injector.js +141 -0
  171. package/src/agent/agent-lifecycle.js +982 -0
  172. package/src/agent/agent-quality-gate-schema.js +93 -0
  173. package/src/agent/agent-quality-gates-context.js +51 -0
  174. package/src/agent/agent-stuck-detector.js +256 -0
  175. package/src/agent/agent-task-executor.js +2028 -0
  176. package/src/agent/agent-trigger-evaluator.js +67 -0
  177. package/src/agent/context-metrics.js +160 -0
  178. package/src/agent/context-pack-builder.js +367 -0
  179. package/src/agent/context-replay-policy.js +51 -0
  180. package/src/agent/guidance-queue.js +77 -0
  181. package/src/agent/output-extraction.js +367 -0
  182. package/src/agent/output-reformatter.js +175 -0
  183. package/src/agent/pr-verification.js +653 -0
  184. package/src/agent/rate-limit-backoff.js +82 -0
  185. package/src/agent/schema-utils.js +146 -0
  186. package/src/agent/validation-platform.js +35 -0
  187. package/src/agent-cli-provider/adapters/claude-parser.ts +133 -0
  188. package/src/agent-cli-provider/adapters/claude-recovery.ts +203 -0
  189. package/src/agent-cli-provider/adapters/claude.ts +247 -0
  190. package/src/agent-cli-provider/adapters/codex-parser.ts +211 -0
  191. package/src/agent-cli-provider/adapters/codex.ts +217 -0
  192. package/src/agent-cli-provider/adapters/common.ts +124 -0
  193. package/src/agent-cli-provider/adapters/gemini.ts +243 -0
  194. package/src/agent-cli-provider/adapters/index.ts +126 -0
  195. package/src/agent-cli-provider/adapters/opencode.ts +286 -0
  196. package/src/agent-cli-provider/contract-actions.ts +150 -0
  197. package/src/agent-cli-provider/contract-env.ts +111 -0
  198. package/src/agent-cli-provider/contract-envelope.ts +110 -0
  199. package/src/agent-cli-provider/contract-errors.ts +66 -0
  200. package/src/agent-cli-provider/contract-fallback.ts +121 -0
  201. package/src/agent-cli-provider/contract-invoke.ts +104 -0
  202. package/src/agent-cli-provider/contract-options.ts +173 -0
  203. package/src/agent-cli-provider/contract-parse.ts +94 -0
  204. package/src/agent-cli-provider/contract-support.ts +167 -0
  205. package/src/agent-cli-provider/contract.ts +56 -0
  206. package/src/agent-cli-provider/env-safety.ts +82 -0
  207. package/src/agent-cli-provider/errors.ts +122 -0
  208. package/src/agent-cli-provider/executable.ts +24 -0
  209. package/src/agent-cli-provider/index.ts +83 -0
  210. package/src/agent-cli-provider/invoke-evidence.ts +18 -0
  211. package/src/agent-cli-provider/json.ts +114 -0
  212. package/src/agent-cli-provider/log-prefix.ts +20 -0
  213. package/src/agent-cli-provider/process-runner.ts +145 -0
  214. package/src/agent-cli-provider/redaction.ts +282 -0
  215. package/src/agent-cli-provider/schema.ts +115 -0
  216. package/src/agent-cli-provider/single-agent-runtime.ts +311 -0
  217. package/src/agent-cli-provider/types.ts +237 -0
  218. package/src/agent-wrapper.js +615 -0
  219. package/src/agents/git-pusher-template.js +705 -0
  220. package/src/attach/attach-client.js +438 -0
  221. package/src/attach/attach-server.js +543 -0
  222. package/src/attach/index.js +37 -0
  223. package/src/attach/protocol.js +220 -0
  224. package/src/attach/ring-buffer.js +121 -0
  225. package/src/attach/send-input.js +88 -0
  226. package/src/attach/socket-discovery.js +267 -0
  227. package/src/claude-task-runner.js +661 -0
  228. package/src/config-router.js +89 -0
  229. package/src/config-validator.js +2202 -0
  230. package/src/copy-worker.js +43 -0
  231. package/src/guidance-topics.js +10 -0
  232. package/src/input-helpers.js +65 -0
  233. package/src/isolation-manager.js +1734 -0
  234. package/src/issue-providers/README.md +305 -0
  235. package/src/issue-providers/azure-devops-provider.js +307 -0
  236. package/src/issue-providers/base-provider.js +232 -0
  237. package/src/issue-providers/github-provider.js +210 -0
  238. package/src/issue-providers/gitlab-provider.js +262 -0
  239. package/src/issue-providers/index.js +196 -0
  240. package/src/issue-providers/jira-provider.js +260 -0
  241. package/src/ledger.js +692 -0
  242. package/src/lib/gc.js +232 -0
  243. package/src/lib/safe-exec.js +88 -0
  244. package/src/logic-engine.js +201 -0
  245. package/src/message-buffer.js +81 -0
  246. package/src/message-bus-bridge.js +144 -0
  247. package/src/message-bus.js +256 -0
  248. package/src/name-generator.js +232 -0
  249. package/src/orchestrator.js +3924 -0
  250. package/src/preflight.js +712 -0
  251. package/src/process-metrics.js +608 -0
  252. package/src/providers/anthropic/index.js +3 -0
  253. package/src/providers/base-provider.js +355 -0
  254. package/src/providers/capabilities.js +60 -0
  255. package/src/providers/google/index.js +3 -0
  256. package/src/providers/index.js +293 -0
  257. package/src/providers/openai/index.js +3 -0
  258. package/src/providers/opencode/index.js +3 -0
  259. package/src/quality-gates.js +143 -0
  260. package/src/schemas/sub-cluster.js +208 -0
  261. package/src/state-snapshot.js +398 -0
  262. package/src/state-snapshotter.js +142 -0
  263. package/src/status-footer.js +1026 -0
  264. package/src/sub-cluster-wrapper.js +693 -0
  265. package/src/task-runner.js +30 -0
  266. package/src/template-resolver.js +425 -0
  267. package/src/template-validation/index.js +338 -0
  268. package/src/template-validation/simulate-consensus-gates.js +324 -0
  269. package/src/template-validation/simulate-random-topology.js +541 -0
  270. package/src/template-validation/simulate-two-stage-validation.js +270 -0
  271. package/src/worktree-claude-config.js +135 -0
  272. package/src/worktree-tooling-env.js +150 -0
  273. package/task-lib/attachable-watcher.js +381 -0
  274. package/task-lib/commands/clean.js +50 -0
  275. package/task-lib/commands/episodes.js +105 -0
  276. package/task-lib/commands/get-log-path.js +23 -0
  277. package/task-lib/commands/kill.js +32 -0
  278. package/task-lib/commands/list.js +105 -0
  279. package/task-lib/commands/logs.js +439 -0
  280. package/task-lib/commands/resume.js +42 -0
  281. package/task-lib/commands/run.js +57 -0
  282. package/task-lib/commands/schedule.js +105 -0
  283. package/task-lib/commands/scheduler-cmd.js +96 -0
  284. package/task-lib/commands/schedules.js +148 -0
  285. package/task-lib/commands/status.js +44 -0
  286. package/task-lib/commands/unschedule.js +16 -0
  287. package/task-lib/completion.js +9 -0
  288. package/task-lib/config.js +11 -0
  289. package/task-lib/name-generator.js +230 -0
  290. package/task-lib/package.json +3 -0
  291. package/task-lib/provider-helper-runtime.js +29 -0
  292. package/task-lib/runner.js +190 -0
  293. package/task-lib/scheduler.js +252 -0
  294. package/task-lib/store.js +529 -0
  295. package/task-lib/watcher.js +305 -0
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isExecutableResolutionEnvKey = isExecutableResolutionEnvKey;
4
+ exports.isProcessControlEnvKey = isProcessControlEnvKey;
5
+ exports.isUnsafeProviderEnvKey = isUnsafeProviderEnvKey;
6
+ exports.findExecutableResolutionEnvKey = findExecutableResolutionEnvKey;
7
+ exports.findUnsafeProviderEnvKey = findUnsafeProviderEnvKey;
8
+ exports.omitExecutableResolutionEnv = omitExecutableResolutionEnv;
9
+ exports.omitProcessControlEnv = omitProcessControlEnv;
10
+ exports.omitUnsafeProviderEnv = omitUnsafeProviderEnv;
11
+ const EXECUTABLE_RESOLUTION_ENV_KEYS = new Set(['path', 'pathext']);
12
+ const PROCESS_CONTROL_ENV_KEYS = new Set([
13
+ '_java_options',
14
+ 'bash_env',
15
+ 'bun_options',
16
+ 'bun_preload',
17
+ 'classpath',
18
+ 'env',
19
+ 'java_tool_options',
20
+ 'jdk_java_options',
21
+ 'ld_library_path',
22
+ 'ld_preload',
23
+ 'lua_cpath',
24
+ 'lua_init',
25
+ 'lua_path',
26
+ 'node_options',
27
+ 'node_path',
28
+ 'npm_config_node_options',
29
+ 'perl5lib',
30
+ 'perl5opt',
31
+ 'pythonhome',
32
+ 'pythonpath',
33
+ 'pythonstartup',
34
+ 'rubylib',
35
+ 'rubyopt',
36
+ 'zshenv',
37
+ ]);
38
+ const PROCESS_CONTROL_ENV_PREFIXES = ['dyld_', 'ld_', 'node_'];
39
+ function isExecutableResolutionEnvKey(key) {
40
+ return EXECUTABLE_RESOLUTION_ENV_KEYS.has(key.toLowerCase());
41
+ }
42
+ function isProcessControlEnvKey(key) {
43
+ const normalized = key.toLowerCase();
44
+ if (PROCESS_CONTROL_ENV_KEYS.has(normalized))
45
+ return true;
46
+ return PROCESS_CONTROL_ENV_PREFIXES.some((prefix) => normalized.startsWith(prefix));
47
+ }
48
+ function isUnsafeProviderEnvKey(key) {
49
+ return isExecutableResolutionEnvKey(key) || isProcessControlEnvKey(key);
50
+ }
51
+ function findExecutableResolutionEnvKey(env) {
52
+ for (const key of Object.keys(env)) {
53
+ if (isExecutableResolutionEnvKey(key))
54
+ return key;
55
+ }
56
+ return null;
57
+ }
58
+ function findUnsafeProviderEnvKey(env) {
59
+ for (const key of Object.keys(env)) {
60
+ if (isUnsafeProviderEnvKey(key))
61
+ return key;
62
+ }
63
+ return null;
64
+ }
65
+ function omitEnvKeys(env, isUnsafe) {
66
+ const result = {};
67
+ for (const [key, value] of Object.entries(env)) {
68
+ if (value === undefined || isUnsafe(key))
69
+ continue;
70
+ result[key] = value;
71
+ }
72
+ return result;
73
+ }
74
+ function omitExecutableResolutionEnv(env) {
75
+ return omitEnvKeys(env, isExecutableResolutionEnvKey);
76
+ }
77
+ function omitProcessControlEnv(env) {
78
+ return omitEnvKeys(env, isProcessControlEnvKey);
79
+ }
80
+ function omitUnsafeProviderEnv(env) {
81
+ return omitEnvKeys(env, isUnsafeProviderEnvKey);
82
+ }
83
+ //# sourceMappingURL=env-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-safety.js","sourceRoot":"","sources":["../../src/agent-cli-provider/env-safety.ts"],"names":[],"mappings":";;AA+BA,oEAEC;AAED,wDAIC;AAED,wDAEC;AAED,wEAKC;AAED,4DAKC;AAcD,kEAEC;AAED,sDAEC;AAED,sDAEC;AAjFD,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AACpE,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACvC,eAAe;IACf,UAAU;IACV,aAAa;IACb,aAAa;IACb,WAAW;IACX,KAAK;IACL,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,YAAY;IACZ,WAAW;IACX,UAAU;IACV,UAAU;IACV,cAAc;IACd,WAAW;IACX,yBAAyB;IACzB,UAAU;IACV,UAAU;IACV,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,SAAS;IACT,SAAS;IACT,QAAQ;CACT,CAAC,CAAC;AACH,MAAM,4BAA4B,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAI/D,SAAgB,4BAA4B,CAAC,GAAW;IACtD,OAAO,8BAA8B,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,sBAAsB,CAAC,GAAW;IAChD,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,wBAAwB,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,SAAgB,sBAAsB,CAAC,GAAW;IAChD,OAAO,4BAA4B,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,8BAA8B,CAAC,GAAc;IAC3D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,4BAA4B,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,wBAAwB,CAAC,GAAc;IACrD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,IAAI,sBAAsB,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAClB,GAAc,EACd,QAAkC;IAElC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACnD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,2BAA2B,CAAC,GAAc;IACxD,OAAO,WAAW,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAc;IAClD,OAAO,WAAW,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,qBAAqB,CAAC,GAAc;IAClD,OAAO,WAAW,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ErrorClassification } from './types';
2
+ export declare function baseRetryableErrorPatterns(): readonly RegExp[];
3
+ export declare function basePermanentErrorPatterns(): readonly RegExp[];
4
+ export declare function classifyErrorWithPatterns(error: unknown, retryablePatterns: readonly RegExp[], permanentPatterns: readonly RegExp[]): ErrorClassification;
5
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAyDnD,wBAAgB,0BAA0B,IAAI,SAAS,MAAM,EAAE,CAE9D;AAED,wBAAgB,0BAA0B,IAAI,SAAS,MAAM,EAAE,CAE9D;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,iBAAiB,EAAE,SAAS,MAAM,EAAE,GACnC,mBAAmB,CAUrB"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.baseRetryableErrorPatterns = baseRetryableErrorPatterns;
4
+ exports.basePermanentErrorPatterns = basePermanentErrorPatterns;
5
+ exports.classifyErrorWithPatterns = classifyErrorWithPatterns;
6
+ const json_1 = require("./json");
7
+ const BASE_RETRYABLE_PATTERNS = [
8
+ /rate.?limit/i,
9
+ /\b429\b/i,
10
+ /too many requests/i,
11
+ /overloaded/i,
12
+ /temporar(?:y|ily)/i,
13
+ /unavailable/i,
14
+ /try again/i,
15
+ /timeout/i,
16
+ /timed out/i,
17
+ /deadline exceeded/i,
18
+ /connection (?:reset|refused)/i,
19
+ /\b(econnreset|econnrefused|etimedout|eai_again)\b/i,
20
+ /network/i,
21
+ ];
22
+ const BASE_PERMANENT_PATTERNS = [
23
+ /invalid[_ -]?api[_ -]?key/i,
24
+ /api[_ -]?key.*invalid/i,
25
+ /unauthorized/i,
26
+ /forbidden/i,
27
+ /authentication/i,
28
+ /permission denied/i,
29
+ /invalid argument/i,
30
+ /unknown option/i,
31
+ /\busage:\b/i,
32
+ /command not found/i,
33
+ /not recognized as an internal or external command/i,
34
+ /model not found/i,
35
+ /context length exceeded/i,
36
+ /insufficient quota/i,
37
+ ];
38
+ function getStatus(error) {
39
+ if (!(0, json_1.isRecord)(error))
40
+ return null;
41
+ const directStatus = (0, json_1.getNumber)(error, 'status') ?? (0, json_1.getNumber)(error, 'statusCode');
42
+ if (directStatus !== null)
43
+ return directStatus;
44
+ const response = (0, json_1.getRecord)(error, 'response');
45
+ if (response === null)
46
+ return null;
47
+ return (0, json_1.getNumber)(response, 'status') ?? (0, json_1.getNumber)(response, 'statusCode');
48
+ }
49
+ function getCode(error) {
50
+ if (!(0, json_1.isRecord)(error))
51
+ return null;
52
+ return (0, json_1.getString)(error, 'code');
53
+ }
54
+ function firstMatchedPattern(patterns, message) {
55
+ for (const pattern of patterns) {
56
+ if (pattern.test(message))
57
+ return pattern;
58
+ }
59
+ return null;
60
+ }
61
+ function baseRetryableErrorPatterns() {
62
+ return BASE_RETRYABLE_PATTERNS;
63
+ }
64
+ function basePermanentErrorPatterns() {
65
+ return BASE_PERMANENT_PATTERNS;
66
+ }
67
+ function classifyErrorWithPatterns(error, retryablePatterns, permanentPatterns) {
68
+ const statusClassification = classifyStatus(getStatus(error));
69
+ if (statusClassification !== null)
70
+ return statusClassification;
71
+ const codeClassification = classifyCode(getCode(error));
72
+ if (codeClassification !== null)
73
+ return codeClassification;
74
+ const message = (0, json_1.unknownToMessage)(error).trim();
75
+ if (!message)
76
+ return { retryable: true, kind: 'unknown-retryable' };
77
+ return classifyMessage(message, retryablePatterns, permanentPatterns);
78
+ }
79
+ function classifyStatus(status) {
80
+ if (typeof status !== 'number')
81
+ return null;
82
+ if (status === 429 || status >= 500)
83
+ return { retryable: true, kind: 'status-retryable' };
84
+ if (status >= 400 && status < 500)
85
+ return { retryable: false, kind: 'status-permanent' };
86
+ return null;
87
+ }
88
+ function classifyCode(code) {
89
+ if (typeof code !== 'string')
90
+ return null;
91
+ if (/\b(econnreset|econnrefused|etimedout|eai_again)\b/i.test(code)) {
92
+ return { retryable: true, kind: 'code-retryable', matchedPattern: 'network-code' };
93
+ }
94
+ return null;
95
+ }
96
+ function classifyMessage(message, retryablePatterns, permanentPatterns) {
97
+ const permanent = firstMatchedPattern(permanentPatterns, message);
98
+ if (permanent !== null) {
99
+ return {
100
+ retryable: false,
101
+ kind: 'permanent-pattern',
102
+ matchedPattern: permanent.source,
103
+ };
104
+ }
105
+ const retryable = firstMatchedPattern(retryablePatterns, message);
106
+ if (retryable !== null) {
107
+ return {
108
+ retryable: true,
109
+ kind: 'retryable-pattern',
110
+ matchedPattern: retryable.source,
111
+ };
112
+ }
113
+ return { retryable: true, kind: 'unknown-retryable' };
114
+ }
115
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/agent-cli-provider/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=executable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/executable.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const contract_1 = require("./contract");
5
+ const process_runner_1 = require("./process-runner");
6
+ const json_1 = require("./json");
7
+ async function readStdin() {
8
+ const chunks = [];
9
+ for await (const chunk of process.stdin) {
10
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));
11
+ }
12
+ return Buffer.concat(chunks).toString('utf8');
13
+ }
14
+ async function main() {
15
+ const input = await readStdin();
16
+ const response = await (0, contract_1.runProviderExecutable)(input, { runner: (0, process_runner_1.spawnProcessRunner)() });
17
+ process.stdout.write(`${(0, json_1.stringifyJson)(response.envelope)}\n`);
18
+ process.exitCode = response.exitCode;
19
+ }
20
+ main().catch((error) => {
21
+ process.stderr.write(`${(0, json_1.unknownToMessage)(error)}\n`);
22
+ process.exitCode = 5;
23
+ });
24
+ //# sourceMappingURL=executable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executable.js","sourceRoot":"","sources":["../../src/agent-cli-provider/executable.ts"],"names":[],"mappings":";;;AACA,yCAAmD;AACnD,qDAAsD;AACtD,iCAAyD;AAEzD,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,IAAA,gCAAqB,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAA,mCAAkB,GAAE,EAAE,CAAC,CAAC;IACtF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,oBAAa,EAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;AACvC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,uBAAgB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { buildProviderCommand, classifyProviderError, detectProviderFatalError, detectProviderStreamingModeError, getProviderAdapter, listProviderAdapters, parseProviderChunk, recoverProviderStructuredOutput, resolveModelSpec, supportsProviderStructuredOutputRecovery, NO_MESSAGES_RETURNED, STREAMING_MODE_ERROR, type StreamingModeError, type StructuredOutputRecovery, } from './adapters';
2
+ export { providerExecutableSchemaVersion, runProviderExecutable, type ContractEnvelope, type ContractErrorEnvelope, type ContractErrorObject, type ContractEvidence, type ContractSuccessEnvelope, type ProviderExecutableCommand, type ProviderExecutableOptions, type ProviderExecutableResponse, } from './contract';
3
+ export { spawnProcessRunner, type ProcessResult, type ProcessRunner, type ProcessRunnerOptions, } from './process-runner';
4
+ export { detectRuntimeProviderCliFeatures, prepareSingleAgentProviderCommand, type PreparedSingleAgentProviderCommand, type SingleAgentProviderCommandInput, } from './single-agent-runtime';
5
+ export type { AgentCliProviderHelperMetadata, BuildProviderCommandOptions, CleanupMetadata, CliFeatureOverrides, ClaudeCliFeatures, CodexCliFeatures, CommandSpec, ErrorClassification, ErrorClassificationKind, GeminiCliFeatures, KnownProviderName, LevelModelSpec, LevelOverrides, ModelCatalogEntry, ModelLevel, ModelSpec, OpencodeCliFeatures, OutputEvent, OutputFormat, ProviderAdapter, ProviderAlias, ProviderCliFeatures, ProviderId, RedactionMetadata, ResolvedModelSpec, ResultEvent, TextEvent, ThinkingEvent, ToolCallEvent, ToolResultEvent, WarningMetadata, } from './types';
6
+ import type { AgentCliProviderHelperMetadata } from './types';
7
+ export declare const agentCliProviderHelperMetadata: Readonly<AgentCliProviderHelperMetadata>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,+BAA+B,EAC/B,gBAAgB,EAChB,wCAAwC,EACxC,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,gCAAgC,EAChC,iCAAiC,EACjC,KAAK,kCAAkC,EACvC,KAAK,+BAA+B,GACrC,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,8BAA8B,EAC9B,2BAA2B,EAC3B,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,SAAS,CAAC;AAE9D,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,8BAA8B,CAKnF,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.agentCliProviderHelperMetadata = exports.prepareSingleAgentProviderCommand = exports.detectRuntimeProviderCliFeatures = exports.spawnProcessRunner = exports.runProviderExecutable = exports.providerExecutableSchemaVersion = exports.STREAMING_MODE_ERROR = exports.NO_MESSAGES_RETURNED = exports.supportsProviderStructuredOutputRecovery = exports.resolveModelSpec = exports.recoverProviderStructuredOutput = exports.parseProviderChunk = exports.listProviderAdapters = exports.getProviderAdapter = exports.detectProviderStreamingModeError = exports.detectProviderFatalError = exports.classifyProviderError = exports.buildProviderCommand = void 0;
4
+ var adapters_1 = require("./adapters");
5
+ Object.defineProperty(exports, "buildProviderCommand", { enumerable: true, get: function () { return adapters_1.buildProviderCommand; } });
6
+ Object.defineProperty(exports, "classifyProviderError", { enumerable: true, get: function () { return adapters_1.classifyProviderError; } });
7
+ Object.defineProperty(exports, "detectProviderFatalError", { enumerable: true, get: function () { return adapters_1.detectProviderFatalError; } });
8
+ Object.defineProperty(exports, "detectProviderStreamingModeError", { enumerable: true, get: function () { return adapters_1.detectProviderStreamingModeError; } });
9
+ Object.defineProperty(exports, "getProviderAdapter", { enumerable: true, get: function () { return adapters_1.getProviderAdapter; } });
10
+ Object.defineProperty(exports, "listProviderAdapters", { enumerable: true, get: function () { return adapters_1.listProviderAdapters; } });
11
+ Object.defineProperty(exports, "parseProviderChunk", { enumerable: true, get: function () { return adapters_1.parseProviderChunk; } });
12
+ Object.defineProperty(exports, "recoverProviderStructuredOutput", { enumerable: true, get: function () { return adapters_1.recoverProviderStructuredOutput; } });
13
+ Object.defineProperty(exports, "resolveModelSpec", { enumerable: true, get: function () { return adapters_1.resolveModelSpec; } });
14
+ Object.defineProperty(exports, "supportsProviderStructuredOutputRecovery", { enumerable: true, get: function () { return adapters_1.supportsProviderStructuredOutputRecovery; } });
15
+ Object.defineProperty(exports, "NO_MESSAGES_RETURNED", { enumerable: true, get: function () { return adapters_1.NO_MESSAGES_RETURNED; } });
16
+ Object.defineProperty(exports, "STREAMING_MODE_ERROR", { enumerable: true, get: function () { return adapters_1.STREAMING_MODE_ERROR; } });
17
+ var contract_1 = require("./contract");
18
+ Object.defineProperty(exports, "providerExecutableSchemaVersion", { enumerable: true, get: function () { return contract_1.providerExecutableSchemaVersion; } });
19
+ Object.defineProperty(exports, "runProviderExecutable", { enumerable: true, get: function () { return contract_1.runProviderExecutable; } });
20
+ var process_runner_1 = require("./process-runner");
21
+ Object.defineProperty(exports, "spawnProcessRunner", { enumerable: true, get: function () { return process_runner_1.spawnProcessRunner; } });
22
+ var single_agent_runtime_1 = require("./single-agent-runtime");
23
+ Object.defineProperty(exports, "detectRuntimeProviderCliFeatures", { enumerable: true, get: function () { return single_agent_runtime_1.detectRuntimeProviderCliFeatures; } });
24
+ Object.defineProperty(exports, "prepareSingleAgentProviderCommand", { enumerable: true, get: function () { return single_agent_runtime_1.prepareSingleAgentProviderCommand; } });
25
+ exports.agentCliProviderHelperMetadata = {
26
+ packageName: '@the-open-engine/zeroshot',
27
+ buildOutputDir: 'lib/agent-cli-provider',
28
+ contractVersion: 1,
29
+ adapterVersion: '1',
30
+ };
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent-cli-provider/index.ts"],"names":[],"mappings":";;;AAAA,uCAeoB;AAdlB,gHAAA,oBAAoB,OAAA;AACpB,iHAAA,qBAAqB,OAAA;AACrB,oHAAA,wBAAwB,OAAA;AACxB,4HAAA,gCAAgC,OAAA;AAChC,8GAAA,kBAAkB,OAAA;AAClB,gHAAA,oBAAoB,OAAA;AACpB,8GAAA,kBAAkB,OAAA;AAClB,2HAAA,+BAA+B,OAAA;AAC/B,4GAAA,gBAAgB,OAAA;AAChB,oIAAA,wCAAwC,OAAA;AACxC,gHAAA,oBAAoB,OAAA;AACpB,gHAAA,oBAAoB,OAAA;AAItB,uCAWoB;AAVlB,2HAAA,+BAA+B,OAAA;AAC/B,iHAAA,qBAAqB,OAAA;AAUvB,mDAK0B;AAJxB,oHAAA,kBAAkB,OAAA;AAKpB,+DAKgC;AAJ9B,wIAAA,gCAAgC,OAAA;AAChC,yIAAA,iCAAiC,OAAA;AAyCtB,QAAA,8BAA8B,GAA6C;IACtF,WAAW,EAAE,2BAA2B;IACxC,cAAc,EAAE,wBAAwB;IACxC,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,GAAG;CACpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ProcessResult } from './process-runner';
2
+ import type { ErrorClassification, ProviderAdapter } from './types';
3
+ export declare function providerFailureClassification(adapter: ProviderAdapter, result: ProcessResult): ErrorClassification | null;
4
+ //# sourceMappingURL=invoke-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke-evidence.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/invoke-evidence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEpE,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,eAAe,EACxB,MAAM,EAAE,aAAa,GACpB,mBAAmB,GAAG,IAAI,CAU5B"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.providerFailureClassification = providerFailureClassification;
4
+ const adapters_1 = require("./adapters");
5
+ function providerFailureClassification(adapter, result) {
6
+ if (result.timedOut) {
7
+ return (0, adapters_1.classifyProviderError)(adapter.id, {
8
+ message: `Provider timed out after ${result.timeoutMs ?? 'unknown'}ms`,
9
+ });
10
+ }
11
+ if (result.exitCode === 0 && result.signal === null)
12
+ return null;
13
+ return (0, adapters_1.classifyProviderError)(adapter.id, {
14
+ message: result.stderr || result.stdout || `Provider exited with code ${result.exitCode ?? ''}`,
15
+ });
16
+ }
17
+ //# sourceMappingURL=invoke-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invoke-evidence.js","sourceRoot":"","sources":["../../src/agent-cli-provider/invoke-evidence.ts"],"names":[],"mappings":";;AAIA,sEAaC;AAjBD,yCAAmD;AAInD,SAAgB,6BAA6B,CAC3C,OAAwB,EACxB,MAAqB;IAErB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,IAAA,gCAAqB,EAAC,OAAO,CAAC,EAAE,EAAE;YACvC,OAAO,EAAE,4BAA4B,MAAM,CAAC,SAAS,IAAI,SAAS,IAAI;SACvE,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjE,OAAO,IAAA,gCAAqB,EAAC,OAAO,CAAC,EAAE,EAAE;QACvC,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,6BAA6B,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE;KAChG,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
2
+ export declare function parseJson(value: string): unknown;
3
+ export declare function tryParseJson(value: string): unknown | null;
4
+ export declare function getRecord(record: Record<string, unknown>, key: string): Record<string, unknown> | null;
5
+ export declare function getArray(record: Record<string, unknown>, key: string): readonly unknown[];
6
+ export declare function getString(record: Record<string, unknown>, key: string): string | null;
7
+ export declare function getOptionalString(record: Record<string, unknown>, key: string): string | null | undefined;
8
+ export declare function getStringFromKeys(record: Record<string, unknown>, keys: readonly string[]): string | null;
9
+ export declare function getOrStringFromKeys(record: Record<string, unknown>, keys: readonly string[]): string | null | undefined;
10
+ export declare function getOrStringFromKeysWithFallback(record: Record<string, unknown>, keys: readonly string[], fallback: string | null | undefined): string | null | undefined;
11
+ export declare function getNumber(record: Record<string, unknown>, key: string): number | null;
12
+ export declare function getBoolean(record: Record<string, unknown>, key: string): boolean | null;
13
+ export declare function stringifyJson(value: unknown, space?: number): string;
14
+ export declare function stringifyContent(value: unknown): string;
15
+ export declare function unknownToMessage(error: unknown): string;
16
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/json.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAM1D;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAGhC;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,OAAO,EAAE,CAGzF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,GAAG,SAAS,CAK3B;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,MAAM,GAAG,IAAI,GAAG,SAAS,CAQ3B;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,MAAM,GAAG,IAAI,GAAG,SAAS,CAO3B;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAGvF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQvD"}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRecord = isRecord;
4
+ exports.parseJson = parseJson;
5
+ exports.tryParseJson = tryParseJson;
6
+ exports.getRecord = getRecord;
7
+ exports.getArray = getArray;
8
+ exports.getString = getString;
9
+ exports.getOptionalString = getOptionalString;
10
+ exports.getStringFromKeys = getStringFromKeys;
11
+ exports.getOrStringFromKeys = getOrStringFromKeys;
12
+ exports.getOrStringFromKeysWithFallback = getOrStringFromKeysWithFallback;
13
+ exports.getNumber = getNumber;
14
+ exports.getBoolean = getBoolean;
15
+ exports.stringifyJson = stringifyJson;
16
+ exports.stringifyContent = stringifyContent;
17
+ exports.unknownToMessage = unknownToMessage;
18
+ function isRecord(value) {
19
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
20
+ }
21
+ function parseJson(value) {
22
+ const parsed = JSON.parse(value);
23
+ return parsed;
24
+ }
25
+ function tryParseJson(value) {
26
+ try {
27
+ return parseJson(value);
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ function getRecord(record, key) {
34
+ const value = record[key];
35
+ return isRecord(value) ? value : null;
36
+ }
37
+ function getArray(record, key) {
38
+ const value = record[key];
39
+ return Array.isArray(value) ? value : [];
40
+ }
41
+ function getString(record, key) {
42
+ const value = record[key];
43
+ return typeof value === 'string' ? value : null;
44
+ }
45
+ function getOptionalString(record, key) {
46
+ const value = record[key];
47
+ if (typeof value === 'string')
48
+ return value;
49
+ if (value === null)
50
+ return null;
51
+ return undefined;
52
+ }
53
+ function getStringFromKeys(record, keys) {
54
+ for (const key of keys) {
55
+ const value = getString(record, key);
56
+ if (value !== null)
57
+ return value;
58
+ }
59
+ return null;
60
+ }
61
+ function getOrStringFromKeys(record, keys) {
62
+ for (const key of keys) {
63
+ const value = getOptionalString(record, key);
64
+ if (value)
65
+ return value;
66
+ }
67
+ const lastKey = keys[keys.length - 1];
68
+ return lastKey === undefined ? undefined : getOptionalString(record, lastKey);
69
+ }
70
+ function getOrStringFromKeysWithFallback(record, keys, fallback) {
71
+ for (const key of keys) {
72
+ const value = getOptionalString(record, key);
73
+ if (value)
74
+ return value;
75
+ }
76
+ return fallback;
77
+ }
78
+ function getNumber(record, key) {
79
+ const value = record[key];
80
+ return typeof value === 'number' ? value : null;
81
+ }
82
+ function getBoolean(record, key) {
83
+ const value = record[key];
84
+ return typeof value === 'boolean' ? value : null;
85
+ }
86
+ function stringifyJson(value, space) {
87
+ const serialized = JSON.stringify(value, null, space);
88
+ if (typeof serialized !== 'string') {
89
+ throw new Error('JSON schema must be serializable.');
90
+ }
91
+ return serialized;
92
+ }
93
+ function stringifyContent(value) {
94
+ if (typeof value === 'string')
95
+ return value;
96
+ return stringifyJson(value);
97
+ }
98
+ function unknownToMessage(error) {
99
+ if (error instanceof Error)
100
+ return error.message;
101
+ if (typeof error === 'string')
102
+ return error;
103
+ if (isRecord(error)) {
104
+ const message = error.message;
105
+ if (typeof message === 'string' && message)
106
+ return message;
107
+ }
108
+ return String(error);
109
+ }
110
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/agent-cli-provider/json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function stripTimestampPrefix(line: string): string;
2
+ //# sourceMappingURL=log-prefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-prefix.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/log-prefix.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmBzD"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stripTimestampPrefix = stripTimestampPrefix;
4
+ function stripTimestampPrefix(line) {
5
+ let trimmed = line.trim().replace(/\r$/, '');
6
+ if (!trimmed)
7
+ return '';
8
+ const timestampMatch = /^\[(\d{13})\](.*)$/.exec(trimmed);
9
+ const timestampRemainder = timestampMatch?.[2];
10
+ if (typeof timestampRemainder === 'string') {
11
+ trimmed = timestampRemainder.trimStart();
12
+ }
13
+ if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) {
14
+ const pipeMatch = /^[^|]{1,40}\|\s*(.*)$/.exec(trimmed);
15
+ const afterPipe = pipeMatch?.[1]?.trimStart();
16
+ if (typeof afterPipe === 'string' && (afterPipe.startsWith('{') || afterPipe.startsWith('['))) {
17
+ return afterPipe;
18
+ }
19
+ }
20
+ return trimmed;
21
+ }
22
+ //# sourceMappingURL=log-prefix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-prefix.js","sourceRoot":"","sources":["../../src/agent-cli-provider/log-prefix.ts"],"names":[],"mappings":";;AAAA,oDAmBC;AAnBD,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,MAAM,cAAc,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,kBAAkB,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,OAAO,kBAAkB,KAAK,QAAQ,EAAE,CAAC;QAC3C,OAAO,GAAG,kBAAkB,CAAC,SAAS,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QAC9C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9F,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { CommandSpec } from './types';
2
+ export interface ProcessRunnerOptions {
3
+ readonly timeoutMs?: number;
4
+ readonly timeoutKillGraceMs?: number;
5
+ }
6
+ export interface ProcessResult {
7
+ readonly stdout: string;
8
+ readonly stderr: string;
9
+ readonly exitCode: number | null;
10
+ readonly signal: string | null;
11
+ readonly durationMs: number;
12
+ readonly timedOut?: boolean;
13
+ readonly timeoutMs?: number;
14
+ }
15
+ export type ProcessRunner = (commandSpec: CommandSpec, options?: ProcessRunnerOptions) => Promise<ProcessResult>;
16
+ export declare function spawnProcessRunner(): ProcessRunner;
17
+ //# sourceMappingURL=process-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-runner.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/process-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAK3C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,WAAW,EAAE,WAAW,EACxB,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,CAAC,aAAa,CAAC,CAAC;AAgF5B,wBAAgB,kBAAkB,IAAI,aAAa,CAuClD"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.spawnProcessRunner = spawnProcessRunner;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const env_safety_1 = require("./env-safety");
6
+ const DEFAULT_TIMEOUT_KILL_GRACE_MS = 100;
7
+ const PROVIDER_STDIO = ['ignore', 'pipe', 'pipe'];
8
+ function clearTimeoutState(state) {
9
+ if (state.timeout !== undefined)
10
+ clearTimeout(state.timeout);
11
+ if (state.timeoutKill !== undefined)
12
+ clearTimeout(state.timeoutKill);
13
+ }
14
+ function armTimeout(child, options, state, isSettled) {
15
+ if (options.timeoutMs === undefined)
16
+ return;
17
+ state.timeout = setTimeout(() => {
18
+ state.timedOut = true;
19
+ child.kill('SIGTERM');
20
+ state.timeoutKill = setTimeout(() => {
21
+ if (!isSettled())
22
+ child.kill('SIGKILL');
23
+ }, options.timeoutKillGraceMs ?? DEFAULT_TIMEOUT_KILL_GRACE_MS);
24
+ }, options.timeoutMs);
25
+ }
26
+ function processResult(input) {
27
+ return {
28
+ stdout: Buffer.concat(input.stdout).toString('utf8'),
29
+ stderr: Buffer.concat(input.stderr).toString('utf8'),
30
+ exitCode: input.exitCode,
31
+ signal: input.signal,
32
+ durationMs: Date.now() - input.startedAt,
33
+ timedOut: input.state.timedOut,
34
+ ...(input.state.timedOut && input.timeoutMs !== undefined
35
+ ? { timeoutMs: input.timeoutMs }
36
+ : {}),
37
+ };
38
+ }
39
+ function spawnOptions(commandSpec) {
40
+ const options = {
41
+ shell: false,
42
+ env: { ...(0, env_safety_1.omitProcessControlEnv)(process.env), ...(0, env_safety_1.omitUnsafeProviderEnv)(commandSpec.env) },
43
+ stdio: PROVIDER_STDIO,
44
+ };
45
+ if (commandSpec.cwd !== undefined)
46
+ options.cwd = commandSpec.cwd;
47
+ return options;
48
+ }
49
+ function attachOutputCollectors(child, stdout, stderr) {
50
+ child.stdout?.on('data', (chunk) => stdout.push(chunk));
51
+ child.stderr?.on('data', (chunk) => stderr.push(chunk));
52
+ }
53
+ function spawnProcessRunner() {
54
+ return (commandSpec, options = {}) => new Promise((resolve, reject) => {
55
+ const startedAt = Date.now();
56
+ const stdout = [];
57
+ const stderr = [];
58
+ const child = (0, node_child_process_1.spawn)(commandSpec.binary, [...commandSpec.args], spawnOptions(commandSpec));
59
+ const timeoutState = { timedOut: false };
60
+ let settled = false;
61
+ function settle() {
62
+ if (settled)
63
+ return false;
64
+ settled = true;
65
+ clearTimeoutState(timeoutState);
66
+ return true;
67
+ }
68
+ attachOutputCollectors(child, stdout, stderr);
69
+ child.once('error', (error) => {
70
+ if (settle())
71
+ reject(error);
72
+ });
73
+ child.once('close', (exitCode, signal) => {
74
+ if (settle()) {
75
+ resolve(processResult({
76
+ stdout,
77
+ stderr,
78
+ exitCode,
79
+ signal,
80
+ startedAt,
81
+ state: timeoutState,
82
+ ...(options.timeoutMs !== undefined ? { timeoutMs: options.timeoutMs } : {}),
83
+ }));
84
+ }
85
+ });
86
+ armTimeout(child, options, timeoutState, () => settled);
87
+ });
88
+ }
89
+ //# sourceMappingURL=process-runner.js.map