mcp-agent-foundry 1.0.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 (315) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +477 -0
  3. package/dist/cli/install-skills.d.ts +11 -0
  4. package/dist/cli/install-skills.d.ts.map +1 -0
  5. package/dist/cli/install-skills.js +143 -0
  6. package/dist/cli/install-skills.js.map +1 -0
  7. package/dist/cli/recovery-commands.d.ts +41 -0
  8. package/dist/cli/recovery-commands.d.ts.map +1 -0
  9. package/dist/cli/recovery-commands.js +241 -0
  10. package/dist/cli/recovery-commands.js.map +1 -0
  11. package/dist/cli/setup-wizard.d.ts +25 -0
  12. package/dist/cli/setup-wizard.d.ts.map +1 -0
  13. package/dist/cli/setup-wizard.js +1417 -0
  14. package/dist/cli/setup-wizard.js.map +1 -0
  15. package/dist/cli/test-connection.d.ts +45 -0
  16. package/dist/cli/test-connection.d.ts.map +1 -0
  17. package/dist/cli/test-connection.js +317 -0
  18. package/dist/cli/test-connection.js.map +1 -0
  19. package/dist/cli.d.ts +75 -0
  20. package/dist/cli.d.ts.map +1 -0
  21. package/dist/cli.js +704 -0
  22. package/dist/cli.js.map +1 -0
  23. package/dist/config/defaults.d.ts +57 -0
  24. package/dist/config/defaults.d.ts.map +1 -0
  25. package/dist/config/defaults.js +99 -0
  26. package/dist/config/defaults.js.map +1 -0
  27. package/dist/config/index.d.ts +14 -0
  28. package/dist/config/index.d.ts.map +1 -0
  29. package/dist/config/index.js +22 -0
  30. package/dist/config/index.js.map +1 -0
  31. package/dist/config/manager.d.ts +184 -0
  32. package/dist/config/manager.d.ts.map +1 -0
  33. package/dist/config/manager.js +347 -0
  34. package/dist/config/manager.js.map +1 -0
  35. package/dist/config/merger.d.ts +76 -0
  36. package/dist/config/merger.d.ts.map +1 -0
  37. package/dist/config/merger.js +189 -0
  38. package/dist/config/merger.js.map +1 -0
  39. package/dist/config/schema.d.ts +20 -0
  40. package/dist/config/schema.d.ts.map +1 -0
  41. package/dist/config/schema.js +20 -0
  42. package/dist/config/schema.js.map +1 -0
  43. package/dist/config/validator.d.ts +254 -0
  44. package/dist/config/validator.d.ts.map +1 -0
  45. package/dist/config/validator.js +363 -0
  46. package/dist/config/validator.js.map +1 -0
  47. package/dist/config/worktree-defaults.d.ts +23 -0
  48. package/dist/config/worktree-defaults.d.ts.map +1 -0
  49. package/dist/config/worktree-defaults.js +78 -0
  50. package/dist/config/worktree-defaults.js.map +1 -0
  51. package/dist/index.d.ts +8 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +44 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/mcp/tools/compare-agents.d.ts +25 -0
  56. package/dist/mcp/tools/compare-agents.d.ts.map +1 -0
  57. package/dist/mcp/tools/compare-agents.js +177 -0
  58. package/dist/mcp/tools/compare-agents.js.map +1 -0
  59. package/dist/mcp/tools/critique-plan.d.ts +26 -0
  60. package/dist/mcp/tools/critique-plan.d.ts.map +1 -0
  61. package/dist/mcp/tools/critique-plan.js +162 -0
  62. package/dist/mcp/tools/critique-plan.js.map +1 -0
  63. package/dist/mcp/tools/design-feedback.d.ts +26 -0
  64. package/dist/mcp/tools/design-feedback.d.ts.map +1 -0
  65. package/dist/mcp/tools/design-feedback.js +216 -0
  66. package/dist/mcp/tools/design-feedback.js.map +1 -0
  67. package/dist/mcp/tools/index.d.ts +50 -0
  68. package/dist/mcp/tools/index.d.ts.map +1 -0
  69. package/dist/mcp/tools/index.js +191 -0
  70. package/dist/mcp/tools/index.js.map +1 -0
  71. package/dist/mcp/tools/invoke-agent.d.ts +25 -0
  72. package/dist/mcp/tools/invoke-agent.d.ts.map +1 -0
  73. package/dist/mcp/tools/invoke-agent.js +141 -0
  74. package/dist/mcp/tools/invoke-agent.js.map +1 -0
  75. package/dist/mcp/tools/review-code.d.ts +25 -0
  76. package/dist/mcp/tools/review-code.d.ts.map +1 -0
  77. package/dist/mcp/tools/review-code.js +170 -0
  78. package/dist/mcp/tools/review-code.js.map +1 -0
  79. package/dist/mcp/tools/tasks/claim-next-task.d.ts +22 -0
  80. package/dist/mcp/tools/tasks/claim-next-task.d.ts.map +1 -0
  81. package/dist/mcp/tools/tasks/claim-next-task.js +203 -0
  82. package/dist/mcp/tools/tasks/claim-next-task.js.map +1 -0
  83. package/dist/mcp/tools/tasks/create-routed-task.d.ts +17 -0
  84. package/dist/mcp/tools/tasks/create-routed-task.d.ts.map +1 -0
  85. package/dist/mcp/tools/tasks/create-routed-task.js +178 -0
  86. package/dist/mcp/tools/tasks/create-routed-task.js.map +1 -0
  87. package/dist/mcp/tools/tasks/execute-pipeline.d.ts +22 -0
  88. package/dist/mcp/tools/tasks/execute-pipeline.d.ts.map +1 -0
  89. package/dist/mcp/tools/tasks/execute-pipeline.js +401 -0
  90. package/dist/mcp/tools/tasks/execute-pipeline.js.map +1 -0
  91. package/dist/mcp/tools/tasks/execute-task.d.ts +32 -0
  92. package/dist/mcp/tools/tasks/execute-task.d.ts.map +1 -0
  93. package/dist/mcp/tools/tasks/execute-task.js +284 -0
  94. package/dist/mcp/tools/tasks/execute-task.js.map +1 -0
  95. package/dist/mcp/tools/tasks/get-pipeline-status.d.ts +26 -0
  96. package/dist/mcp/tools/tasks/get-pipeline-status.d.ts.map +1 -0
  97. package/dist/mcp/tools/tasks/get-pipeline-status.js +460 -0
  98. package/dist/mcp/tools/tasks/get-pipeline-status.js.map +1 -0
  99. package/dist/mcp/tools/tasks/index.d.ts +36 -0
  100. package/dist/mcp/tools/tasks/index.d.ts.map +1 -0
  101. package/dist/mcp/tools/tasks/index.js +66 -0
  102. package/dist/mcp/tools/tasks/index.js.map +1 -0
  103. package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts +17 -0
  104. package/dist/mcp/tools/worktree/cleanup-worktrees.d.ts.map +1 -0
  105. package/dist/mcp/tools/worktree/cleanup-worktrees.js +147 -0
  106. package/dist/mcp/tools/worktree/cleanup-worktrees.js.map +1 -0
  107. package/dist/mcp/tools/worktree/get-worktree-status.d.ts +17 -0
  108. package/dist/mcp/tools/worktree/get-worktree-status.d.ts.map +1 -0
  109. package/dist/mcp/tools/worktree/get-worktree-status.js +123 -0
  110. package/dist/mcp/tools/worktree/get-worktree-status.js.map +1 -0
  111. package/dist/mcp/tools/worktree/index.d.ts +41 -0
  112. package/dist/mcp/tools/worktree/index.d.ts.map +1 -0
  113. package/dist/mcp/tools/worktree/index.js +69 -0
  114. package/dist/mcp/tools/worktree/index.js.map +1 -0
  115. package/dist/mcp/tools/worktree/list-worktrees.d.ts +17 -0
  116. package/dist/mcp/tools/worktree/list-worktrees.d.ts.map +1 -0
  117. package/dist/mcp/tools/worktree/list-worktrees.js +136 -0
  118. package/dist/mcp/tools/worktree/list-worktrees.js.map +1 -0
  119. package/dist/mcp/tools/worktree/resolve-conflicts.d.ts +19 -0
  120. package/dist/mcp/tools/worktree/resolve-conflicts.d.ts.map +1 -0
  121. package/dist/mcp/tools/worktree/resolve-conflicts.js +228 -0
  122. package/dist/mcp/tools/worktree/resolve-conflicts.js.map +1 -0
  123. package/dist/mcp/transport/stdio.d.ts +13 -0
  124. package/dist/mcp/transport/stdio.d.ts.map +1 -0
  125. package/dist/mcp/transport/stdio.js +15 -0
  126. package/dist/mcp/transport/stdio.js.map +1 -0
  127. package/dist/observability/logger.d.ts +137 -0
  128. package/dist/observability/logger.d.ts.map +1 -0
  129. package/dist/observability/logger.js +235 -0
  130. package/dist/observability/logger.js.map +1 -0
  131. package/dist/observability/metrics.d.ts +250 -0
  132. package/dist/observability/metrics.d.ts.map +1 -0
  133. package/dist/observability/metrics.js +364 -0
  134. package/dist/observability/metrics.js.map +1 -0
  135. package/dist/persistence/index.d.ts +9 -0
  136. package/dist/persistence/index.d.ts.map +1 -0
  137. package/dist/persistence/index.js +9 -0
  138. package/dist/persistence/index.js.map +1 -0
  139. package/dist/persistence/state-schema.d.ts +116 -0
  140. package/dist/persistence/state-schema.d.ts.map +1 -0
  141. package/dist/persistence/state-schema.js +28 -0
  142. package/dist/persistence/state-schema.js.map +1 -0
  143. package/dist/persistence/state-store.d.ts +111 -0
  144. package/dist/persistence/state-store.d.ts.map +1 -0
  145. package/dist/persistence/state-store.js +291 -0
  146. package/dist/persistence/state-store.js.map +1 -0
  147. package/dist/providers/anthropic.d.ts +164 -0
  148. package/dist/providers/anthropic.d.ts.map +1 -0
  149. package/dist/providers/anthropic.js +500 -0
  150. package/dist/providers/anthropic.js.map +1 -0
  151. package/dist/providers/base.d.ts +151 -0
  152. package/dist/providers/base.d.ts.map +1 -0
  153. package/dist/providers/base.js +227 -0
  154. package/dist/providers/base.js.map +1 -0
  155. package/dist/providers/gemini.d.ts +85 -0
  156. package/dist/providers/gemini.d.ts.map +1 -0
  157. package/dist/providers/gemini.js +414 -0
  158. package/dist/providers/gemini.js.map +1 -0
  159. package/dist/providers/kimi.d.ts +19 -0
  160. package/dist/providers/kimi.d.ts.map +1 -0
  161. package/dist/providers/kimi.js +20 -0
  162. package/dist/providers/kimi.js.map +1 -0
  163. package/dist/providers/manager.d.ts +160 -0
  164. package/dist/providers/manager.d.ts.map +1 -0
  165. package/dist/providers/manager.js +264 -0
  166. package/dist/providers/manager.js.map +1 -0
  167. package/dist/providers/ollama.d.ts +83 -0
  168. package/dist/providers/ollama.d.ts.map +1 -0
  169. package/dist/providers/ollama.js +453 -0
  170. package/dist/providers/ollama.js.map +1 -0
  171. package/dist/providers/openai.d.ts +96 -0
  172. package/dist/providers/openai.d.ts.map +1 -0
  173. package/dist/providers/openai.js +457 -0
  174. package/dist/providers/openai.js.map +1 -0
  175. package/dist/providers/zai.d.ts +19 -0
  176. package/dist/providers/zai.d.ts.map +1 -0
  177. package/dist/providers/zai.js +20 -0
  178. package/dist/providers/zai.js.map +1 -0
  179. package/dist/router/context-manager.d.ts +2 -0
  180. package/dist/router/context-manager.d.ts.map +1 -0
  181. package/dist/router/context-manager.js +3 -0
  182. package/dist/router/context-manager.js.map +1 -0
  183. package/dist/router/engine.d.ts +169 -0
  184. package/dist/router/engine.d.ts.map +1 -0
  185. package/dist/router/engine.js +435 -0
  186. package/dist/router/engine.js.map +1 -0
  187. package/dist/router/pattern-executor.d.ts +317 -0
  188. package/dist/router/pattern-executor.d.ts.map +1 -0
  189. package/dist/router/pattern-executor.js +571 -0
  190. package/dist/router/pattern-executor.js.map +1 -0
  191. package/dist/router/role-resolver.d.ts +59 -0
  192. package/dist/router/role-resolver.d.ts.map +1 -0
  193. package/dist/router/role-resolver.js +95 -0
  194. package/dist/router/role-resolver.js.map +1 -0
  195. package/dist/server.d.ts +32 -0
  196. package/dist/server.d.ts.map +1 -0
  197. package/dist/server.js +223 -0
  198. package/dist/server.js.map +1 -0
  199. package/dist/startup.d.ts +78 -0
  200. package/dist/startup.d.ts.map +1 -0
  201. package/dist/startup.js +107 -0
  202. package/dist/startup.js.map +1 -0
  203. package/dist/tasks/coordinator.d.ts +141 -0
  204. package/dist/tasks/coordinator.d.ts.map +1 -0
  205. package/dist/tasks/coordinator.js +331 -0
  206. package/dist/tasks/coordinator.js.map +1 -0
  207. package/dist/tasks/index.d.ts +13 -0
  208. package/dist/tasks/index.d.ts.map +1 -0
  209. package/dist/tasks/index.js +13 -0
  210. package/dist/tasks/index.js.map +1 -0
  211. package/dist/tasks/persistent-state-coordinator.d.ts +89 -0
  212. package/dist/tasks/persistent-state-coordinator.d.ts.map +1 -0
  213. package/dist/tasks/persistent-state-coordinator.js +371 -0
  214. package/dist/tasks/persistent-state-coordinator.js.map +1 -0
  215. package/dist/tasks/pipeline-manager.d.ts +103 -0
  216. package/dist/tasks/pipeline-manager.d.ts.map +1 -0
  217. package/dist/tasks/pipeline-manager.js +358 -0
  218. package/dist/tasks/pipeline-manager.js.map +1 -0
  219. package/dist/tasks/state-coordinator.d.ts +79 -0
  220. package/dist/tasks/state-coordinator.d.ts.map +1 -0
  221. package/dist/tasks/state-coordinator.js +200 -0
  222. package/dist/tasks/state-coordinator.js.map +1 -0
  223. package/dist/tasks/worker-mode.d.ts +65 -0
  224. package/dist/tasks/worker-mode.d.ts.map +1 -0
  225. package/dist/tasks/worker-mode.js +208 -0
  226. package/dist/tasks/worker-mode.js.map +1 -0
  227. package/dist/translation/errors.d.ts +203 -0
  228. package/dist/translation/errors.d.ts.map +1 -0
  229. package/dist/translation/errors.js +477 -0
  230. package/dist/translation/errors.js.map +1 -0
  231. package/dist/translation/index.d.ts +12 -0
  232. package/dist/translation/index.d.ts.map +1 -0
  233. package/dist/translation/index.js +32 -0
  234. package/dist/translation/index.js.map +1 -0
  235. package/dist/translation/messages.d.ts +295 -0
  236. package/dist/translation/messages.d.ts.map +1 -0
  237. package/dist/translation/messages.js +557 -0
  238. package/dist/translation/messages.js.map +1 -0
  239. package/dist/translation/streaming.d.ts +226 -0
  240. package/dist/translation/streaming.d.ts.map +1 -0
  241. package/dist/translation/streaming.js +520 -0
  242. package/dist/translation/streaming.js.map +1 -0
  243. package/dist/translation/tools.d.ts +209 -0
  244. package/dist/translation/tools.d.ts.map +1 -0
  245. package/dist/translation/tools.js +331 -0
  246. package/dist/translation/tools.js.map +1 -0
  247. package/dist/types.d.ts +747 -0
  248. package/dist/types.d.ts.map +1 -0
  249. package/dist/types.js +86 -0
  250. package/dist/types.js.map +1 -0
  251. package/dist/utils/circuit-breaker.d.ts +175 -0
  252. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  253. package/dist/utils/circuit-breaker.js +315 -0
  254. package/dist/utils/circuit-breaker.js.map +1 -0
  255. package/dist/utils/env.d.ts +2 -0
  256. package/dist/utils/env.d.ts.map +1 -0
  257. package/dist/utils/env.js +3 -0
  258. package/dist/utils/env.js.map +1 -0
  259. package/dist/utils/git.d.ts +58 -0
  260. package/dist/utils/git.d.ts.map +1 -0
  261. package/dist/utils/git.js +197 -0
  262. package/dist/utils/git.js.map +1 -0
  263. package/dist/utils/index.d.ts +9 -0
  264. package/dist/utils/index.d.ts.map +1 -0
  265. package/dist/utils/index.js +9 -0
  266. package/dist/utils/index.js.map +1 -0
  267. package/dist/utils/merge-ordering.d.ts +45 -0
  268. package/dist/utils/merge-ordering.d.ts.map +1 -0
  269. package/dist/utils/merge-ordering.js +128 -0
  270. package/dist/utils/merge-ordering.js.map +1 -0
  271. package/dist/utils/retry.d.ts +106 -0
  272. package/dist/utils/retry.d.ts.map +1 -0
  273. package/dist/utils/retry.js +188 -0
  274. package/dist/utils/retry.js.map +1 -0
  275. package/dist/worktrees/branch-manager.d.ts +55 -0
  276. package/dist/worktrees/branch-manager.d.ts.map +1 -0
  277. package/dist/worktrees/branch-manager.js +129 -0
  278. package/dist/worktrees/branch-manager.js.map +1 -0
  279. package/dist/worktrees/conflict-handler.d.ts +72 -0
  280. package/dist/worktrees/conflict-handler.d.ts.map +1 -0
  281. package/dist/worktrees/conflict-handler.js +287 -0
  282. package/dist/worktrees/conflict-handler.js.map +1 -0
  283. package/dist/worktrees/conflict-parser.d.ts +28 -0
  284. package/dist/worktrees/conflict-parser.d.ts.map +1 -0
  285. package/dist/worktrees/conflict-parser.js +140 -0
  286. package/dist/worktrees/conflict-parser.js.map +1 -0
  287. package/dist/worktrees/index.d.ts +20 -0
  288. package/dist/worktrees/index.d.ts.map +1 -0
  289. package/dist/worktrees/index.js +20 -0
  290. package/dist/worktrees/index.js.map +1 -0
  291. package/dist/worktrees/instructions.d.ts +20 -0
  292. package/dist/worktrees/instructions.d.ts.map +1 -0
  293. package/dist/worktrees/instructions.js +84 -0
  294. package/dist/worktrees/instructions.js.map +1 -0
  295. package/dist/worktrees/manager.d.ts +76 -0
  296. package/dist/worktrees/manager.d.ts.map +1 -0
  297. package/dist/worktrees/manager.js +277 -0
  298. package/dist/worktrees/manager.js.map +1 -0
  299. package/dist/worktrees/pipeline-merge-orchestrator.d.ts +55 -0
  300. package/dist/worktrees/pipeline-merge-orchestrator.d.ts.map +1 -0
  301. package/dist/worktrees/pipeline-merge-orchestrator.js +221 -0
  302. package/dist/worktrees/pipeline-merge-orchestrator.js.map +1 -0
  303. package/dist/worktrees/pool.d.ts +95 -0
  304. package/dist/worktrees/pool.d.ts.map +1 -0
  305. package/dist/worktrees/pool.js +271 -0
  306. package/dist/worktrees/pool.js.map +1 -0
  307. package/dist/worktrees/recovery.d.ts +94 -0
  308. package/dist/worktrees/recovery.d.ts.map +1 -0
  309. package/dist/worktrees/recovery.js +371 -0
  310. package/dist/worktrees/recovery.js.map +1 -0
  311. package/dist/worktrees/resource-manager.d.ts +74 -0
  312. package/dist/worktrees/resource-manager.d.ts.map +1 -0
  313. package/dist/worktrees/resource-manager.js +228 -0
  314. package/dist/worktrees/resource-manager.js.map +1 -0
  315. package/package.json +88 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Worker Mode
