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.
Files changed (107) hide show
  1. package/dist/core/patterns.d.ts +7 -1
  2. package/dist/core/patterns.d.ts.map +1 -1
  3. package/dist/core/patterns.js +23 -0
  4. package/dist/core/patterns.js.map +1 -1
  5. package/dist/core/types.d.ts +9 -0
  6. package/dist/core/types.d.ts.map +1 -1
  7. package/dist/core/types.js.map +1 -1
  8. package/dist/index.d.ts +11 -2
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +8 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/memory/index.d.ts.map +1 -1
  13. package/dist/memory/index.js +3 -9
  14. package/dist/memory/index.js.map +1 -1
  15. package/dist/runtime/adaptive.d.ts +1 -0
  16. package/dist/runtime/adaptive.d.ts.map +1 -1
  17. package/dist/runtime/adaptive.js +18 -4
  18. package/dist/runtime/adaptive.js.map +1 -1
  19. package/dist/runtime/agent-runner.d.ts +8 -0
  20. package/dist/runtime/agent-runner.d.ts.map +1 -1
  21. package/dist/runtime/agent-runner.js +79 -4
  22. package/dist/runtime/agent-runner.js.map +1 -1
  23. package/dist/runtime/backends/claude-session.d.ts +49 -0
  24. package/dist/runtime/backends/claude-session.d.ts.map +1 -0
  25. package/dist/runtime/backends/claude-session.js +237 -0
  26. package/dist/runtime/backends/claude-session.js.map +1 -0
  27. package/dist/runtime/backends/claude.d.ts.map +1 -1
  28. package/dist/runtime/backends/claude.js +90 -4
  29. package/dist/runtime/backends/claude.js.map +1 -1
  30. package/dist/runtime/backends/types.d.ts +31 -1
  31. package/dist/runtime/backends/types.d.ts.map +1 -1
  32. package/dist/runtime/compaction.d.ts +7 -1
  33. package/dist/runtime/compaction.d.ts.map +1 -1
  34. package/dist/runtime/compaction.js +12 -2
  35. package/dist/runtime/compaction.js.map +1 -1
  36. package/dist/runtime/distiller.d.ts +1 -0
  37. package/dist/runtime/distiller.d.ts.map +1 -1
  38. package/dist/runtime/distiller.js +8 -2
  39. package/dist/runtime/distiller.js.map +1 -1
  40. package/dist/runtime/engine.d.ts +43 -15
  41. package/dist/runtime/engine.d.ts.map +1 -1
  42. package/dist/runtime/engine.js +355 -67
  43. package/dist/runtime/engine.js.map +1 -1
  44. package/dist/runtime/execution-graph.d.ts.map +1 -1
  45. package/dist/runtime/execution-graph.js.map +1 -1
  46. package/dist/runtime/executor.d.ts +7 -1
  47. package/dist/runtime/executor.d.ts.map +1 -1
  48. package/dist/runtime/executor.js +20 -0
  49. package/dist/runtime/executor.js.map +1 -1
  50. package/dist/runtime/graph-adversarial.d.ts.map +1 -1
  51. package/dist/runtime/graph-adversarial.js.map +1 -1
  52. package/dist/runtime/graph-analyzer.d.ts.map +1 -1
  53. package/dist/runtime/graph-analyzer.js.map +1 -1
  54. package/dist/runtime/graph-discovery.d.ts.map +1 -1
  55. package/dist/runtime/graph-discovery.js +1 -4
  56. package/dist/runtime/graph-discovery.js.map +1 -1
  57. package/dist/runtime/graph-dropout.d.ts.map +1 -1
  58. package/dist/runtime/graph-dropout.js +10 -2
  59. package/dist/runtime/graph-dropout.js.map +1 -1
  60. package/dist/runtime/graph-embeddings.d.ts.map +1 -1
  61. package/dist/runtime/graph-embeddings.js +1 -3
  62. package/dist/runtime/graph-embeddings.js.map +1 -1
  63. package/dist/runtime/graph-feedback.d.ts.map +1 -1
  64. package/dist/runtime/graph-feedback.js +1 -3
  65. package/dist/runtime/graph-feedback.js.map +1 -1
  66. package/dist/runtime/graph-gnn.d.ts.map +1 -1
  67. package/dist/runtime/graph-gnn.js.map +1 -1
  68. package/dist/runtime/graph-meta-adversarial.d.ts.map +1 -1
  69. package/dist/runtime/graph-meta-adversarial.js.map +1 -1
  70. package/dist/runtime/graph-meta.d.ts.map +1 -1
  71. package/dist/runtime/graph-meta.js +48 -20
  72. package/dist/runtime/graph-meta.js.map +1 -1
  73. package/dist/runtime/graph-self-evolve.d.ts.map +1 -1
  74. package/dist/runtime/graph-self-evolve.js.map +1 -1
  75. package/dist/runtime/graph-synthesis.d.ts.map +1 -1
  76. package/dist/runtime/graph-synthesis.js.map +1 -1
  77. package/dist/runtime/graph-trajectory.d.ts.map +1 -1
  78. package/dist/runtime/graph-trajectory.js +3 -8
  79. package/dist/runtime/graph-trajectory.js.map +1 -1
  80. package/dist/runtime/learning-engine.d.ts.map +1 -1
  81. package/dist/runtime/learning-engine.js +10 -4
  82. package/dist/runtime/learning-engine.js.map +1 -1
  83. package/dist/runtime/prompt-compressor.d.ts +16 -0
  84. package/dist/runtime/prompt-compressor.d.ts.map +1 -0
  85. package/dist/runtime/prompt-compressor.js +68 -0
  86. package/dist/runtime/prompt-compressor.js.map +1 -0
  87. package/dist/runtime/repo-map.d.ts +40 -0
  88. package/dist/runtime/repo-map.d.ts.map +1 -0
  89. package/dist/runtime/repo-map.js +358 -0
  90. package/dist/runtime/repo-map.js.map +1 -0
  91. package/dist/runtime/sdk-mcp-server.d.ts +44 -0
  92. package/dist/runtime/sdk-mcp-server.d.ts.map +1 -0
  93. package/dist/runtime/sdk-mcp-server.js +133 -0
  94. package/dist/runtime/sdk-mcp-server.js.map +1 -0
  95. package/dist/runtime/structured-handoff.d.ts +41 -0
  96. package/dist/runtime/structured-handoff.d.ts.map +1 -0
  97. package/dist/runtime/structured-handoff.js +279 -0
  98. package/dist/runtime/structured-handoff.js.map +1 -0
  99. package/dist/runtime/token-analytics.d.ts +38 -0
  100. package/dist/runtime/token-analytics.d.ts.map +1 -0
  101. package/dist/runtime/token-analytics.js +59 -0
  102. package/dist/runtime/token-analytics.js.map +1 -0
  103. package/dist/runtime/verifier.d.ts +10 -0
  104. package/dist/runtime/verifier.d.ts.map +1 -1
  105. package/dist/runtime/verifier.js +97 -1
  106. package/dist/runtime/verifier.js.map +1 -1
  107. 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
- const orchestrationContext = `## Orchestration: ${orchestration.config.name}\nPattern: ${orchestration.config.pattern}`;
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 { /* Graph prediction failed — continue without warning */ }
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 { /* Graph co-mod hints failed — continue */ }
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 { /* Graph affinity routing failed — continue */ }
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;AAclF,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;CAyGlG"}
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
- const q = query({ prompt: task, options: sdkOptions });
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
- if (r.cost_usd)
94
- costUsd = r.cost_usd;
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: 0, // set by caller
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
  }