swarm-engine 1.38.0 → 1.41.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/dist/core/patterns.d.ts +7 -1
- package/dist/core/patterns.d.ts.map +1 -1
- package/dist/core/patterns.js +23 -0
- package/dist/core/patterns.js.map +1 -1
- package/dist/core/types.d.ts +9 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -9
- package/dist/memory/index.js.map +1 -1
- package/dist/runtime/adaptive.d.ts +1 -0
- package/dist/runtime/adaptive.d.ts.map +1 -1
- package/dist/runtime/adaptive.js +18 -4
- package/dist/runtime/adaptive.js.map +1 -1
- package/dist/runtime/agent-runner.d.ts +8 -0
- package/dist/runtime/agent-runner.d.ts.map +1 -1
- package/dist/runtime/agent-runner.js +79 -4
- package/dist/runtime/agent-runner.js.map +1 -1
- package/dist/runtime/backends/claude-session.d.ts +49 -0
- package/dist/runtime/backends/claude-session.d.ts.map +1 -0
- package/dist/runtime/backends/claude-session.js +237 -0
- package/dist/runtime/backends/claude-session.js.map +1 -0
- package/dist/runtime/backends/claude.d.ts.map +1 -1
- package/dist/runtime/backends/claude.js +90 -4
- package/dist/runtime/backends/claude.js.map +1 -1
- package/dist/runtime/backends/types.d.ts +31 -1
- package/dist/runtime/backends/types.d.ts.map +1 -1
- package/dist/runtime/compaction.d.ts +7 -1
- package/dist/runtime/compaction.d.ts.map +1 -1
- package/dist/runtime/compaction.js +12 -2
- package/dist/runtime/compaction.js.map +1 -1
- package/dist/runtime/distiller.d.ts +1 -0
- package/dist/runtime/distiller.d.ts.map +1 -1
- package/dist/runtime/distiller.js +8 -2
- package/dist/runtime/distiller.js.map +1 -1
- package/dist/runtime/engine.d.ts +43 -15
- package/dist/runtime/engine.d.ts.map +1 -1
- package/dist/runtime/engine.js +355 -67
- package/dist/runtime/engine.js.map +1 -1
- package/dist/runtime/execution-graph.d.ts.map +1 -1
- package/dist/runtime/execution-graph.js.map +1 -1
- package/dist/runtime/executor.d.ts +7 -1
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +20 -0
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/graph-adversarial.d.ts.map +1 -1
- package/dist/runtime/graph-adversarial.js.map +1 -1
- package/dist/runtime/graph-analyzer.d.ts.map +1 -1
- package/dist/runtime/graph-analyzer.js.map +1 -1
- package/dist/runtime/graph-discovery.d.ts.map +1 -1
- package/dist/runtime/graph-discovery.js +1 -4
- package/dist/runtime/graph-discovery.js.map +1 -1
- package/dist/runtime/graph-dropout.d.ts.map +1 -1
- package/dist/runtime/graph-dropout.js +10 -2
- package/dist/runtime/graph-dropout.js.map +1 -1
- package/dist/runtime/graph-embeddings.d.ts.map +1 -1
- package/dist/runtime/graph-embeddings.js +1 -3
- package/dist/runtime/graph-embeddings.js.map +1 -1
- package/dist/runtime/graph-feedback.d.ts.map +1 -1
- package/dist/runtime/graph-feedback.js +1 -3
- package/dist/runtime/graph-feedback.js.map +1 -1
- package/dist/runtime/graph-gnn.d.ts.map +1 -1
- package/dist/runtime/graph-gnn.js.map +1 -1
- package/dist/runtime/graph-meta-adversarial.d.ts.map +1 -1
- package/dist/runtime/graph-meta-adversarial.js.map +1 -1
- package/dist/runtime/graph-meta.d.ts.map +1 -1
- package/dist/runtime/graph-meta.js +48 -20
- package/dist/runtime/graph-meta.js.map +1 -1
- package/dist/runtime/graph-self-evolve.d.ts.map +1 -1
- package/dist/runtime/graph-self-evolve.js.map +1 -1
- package/dist/runtime/graph-synthesis.d.ts.map +1 -1
- package/dist/runtime/graph-synthesis.js.map +1 -1
- package/dist/runtime/graph-trajectory.d.ts.map +1 -1
- package/dist/runtime/graph-trajectory.js +3 -8
- package/dist/runtime/graph-trajectory.js.map +1 -1
- package/dist/runtime/learning-engine.d.ts.map +1 -1
- package/dist/runtime/learning-engine.js +10 -4
- package/dist/runtime/learning-engine.js.map +1 -1
- package/dist/runtime/prompt-compressor.d.ts +16 -0
- package/dist/runtime/prompt-compressor.d.ts.map +1 -0
- package/dist/runtime/prompt-compressor.js +68 -0
- package/dist/runtime/prompt-compressor.js.map +1 -0
- package/dist/runtime/repo-map.d.ts +40 -0
- package/dist/runtime/repo-map.d.ts.map +1 -0
- package/dist/runtime/repo-map.js +358 -0
- package/dist/runtime/repo-map.js.map +1 -0
- package/dist/runtime/sdk-mcp-server.d.ts +44 -0
- package/dist/runtime/sdk-mcp-server.d.ts.map +1 -0
- package/dist/runtime/sdk-mcp-server.js +133 -0
- package/dist/runtime/sdk-mcp-server.js.map +1 -0
- package/dist/runtime/structured-handoff.d.ts +41 -0
- package/dist/runtime/structured-handoff.d.ts.map +1 -0
- package/dist/runtime/structured-handoff.js +279 -0
- package/dist/runtime/structured-handoff.js.map +1 -0
- package/dist/runtime/token-analytics.d.ts +38 -0
- package/dist/runtime/token-analytics.d.ts.map +1 -0
- package/dist/runtime/token-analytics.js +59 -0
- package/dist/runtime/token-analytics.js.map +1 -0
- package/dist/runtime/verifier.d.ts +10 -0
- package/dist/runtime/verifier.d.ts.map +1 -1
- package/dist/runtime/verifier.js +97 -1
- package/dist/runtime/verifier.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,9 +4,23 @@ import { inferTier } from '../utils/tiers.js';
|
|
|
4
4
|
import { formatLivingSpec } from './living-spec.js';
|
|
5
5
|
import { redactSecrets } from '../utils/redact.js';
|
|
6
6
|
import { extractFileReferences } from './graph-learner.js';
|
|
7
|
+
import { RepoMapGenerator } from './repo-map.js';
|
|
7
8
|
import { join } from 'path';
|
|
8
9
|
import { existsSync, mkdirSync, writeFileSync } from 'fs';
|
|
9
10
|
import { randomUUID } from 'crypto';
|
|
11
|
+
// Default maxTurns by agent type — balances thoroughness vs. cost
|
|
12
|
+
const DEFAULT_MAX_TURNS = {
|
|
13
|
+
researcher: 15,
|
|
14
|
+
implementer: 25,
|
|
15
|
+
reviewer: 10,
|
|
16
|
+
tester: 15,
|
|
17
|
+
debugger: 20,
|
|
18
|
+
documenter: 10,
|
|
19
|
+
planner: 10,
|
|
20
|
+
refactorer: 20,
|
|
21
|
+
integrator: 15,
|
|
22
|
+
'devils-advocate': 10,
|
|
23
|
+
};
|
|
10
24
|
/**
|
|
11
25
|
* Handles individual agent execution, retry logic, worktree management,
|
|
12
26
|
* and prompt construction with cache-friendly ordering.
|
|
@@ -21,6 +35,10 @@ export class AgentRunner {
|
|
|
21
35
|
contextRouter;
|
|
22
36
|
graphLearner;
|
|
23
37
|
graphAnalyzer;
|
|
38
|
+
projectDir;
|
|
39
|
+
lsp;
|
|
40
|
+
// Store per-phase orchestration context to ensure reference equality for cache hits
|
|
41
|
+
phaseContextCache = new Map();
|
|
24
42
|
constructor(deps) {
|
|
25
43
|
this.registry = deps.registry;
|
|
26
44
|
this.executor = deps.executor;
|
|
@@ -31,12 +49,15 @@ export class AgentRunner {
|
|
|
31
49
|
this.contextRouter = deps.contextRouter;
|
|
32
50
|
this.graphLearner = deps.graphLearner ?? null;
|
|
33
51
|
this.graphAnalyzer = deps.graphAnalyzer ?? null;
|
|
52
|
+
this.projectDir = deps.projectDir;
|
|
53
|
+
this.lsp = deps.lsp;
|
|
34
54
|
}
|
|
35
55
|
/**
|
|
36
56
|
* Execute a single agent with retry logic.
|
|
37
57
|
*/
|
|
38
58
|
async executeAgentWithRetry(assignment, phase, orchestration, maxRetries = 2, context) {
|
|
39
59
|
let lastError;
|
|
60
|
+
const originalPrompt = assignment.prompt;
|
|
40
61
|
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
41
62
|
try {
|
|
42
63
|
return await this.executeAgent(assignment, phase, orchestration, context);
|
|
@@ -53,6 +74,13 @@ export class AgentRunner {
|
|
|
53
74
|
agent: assignment.name,
|
|
54
75
|
error: lastError.message,
|
|
55
76
|
});
|
|
77
|
+
// Error-informed retry: inject failure context so the agent tries a different approach
|
|
78
|
+
if (lastError) {
|
|
79
|
+
assignment = {
|
|
80
|
+
...assignment,
|
|
81
|
+
prompt: `## Previous Attempt Failed\nError: ${lastError.message}\nAvoid the same approach. Try a different strategy.\n\n${originalPrompt || ''}`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
56
84
|
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
57
85
|
}
|
|
58
86
|
}
|
|
@@ -70,11 +98,34 @@ export class AgentRunner {
|
|
|
70
98
|
backend: assignment.backend,
|
|
71
99
|
backendModel: assignment.backendModel,
|
|
72
100
|
});
|
|
101
|
+
// Apply default maxTurns by agent type if not explicitly configured
|
|
102
|
+
if (!instance.config.maxTurns) {
|
|
103
|
+
instance.config.maxTurns = DEFAULT_MAX_TURNS[assignment.type] || 20;
|
|
104
|
+
}
|
|
73
105
|
phase.agents.push(instance);
|
|
74
106
|
// Build task prompt with cache-friendly ordering:
|
|
75
107
|
// Shared prefix (orchestration + phase context) comes first for API cache hits,
|
|
76
108
|
// agent-specific content (definition + task) comes last.
|
|
77
|
-
|
|
109
|
+
// Generate repo map for structural context (cache-stable prefix)
|
|
110
|
+
let repoMap = '';
|
|
111
|
+
if (this.projectDir) {
|
|
112
|
+
try {
|
|
113
|
+
repoMap = RepoMapGenerator.generateMap(this.projectDir, { maxTokens: 1500 });
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
/* silent — repo map generation is best-effort */
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Context dedup: reuse the exact same string object per phase so the SDK's
|
|
120
|
+
// prompt caching can detect the shared prefix across parallel agents
|
|
121
|
+
const orchContextRaw = (repoMap ? repoMap + '\n\n' : '') +
|
|
122
|
+
`## Orchestration: ${orchestration.config.name}\nPattern: ${orchestration.config.pattern}`;
|
|
123
|
+
const phaseKey = phase.config.name;
|
|
124
|
+
const cached = this.phaseContextCache.get(phaseKey);
|
|
125
|
+
const orchestrationContext = cached !== undefined && cached === orchContextRaw ? cached : orchContextRaw;
|
|
126
|
+
if (cached !== orchestrationContext) {
|
|
127
|
+
this.phaseContextCache.set(phaseKey, orchestrationContext);
|
|
128
|
+
}
|
|
78
129
|
// Use graph-routed context — with intra-phase enhancement for sequential agents (Feature 1)
|
|
79
130
|
let phaseContext;
|
|
80
131
|
if (this.contextRouter && context.intraPhaseOutputs?.size) {
|
|
@@ -97,7 +148,9 @@ export class AgentRunner {
|
|
|
97
148
|
riskWarning = `\n\n⚠️ RISK WARNING: This agent type (${assignment.type}) has a ${Math.round(agentRisk.riskScore * 100)}% historical failure risk. Common issues: ${agentRisk.reasons?.join(', ') || 'unknown'}. Take extra care with validation and error handling.\n`;
|
|
98
149
|
}
|
|
99
150
|
}
|
|
100
|
-
catch {
|
|
151
|
+
catch {
|
|
152
|
+
/* Graph prediction failed — continue without warning */
|
|
153
|
+
}
|
|
101
154
|
}
|
|
102
155
|
let baseTask = riskWarning + (assignment.prompt || `Execute task as ${assignment.type}`);
|
|
103
156
|
// Co-modification hints (Feature 5): suggest related files often changed together
|
|
@@ -110,7 +163,27 @@ export class AgentRunner {
|
|
|
110
163
|
baseTask += coModHint;
|
|
111
164
|
}
|
|
112
165
|
}
|
|
113
|
-
catch {
|
|
166
|
+
catch {
|
|
167
|
+
/* Graph co-mod hints failed — continue */
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Test feedback wiring: prepend current test status if available
|
|
171
|
+
if (context.testResults) {
|
|
172
|
+
baseTask = `## Current Test Status\n${context.testResults}\n\n${baseTask}`;
|
|
173
|
+
}
|
|
174
|
+
// LSP type info wiring for implementers and debuggers
|
|
175
|
+
let lspContext = '';
|
|
176
|
+
if (this.lsp && (assignment.type === 'implementer' || assignment.type === 'debugger')) {
|
|
177
|
+
try {
|
|
178
|
+
// TODO: Wire LSP when we can identify relevant symbol positions
|
|
179
|
+
// Currently hover(0,0) always returns info for the first character, which is not useful.
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
/* silent — LSP may not be running */
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (lspContext) {
|
|
186
|
+
baseTask += lspContext;
|
|
114
187
|
}
|
|
115
188
|
const optimized = optimizeForCache(orchestrationContext, phaseContext, agentPrompt, baseTask);
|
|
116
189
|
// For parallel phases with large shared prefix, use shared context file
|
|
@@ -147,7 +220,9 @@ export class AgentRunner {
|
|
|
147
220
|
}
|
|
148
221
|
}
|
|
149
222
|
}
|
|
150
|
-
catch {
|
|
223
|
+
catch {
|
|
224
|
+
/* Graph affinity routing failed — continue */
|
|
225
|
+
}
|
|
151
226
|
}
|
|
152
227
|
// Inject living spec into task context
|
|
153
228
|
const specPrefix = context.livingSpec ? formatLivingSpec(context.livingSpec) + '\n\n' : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/runtime/agent-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/runtime/agent-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { AgentConfig } from '../../core/types.js';
|
|
2
|
+
import type { ExecutionBackend, BackendOptions, BackendResult } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Session state stored per-agent for multi-turn context persistence.
|
|
5
|
+
*/
|
|
6
|
+
interface SessionState {
|
|
7
|
+
sessionId: string;
|
|
8
|
+
history: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Session-based Claude backend for long-lived agents that maintain context
|
|
12
|
+
* across multiple interactions. Uses the V2 Session API when available,
|
|
13
|
+
* falls back to regular query() with accumulated history otherwise.
|
|
14
|
+
*/
|
|
15
|
+
export declare class ClaudeSessionBackend implements ExecutionBackend {
|
|
16
|
+
readonly name = "claude-session";
|
|
17
|
+
readonly description = "Claude Code via V2 Session API (persistent context)";
|
|
18
|
+
private sessions;
|
|
19
|
+
private v2Available;
|
|
20
|
+
isAvailable(): Promise<boolean>;
|
|
21
|
+
execute(config: AgentConfig, task: string, options: BackendOptions): Promise<BackendResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Execute using the V2 Session API — creates or resumes a persistent session.
|
|
24
|
+
*/
|
|
25
|
+
private executeV2;
|
|
26
|
+
/**
|
|
27
|
+
* Fallback: use regular query() with accumulated history prepended.
|
|
28
|
+
*/
|
|
29
|
+
private executeFallback;
|
|
30
|
+
/**
|
|
31
|
+
* Check if the V2 Session API is available at runtime.
|
|
32
|
+
* Caches the result after first check.
|
|
33
|
+
*/
|
|
34
|
+
private isV2Available;
|
|
35
|
+
/**
|
|
36
|
+
* Get the current session state for an agent (for inspection/debugging).
|
|
37
|
+
*/
|
|
38
|
+
getSession(agentName: string): SessionState | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Get all active session agent names.
|
|
41
|
+
*/
|
|
42
|
+
getActiveAgents(): string[];
|
|
43
|
+
/**
|
|
44
|
+
* Close all sessions and clear state.
|
|
45
|
+
*/
|
|
46
|
+
cleanup(): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=claude-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-session.d.ts","sourceRoot":"","sources":["../../../src/runtime/backends/claude-session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGlF;;GAEG;AACH,UAAU,YAAY;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,WAAW,yDAAyD;IAE7E,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,WAAW,CAAwB;IAErC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAY/B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IASjG;;OAEG;YACW,SAAS;IAsEvB;;OAEG;YACW,eAAe;IAkF7B;;;OAGG;YACW,aAAa;IAY3B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIvD;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAI3B;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { resolveModel } from '../../utils/tiers.js';
|
|
2
|
+
/**
|
|
3
|
+
* Session-based Claude backend for long-lived agents that maintain context
|
|
4
|
+
* across multiple interactions. Uses the V2 Session API when available,
|
|
5
|
+
* falls back to regular query() with accumulated history otherwise.
|
|
6
|
+
*/
|
|
7
|
+
export class ClaudeSessionBackend {
|
|
8
|
+
name = 'claude-session';
|
|
9
|
+
description = 'Claude Code via V2 Session API (persistent context)';
|
|
10
|
+
sessions = new Map();
|
|
11
|
+
v2Available = null;
|
|
12
|
+
async isAvailable() {
|
|
13
|
+
try {
|
|
14
|
+
const { execFile } = await import('child_process');
|
|
15
|
+
const { promisify } = await import('util');
|
|
16
|
+
const exec = promisify(execFile);
|
|
17
|
+
await exec('claude', ['--version']);
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async execute(config, task, options) {
|
|
25
|
+
const existing = this.sessions.get(config.name);
|
|
26
|
+
if (await this.isV2Available()) {
|
|
27
|
+
return this.executeV2(config, task, options, existing);
|
|
28
|
+
}
|
|
29
|
+
return this.executeFallback(config, task, options, existing);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Execute using the V2 Session API — creates or resumes a persistent session.
|
|
33
|
+
*/
|
|
34
|
+
async executeV2(config, task, options, existing) {
|
|
35
|
+
const sdk = await import('@anthropic-ai/claude-agent-sdk');
|
|
36
|
+
const modelId = resolveModel(config.model);
|
|
37
|
+
const sessionOpts = {
|
|
38
|
+
model: modelId,
|
|
39
|
+
permissionMode: options.permissionMode,
|
|
40
|
+
allowedTools: config.tools,
|
|
41
|
+
disallowedTools: config.disallowedTools,
|
|
42
|
+
};
|
|
43
|
+
let session;
|
|
44
|
+
if (existing) {
|
|
45
|
+
session = sdk.unstable_v2_resumeSession(existing.sessionId, sessionOpts);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
session = sdk.unstable_v2_createSession(sessionOpts);
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
await session.send(task);
|
|
52
|
+
let fullOutput = '';
|
|
53
|
+
let inputTokens = 0;
|
|
54
|
+
let outputTokens = 0;
|
|
55
|
+
let costUsd = 0;
|
|
56
|
+
let turns = 0;
|
|
57
|
+
let toolCalls = 0;
|
|
58
|
+
let sessionId = existing?.sessionId ?? '';
|
|
59
|
+
for await (const message of session.stream()) {
|
|
60
|
+
if (message.type === 'assistant') {
|
|
61
|
+
const msg = message;
|
|
62
|
+
if (msg.message?.content && Array.isArray(msg.message.content)) {
|
|
63
|
+
for (const block of msg.message.content) {
|
|
64
|
+
if (block.type === 'text')
|
|
65
|
+
fullOutput += block.text;
|
|
66
|
+
if (block.type === 'tool_use')
|
|
67
|
+
toolCalls++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
turns++;
|
|
71
|
+
}
|
|
72
|
+
if (message.type === 'result') {
|
|
73
|
+
const r = message;
|
|
74
|
+
if ('usage' in r && r.usage) {
|
|
75
|
+
const u = r.usage;
|
|
76
|
+
inputTokens = u.input_tokens ?? u.inputTokens ?? 0;
|
|
77
|
+
outputTokens = u.output_tokens ?? u.outputTokens ?? 0;
|
|
78
|
+
}
|
|
79
|
+
if ('total_cost_usd' in r)
|
|
80
|
+
costUsd = r.total_cost_usd;
|
|
81
|
+
if ('result' in r && typeof r.result === 'string')
|
|
82
|
+
fullOutput = r.result;
|
|
83
|
+
if ('session_id' in r && typeof r.session_id === 'string')
|
|
84
|
+
sessionId = r.session_id;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Persist session state for future calls
|
|
88
|
+
const history = existing?.history ?? [];
|
|
89
|
+
history.push(task);
|
|
90
|
+
this.sessions.set(config.name, { sessionId, history });
|
|
91
|
+
return buildResult(fullOutput, inputTokens, outputTokens, costUsd, turns, toolCalls);
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
// Don't close the session — it persists for reuse
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Fallback: use regular query() with accumulated history prepended.
|
|
99
|
+
*/
|
|
100
|
+
async executeFallback(config, task, options, existing) {
|
|
101
|
+
const { query } = await import('@anthropic-ai/claude-agent-sdk');
|
|
102
|
+
const modelId = resolveModel(config.model);
|
|
103
|
+
const history = existing?.history ?? [];
|
|
104
|
+
// Build a prompt that includes conversation history for context continuity
|
|
105
|
+
let prompt = task;
|
|
106
|
+
if (history.length > 0) {
|
|
107
|
+
const historyBlock = history.map((msg, i) => `[Turn ${i + 1}]: ${msg}`).join('\n');
|
|
108
|
+
prompt = `Previous conversation context:\n${historyBlock}\n\nCurrent task:\n${task}`;
|
|
109
|
+
}
|
|
110
|
+
const sdkOptions = {
|
|
111
|
+
agent: `swarm-${config.name}`,
|
|
112
|
+
agents: {
|
|
113
|
+
[`swarm-${config.name}`]: {
|
|
114
|
+
description: config.description || `Swarm agent: ${config.name}`,
|
|
115
|
+
prompt: config.prompt,
|
|
116
|
+
model: modelId,
|
|
117
|
+
tools: config.tools,
|
|
118
|
+
disallowedTools: config.disallowedTools,
|
|
119
|
+
maxTurns: config.maxTurns ?? 50,
|
|
120
|
+
permissionMode: options.permissionMode,
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
model: modelId,
|
|
124
|
+
tools: config.tools,
|
|
125
|
+
disallowedTools: config.disallowedTools,
|
|
126
|
+
maxTurns: config.maxTurns ?? 50,
|
|
127
|
+
maxBudgetUsd: options.costBudget ?? 5.0,
|
|
128
|
+
cwd: options.cwd,
|
|
129
|
+
permissionMode: options.permissionMode,
|
|
130
|
+
...(options.permissionMode === 'bypassPermissions' ? { allowDangerouslySkipPermissions: true } : {}),
|
|
131
|
+
persistSession: false,
|
|
132
|
+
};
|
|
133
|
+
let fullOutput = '';
|
|
134
|
+
let inputTokens = 0;
|
|
135
|
+
let outputTokens = 0;
|
|
136
|
+
let costUsd = 0;
|
|
137
|
+
let turns = 0;
|
|
138
|
+
let toolCalls = 0;
|
|
139
|
+
const q = query({ prompt, options: sdkOptions });
|
|
140
|
+
for await (const message of q) {
|
|
141
|
+
if (message.type === 'assistant') {
|
|
142
|
+
const msg = message;
|
|
143
|
+
if (msg.message?.content && Array.isArray(msg.message.content)) {
|
|
144
|
+
for (const block of msg.message.content) {
|
|
145
|
+
if (block.type === 'text')
|
|
146
|
+
fullOutput += block.text;
|
|
147
|
+
if (block.type === 'tool_use')
|
|
148
|
+
toolCalls++;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
turns++;
|
|
152
|
+
}
|
|
153
|
+
if (message.type === 'result') {
|
|
154
|
+
const r = message;
|
|
155
|
+
if (r.usage) {
|
|
156
|
+
inputTokens = r.usage.input_tokens ?? r.usage.inputTokens ?? 0;
|
|
157
|
+
outputTokens = r.usage.output_tokens ?? r.usage.outputTokens ?? 0;
|
|
158
|
+
}
|
|
159
|
+
if (r.cost_usd)
|
|
160
|
+
costUsd = r.cost_usd;
|
|
161
|
+
if (r.result)
|
|
162
|
+
fullOutput = r.result;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Update history for session continuity
|
|
166
|
+
history.push(task);
|
|
167
|
+
const sessionId = existing?.sessionId ?? `fallback-${config.name}-${Date.now()}`;
|
|
168
|
+
this.sessions.set(config.name, { sessionId, history });
|
|
169
|
+
return buildResult(fullOutput, inputTokens, outputTokens, costUsd, turns, toolCalls);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check if the V2 Session API is available at runtime.
|
|
173
|
+
* Caches the result after first check.
|
|
174
|
+
*/
|
|
175
|
+
async isV2Available() {
|
|
176
|
+
if (this.v2Available !== null)
|
|
177
|
+
return this.v2Available;
|
|
178
|
+
try {
|
|
179
|
+
const sdk = await import('@anthropic-ai/claude-agent-sdk');
|
|
180
|
+
this.v2Available = typeof sdk.unstable_v2_createSession === 'function';
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
this.v2Available = false;
|
|
184
|
+
}
|
|
185
|
+
return this.v2Available;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get the current session state for an agent (for inspection/debugging).
|
|
189
|
+
*/
|
|
190
|
+
getSession(agentName) {
|
|
191
|
+
return this.sessions.get(agentName);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Get all active session agent names.
|
|
195
|
+
*/
|
|
196
|
+
getActiveAgents() {
|
|
197
|
+
return Array.from(this.sessions.keys());
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Close all sessions and clear state.
|
|
201
|
+
*/
|
|
202
|
+
async cleanup() {
|
|
203
|
+
this.sessions.clear();
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
function buildResult(output, inputTokens, outputTokens, costUsd, turns, toolCalls) {
|
|
207
|
+
const usage = {
|
|
208
|
+
inputTokens,
|
|
209
|
+
outputTokens,
|
|
210
|
+
totalTokens: inputTokens + outputTokens,
|
|
211
|
+
costUsd,
|
|
212
|
+
turns,
|
|
213
|
+
toolCalls,
|
|
214
|
+
durationMs: 0, // set by caller
|
|
215
|
+
};
|
|
216
|
+
return {
|
|
217
|
+
output,
|
|
218
|
+
usage,
|
|
219
|
+
result: {
|
|
220
|
+
output,
|
|
221
|
+
confidence: parseField(output, 'Confidence', 'medium'),
|
|
222
|
+
blockers: parseListField(output, 'Blockers'),
|
|
223
|
+
filesTouched: parseListField(output, 'Files touched'),
|
|
224
|
+
},
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function parseField(output, field, fallback) {
|
|
228
|
+
const match = output.match(new RegExp(`\\*\\*${field}\\*\\*:\\s*(.+)`, 'i'));
|
|
229
|
+
return match?.[1]?.trim().toLowerCase() ?? fallback;
|
|
230
|
+
}
|
|
231
|
+
function parseListField(output, field) {
|
|
232
|
+
const match = output.match(new RegExp(`\\*\\*${field}\\*\\*:\\s*(.+)`, 'i'));
|
|
233
|
+
if (!match?.[1] || match[1].toLowerCase().includes('none'))
|
|
234
|
+
return [];
|
|
235
|
+
return match[1].split(',').map((s) => s.trim().replace(/`/g, ''));
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=claude-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-session.js","sourceRoot":"","sources":["../../../src/runtime/backends/claude-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/runtime/backends/claude.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA2B,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/runtime/backends/claude.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA2B,MAAM,qBAAqB,CAAC;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAuBlF,qBAAa,aAAc,YAAW,gBAAgB;IACpD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,WAAW,yCAAyC;IAEvD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;CA8MlG"}
|
|
@@ -49,6 +49,10 @@ export class ClaudeBackend {
|
|
|
49
49
|
maxTurns: config.maxTurns ?? 50,
|
|
50
50
|
permissionMode: options.permissionMode,
|
|
51
51
|
};
|
|
52
|
+
// Feature #2 — Effort: set on agent definition
|
|
53
|
+
if (config.effort) {
|
|
54
|
+
agentDef.effort = config.effort;
|
|
55
|
+
}
|
|
52
56
|
const sdkOptions = {
|
|
53
57
|
agent: agentName,
|
|
54
58
|
agents: { [agentName]: agentDef },
|
|
@@ -62,13 +66,68 @@ export class ClaudeBackend {
|
|
|
62
66
|
...(options.permissionMode === 'bypassPermissions' ? { allowDangerouslySkipPermissions: true } : {}),
|
|
63
67
|
persistSession: false,
|
|
64
68
|
};
|
|
69
|
+
// Feature #2 — Effort: set on SDK options
|
|
70
|
+
if (config.effort) {
|
|
71
|
+
sdkOptions.effort = config.effort;
|
|
72
|
+
}
|
|
73
|
+
// Effort-based token scaling: constrain or uncap maxTurns based on effort level
|
|
74
|
+
if (config.effort === 'low') {
|
|
75
|
+
sdkOptions.maxTurns = Math.min(sdkOptions.maxTurns ?? 20, 5);
|
|
76
|
+
agentDef.maxTurns = sdkOptions.maxTurns;
|
|
77
|
+
}
|
|
78
|
+
else if (config.effort === 'max') {
|
|
79
|
+
// No constraints — allow full budget
|
|
80
|
+
delete sdkOptions.maxTurns;
|
|
81
|
+
delete agentDef.maxTurns;
|
|
82
|
+
}
|
|
83
|
+
// Feature #1 — Structured output via JSON schema
|
|
84
|
+
if (config.sdkOutputSchema) {
|
|
85
|
+
sdkOptions.outputFormat = { type: 'json_schema', schema: config.sdkOutputSchema };
|
|
86
|
+
}
|
|
87
|
+
// Feature #3 — MCP passthrough
|
|
88
|
+
if (options?.mcpConfigs) {
|
|
89
|
+
sdkOptions.mcpServers = options.mcpConfigs;
|
|
90
|
+
}
|
|
91
|
+
// Feature #6 — Task budget
|
|
92
|
+
if (config.taskBudget) {
|
|
93
|
+
sdkOptions.taskBudget = config.taskBudget;
|
|
94
|
+
}
|
|
95
|
+
// Feature #7 — Hooks
|
|
96
|
+
if (config.sdkHooks) {
|
|
97
|
+
sdkOptions.hooks = config.sdkHooks;
|
|
98
|
+
}
|
|
99
|
+
// Feature #8 — File checkpointing (always enabled)
|
|
100
|
+
sdkOptions.enableFileCheckpointing = true;
|
|
101
|
+
// Feature #9 — Progress summaries
|
|
102
|
+
sdkOptions.agentProgressSummaries = true;
|
|
103
|
+
// Feature #10 — Betas (e.g., 1M context)
|
|
104
|
+
if (config.betas?.length) {
|
|
105
|
+
sdkOptions.betas = config.betas;
|
|
106
|
+
}
|
|
107
|
+
// Feature #11 — Sandbox
|
|
108
|
+
if (config.sandbox) {
|
|
109
|
+
sdkOptions.sandbox = config.sandbox;
|
|
110
|
+
}
|
|
111
|
+
// Feature #15 — canUseTool permission callback
|
|
112
|
+
if (options?.canUseTool) {
|
|
113
|
+
sdkOptions.canUseTool = options.canUseTool;
|
|
114
|
+
}
|
|
65
115
|
let fullOutput = '';
|
|
66
116
|
let inputTokens = 0;
|
|
67
117
|
let outputTokens = 0;
|
|
68
118
|
let costUsd = 0;
|
|
69
119
|
let turns = 0;
|
|
70
120
|
let toolCalls = 0;
|
|
71
|
-
|
|
121
|
+
let durationMs = 0;
|
|
122
|
+
let durationApiMs = 0;
|
|
123
|
+
let numTurns = 0;
|
|
124
|
+
let structuredOutput;
|
|
125
|
+
let permissionDenials = [];
|
|
126
|
+
let modelUsage;
|
|
127
|
+
let deferredToolUse;
|
|
128
|
+
// Feature #13 — Streaming input: pass AsyncIterable prompt if provided
|
|
129
|
+
const promptInput = options?.streamingPrompt ?? task;
|
|
130
|
+
const q = query({ prompt: promptInput, options: sdkOptions });
|
|
72
131
|
for await (const message of q) {
|
|
73
132
|
if (message.type === 'assistant') {
|
|
74
133
|
if ('message' in message && message.message) {
|
|
@@ -84,14 +143,34 @@ export class ClaudeBackend {
|
|
|
84
143
|
}
|
|
85
144
|
turns++;
|
|
86
145
|
}
|
|
146
|
+
// Feature #9 — Handle progress summaries
|
|
147
|
+
if (message.type === 'system' && message.subtype === 'task_progress') {
|
|
148
|
+
const prog = message;
|
|
149
|
+
options?.progressCallback?.({ summary: prog.summary || prog.description, taskId: prog.task_id });
|
|
150
|
+
}
|
|
151
|
+
// Feature #14 — Rich result extraction
|
|
87
152
|
if (message.type === 'result') {
|
|
88
153
|
const r = message;
|
|
89
154
|
if (r.usage) {
|
|
90
155
|
inputTokens = r.usage.input_tokens ?? r.usage.inputTokens ?? 0;
|
|
91
156
|
outputTokens = r.usage.output_tokens ?? r.usage.outputTokens ?? 0;
|
|
92
157
|
}
|
|
93
|
-
|
|
94
|
-
|
|
158
|
+
costUsd = r.total_cost_usd || r.cost_usd || 0;
|
|
159
|
+
durationMs = r.duration_ms || 0;
|
|
160
|
+
durationApiMs = r.duration_api_ms || 0;
|
|
161
|
+
numTurns = r.num_turns || 0;
|
|
162
|
+
structuredOutput = r.structured_output;
|
|
163
|
+
permissionDenials = (r.permission_denials || []).map((d) => ({
|
|
164
|
+
tool: d.tool_name || '',
|
|
165
|
+
reason: d.reason || '',
|
|
166
|
+
}));
|
|
167
|
+
modelUsage = r.modelUsage
|
|
168
|
+
? Object.fromEntries(Object.entries(r.modelUsage).map(([k, v]) => [
|
|
169
|
+
k,
|
|
170
|
+
{ inputTokens: v.inputTokens || 0, outputTokens: v.outputTokens || 0, costUsd: v.costUSD || 0 },
|
|
171
|
+
]))
|
|
172
|
+
: undefined;
|
|
173
|
+
deferredToolUse = r.deferred_tool_use;
|
|
95
174
|
if (r.result)
|
|
96
175
|
fullOutput = r.result;
|
|
97
176
|
}
|
|
@@ -103,7 +182,7 @@ export class ClaudeBackend {
|
|
|
103
182
|
costUsd,
|
|
104
183
|
turns,
|
|
105
184
|
toolCalls,
|
|
106
|
-
durationMs
|
|
185
|
+
durationMs,
|
|
107
186
|
};
|
|
108
187
|
return {
|
|
109
188
|
output: fullOutput,
|
|
@@ -114,6 +193,13 @@ export class ClaudeBackend {
|
|
|
114
193
|
blockers: parseListField(fullOutput, 'Blockers'),
|
|
115
194
|
filesTouched: parseListField(fullOutput, 'Files touched'),
|
|
116
195
|
},
|
|
196
|
+
structuredOutput,
|
|
197
|
+
durationMs,
|
|
198
|
+
durationApiMs,
|
|
199
|
+
numTurns,
|
|
200
|
+
permissionDenials,
|
|
201
|
+
deferredToolUse,
|
|
202
|
+
modelUsage,
|
|
117
203
|
};
|
|
118
204
|
}
|
|
119
205
|
}
|