@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,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dispatchRequest = dispatchRequest;
4
+ const adapters_1 = require("./adapters");
5
+ const contract_env_1 = require("./contract-env");
6
+ const contract_errors_1 = require("./contract-errors");
7
+ const contract_envelope_1 = require("./contract-envelope");
8
+ const contract_invoke_1 = require("./contract-invoke");
9
+ const contract_parse_1 = require("./contract-parse");
10
+ const contract_support_1 = require("./contract-support");
11
+ const single_agent_runtime_1 = require("./single-agent-runtime");
12
+ const json_1 = require("./json");
13
+ function runBuildCommand(request) {
14
+ const { adapter, commandSpec, options } = (0, contract_support_1.buildCommandSpec)(request);
15
+ return (0, contract_envelope_1.successEnvelope)({
16
+ command: request.command ?? 'build-command',
17
+ adapter,
18
+ warnings: commandSpec.warnings,
19
+ redactions: (0, contract_env_1.commandRedactions)(commandSpec),
20
+ evidence: {
21
+ outputFormat: options.outputFormat ?? null,
22
+ schemaMode: (0, contract_support_1.schemaMode)(options),
23
+ },
24
+ result: {
25
+ commandSpec,
26
+ outputFormat: options.outputFormat ?? null,
27
+ schemaMode: (0, contract_support_1.schemaMode)(options),
28
+ },
29
+ });
30
+ }
31
+ function runProbe(request) {
32
+ const adapter = (0, contract_support_1.adapterForProvider)(request.provider);
33
+ const helpText = typeof request.raw.helpText === 'string' ? request.raw.helpText : null;
34
+ const capabilities = helpText === null ? (0, single_agent_runtime_1.detectRuntimeProviderCliFeatures)(adapter.id) : adapter.detectCliFeatures(helpText);
35
+ return (0, contract_envelope_1.successEnvelope)({
36
+ command: request.command ?? 'probe',
37
+ adapter,
38
+ redactions: (0, contract_env_1.envRedactions)(request.env),
39
+ result: {
40
+ provider: {
41
+ id: adapter.id,
42
+ displayName: adapter.displayName,
43
+ binary: adapter.binary,
44
+ },
45
+ contractVersion: contract_envelope_1.providerExecutableSchemaVersion,
46
+ adapterVersion: adapter.adapterVersion,
47
+ capabilities,
48
+ credentials: adapter.credentialEnvKeys.map((key) => ({
49
+ key,
50
+ present: Boolean(request.env[key] ?? process.env[key]),
51
+ })),
52
+ },
53
+ });
54
+ }
55
+ function statusFromError(error) {
56
+ if (!(0, json_1.isRecord)(error))
57
+ return null;
58
+ const directStatus = (0, json_1.getNumber)(error, 'status') ?? (0, json_1.getNumber)(error, 'statusCode');
59
+ if (directStatus !== null)
60
+ return directStatus;
61
+ const response = (0, json_1.getRecord)(error, 'response');
62
+ if (response === null)
63
+ return null;
64
+ return (0, json_1.getNumber)(response, 'status') ?? (0, json_1.getNumber)(response, 'statusCode');
65
+ }
66
+ function categoryForClassification(classification, error) {
67
+ const status = statusFromError(error);
68
+ if (status === 401 || status === 403)
69
+ return 'auth';
70
+ if (status === 429)
71
+ return 'rate-limit';
72
+ const message = (0, json_1.unknownToMessage)(error);
73
+ if (/auth|api[_ -]?key|unauthorized|forbidden|permission/i.test(message))
74
+ return 'auth';
75
+ if (/rate|429|quota|resource_exhausted/i.test(message))
76
+ return 'rate-limit';
77
+ if (/schema|json|parse|format/i.test(message))
78
+ return 'schema';
79
+ return classification.retryable ? 'retryable' : 'permanent';
80
+ }
81
+ function errorEvidence(error) {
82
+ const evidence = {
83
+ message: (0, json_1.unknownToMessage)(error),
84
+ };
85
+ if ((0, json_1.isRecord)(error)) {
86
+ const status = statusFromError(error);
87
+ const code = (0, json_1.getString)(error, 'code');
88
+ if (status !== null)
89
+ evidence.status = status;
90
+ if (code !== null)
91
+ evidence.code = code;
92
+ }
93
+ return evidence;
94
+ }
95
+ function runClassifyError(request) {
96
+ const adapter = (0, contract_support_1.adapterForProvider)(request.provider);
97
+ const error = request.raw.error;
98
+ if (error === undefined) {
99
+ throw (0, contract_errors_1.contractError)({
100
+ code: 'missing-field',
101
+ message: 'error is required.',
102
+ exitCode: 2,
103
+ field: 'error',
104
+ });
105
+ }
106
+ const classification = (0, adapters_1.classifyProviderError)(adapter.id, error);
107
+ return (0, contract_envelope_1.successEnvelope)({
108
+ command: request.command ?? 'classify-error',
109
+ adapter,
110
+ redactions: (0, contract_env_1.envRedactions)(request.env),
111
+ evidence: errorEvidence(error),
112
+ result: {
113
+ classification,
114
+ category: categoryForClassification(classification, error),
115
+ evidence: errorEvidence(error),
116
+ },
117
+ });
118
+ }
119
+ function dispatchRequest(request, runner) {
120
+ switch (request.command) {
121
+ case 'probe':
122
+ return runProbe(request);
123
+ case 'build-command':
124
+ return runBuildCommand(request);
125
+ case 'parse-output':
126
+ return (0, contract_parse_1.runParseOutput)(request);
127
+ case 'classify-error':
128
+ return runClassifyError(request);
129
+ case 'invoke':
130
+ return (0, contract_invoke_1.runInvoke)(request, runner);
131
+ default:
132
+ throw (0, contract_errors_1.contractError)({
133
+ code: 'unknown-command',
134
+ message: `Unknown command: ${request.command ?? ''}.`,
135
+ exitCode: 3,
136
+ field: 'command',
137
+ });
138
+ }
139
+ }
140
+ //# sourceMappingURL=contract-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-actions.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { CommandSpec, RedactionMetadata } from './types';
2
+ export declare function stringRecord(value: unknown, field: string): Readonly<Record<string, string>>;
3
+ export declare function envRedactions(env: Readonly<Record<string, string>>): readonly RedactionMetadata[];
4
+ export declare function commandRedactions(commandSpec: CommandSpec): readonly RedactionMetadata[];
5
+ export declare function providerCredentialEnv(provider: string | null): Readonly<Record<string, string>>;
6
+ export declare function mergeEnvForRedaction(...inputs: readonly {
7
+ readonly source: string;
8
+ readonly env: Readonly<Record<string, string>>;
9
+ }[]): Readonly<Record<string, string>>;
10
+ export declare function collectCommandSpecEnv(value: unknown): Readonly<Record<string, string>>;
11
+ //# sourceMappingURL=contract-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-env.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-env.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAmB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE/E,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAyB5F;AAaD,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,iBAAiB,EAAE,CAEjG;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,iBAAiB,EAAE,CAExF;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAc/F;AAED,wBAAgB,oBAAoB,CAClC,GAAG,MAAM,EAAE,SAAS;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAChD,EAAE,GACF,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAalC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAItF"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringRecord = stringRecord;
4
+ exports.envRedactions = envRedactions;
5
+ exports.commandRedactions = commandRedactions;
6
+ exports.providerCredentialEnv = providerCredentialEnv;
7
+ exports.mergeEnvForRedaction = mergeEnvForRedaction;
8
+ exports.collectCommandSpecEnv = collectCommandSpecEnv;
9
+ const adapters_1 = require("./adapters");
10
+ const env_safety_1 = require("./env-safety");
11
+ const json_1 = require("./json");
12
+ const redaction_1 = require("./redaction");
13
+ const contract_errors_1 = require("./contract-errors");
14
+ function stringRecord(value, field) {
15
+ if (value === undefined)
16
+ return {};
17
+ if (!(0, json_1.isRecord)(value)) {
18
+ throw (0, contract_errors_1.contractError)({
19
+ code: 'invalid-field',
20
+ message: `${field} must be an object with string values.`,
21
+ exitCode: 2,
22
+ field,
23
+ });
24
+ }
25
+ const result = {};
26
+ for (const [key, item] of Object.entries(value)) {
27
+ if (typeof item !== 'string') {
28
+ throw (0, contract_errors_1.contractError)({
29
+ code: 'invalid-field',
30
+ message: `${field}.${key} must be a string.`,
31
+ exitCode: 2,
32
+ field: `${field}.${key}`,
33
+ });
34
+ }
35
+ result[key] = item;
36
+ }
37
+ assertNoUnsafeProviderEnv(result, field);
38
+ return result;
39
+ }
40
+ function assertNoUnsafeProviderEnv(env, field) {
41
+ const key = (0, env_safety_1.findUnsafeProviderEnvKey)(env);
42
+ if (key === null)
43
+ return;
44
+ throw (0, contract_errors_1.contractError)({
45
+ code: 'forbidden-field',
46
+ message: `${field}.${key} is not accepted by provider executable requests; provider adapters own executable resolution and process-control environment.`,
47
+ exitCode: 2,
48
+ field: `${field}.${key}`,
49
+ });
50
+ }
51
+ function envRedactions(env) {
52
+ return Object.keys(env).map((key) => ({ kind: 'env', key }));
53
+ }
54
+ function commandRedactions(commandSpec) {
55
+ return (0, redaction_1.mergeRedactions)(commandSpec.redactions, envRedactions(commandSpec.env));
56
+ }
57
+ function providerCredentialEnv(provider) {
58
+ if (provider === null)
59
+ return {};
60
+ let adapter;
61
+ try {
62
+ adapter = (0, adapters_1.getProviderAdapter)(provider);
63
+ }
64
+ catch {
65
+ return {};
66
+ }
67
+ const result = {};
68
+ for (const key of adapter.credentialEnvKeys) {
69
+ const value = process.env[key];
70
+ if (typeof value === 'string' && value.length > 0)
71
+ result[key] = value;
72
+ }
73
+ return result;
74
+ }
75
+ function mergeEnvForRedaction(...inputs) {
76
+ const result = {};
77
+ for (const input of inputs) {
78
+ for (const [key, value] of Object.entries(input.env)) {
79
+ if (value.length === 0)
80
+ continue;
81
+ if (result[key] === undefined || result[key] === value) {
82
+ result[key] = value;
83
+ continue;
84
+ }
85
+ result[`${key}:${input.source}`] = value;
86
+ }
87
+ }
88
+ return result;
89
+ }
90
+ function collectCommandSpecEnv(value) {
91
+ const result = {};
92
+ collectCommandSpecEnvInto(value, result);
93
+ return result;
94
+ }
95
+ function collectCommandSpecEnvInto(value, result) {
96
+ if (Array.isArray(value)) {
97
+ for (const item of value)
98
+ collectCommandSpecEnvInto(item, result);
99
+ return;
100
+ }
101
+ if (!(0, json_1.isRecord)(value))
102
+ return;
103
+ const commandSpec = value.commandSpec;
104
+ if ((0, json_1.isRecord)(commandSpec) && (0, json_1.isRecord)(commandSpec.env)) {
105
+ for (const [key, item] of Object.entries(commandSpec.env)) {
106
+ if (typeof item === 'string' && item.length > 0)
107
+ result[key] = item;
108
+ }
109
+ }
110
+ for (const item of Object.values(value))
111
+ collectCommandSpecEnvInto(item, result);
112
+ }
113
+ //# sourceMappingURL=contract-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-env.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { ProviderAdapter, RedactionMetadata, WarningMetadata } from './types';
2
+ export declare const providerExecutableSchemaVersion: 1;
3
+ export interface ContractErrorObject {
4
+ readonly code: string;
5
+ readonly message: string;
6
+ readonly field?: string;
7
+ readonly classification?: unknown;
8
+ }
9
+ export interface ContractEvidence {
10
+ readonly [key: string]: unknown;
11
+ }
12
+ interface ContractEnvelopeBase {
13
+ readonly schemaVersion: 1;
14
+ readonly command: string | null;
15
+ readonly provider: string | null;
16
+ readonly adapterVersion: string | null;
17
+ readonly warnings: readonly WarningMetadata[];
18
+ readonly redactions: readonly RedactionMetadata[];
19
+ readonly evidence: ContractEvidence;
20
+ }
21
+ export interface ContractSuccessEnvelope<Result = unknown> extends ContractEnvelopeBase {
22
+ readonly ok: true;
23
+ readonly result: Result;
24
+ }
25
+ export interface ContractErrorEnvelope extends ContractEnvelopeBase {
26
+ readonly ok: false;
27
+ readonly error: ContractErrorObject;
28
+ }
29
+ export type ContractEnvelope<Result = unknown> = ContractSuccessEnvelope<Result> | ContractErrorEnvelope;
30
+ export declare function finalizeEnvelope(envelope: ContractEnvelope, env: Readonly<Record<string, string>>): ContractEnvelope;
31
+ export declare function successEnvelope<Result>(input: {
32
+ readonly command: string;
33
+ readonly adapter: ProviderAdapter;
34
+ readonly result: Result;
35
+ readonly warnings?: readonly WarningMetadata[];
36
+ readonly redactions?: readonly RedactionMetadata[];
37
+ readonly evidence?: ContractEvidence;
38
+ }): ContractSuccessEnvelope<Result>;
39
+ export declare function errorEnvelope(input: {
40
+ readonly command: string | null;
41
+ readonly provider: string | null;
42
+ readonly adapterVersion?: string | null;
43
+ readonly error: ContractErrorObject;
44
+ readonly warnings?: readonly WarningMetadata[];
45
+ readonly redactions?: readonly RedactionMetadata[];
46
+ readonly evidence?: ContractEvidence;
47
+ }): ContractErrorEnvelope;
48
+ export {};
49
+ //# sourceMappingURL=contract-envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-envelope.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-envelope.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEnF,eAAO,MAAM,+BAA+B,EAAG,CAAU,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB,CAAC,MAAM,GAAG,OAAO,CAAE,SAAQ,oBAAoB;IACrF,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,OAAO,IACzC,uBAAuB,CAAC,MAAM,CAAC,GAC/B,qBAAqB,CAAC;AAE1B,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,gBAAgB,EAC1B,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACpC,gBAAgB,CAgBlB;AAOD,wBAAgB,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CACtC,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAYlC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CACtC,GAAG,qBAAqB,CAYxB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.providerExecutableSchemaVersion = void 0;
4
+ exports.finalizeEnvelope = finalizeEnvelope;
5
+ exports.successEnvelope = successEnvelope;
6
+ exports.errorEnvelope = errorEnvelope;
7
+ const contract_env_1 = require("./contract-env");
8
+ const json_1 = require("./json");
9
+ const redaction_1 = require("./redaction");
10
+ exports.providerExecutableSchemaVersion = 1;
11
+ function finalizeEnvelope(envelope, env) {
12
+ const redacted = (0, redaction_1.redactObject)(envelope, (0, contract_env_1.mergeEnvForRedaction)({ source: 'commandSpec', env: (0, contract_env_1.collectCommandSpecEnv)(envelope) }, { source: 'process', env: (0, contract_env_1.providerCredentialEnv)(envelope.provider) }, { source: 'request', env }));
13
+ if (!isContractEnvelope(redacted.value)) {
14
+ throw new Error('Redacted provider contract envelope lost its JSON shape.');
15
+ }
16
+ return {
17
+ ...redacted.value,
18
+ redactions: (0, redaction_1.mergeRedactions)(envelope.redactions, redacted.redactions),
19
+ };
20
+ }
21
+ function isContractEnvelope(value) {
22
+ if (!(0, json_1.isRecord)(value))
23
+ return false;
24
+ return value.schemaVersion === exports.providerExecutableSchemaVersion && typeof value.ok === 'boolean';
25
+ }
26
+ function successEnvelope(input) {
27
+ return {
28
+ schemaVersion: exports.providerExecutableSchemaVersion,
29
+ ok: true,
30
+ command: input.command,
31
+ provider: input.adapter.id,
32
+ adapterVersion: input.adapter.adapterVersion,
33
+ warnings: input.warnings ?? [],
34
+ redactions: input.redactions ?? [],
35
+ evidence: input.evidence ?? {},
36
+ result: input.result,
37
+ };
38
+ }
39
+ function errorEnvelope(input) {
40
+ return {
41
+ schemaVersion: exports.providerExecutableSchemaVersion,
42
+ ok: false,
43
+ command: input.command,
44
+ provider: input.provider,
45
+ adapterVersion: input.adapterVersion ?? null,
46
+ warnings: input.warnings ?? [],
47
+ redactions: input.redactions ?? [],
48
+ evidence: input.evidence ?? {},
49
+ error: input.error,
50
+ };
51
+ }
52
+ //# sourceMappingURL=contract-envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-envelope.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-envelope.ts"],"names":[],"mappings":";;;AA0CA,4CAmBC;AAOD,0CAmBC;AAED,sCAoBC;AA7GD,iDAAoG;AACpG,iCAAkC;AAClC,2CAA4D;AAG/C,QAAA,+BAA+B,GAAG,CAAU,CAAC;AAqC1D,SAAgB,gBAAgB,CAC9B,QAA0B,EAC1B,GAAqC;IAErC,MAAM,QAAQ,GAAG,IAAA,wBAAY,EAC3B,QAAQ,EACR,IAAA,mCAAoB,EAClB,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,IAAA,oCAAqB,EAAC,QAAQ,CAAC,EAAE,EAC/D,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,IAAA,oCAAqB,EAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EACpE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,CAC3B,CACF,CAAC;IACF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO;QACL,GAAG,QAAQ,CAAC,KAAK;QACjB,UAAU,EAAE,IAAA,2BAAe,EAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,IAAA,eAAQ,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,KAAK,CAAC,aAAa,KAAK,uCAA+B,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,SAAS,CAAC;AAClG,CAAC;AAED,SAAgB,eAAe,CAAS,KAOvC;IACC,OAAO;QACL,aAAa,EAAE,uCAA+B;QAC9C,EAAE,EAAE,IAAI;QACR,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;QAC1B,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;QAC5C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,KAQ7B;IACC,OAAO;QACL,aAAa,EAAE,uCAA+B;QAC9C,EAAE,EAAE,KAAK;QACT,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,IAAI;QAC5C,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ export declare class ContractRequestError extends Error {
2
+ readonly code: string;
3
+ readonly exitCode: number;
4
+ readonly field?: string;
5
+ constructor(input: {
6
+ code: string;
7
+ message: string;
8
+ exitCode: number;
9
+ field?: string;
10
+ });
11
+ }
12
+ export declare function contractError(input: {
13
+ readonly code: string;
14
+ readonly message: string;
15
+ readonly exitCode: number;
16
+ readonly field?: string;
17
+ }): ContractRequestError;
18
+ export declare function invalidField(field: string, message: string): never;
19
+ export declare function requiredString(record: Record<string, unknown>, field: string): string;
20
+ export declare function optionalString(record: Record<string, unknown>, field: string): string | undefined;
21
+ export declare function optionalNumber(record: Record<string, unknown>, field: string): number | undefined;
22
+ //# sourceMappingURL=contract-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-errors.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-errors.ts"],"names":[],"mappings":"AAAA,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEZ,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAOvF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB,GAAG,oBAAoB,CAEvB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAOlE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CASrF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUjG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUjG"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractRequestError = void 0;
4
+ exports.contractError = contractError;
5
+ exports.invalidField = invalidField;
6
+ exports.requiredString = requiredString;
7
+ exports.optionalString = optionalString;
8
+ exports.optionalNumber = optionalNumber;
9
+ class ContractRequestError extends Error {
10
+ code;
11
+ exitCode;
12
+ field;
13
+ constructor(input) {
14
+ super(input.message);
15
+ this.name = 'ContractRequestError';
16
+ this.code = input.code;
17
+ this.exitCode = input.exitCode;
18
+ if (input.field !== undefined)
19
+ this.field = input.field;
20
+ }
21
+ }
22
+ exports.ContractRequestError = ContractRequestError;
23
+ function contractError(input) {
24
+ return new ContractRequestError(input);
25
+ }
26
+ function invalidField(field, message) {
27
+ throw contractError({
28
+ code: 'invalid-field',
29
+ message,
30
+ exitCode: 2,
31
+ field,
32
+ });
33
+ }
34
+ function requiredString(record, field) {
35
+ const value = record[field];
36
+ if (typeof value === 'string' && value.length > 0)
37
+ return value;
38
+ throw contractError({
39
+ code: 'missing-field',
40
+ message: `${field} is required.`,
41
+ exitCode: 2,
42
+ field,
43
+ });
44
+ }
45
+ function optionalString(record, field) {
46
+ const value = record[field];
47
+ if (value === undefined)
48
+ return undefined;
49
+ if (typeof value === 'string')
50
+ return value;
51
+ throw contractError({
52
+ code: 'invalid-field',
53
+ message: `${field} must be a string.`,
54
+ exitCode: 2,
55
+ field,
56
+ });
57
+ }
58
+ function optionalNumber(record, field) {
59
+ const value = record[field];
60
+ if (value === undefined)
61
+ return undefined;
62
+ if (typeof value === 'number' && Number.isFinite(value))
63
+ return value;
64
+ throw contractError({
65
+ code: 'invalid-field',
66
+ message: `${field} must be a finite number.`,
67
+ exitCode: 2,
68
+ field,
69
+ });
70
+ }
71
+ //# sourceMappingURL=contract-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-errors.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-errors.ts"],"names":[],"mappings":";;;AAcA,sCAOC;AAED,oCAOC;AAED,wCASC;AAED,wCAUC;AAED,wCAUC;AAjED,MAAa,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAAS;IACb,QAAQ,CAAS;IACjB,KAAK,CAAU;IAExB,YAAY,KAA0E;QACpF,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1D,CAAC;CACF;AAZD,oDAYC;AAED,SAAgB,aAAa,CAAC,KAK7B;IACC,OAAO,IAAI,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,YAAY,CAAC,KAAa,EAAE,OAAe;IACzD,MAAM,aAAa,CAAC;QAClB,IAAI,EAAE,eAAe;QACrB,OAAO;QACP,QAAQ,EAAE,CAAC;QACX,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,MAA+B,EAAE,KAAa;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,aAAa,CAAC;QAClB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,GAAG,KAAK,eAAe;QAChC,QAAQ,EAAE,CAAC;QACX,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,MAA+B,EAAE,KAAa;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,aAAa,CAAC;QAClB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,GAAG,KAAK,oBAAoB;QACrC,QAAQ,EAAE,CAAC;QACX,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,cAAc,CAAC,MAA+B,EAAE,KAAa;IAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,MAAM,aAAa,CAAC;QAClB,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,GAAG,KAAK,2BAA2B;QAC5C,QAAQ,EAAE,CAAC;QACX,KAAK;KACN,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ContractRequestError } from './contract-errors';
2
+ import { type ContractEnvelope } from './contract-envelope';
3
+ import type { RequestData } from './contract-support';
4
+ export declare function requestEnvelopeData(input: string): RequestData;
5
+ export declare function requestErrorFromUnknown(error: unknown): ContractRequestError;
6
+ export declare function fallbackErrorEnvelope(fallback: RequestData, requestError: ContractRequestError): ContractEnvelope;
7
+ //# sourceMappingURL=contract-fallback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-fallback.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-fallback.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAiB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAe9D;AAiDD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAO5E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,EACrB,YAAY,EAAE,oBAAoB,GACjC,gBAAgB,CAuBlB"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requestEnvelopeData = requestEnvelopeData;
4
+ exports.requestErrorFromUnknown = requestErrorFromUnknown;
5
+ exports.fallbackErrorEnvelope = fallbackErrorEnvelope;
6
+ const adapters_1 = require("./adapters");
7
+ const contract_env_1 = require("./contract-env");
8
+ const contract_errors_1 = require("./contract-errors");
9
+ const contract_envelope_1 = require("./contract-envelope");
10
+ const json_1 = require("./json");
11
+ const redaction_1 = require("./redaction");
12
+ function requestEnvelopeData(input) {
13
+ try {
14
+ const parsed = (0, json_1.parseJson)(input);
15
+ if ((0, json_1.isRecord)(parsed)) {
16
+ return {
17
+ raw: parsed,
18
+ command: (0, json_1.getString)(parsed, 'command'),
19
+ provider: (0, json_1.getString)(parsed, 'provider'),
20
+ env: fallbackRedactionEnv(parsed),
21
+ };
22
+ }
23
+ }
24
+ catch {
25
+ return { raw: {}, command: null, provider: null, env: {} };
26
+ }
27
+ return { raw: {}, command: null, provider: null, env: {} };
28
+ }
29
+ function fallbackStringRecord(value) {
30
+ if (!(0, json_1.isRecord)(value))
31
+ return {};
32
+ const result = {};
33
+ for (const [key, item] of Object.entries(value)) {
34
+ if (typeof item === 'string')
35
+ result[key] = item;
36
+ }
37
+ return result;
38
+ }
39
+ function fallbackRedactionEnv(value) {
40
+ const options = (0, json_1.isRecord)(value.options) ? value.options : {};
41
+ return (0, contract_env_1.mergeEnvForRedaction)({ source: 'request', env: fallbackStringRecord(value.env) }, { source: 'options.authEnv', env: fallbackStringRecord(options.authEnv) });
42
+ }
43
+ function redactFallbackField(input) {
44
+ if (input.value === null || !input.untrusted)
45
+ return { value: input.value, redactions: [] };
46
+ const result = (0, redaction_1.redactString)(input.value, input.env);
47
+ if (typeof result.value !== 'string') {
48
+ throw new Error('Redacted provider contract field lost its string shape.');
49
+ }
50
+ return { value: result.value, redactions: result.redactions };
51
+ }
52
+ function errorObject(requestError) {
53
+ if (requestError.field === undefined) {
54
+ return {
55
+ code: requestError.code,
56
+ message: requestError.message,
57
+ };
58
+ }
59
+ return {
60
+ code: requestError.code,
61
+ message: requestError.message,
62
+ field: requestError.field,
63
+ };
64
+ }
65
+ function requestErrorFromUnknown(error) {
66
+ if (error instanceof contract_errors_1.ContractRequestError)
67
+ return error;
68
+ return (0, contract_errors_1.contractError)({
69
+ code: 'internal-error',
70
+ message: (0, json_1.unknownToMessage)(error),
71
+ exitCode: 5,
72
+ });
73
+ }
74
+ function fallbackErrorEnvelope(fallback, requestError) {
75
+ const adapter = fallback.provider === null ? null : providerAdapterOrNull(fallback.provider);
76
+ const command = redactFallbackField({
77
+ value: fallback.command,
78
+ env: fallback.env,
79
+ untrusted: requestError.field === 'command',
80
+ });
81
+ const provider = redactFallbackField({
82
+ value: fallback.provider,
83
+ env: fallback.env,
84
+ untrusted: requestError.field === 'provider',
85
+ });
86
+ return (0, contract_envelope_1.errorEnvelope)({
87
+ command: command.value,
88
+ provider: provider.value,
89
+ adapterVersion: adapter?.adapterVersion ?? null,
90
+ redactions: (0, redaction_1.mergeRedactions)((0, contract_env_1.envRedactions)(fallback.env), command.redactions, provider.redactions),
91
+ error: errorObject(requestError),
92
+ });
93
+ }
94
+ function providerAdapterOrNull(provider) {
95
+ try {
96
+ return (0, adapters_1.getProviderAdapter)(provider);
97
+ }
98
+ catch {
99
+ return null;
100
+ }
101
+ }
102
+ //# sourceMappingURL=contract-fallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-fallback.js","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-fallback.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ContractEnvelope } from './contract-envelope';
2
+ import { type RequestData } from './contract-support';
3
+ import type { ProcessRunner } from './process-runner';
4
+ export declare function runInvoke(request: RequestData, runner: ProcessRunner): Promise<ContractEnvelope>;
5
+ //# sourceMappingURL=contract-invoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-invoke.d.ts","sourceRoot":"","sources":["../../src/agent-cli-provider/contract-invoke.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAgD,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKpG,OAAO,KAAK,EAAiB,aAAa,EAAwB,MAAM,kBAAkB,CAAC;AAyC3F,wBAAsB,SAAS,CAC7B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAsC3B"}