@the-open-engine/zeroshot 6.4.0 → 6.6.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/cli/commands/providers.js +11 -5
- package/cli/index.js +79 -16
- package/cli/lib/first-run.js +14 -3
- package/docker/zeroshot-cluster/Dockerfile +11 -1
- package/lib/agent-cli-provider/acp-stdio-runner.d.ts +4 -0
- package/lib/agent-cli-provider/acp-stdio-runner.d.ts.map +1 -0
- package/lib/agent-cli-provider/acp-stdio-runner.js +259 -0
- package/lib/agent-cli-provider/acp-stdio-runner.js.map +1 -0
- package/lib/agent-cli-provider/adapters/acp.d.ts +23 -0
- package/lib/agent-cli-provider/adapters/acp.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/acp.js +373 -0
- package/lib/agent-cli-provider/adapters/acp.js.map +1 -0
- package/lib/agent-cli-provider/adapters/claude.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/claude.js +2 -29
- package/lib/agent-cli-provider/adapters/claude.js.map +1 -1
- package/lib/agent-cli-provider/adapters/copilot-parser.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/copilot-parser.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/copilot-parser.js +154 -0
- package/lib/agent-cli-provider/adapters/copilot-parser.js.map +1 -0
- package/lib/agent-cli-provider/adapters/copilot.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/copilot.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/copilot.js +176 -0
- package/lib/agent-cli-provider/adapters/copilot.js.map +1 -0
- package/lib/agent-cli-provider/adapters/gateway.d.ts +6 -0
- package/lib/agent-cli-provider/adapters/gateway.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/gateway.js +161 -0
- package/lib/agent-cli-provider/adapters/gateway.js.map +1 -0
- package/lib/agent-cli-provider/adapters/gemini.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/gemini.js +9 -2
- package/lib/agent-cli-provider/adapters/gemini.js.map +1 -1
- package/lib/agent-cli-provider/adapters/index.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/index.js +6 -34
- package/lib/agent-cli-provider/adapters/index.js.map +1 -1
- package/lib/agent-cli-provider/adapters/opencode.d.ts.map +1 -1
- package/lib/agent-cli-provider/adapters/opencode.js +5 -1
- package/lib/agent-cli-provider/adapters/opencode.js.map +1 -1
- package/lib/agent-cli-provider/adapters/pi.d.ts +3 -0
- package/lib/agent-cli-provider/adapters/pi.d.ts.map +1 -0
- package/lib/agent-cli-provider/adapters/pi.js +331 -0
- package/lib/agent-cli-provider/adapters/pi.js.map +1 -0
- package/lib/agent-cli-provider/claude-command.d.ts +6 -0
- package/lib/agent-cli-provider/claude-command.d.ts.map +1 -0
- package/lib/agent-cli-provider/claude-command.js +43 -0
- package/lib/agent-cli-provider/claude-command.js.map +1 -0
- package/lib/agent-cli-provider/contract-actions.d.ts.map +1 -1
- package/lib/agent-cli-provider/contract-actions.js +13 -17
- package/lib/agent-cli-provider/contract-actions.js.map +1 -1
- package/lib/agent-cli-provider/contract-invoke.d.ts.map +1 -1
- package/lib/agent-cli-provider/contract-invoke.js +10 -3
- package/lib/agent-cli-provider/contract-invoke.js.map +1 -1
- package/lib/agent-cli-provider/contract-options.d.ts.map +1 -1
- package/lib/agent-cli-provider/contract-options.js +57 -2
- package/lib/agent-cli-provider/contract-options.js.map +1 -1
- package/lib/agent-cli-provider/contract-support.d.ts +1 -0
- package/lib/agent-cli-provider/contract-support.d.ts.map +1 -1
- package/lib/agent-cli-provider/contract-support.js +25 -3
- package/lib/agent-cli-provider/contract-support.js.map +1 -1
- package/lib/agent-cli-provider/errors.d.ts +1 -0
- package/lib/agent-cli-provider/errors.d.ts.map +1 -1
- package/lib/agent-cli-provider/errors.js +14 -5
- package/lib/agent-cli-provider/errors.js.map +1 -1
- package/lib/agent-cli-provider/gateway-client.d.ts +32 -0
- package/lib/agent-cli-provider/gateway-client.d.ts.map +1 -0
- package/lib/agent-cli-provider/gateway-client.js +135 -0
- package/lib/agent-cli-provider/gateway-client.js.map +1 -0
- package/lib/agent-cli-provider/gateway-runner.d.ts +9 -0
- package/lib/agent-cli-provider/gateway-runner.d.ts.map +1 -0
- package/lib/agent-cli-provider/gateway-runner.js +294 -0
- package/lib/agent-cli-provider/gateway-runner.js.map +1 -0
- package/lib/agent-cli-provider/gateway-tools.d.ts +14 -0
- package/lib/agent-cli-provider/gateway-tools.d.ts.map +1 -0
- package/lib/agent-cli-provider/gateway-tools.js +495 -0
- package/lib/agent-cli-provider/gateway-tools.js.map +1 -0
- package/lib/agent-cli-provider/index.d.ts +3 -2
- package/lib/agent-cli-provider/index.d.ts.map +1 -1
- package/lib/agent-cli-provider/index.js +14 -1
- package/lib/agent-cli-provider/index.js.map +1 -1
- package/lib/agent-cli-provider/invoke-evidence.d.ts +2 -2
- package/lib/agent-cli-provider/invoke-evidence.d.ts.map +1 -1
- package/lib/agent-cli-provider/invoke-evidence.js +17 -3
- package/lib/agent-cli-provider/invoke-evidence.js.map +1 -1
- package/lib/agent-cli-provider/provider-registry.d.ts +437 -0
- package/lib/agent-cli-provider/provider-registry.d.ts.map +1 -0
- package/lib/agent-cli-provider/provider-registry.js +411 -0
- package/lib/agent-cli-provider/provider-registry.js.map +1 -0
- package/lib/agent-cli-provider/single-agent-runtime.d.ts +7 -0
- package/lib/agent-cli-provider/single-agent-runtime.d.ts.map +1 -1
- package/lib/agent-cli-provider/single-agent-runtime.js +139 -19
- package/lib/agent-cli-provider/single-agent-runtime.js.map +1 -1
- package/lib/agent-cli-provider/types.d.ts +106 -4
- package/lib/agent-cli-provider/types.d.ts.map +1 -1
- package/lib/agent-cli-provider/types.js.map +1 -1
- package/lib/docker-config.js +24 -13
- package/lib/provider-defaults.js +15 -4
- package/lib/provider-detection.js +2 -0
- package/lib/provider-names.js +32 -12
- package/lib/repo-settings.js +15 -1
- package/lib/settings/claude-auth.js +3 -6
- package/lib/settings.js +17 -2
- package/lib/setup-apply.js +300 -0
- package/lib/setup-journal.js +109 -0
- package/lib/setup-plan.js +406 -0
- package/lib/setup-undo.js +88 -0
- package/lib/start-cluster.js +12 -1
- package/lib/stream-json-parser.js +7 -5
- package/package.json +31 -1
- package/scripts/assert-release-published.js +53 -0
- package/scripts/live-provider-smoke.js +221 -0
- package/scripts/release-preflight.js +236 -0
- package/src/agent/agent-lifecycle.js +5 -4
- package/src/agent/agent-quality-gate-schema.js +2 -2
- package/src/agent/agent-task-executor.js +41 -2
- package/src/agent-cli-provider/acp-stdio-runner.ts +314 -0
- package/src/agent-cli-provider/adapters/acp.ts +493 -0
- package/src/agent-cli-provider/adapters/claude.ts +2 -32
- package/src/agent-cli-provider/adapters/copilot-parser.ts +166 -0
- package/src/agent-cli-provider/adapters/copilot.ts +231 -0
- package/src/agent-cli-provider/adapters/gateway.ts +186 -0
- package/src/agent-cli-provider/adapters/gemini.ts +9 -2
- package/src/agent-cli-provider/adapters/index.ts +5 -36
- package/src/agent-cli-provider/adapters/opencode.ts +4 -1
- package/src/agent-cli-provider/adapters/pi.ts +410 -0
- package/src/agent-cli-provider/claude-command.ts +47 -0
- package/src/agent-cli-provider/contract-actions.ts +14 -17
- package/src/agent-cli-provider/contract-invoke.ts +12 -3
- package/src/agent-cli-provider/contract-options.ts +72 -3
- package/src/agent-cli-provider/contract-support.ts +30 -3
- package/src/agent-cli-provider/errors.ts +14 -4
- package/src/agent-cli-provider/gateway-client.ts +170 -0
- package/src/agent-cli-provider/gateway-runner.ts +353 -0
- package/src/agent-cli-provider/gateway-tools.ts +616 -0
- package/src/agent-cli-provider/index.ts +28 -0
- package/src/agent-cli-provider/invoke-evidence.ts +24 -3
- package/src/agent-cli-provider/provider-registry.ts +515 -0
- package/src/agent-cli-provider/single-agent-runtime.ts +192 -18
- package/src/agent-cli-provider/types.ts +145 -4
- package/src/config-validator.js +33 -15
- package/src/isolation-manager.js +124 -19
- package/src/orchestrator.js +23 -10
- package/src/preflight.js +83 -30
- package/src/providers/capabilities.js +15 -42
- package/src/providers/index.js +52 -72
- package/src/worktree-claude-config.js +17 -0
- package/task-lib/commands/run.js +1 -0
- package/task-lib/provider-helper-runtime.js +11 -0
- package/task-lib/runner.js +7 -0
package/src/providers/index.js
CHANGED
|
@@ -1,61 +1,16 @@
|
|
|
1
1
|
const BaseProvider = require('./base-provider');
|
|
2
|
-
const {
|
|
3
|
-
|
|
2
|
+
const {
|
|
3
|
+
getProviderMetadata,
|
|
4
|
+
normalizeProviderName,
|
|
5
|
+
resolveProviderCommand,
|
|
6
|
+
} = require('../../lib/provider-names');
|
|
4
7
|
const { commandExists, getCommandPath } = require('../../lib/provider-detection');
|
|
5
8
|
const helper = require('../../lib/agent-cli-provider');
|
|
6
9
|
|
|
7
|
-
const PROVIDER_METADATA = {
|
|
8
|
-
claude: {
|
|
9
|
-
displayName: 'Claude',
|
|
10
|
-
cliCommand: 'claude',
|
|
11
|
-
helpArgs: () => getClaudeCommand().args,
|
|
12
|
-
commandParts: () => getClaudeCommand(),
|
|
13
|
-
installInstructions:
|
|
14
|
-
'npm install -g @anthropic-ai/claude-code\nOr (macOS): brew install claude',
|
|
15
|
-
authInstructions: 'claude login',
|
|
16
|
-
credentialPaths: ['~/.claude'],
|
|
17
|
-
settingsFields: ['anthropicApiKey', 'bedrockApiKey', 'bedrockRegion'],
|
|
18
|
-
},
|
|
19
|
-
codex: {
|
|
20
|
-
displayName: 'Codex',
|
|
21
|
-
cliCommand: 'codex',
|
|
22
|
-
helpArgs: () => ['exec'],
|
|
23
|
-
commandParts: () => ({ command: 'codex', args: [] }),
|
|
24
|
-
installInstructions: 'npm install -g @openai/codex',
|
|
25
|
-
authInstructions: 'codex login',
|
|
26
|
-
credentialPaths: ['~/.config/codex', '~/.codex'],
|
|
27
|
-
settingsFields: [],
|
|
28
|
-
},
|
|
29
|
-
gemini: {
|
|
30
|
-
displayName: 'Gemini',
|
|
31
|
-
cliCommand: 'gemini',
|
|
32
|
-
helpArgs: () => [],
|
|
33
|
-
commandParts: () => ({ command: 'gemini', args: [] }),
|
|
34
|
-
installInstructions: 'npm install -g @google/gemini-cli',
|
|
35
|
-
authInstructions: 'gemini auth login',
|
|
36
|
-
credentialPaths: ['~/.config/gcloud', '~/.config/gemini', '~/.gemini'],
|
|
37
|
-
settingsFields: [],
|
|
38
|
-
},
|
|
39
|
-
opencode: {
|
|
40
|
-
displayName: 'Opencode',
|
|
41
|
-
cliCommand: 'opencode',
|
|
42
|
-
helpArgs: () => ['run'],
|
|
43
|
-
commandParts: () => ({ command: 'opencode', args: [] }),
|
|
44
|
-
installInstructions: 'See https://opencode.ai for installation instructions.',
|
|
45
|
-
authInstructions: 'opencode auth login',
|
|
46
|
-
credentialPaths: ['~/.local/share/opencode'],
|
|
47
|
-
settingsFields: [],
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
|
-
|
|
51
10
|
const warned = new Set();
|
|
52
11
|
|
|
53
12
|
function metadataForProvider(name) {
|
|
54
|
-
|
|
55
|
-
if (!metadata) {
|
|
56
|
-
throw new Error(`Unknown provider: ${name}. Valid: ${listProviders().join(', ')}`);
|
|
57
|
-
}
|
|
58
|
-
return metadata;
|
|
13
|
+
return getProviderMetadata(name);
|
|
59
14
|
}
|
|
60
15
|
|
|
61
16
|
class RuntimeProvider extends BaseProvider {
|
|
@@ -65,7 +20,7 @@ class RuntimeProvider extends BaseProvider {
|
|
|
65
20
|
super({
|
|
66
21
|
name: normalized,
|
|
67
22
|
displayName: metadata.displayName,
|
|
68
|
-
cliCommand: metadata.
|
|
23
|
+
cliCommand: metadata.binary,
|
|
69
24
|
});
|
|
70
25
|
this._metadata = metadata;
|
|
71
26
|
this._adapter = helper.getProviderAdapter(normalized);
|
|
@@ -78,12 +33,19 @@ class RuntimeProvider extends BaseProvider {
|
|
|
78
33
|
}
|
|
79
34
|
|
|
80
35
|
isAvailable() {
|
|
81
|
-
|
|
82
|
-
|
|
36
|
+
if (this._usesBundledRunner()) {
|
|
37
|
+
return helper.probeRuntimeProviderCli(this.name).available;
|
|
38
|
+
}
|
|
39
|
+
const { command } = resolveProviderCommand(this.name);
|
|
40
|
+
if (!commandExists(command)) return false;
|
|
41
|
+
return helper.probeRuntimeProviderCli(this.name).available;
|
|
83
42
|
}
|
|
84
43
|
|
|
85
44
|
getCliPath() {
|
|
86
|
-
|
|
45
|
+
if (this._usesBundledRunner()) {
|
|
46
|
+
return this._adapter.binary || process.execPath;
|
|
47
|
+
}
|
|
48
|
+
const { command } = resolveProviderCommand(this.name);
|
|
87
49
|
return getCommandPath(command) || command;
|
|
88
50
|
}
|
|
89
51
|
|
|
@@ -105,6 +67,10 @@ class RuntimeProvider extends BaseProvider {
|
|
|
105
67
|
return this._metadata.credentialPaths;
|
|
106
68
|
}
|
|
107
69
|
|
|
70
|
+
_usesBundledRunner() {
|
|
71
|
+
return this._adapter.detectCliFeatures('').supportsBundledRunner === true;
|
|
72
|
+
}
|
|
73
|
+
|
|
108
74
|
buildCommand(context, options = {}) {
|
|
109
75
|
const prepared = helper.prepareSingleAgentProviderCommand({
|
|
110
76
|
provider: this.name,
|
|
@@ -169,30 +135,42 @@ class RuntimeProvider extends BaseProvider {
|
|
|
169
135
|
|
|
170
136
|
getDefaultSettings() {
|
|
171
137
|
const settings = super.getDefaultSettings();
|
|
172
|
-
if (this.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
138
|
+
if (this._metadata.settingsDefaults) {
|
|
139
|
+
return {
|
|
140
|
+
...settings,
|
|
141
|
+
...this._metadata.settingsDefaults,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
if (this._metadata.settingsFields.length === 0) return settings;
|
|
145
|
+
return this._metadata.settingsFields.reduce(
|
|
146
|
+
(result, field) => ({
|
|
147
|
+
...result,
|
|
148
|
+
[field]: null,
|
|
149
|
+
}),
|
|
150
|
+
{ ...settings }
|
|
151
|
+
);
|
|
179
152
|
}
|
|
180
153
|
|
|
181
154
|
validateSettings(settings) {
|
|
182
155
|
const baseError = super.validateSettings(settings);
|
|
183
156
|
if (baseError) return baseError;
|
|
157
|
+
if (this._metadata.settingsValidator) {
|
|
158
|
+
const providerError = this._metadata.settingsValidator(settings);
|
|
159
|
+
if (providerError) return providerError;
|
|
160
|
+
} else {
|
|
161
|
+
for (const field of this._metadata.settingsFields) {
|
|
162
|
+
if (
|
|
163
|
+
settings[field] !== undefined &&
|
|
164
|
+
settings[field] !== null &&
|
|
165
|
+
typeof settings[field] !== 'string'
|
|
166
|
+
) {
|
|
167
|
+
return `providerSettings.${this.name}.${field} must be a string or null`;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
184
171
|
if (this.name !== 'claude') return null;
|
|
185
172
|
|
|
186
173
|
const { isValidAnthropicKey, ANTHROPIC_KEY_PREFIX } = require('../../lib/settings/claude-auth');
|
|
187
|
-
for (const field of this._metadata.settingsFields) {
|
|
188
|
-
if (
|
|
189
|
-
settings[field] !== undefined &&
|
|
190
|
-
settings[field] !== null &&
|
|
191
|
-
typeof settings[field] !== 'string'
|
|
192
|
-
) {
|
|
193
|
-
return `providerSettings.claude.${field} must be a string or null`;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
174
|
if (settings.anthropicApiKey && !isValidAnthropicKey(settings.anthropicApiKey)) {
|
|
197
175
|
return `providerSettings.claude.anthropicApiKey must start with ${ANTHROPIC_KEY_PREFIX}`;
|
|
198
176
|
}
|
|
@@ -206,7 +184,9 @@ class RuntimeProvider extends BaseProvider {
|
|
|
206
184
|
|
|
207
185
|
function getProvider(name) {
|
|
208
186
|
const normalized = normalizeProviderName(name || '');
|
|
209
|
-
|
|
187
|
+
try {
|
|
188
|
+
metadataForProvider(normalized);
|
|
189
|
+
} catch {
|
|
210
190
|
throw new Error(`Unknown provider: ${name}. Valid: ${listProviders().join(', ')}`);
|
|
211
191
|
}
|
|
212
192
|
return new RuntimeProvider(normalized);
|
|
@@ -119,6 +119,23 @@ function prepareClaudeConfigDir(options = {}) {
|
|
|
119
119
|
return overlayDir;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Resolve the repo's `.mcp.json` path (the same MCP-server source Claude consumes via
|
|
124
|
+
* prepareClaudeConfigDir) for a given worktree/cwd, or null if none exists. Reused by providers
|
|
125
|
+
* that consume MCP servers through a CLI flag instead of the Claude config-dir overlay (e.g.
|
|
126
|
+
* Copilot's `--additional-mcp-config`), so both providers share one MCP config surface.
|
|
127
|
+
*/
|
|
128
|
+
function resolveRepoMcpConfigPath(options = {}) {
|
|
129
|
+
const worktreeRoot = resolveWorktreeRoot(options.worktreePath || options.cwd);
|
|
130
|
+
if (!worktreeRoot) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const mcpPath = path.join(worktreeRoot, CLAUDE_DIRNAME, MCP_BASENAME);
|
|
135
|
+
return fs.existsSync(mcpPath) ? mcpPath : null;
|
|
136
|
+
}
|
|
137
|
+
|
|
122
138
|
module.exports = {
|
|
123
139
|
prepareClaudeConfigDir,
|
|
140
|
+
resolveRepoMcpConfigPath,
|
|
124
141
|
};
|
package/task-lib/commands/run.js
CHANGED
|
@@ -19,11 +19,22 @@ export const {
|
|
|
19
19
|
classifyProviderError,
|
|
20
20
|
detectProviderFatalError,
|
|
21
21
|
detectProviderStreamingModeError,
|
|
22
|
+
findProviderRegistryEntry,
|
|
22
23
|
getProviderAdapter,
|
|
24
|
+
getProviderRegistryEntry,
|
|
25
|
+
knownProviderNames,
|
|
23
26
|
listProviderAdapters,
|
|
27
|
+
listProviderRegistryEntries,
|
|
28
|
+
normalizeProviderName,
|
|
24
29
|
parseProviderChunk,
|
|
25
30
|
prepareSingleAgentProviderCommand,
|
|
26
31
|
recoverProviderStructuredOutput,
|
|
32
|
+
resolveProviderCommand,
|
|
27
33
|
resolveModelSpec,
|
|
34
|
+
supportsProviderCapability,
|
|
35
|
+
providerAliasMap,
|
|
36
|
+
providerAliases,
|
|
37
|
+
providerIds,
|
|
38
|
+
providerRegistry,
|
|
28
39
|
supportsProviderStructuredOutputRecovery,
|
|
29
40
|
} = helper;
|
package/task-lib/runner.js
CHANGED
|
@@ -80,11 +80,18 @@ function buildProviderOptions(options, outputFormat, jsonSchema, cwd) {
|
|
|
80
80
|
cwd,
|
|
81
81
|
autoApprove: true,
|
|
82
82
|
...modelSpecOption(options),
|
|
83
|
+
...mcpConfigOption(options),
|
|
83
84
|
...(options.resume ? { resumeSessionId: options.resume } : {}),
|
|
84
85
|
...(options.continue ? { continueSession: true } : {}),
|
|
85
86
|
};
|
|
86
87
|
}
|
|
87
88
|
|
|
89
|
+
function mcpConfigOption(options) {
|
|
90
|
+
const entries = options.mcpConfig;
|
|
91
|
+
if (!Array.isArray(entries) || entries.length === 0) return {};
|
|
92
|
+
return { mcpConfig: entries };
|
|
93
|
+
}
|
|
94
|
+
|
|
88
95
|
function modelSpecOption(options) {
|
|
89
96
|
const modelSpec = resolveRequestedModelSpec(options);
|
|
90
97
|
return modelSpec === undefined ? {} : { modelSpec };
|