attocode 0.2.1 → 0.2.3
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 +191 -1
- package/README.md +7 -0
- package/dist/src/adapters.d.ts +6 -1
- package/dist/src/adapters.d.ts.map +1 -1
- package/dist/src/adapters.js +8 -1
- package/dist/src/adapters.js.map +1 -1
- package/dist/src/agent.d.ts +41 -4
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +846 -75
- package/dist/src/agent.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +23 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/core/protocol/types.d.ts +8 -8
- package/dist/src/defaults.d.ts +7 -2
- package/dist/src/defaults.d.ts.map +1 -1
- package/dist/src/defaults.js +38 -2
- package/dist/src/defaults.js.map +1 -1
- package/dist/src/integrations/agent-registry.d.ts +13 -0
- package/dist/src/integrations/agent-registry.d.ts.map +1 -1
- package/dist/src/integrations/agent-registry.js.map +1 -1
- package/dist/src/integrations/async-subagent.d.ts +135 -0
- package/dist/src/integrations/async-subagent.d.ts.map +1 -0
- package/dist/src/integrations/async-subagent.js +213 -0
- package/dist/src/integrations/async-subagent.js.map +1 -0
- package/dist/src/integrations/auto-checkpoint.d.ts +98 -0
- package/dist/src/integrations/auto-checkpoint.d.ts.map +1 -0
- package/dist/src/integrations/auto-checkpoint.js +252 -0
- package/dist/src/integrations/auto-checkpoint.js.map +1 -0
- package/dist/src/integrations/auto-compaction.d.ts.map +1 -1
- package/dist/src/integrations/auto-compaction.js +5 -1
- package/dist/src/integrations/auto-compaction.js.map +1 -1
- package/dist/src/integrations/bash-policy.d.ts +33 -0
- package/dist/src/integrations/bash-policy.d.ts.map +1 -0
- package/dist/src/integrations/bash-policy.js +142 -0
- package/dist/src/integrations/bash-policy.js.map +1 -0
- package/dist/src/integrations/codebase-context.d.ts +5 -0
- package/dist/src/integrations/codebase-context.d.ts.map +1 -1
- package/dist/src/integrations/codebase-context.js +33 -0
- package/dist/src/integrations/codebase-context.js.map +1 -1
- package/dist/src/integrations/complexity-classifier.d.ts +86 -0
- package/dist/src/integrations/complexity-classifier.d.ts.map +1 -0
- package/dist/src/integrations/complexity-classifier.js +233 -0
- package/dist/src/integrations/complexity-classifier.js.map +1 -0
- package/dist/src/integrations/delegation-protocol.d.ts +86 -0
- package/dist/src/integrations/delegation-protocol.d.ts.map +1 -0
- package/dist/src/integrations/delegation-protocol.js +127 -0
- package/dist/src/integrations/delegation-protocol.js.map +1 -0
- package/dist/src/integrations/dynamic-budget.d.ts +81 -0
- package/dist/src/integrations/dynamic-budget.d.ts.map +1 -0
- package/dist/src/integrations/dynamic-budget.js +151 -0
- package/dist/src/integrations/dynamic-budget.js.map +1 -0
- package/dist/src/integrations/economics.d.ts +86 -1
- package/dist/src/integrations/economics.d.ts.map +1 -1
- package/dist/src/integrations/economics.js +306 -11
- package/dist/src/integrations/economics.js.map +1 -1
- package/dist/src/integrations/environment-facts.d.ts +52 -0
- package/dist/src/integrations/environment-facts.d.ts.map +1 -0
- package/dist/src/integrations/environment-facts.js +84 -0
- package/dist/src/integrations/environment-facts.js.map +1 -0
- package/dist/src/integrations/hierarchical-config.d.ts.map +1 -1
- package/dist/src/integrations/hierarchical-config.js +17 -0
- package/dist/src/integrations/hierarchical-config.js.map +1 -1
- package/dist/src/integrations/index.d.ts +19 -2
- package/dist/src/integrations/index.d.ts.map +1 -1
- package/dist/src/integrations/index.js +34 -2
- package/dist/src/integrations/index.js.map +1 -1
- package/dist/src/integrations/injection-budget.d.ts +71 -0
- package/dist/src/integrations/injection-budget.d.ts.map +1 -0
- package/dist/src/integrations/injection-budget.js +136 -0
- package/dist/src/integrations/injection-budget.js.map +1 -0
- package/dist/src/integrations/mcp-client.d.ts.map +1 -1
- package/dist/src/integrations/mcp-client.js +14 -0
- package/dist/src/integrations/mcp-client.js.map +1 -1
- package/dist/src/integrations/mcp-custom-tools.d.ts +102 -0
- package/dist/src/integrations/mcp-custom-tools.d.ts.map +1 -0
- package/dist/src/integrations/mcp-custom-tools.js +232 -0
- package/dist/src/integrations/mcp-custom-tools.js.map +1 -0
- package/dist/src/integrations/mcp-tool-validator.d.ts +60 -0
- package/dist/src/integrations/mcp-tool-validator.d.ts.map +1 -0
- package/dist/src/integrations/mcp-tool-validator.js +141 -0
- package/dist/src/integrations/mcp-tool-validator.js.map +1 -0
- package/dist/src/integrations/policy-engine.d.ts +55 -0
- package/dist/src/integrations/policy-engine.d.ts.map +1 -0
- package/dist/src/integrations/policy-engine.js +247 -0
- package/dist/src/integrations/policy-engine.js.map +1 -0
- package/dist/src/integrations/safety.d.ts +5 -4
- package/dist/src/integrations/safety.d.ts.map +1 -1
- package/dist/src/integrations/safety.js +32 -7
- package/dist/src/integrations/safety.js.map +1 -1
- package/dist/src/integrations/sandbox/basic.d.ts +7 -0
- package/dist/src/integrations/sandbox/basic.d.ts.map +1 -1
- package/dist/src/integrations/sandbox/basic.js +27 -2
- package/dist/src/integrations/sandbox/basic.js.map +1 -1
- package/dist/src/integrations/sandbox/index.d.ts +6 -0
- package/dist/src/integrations/sandbox/index.d.ts.map +1 -1
- package/dist/src/integrations/sandbox/index.js +3 -0
- package/dist/src/integrations/sandbox/index.js.map +1 -1
- package/dist/src/integrations/sandbox/landlock.d.ts.map +1 -1
- package/dist/src/integrations/sandbox/landlock.js +3 -0
- package/dist/src/integrations/sandbox/landlock.js.map +1 -1
- package/dist/src/integrations/self-improvement.d.ts +90 -0
- package/dist/src/integrations/self-improvement.d.ts.map +1 -0
- package/dist/src/integrations/self-improvement.js +229 -0
- package/dist/src/integrations/self-improvement.js.map +1 -0
- package/dist/src/integrations/smart-decomposer.d.ts +22 -1
- package/dist/src/integrations/smart-decomposer.d.ts.map +1 -1
- package/dist/src/integrations/smart-decomposer.js +127 -28
- package/dist/src/integrations/smart-decomposer.js.map +1 -1
- package/dist/src/integrations/subagent-output-store.d.ts +91 -0
- package/dist/src/integrations/subagent-output-store.d.ts.map +1 -0
- package/dist/src/integrations/subagent-output-store.js +257 -0
- package/dist/src/integrations/subagent-output-store.js.map +1 -0
- package/dist/src/integrations/swarm/index.d.ts +2 -2
- package/dist/src/integrations/swarm/index.d.ts.map +1 -1
- package/dist/src/integrations/swarm/index.js +1 -1
- package/dist/src/integrations/swarm/index.js.map +1 -1
- package/dist/src/integrations/swarm/model-selector.d.ts +16 -0
- package/dist/src/integrations/swarm/model-selector.d.ts.map +1 -1
- package/dist/src/integrations/swarm/model-selector.js +123 -10
- package/dist/src/integrations/swarm/model-selector.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-budget.d.ts +4 -0
- package/dist/src/integrations/swarm/swarm-budget.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-budget.js +6 -0
- package/dist/src/integrations/swarm/swarm-budget.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-config-loader.d.ts +10 -1
- package/dist/src/integrations/swarm/swarm-config-loader.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-config-loader.js +226 -13
- package/dist/src/integrations/swarm/swarm-config-loader.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-event-bridge.d.ts +12 -1
- package/dist/src/integrations/swarm/swarm-event-bridge.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-event-bridge.js +178 -9
- package/dist/src/integrations/swarm/swarm-event-bridge.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-events.d.ts +66 -1
- package/dist/src/integrations/swarm/swarm-events.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-events.js +26 -5
- package/dist/src/integrations/swarm/swarm-events.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-orchestrator.d.ts +127 -0
- package/dist/src/integrations/swarm/swarm-orchestrator.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-orchestrator.js +1842 -47
- package/dist/src/integrations/swarm/swarm-orchestrator.js.map +1 -1
- package/dist/src/integrations/swarm/swarm-quality-gate.d.ts +91 -3
- package/dist/src/integrations/swarm/swarm-quality-gate.d.ts.map +1 -1
- package/dist/src/integrations/swarm/swarm-quality-gate.js +395 -19
- package/dist/src/integrations/swarm/swarm-quality-gate.js.map +1 -1
- package/dist/src/integrations/swarm/task-queue.d.ts +55 -1
- package/dist/src/integrations/swarm/task-queue.d.ts.map +1 -1
- package/dist/src/integrations/swarm/task-queue.js +389 -16
- package/dist/src/integrations/swarm/task-queue.js.map +1 -1
- package/dist/src/integrations/swarm/types.d.ts +247 -11
- package/dist/src/integrations/swarm/types.d.ts.map +1 -1
- package/dist/src/integrations/swarm/types.js +67 -9
- package/dist/src/integrations/swarm/types.js.map +1 -1
- package/dist/src/integrations/swarm/worker-pool.d.ts +18 -5
- package/dist/src/integrations/swarm/worker-pool.d.ts.map +1 -1
- package/dist/src/integrations/swarm/worker-pool.js +236 -34
- package/dist/src/integrations/swarm/worker-pool.js.map +1 -1
- package/dist/src/integrations/thinking-strategy.d.ts +52 -0
- package/dist/src/integrations/thinking-strategy.d.ts.map +1 -0
- package/dist/src/integrations/thinking-strategy.js +129 -0
- package/dist/src/integrations/thinking-strategy.js.map +1 -0
- package/dist/src/integrations/tool-recommendation.d.ts +61 -0
- package/dist/src/integrations/tool-recommendation.d.ts.map +1 -0
- package/dist/src/integrations/tool-recommendation.js +268 -0
- package/dist/src/integrations/tool-recommendation.js.map +1 -0
- package/dist/src/integrations/verification-gate.d.ts +80 -0
- package/dist/src/integrations/verification-gate.d.ts.map +1 -0
- package/dist/src/integrations/verification-gate.js +146 -0
- package/dist/src/integrations/verification-gate.js.map +1 -0
- package/dist/src/integrations/work-log.d.ts +87 -0
- package/dist/src/integrations/work-log.d.ts.map +1 -0
- package/dist/src/integrations/work-log.js +275 -0
- package/dist/src/integrations/work-log.js.map +1 -0
- package/dist/src/main.js +31 -5
- package/dist/src/main.js.map +1 -1
- package/dist/src/modes/repl.d.ts.map +1 -1
- package/dist/src/modes/repl.js +10 -4
- package/dist/src/modes/repl.js.map +1 -1
- package/dist/src/modes/tui.d.ts.map +1 -1
- package/dist/src/modes/tui.js +5 -0
- package/dist/src/modes/tui.js.map +1 -1
- package/dist/src/modes.d.ts +6 -0
- package/dist/src/modes.d.ts.map +1 -1
- package/dist/src/modes.js +69 -21
- package/dist/src/modes.js.map +1 -1
- package/dist/src/tools/agent.d.ts.map +1 -1
- package/dist/src/tools/agent.js +11 -2
- package/dist/src/tools/agent.js.map +1 -1
- package/dist/src/tools/bash.d.ts +9 -3
- package/dist/src/tools/bash.d.ts.map +1 -1
- package/dist/src/tools/bash.js +12 -0
- package/dist/src/tools/bash.js.map +1 -1
- package/dist/src/tools/coercion.d.ts +6 -0
- package/dist/src/tools/coercion.d.ts.map +1 -1
- package/dist/src/tools/coercion.js +13 -0
- package/dist/src/tools/coercion.js.map +1 -1
- package/dist/src/tools/file.d.ts +2 -2
- package/dist/src/tools/file.js +2 -2
- package/dist/src/tools/file.js.map +1 -1
- package/dist/src/tools/permission.d.ts.map +1 -1
- package/dist/src/tools/permission.js +4 -111
- package/dist/src/tools/permission.js.map +1 -1
- package/dist/src/tools/standard.d.ts +17 -1
- package/dist/src/tools/standard.d.ts.map +1 -1
- package/dist/src/tools/standard.js +64 -11
- package/dist/src/tools/standard.js.map +1 -1
- package/dist/src/tracing/trace-collector.d.ts +167 -0
- package/dist/src/tracing/trace-collector.d.ts.map +1 -1
- package/dist/src/tracing/trace-collector.js +137 -0
- package/dist/src/tracing/trace-collector.js.map +1 -1
- package/dist/src/tracing/types.d.ts +105 -1
- package/dist/src/tracing/types.d.ts.map +1 -1
- package/dist/src/tracing/types.js.map +1 -1
- package/dist/src/tui/app.d.ts.map +1 -1
- package/dist/src/tui/app.js +34 -5
- package/dist/src/tui/app.js.map +1 -1
- package/dist/src/types.d.ts +89 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -5,13 +5,44 @@
|
|
|
5
5
|
* Uses SmartDecomposer's parallelGroups to organize tasks into waves,
|
|
6
6
|
* manages status transitions, and builds dependency context for workers.
|
|
7
7
|
*/
|
|
8
|
+
import * as fs from 'node:fs';
|
|
9
|
+
import * as path from 'node:path';
|
|
8
10
|
import { subtaskToSwarmTask } from './types.js';
|
|
11
|
+
/** P6: Failure-mode-specific thresholds — more lenient for external failures, stricter for quality. */
|
|
12
|
+
const FAILURE_MODE_THRESHOLDS = {
|
|
13
|
+
'timeout': 0.3,
|
|
14
|
+
'rate-limit': 0.3,
|
|
15
|
+
'error': 0.5,
|
|
16
|
+
'quality': 0.7,
|
|
17
|
+
'hollow': 0.7,
|
|
18
|
+
'cascade': 0.8,
|
|
19
|
+
};
|
|
20
|
+
/** P6: Get the effective threshold for a task based on its failed dependencies' failure modes.
|
|
21
|
+
* Uses the most lenient (lowest) threshold among failed deps, since that indicates
|
|
22
|
+
* the least fault in the workers. Falls back to the configured threshold. */
|
|
23
|
+
function getEffectiveThreshold(failedDeps, configuredThreshold) {
|
|
24
|
+
if (failedDeps.length === 0)
|
|
25
|
+
return configuredThreshold;
|
|
26
|
+
let minThreshold = configuredThreshold;
|
|
27
|
+
for (const dep of failedDeps) {
|
|
28
|
+
if (dep.failureMode) {
|
|
29
|
+
const modeThreshold = FAILURE_MODE_THRESHOLDS[dep.failureMode];
|
|
30
|
+
if (modeThreshold < minThreshold)
|
|
31
|
+
minThreshold = modeThreshold;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return minThreshold;
|
|
35
|
+
}
|
|
9
36
|
// ─── Task Queue ────────────────────────────────────────────────────────────
|
|
10
37
|
export class SwarmTaskQueue {
|
|
11
38
|
tasks = new Map();
|
|
12
39
|
waves = [];
|
|
13
40
|
conflicts = [];
|
|
14
41
|
currentWave = 0;
|
|
42
|
+
onCascadeSkipCallback;
|
|
43
|
+
partialDependencyThreshold = 0.5;
|
|
44
|
+
artifactAwareSkip = true;
|
|
45
|
+
workingDirectory = process.cwd();
|
|
15
46
|
/**
|
|
16
47
|
* Load tasks from a SmartDecompositionResult.
|
|
17
48
|
* Converts subtasks to SwarmTasks and organizes them into waves
|
|
@@ -21,6 +52,10 @@ export class SwarmTaskQueue {
|
|
|
21
52
|
this.tasks.clear();
|
|
22
53
|
this.waves = [];
|
|
23
54
|
this.conflicts = result.conflicts;
|
|
55
|
+
this.partialDependencyThreshold = config.partialDependencyThreshold ?? 0.5;
|
|
56
|
+
this.artifactAwareSkip = config.artifactAwareSkip ?? true;
|
|
57
|
+
if (config.facts?.workingDirectory)
|
|
58
|
+
this.workingDirectory = config.facts.workingDirectory;
|
|
24
59
|
const { subtasks, dependencyGraph } = result;
|
|
25
60
|
const parallelGroups = dependencyGraph.parallelGroups;
|
|
26
61
|
// Map subtask IDs to wave numbers
|
|
@@ -79,34 +114,87 @@ export class SwarmTaskQueue {
|
|
|
79
114
|
}
|
|
80
115
|
/**
|
|
81
116
|
* Update task ready status based on dependency completion.
|
|
117
|
+
* Supports partial dependency tolerance: if enough deps succeeded (>= threshold),
|
|
118
|
+
* the task runs with partial context instead of being cascade-skipped.
|
|
82
119
|
*/
|
|
83
120
|
updateReadyStatus() {
|
|
84
121
|
for (const [, task] of this.tasks) {
|
|
85
122
|
if (task.status !== 'pending')
|
|
86
123
|
continue;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
124
|
+
if (task.dependencies.length === 0) {
|
|
125
|
+
task.status = 'ready';
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
let completedCount = 0;
|
|
129
|
+
let failedCount = 0;
|
|
130
|
+
let resolvedCount = 0;
|
|
131
|
+
const succeededDeps = [];
|
|
132
|
+
const failedDeps = [];
|
|
133
|
+
for (const depId of task.dependencies) {
|
|
92
134
|
const dep = this.tasks.get(depId);
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
135
|
+
if (!dep)
|
|
136
|
+
continue;
|
|
137
|
+
if (dep.status === 'completed' || dep.status === 'decomposed') {
|
|
138
|
+
completedCount++;
|
|
139
|
+
resolvedCount++;
|
|
140
|
+
succeededDeps.push(dep.description);
|
|
141
|
+
}
|
|
142
|
+
else if (dep.status === 'failed') {
|
|
143
|
+
failedCount++;
|
|
144
|
+
resolvedCount++;
|
|
145
|
+
failedDeps.push(dep.description);
|
|
146
|
+
}
|
|
147
|
+
else if (dep.status === 'skipped') {
|
|
148
|
+
resolvedCount++;
|
|
149
|
+
failedDeps.push(dep.description);
|
|
150
|
+
}
|
|
97
151
|
}
|
|
98
|
-
|
|
152
|
+
const allResolved = resolvedCount === task.dependencies.length;
|
|
153
|
+
if (!allResolved)
|
|
154
|
+
continue;
|
|
155
|
+
const noFailures = failedCount === 0 && failedDeps.length === 0;
|
|
156
|
+
if (noFailures) {
|
|
157
|
+
// All deps succeeded — standard path
|
|
99
158
|
task.status = 'ready';
|
|
100
|
-
// Build dependency context from completed deps
|
|
101
159
|
task.dependencyContext = this.buildDependencyContext(task);
|
|
102
160
|
}
|
|
161
|
+
else {
|
|
162
|
+
// P6: Some deps failed — check failure-mode-aware threshold
|
|
163
|
+
const failedDepTasks = task.dependencies
|
|
164
|
+
.map(id => this.tasks.get(id))
|
|
165
|
+
.filter((d) => !!d && (d.status === 'failed' || d.status === 'skipped'));
|
|
166
|
+
const effectiveThreshold = getEffectiveThreshold(failedDepTasks, this.partialDependencyThreshold);
|
|
167
|
+
const ratio = completedCount / task.dependencies.length;
|
|
168
|
+
if (ratio >= effectiveThreshold) {
|
|
169
|
+
// Enough succeeded — dispatch with partial context
|
|
170
|
+
task.status = 'ready';
|
|
171
|
+
task.partialContext = { succeeded: succeededDeps, failed: failedDeps, ratio };
|
|
172
|
+
task.dependencyContext = this.buildDependencyContext(task);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
// Too many failures — skip
|
|
176
|
+
task.status = 'skipped';
|
|
177
|
+
this.onCascadeSkipCallback?.(task.id, `${failedDeps.length}/${task.dependencies.length} dependencies failed (ratio ${ratio.toFixed(2)} < threshold ${effectiveThreshold.toFixed(2)})`);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
103
180
|
}
|
|
104
181
|
}
|
|
105
182
|
/**
|
|
106
183
|
* Build context string from completed dependency outputs.
|
|
184
|
+
* Includes partial dependency warnings when some deps failed.
|
|
107
185
|
*/
|
|
108
186
|
buildDependencyContext(task) {
|
|
109
187
|
const parts = [];
|
|
188
|
+
const emptyDeps = [];
|
|
189
|
+
// Add rescue context warning if this task was un-skipped
|
|
190
|
+
if (task.rescueContext) {
|
|
191
|
+
parts.push(`⚠ RESCUED TASK: ${task.rescueContext}`, 'Some dependencies may be missing or degraded. Check file artifacts on disk before assuming output exists.', '');
|
|
192
|
+
}
|
|
193
|
+
// Add partial dependency warning if applicable
|
|
194
|
+
if (task.partialContext) {
|
|
195
|
+
const { succeeded, failed, ratio } = task.partialContext;
|
|
196
|
+
parts.push(`WARNING: ${succeeded.length}/${succeeded.length + failed.length} dependency tasks completed (${(ratio * 100).toFixed(0)}%).`, `Missing data from: ${failed.join(', ')}.`, 'Synthesize from available results only — do not attempt to fill gaps with speculation.', '');
|
|
197
|
+
}
|
|
110
198
|
for (const depId of task.dependencies) {
|
|
111
199
|
const dep = this.tasks.get(depId);
|
|
112
200
|
if (!dep || !dep.result || !dep.result.success)
|
|
@@ -114,7 +202,27 @@ export class SwarmTaskQueue {
|
|
|
114
202
|
const summary = dep.result.closureReport
|
|
115
203
|
? dep.result.closureReport.findings.join('\n') + '\n' + dep.result.closureReport.actionsTaken.join('\n')
|
|
116
204
|
: dep.result.output.slice(0, 500);
|
|
117
|
-
|
|
205
|
+
// F24b: Append files created/modified by this dependency
|
|
206
|
+
const fileList = dep.result.filesModified?.length
|
|
207
|
+
? `\nFiles created/modified: ${dep.result.filesModified.join(', ')}`
|
|
208
|
+
: '';
|
|
209
|
+
// Degraded dependency warning — task completed but quality was low
|
|
210
|
+
const degradedWarning = dep.degraded
|
|
211
|
+
? '\n⚠ DEGRADED: This dependency was accepted with partial/low-quality output. Verify its artifacts before relying on them.'
|
|
212
|
+
: '';
|
|
213
|
+
// V6: Detect hollow dependency output — both conditions must be true:
|
|
214
|
+
// short output AND budget/unable failures (so legitimate short completions pass through)
|
|
215
|
+
const isHollow = summary.trim().length < 100 &&
|
|
216
|
+
(dep.result.closureReport?.failures?.some(f => /budget|unable|not completed/i.test(f)) ?? false);
|
|
217
|
+
if (isHollow) {
|
|
218
|
+
emptyDeps.push(dep.description);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
parts.push(`[Dependency: ${dep.description}]${degradedWarning}\n${summary}${fileList}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (emptyDeps.length > 0) {
|
|
225
|
+
parts.unshift(`WARNING: ${emptyDeps.length} dependencies completed without meaningful output: ${emptyDeps.join(', ')}. You may need to do additional research to compensate.`);
|
|
118
226
|
}
|
|
119
227
|
return parts.length > 0 ? parts.join('\n\n') : '';
|
|
120
228
|
}
|
|
@@ -159,6 +267,12 @@ export class SwarmTaskQueue {
|
|
|
159
267
|
task.retryAfter = Date.now() + delayMs;
|
|
160
268
|
}
|
|
161
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* Register a callback invoked for each task cascade-skipped due to a dependency failure.
|
|
272
|
+
*/
|
|
273
|
+
setOnCascadeSkip(callback) {
|
|
274
|
+
this.onCascadeSkipCallback = callback;
|
|
275
|
+
}
|
|
162
276
|
/**
|
|
163
277
|
* Mark a task as dispatched.
|
|
164
278
|
*/
|
|
@@ -177,8 +291,13 @@ export class SwarmTaskQueue {
|
|
|
177
291
|
const task = this.tasks.get(taskId);
|
|
178
292
|
if (!task)
|
|
179
293
|
return;
|
|
294
|
+
// Don't overwrite terminal states (unless pendingCascadeSkip — see F4)
|
|
295
|
+
if (task.status === 'skipped' || task.status === 'failed')
|
|
296
|
+
return;
|
|
180
297
|
task.status = 'completed';
|
|
181
298
|
task.result = result;
|
|
299
|
+
// F4: Clear pendingCascadeSkip since we accepted the result
|
|
300
|
+
task.pendingCascadeSkip = undefined;
|
|
182
301
|
// Update dependent tasks' ready status
|
|
183
302
|
this.updateReadyStatus();
|
|
184
303
|
}
|
|
@@ -201,15 +320,182 @@ export class SwarmTaskQueue {
|
|
|
201
320
|
return false;
|
|
202
321
|
}
|
|
203
322
|
/**
|
|
204
|
-
*
|
|
323
|
+
* Mark a task as failed WITHOUT triggering cascade skip.
|
|
324
|
+
* Returns true if the task can be retried (attempts < maxAttempts).
|
|
325
|
+
* Caller is responsible for calling triggerCascadeSkip() if recovery fails.
|
|
326
|
+
*/
|
|
327
|
+
markFailedWithoutCascade(taskId, maxRetries) {
|
|
328
|
+
const task = this.tasks.get(taskId);
|
|
329
|
+
if (!task)
|
|
330
|
+
return false;
|
|
331
|
+
if (task.attempts <= maxRetries) {
|
|
332
|
+
task.status = 'ready';
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
task.status = 'failed';
|
|
336
|
+
// Do NOT call cascadeSkip — caller will trigger it manually after recovery attempt
|
|
337
|
+
return false;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Manually trigger cascade skip for a failed task's dependents.
|
|
341
|
+
* Call this after resilience recovery has been attempted and failed.
|
|
342
|
+
*/
|
|
343
|
+
triggerCascadeSkip(taskId) {
|
|
344
|
+
this.cascadeSkip(taskId);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Un-skip dependents of a task that was recovered (e.g., via resilience recovery).
|
|
348
|
+
* Checks if all dependencies are now satisfied and restores skipped tasks to ready.
|
|
349
|
+
*/
|
|
350
|
+
unSkipDependents(taskId) {
|
|
351
|
+
for (const [, task] of this.tasks) {
|
|
352
|
+
if (task.status === 'skipped' && task.dependencies.includes(taskId)) {
|
|
353
|
+
const allDepsSatisfied = task.dependencies.every(depId => {
|
|
354
|
+
const dep = this.tasks.get(depId);
|
|
355
|
+
return dep && (dep.status === 'completed' || dep.status === 'decomposed');
|
|
356
|
+
});
|
|
357
|
+
if (allDepsSatisfied) {
|
|
358
|
+
task.status = 'ready';
|
|
359
|
+
task.dependencyContext = this.buildDependencyContext(task);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Cascade failure to dependent tasks, respecting partial dependency threshold.
|
|
366
|
+
* Tasks with enough successful deps are kept ready/pending rather than skipped.
|
|
205
367
|
*/
|
|
206
368
|
cascadeSkip(failedTaskId) {
|
|
207
369
|
for (const [, task] of this.tasks) {
|
|
208
|
-
// H5: Also
|
|
370
|
+
// H5: Also handle dispatched tasks whose dependency failed
|
|
209
371
|
if (task.status !== 'pending' && task.status !== 'ready' && task.status !== 'dispatched')
|
|
210
372
|
continue;
|
|
211
|
-
|
|
373
|
+
// Only consider direct dependents — transitive deps are handled recursively
|
|
374
|
+
// when a direct dependent gets skipped (it will trigger another cascadeSkip)
|
|
375
|
+
if (!this.dependsOn(task.id, failedTaskId))
|
|
376
|
+
continue;
|
|
377
|
+
// Artifact-aware skip: before cascade-skipping, check if the failed dependency's
|
|
378
|
+
// target files already exist on disk with content. If they do, the worker DID produce
|
|
379
|
+
// the files even though the task "failed" (timeout, quality gate, etc.).
|
|
380
|
+
if (this.artifactAwareSkip) {
|
|
381
|
+
const failedTask = this.tasks.get(failedTaskId);
|
|
382
|
+
const targetFiles = failedTask?.targetFiles ?? [];
|
|
383
|
+
if (targetFiles.length > 0) {
|
|
384
|
+
const existingCount = targetFiles.filter(f => {
|
|
385
|
+
try {
|
|
386
|
+
const resolved = path.resolve(this.workingDirectory, f);
|
|
387
|
+
return fs.statSync(resolved).size > 0;
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
return false;
|
|
391
|
+
}
|
|
392
|
+
}).length;
|
|
393
|
+
if (existingCount >= targetFiles.length * 0.5) {
|
|
394
|
+
// Most target files exist — treat failure as less severe, keep dependent ready
|
|
395
|
+
const succeededDeps = [];
|
|
396
|
+
const failedDeps = [];
|
|
397
|
+
for (const depId of task.dependencies) {
|
|
398
|
+
const dep = this.tasks.get(depId);
|
|
399
|
+
if (!dep)
|
|
400
|
+
continue;
|
|
401
|
+
if (dep.status === 'completed')
|
|
402
|
+
succeededDeps.push(dep.description);
|
|
403
|
+
else
|
|
404
|
+
failedDeps.push(`${dep.description} (failed but ${existingCount}/${targetFiles.length} files exist)`);
|
|
405
|
+
}
|
|
406
|
+
task.status = 'ready';
|
|
407
|
+
task.partialContext = {
|
|
408
|
+
succeeded: succeededDeps,
|
|
409
|
+
failed: failedDeps,
|
|
410
|
+
ratio: succeededDeps.length / task.dependencies.length,
|
|
411
|
+
};
|
|
412
|
+
task.dependencyContext = this.buildDependencyContext(task);
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
// Check partial dependency threshold
|
|
418
|
+
if (task.dependencies.length > 1) {
|
|
419
|
+
let completedCount = 0;
|
|
420
|
+
let failedOrSkippedCount = 0;
|
|
421
|
+
for (const depId of task.dependencies) {
|
|
422
|
+
const dep = this.tasks.get(depId);
|
|
423
|
+
if (!dep)
|
|
424
|
+
continue;
|
|
425
|
+
if (dep.status === 'completed')
|
|
426
|
+
completedCount++;
|
|
427
|
+
if (dep.status === 'failed' || dep.status === 'skipped')
|
|
428
|
+
failedOrSkippedCount++;
|
|
429
|
+
}
|
|
430
|
+
// Not all deps resolved yet — don't skip prematurely, updateReadyStatus will handle it
|
|
431
|
+
const resolvedCount = completedCount + failedOrSkippedCount;
|
|
432
|
+
if (resolvedCount < task.dependencies.length)
|
|
433
|
+
continue;
|
|
434
|
+
const failedDepTasks = task.dependencies
|
|
435
|
+
.map(id => this.tasks.get(id))
|
|
436
|
+
.filter((d) => !!d && (d.status === 'failed' || d.status === 'skipped'));
|
|
437
|
+
const effectiveThreshold = getEffectiveThreshold(failedDepTasks, this.partialDependencyThreshold);
|
|
438
|
+
const ratio = completedCount / task.dependencies.length;
|
|
439
|
+
if (ratio >= effectiveThreshold) {
|
|
440
|
+
// Enough deps succeeded — mark ready with partial context instead of skipping
|
|
441
|
+
const succeededDeps = [];
|
|
442
|
+
const failedDeps = [];
|
|
443
|
+
for (const depId of task.dependencies) {
|
|
444
|
+
const dep = this.tasks.get(depId);
|
|
445
|
+
if (!dep)
|
|
446
|
+
continue;
|
|
447
|
+
if (dep.status === 'completed')
|
|
448
|
+
succeededDeps.push(dep.description);
|
|
449
|
+
else
|
|
450
|
+
failedDeps.push(dep.description);
|
|
451
|
+
}
|
|
452
|
+
task.status = 'ready';
|
|
453
|
+
task.partialContext = { succeeded: succeededDeps, failed: failedDeps, ratio };
|
|
454
|
+
task.dependencyContext = this.buildDependencyContext(task);
|
|
455
|
+
continue;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
// F25c: Timeout-lenient cascade — when a dependency failed due to timeout,
|
|
459
|
+
// don't cascade-skip dependents. Instead mark them ready with partial context.
|
|
460
|
+
// Timeouts mean the worker was working but ran out of time — the dependent
|
|
461
|
+
// worker can discover what files actually exist and compensate.
|
|
462
|
+
const failedTask = this.tasks.get(failedTaskId);
|
|
463
|
+
if (failedTask?.failureMode === 'timeout') {
|
|
464
|
+
if (task.status === 'dispatched') {
|
|
465
|
+
// Already running — don't interfere
|
|
466
|
+
this.onCascadeSkipCallback?.(task.id, `dependency ${failedTaskId} timed out — dispatched task allowed to complete`);
|
|
467
|
+
continue;
|
|
468
|
+
}
|
|
469
|
+
const succeededDeps = [];
|
|
470
|
+
const failedDeps = [];
|
|
471
|
+
for (const depId of task.dependencies) {
|
|
472
|
+
const dep = this.tasks.get(depId);
|
|
473
|
+
if (!dep)
|
|
474
|
+
continue;
|
|
475
|
+
if (dep.status === 'completed')
|
|
476
|
+
succeededDeps.push(dep.description);
|
|
477
|
+
else
|
|
478
|
+
failedDeps.push(`${dep.description} (timed out — output may be incomplete)`);
|
|
479
|
+
}
|
|
480
|
+
task.status = 'ready';
|
|
481
|
+
task.partialContext = {
|
|
482
|
+
succeeded: succeededDeps,
|
|
483
|
+
failed: failedDeps,
|
|
484
|
+
ratio: succeededDeps.length / task.dependencies.length,
|
|
485
|
+
};
|
|
486
|
+
task.dependencyContext = this.buildDependencyContext(task);
|
|
487
|
+
this.onCascadeSkipCallback?.(task.id, `dependency ${failedTaskId} timed out — proceeding with partial context`);
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
// F4: For dispatched tasks (worker still running), set pendingCascadeSkip
|
|
491
|
+
// instead of immediately skipping. The result will be evaluated when it arrives.
|
|
492
|
+
if (task.status === 'dispatched') {
|
|
493
|
+
task.pendingCascadeSkip = true;
|
|
494
|
+
this.onCascadeSkipCallback?.(task.id, `dependency ${failedTaskId} failed (pending — worker still running)`);
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
212
497
|
task.status = 'skipped';
|
|
498
|
+
this.onCascadeSkipCallback?.(task.id, `dependency ${failedTaskId} failed`);
|
|
213
499
|
}
|
|
214
500
|
}
|
|
215
501
|
}
|
|
@@ -236,7 +522,7 @@ export class SwarmTaskQueue {
|
|
|
236
522
|
const waveTaskIds = this.waves[this.currentWave];
|
|
237
523
|
return waveTaskIds.every(id => {
|
|
238
524
|
const task = this.tasks.get(id);
|
|
239
|
-
return task && (task.status === 'completed' || task.status === 'failed' || task.status === 'skipped');
|
|
525
|
+
return task && (task.status === 'completed' || task.status === 'failed' || task.status === 'skipped' || task.status === 'decomposed');
|
|
240
526
|
});
|
|
241
527
|
}
|
|
242
528
|
/**
|
|
@@ -261,6 +547,61 @@ export class SwarmTaskQueue {
|
|
|
261
547
|
}
|
|
262
548
|
return true;
|
|
263
549
|
}
|
|
550
|
+
/**
|
|
551
|
+
* Replace a task with subtasks from micro-decomposition.
|
|
552
|
+
* Marks original task as 'decomposed', inserts subtasks into its wave,
|
|
553
|
+
* and updates dependency graph so anything depending on the original
|
|
554
|
+
* now depends on ALL subtasks.
|
|
555
|
+
*/
|
|
556
|
+
replaceWithSubtasks(originalTaskId, subtasks) {
|
|
557
|
+
const original = this.tasks.get(originalTaskId);
|
|
558
|
+
if (!original)
|
|
559
|
+
return;
|
|
560
|
+
original.status = 'decomposed';
|
|
561
|
+
original.subtaskIds = subtasks.map(s => s.id);
|
|
562
|
+
// Insert subtasks
|
|
563
|
+
for (const sub of subtasks) {
|
|
564
|
+
sub.parentTaskId = originalTaskId;
|
|
565
|
+
// Subtasks inherit the original's dependencies
|
|
566
|
+
sub.dependencies = [...original.dependencies];
|
|
567
|
+
sub.wave = original.wave;
|
|
568
|
+
this.tasks.set(sub.id, sub);
|
|
569
|
+
}
|
|
570
|
+
// Update dependency graph: anything that depended on original now depends on ALL subtasks
|
|
571
|
+
for (const [, task] of this.tasks) {
|
|
572
|
+
if (task.id === originalTaskId)
|
|
573
|
+
continue;
|
|
574
|
+
if (task.subtaskIds?.length)
|
|
575
|
+
continue; // Skip the original itself
|
|
576
|
+
const depIndex = task.dependencies.indexOf(originalTaskId);
|
|
577
|
+
if (depIndex !== -1) {
|
|
578
|
+
task.dependencies.splice(depIndex, 1, ...subtasks.map(s => s.id));
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
// Add subtask IDs to the wave
|
|
582
|
+
const waveIdx = original.wave;
|
|
583
|
+
if (waveIdx < this.waves.length) {
|
|
584
|
+
this.waves[waveIdx].push(...subtasks.map(s => s.id));
|
|
585
|
+
}
|
|
586
|
+
this.updateReadyStatus();
|
|
587
|
+
}
|
|
588
|
+
/**
|
|
589
|
+
* Get all tasks that were cascade-skipped.
|
|
590
|
+
*/
|
|
591
|
+
getSkippedTasks() {
|
|
592
|
+
return [...this.tasks.values()].filter(t => t.status === 'skipped');
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* Un-skip a task, setting it to 'ready' with rescue context.
|
|
596
|
+
*/
|
|
597
|
+
rescueTask(taskId, rescueContext) {
|
|
598
|
+
const task = this.tasks.get(taskId);
|
|
599
|
+
if (!task || task.status !== 'skipped')
|
|
600
|
+
return;
|
|
601
|
+
task.status = 'ready';
|
|
602
|
+
task.rescueContext = rescueContext;
|
|
603
|
+
task.dependencyContext = this.buildDependencyContext(task);
|
|
604
|
+
}
|
|
264
605
|
/**
|
|
265
606
|
* Get a task by ID.
|
|
266
607
|
*/
|
|
@@ -307,6 +648,9 @@ export class SwarmTaskQueue {
|
|
|
307
648
|
case 'skipped':
|
|
308
649
|
skipped++;
|
|
309
650
|
break;
|
|
651
|
+
case 'decomposed':
|
|
652
|
+
completed++;
|
|
653
|
+
break; // Decomposed tasks count as completed (replaced by subtasks)
|
|
310
654
|
}
|
|
311
655
|
}
|
|
312
656
|
return { ready, running, completed, failed, skipped, total: this.tasks.size };
|
|
@@ -353,6 +697,35 @@ export class SwarmTaskQueue {
|
|
|
353
697
|
}
|
|
354
698
|
}
|
|
355
699
|
}
|
|
700
|
+
/**
|
|
701
|
+
* Add re-planned tasks from mid-swarm re-planning.
|
|
702
|
+
* Inserts new tasks into the specified wave and marks them ready.
|
|
703
|
+
*/
|
|
704
|
+
addReplanTasks(subtasks, wave) {
|
|
705
|
+
const newTasks = [];
|
|
706
|
+
for (const st of subtasks) {
|
|
707
|
+
const id = `replan-${Date.now()}-${Math.random().toString(36).slice(2, 7)}`;
|
|
708
|
+
const task = {
|
|
709
|
+
id,
|
|
710
|
+
description: st.description,
|
|
711
|
+
type: st.type,
|
|
712
|
+
dependencies: st.dependencies,
|
|
713
|
+
status: 'ready',
|
|
714
|
+
complexity: Math.max(3, st.complexity),
|
|
715
|
+
wave,
|
|
716
|
+
targetFiles: st.relevantFiles,
|
|
717
|
+
attempts: 1,
|
|
718
|
+
rescueContext: 'Re-planned from stalled swarm',
|
|
719
|
+
};
|
|
720
|
+
this.tasks.set(id, task);
|
|
721
|
+
newTasks.push(task);
|
|
722
|
+
}
|
|
723
|
+
// Add to wave
|
|
724
|
+
if (!this.waves[wave])
|
|
725
|
+
this.waves[wave] = [];
|
|
726
|
+
this.waves[wave].push(...newTasks.map(t => t.id));
|
|
727
|
+
return newTasks;
|
|
728
|
+
}
|
|
356
729
|
/**
|
|
357
730
|
* Add fix-up tasks from wave review. Inserted into the current wave.
|
|
358
731
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../../../../src/integrations/swarm/task-queue.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-queue.js","sourceRoot":"","sources":["../../../../src/integrations/swarm/task-queue.ts"],"names":[],"mappings":"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"}
|