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.
Files changed (219) hide show
  1. package/CHANGELOG.md +191 -1
  2. package/README.md +7 -0
  3. package/dist/src/adapters.d.ts +6 -1
  4. package/dist/src/adapters.d.ts.map +1 -1
  5. package/dist/src/adapters.js +8 -1
  6. package/dist/src/adapters.js.map +1 -1
  7. package/dist/src/agent.d.ts +41 -4
  8. package/dist/src/agent.d.ts.map +1 -1
  9. package/dist/src/agent.js +846 -75
  10. package/dist/src/agent.js.map +1 -1
  11. package/dist/src/cli.d.ts.map +1 -1
  12. package/dist/src/cli.js +23 -2
  13. package/dist/src/cli.js.map +1 -1
  14. package/dist/src/core/protocol/types.d.ts +8 -8
  15. package/dist/src/defaults.d.ts +7 -2
  16. package/dist/src/defaults.d.ts.map +1 -1
  17. package/dist/src/defaults.js +38 -2
  18. package/dist/src/defaults.js.map +1 -1
  19. package/dist/src/integrations/agent-registry.d.ts +13 -0
  20. package/dist/src/integrations/agent-registry.d.ts.map +1 -1
  21. package/dist/src/integrations/agent-registry.js.map +1 -1
  22. package/dist/src/integrations/async-subagent.d.ts +135 -0
  23. package/dist/src/integrations/async-subagent.d.ts.map +1 -0
  24. package/dist/src/integrations/async-subagent.js +213 -0
  25. package/dist/src/integrations/async-subagent.js.map +1 -0
  26. package/dist/src/integrations/auto-checkpoint.d.ts +98 -0
  27. package/dist/src/integrations/auto-checkpoint.d.ts.map +1 -0
  28. package/dist/src/integrations/auto-checkpoint.js +252 -0
  29. package/dist/src/integrations/auto-checkpoint.js.map +1 -0
  30. package/dist/src/integrations/auto-compaction.d.ts.map +1 -1
  31. package/dist/src/integrations/auto-compaction.js +5 -1
  32. package/dist/src/integrations/auto-compaction.js.map +1 -1
  33. package/dist/src/integrations/bash-policy.d.ts +33 -0
  34. package/dist/src/integrations/bash-policy.d.ts.map +1 -0
  35. package/dist/src/integrations/bash-policy.js +142 -0
  36. package/dist/src/integrations/bash-policy.js.map +1 -0
  37. package/dist/src/integrations/codebase-context.d.ts +5 -0
  38. package/dist/src/integrations/codebase-context.d.ts.map +1 -1
  39. package/dist/src/integrations/codebase-context.js +33 -0
  40. package/dist/src/integrations/codebase-context.js.map +1 -1
  41. package/dist/src/integrations/complexity-classifier.d.ts +86 -0
  42. package/dist/src/integrations/complexity-classifier.d.ts.map +1 -0
  43. package/dist/src/integrations/complexity-classifier.js +233 -0
  44. package/dist/src/integrations/complexity-classifier.js.map +1 -0
  45. package/dist/src/integrations/delegation-protocol.d.ts +86 -0
  46. package/dist/src/integrations/delegation-protocol.d.ts.map +1 -0
  47. package/dist/src/integrations/delegation-protocol.js +127 -0
  48. package/dist/src/integrations/delegation-protocol.js.map +1 -0
  49. package/dist/src/integrations/dynamic-budget.d.ts +81 -0
  50. package/dist/src/integrations/dynamic-budget.d.ts.map +1 -0
  51. package/dist/src/integrations/dynamic-budget.js +151 -0
  52. package/dist/src/integrations/dynamic-budget.js.map +1 -0
  53. package/dist/src/integrations/economics.d.ts +86 -1
  54. package/dist/src/integrations/economics.d.ts.map +1 -1
  55. package/dist/src/integrations/economics.js +306 -11
  56. package/dist/src/integrations/economics.js.map +1 -1
  57. package/dist/src/integrations/environment-facts.d.ts +52 -0
  58. package/dist/src/integrations/environment-facts.d.ts.map +1 -0
  59. package/dist/src/integrations/environment-facts.js +84 -0
  60. package/dist/src/integrations/environment-facts.js.map +1 -0
  61. package/dist/src/integrations/hierarchical-config.d.ts.map +1 -1
  62. package/dist/src/integrations/hierarchical-config.js +17 -0
  63. package/dist/src/integrations/hierarchical-config.js.map +1 -1
  64. package/dist/src/integrations/index.d.ts +19 -2
  65. package/dist/src/integrations/index.d.ts.map +1 -1
  66. package/dist/src/integrations/index.js +34 -2
  67. package/dist/src/integrations/index.js.map +1 -1
  68. package/dist/src/integrations/injection-budget.d.ts +71 -0
  69. package/dist/src/integrations/injection-budget.d.ts.map +1 -0
  70. package/dist/src/integrations/injection-budget.js +136 -0
  71. package/dist/src/integrations/injection-budget.js.map +1 -0
  72. package/dist/src/integrations/mcp-client.d.ts.map +1 -1
  73. package/dist/src/integrations/mcp-client.js +14 -0
  74. package/dist/src/integrations/mcp-client.js.map +1 -1
  75. package/dist/src/integrations/mcp-custom-tools.d.ts +102 -0
  76. package/dist/src/integrations/mcp-custom-tools.d.ts.map +1 -0
  77. package/dist/src/integrations/mcp-custom-tools.js +232 -0
  78. package/dist/src/integrations/mcp-custom-tools.js.map +1 -0
  79. package/dist/src/integrations/mcp-tool-validator.d.ts +60 -0
  80. package/dist/src/integrations/mcp-tool-validator.d.ts.map +1 -0
  81. package/dist/src/integrations/mcp-tool-validator.js +141 -0
  82. package/dist/src/integrations/mcp-tool-validator.js.map +1 -0
  83. package/dist/src/integrations/policy-engine.d.ts +55 -0
  84. package/dist/src/integrations/policy-engine.d.ts.map +1 -0
  85. package/dist/src/integrations/policy-engine.js +247 -0
  86. package/dist/src/integrations/policy-engine.js.map +1 -0
  87. package/dist/src/integrations/safety.d.ts +5 -4
  88. package/dist/src/integrations/safety.d.ts.map +1 -1
  89. package/dist/src/integrations/safety.js +32 -7
  90. package/dist/src/integrations/safety.js.map +1 -1
  91. package/dist/src/integrations/sandbox/basic.d.ts +7 -0
  92. package/dist/src/integrations/sandbox/basic.d.ts.map +1 -1
  93. package/dist/src/integrations/sandbox/basic.js +27 -2
  94. package/dist/src/integrations/sandbox/basic.js.map +1 -1
  95. package/dist/src/integrations/sandbox/index.d.ts +6 -0
  96. package/dist/src/integrations/sandbox/index.d.ts.map +1 -1
  97. package/dist/src/integrations/sandbox/index.js +3 -0
  98. package/dist/src/integrations/sandbox/index.js.map +1 -1
  99. package/dist/src/integrations/sandbox/landlock.d.ts.map +1 -1
  100. package/dist/src/integrations/sandbox/landlock.js +3 -0
  101. package/dist/src/integrations/sandbox/landlock.js.map +1 -1
  102. package/dist/src/integrations/self-improvement.d.ts +90 -0
  103. package/dist/src/integrations/self-improvement.d.ts.map +1 -0
  104. package/dist/src/integrations/self-improvement.js +229 -0
  105. package/dist/src/integrations/self-improvement.js.map +1 -0
  106. package/dist/src/integrations/smart-decomposer.d.ts +22 -1
  107. package/dist/src/integrations/smart-decomposer.d.ts.map +1 -1
  108. package/dist/src/integrations/smart-decomposer.js +127 -28
  109. package/dist/src/integrations/smart-decomposer.js.map +1 -1
  110. package/dist/src/integrations/subagent-output-store.d.ts +91 -0
  111. package/dist/src/integrations/subagent-output-store.d.ts.map +1 -0
  112. package/dist/src/integrations/subagent-output-store.js +257 -0
  113. package/dist/src/integrations/subagent-output-store.js.map +1 -0
  114. package/dist/src/integrations/swarm/index.d.ts +2 -2
  115. package/dist/src/integrations/swarm/index.d.ts.map +1 -1
  116. package/dist/src/integrations/swarm/index.js +1 -1
  117. package/dist/src/integrations/swarm/index.js.map +1 -1
  118. package/dist/src/integrations/swarm/model-selector.d.ts +16 -0
  119. package/dist/src/integrations/swarm/model-selector.d.ts.map +1 -1
  120. package/dist/src/integrations/swarm/model-selector.js +123 -10
  121. package/dist/src/integrations/swarm/model-selector.js.map +1 -1
  122. package/dist/src/integrations/swarm/swarm-budget.d.ts +4 -0
  123. package/dist/src/integrations/swarm/swarm-budget.d.ts.map +1 -1
  124. package/dist/src/integrations/swarm/swarm-budget.js +6 -0
  125. package/dist/src/integrations/swarm/swarm-budget.js.map +1 -1
  126. package/dist/src/integrations/swarm/swarm-config-loader.d.ts +10 -1
  127. package/dist/src/integrations/swarm/swarm-config-loader.d.ts.map +1 -1
  128. package/dist/src/integrations/swarm/swarm-config-loader.js +226 -13
  129. package/dist/src/integrations/swarm/swarm-config-loader.js.map +1 -1
  130. package/dist/src/integrations/swarm/swarm-event-bridge.d.ts +12 -1
  131. package/dist/src/integrations/swarm/swarm-event-bridge.d.ts.map +1 -1
  132. package/dist/src/integrations/swarm/swarm-event-bridge.js +178 -9
  133. package/dist/src/integrations/swarm/swarm-event-bridge.js.map +1 -1
  134. package/dist/src/integrations/swarm/swarm-events.d.ts +66 -1
  135. package/dist/src/integrations/swarm/swarm-events.d.ts.map +1 -1
  136. package/dist/src/integrations/swarm/swarm-events.js +26 -5
  137. package/dist/src/integrations/swarm/swarm-events.js.map +1 -1
  138. package/dist/src/integrations/swarm/swarm-orchestrator.d.ts +127 -0
  139. package/dist/src/integrations/swarm/swarm-orchestrator.d.ts.map +1 -1
  140. package/dist/src/integrations/swarm/swarm-orchestrator.js +1842 -47
  141. package/dist/src/integrations/swarm/swarm-orchestrator.js.map +1 -1
  142. package/dist/src/integrations/swarm/swarm-quality-gate.d.ts +91 -3
  143. package/dist/src/integrations/swarm/swarm-quality-gate.d.ts.map +1 -1
  144. package/dist/src/integrations/swarm/swarm-quality-gate.js +395 -19
  145. package/dist/src/integrations/swarm/swarm-quality-gate.js.map +1 -1
  146. package/dist/src/integrations/swarm/task-queue.d.ts +55 -1
  147. package/dist/src/integrations/swarm/task-queue.d.ts.map +1 -1
  148. package/dist/src/integrations/swarm/task-queue.js +389 -16
  149. package/dist/src/integrations/swarm/task-queue.js.map +1 -1
  150. package/dist/src/integrations/swarm/types.d.ts +247 -11
  151. package/dist/src/integrations/swarm/types.d.ts.map +1 -1
  152. package/dist/src/integrations/swarm/types.js +67 -9
  153. package/dist/src/integrations/swarm/types.js.map +1 -1
  154. package/dist/src/integrations/swarm/worker-pool.d.ts +18 -5
  155. package/dist/src/integrations/swarm/worker-pool.d.ts.map +1 -1
  156. package/dist/src/integrations/swarm/worker-pool.js +236 -34
  157. package/dist/src/integrations/swarm/worker-pool.js.map +1 -1
  158. package/dist/src/integrations/thinking-strategy.d.ts +52 -0
  159. package/dist/src/integrations/thinking-strategy.d.ts.map +1 -0
  160. package/dist/src/integrations/thinking-strategy.js +129 -0
  161. package/dist/src/integrations/thinking-strategy.js.map +1 -0
  162. package/dist/src/integrations/tool-recommendation.d.ts +61 -0
  163. package/dist/src/integrations/tool-recommendation.d.ts.map +1 -0
  164. package/dist/src/integrations/tool-recommendation.js +268 -0
  165. package/dist/src/integrations/tool-recommendation.js.map +1 -0
  166. package/dist/src/integrations/verification-gate.d.ts +80 -0
  167. package/dist/src/integrations/verification-gate.d.ts.map +1 -0
  168. package/dist/src/integrations/verification-gate.js +146 -0
  169. package/dist/src/integrations/verification-gate.js.map +1 -0
  170. package/dist/src/integrations/work-log.d.ts +87 -0
  171. package/dist/src/integrations/work-log.d.ts.map +1 -0
  172. package/dist/src/integrations/work-log.js +275 -0
  173. package/dist/src/integrations/work-log.js.map +1 -0
  174. package/dist/src/main.js +31 -5
  175. package/dist/src/main.js.map +1 -1
  176. package/dist/src/modes/repl.d.ts.map +1 -1
  177. package/dist/src/modes/repl.js +10 -4
  178. package/dist/src/modes/repl.js.map +1 -1
  179. package/dist/src/modes/tui.d.ts.map +1 -1
  180. package/dist/src/modes/tui.js +5 -0
  181. package/dist/src/modes/tui.js.map +1 -1
  182. package/dist/src/modes.d.ts +6 -0
  183. package/dist/src/modes.d.ts.map +1 -1
  184. package/dist/src/modes.js +69 -21
  185. package/dist/src/modes.js.map +1 -1
  186. package/dist/src/tools/agent.d.ts.map +1 -1
  187. package/dist/src/tools/agent.js +11 -2
  188. package/dist/src/tools/agent.js.map +1 -1
  189. package/dist/src/tools/bash.d.ts +9 -3
  190. package/dist/src/tools/bash.d.ts.map +1 -1
  191. package/dist/src/tools/bash.js +12 -0
  192. package/dist/src/tools/bash.js.map +1 -1
  193. package/dist/src/tools/coercion.d.ts +6 -0
  194. package/dist/src/tools/coercion.d.ts.map +1 -1
  195. package/dist/src/tools/coercion.js +13 -0
  196. package/dist/src/tools/coercion.js.map +1 -1
  197. package/dist/src/tools/file.d.ts +2 -2
  198. package/dist/src/tools/file.js +2 -2
  199. package/dist/src/tools/file.js.map +1 -1
  200. package/dist/src/tools/permission.d.ts.map +1 -1
  201. package/dist/src/tools/permission.js +4 -111
  202. package/dist/src/tools/permission.js.map +1 -1
  203. package/dist/src/tools/standard.d.ts +17 -1
  204. package/dist/src/tools/standard.d.ts.map +1 -1
  205. package/dist/src/tools/standard.js +64 -11
  206. package/dist/src/tools/standard.js.map +1 -1
  207. package/dist/src/tracing/trace-collector.d.ts +167 -0
  208. package/dist/src/tracing/trace-collector.d.ts.map +1 -1
  209. package/dist/src/tracing/trace-collector.js +137 -0
  210. package/dist/src/tracing/trace-collector.js.map +1 -1
  211. package/dist/src/tracing/types.d.ts +105 -1
  212. package/dist/src/tracing/types.d.ts.map +1 -1
  213. package/dist/src/tracing/types.js.map +1 -1
  214. package/dist/src/tui/app.d.ts.map +1 -1
  215. package/dist/src/tui/app.js +34 -5
  216. package/dist/src/tui/app.js.map +1 -1
  217. package/dist/src/types.d.ts +89 -0
  218. package/dist/src/types.d.ts.map +1 -1
  219. 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 { SUBTASK_TO_CAPABILITY } from './types.js';
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 = SUBTASK_TO_CAPABILITY[task.type] ?? 'code';
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. Selects appropriate worker model
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
- // Register dynamic agent definition
66
- // V2: toolAccessMode 'all' gives workers all tools (including MCP) by setting tools to undefined.
67
- // This leverages existing behavior in agent-registry.ts:filterToolsForAgent() which returns
68
- // all tools when agent.tools is undefined.
69
- const tools = this.config.toolAccessMode === 'all'
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
- : worker.allowedTools;
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
- model: worker.model,
78
- maxTokenBudget: worker.maxTokens ?? this.config.maxTokensPerWorker,
79
- maxIterations: this.config.workerMaxIterations,
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
- const timeoutMs = this.config.workerTimeout;
89
- // H3: Wrap spawn with timeout enforcement
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
- const timeoutPromise = new Promise((_, reject) => setTimeout(() => reject(new Error(`Worker timeout after ${timeoutMs}ms`)), timeoutMs));
92
- const promise = Promise.race([spawnPromise, timeoutPromise]).then(result => ({
93
- taskId: task.id,
94
- result,
95
- startedAt,
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: { tokens: 0, duration: Date.now() - worker.startedAt, toolCalls: 0 },
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
- * C4: Estimate cost from tokens using rough per-token pricing.
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
- // Rough cost estimate: average ~$0.50/M tokens for cheap models used by swarm workers
159
- const estimatedCost = tokens * 0.0000005;
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.structured?.actionsTaken
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
- 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.', '', 'OUTPUT FORMAT — When finished, summarize:', '1. What you accomplished (files created/modified)', '2. Key decisions made', '3. Any issues encountered or unresolved items');
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":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,iBAAiB,EAAyB,MAAM,YAAY,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAA2B,MAAM,qBAAqB,CAAC;AAEzF,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,8EAA8E;AAE9E,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,8EAA8E,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpG,CAAC;AAED,8EAA8E;AAE9E,6FAA6F;AAC7F,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAiBD,8EAA8E;AAE9E,MAAM,OAAO,eAAe;IAClB,MAAM,CAAc;IACpB,aAAa,CAAgB;IAC7B,UAAU,CAAe;IACzB,UAAU,CAAkB;IAC5B,OAAO,CAAoB;IAC3B,aAAa,CAAsB;IAEnC,aAAa,GAA8B,IAAI,GAAG,EAAE,CAAC;IACrD,oBAAoB,GAAgB,IAAI,GAAG,EAAE,CAAC;IAC9C,aAAa,GAAG,CAAC,CAAC;IAE1B,YACE,MAAmB,EACnB,aAA4B,EAC5B,UAAwB,EACxB,UAA2B,EAC3B,aAAkC;QAElC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAe;QAC1B,MAAM,UAAU,GAAqB,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC;QACpG,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACvG,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAe,EAAE,iBAAmC;QACjE,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,sDAAsD;QACtD,MAAM,SAAS,GAAG,SAAS,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QAEpD,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC;QAC9C,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;YAC5C,aAAa,EAAE,IAAI;YACnB,gBAAgB;YAChB,WAAW,EAAE,IAAI,CAAC,MAAM;YACxB,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;YAChG,iBAAiB,EAAE,MAAM,CAAC,WAAW;YACrC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB;SACjD,CAAC,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC;QAErC,2EAA2E;QAC3E,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC;YACvE,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,KAAK,WAAW;gBACvC,CAAC,CAAC,OAAO,CAAC,YAAY;gBACtB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE3B,mFAAmF;QACnF,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE7D,2EAA2E;QAC3E,sFAAsF;QACtF,MAAM,oBAAoB,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QACjE,sEAAsE;QACtE,0DAA0D;QAC1D,0DAA0D;QAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;YAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;gBAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;oBAC3B,CAAC,CAAC,GAAG,CAAC;QAER,oEAAoE;QACpE,8EAA8E;QAC9E,IAAI,eAAuB,CAAC;QAC5B,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAChC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,gBAAgB,CAAC;YACjD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,eAAe,GAAG,GAAG,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACN,0DAA0D;gBAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzE,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;QACjG,CAAC;QACD,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;QACtF,yEAAyE;QACzE,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAE3D,0FAA0F;QAC1F,mFAAmF;QACnF,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACtI,mFAAmF;QACnF,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAC9F,qFAAqF;QACrF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,oBAAoB,GAAG,eAAe,CAAC,CAAC;QAEzF,MAAM,QAAQ,GAAoB;YAChC,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,iBAAiB,MAAM,CAAC,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACnF,YAAY,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC;YACxD,KAAK;YACL,4EAA4E;YAC5E,aAAa,EAAE,gBAAgB,CAAC,WAAW;YAC3C,8CAA8C;YAC9C,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK;YACzC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,oBAAoB,GAAG,eAAe,CAAC;YACpF,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,oBAAoB,GAAG,eAAe,GAAG,mBAAmB,CAAC;YAC3G,OAAO,EAAE,SAAS,EAAG,oFAAoF;YACzG,WAAW,EAAE,UAAU,CAAC,WAAW,EAAG,yDAAyD;YAC/F,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,gEAAgE;YAChE,0DAA0D;YAC1D,eAAe,EAAE;gBACf,iBAAiB,EAAE,CAAC;gBACpB,sBAAsB,EAAE,CAAC;gBACzB,wBAAwB,EAAE,CAAC;gBAC3B,wBAAwB,EAAE,CAAC;gBAC3B,qBAAqB,EAAE,CAAC;gBACxB,kBAAkB,EAAE,CAAC;gBACrB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;aACvC;SACF,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,gDAAgD;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE9C,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,4EAA4E;QAC5E,0FAA0F;QAC1F,6EAA6E;QAC7E,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAC;QAC7C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC5D,IAAI,aAA4C,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;YACtD,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,wBAAwB,iBAAiB,aAAa,SAAS,oBAAoB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QAC3K,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACzE,YAAY,CAAC,aAAa,CAAC,CAAC;YAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE;YAC9B,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,IAAI;YACJ,UAAU,EAAE,MAAM,CAAC,IAAI;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE/C,gEAAgE;QAChE,4DAA4D;QAC5D,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CACpE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAA8D,EAAE,CAAC,CAAC;YAC3F,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE;gBACN,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,iBAAkB,KAAe,CAAC,OAAO,EAAE;gBACnD,OAAO,EAAE;oBACP,MAAM,EAAE,CAAC;oBACT,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS;oBACvC,oEAAoE;oBACpE,4EAA4E;oBAC5E,0CAA0C;oBAC1C,4DAA4D;oBAC5D,SAAS,EAAE,CAAC,KAAK,YAAY,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1D;aACF;YACD,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC,CACJ,CAAC;QAEF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAEtD,gCAAgC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,SAAS,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACnE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAiE,EAAE,CAAC;QAEjF,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,WAAwB,EAAE,IAAe,EAAE,UAAkB;QACxE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,IAAI,SAAS,CAAC;QAC9C,iFAAiF;QACjF,MAAM,aAAa,GAAG,uBAAuB,EAAE;YAC7C,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;YAC1E,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;QAEvB,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,aAAa,EAAE,WAAW,CAAC,UAAU;YACrC,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,aAAa;YACvB,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS;YACtC,aAAa,EAAE,WAAW,CAAC,aAAa,IAAI,EAAE;YAC9C,QAAQ,EAAE,WAAW,CAAC,UAAU,EAAE,QAAQ;YAC1C,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW;YACnC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,SAAS,EAAE,GAAG,GAAG,CAAC,CAAC,SAAS;YAC5B,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACb,iDAAiD;QACjD,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;YAC/D,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjB,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACxE,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;aAC3D,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACK,uBAAuB,CAAC,IAAe,EAAE,MAAuB;QACtE,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,2FAA2F;QAC3F,MAAM,UAAU,GACd,MAAM,CAAC,UAAU;YACjB,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC/B,kBAAkB,CAAC,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAEhF,6EAA6E;QAC7E,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,aAAa,MAAM,CAAC,IAAI,uBAAuB,IAAI,CAAC,WAAW,EAAE,EACjE,EAAE,EACF,eAAe,EACf,EAAE,EACF,WAAW,EACX,0EAA0E,EAC1E,6EAA6E,EAC7E,+EAA+E,EAC/E,cAAc,IAAI,CAAC,MAAM,CAAC,mBAAmB,6BAA6B,EAC1E,EAAE,EACF,oBAAoB,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3H,CAAC;YAEF,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CACR,EAAE,EACF,UAAU,IAAI,CAAC,QAAQ,oBAAoB,IAAI,CAAC,YAAY,CAAC,aAAa,YAAY,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAC3H,CAAC;gBACF,wDAAwD;gBACxD,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;oBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjE,KAAK,CAAC,IAAI,CACR,EAAE,EACF,6EAA6E,EAC7E,WAAW;wBACT,CAAC,CAAC,gCAAgC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,QAAQ,WAAW,IAAI;wBAC3G,CAAC,CAAC,sFAAsF,CAC3F,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,0CAA0C;QAC1C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,KAAK,CAAC,IAAI,CACR,aAAa,MAAM,CAAC,IAAI,UAAU,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,uCAAuC,EAC/G,uBAAuB,IAAI,CAAC,WAAW,EAAE,EACzC,EAAE,CACH,CAAC;QAEF,uFAAuF;QACvF,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC;QACpD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,2EAA2E;QAC3E,6EAA6E;QAC7E,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,IAAI,MAAM,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAE3B,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CACR,6BAA6B,EAC7B,EAAE,EACF,2CAA2C,EAC3C,gEAAgE,EAChE,qDAAqD,EACrD,WAAW,cAAc,2DAA2D,EACpF,gFAAgF,EAChF,sFAAsF,EACtF,EAAE,EACF,mBAAmB,EACnB,+EAA+E,EAC/E,cAAc,IAAI,CAAC,MAAM,CAAC,mBAAmB,6CAA6C,EAC1F,6DAA6D,EAC7D,8DAA8D,EAC9D,EAAE,EACF,2CAA2C,EAC3C,8BAA8B,EAC9B,uDAAuD,EACvD,oDAAoD,CACrD,CAAC;QACJ,CAAC;aAAM,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CACR,8BAA8B,EAC9B,EAAE,EACF,4CAA4C,EAC5C,iEAAiE,EACjE,2EAA2E,EAC3E,6DAA6D,EAC7D,gEAAgE,EAChE,sFAAsF,EACtF,EAAE,EACF,mBAAmB,EACnB,mDAAmD,EACnD,cAAc,IAAI,CAAC,MAAM,CAAC,mBAAmB,6CAA6C,EAC1F,+DAA+D,EAC/D,EAAE,EACF,yCAAyC,EACzC,4CAA4C,EAC5C,yCAAyC,EACzC,yCAAyC,CAC1C,CAAC;QACJ,CAAC;aAAM,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CACR,kCAAkC,EAClC,EAAE,EACF,gDAAgD,EAChD,yDAAyD,EACzD,sFAAsF,EACtF,WAAW,cAAc,gEAAgE,EACzF,gFAAgF,EAChF,EAAE,EACF,mBAAmB,EACnB,mDAAmD,EACnD,cAAc,IAAI,CAAC,MAAM,CAAC,mBAAmB,6CAA6C,EAC1F,qDAAqD,EACrD,EAAE,EACF,aAAa,EACb,yEAAyE,EACzE,qEAAqE,EACrE,+DAA+D,EAC/D,0EAA0E,EAC1E,uDAAuD,EACvD,EAAE,EACF,2CAA2C,EAC3C,yCAAyC,EACzC,4BAA4B,EAC5B,4CAA4C,CAC7C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,qFAAqF;YACrF,KAAK,CAAC,IAAI,CACR,wBAAwB,EACxB,EAAE,EACF,4CAA4C,EAC5C,yDAAyD,EACzD,sFAAsF,EACtF,WAAW,cAAc,uEAAuE,EAChG,gFAAgF,EAChF,EAAE,EACF,mBAAmB,EACnB,oEAAoE,EACpE,cAAc,IAAI,CAAC,MAAM,CAAC,mBAAmB,6CAA6C,EAC1F,0FAA0F,EAC1F,gEAAgE,EAChE,EAAE,EACF,aAAa,EACb,yEAAyE,EACzE,qEAAqE,EACrE,+DAA+D,EAC/D,yDAAyD,EACzD,6DAA6D,EAC7D,0EAA0E,EAC1E,uDAAuD,EACvD,EAAE,EACF,2CAA2C,EAC3C,mDAAmD,EACnD,uBAAuB,EACvB,+CAA+C,CAChD,CAAC;QACJ,CAAC;QAED,0EAA0E;QAC1E,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,oBAAoB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,wGAAwG,CAAC,CAAC;QAC3H,CAAC;QAED,qFAAqF;QACrF,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC/E,KAAK,CAAC,IAAI,CACR,EAAE,EACF,4BAA4B,EAC5B,EAAE,EACF,oGAAoG,EACpG,gFAAgF,EAChF,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QAED,iFAAiF;QACjF,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3C,gFAAgF;YAChF,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,wBAAwB,EACxB,EAAE,EACF,IAAI,CAAC,YAAY,CAAC,aAAa,CAChC,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,mDAAmD,EACnD,EAAE,CACH,CAAC;YACF,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CACR,0CAA0C,EAC1C,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAClC,EAAE,EACF,mEAAmE,EACnE,6GAA6G,CAC9G,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CACR,2BAA2B,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK,EAC/D,mBAAmB,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,EACvD,EAAE,EACF,2FAA2F,EAC3F,wDAAwD,CACzD,CAAC;YACJ,CAAC;YACD,wDAAwD;YACxD,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;gBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjE,KAAK,CAAC,IAAI,CACR,EAAE,EACF,6EAA6E,EAC7E,WAAW;oBACT,CAAC,CAAC,gCAAgC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,QAAQ,WAAW,IAAI;oBAC3G,CAAC,CAAC,sFAAsF,CAC3F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CACR,EAAE,EACF,qCAAqC,EACrC,EAAE,EACF,8DAA8D,EAC9D,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACvD,EAAE,EACF,kGAAkG,CACnG,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yCAAyC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACtG,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,qCAAqC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAChG,CAAC;QAED,yFAAyF;QACzF,sDAAsD;QACtD,IAAI,UAAU,KAAK,MAAM,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;YAChF,MAAM,cAAc,GAAG,2BAA2B,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAClF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAyB,EAAE,EAAE,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;QACvF,CAAC;QAED,sDAAsD;QACtD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,wBAAwB,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,IAAe;QACrC,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACrC,qEAAqE;YACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,0BAA0B,IAAI,IAAI,CAAC;YAC7E,4FAA4F;YAC5F,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACnC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;oBAC/B,4EAA4E,CAAC,IAAI,CAAC,IAAI,CAAC,CACxF,CAAC;gBACF,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;oBAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,mBAAmB,CAAC;gBAC3D,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,6CAA6C,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAmB,EACnB,aAA4B,EAC5B,UAAwB,EACxB,UAA2B,EAC3B,aAAkC;IAElC,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC3F,CAAC"}
@@ -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"}