@covibes/zeroshot 5.3.0 → 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/README.md +94 -14
- package/cli/commands/providers.js +8 -9
- package/cli/index.js +3032 -2409
- package/cli/message-formatters-normal.js +28 -6
- package/cluster-templates/base-templates/debug-workflow.json +1 -1
- package/cluster-templates/base-templates/full-workflow.json +72 -188
- package/cluster-templates/base-templates/worker-validator.json +59 -3
- package/cluster-templates/conductor-bootstrap.json +4 -4
- package/lib/docker-config.js +8 -0
- package/lib/git-remote-utils.js +165 -0
- package/lib/id-detector.js +10 -7
- package/lib/provider-defaults.js +62 -0
- package/lib/provider-names.js +2 -1
- package/lib/settings/claude-auth.js +78 -0
- package/lib/settings.js +161 -63
- package/package.json +7 -2
- package/scripts/setup-merge-queue.sh +170 -0
- package/src/agent/agent-config.js +135 -82
- package/src/agent/agent-context-builder.js +297 -188
- package/src/agent/agent-hook-executor.js +310 -113
- package/src/agent/agent-lifecycle.js +385 -325
- package/src/agent/agent-stuck-detector.js +7 -7
- package/src/agent/agent-task-executor.js +824 -565
- package/src/agent/output-extraction.js +41 -24
- package/src/agent/output-reformatter.js +1 -1
- package/src/agent/schema-utils.js +108 -73
- package/src/agent-wrapper.js +10 -1
- package/src/agents/git-pusher-template.js +285 -0
- package/src/claude-task-runner.js +85 -34
- package/src/config-validator.js +922 -657
- package/src/input-helpers.js +65 -0
- package/src/isolation-manager.js +289 -199
- package/src/issue-providers/README.md +305 -0
- package/src/issue-providers/azure-devops-provider.js +273 -0
- package/src/issue-providers/base-provider.js +232 -0
- package/src/issue-providers/github-provider.js +179 -0
- package/src/issue-providers/gitlab-provider.js +241 -0
- package/src/issue-providers/index.js +196 -0
- package/src/issue-providers/jira-provider.js +239 -0
- package/src/ledger.js +22 -5
- package/src/lib/safe-exec.js +88 -0
- package/src/orchestrator.js +1107 -811
- package/src/preflight.js +313 -159
- package/src/process-metrics.js +98 -56
- package/src/providers/anthropic/cli-builder.js +53 -25
- package/src/providers/anthropic/index.js +72 -2
- package/src/providers/anthropic/output-parser.js +32 -14
- package/src/providers/base-provider.js +70 -0
- package/src/providers/capabilities.js +9 -0
- package/src/providers/google/output-parser.js +47 -38
- package/src/providers/index.js +19 -3
- package/src/providers/openai/cli-builder.js +14 -3
- package/src/providers/openai/index.js +1 -0
- package/src/providers/openai/output-parser.js +44 -30
- package/src/providers/opencode/cli-builder.js +42 -0
- package/src/providers/opencode/index.js +103 -0
- package/src/providers/opencode/models.js +55 -0
- package/src/providers/opencode/output-parser.js +122 -0
- package/src/schemas/sub-cluster.js +68 -39
- package/src/status-footer.js +94 -48
- package/src/sub-cluster-wrapper.js +76 -35
- package/src/template-resolver.js +12 -9
- package/src/tui/data-poller.js +123 -99
- package/src/tui/formatters.js +4 -3
- package/src/tui/keybindings.js +259 -318
- package/src/tui/renderer.js +11 -21
- package/task-lib/attachable-watcher.js +118 -81
- package/task-lib/claude-recovery.js +61 -24
- package/task-lib/commands/episodes.js +105 -0
- package/task-lib/commands/list.js +2 -2
- package/task-lib/commands/logs.js +231 -189
- package/task-lib/commands/schedules.js +111 -61
- package/task-lib/config.js +0 -2
- package/task-lib/runner.js +84 -27
- package/task-lib/scheduler.js +1 -1
- package/task-lib/store.js +467 -168
- package/task-lib/tui/formatters.js +94 -45
- package/task-lib/tui/renderer.js +13 -3
- package/task-lib/tui.js +73 -32
- package/task-lib/watcher.js +128 -90
- package/src/agents/git-pusher-agent.json +0 -20
- package/src/github.js +0 -139
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* following logs, and assembling results.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
const { spawn
|
|
8
|
+
const { spawn } = require('child_process');
|
|
9
|
+
const { exec, execSync } = require('./lib/safe-exec'); // Enforces timeouts
|
|
9
10
|
const fs = require('fs');
|
|
10
11
|
const TaskRunner = require('./task-runner');
|
|
11
12
|
const { loadSettings } = require('../lib/settings');
|
|
@@ -61,23 +62,19 @@ class ClaudeTaskRunner extends TaskRunner {
|
|
|
61
62
|
|
|
62
63
|
const settings = loadSettings();
|
|
63
64
|
const providerName = normalizeProviderName(provider || settings.defaultProvider || 'claude');
|
|
64
|
-
const providerModule =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
resolvedModelSpec = { ...resolvedModelSpec, reasoningEffort };
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
65
|
+
const { providerModule, providerSettings, levelOverrides } = this._getProviderContext(
|
|
66
|
+
providerName,
|
|
67
|
+
settings
|
|
68
|
+
);
|
|
69
|
+
const resolvedModelSpec = this._resolveModelSpec({
|
|
70
|
+
explicitModelSpec,
|
|
71
|
+
model,
|
|
72
|
+
reasoningEffort,
|
|
73
|
+
modelLevel,
|
|
74
|
+
providerModule,
|
|
75
|
+
providerSettings,
|
|
76
|
+
levelOverrides,
|
|
77
|
+
});
|
|
81
78
|
|
|
82
79
|
// Isolation mode delegates to separate method
|
|
83
80
|
if (isolation?.enabled) {
|
|
@@ -90,15 +87,74 @@ class ClaudeTaskRunner extends TaskRunner {
|
|
|
90
87
|
|
|
91
88
|
const ctPath = 'zeroshot';
|
|
92
89
|
|
|
93
|
-
|
|
90
|
+
const runOutputFormat = this._resolveOutputFormat({
|
|
91
|
+
outputFormat,
|
|
92
|
+
jsonSchema,
|
|
93
|
+
strictSchema,
|
|
94
|
+
});
|
|
95
|
+
const args = this._buildRunArgs({
|
|
96
|
+
context,
|
|
97
|
+
providerName,
|
|
98
|
+
runOutputFormat,
|
|
99
|
+
resolvedModelSpec,
|
|
100
|
+
jsonSchema,
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Spawn and get task ID
|
|
104
|
+
const spawnEnv = this._buildSpawnEnv(providerName, resolvedModelSpec);
|
|
105
|
+
|
|
106
|
+
const taskId = await this._spawnAndGetTaskId(ctPath, args, cwd, spawnEnv, agentId);
|
|
107
|
+
|
|
108
|
+
this._log(`📋 [${agentId}]: Following zeroshot logs for ${taskId}`);
|
|
109
|
+
|
|
110
|
+
// Wait for task registration
|
|
111
|
+
await this._waitForTaskReady(ctPath, taskId);
|
|
112
|
+
|
|
113
|
+
// Follow logs until completion
|
|
114
|
+
return this._followLogs(ctPath, taskId, agentId);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
_getProviderContext(providerName, settings) {
|
|
118
|
+
const providerModule = getProvider(providerName);
|
|
119
|
+
const providerSettings = settings.providerSettings?.[providerName] || {};
|
|
120
|
+
const levelOverrides = providerSettings.levelOverrides || {};
|
|
121
|
+
return { providerModule, providerSettings, levelOverrides };
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
_resolveModelSpec({
|
|
125
|
+
explicitModelSpec,
|
|
126
|
+
model,
|
|
127
|
+
reasoningEffort,
|
|
128
|
+
modelLevel,
|
|
129
|
+
providerModule,
|
|
130
|
+
providerSettings,
|
|
131
|
+
levelOverrides,
|
|
132
|
+
}) {
|
|
133
|
+
if (explicitModelSpec) {
|
|
134
|
+
return explicitModelSpec;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (model) {
|
|
138
|
+
return { model, reasoningEffort };
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const level = modelLevel || providerSettings.defaultLevel || providerModule.getDefaultLevel();
|
|
142
|
+
let resolvedModelSpec = providerModule.resolveModelSpec(level, levelOverrides);
|
|
143
|
+
if (reasoningEffort) {
|
|
144
|
+
resolvedModelSpec = { ...resolvedModelSpec, reasoningEffort };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return resolvedModelSpec;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
_resolveOutputFormat({ outputFormat, jsonSchema, strictSchema }) {
|
|
94
151
|
// json output does not stream; if a jsonSchema is configured we run stream-json
|
|
95
152
|
// for live logs and validate/parse JSON after completion.
|
|
96
153
|
// Set strictSchema=true to disable live streaming and use CLI's native schema enforcement.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
: desiredOutputFormat;
|
|
154
|
+
return jsonSchema && outputFormat === 'json' && !strictSchema ? 'stream-json' : outputFormat;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
_buildRunArgs({ context, providerName, runOutputFormat, resolvedModelSpec, jsonSchema }) {
|
|
102
158
|
const args = ['task', 'run', '--output-format', runOutputFormat, '--provider', providerName];
|
|
103
159
|
|
|
104
160
|
if (resolvedModelSpec?.model) {
|
|
@@ -116,7 +172,10 @@ class ClaudeTaskRunner extends TaskRunner {
|
|
|
116
172
|
|
|
117
173
|
args.push(context);
|
|
118
174
|
|
|
119
|
-
|
|
175
|
+
return args;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
_buildSpawnEnv(providerName, resolvedModelSpec) {
|
|
120
179
|
const spawnEnv = {
|
|
121
180
|
...process.env,
|
|
122
181
|
};
|
|
@@ -124,15 +183,7 @@ class ClaudeTaskRunner extends TaskRunner {
|
|
|
124
183
|
spawnEnv.ANTHROPIC_MODEL = resolvedModelSpec.model;
|
|
125
184
|
}
|
|
126
185
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
this._log(`📋 [${agentId}]: Following zeroshot logs for ${taskId}`);
|
|
130
|
-
|
|
131
|
-
// Wait for task registration
|
|
132
|
-
await this._waitForTaskReady(ctPath, taskId);
|
|
133
|
-
|
|
134
|
-
// Follow logs until completion
|
|
135
|
-
return this._followLogs(ctPath, taskId, agentId);
|
|
186
|
+
return spawnEnv;
|
|
136
187
|
}
|
|
137
188
|
|
|
138
189
|
/**
|