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
|
@@ -4,8 +4,27 @@
|
|
|
4
4
|
* Manages concurrent worker dispatch via existing spawnAgent() infrastructure.
|
|
5
5
|
* Uses slot-based concurrency control and dynamic agent registration.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
7
|
+
import { getTaskTypeConfig } from './types.js';
|
|
8
8
|
import { selectWorkerForCapability } from './model-selector.js';
|
|
9
|
+
import { buildDelegationPrompt, createMinimalDelegationSpec } from '../delegation-protocol.js';
|
|
10
|
+
import { getSubagentQualityPrompt } from '../thinking-strategy.js';
|
|
11
|
+
import { getEnvironmentFacts, formatFactsBlock, formatFactsCompact } from '../environment-facts.js';
|
|
12
|
+
import { calculateCost, isModelCacheInitialized } from '../openrouter-pricing.js';
|
|
13
|
+
import { resolvePolicyProfile } from '../policy-engine.js';
|
|
14
|
+
// ─── D2: Lightweight Model Detection ───────────────────────────────────────
|
|
15
|
+
/** D2: Detect cheap/weak models that benefit from minimal prompts. */
|
|
16
|
+
export function isLightweightModel(model) {
|
|
17
|
+
const lower = model.toLowerCase();
|
|
18
|
+
return /\b(mini|micro|small|nano|tiny|lite|glm|phi|gemma-2b|qwen.*0\.5|qwen.*1\.5)\b/.test(lower);
|
|
19
|
+
}
|
|
20
|
+
// ─── Worker Timeout Error ──────────────────────────────────────────────────
|
|
21
|
+
/** Typed error for worker timeouts, used to distinguish timeouts from hollow completions. */
|
|
22
|
+
export class WorkerTimeoutError extends Error {
|
|
23
|
+
constructor(message) {
|
|
24
|
+
super(message);
|
|
25
|
+
this.name = 'WorkerTimeoutError';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
9
28
|
// ─── Worker Pool ───────────────────────────────────────────────────────────
|
|
10
29
|
export class SwarmWorkerPool {
|
|
11
30
|
config;
|
|
@@ -13,15 +32,17 @@ export class SwarmWorkerPool {
|
|
|
13
32
|
spawnAgent;
|
|
14
33
|
budgetPool;
|
|
15
34
|
workers;
|
|
35
|
+
healthTracker;
|
|
16
36
|
activeWorkers = new Map();
|
|
17
37
|
registeredAgentNames = new Set();
|
|
18
38
|
dispatchCount = 0;
|
|
19
|
-
constructor(config, agentRegistry, spawnAgent, budgetPool) {
|
|
39
|
+
constructor(config, agentRegistry, spawnAgent, budgetPool, healthTracker) {
|
|
20
40
|
this.config = config;
|
|
21
41
|
this.agentRegistry = agentRegistry;
|
|
22
42
|
this.spawnAgent = spawnAgent;
|
|
23
43
|
this.budgetPool = budgetPool;
|
|
24
44
|
this.workers = config.workers;
|
|
45
|
+
this.healthTracker = healthTracker;
|
|
25
46
|
}
|
|
26
47
|
/**
|
|
27
48
|
* Get number of available slots.
|
|
@@ -39,45 +60,112 @@ export class SwarmWorkerPool {
|
|
|
39
60
|
* Select the best worker spec for a task based on capability matching.
|
|
40
61
|
*/
|
|
41
62
|
selectWorker(task) {
|
|
42
|
-
const capability =
|
|
43
|
-
return selectWorkerForCapability(this.workers, capability, this.dispatchCount
|
|
63
|
+
const capability = getTaskTypeConfig(task.type, this.config).capability ?? 'code';
|
|
64
|
+
return selectWorkerForCapability(this.workers, capability, this.dispatchCount++, this.healthTracker);
|
|
44
65
|
}
|
|
45
66
|
/**
|
|
46
67
|
* Dispatch a task to a worker.
|
|
47
68
|
*
|
|
48
|
-
* 1.
|
|
69
|
+
* 1. Uses pre-selected worker or selects appropriate worker model
|
|
49
70
|
* 2. Registers a dynamic agent definition
|
|
50
71
|
* 3. Calls spawnAgent() to create the worker
|
|
51
72
|
*/
|
|
52
|
-
async dispatch(task) {
|
|
73
|
+
async dispatch(task, preSelectedWorker) {
|
|
53
74
|
if (this.availableSlots <= 0) {
|
|
54
75
|
throw new Error('No available worker slots');
|
|
55
76
|
}
|
|
56
77
|
if (!this.budgetPool.hasCapacity()) {
|
|
57
78
|
throw new Error('Budget pool exhausted');
|
|
58
79
|
}
|
|
59
|
-
const worker = this.selectWorker(task);
|
|
80
|
+
const worker = preSelectedWorker ?? this.selectWorker(task);
|
|
60
81
|
if (!worker) {
|
|
61
82
|
throw new Error(`No worker available for task type: ${task.type}`);
|
|
62
83
|
}
|
|
63
84
|
// Create a unique agent name for this worker instance
|
|
64
85
|
const agentName = `swarm-${worker.name}-${task.id}`;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
86
|
+
const requestedProfile = worker.policyProfile;
|
|
87
|
+
const policyResolution = resolvePolicyProfile({
|
|
88
|
+
isSwarmWorker: true,
|
|
89
|
+
requestedProfile,
|
|
90
|
+
swarmConfig: this.config,
|
|
91
|
+
worker,
|
|
92
|
+
taskType: task.type,
|
|
93
|
+
legacyAllowedTools: this.config.toolAccessMode === 'whitelist' ? worker.allowedTools : undefined,
|
|
94
|
+
legacyDeniedTools: worker.deniedTools,
|
|
95
|
+
globalDeniedTools: this.config.globalDeniedTools,
|
|
96
|
+
});
|
|
97
|
+
const { profile } = policyResolution;
|
|
98
|
+
// If profile requires whitelist, expose only allowed tools to this worker.
|
|
99
|
+
const tools = (this.config.toolAccessMode === 'all' && !requestedProfile)
|
|
70
100
|
? undefined
|
|
71
|
-
:
|
|
101
|
+
: (profile.toolAccessMode === 'whitelist'
|
|
102
|
+
? profile.allowedTools
|
|
103
|
+
: worker.allowedTools);
|
|
104
|
+
// V7: Get effective per-type config (user overrides > builtin defaults > fallback)
|
|
105
|
+
const typeConfig = getTaskTypeConfig(task.type, this.config);
|
|
106
|
+
// F3: Wider complexity scaling: 0.3 + complexity * 0.14 (range 0.44x-1.7x)
|
|
107
|
+
// Previously 0.5 + complexity * 0.1 (range 0.6x-1.5x) — too narrow for diverse tasks.
|
|
108
|
+
const complexityMultiplier = 0.3 + (task.complexity ?? 5) * 0.14;
|
|
109
|
+
// Escalating retry budget — if a worker ran out on the first attempt,
|
|
110
|
+
// giving it the same budget will produce the same result.
|
|
111
|
+
// 1st retry: 1.3x, 2nd: 1.6x, 3rd+: 2.0x (double budget).
|
|
112
|
+
const retryMultiplier = task.attempts === 0 ? 1.0
|
|
113
|
+
: task.attempts === 1 ? 1.3
|
|
114
|
+
: task.attempts === 2 ? 1.6
|
|
115
|
+
: 2.0;
|
|
116
|
+
// F3: Task-aware budget using tokenBudgetRange from TaskTypeConfig.
|
|
117
|
+
// Foundation tasks get max budget, leaf tasks get proportional to complexity.
|
|
118
|
+
let baseTokenBudget;
|
|
119
|
+
if (typeConfig.tokenBudgetRange) {
|
|
120
|
+
const { min, max } = typeConfig.tokenBudgetRange;
|
|
121
|
+
if (task.isFoundation) {
|
|
122
|
+
baseTokenBudget = max;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Scale linearly: complexity 1 → min, complexity 10 → max
|
|
126
|
+
const ratio = Math.min(1, Math.max(0, ((task.complexity ?? 5) - 1) / 9));
|
|
127
|
+
baseTokenBudget = Math.round(min + ratio * (max - min));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
baseTokenBudget = typeConfig.tokenBudget ?? worker.maxTokens ?? this.config.maxTokensPerWorker;
|
|
132
|
+
}
|
|
133
|
+
const baseMaxIterations = typeConfig.maxIterations ?? this.config.workerMaxIterations;
|
|
134
|
+
// 2nd+ retries get 50% more iterations — more turns to complete the task
|
|
135
|
+
const iterationMultiplier = task.attempts >= 2 ? 1.5 : 1.0;
|
|
136
|
+
// V7: Per-task-type timeout from TaskTypeConfig, with backward compat to taskTypeTimeouts
|
|
137
|
+
// Computed before agentDef so we can pass it through to spawnAgent's timeout chain
|
|
138
|
+
const baseTimeoutMs = typeConfig.timeout ?? this.config.taskTypeTimeouts?.[task.type] ?? Math.max(this.config.workerTimeout, 240_000);
|
|
139
|
+
// Foundation tasks (3+ dependents) get 2.5x timeout to reduce cascade failure risk
|
|
140
|
+
const adjustedTimeoutMs = task.isFoundation ? Math.round(baseTimeoutMs * 2.5) : baseTimeoutMs;
|
|
141
|
+
// Apply both complexity and retry multipliers — retries get more wall-clock time too
|
|
142
|
+
const timeoutMs = Math.round(adjustedTimeoutMs * complexityMultiplier * retryMultiplier);
|
|
72
143
|
const agentDef = {
|
|
73
144
|
name: agentName,
|
|
74
145
|
description: `Swarm worker (${worker.name}) for: ${task.description.slice(0, 100)}`,
|
|
75
146
|
systemPrompt: this.buildWorkerSystemPrompt(task, worker),
|
|
76
147
|
tools,
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
148
|
+
// Pin the resolved profile so spawnAgent does not re-infer a different one.
|
|
149
|
+
policyProfile: policyResolution.profileName,
|
|
150
|
+
// Respect failover-assigned model on retries.
|
|
151
|
+
model: task.assignedModel ?? worker.model,
|
|
152
|
+
taskType: task.type,
|
|
153
|
+
maxTokenBudget: Math.round(baseTokenBudget * complexityMultiplier * retryMultiplier),
|
|
154
|
+
maxIterations: Math.round(baseMaxIterations * complexityMultiplier * retryMultiplier * iterationMultiplier),
|
|
155
|
+
timeout: timeoutMs, // Pass calculated timeout through to spawnAgent (highest priority in timeout chain)
|
|
156
|
+
idleTimeout: typeConfig.idleTimeout, // V7: Configurable idle timeout (for long-running tasks)
|
|
80
157
|
capabilities: worker.capabilities,
|
|
158
|
+
// W3: Swarm workers get tighter economics thresholds by default
|
|
159
|
+
// These can be overridden via swarmConfig.economicsTuning
|
|
160
|
+
economicsTuning: {
|
|
161
|
+
doomLoopThreshold: 2,
|
|
162
|
+
doomLoopFuzzyThreshold: 3,
|
|
163
|
+
explorationFileThreshold: 5,
|
|
164
|
+
explorationIterThreshold: 3,
|
|
165
|
+
zeroProgressThreshold: 3,
|
|
166
|
+
progressCheckpoint: 3,
|
|
167
|
+
...(this.config.economicsTuning ?? {}),
|
|
168
|
+
},
|
|
81
169
|
};
|
|
82
170
|
this.agentRegistry.registerAgent(agentDef);
|
|
83
171
|
this.registeredAgentNames.add(agentName);
|
|
@@ -85,15 +173,19 @@ export class SwarmWorkerPool {
|
|
|
85
173
|
const taskPrompt = this.buildTaskPrompt(task);
|
|
86
174
|
// Create the promise that tracks execution
|
|
87
175
|
const startedAt = Date.now();
|
|
88
|
-
|
|
89
|
-
//
|
|
176
|
+
// V8: Worker pool timeout is a backstop AFTER the agent's graceful timeout.
|
|
177
|
+
// The agent's graceful timeout (in spawnAgent) provides a wrapup window before hard kill.
|
|
178
|
+
// This backstop fires 60s later to catch cases where graceful timeout fails.
|
|
179
|
+
const backstopTimeoutMs = timeoutMs + 60_000;
|
|
90
180
|
const spawnPromise = this.spawnAgent(agentName, taskPrompt);
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
181
|
+
let timeoutHandle;
|
|
182
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
183
|
+
timeoutHandle = setTimeout(() => reject(new WorkerTimeoutError(`Worker timeout after ${backstopTimeoutMs}ms (base: ${timeoutMs}ms + 60s backstop)`)), backstopTimeoutMs);
|
|
184
|
+
});
|
|
185
|
+
const promise = Promise.race([spawnPromise, timeoutPromise]).then(result => {
|
|
186
|
+
clearTimeout(timeoutHandle);
|
|
187
|
+
return { taskId: task.id, result, startedAt };
|
|
188
|
+
});
|
|
97
189
|
// Track active worker
|
|
98
190
|
this.activeWorkers.set(task.id, {
|
|
99
191
|
taskId: task.id,
|
|
@@ -122,7 +214,15 @@ export class SwarmWorkerPool {
|
|
|
122
214
|
result: {
|
|
123
215
|
success: false,
|
|
124
216
|
output: `Worker error: ${error.message}`,
|
|
125
|
-
metrics: {
|
|
217
|
+
metrics: {
|
|
218
|
+
tokens: 0,
|
|
219
|
+
duration: Date.now() - worker.startedAt,
|
|
220
|
+
// V7: Use -1 for timeout errors so the orchestrator can distinguish
|
|
221
|
+
// timeouts (worker was working but ran out of time) from hollow completions
|
|
222
|
+
// (worker produced no tool calls at all).
|
|
223
|
+
// Uses instanceof check instead of fragile string matching.
|
|
224
|
+
toolCalls: (error instanceof WorkerTimeoutError) ? -1 : 0,
|
|
225
|
+
},
|
|
126
226
|
},
|
|
127
227
|
startedAt: worker.startedAt,
|
|
128
228
|
})));
|
|
@@ -151,12 +251,15 @@ export class SwarmWorkerPool {
|
|
|
151
251
|
}
|
|
152
252
|
/**
|
|
153
253
|
* Convert a SpawnResult to a SwarmTaskResult.
|
|
154
|
-
*
|
|
254
|
+
* Uses OpenRouter pricing when available, falls back to rough estimate.
|
|
155
255
|
*/
|
|
156
256
|
toTaskResult(spawnResult, task, durationMs) {
|
|
157
257
|
const tokens = spawnResult.metrics.tokens;
|
|
158
|
-
|
|
159
|
-
|
|
258
|
+
const model = task.assignedModel ?? 'unknown';
|
|
259
|
+
// Use real pricing from OpenRouter when cache is initialized, otherwise fallback
|
|
260
|
+
const estimatedCost = isModelCacheInitialized()
|
|
261
|
+
? calculateCost(model, Math.floor(tokens * 0.6), Math.floor(tokens * 0.4))
|
|
262
|
+
: tokens * 0.0000005;
|
|
160
263
|
return {
|
|
161
264
|
success: spawnResult.success,
|
|
162
265
|
output: spawnResult.output,
|
|
@@ -165,10 +268,9 @@ export class SwarmWorkerPool {
|
|
|
165
268
|
costUsed: estimatedCost,
|
|
166
269
|
durationMs,
|
|
167
270
|
model: task.assignedModel ?? 'unknown',
|
|
168
|
-
filesModified: spawnResult.
|
|
169
|
-
?.filter((a) => a.includes('file') || a.includes('wrote') || a.includes('created'))
|
|
170
|
-
?? [],
|
|
271
|
+
filesModified: spawnResult.filesModified ?? [],
|
|
171
272
|
findings: spawnResult.structured?.findings,
|
|
273
|
+
toolCalls: spawnResult.metrics.toolCalls,
|
|
172
274
|
};
|
|
173
275
|
}
|
|
174
276
|
/**
|
|
@@ -213,26 +315,126 @@ export class SwarmWorkerPool {
|
|
|
213
315
|
/**
|
|
214
316
|
* Build a system prompt for a worker.
|
|
215
317
|
* V2: Enhanced with anti-loop rules, no-exploration directive, and output format requirements.
|
|
318
|
+
* V7: Progressive prompt reduction — retries use lighter prompts to avoid overwhelming cheap models.
|
|
319
|
+
*
|
|
320
|
+
* Prompt tiers based on attempt number:
|
|
321
|
+
* attempt 0: 'full' — all additions (delegation, env facts block, quality self-assessment)
|
|
322
|
+
* attempt 1+: 'reduced' — compact facts, skip delegation for research/analysis tasks
|
|
216
323
|
*/
|
|
217
324
|
buildWorkerSystemPrompt(task, worker) {
|
|
218
325
|
const stuckThreshold = this.config.workerStuckThreshold ?? 3;
|
|
219
326
|
const parts = [];
|
|
327
|
+
// D2: Determine prompt tier — explicit override > retry detection > model detection > full
|
|
328
|
+
const promptTier = worker.promptTier ??
|
|
329
|
+
(task.attempts > 0 ? 'reduced' :
|
|
330
|
+
isLightweightModel(task.assignedModel ?? worker.model) ? 'reduced' : 'full');
|
|
331
|
+
// D2: Minimal prompt tier for cheap/weak models — drastically reduced prompt
|
|
332
|
+
if (promptTier === 'minimal') {
|
|
333
|
+
parts.push(`You are a ${worker.name} worker. Your task: ${task.description}`, '', '═══ RULES ═══', '', 'CRITICAL:', '- Use tools to do your work. A response with zero tool calls is failure.', '- Use read_file/grep to read code. Use write_file/edit_file to modify code.', '- Do NOT use bash for file reading (no cat/head/tail). Use read_file instead.', `- You have ${this.config.workerMaxIterations} max iterations. Work fast.`, '', `AVAILABLE TOOLS: ${(worker.allowedTools ?? ['write_file', 'edit_file', 'read_file', 'glob', 'grep', 'bash']).join(', ')}`);
|
|
334
|
+
if (task.targetFiles && task.targetFiles.length > 0) {
|
|
335
|
+
parts.push('', `TARGET FILES: ${task.targetFiles.join(', ')}`);
|
|
336
|
+
}
|
|
337
|
+
if (task.readFiles && task.readFiles.length > 0) {
|
|
338
|
+
parts.push('', `REFERENCE FILES: ${task.readFiles.join(', ')}`);
|
|
339
|
+
}
|
|
340
|
+
if (task.attempts > 0 && task.retryContext) {
|
|
341
|
+
parts.push('', `RETRY #${task.attempts}: Previous score ${task.retryContext.previousScore}/5. Fix: ${task.retryContext.previousFeedback}`);
|
|
342
|
+
// F12: Hollow completion — prescribe exact first action
|
|
343
|
+
if (task.retryContext.previousScore <= 1) {
|
|
344
|
+
const firstTarget = task.targetFiles?.[0] ?? task.readFiles?.[0];
|
|
345
|
+
parts.push('', '⚠ YOUR PREVIOUS ATTEMPT HAD ZERO TOOL CALLS — THIS IS AN AUTOMATIC FAILURE.', firstTarget
|
|
346
|
+
? `YOUR VERY FIRST ACTION: Call ${task.targetFiles?.[0] ? 'write_file' : 'read_file'} on "${firstTarget}".`
|
|
347
|
+
: 'YOUR VERY FIRST ACTION: Call read_file or write_file. Text-only responses = failure.');
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return parts.join('\n');
|
|
351
|
+
}
|
|
220
352
|
// V3: Inject worker persona if configured
|
|
221
353
|
if (worker.persona) {
|
|
222
354
|
parts.push(worker.persona, '');
|
|
223
355
|
}
|
|
224
356
|
parts.push(`You are a ${worker.name} worker${worker.role ? ` (${worker.role})` : ''} in a swarm of specialized AI agents.`, `Your specific task: ${task.description}`, '');
|
|
357
|
+
// V4/V7: Environment facts — full block on first attempt, compact one-liner on retries
|
|
358
|
+
const customFacts = this.config.facts?.custom ?? [];
|
|
359
|
+
if (promptTier === 'full') {
|
|
360
|
+
parts.push(formatFactsBlock(getEnvironmentFacts(customFacts)), '');
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
parts.push(formatFactsCompact(getEnvironmentFacts(customFacts)), '');
|
|
364
|
+
}
|
|
225
365
|
// V3: Inject philosophy if configured
|
|
226
366
|
if (this.config.philosophy) {
|
|
227
367
|
parts.push('═══ PHILOSOPHY ═══', '', this.config.philosophy, '');
|
|
228
368
|
}
|
|
229
|
-
|
|
369
|
+
// V7: Use promptTemplate from TaskTypeConfig for dispatching prompt rules.
|
|
370
|
+
// Built-in templates: 'research', 'synthesis', 'document', 'code' (default).
|
|
371
|
+
const typeConfig = getTaskTypeConfig(task.type, this.config);
|
|
372
|
+
const promptTemplate = typeConfig.promptTemplate ?? 'code';
|
|
373
|
+
const taskType = task.type;
|
|
374
|
+
if (promptTemplate === 'research') {
|
|
375
|
+
parts.push('═══ RESEARCH TASK RULES ═══', '', 'RESEARCH RULES (violations waste budget):', '- Use web_search, read_file, glob, grep to gather information.', '- You are NOT expected to write or edit code files.', `- After ${stuckThreshold} iterations without new findings, write up what you have.`, '- Do NOT run ls/find/tree to "understand the project". You have context below.', '- If you get the same result from a tool twice, try a COMPLETELY different approach.', '', 'EFFICIENCY RULES:', '- Focus ONLY on your assigned research topic. Do not explore unrelated areas.', `- You have ${this.config.workerMaxIterations} max iterations and a limited token budget.`, '- Prefer grep and targeted reads over reading entire files.', '- Synthesize findings as you go — do not wait until the end.', '', 'OUTPUT FORMAT — When finished, summarize:', '1. Key findings and insights', '2. Sources consulted (files read, searches performed)', '3. Any gaps or areas needing further investigation');
|
|
376
|
+
}
|
|
377
|
+
else if (promptTemplate === 'synthesis') {
|
|
378
|
+
parts.push('═══ SYNTHESIS TASK RULES ═══', '', 'SYNTHESIS RULES (violations waste budget):', '- Read outputs from dependency tasks provided in context below.', '- Combine, synthesize, and summarize the material into a coherent result.', '- Do NOT re-research — work with the material given to you.', '- Do NOT run web_search or explore the codebase independently.', '- If you get the same result from a tool twice, try a COMPLETELY different approach.', '', 'EFFICIENCY RULES:', '- Focus ONLY on synthesizing the provided inputs.', `- You have ${this.config.workerMaxIterations} max iterations and a limited token budget.`, '- Read dependency outputs first, then produce your synthesis.', '', 'OUTPUT FORMAT — When finished, provide:', '1. Synthesized result combining all inputs', '2. Key themes or patterns across inputs', '3. Any conflicts or gaps between inputs');
|
|
379
|
+
}
|
|
380
|
+
else if (promptTemplate === 'document') {
|
|
381
|
+
parts.push('═══ DOCUMENTATION TASK RULES ═══', '', 'DOCUMENTATION RULES (violations waste budget):', `- Never run ls, find, pwd, or tree more than once each.`, '- If you get the same result from a tool twice, try a COMPLETELY different approach.', `- After ${stuckThreshold} iterations without writing a file, START WRITING IMMEDIATELY.`, '- Do NOT run ls/find/tree to "understand the project". You have context below.', '', 'EFFICIENCY RULES:', '- Focus ONLY on your assigned documentation task.', `- You have ${this.config.workerMaxIterations} max iterations and a limited token budget.`, '- Read files for context, then write documentation.', '', 'TOOL USAGE:', '- To CREATE a new file: use write_file (NOT bash with cat/echo/heredoc)', '- To MODIFY an existing file: use edit_file (NOT bash with sed/awk)', '- To READ a file: use read_file (NOT bash with cat/head/tail)', '- Use bash ONLY for: running commands (npm, node, git, tsc, tests, etc.)', '- NEVER send file contents as a bash command argument', '', 'OUTPUT FORMAT — When finished, summarize:', '1. Documentation files created/modified', '2. Key sections documented', '3. Any areas needing further documentation');
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
// Default: code/test/refactor/integrate/deploy — original behavior preserved exactly
|
|
385
|
+
parts.push('═══ CRITICAL RULES ═══', '', 'ANTI-LOOP RULES (violations waste budget):', `- Never run ls, find, pwd, or tree more than once each.`, '- If you get the same result from a tool twice, try a COMPLETELY different approach.', `- After ${stuckThreshold} iterations without writing/editing a file, START CODING IMMEDIATELY.`, '- Do NOT run ls/find/tree to "understand the project". You have context below.', '', 'EFFICIENCY RULES:', '- Focus ONLY on your assigned task. Do not explore unrelated code.', `- You have ${this.config.workerMaxIterations} max iterations and a limited token budget.`, '- Read files only when you need specific content. Prefer grep over reading entire files.', '- Make changes incrementally — edit one file, verify, move on.', '', 'TOOL USAGE:', '- To CREATE a new file: use write_file (NOT bash with cat/echo/heredoc)', '- To MODIFY an existing file: use edit_file (NOT bash with sed/awk)', '- To READ a file: use read_file (NOT bash with cat/head/tail)', '- To SEARCH for files: use glob (NOT bash with find/ls)', '- To SEARCH file contents: use grep (NOT bash with grep/rg)', '- Use bash ONLY for: running commands (npm, node, git, tsc, tests, etc.)', '- NEVER send file contents as a bash command argument', '', 'OUTPUT FORMAT — When finished, summarize:', '1. What you accomplished (files created/modified)', '2. Key decisions made', '3. Any issues encountered or unresolved items');
|
|
386
|
+
}
|
|
387
|
+
// Inject available tool names so the model knows exactly what it can call
|
|
388
|
+
if (worker.allowedTools && worker.allowedTools.length > 0) {
|
|
389
|
+
parts.push('', `AVAILABLE TOOLS: ${worker.allowedTools.join(', ')}`);
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
parts.push('', 'You have access to ALL tools including: write_file, edit_file, read_file, glob, grep, bash, web_search');
|
|
393
|
+
}
|
|
394
|
+
// V9: Action-orientation reinforcement for task types that MUST produce file changes
|
|
395
|
+
if (taskType === 'implement' || taskType === 'test' || taskType === 'refactor') {
|
|
396
|
+
parts.push('', '═══ ACTION ORIENTATION ═══', '', 'You are judged by actual file changes and tool usage, not by the quality of your written analysis.', 'If your task type is implement, test, or refactor, you MUST make file changes.', 'A response with zero tool calls is an automatic failure.');
|
|
397
|
+
}
|
|
398
|
+
// V5: Retry context — inject previous feedback so worker doesn't repeat mistakes
|
|
399
|
+
if (task.attempts > 0 && task.retryContext) {
|
|
400
|
+
// F22: Include swarm progress so retrying workers know what's been accomplished
|
|
401
|
+
if (task.retryContext.swarmProgress) {
|
|
402
|
+
parts.push('', '═══ SWARM PROGRESS ═══', '', task.retryContext.swarmProgress);
|
|
403
|
+
}
|
|
404
|
+
parts.push('', '═══ RETRY CONTEXT (THIS IS YOUR 2ND+ ATTEMPT) ═══', '');
|
|
405
|
+
if (task.retryContext.previousScore === 0) {
|
|
406
|
+
parts.push(`Your previous attempt FAILED with error:`, task.retryContext.previousFeedback, '', 'Diagnose what went wrong and try a completely different approach.', 'REMINDER: Use write_file to create files and edit_file to modify them. Do NOT use bash for file operations.');
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
parts.push(`Previous attempt scored ${task.retryContext.previousScore}/5.`, `Judge feedback: ${task.retryContext.previousFeedback}`, '', 'You MUST address the feedback above. Try a DIFFERENT approach from your previous attempt.', 'Focus specifically on what the judge flagged as wrong.');
|
|
410
|
+
}
|
|
411
|
+
// F12: Hollow completion — prescribe exact first action
|
|
412
|
+
if (task.retryContext.previousScore <= 1) {
|
|
413
|
+
const firstTarget = task.targetFiles?.[0] ?? task.readFiles?.[0];
|
|
414
|
+
parts.push('', '⚠ YOUR PREVIOUS ATTEMPT HAD ZERO TOOL CALLS — THIS IS AN AUTOMATIC FAILURE.', firstTarget
|
|
415
|
+
? `YOUR VERY FIRST ACTION: Call ${task.targetFiles?.[0] ? 'write_file' : 'read_file'} on "${firstTarget}".`
|
|
416
|
+
: 'YOUR VERY FIRST ACTION: Call read_file or write_file. Text-only responses = failure.');
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
if (task.retryContext?.previousFiles?.length) {
|
|
420
|
+
parts.push('', '═══ FILES FROM PREVIOUS ATTEMPT ═══', '', 'These files ALREADY EXIST on disk from the previous attempt:', ...task.retryContext.previousFiles.map(f => ` - ${f}`), '', 'DO NOT recreate these with write_file. Use edit_file to fix issues, or read_file to check state.');
|
|
421
|
+
}
|
|
230
422
|
if (task.targetFiles && task.targetFiles.length > 0) {
|
|
231
423
|
parts.push('', `TARGET FILES (you should modify these):`, ...task.targetFiles.map(f => ` - ${f}`));
|
|
232
424
|
}
|
|
233
425
|
if (task.readFiles && task.readFiles.length > 0) {
|
|
234
426
|
parts.push('', `REFERENCE FILES (read for context):`, ...task.readFiles.map(f => ` - ${f}`));
|
|
235
427
|
}
|
|
428
|
+
// V7: Delegation spec — skip for research/analysis tasks (redundant with research rules)
|
|
429
|
+
// and skip on retries (prompt is already long enough)
|
|
430
|
+
if (promptTier === 'full' && taskType !== 'research' && taskType !== 'analysis') {
|
|
431
|
+
const delegationSpec = createMinimalDelegationSpec(task.description, worker.name);
|
|
432
|
+
parts.push('', '═══ DELEGATION SPEC ═══', '', buildDelegationPrompt(delegationSpec));
|
|
433
|
+
}
|
|
434
|
+
// V7: Quality self-assessment — only on first attempt
|
|
435
|
+
if (promptTier === 'full') {
|
|
436
|
+
parts.push('', getSubagentQualityPrompt());
|
|
437
|
+
}
|
|
236
438
|
return parts.join('\n');
|
|
237
439
|
}
|
|
238
440
|
/**
|
|
@@ -263,7 +465,7 @@ export class SwarmWorkerPool {
|
|
|
263
465
|
/**
|
|
264
466
|
* Factory function.
|
|
265
467
|
*/
|
|
266
|
-
export function createSwarmWorkerPool(config, agentRegistry, spawnAgent, budgetPool) {
|
|
267
|
-
return new SwarmWorkerPool(config, agentRegistry, spawnAgent, budgetPool);
|
|
468
|
+
export function createSwarmWorkerPool(config, agentRegistry, spawnAgent, budgetPool, healthTracker) {
|
|
469
|
+
return new SwarmWorkerPool(config, agentRegistry, spawnAgent, budgetPool, healthTracker);
|
|
268
470
|
}
|
|
269
471
|
//# sourceMappingURL=worker-pool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../../../../src/integrations/swarm/worker-pool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../../../../src/integrations/swarm/worker-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thinking/Reflection Strategy
|
|
3
|
+
*
|
|
4
|
+
* Generates thinking directives that guide LLMs to use their
|
|
5
|
+
* internal reasoning (extended thinking) for better planning,
|
|
6
|
+
* evaluation, and self-assessment.
|
|
7
|
+
*
|
|
8
|
+
* Following Anthropic's multi-agent research pattern:
|
|
9
|
+
* thinking is controlled through prompt engineering, not code mechanics.
|
|
10
|
+
*/
|
|
11
|
+
import type { ComplexityTier } from './complexity-classifier.js';
|
|
12
|
+
export interface ThinkingDirective {
|
|
13
|
+
/** What the model should think about before acting */
|
|
14
|
+
preActionPrompt?: string;
|
|
15
|
+
/** What the model should evaluate after tool results */
|
|
16
|
+
postToolPrompt?: string;
|
|
17
|
+
/** Quality assessment prompt before returning results */
|
|
18
|
+
qualityCheckPrompt?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ThinkingConfig {
|
|
21
|
+
/** Enable pre-task planning in thinking */
|
|
22
|
+
enablePreTaskPlanning: boolean;
|
|
23
|
+
/** Enable post-tool evaluation in thinking */
|
|
24
|
+
enablePostToolEvaluation: boolean;
|
|
25
|
+
/** Enable quality self-assessment */
|
|
26
|
+
enableQualityAssessment: boolean;
|
|
27
|
+
/** Minimum complexity tier for thinking activation */
|
|
28
|
+
minComplexityTier: ComplexityTier;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate thinking directives based on complexity and config.
|
|
32
|
+
*/
|
|
33
|
+
export declare function generateThinkingDirectives(complexityTier: ComplexityTier, config?: Partial<ThinkingConfig>): ThinkingDirective;
|
|
34
|
+
/**
|
|
35
|
+
* Generate thinking-related system prompt additions.
|
|
36
|
+
* Injected into buildMessages() for complex tasks.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getThinkingSystemPrompt(complexityTier: ComplexityTier, config?: Partial<ThinkingConfig>): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Generate quality self-assessment prompt for subagents.
|
|
41
|
+
* Added to subagent constraints before they return.
|
|
42
|
+
*/
|
|
43
|
+
export declare function getSubagentQualityPrompt(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Create a thinking strategy manager.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createThinkingStrategy(config?: Partial<ThinkingConfig>): {
|
|
48
|
+
generateDirectives: (tier: ComplexityTier) => ThinkingDirective;
|
|
49
|
+
getSystemPrompt: (tier: ComplexityTier) => string | null;
|
|
50
|
+
getSubagentPrompt: () => string;
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=thinking-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking-strategy.d.ts","sourceRoot":"","sources":["../../../src/integrations/thinking-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAMjE,MAAM,WAAW,iBAAiB;IAChC,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,8CAA8C;IAC9C,wBAAwB,EAAE,OAAO,CAAC;IAClC,qCAAqC;IACrC,uBAAuB,EAAE,OAAO,CAAC;IACjC,sDAAsD;IACtD,iBAAiB,EAAE,cAAc,CAAC;CACnC;AA2BD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,iBAAiB,CAuBnB;AA0CD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,MAAM,GAAG,IAAI,CAkBf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAQjD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B;IACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,iBAAiB,CAAC;IAChE,eAAe,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,iBAAiB,EAAE,MAAM,MAAM,CAAC;CACjC,CAMA"}
|