3
+ *
4
+ * Enables background task processing via Claude Code subagents.
5
+ * Workers claim tasks, execute them via AgentRouter, and loop until done.
6
+ */
7
+ import type { Logger } from "../observability/logger.js";
8
+ import type { WorkerConfig, WorkerState } from "../types.js";
9
+ export declare class WorkerMode {
10
+ private state;
11
+ private config;
12
+ private logger;
13
+ private lastActivityTime;
14
+ constructor(config: WorkerConfig, logger: Logger);
15
+ /**
16
+ * Generate instructions for the subagent on how to claim and execute tasks.
17
+ * Returns markdown that tells the subagent the worker claim protocol.
18
+ */
19
+ generateClaimInstructions(): string;
20
+ /**
21
+ * Update worker state.
22
+ */
23
+ updateState(updates: Partial<WorkerState>): void;
24
+ /**
25
+ * Get current worker status.
26
+ */
27
+ getStatus(): WorkerState;
28
+ /**
29
+ * Mark that the worker is starting work on a task.
30
+ */
31
+ markTaskStarted(taskId: string): void;
32
+ /**
33
+ * Mark that the worker completed a task successfully.
34
+ */
35
+ markTaskCompleted(taskId: string): void;
36
+ /**
37
+ * Mark that the worker failed a task.
38
+ */
39
+ markTaskFailed(taskId: string, error?: Error): void;
40
+ /**
41
+ * Add a task ID to the exclusion list (e.g., after failed claim due to race).
42
+ */
43
+ excludeTask(taskId: string): void;
44
+ /**
45
+ * Record a heartbeat (keeps the worker alive).
46
+ */
47
+ heartbeat(): void;
48
+ /**
49
+ * Check if the worker should shut down due to idle timeout.
50
+ */
51
+ shouldShutdown(): boolean;
52
+ /**
53
+ * Mark the worker as shut down.
54
+ */
55
+ shutdown(): void;
56
+ /**
57
+ * Get the worker name.
58
+ */
59
+ getName(): string;
60
+ /**
61
+ * Check if the worker is currently working.
62
+ */
63
+ isWorking(): boolean;
64
+ }
65
+ //# sourceMappingURL=worker-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-mode.d.ts","sourceRoot":"","sources":["../../src/tasks/worker-mode.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,KAAK,EAAa,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AASxE,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAA2F;IACzG,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IA4BhD;;;OAGG;IACH,yBAAyB,IAAI,MAAM;IA+CnC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAKhD;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYrC;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAcvC;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAqBnD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASjC;;OAEG;IACH,SAAS,IAAI,IAAI;IAIjB;;OAEG;IACH,cAAc,IAAI,OAAO;IAezB;;OAEG;IACH,QAAQ,IAAI,IAAI;IAShB;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Worker Mode
3
+ *
4
+ * Enables background task processing via Claude Code subagents.
5
+ * Workers claim tasks, execute them via AgentRouter, and loop until done.
6
+ */
7
+ /** Default worker configuration values */
8
+ const DEFAULTS = {
9
+ maxConcurrent: 1,
10
+ heartbeatMs: 30000,
11
+ idleTimeoutMs: 300000,
12
+ };
13
+ export class WorkerMode {
14
+ state;
15
+ config;
16
+ logger;
17
+ lastActivityTime;
18
+ constructor(config, logger) {
19
+ this.config = {
20
+ name: config.name,
21
+ allowedRoles: config.allowedRoles ?? undefined,
22
+ maxConcurrent: config.maxConcurrent ?? DEFAULTS.maxConcurrent,
23
+ heartbeatMs: config.heartbeatMs ?? DEFAULTS.heartbeatMs,
24
+ idleTimeoutMs: config.idleTimeoutMs ?? DEFAULTS.idleTimeoutMs,
25
+ };
26
+ this.state = {
27
+ name: config.name,
28
+ status: "idle",
29
+ completedCount: 0,
30
+ failedCount: 0,
31
+ lastHeartbeat: Date.now(),
32
+ excludeTaskIds: [],
33
+ };
34
+ this.lastActivityTime = Date.now();
35
+ this.logger = logger;
36
+ this.logger.info("Worker mode initialized", {
37
+ name: config.name,
38
+ allowedRoles: config.allowedRoles,
39
+ maxConcurrent: this.config.maxConcurrent,
40
+ });
41
+ }
42
+ /**
43
+ * Generate instructions for the subagent on how to claim and execute tasks.
44
+ * Returns markdown that tells the subagent the worker claim protocol.
45
+ */
46
+ generateClaimInstructions() {
47
+ const roleFilter = this.config.allowedRoles?.length
48
+ ? `metadata.role IN [${this.config.allowedRoles.map(r => `"${r}"`).join(", ")}]`
49
+ : "any role";
50
+ const excludeClause = this.state.excludeTaskIds?.length
51
+ ? ` - id NOT IN [${this.state.excludeTaskIds.join(", ")}]`
52
+ : "";
53
+ return `
54
+ ## Worker Task Claim Protocol
55
+
56
+ **Worker:** ${this.state.name}
57
+ **Allowed Roles:** ${this.config.allowedRoles?.join(", ") ?? "any"}
58
+ **Status:** ${this.state.status}
59
+ **Completed:** ${this.state.completedCount} | **Failed:** ${this.state.failedCount}
60
+
61
+ ### Instructions
62
+
63
+ 1. **Get current tasks:**
64
+ \`TaskList()\`
65
+
66
+ 2. **Find a task matching:**
67
+ - status = "pending"
68
+ - owner = null (unclaimed)
69
+ - blockedBy is empty OR all blockers completed
70
+ - ${roleFilter}
71
+ ${excludeClause}
72
+
73
+ 3. **If found, claim it:**
74
+ \`TaskUpdate({ taskId: <found_id>, status: "in_progress", owner: "${this.state.name}" })\`
75
+
76
+ 4. **Execute via AgentRouter:**
77
+ \`execute_task({ taskId: <found_id> })\`
78
+
79
+ 5. **On completion, loop back to step 1.**
80
+
81
+ 6. **If no tasks match, worker can exit:**
82
+ \`Teammate({ operation: "requestShutdown" })\`
83
+
84
+ ### Notes
85
+ - If a claim fails (another worker claimed first), add the taskId to excludeTaskIds and retry
86
+ - The execute_task tool automatically marks tasks complete on success
87
+ - If execution fails, the task is released for retry
88
+ `;
89
+ }
90
+ /**
91
+ * Update worker state.
92
+ */
93
+ updateState(updates) {
94
+ Object.assign(this.state, updates);
95
+ this.state.lastHeartbeat = Date.now();
96
+ }
97
+ /**
98
+ * Get current worker status.
99
+ */
100
+ getStatus() {
101
+ return { ...this.state };
102
+ }
103
+ /**
104
+ * Mark that the worker is starting work on a task.
105
+ */
106
+ markTaskStarted(taskId) {
107
+ this.state.status = "working";
108
+ this.state.currentTask = taskId;
109
+ this.lastActivityTime = Date.now();
110
+ this.state.lastHeartbeat = Date.now();
111
+ this.logger.debug("Worker starting task", {
112
+ worker: this.state.name,
113
+ taskId,
114
+ });
115
+ }
116
+ /**
117
+ * Mark that the worker completed a task successfully.
118
+ */
119
+ markTaskCompleted(taskId) {
120
+ this.state.status = "idle";
121
+ delete this.state.currentTask;
122
+ this.state.completedCount++;
123
+ this.lastActivityTime = Date.now();
124
+ this.state.lastHeartbeat = Date.now();
125
+ this.logger.info("Worker completed task", {
126
+ worker: this.state.name,
127
+ taskId,
128
+ completedCount: this.state.completedCount,
129
+ });
130
+ }
131
+ /**
132
+ * Mark that the worker failed a task.
133
+ */
134
+ markTaskFailed(taskId, error) {
135
+ this.state.status = "idle";
136
+ delete this.state.currentTask;
137
+ this.state.failedCount++;
138
+ this.lastActivityTime = Date.now();
139
+ this.state.lastHeartbeat = Date.now();
140
+ // Add to exclude list to avoid retrying immediately
141
+ if (!this.state.excludeTaskIds) {
142
+ this.state.excludeTaskIds = [];
143
+ }
144
+ this.state.excludeTaskIds.push(taskId);
145
+ this.logger.warn("Worker failed task", {
146
+ worker: this.state.name,
147
+ taskId,
148
+ failedCount: this.state.failedCount,
149
+ error: error?.message,
150
+ });
151
+ }
152
+ /**
153
+ * Add a task ID to the exclusion list (e.g., after failed claim due to race).
154
+ */
155
+ excludeTask(taskId) {
156
+ if (!this.state.excludeTaskIds) {
157
+ this.state.excludeTaskIds = [];
158
+ }
159
+ if (!this.state.excludeTaskIds.includes(taskId)) {
160
+ this.state.excludeTaskIds.push(taskId);
161
+ }
162
+ }
163
+ /**
164
+ * Record a heartbeat (keeps the worker alive).
165
+ */
166
+ heartbeat() {
167
+ this.state.lastHeartbeat = Date.now();
168
+ }
169
+ /**
170
+ * Check if the worker should shut down due to idle timeout.
171
+ */
172
+ shouldShutdown() {
173
+ const idleTime = Date.now() - this.lastActivityTime;
174
+ const shouldStop = idleTime > this.config.idleTimeoutMs;
175
+ if (shouldStop) {
176
+ this.logger.info("Worker idle timeout reached", {
177
+ worker: this.state.name,
178
+ idleTimeMs: idleTime,
179
+ idleTimeoutMs: this.config.idleTimeoutMs,
180
+ });
181
+ }
182
+ return shouldStop;
183
+ }
184
+ /**
185
+ * Mark the worker as shut down.
186
+ */
187
+ shutdown() {
188
+ this.state.status = "shutdown";
189
+ this.logger.info("Worker shutdown", {
190
+ worker: this.state.name,
191
+ completedCount: this.state.completedCount,
192
+ failedCount: this.state.failedCount,
193
+ });
194
+ }
195
+ /**
196
+ * Get the worker name.
197
+ */
198
+ getName() {
199
+ return this.state.name;
200
+ }
201
+ /**
202
+ * Check if the worker is currently working.
203
+ */
204
+ isWorking() {
205
+ return this.state.status === "working";
206
+ }
207
+ }
208
+ //# sourceMappingURL=worker-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-mode.js","sourceRoot":"","sources":["../../src/tasks/worker-mode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Error Translation Layer
3
+ *
4
+ * Normalizes error formats from different LLM providers (Anthropic, OpenAI, Gemini)
5
+ * into AgentRouter's standardized error types. This allows consistent error handling
6
+ * regardless of which provider produced the error.
7
+ *
8
+ * Provider error format differences:
9
+ * - Anthropic: { type: "error", error: { type, message } }
10
+ * - OpenAI: { error: { message, type, code } }
11
+ * - Gemini: { error: { message, status, code } }
12
+ *
13
+ * All errors are mapped to the appropriate AgentRouterError subclass with the
14
+ * original error preserved in the `cause` property for debugging.
15
+ */
16
+ import { AgentRouterError } from '../types.js';
17
+ /**
18
+ * Anthropic API error structure.
19
+ * Format: { type: "error", error: { type: string, message: string } }
20
+ */
21
+ export interface AnthropicError {
22
+ type?: 'error';
23
+ error?: {
24
+ type?: string;
25
+ message?: string;
26
+ };
27
+ status?: number;
28
+ statusCode?: number;
29
+ message?: string;
30
+ }
31
+ /**
32
+ * OpenAI API error structure.
33
+ * Format: { error: { message: string, type: string, code: string } }
34
+ */
35
+ export interface OpenAIError {
36
+ error?: {
37
+ message?: string;
38
+ type?: string;
39
+ code?: string | null;
40
+ param?: string | null;
41
+ };
42
+ status?: number;
43
+ statusCode?: number;
44
+ message?: string;
45
+ }
46
+ /**
47
+ * Google Gemini API error structure.
48
+ * Format: { error: { message: string, status: string, code: number } }
49
+ */
50
+ export interface GeminiError {
51
+ error?: {
52
+ message?: string;
53
+ status?: string;
54
+ code?: number;
55
+ details?: {
56
+ '@type'?: string;
57
+ reason?: string;
58
+ domain?: string;
59
+ metadata?: Record<string, string>;
60
+ }[];
61
+ };
62
+ status?: number;
63
+ statusCode?: number;
64
+ message?: string;
65
+ }
66
+ /**
67
+ * Generic error with HTTP-like properties (for errors from fetch, SDK wrappers, etc.)
68
+ */
69
+ export interface HttpError extends Error {
70
+ status?: number;
71
+ statusCode?: number;
72
+ code?: string;
73
+ response?: {
74
+ status?: number;
75
+ data?: unknown;
76
+ };
77
+ }
78
+ /**
79
+ * Translate an Anthropic API error to an AgentRouterError.
80
+ *
81
+ * Anthropic error format:
82
+ * ```json
83
+ * {
84
+ * "type": "error",
85
+ * "error": {
86
+ * "type": "invalid_request_error" | "authentication_error" | "rate_limit_error" | ...,
87
+ * "message": "Human-readable error message"
88
+ * }
89
+ * }
90
+ * ```
91
+ *
92
+ * Error types from Anthropic:
93
+ * - invalid_request_error: Bad request parameters (400)
94
+ * - authentication_error: Invalid API key (401)
95
+ * - permission_error: Forbidden (403)
96
+ * - not_found_error: Resource not found (404)
97
+ * - rate_limit_error: Rate limited (429)
98
+ * - api_error: Internal server error (500)
99
+ * - overloaded_error: Overloaded (529)
100
+ *
101
+ * @param error - The raw Anthropic error
102
+ * @returns Normalized AgentRouterError
103
+ */
104
+ export declare function translateAnthropicError(error: AnthropicError): AgentRouterError;
105
+ /**
106
+ * Translate an OpenAI API error to an AgentRouterError.
107
+ *
108
+ * OpenAI error format:
109
+ * ```json
110
+ * {
111
+ * "error": {
112
+ * "message": "Human-readable error message",
113
+ * "type": "invalid_request_error" | "authentication_error" | "rate_limit_error" | ...,
114
+ * "code": "specific_error_code" | null,
115
+ * "param": "parameter_name" | null
116
+ * }
117
+ * }
118
+ * ```
119
+ *
120
+ * Common error types from OpenAI:
121
+ * - invalid_request_error: Bad request (400)
122
+ * - invalid_api_key: Invalid API key (401)
123
+ * - insufficient_quota: Quota exceeded (429)
124
+ * - rate_limit_exceeded: Rate limited (429)
125
+ * - server_error: Internal error (500)
126
+ * - engine_overloaded: Overloaded (503)
127
+ *
128
+ * @param error - The raw OpenAI error
129
+ * @returns Normalized AgentRouterError
130
+ */
131
+ export declare function translateOpenAIError(error: OpenAIError): AgentRouterError;
132
+ /**
133
+ * Translate a Google Gemini API error to an AgentRouterError.
134
+ *
135
+ * Gemini error format:
136
+ * ```json
137
+ * {
138
+ * "error": {
139
+ * "code": 400,
140
+ * "message": "Human-readable error message",
141
+ * "status": "INVALID_ARGUMENT" | "UNAUTHENTICATED" | "RESOURCE_EXHAUSTED" | ...,
142
+ * "details": [...]
143
+ * }
144
+ * }
145
+ * ```
146
+ *
147
+ * Common status values from Gemini:
148
+ * - INVALID_ARGUMENT: Bad request (400)
149
+ * - UNAUTHENTICATED: Invalid API key (401)
150
+ * - PERMISSION_DENIED: Forbidden (403)
151
+ * - NOT_FOUND: Resource not found (404)
152
+ * - RESOURCE_EXHAUSTED: Rate limited or quota exceeded (429)
153
+ * - INTERNAL: Internal server error (500)
154
+ * - UNAVAILABLE: Service unavailable (503)
155
+ *
156
+ * @param error - The raw Gemini error
157
+ * @returns Normalized AgentRouterError
158
+ */
159
+ export declare function translateGeminiError(error: GeminiError): AgentRouterError;
160
+ /**
161
+ * Translate any error into an AgentRouterError.
162
+ * Used when the provider is unknown or for generic error handling.
163
+ *
164
+ * @param error - Any error object
165
+ * @param provider - Provider name for error context
166
+ * @returns Normalized AgentRouterError
167
+ */
168
+ export declare function translateGenericError(error: unknown, provider: string): AgentRouterError;
169
+ /**
170
+ * Translate an error from a specific provider.
171
+ * Routes to the appropriate provider-specific translator.
172
+ *
173
+ * @param error - The raw error from the provider
174
+ * @param provider - Provider name ('anthropic', 'openai', 'google', etc.)
175
+ * @returns Normalized AgentRouterError
176
+ */
177
+ export declare function translateProviderError(error: unknown, provider: string): AgentRouterError;
178
+ /**
179
+ * Wrap an async function to translate provider errors.
180
+ * Useful for wrapping provider calls to ensure consistent error handling.
181
+ *
182
+ * @param fn - Async function to wrap
183
+ * @param provider - Provider name for error context
184
+ * @returns Wrapped function that translates errors
185
+ */
186
+ export declare function withErrorTranslation<T extends unknown[], R>(fn: (...args: T) => Promise<R>, provider: string): (...args: T) => Promise<R>;
187
+ /**
188
+ * Check if an error is retryable (transient error that may succeed on retry).
189
+ *
190
+ * @param error - The error to check
191
+ * @returns True if the error is retryable
192
+ */
193
+ export declare function isRetryableError(error: unknown): boolean;
194
+ /**
195
+ * Get recommended retry delay for an error.
196
+ *
197
+ * @param error - The error to get retry delay for
198
+ * @param attempt - Current attempt number (1-based)
199
+ * @param baseDelayMs - Base delay in milliseconds (default: 1000)
200
+ * @returns Recommended delay in milliseconds, or undefined if not retryable
201
+ */
202
+ export declare function getRetryDelay(error: unknown, attempt: number, baseDelayMs?: number): number | undefined;
203
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/translation/errors.ts"],"names":[],"mappings":"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"}