@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,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runInvoke = runInvoke;
4
+ const promises_1 = require("node:fs/promises");
5
+ const contract_env_1 = require("./contract-env");
6
+ const contract_envelope_1 = require("./contract-envelope");
7
+ const contract_support_1 = require("./contract-support");
8
+ const invoke_evidence_1 = require("./invoke-evidence");
9
+ const contract_parse_1 = require("./contract-parse");
10
+ const json_1 = require("./json");
11
+ async function cleanupFiles(commandSpec) {
12
+ const cleanup = commandSpec.cleanup ?? [];
13
+ const results = [];
14
+ for (const file of cleanup) {
15
+ try {
16
+ await (0, promises_1.unlink)(file);
17
+ results.push({ path: file, removed: true });
18
+ }
19
+ catch (error) {
20
+ results.push({ path: file, removed: false, error: (0, json_1.unknownToMessage)(error) });
21
+ }
22
+ }
23
+ return results;
24
+ }
25
+ async function runAndCleanup(commandSpec, runner, runnerOptions) {
26
+ let result = null;
27
+ let runnerError;
28
+ try {
29
+ result = await runner(commandSpec, runnerOptions);
30
+ }
31
+ catch (error) {
32
+ runnerError = error;
33
+ }
34
+ const cleanup = await cleanupFiles(commandSpec);
35
+ if (runnerError !== undefined)
36
+ throw runnerError;
37
+ if (result === null)
38
+ throw new Error('Provider runner did not produce a result.');
39
+ return { result, cleanup };
40
+ }
41
+ async function runInvoke(request, runner) {
42
+ const { adapter, commandSpec, options } = (0, contract_support_1.buildCommandSpec)(request);
43
+ const timeoutMs = (0, contract_support_1.optionalNumber)(request.raw, 'timeoutMs');
44
+ const runnerOptions = timeoutMs === undefined ? {} : { timeoutMs };
45
+ const { result, cleanup } = await runAndCleanup(commandSpec, runner, runnerOptions);
46
+ const parsed = (0, contract_parse_1.parseOutputEvents)(adapter, {
47
+ chunk: [result.stdout, result.stderr].join('\n'),
48
+ sources: [
49
+ { name: 'stdout', value: result.stdout },
50
+ { name: 'stderr', value: result.stderr },
51
+ ],
52
+ });
53
+ const classification = (0, invoke_evidence_1.providerFailureClassification)(adapter, result);
54
+ return (0, contract_envelope_1.successEnvelope)({
55
+ command: request.command ?? 'invoke',
56
+ adapter,
57
+ warnings: commandSpec.warnings,
58
+ redactions: (0, contract_env_1.commandRedactions)(commandSpec),
59
+ evidence: invokeEvidence(result, timeoutMs),
60
+ result: {
61
+ commandSpec,
62
+ outputFormat: options.outputFormat ?? null,
63
+ schemaMode: (0, contract_support_1.schemaMode)(options),
64
+ evidence: {
65
+ stdout: result.stdout,
66
+ stderr: result.stderr,
67
+ },
68
+ events: parsed.events,
69
+ diagnostics: parsed.diagnostics,
70
+ exitCode: result.exitCode,
71
+ signal: result.signal,
72
+ durationMs: result.durationMs,
73
+ timedOut: result.timedOut ?? false,
74
+ timeoutMs: result.timeoutMs ?? timeoutMs ?? null,
75
+ cleanup,
76
+ classification,
77
+ },
78
+ });
79
+ }
80
+ function invokeEvidence(result, timeoutMs) {
81
+ return {
82
+ exitCode: result.exitCode,
83
+ signal: result.signal,
84
+ durationMs: result.durationMs,
85
+ timedOut: result.timedOut ?? false,
86
+ timeoutMs: result.timeoutMs ?? timeoutMs ?? null,
87
+ };
88
+ }
89
+ //# sourceMappingURL=contract-invoke.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-invoke.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-invoke.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuildProviderCommandOptions } from './types';
2
+ export declare function requestOptions(value: unknown): BuildProviderCommandOptions;
3
+ //# sourceMappingURL=contract-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-options.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-options.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,2BAA2B,EAM5B,MAAM,SAAS,CAAC;AAwBjB,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,CAY1E"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requestOptions = requestOptions;
4
+ const json_1 = require("./json");
5
+ const contract_errors_1 = require("./contract-errors");
6
+ const contract_env_1 = require("./contract-env");
7
+ const OUTPUT_FORMATS = ['text', 'json', 'stream-json'];
8
+ const MODEL_LEVELS = ['level1', 'level2', 'level3'];
9
+ const REASONING_EFFORTS = ['low', 'medium', 'high', 'xhigh'];
10
+ const CLI_FEATURE_FIELDS = [
11
+ 'supportsOutputFormat',
12
+ 'supportsStreamJson',
13
+ 'supportsJsonSchema',
14
+ 'supportsAutoApprove',
15
+ 'supportsIncludePartials',
16
+ 'supportsVerbose',
17
+ 'supportsModel',
18
+ 'supportsJson',
19
+ 'supportsOutputSchema',
20
+ 'supportsCwd',
21
+ 'supportsConfigOverride',
22
+ 'supportsSkipGitRepoCheck',
23
+ 'supportsVariant',
24
+ 'unknown',
25
+ ];
26
+ function requestOptions(value) {
27
+ if (value === undefined)
28
+ return {};
29
+ if (!(0, json_1.isRecord)(value)) {
30
+ throw (0, contract_errors_1.contractError)({
31
+ code: 'invalid-field',
32
+ message: 'options must be an object.',
33
+ exitCode: 2,
34
+ field: 'options',
35
+ });
36
+ }
37
+ rejectProviderCommandOverrides(value);
38
+ return normalizeBuildOptions(value);
39
+ }
40
+ function rejectProviderCommandOverrides(value) {
41
+ for (const field of ['command', 'commandArgs']) {
42
+ if (!Object.prototype.hasOwnProperty.call(value, field))
43
+ continue;
44
+ throw (0, contract_errors_1.contractError)({
45
+ code: 'forbidden-field',
46
+ message: `options.${field} is not accepted by provider executable requests; provider adapters own executable binaries and arguments.`,
47
+ exitCode: 2,
48
+ field: `options.${field}`,
49
+ });
50
+ }
51
+ }
52
+ function optionalStringValue(value, field) {
53
+ if (value === undefined)
54
+ return undefined;
55
+ if (typeof value === 'string')
56
+ return value;
57
+ (0, contract_errors_1.invalidField)(field, `${field} must be a string.`);
58
+ }
59
+ function optionalNullableStringValue(value, field) {
60
+ if (value === undefined)
61
+ return undefined;
62
+ if (value === null)
63
+ return null;
64
+ if (typeof value === 'string')
65
+ return value;
66
+ (0, contract_errors_1.invalidField)(field, `${field} must be a string or null.`);
67
+ }
68
+ function optionalBooleanValue(value, field) {
69
+ if (value === undefined)
70
+ return undefined;
71
+ if (typeof value === 'boolean')
72
+ return value;
73
+ (0, contract_errors_1.invalidField)(field, `${field} must be a boolean.`);
74
+ }
75
+ function optionalEnumValue(value, field, allowed) {
76
+ if (value === undefined)
77
+ return undefined;
78
+ if (typeof value !== 'string') {
79
+ (0, contract_errors_1.invalidField)(field, `${field} must be a string.`);
80
+ }
81
+ for (const item of allowed) {
82
+ if (value === item)
83
+ return item;
84
+ }
85
+ (0, contract_errors_1.invalidField)(field, `${field} must be one of: ${allowed.join(', ')}.`);
86
+ }
87
+ function optionalModelSpec(value) {
88
+ if (value === undefined)
89
+ return undefined;
90
+ if (!(0, json_1.isRecord)(value)) {
91
+ (0, contract_errors_1.invalidField)('options.modelSpec', 'options.modelSpec must be an object.');
92
+ }
93
+ const level = optionalEnumValue(value.level, 'options.modelSpec.level', MODEL_LEVELS);
94
+ const model = optionalNullableStringValue(value.model, 'options.modelSpec.model');
95
+ const reasoningEffort = optionalEnumValue(value.reasoningEffort, 'options.modelSpec.reasoningEffort', REASONING_EFFORTS);
96
+ return {
97
+ ...(level === undefined ? {} : { level }),
98
+ ...(model === undefined ? {} : { model }),
99
+ ...(reasoningEffort === undefined ? {} : { reasoningEffort }),
100
+ };
101
+ }
102
+ function optionalCliFeatures(value) {
103
+ if (value === undefined)
104
+ return undefined;
105
+ if (!(0, json_1.isRecord)(value)) {
106
+ (0, contract_errors_1.invalidField)('options.cliFeatures', 'options.cliFeatures must be an object.');
107
+ }
108
+ const result = {};
109
+ for (const field of CLI_FEATURE_FIELDS) {
110
+ const item = optionalBooleanValue(value[field], `options.cliFeatures.${field}`);
111
+ if (item !== undefined)
112
+ result[field] = item;
113
+ }
114
+ return result;
115
+ }
116
+ function normalizeBuildOptions(value) {
117
+ const result = {};
118
+ addDefined(result, 'modelSpec', optionalModelSpec(value.modelSpec));
119
+ addDefined(result, 'outputFormat', optionalEnumValue(value.outputFormat, 'options.outputFormat', OUTPUT_FORMATS));
120
+ addPresent(result, value, 'jsonSchema');
121
+ addDefined(result, 'cwd', optionalStringValue(value.cwd, 'options.cwd'));
122
+ addDefined(result, 'autoApprove', optionalBooleanValue(value.autoApprove, 'options.autoApprove'));
123
+ addDefined(result, 'resumeSessionId', optionalStringValue(value.resumeSessionId, 'options.resumeSessionId'));
124
+ addDefined(result, 'continueSession', optionalBooleanValue(value.continueSession, 'options.continueSession'));
125
+ addDefined(result, 'cliFeatures', optionalCliFeatures(value.cliFeatures));
126
+ addDefined(result, 'strictSchema', optionalBooleanValue(value.strictSchema, 'options.strictSchema'));
127
+ if (Object.prototype.hasOwnProperty.call(value, 'authEnv')) {
128
+ result.authEnv = (0, contract_env_1.stringRecord)(value.authEnv, 'options.authEnv');
129
+ }
130
+ return result;
131
+ }
132
+ function addDefined(result, key, value) {
133
+ if (value !== undefined)
134
+ result[key] = value;
135
+ }
136
+ function addPresent(result, input, key) {
137
+ if (Object.prototype.hasOwnProperty.call(input, key))
138
+ result[key] = input[key];
139
+ }
140
+ //# sourceMappingURL=contract-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-options.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { type ContractEnvelope, type ContractEvidence } from './contract-envelope';
2
+ import { type RequestData } from './contract-support';
3
+ import type { OutputEvent, ProviderAdapter } from './types';
4
+ export declare function parseOutputEvents(adapter: ProviderAdapter, fragments: {
5
+ readonly chunk: string;
6
+ readonly sources: readonly {
7
+ readonly name: string;
8
+ readonly value: string;
9
+ }[];
10
+ }): {
11
+ readonly events: readonly OutputEvent[];
12
+ readonly diagnostics: readonly ContractEvidence[];
13
+ };
14
+ export declare function runParseOutput(request: RequestData): ContractEnvelope;
15
+ //# sourceMappingURL=contract-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-parse.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-parse.ts"],"names":[],"mappings":"AAGA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAkD5D,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE;IACT,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChF,GACA;IAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAAE,CAmBhG;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB,CAUrE"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseOutputEvents = parseOutputEvents;
4
+ exports.runParseOutput = runParseOutput;
5
+ const adapters_1 = require("./adapters");
6
+ const contract_env_1 = require("./contract-env");
7
+ const contract_errors_1 = require("./contract-errors");
8
+ const contract_envelope_1 = require("./contract-envelope");
9
+ const contract_support_1 = require("./contract-support");
10
+ const json_1 = require("./json");
11
+ function parseFragments(record) {
12
+ const sources = ['stdout', 'stderr', 'jsonl']
13
+ .map((name) => {
14
+ const value = (0, contract_errors_1.optionalString)(record, name);
15
+ return value === undefined ? null : { name, value };
16
+ })
17
+ .filter((value) => value !== null);
18
+ return {
19
+ chunk: sources.map((source) => source.value).join('\n'),
20
+ sources,
21
+ };
22
+ }
23
+ function collectParseDiagnostics(sources) {
24
+ const diagnostics = [];
25
+ for (const source of sources) {
26
+ collectSourceDiagnostics(diagnostics, source);
27
+ }
28
+ return diagnostics;
29
+ }
30
+ function collectSourceDiagnostics(diagnostics, source) {
31
+ const lines = source.value.split('\n');
32
+ for (let index = 0; index < lines.length; index += 1) {
33
+ const line = lines[index]?.trim() ?? '';
34
+ if (!isMalformedJsonCandidate(line))
35
+ continue;
36
+ diagnostics.push({
37
+ kind: 'parse-error',
38
+ source: source.name,
39
+ line: index + 1,
40
+ fragment: line,
41
+ });
42
+ }
43
+ }
44
+ function isMalformedJsonCandidate(line) {
45
+ if (!line || (!line.startsWith('{') && !line.startsWith('[')))
46
+ return false;
47
+ return (0, json_1.tryParseJson)(line) === null;
48
+ }
49
+ function parseOutputEvents(adapter, fragments) {
50
+ const diagnostics = [...collectParseDiagnostics(fragments.sources)];
51
+ try {
52
+ return {
53
+ events: (0, adapters_1.parseProviderChunk)(adapter.id, fragments.chunk),
54
+ diagnostics,
55
+ };
56
+ }
57
+ catch (error) {
58
+ return {
59
+ events: [],
60
+ diagnostics: [
61
+ ...diagnostics,
62
+ {
63
+ kind: 'parser-error',
64
+ message: (0, json_1.unknownToMessage)(error),
65
+ },
66
+ ],
67
+ };
68
+ }
69
+ }
70
+ function runParseOutput(request) {
71
+ const adapter = (0, contract_support_1.adapterForProvider)(request.provider);
72
+ const fragments = parseFragments(request.raw);
73
+ const parsed = parseOutputEvents(adapter, fragments);
74
+ return (0, contract_envelope_1.successEnvelope)({
75
+ command: request.command ?? 'parse-output',
76
+ adapter,
77
+ redactions: (0, contract_env_1.envRedactions)(request.env),
78
+ result: parsed,
79
+ });
80
+ }
81
+ //# sourceMappingURL=contract-parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-parse.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { BuildProviderCommandOptions, CommandSpec, ProviderAdapter } from './types';
2
+ export { contractError, ContractRequestError, optionalNumber, optionalString, requiredString, } from './contract-errors';
3
+ export { collectCommandSpecEnv, commandRedactions, envRedactions, mergeEnvForRedaction, providerCredentialEnv, stringRecord, } from './contract-env';
4
+ export interface RequestData {
5
+ readonly raw: Record<string, unknown>;
6
+ readonly command: string | null;
7
+ readonly provider: string | null;
8
+ readonly env: Readonly<Record<string, string>>;
9
+ }
10
+ export declare function adapterForProvider(provider: string | null): ProviderAdapter;
11
+ export declare function buildCommandSpec(request: RequestData): {
12
+ readonly adapter: ProviderAdapter;
13
+ readonly commandSpec: CommandSpec;
14
+ readonly options: BuildProviderCommandOptions;
15
+ };
16
+ export declare function schemaMode(options: BuildProviderCommandOptions): string;
17
+ export declare function validateRequest(input: string, schemaVersion: 1): RequestData;
18
+ //# sourceMappingURL=contract-support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-support.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-support.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,2BAA2B,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAIxB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChD;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe,CAmB3E;AAqBD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG;IACtD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;CAC/C,CAcA;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CAGvE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,WAAW,CAU5E"}
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringRecord = exports.providerCredentialEnv = exports.mergeEnvForRedaction = exports.envRedactions = exports.commandRedactions = exports.collectCommandSpecEnv = exports.requiredString = exports.optionalString = exports.optionalNumber = exports.ContractRequestError = exports.contractError = void 0;
4
+ exports.adapterForProvider = adapterForProvider;
5
+ exports.buildCommandSpec = buildCommandSpec;
6
+ exports.schemaMode = schemaMode;
7
+ exports.validateRequest = validateRequest;
8
+ const adapters_1 = require("./adapters");
9
+ const json_1 = require("./json");
10
+ const redaction_1 = require("./redaction");
11
+ const contract_options_1 = require("./contract-options");
12
+ const single_agent_runtime_1 = require("./single-agent-runtime");
13
+ var contract_errors_1 = require("./contract-errors");
14
+ Object.defineProperty(exports, "contractError", { enumerable: true, get: function () { return contract_errors_1.contractError; } });
15
+ Object.defineProperty(exports, "ContractRequestError", { enumerable: true, get: function () { return contract_errors_1.ContractRequestError; } });
16
+ Object.defineProperty(exports, "optionalNumber", { enumerable: true, get: function () { return contract_errors_1.optionalNumber; } });
17
+ Object.defineProperty(exports, "optionalString", { enumerable: true, get: function () { return contract_errors_1.optionalString; } });
18
+ Object.defineProperty(exports, "requiredString", { enumerable: true, get: function () { return contract_errors_1.requiredString; } });
19
+ var contract_env_1 = require("./contract-env");
20
+ Object.defineProperty(exports, "collectCommandSpecEnv", { enumerable: true, get: function () { return contract_env_1.collectCommandSpecEnv; } });
21
+ Object.defineProperty(exports, "commandRedactions", { enumerable: true, get: function () { return contract_env_1.commandRedactions; } });
22
+ Object.defineProperty(exports, "envRedactions", { enumerable: true, get: function () { return contract_env_1.envRedactions; } });
23
+ Object.defineProperty(exports, "mergeEnvForRedaction", { enumerable: true, get: function () { return contract_env_1.mergeEnvForRedaction; } });
24
+ Object.defineProperty(exports, "providerCredentialEnv", { enumerable: true, get: function () { return contract_env_1.providerCredentialEnv; } });
25
+ Object.defineProperty(exports, "stringRecord", { enumerable: true, get: function () { return contract_env_1.stringRecord; } });
26
+ const contract_errors_2 = require("./contract-errors");
27
+ const contract_env_2 = require("./contract-env");
28
+ function adapterForProvider(provider) {
29
+ if (provider === null || provider.length === 0) {
30
+ throw (0, contract_errors_2.contractError)({
31
+ code: 'missing-field',
32
+ message: 'provider is required.',
33
+ exitCode: 2,
34
+ field: 'provider',
35
+ });
36
+ }
37
+ try {
38
+ return (0, adapters_1.getProviderAdapter)(provider);
39
+ }
40
+ catch {
41
+ throw (0, contract_errors_2.contractError)({
42
+ code: 'unknown-provider',
43
+ message: `Unknown provider: ${provider}.`,
44
+ exitCode: 4,
45
+ field: 'provider',
46
+ });
47
+ }
48
+ }
49
+ function mergeCommandSpec(commandSpec, env) {
50
+ const mergedEnv = { ...commandSpec.env, ...env };
51
+ return {
52
+ ...commandSpec,
53
+ env: mergedEnv,
54
+ redactions: (0, redaction_1.mergeRedactions)(commandSpec.redactions, (0, contract_env_2.envRedactions)(mergedEnv)),
55
+ };
56
+ }
57
+ function buildOptions(request) {
58
+ const options = (0, contract_options_1.requestOptions)(request.raw.options);
59
+ const cwd = (0, contract_errors_2.optionalString)(request.raw, 'cwd');
60
+ if (cwd === undefined || options.cwd !== undefined)
61
+ return options;
62
+ return { ...options, cwd };
63
+ }
64
+ function buildCommandSpec(request) {
65
+ const adapter = adapterForProvider(request.provider);
66
+ const context = (0, contract_errors_2.requiredString)(request.raw, 'context');
67
+ const options = buildOptions(request);
68
+ const prepared = (0, single_agent_runtime_1.prepareSingleAgentProviderCommand)({
69
+ provider: adapter.id,
70
+ context,
71
+ options,
72
+ });
73
+ return {
74
+ adapter: prepared.adapter,
75
+ options: prepared.options,
76
+ commandSpec: mergeCommandSpec(prepared.commandSpec, request.env),
77
+ };
78
+ }
79
+ function schemaMode(options) {
80
+ if (!options.jsonSchema)
81
+ return 'none';
82
+ return options.strictSchema === false ? 'prompt' : 'strict';
83
+ }
84
+ function validateRequest(input, schemaVersion) {
85
+ const parsed = parseRequestObject(input);
86
+ assertSchemaVersion(parsed, schemaVersion);
87
+ const command = requiredCommand(parsed);
88
+ return {
89
+ raw: parsed,
90
+ command,
91
+ provider: (0, json_1.getString)(parsed, 'provider'),
92
+ env: requestEnv(parsed),
93
+ };
94
+ }
95
+ const KNOWN_COMMANDS = [
96
+ 'probe',
97
+ 'build-command',
98
+ 'parse-output',
99
+ 'classify-error',
100
+ 'invoke',
101
+ ];
102
+ function parseRequestObject(input) {
103
+ let parsed;
104
+ try {
105
+ parsed = (0, json_1.parseJson)(input);
106
+ }
107
+ catch {
108
+ throw (0, contract_errors_2.contractError)({
109
+ code: 'malformed-json',
110
+ message: 'Request body must be valid JSON.',
111
+ exitCode: 2,
112
+ });
113
+ }
114
+ if ((0, json_1.isRecord)(parsed))
115
+ return parsed;
116
+ throw (0, contract_errors_2.contractError)({
117
+ code: 'invalid-request',
118
+ message: 'Request body must be a JSON object.',
119
+ exitCode: 2,
120
+ });
121
+ }
122
+ function assertSchemaVersion(parsed, schemaVersion) {
123
+ if (parsed.schemaVersion === schemaVersion)
124
+ return;
125
+ throw (0, contract_errors_2.contractError)({
126
+ code: 'unsupported-schema-version',
127
+ message: 'schemaVersion must be 1.',
128
+ exitCode: 2,
129
+ field: 'schemaVersion',
130
+ });
131
+ }
132
+ function requiredCommand(parsed) {
133
+ const command = (0, json_1.getString)(parsed, 'command');
134
+ if (command === null) {
135
+ throw (0, contract_errors_2.contractError)({
136
+ code: 'missing-field',
137
+ message: 'command is required.',
138
+ exitCode: 2,
139
+ field: 'command',
140
+ });
141
+ }
142
+ if (KNOWN_COMMANDS.includes(command))
143
+ return command;
144
+ throw (0, contract_errors_2.contractError)({
145
+ code: 'unknown-command',
146
+ message: `Unknown command: ${command}.`,
147
+ exitCode: 3,
148
+ field: 'command',
149
+ });
150
+ }
151
+ function requestEnv(parsed) {
152
+ return (0, contract_env_2.stringRecord)(parsed.env, 'env');
153
+ }
154
+ //# sourceMappingURL=contract-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-support.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type ProcessRunner } from './process-runner';
2
+ import type { ContractEnvelope } from './contract-envelope';
3
+ export { providerExecutableSchemaVersion, type ContractEnvelope, type ContractErrorEnvelope, type ContractErrorObject, type ContractEvidence, type ContractSuccessEnvelope, } from './contract-envelope';
4
+ export type ProviderExecutableCommand = 'probe' | 'build-command' | 'parse-output' | 'classify-error' | 'invoke';
5
+ export interface ProviderExecutableResponse {
6
+ readonly envelope: ContractEnvelope;
7
+ readonly exitCode: number;
8
+ }
9
+ export interface ProviderExecutableOptions {
10
+ readonly runner?: ProcessRunner;
11
+ }
12
+ export declare function runProviderExecutable(input: string, options?: ProviderExecutableOptions): Promise<ProviderExecutableResponse>;
13
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EACL,+BAA+B,EAC/B,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,yBAAyB,GACjC,OAAO,GACP,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,QAAQ,CAAC;AAEb,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,0BAA0B,CAAC,CAgBrC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.providerExecutableSchemaVersion = void 0;
4
+ exports.runProviderExecutable = runProviderExecutable;
5
+ const contract_actions_1 = require("./contract-actions");
6
+ const contract_fallback_1 = require("./contract-fallback");
7
+ const contract_envelope_1 = require("./contract-envelope");
8
+ const contract_support_1 = require("./contract-support");
9
+ const process_runner_1 = require("./process-runner");
10
+ var contract_envelope_2 = require("./contract-envelope");
11
+ Object.defineProperty(exports, "providerExecutableSchemaVersion", { enumerable: true, get: function () { return contract_envelope_2.providerExecutableSchemaVersion; } });
12
+ async function runProviderExecutable(input, options = {}) {
13
+ const fallback = (0, contract_fallback_1.requestEnvelopeData)(input);
14
+ try {
15
+ const request = (0, contract_support_1.validateRequest)(input, contract_envelope_1.providerExecutableSchemaVersion);
16
+ const envelope = await (0, contract_actions_1.dispatchRequest)(request, options.runner ?? (0, process_runner_1.spawnProcessRunner)());
17
+ return {
18
+ envelope: (0, contract_envelope_1.finalizeEnvelope)(envelope, request.env),
19
+ exitCode: 0,
20
+ };
21
+ }
22
+ catch (error) {
23
+ const requestError = (0, contract_fallback_1.requestErrorFromUnknown)(error);
24
+ return {
25
+ envelope: (0, contract_envelope_1.finalizeEnvelope)((0, contract_fallback_1.fallbackErrorEnvelope)(fallback, requestError), fallback.env),
26
+ exitCode: requestError.exitCode,
27
+ };
28
+ }
29
+ }
30
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract.ts"],"names":[],"mappings":";;;AAoCA,sDAmBC;AAvDD,yDAAqD;AACrD,2DAI6B;AAC7B,2DAAwF;AACxF,yDAAqD;AACrD,qDAA0E;AAG1E,yDAO6B;AAN3B,oIAAA,+BAA+B,OAAA;AAwB1B,KAAK,UAAU,qBAAqB,CACzC,KAAa,EACb,UAAqC,EAAE;IAEvC,MAAM,QAAQ,GAAG,IAAA,uCAAmB,EAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,kCAAe,EAAC,KAAK,EAAE,mDAA+B,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,MAAM,IAAA,kCAAe,EAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,IAAA,mCAAkB,GAAE,CAAC,CAAC;QACxF,OAAO;YACL,QAAQ,EAAE,IAAA,oCAAgB,EAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC;YACjD,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,IAAA,2CAAuB,EAAC,KAAK,CAAC,CAAC;QACpD,OAAO;YACL,QAAQ,EAAE,IAAA,oCAAgB,EAAC,IAAA,yCAAqB,EAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC;YACvF,QAAQ,EAAE,YAAY,CAAC,QAAQ;SAChC,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ type EnvRecord = Readonly<Record<string, string | undefined>>;
2
+ export declare function isExecutableResolutionEnvKey(key: string): boolean;
3
+ export declare function isProcessControlEnvKey(key: string): boolean;
4
+ export declare function isUnsafeProviderEnvKey(key: string): boolean;
5
+ export declare function findExecutableResolutionEnvKey(env: EnvRecord): string | null;
6
+ export declare function findUnsafeProviderEnvKey(env: EnvRecord): string | null;
7
+ export declare function omitExecutableResolutionEnv(env: EnvRecord): Readonly<Record<string, string>>;
8
+ export declare function omitProcessControlEnv(env: EnvRecord): Readonly<Record<string, string>>;
9
+ export declare function omitUnsafeProviderEnv(env: EnvRecord): Readonly<Record<string, string>>;
10
+ export {};
11
+ //# sourceMappingURL=env-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-safety.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/env-safety.ts"],"names":[],"mappings":"AA6BA,KAAK,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE9D,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAI3D;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAK5E;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAKtE;AAcD,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAE5F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEtF;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAEtF"}