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