@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.
- package/CHANGELOG.md +539 -0
- package/LICENSE +21 -0
- package/README.md +508 -0
- package/cli/commands/inspect-render.js +135 -0
- package/cli/commands/inspect.js +294 -0
- package/cli/commands/providers.js +149 -0
- package/cli/index.js +5431 -0
- package/cli/lib/first-run.js +211 -0
- package/cli/lib/update-checker.js +281 -0
- package/cli/message-formatter-utils.js +75 -0
- package/cli/message-formatters-normal.js +275 -0
- package/cli/message-formatters-watch.js +185 -0
- package/cluster-templates/base-templates/debug-workflow.json +422 -0
- package/cluster-templates/base-templates/full-workflow.json +727 -0
- package/cluster-templates/base-templates/heavy-validation.json +272 -0
- package/cluster-templates/base-templates/quick-validation.json +285 -0
- package/cluster-templates/base-templates/single-worker.json +71 -0
- package/cluster-templates/base-templates/worker-validator.json +230 -0
- package/cluster-templates/conductor-bootstrap.json +130 -0
- package/docker/zeroshot-cluster/Dockerfile +153 -0
- package/docker/zeroshot-cluster/pre-baked-deps.json +28 -0
- package/lib/agent-cli-provider/adapters/claude-parser.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/claude-parser.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/claude-parser.js +122 -0
- package/lib/agent-cli-provider/adapters/claude-parser.js.map +1 -0
- package/lib/agent-cli-provider/adapters/claude-recovery.d.ts +15 -0
- package/lib/agent-cli-provider/adapters/claude-recovery.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/claude-recovery.js +165 -0
- package/lib/agent-cli-provider/adapters/claude-recovery.js.map +1 -0
- package/lib/agent-cli-provider/adapters/claude.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/claude.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/claude.js +181 -0
- package/lib/agent-cli-provider/adapters/claude.js.map +1 -0
- package/lib/agent-cli-provider/adapters/codex-parser.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/codex-parser.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/codex-parser.js +192 -0
- package/lib/agent-cli-provider/adapters/codex-parser.js.map +1 -0
- package/lib/agent-cli-provider/adapters/codex.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/codex.js +151 -0
- package/lib/agent-cli-provider/adapters/codex.js.map +1 -0
- package/lib/agent-cli-provider/adapters/common.d.ts +28 -0
- package/lib/agent-cli-provider/adapters/common.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/common.js +71 -0
- package/lib/agent-cli-provider/adapters/common.js.map +1 -0
- package/lib/agent-cli-provider/adapters/gemini.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/gemini.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/gemini.js +176 -0
- package/lib/agent-cli-provider/adapters/gemini.js.map +1 -0
- package/lib/agent-cli-provider/adapters/index.d.ts +9 -0
- package/lib/agent-cli-provider/adapters/index.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/index.js +95 -0
- package/lib/agent-cli-provider/adapters/index.js.map +1 -0
- package/lib/agent-cli-provider/adapters/opencode.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/opencode.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/opencode.js +228 -0
- package/lib/agent-cli-provider/adapters/opencode.js.map +1 -0
- package/lib/agent-cli-provider/contract-actions.d.ts +5 -0
- package/lib/agent-cli-provider/contract-actions.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-actions.js +140 -0
- package/lib/agent-cli-provider/contract-actions.js.map +1 -0
- package/lib/agent-cli-provider/contract-env.d.ts +11 -0
- package/lib/agent-cli-provider/contract-env.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-env.js +113 -0
- package/lib/agent-cli-provider/contract-env.js.map +1 -0
- package/lib/agent-cli-provider/contract-envelope.d.ts +49 -0
- package/lib/agent-cli-provider/contract-envelope.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-envelope.js +52 -0
- package/lib/agent-cli-provider/contract-envelope.js.map +1 -0
- package/lib/agent-cli-provider/contract-errors.d.ts +22 -0
- package/lib/agent-cli-provider/contract-errors.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-errors.js +71 -0
- package/lib/agent-cli-provider/contract-errors.js.map +1 -0
- package/lib/agent-cli-provider/contract-fallback.d.ts +7 -0
- package/lib/agent-cli-provider/contract-fallback.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-fallback.js +102 -0
- package/lib/agent-cli-provider/contract-fallback.js.map +1 -0
- package/lib/agent-cli-provider/contract-invoke.d.ts +5 -0
- package/lib/agent-cli-provider/contract-invoke.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-invoke.js +89 -0
- package/lib/agent-cli-provider/contract-invoke.js.map +1 -0
- package/lib/agent-cli-provider/contract-options.d.ts +3 -0
- package/lib/agent-cli-provider/contract-options.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-options.js +140 -0
- package/lib/agent-cli-provider/contract-options.js.map +1 -0
- package/lib/agent-cli-provider/contract-parse.d.ts +15 -0
- package/lib/agent-cli-provider/contract-parse.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-parse.js +81 -0
- package/lib/agent-cli-provider/contract-parse.js.map +1 -0
- package/lib/agent-cli-provider/contract-support.d.ts +18 -0
- package/lib/agent-cli-provider/contract-support.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract-support.js +154 -0
- package/lib/agent-cli-provider/contract-support.js.map +1 -0
- package/lib/agent-cli-provider/contract.d.ts +13 -0
- package/lib/agent-cli-provider/contract.d.ts.map +1 -0
- package/lib/agent-cli-provider/contract.js +30 -0
- package/lib/agent-cli-provider/contract.js.map +1 -0
- package/lib/agent-cli-provider/env-safety.d.ts +11 -0
- package/lib/agent-cli-provider/env-safety.d.ts.map +1 -0
- package/lib/agent-cli-provider/env-safety.js +83 -0
- package/lib/agent-cli-provider/env-safety.js.map +1 -0
- package/lib/agent-cli-provider/errors.d.ts +5 -0
- package/lib/agent-cli-provider/errors.d.ts.map +1 -0
- package/lib/agent-cli-provider/errors.js +115 -0
- package/lib/agent-cli-provider/errors.js.map +1 -0
- package/lib/agent-cli-provider/executable.d.ts +3 -0
- package/lib/agent-cli-provider/executable.d.ts.map +1 -0
- package/lib/agent-cli-provider/executable.js +24 -0
- package/lib/agent-cli-provider/executable.js.map +1 -0
- package/lib/agent-cli-provider/index.d.ts +8 -0
- package/lib/agent-cli-provider/index.d.ts.map +1 -0
- package/lib/agent-cli-provider/index.js +31 -0
- package/lib/agent-cli-provider/index.js.map +1 -0
- package/lib/agent-cli-provider/invoke-evidence.d.ts +4 -0
- package/lib/agent-cli-provider/invoke-evidence.d.ts.map +1 -0
- package/lib/agent-cli-provider/invoke-evidence.js +17 -0
- package/lib/agent-cli-provider/invoke-evidence.js.map +1 -0
- package/lib/agent-cli-provider/json.d.ts +16 -0
- package/lib/agent-cli-provider/json.d.ts.map +1 -0
- package/lib/agent-cli-provider/json.js +110 -0
- package/lib/agent-cli-provider/json.js.map +1 -0
- package/lib/agent-cli-provider/log-prefix.d.ts +2 -0
- package/lib/agent-cli-provider/log-prefix.d.ts.map +1 -0
- package/lib/agent-cli-provider/log-prefix.js +22 -0
- package/lib/agent-cli-provider/log-prefix.js.map +1 -0
- package/lib/agent-cli-provider/process-runner.d.ts +17 -0
- package/lib/agent-cli-provider/process-runner.d.ts.map +1 -0
- package/lib/agent-cli-provider/process-runner.js +89 -0
- package/lib/agent-cli-provider/process-runner.js.map +1 -0
- package/lib/agent-cli-provider/redaction.d.ts +9 -0
- package/lib/agent-cli-provider/redaction.d.ts.map +1 -0
- package/lib/agent-cli-provider/redaction.js +227 -0
- package/lib/agent-cli-provider/redaction.js.map +1 -0
- package/lib/agent-cli-provider/schema.d.ts +5 -0
- package/lib/agent-cli-provider/schema.d.ts.map +1 -0
- package/lib/agent-cli-provider/schema.js +136 -0
- package/lib/agent-cli-provider/schema.js.map +1 -0
- package/lib/agent-cli-provider/single-agent-runtime.d.ts +15 -0
- package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -0
- package/lib/agent-cli-provider/single-agent-runtime.js +228 -0
- package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -0
- package/lib/agent-cli-provider/types.d.ts +194 -0
- package/lib/agent-cli-provider/types.d.ts.map +1 -0
- package/lib/agent-cli-provider/types.js +12 -0
- package/lib/agent-cli-provider/types.js.map +1 -0
- package/lib/completion.js +174 -0
- package/lib/detached-startup.js +220 -0
- package/lib/docker-config.js +220 -0
- package/lib/git-remote-utils.js +165 -0
- package/lib/id-detector.js +55 -0
- package/lib/provider-defaults.js +62 -0
- package/lib/provider-detection.js +59 -0
- package/lib/provider-names.js +57 -0
- package/lib/repo-settings.js +69 -0
- package/lib/settings/claude-auth.js +78 -0
- package/lib/settings.js +542 -0
- package/lib/start-cluster.js +321 -0
- package/lib/stream-json-parser.js +67 -0
- package/package.json +162 -0
- package/scripts/fix-node-pty-permissions.js +75 -0
- package/scripts/record-demo.sh +279 -0
- package/scripts/setup-merge-queue.sh +170 -0
- package/scripts/test-install.sh +40 -0
- package/scripts/validate-templates.js +107 -0
- package/src/agent/agent-config.js +266 -0
- package/src/agent/agent-context-builder.js +189 -0
- package/src/agent/agent-context-sections.js +338 -0
- package/src/agent/agent-context-sources.js +147 -0
- package/src/agent/agent-hook-executor.js +721 -0
- package/src/agent/agent-input-injector.js +141 -0
- package/src/agent/agent-lifecycle.js +982 -0
- package/src/agent/agent-quality-gate-schema.js +93 -0
- package/src/agent/agent-quality-gates-context.js +51 -0
- package/src/agent/agent-stuck-detector.js +256 -0
- package/src/agent/agent-task-executor.js +2028 -0
- package/src/agent/agent-trigger-evaluator.js +67 -0
- package/src/agent/context-metrics.js +160 -0
- package/src/agent/context-pack-builder.js +367 -0
- package/src/agent/context-replay-policy.js +51 -0
- package/src/agent/guidance-queue.js +77 -0
- package/src/agent/output-extraction.js +367 -0
- package/src/agent/output-reformatter.js +175 -0
- package/src/agent/pr-verification.js +653 -0
- package/src/agent/rate-limit-backoff.js +82 -0
- package/src/agent/schema-utils.js +146 -0
- package/src/agent/validation-platform.js +35 -0
- package/src/agent-cli-provider/adapters/claude-parser.ts +133 -0
- package/src/agent-cli-provider/adapters/claude-recovery.ts +203 -0
- package/src/agent-cli-provider/adapters/claude.ts +247 -0
- package/src/agent-cli-provider/adapters/codex-parser.ts +211 -0
- package/src/agent-cli-provider/adapters/codex.ts +217 -0
- package/src/agent-cli-provider/adapters/common.ts +124 -0
- package/src/agent-cli-provider/adapters/gemini.ts +243 -0
- package/src/agent-cli-provider/adapters/index.ts +126 -0
- package/src/agent-cli-provider/adapters/opencode.ts +286 -0
- package/src/agent-cli-provider/contract-actions.ts +150 -0
- package/src/agent-cli-provider/contract-env.ts +111 -0
- package/src/agent-cli-provider/contract-envelope.ts +110 -0
- package/src/agent-cli-provider/contract-errors.ts +66 -0
- package/src/agent-cli-provider/contract-fallback.ts +121 -0
- package/src/agent-cli-provider/contract-invoke.ts +104 -0
- package/src/agent-cli-provider/contract-options.ts +173 -0
- package/src/agent-cli-provider/contract-parse.ts +94 -0
- package/src/agent-cli-provider/contract-support.ts +167 -0
- package/src/agent-cli-provider/contract.ts +56 -0
- package/src/agent-cli-provider/env-safety.ts +82 -0
- package/src/agent-cli-provider/errors.ts +122 -0
- package/src/agent-cli-provider/executable.ts +24 -0
- package/src/agent-cli-provider/index.ts +83 -0
- package/src/agent-cli-provider/invoke-evidence.ts +18 -0
- package/src/agent-cli-provider/json.ts +114 -0
- package/src/agent-cli-provider/log-prefix.ts +20 -0
- package/src/agent-cli-provider/process-runner.ts +145 -0
- package/src/agent-cli-provider/redaction.ts +282 -0
- package/src/agent-cli-provider/schema.ts +115 -0
- package/src/agent-cli-provider/single-agent-runtime.ts +311 -0
- package/src/agent-cli-provider/types.ts +237 -0
- package/src/agent-wrapper.js +615 -0
- package/src/agents/git-pusher-template.js +705 -0
- package/src/attach/attach-client.js +438 -0
- package/src/attach/attach-server.js +543 -0
- package/src/attach/index.js +37 -0
- package/src/attach/protocol.js +220 -0
- package/src/attach/ring-buffer.js +121 -0
- package/src/attach/send-input.js +88 -0
- package/src/attach/socket-discovery.js +267 -0
- package/src/claude-task-runner.js +661 -0
- package/src/config-router.js +89 -0
- package/src/config-validator.js +2202 -0
- package/src/copy-worker.js +43 -0
- package/src/guidance-topics.js +10 -0
- package/src/input-helpers.js +65 -0
- package/src/isolation-manager.js +1734 -0
- package/src/issue-providers/README.md +305 -0
- package/src/issue-providers/azure-devops-provider.js +307 -0
- package/src/issue-providers/base-provider.js +232 -0
- package/src/issue-providers/github-provider.js +210 -0
- package/src/issue-providers/gitlab-provider.js +262 -0
- package/src/issue-providers/index.js +196 -0
- package/src/issue-providers/jira-provider.js +260 -0
- package/src/ledger.js +692 -0
- package/src/lib/gc.js +232 -0
- package/src/lib/safe-exec.js +88 -0
- package/src/logic-engine.js +201 -0
- package/src/message-buffer.js +81 -0
- package/src/message-bus-bridge.js +144 -0
- package/src/message-bus.js +256 -0
- package/src/name-generator.js +232 -0
- package/src/orchestrator.js +3924 -0
- package/src/preflight.js +712 -0
- package/src/process-metrics.js +608 -0
- package/src/providers/anthropic/index.js +3 -0
- package/src/providers/base-provider.js +355 -0
- package/src/providers/capabilities.js +60 -0
- package/src/providers/google/index.js +3 -0
- package/src/providers/index.js +293 -0
- package/src/providers/openai/index.js +3 -0
- package/src/providers/opencode/index.js +3 -0
- package/src/quality-gates.js +143 -0
- package/src/schemas/sub-cluster.js +208 -0
- package/src/state-snapshot.js +398 -0
- package/src/state-snapshotter.js +142 -0
- package/src/status-footer.js +1026 -0
- package/src/sub-cluster-wrapper.js +693 -0
- package/src/task-runner.js +30 -0
- package/src/template-resolver.js +425 -0
- package/src/template-validation/index.js +338 -0
- package/src/template-validation/simulate-consensus-gates.js +324 -0
- package/src/template-validation/simulate-random-topology.js +541 -0
- package/src/template-validation/simulate-two-stage-validation.js +270 -0
- package/src/worktree-claude-config.js +135 -0
- package/src/worktree-tooling-env.js +150 -0
- package/task-lib/attachable-watcher.js +381 -0
- package/task-lib/commands/clean.js +50 -0
- package/task-lib/commands/episodes.js +105 -0
- package/task-lib/commands/get-log-path.js +23 -0
- package/task-lib/commands/kill.js +32 -0
- package/task-lib/commands/list.js +105 -0
- package/task-lib/commands/logs.js +439 -0
- package/task-lib/commands/resume.js +42 -0
- package/task-lib/commands/run.js +57 -0
- package/task-lib/commands/schedule.js +105 -0
- package/task-lib/commands/scheduler-cmd.js +96 -0
- package/task-lib/commands/schedules.js +148 -0
- package/task-lib/commands/status.js +44 -0
- package/task-lib/commands/unschedule.js +16 -0
- package/task-lib/completion.js +9 -0
- package/task-lib/config.js +11 -0
- package/task-lib/name-generator.js +230 -0
- package/task-lib/package.json +3 -0
- package/task-lib/provider-helper-runtime.js +29 -0
- package/task-lib/runner.js +190 -0
- package/task-lib/scheduler.js +252 -0
- package/task-lib/store.js +529 -0
- 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"}
|