@specforge/mcp 2.5.1 → 3.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 (307) hide show
  1. package/README.md +118 -45
  2. package/dist/ai-provider/circuit-breaker.d.ts +63 -0
  3. package/dist/ai-provider/circuit-breaker.d.ts.map +1 -0
  4. package/dist/ai-provider/circuit-breaker.js +160 -0
  5. package/dist/ai-provider/circuit-breaker.js.map +1 -0
  6. package/dist/ai-provider/cli-version.d.ts +50 -0
  7. package/dist/ai-provider/cli-version.d.ts.map +1 -0
  8. package/dist/ai-provider/cli-version.js +141 -0
  9. package/dist/ai-provider/cli-version.js.map +1 -0
  10. package/dist/ai-provider/config-loader.d.ts +45 -0
  11. package/dist/ai-provider/config-loader.d.ts.map +1 -0
  12. package/dist/ai-provider/config-loader.js +106 -0
  13. package/dist/ai-provider/config-loader.js.map +1 -0
  14. package/dist/ai-provider/errors.d.ts +48 -0
  15. package/dist/ai-provider/errors.d.ts.map +1 -0
  16. package/dist/ai-provider/errors.js +102 -0
  17. package/dist/ai-provider/errors.js.map +1 -0
  18. package/dist/ai-provider/events.d.ts +73 -0
  19. package/dist/ai-provider/events.d.ts.map +1 -0
  20. package/dist/ai-provider/events.js +75 -0
  21. package/dist/ai-provider/events.js.map +1 -0
  22. package/dist/ai-provider/factory.d.ts +31 -0
  23. package/dist/ai-provider/factory.d.ts.map +1 -0
  24. package/dist/ai-provider/factory.js +100 -0
  25. package/dist/ai-provider/factory.js.map +1 -0
  26. package/dist/ai-provider/index.d.ts +24 -0
  27. package/dist/ai-provider/index.d.ts.map +1 -0
  28. package/dist/ai-provider/index.js +46 -0
  29. package/dist/ai-provider/index.js.map +1 -0
  30. package/dist/ai-provider/instance-coordinator.d.ts +54 -0
  31. package/dist/ai-provider/instance-coordinator.d.ts.map +1 -0
  32. package/dist/ai-provider/instance-coordinator.js +199 -0
  33. package/dist/ai-provider/instance-coordinator.js.map +1 -0
  34. package/dist/ai-provider/jsonl-parser.d.ts +43 -0
  35. package/dist/ai-provider/jsonl-parser.d.ts.map +1 -0
  36. package/dist/ai-provider/jsonl-parser.js +107 -0
  37. package/dist/ai-provider/jsonl-parser.js.map +1 -0
  38. package/dist/ai-provider/lifecycle.d.ts +50 -0
  39. package/dist/ai-provider/lifecycle.d.ts.map +1 -0
  40. package/dist/ai-provider/lifecycle.js +145 -0
  41. package/dist/ai-provider/lifecycle.js.map +1 -0
  42. package/dist/ai-provider/logger.d.ts +69 -0
  43. package/dist/ai-provider/logger.d.ts.map +1 -0
  44. package/dist/ai-provider/logger.js +161 -0
  45. package/dist/ai-provider/logger.js.map +1 -0
  46. package/dist/ai-provider/metrics.d.ts +91 -0
  47. package/dist/ai-provider/metrics.d.ts.map +1 -0
  48. package/dist/ai-provider/metrics.js +187 -0
  49. package/dist/ai-provider/metrics.js.map +1 -0
  50. package/dist/ai-provider/process-manager.d.ts +97 -0
  51. package/dist/ai-provider/process-manager.d.ts.map +1 -0
  52. package/dist/ai-provider/process-manager.js +477 -0
  53. package/dist/ai-provider/process-manager.js.map +1 -0
  54. package/dist/ai-provider/providers/claude-code.d.ts +64 -0
  55. package/dist/ai-provider/providers/claude-code.d.ts.map +1 -0
  56. package/dist/ai-provider/providers/claude-code.js +205 -0
  57. package/dist/ai-provider/providers/claude-code.js.map +1 -0
  58. package/dist/ai-provider/retry-executor.d.ts +52 -0
  59. package/dist/ai-provider/retry-executor.d.ts.map +1 -0
  60. package/dist/ai-provider/retry-executor.js +138 -0
  61. package/dist/ai-provider/retry-executor.js.map +1 -0
  62. package/dist/ai-provider/safe-args.d.ts +58 -0
  63. package/dist/ai-provider/safe-args.d.ts.map +1 -0
  64. package/dist/ai-provider/safe-args.js +176 -0
  65. package/dist/ai-provider/safe-args.js.map +1 -0
  66. package/dist/ai-provider/semaphore.d.ts +50 -0
  67. package/dist/ai-provider/semaphore.d.ts.map +1 -0
  68. package/dist/ai-provider/semaphore.js +97 -0
  69. package/dist/ai-provider/semaphore.js.map +1 -0
  70. package/dist/ai-provider/tracer.d.ts +67 -0
  71. package/dist/ai-provider/tracer.d.ts.map +1 -0
  72. package/dist/ai-provider/tracer.js +209 -0
  73. package/dist/ai-provider/tracer.js.map +1 -0
  74. package/dist/ai-provider/types.d.ts +181 -0
  75. package/dist/ai-provider/types.d.ts.map +1 -0
  76. package/dist/ai-provider/types.js +8 -0
  77. package/dist/ai-provider/types.js.map +1 -0
  78. package/dist/autopilot/agents/agent-runner.d.ts +109 -0
  79. package/dist/autopilot/agents/agent-runner.d.ts.map +1 -0
  80. package/dist/autopilot/agents/agent-runner.js +731 -0
  81. package/dist/autopilot/agents/agent-runner.js.map +1 -0
  82. package/dist/autopilot/agents/agent-selector.d.ts +59 -0
  83. package/dist/autopilot/agents/agent-selector.d.ts.map +1 -0
  84. package/dist/autopilot/agents/agent-selector.js +234 -0
  85. package/dist/autopilot/agents/agent-selector.js.map +1 -0
  86. package/dist/autopilot/agents/model-selector.d.ts +49 -0
  87. package/dist/autopilot/agents/model-selector.d.ts.map +1 -0
  88. package/dist/autopilot/agents/model-selector.js +62 -0
  89. package/dist/autopilot/agents/model-selector.js.map +1 -0
  90. package/dist/autopilot/agents/profiles/builtin.d.ts +55 -0
  91. package/dist/autopilot/agents/profiles/builtin.d.ts.map +1 -0
  92. package/dist/autopilot/agents/profiles/builtin.js +323 -0
  93. package/dist/autopilot/agents/profiles/builtin.js.map +1 -0
  94. package/dist/autopilot/agents/profiles/types.d.ts +98 -0
  95. package/dist/autopilot/agents/profiles/types.d.ts.map +1 -0
  96. package/dist/autopilot/agents/profiles/types.js +17 -0
  97. package/dist/autopilot/agents/profiles/types.js.map +1 -0
  98. package/dist/autopilot/api/autopilot-api-client.d.ts +217 -0
  99. package/dist/autopilot/api/autopilot-api-client.d.ts.map +1 -0
  100. package/dist/autopilot/api/autopilot-api-client.js +402 -0
  101. package/dist/autopilot/api/autopilot-api-client.js.map +1 -0
  102. package/dist/autopilot/cli/abort.d.ts +20 -0
  103. package/dist/autopilot/cli/abort.d.ts.map +1 -0
  104. package/dist/autopilot/cli/abort.js +201 -0
  105. package/dist/autopilot/cli/abort.js.map +1 -0
  106. package/dist/autopilot/cli/display.d.ts +63 -0
  107. package/dist/autopilot/cli/display.d.ts.map +1 -0
  108. package/dist/autopilot/cli/display.js +260 -0
  109. package/dist/autopilot/cli/display.js.map +1 -0
  110. package/dist/autopilot/cli/index.d.ts +24 -0
  111. package/dist/autopilot/cli/index.d.ts.map +1 -0
  112. package/dist/autopilot/cli/index.js +79 -0
  113. package/dist/autopilot/cli/index.js.map +1 -0
  114. package/dist/autopilot/cli/pause.d.ts +18 -0
  115. package/dist/autopilot/cli/pause.d.ts.map +1 -0
  116. package/dist/autopilot/cli/pause.js +110 -0
  117. package/dist/autopilot/cli/pause.js.map +1 -0
  118. package/dist/autopilot/cli/resume.d.ts +22 -0
  119. package/dist/autopilot/cli/resume.d.ts.map +1 -0
  120. package/dist/autopilot/cli/resume.js +172 -0
  121. package/dist/autopilot/cli/resume.js.map +1 -0
  122. package/dist/autopilot/cli/run.d.ts +25 -0
  123. package/dist/autopilot/cli/run.d.ts.map +1 -0
  124. package/dist/autopilot/cli/run.js +220 -0
  125. package/dist/autopilot/cli/run.js.map +1 -0
  126. package/dist/autopilot/cli/status.d.ts +20 -0
  127. package/dist/autopilot/cli/status.d.ts.map +1 -0
  128. package/dist/autopilot/cli/status.js +217 -0
  129. package/dist/autopilot/cli/status.js.map +1 -0
  130. package/dist/autopilot/config.d.ts +45 -0
  131. package/dist/autopilot/config.d.ts.map +1 -0
  132. package/dist/autopilot/config.js +269 -0
  133. package/dist/autopilot/config.js.map +1 -0
  134. package/dist/autopilot/core/dependency-resolver.d.ts +108 -0
  135. package/dist/autopilot/core/dependency-resolver.d.ts.map +1 -0
  136. package/dist/autopilot/core/dependency-resolver.js +394 -0
  137. package/dist/autopilot/core/dependency-resolver.js.map +1 -0
  138. package/dist/autopilot/core/dispatcher.d.ts +215 -0
  139. package/dist/autopilot/core/dispatcher.d.ts.map +1 -0
  140. package/dist/autopilot/core/dispatcher.js +594 -0
  141. package/dist/autopilot/core/dispatcher.js.map +1 -0
  142. package/dist/autopilot/core/failure-handler.d.ts +145 -0
  143. package/dist/autopilot/core/failure-handler.d.ts.map +1 -0
  144. package/dist/autopilot/core/failure-handler.js +308 -0
  145. package/dist/autopilot/core/failure-handler.js.map +1 -0
  146. package/dist/autopilot/core/rate-limit-handler.d.ts +108 -0
  147. package/dist/autopilot/core/rate-limit-handler.d.ts.map +1 -0
  148. package/dist/autopilot/core/rate-limit-handler.js +195 -0
  149. package/dist/autopilot/core/rate-limit-handler.js.map +1 -0
  150. package/dist/autopilot/core/state-manager.d.ts +160 -0
  151. package/dist/autopilot/core/state-manager.d.ts.map +1 -0
  152. package/dist/autopilot/core/state-manager.js +393 -0
  153. package/dist/autopilot/core/state-manager.js.map +1 -0
  154. package/dist/autopilot/core/timeout-manager.d.ts +95 -0
  155. package/dist/autopilot/core/timeout-manager.d.ts.map +1 -0
  156. package/dist/autopilot/core/timeout-manager.js +188 -0
  157. package/dist/autopilot/core/timeout-manager.js.map +1 -0
  158. package/dist/autopilot/git/branch-manager.d.ts +117 -0
  159. package/dist/autopilot/git/branch-manager.d.ts.map +1 -0
  160. package/dist/autopilot/git/branch-manager.js +238 -0
  161. package/dist/autopilot/git/branch-manager.js.map +1 -0
  162. package/dist/autopilot/git/index.d.ts +9 -0
  163. package/dist/autopilot/git/index.d.ts.map +1 -0
  164. package/dist/autopilot/git/index.js +9 -0
  165. package/dist/autopilot/git/index.js.map +1 -0
  166. package/dist/autopilot/git/merge-manager.d.ts +118 -0
  167. package/dist/autopilot/git/merge-manager.d.ts.map +1 -0
  168. package/dist/autopilot/git/merge-manager.js +304 -0
  169. package/dist/autopilot/git/merge-manager.js.map +1 -0
  170. package/dist/autopilot/git/worktree-manager.d.ts +128 -0
  171. package/dist/autopilot/git/worktree-manager.d.ts.map +1 -0
  172. package/dist/autopilot/git/worktree-manager.js +298 -0
  173. package/dist/autopilot/git/worktree-manager.js.map +1 -0
  174. package/dist/autopilot/index.d.ts +30 -0
  175. package/dist/autopilot/index.d.ts.map +1 -0
  176. package/dist/autopilot/index.js +55 -0
  177. package/dist/autopilot/index.js.map +1 -0
  178. package/dist/autopilot/sync/index.d.ts +7 -0
  179. package/dist/autopilot/sync/index.d.ts.map +1 -0
  180. package/dist/autopilot/sync/index.js +7 -0
  181. package/dist/autopilot/sync/index.js.map +1 -0
  182. package/dist/autopilot/sync/sync-manager.d.ts +168 -0
  183. package/dist/autopilot/sync/sync-manager.d.ts.map +1 -0
  184. package/dist/autopilot/sync/sync-manager.js +303 -0
  185. package/dist/autopilot/sync/sync-manager.js.map +1 -0
  186. package/dist/autopilot/types.d.ts +454 -0
  187. package/dist/autopilot/types.d.ts.map +1 -0
  188. package/dist/autopilot/types.js +26 -0
  189. package/dist/autopilot/types.js.map +1 -0
  190. package/dist/autopilot/utils/audit-logger.d.ts +176 -0
  191. package/dist/autopilot/utils/audit-logger.d.ts.map +1 -0
  192. package/dist/autopilot/utils/audit-logger.js +308 -0
  193. package/dist/autopilot/utils/audit-logger.js.map +1 -0
  194. package/dist/autopilot/utils/cost-tracker.d.ts +162 -0
  195. package/dist/autopilot/utils/cost-tracker.d.ts.map +1 -0
  196. package/dist/autopilot/utils/cost-tracker.js +269 -0
  197. package/dist/autopilot/utils/cost-tracker.js.map +1 -0
  198. package/dist/autopilot/utils/index.d.ts +9 -0
  199. package/dist/autopilot/utils/index.d.ts.map +1 -0
  200. package/dist/autopilot/utils/index.js +9 -0
  201. package/dist/autopilot/utils/index.js.map +1 -0
  202. package/dist/autopilot/utils/progress-reporter.d.ts +132 -0
  203. package/dist/autopilot/utils/progress-reporter.d.ts.map +1 -0
  204. package/dist/autopilot/utils/progress-reporter.js +290 -0
  205. package/dist/autopilot/utils/progress-reporter.js.map +1 -0
  206. package/dist/autopilot/worker/worker-pool.d.ts +179 -0
  207. package/dist/autopilot/worker/worker-pool.d.ts.map +1 -0
  208. package/dist/autopilot/worker/worker-pool.js +331 -0
  209. package/dist/autopilot/worker/worker-pool.js.map +1 -0
  210. package/dist/autopilot/worker/worker-session.d.ts +171 -0
  211. package/dist/autopilot/worker/worker-session.d.ts.map +1 -0
  212. package/dist/autopilot/worker/worker-session.js +295 -0
  213. package/dist/autopilot/worker/worker-session.js.map +1 -0
  214. package/dist/cli/commands/blocked.js +6 -6
  215. package/dist/cli/commands/blocked.js.map +1 -1
  216. package/dist/cli/commands/blueprints.js +1 -1
  217. package/dist/cli/commands/blueprints.js.map +1 -1
  218. package/dist/cli/commands/configure.js +6 -6
  219. package/dist/cli/commands/configure.js.map +1 -1
  220. package/dist/cli/commands/debug/call.js +3 -3
  221. package/dist/cli/commands/debug/call.js.map +1 -1
  222. package/dist/cli/commands/debug/register.js +11 -11
  223. package/dist/cli/commands/debug/test.js +1 -1
  224. package/dist/cli/commands/debug/test.js.map +1 -1
  225. package/dist/cli/commands/debug/tools.js +1 -1
  226. package/dist/cli/commands/debug/tools.js.map +1 -1
  227. package/dist/cli/commands/docs/content/api.js +3 -3
  228. package/dist/cli/commands/docs/content/examples.js +12 -12
  229. package/dist/cli/commands/docs/content/workflow.js +2 -2
  230. package/dist/cli/commands/docs/display.js +4 -4
  231. package/dist/cli/commands/docs/display.js.map +1 -1
  232. package/dist/cli/commands/docs/docs.js +3 -3
  233. package/dist/cli/commands/docs/docs.js.map +1 -1
  234. package/dist/cli/commands/docs/tool-docs.js +2 -2
  235. package/dist/cli/commands/docs/tool-docs.js.map +1 -1
  236. package/dist/cli/commands/doctor.js +2 -2
  237. package/dist/cli/commands/doctor.types.d.ts +7 -7
  238. package/dist/cli/commands/doctor.types.js +7 -7
  239. package/dist/cli/commands/doctor.types.js.map +1 -1
  240. package/dist/cli/commands/feedback.js +5 -5
  241. package/dist/cli/commands/init.js +8 -8
  242. package/dist/cli/commands/init.js.map +1 -1
  243. package/dist/cli/commands/invitations.js +5 -5
  244. package/dist/cli/commands/invitations.js.map +1 -1
  245. package/dist/cli/commands/login.js +6 -6
  246. package/dist/cli/commands/login.js.map +1 -1
  247. package/dist/cli/commands/members.js +9 -9
  248. package/dist/cli/commands/members.js.map +1 -1
  249. package/dist/cli/commands/next.js +10 -10
  250. package/dist/cli/commands/next.js.map +1 -1
  251. package/dist/cli/commands/projects.js +6 -6
  252. package/dist/cli/commands/projects.js.map +1 -1
  253. package/dist/cli/commands/review/review.js +8 -8
  254. package/dist/cli/commands/review/review.js.map +1 -1
  255. package/dist/cli/commands/scaffold/scaffold.js +2 -2
  256. package/dist/cli/commands/scaffold/scaffold.js.map +1 -1
  257. package/dist/cli/commands/session/display.js +1 -1
  258. package/dist/cli/commands/session/display.js.map +1 -1
  259. package/dist/cli/commands/session/end.js +6 -6
  260. package/dist/cli/commands/session/end.js.map +1 -1
  261. package/dist/cli/commands/session/register.js +12 -12
  262. package/dist/cli/commands/session/start.js +6 -6
  263. package/dist/cli/commands/session/start.js.map +1 -1
  264. package/dist/cli/commands/session/status.js +1 -1
  265. package/dist/cli/commands/session/status.js.map +1 -1
  266. package/dist/cli/commands/specs.js +9 -9
  267. package/dist/cli/commands/specs.js.map +1 -1
  268. package/dist/cli/commands/status.js +11 -11
  269. package/dist/cli/commands/status.js.map +1 -1
  270. package/dist/cli/commands/switch.js +10 -10
  271. package/dist/cli/commands/switch.js.map +1 -1
  272. package/dist/cli/commands/ticket/command.js +5 -5
  273. package/dist/cli/commands/ticket/command.js.map +1 -1
  274. package/dist/cli/commands/ticket/register.js +4 -4
  275. package/dist/cli/commands/ticket/resolver.js +1 -1
  276. package/dist/cli/commands/ticket/resolver.js.map +1 -1
  277. package/dist/cli/commands/tickets.js +11 -11
  278. package/dist/cli/commands/tickets.js.map +1 -1
  279. package/dist/cli/config/loader.d.ts +1 -1
  280. package/dist/cli/config/loader.js +1 -1
  281. package/dist/cli/config/types.d.ts +2 -2
  282. package/dist/cli/index.d.ts +1 -1
  283. package/dist/cli/index.d.ts.map +1 -1
  284. package/dist/cli/index.js +10 -7
  285. package/dist/cli/index.js.map +1 -1
  286. package/dist/cli/middleware/auth-guard.js +1 -1
  287. package/dist/cli/middleware/auth-guard.js.map +1 -1
  288. package/dist/cli/middleware/error-handler.js +1 -1
  289. package/dist/cli/middleware/error-handler.js.map +1 -1
  290. package/dist/cli/ui/dashboard.js +1 -1
  291. package/dist/cli/ui/dashboard.js.map +1 -1
  292. package/dist/cli/ui/output.d.ts +2 -2
  293. package/dist/cli/ui/output.js +2 -2
  294. package/dist/index.js +1 -1
  295. package/dist/index.js.map +1 -1
  296. package/dist/server.js +1 -1
  297. package/dist/server.js.map +1 -1
  298. package/dist/tools/core/workflow-guide.js +1 -1
  299. package/dist/tools/core/workflow-guide.js.map +1 -1
  300. package/dist/tools/index.d.ts.map +1 -1
  301. package/dist/tools/index.js +60 -0
  302. package/dist/tools/index.js.map +1 -1
  303. package/dist/validation/index.d.ts.map +1 -1
  304. package/dist/validation/index.js +4 -1
  305. package/dist/validation/index.js.map +1 -1
  306. package/package.json +18 -13
  307. /package/bin/{specforge-mcp → specforge} +0 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Process Lifecycle Manager
3
+ *
4
+ * Handles graceful shutdown on SIGTERM, SIGINT, and SIGHUP.
5
+ */
6
+ import { ClaudeCodeProcessManager } from './process-manager.js';
7
+ export declare class ProcessLifecycleManager {
8
+ private processManager?;
9
+ private shutdownInProgress;
10
+ private shutdownHandlers;
11
+ private signalsRegistered;
12
+ constructor(processManager?: ClaudeCodeProcessManager | undefined);
13
+ /**
14
+ * Set the process manager to manage.
15
+ */
16
+ setProcessManager(processManager: ClaudeCodeProcessManager): void;
17
+ /**
18
+ * Register an additional shutdown handler.
19
+ */
20
+ onShutdown(handler: () => Promise<void>): void;
21
+ /**
22
+ * Check if shutdown is in progress.
23
+ */
24
+ isShuttingDown(): boolean;
25
+ /**
26
+ * Manually trigger shutdown.
27
+ */
28
+ shutdown(): Promise<void>;
29
+ /**
30
+ * Setup signal handlers.
31
+ */
32
+ private setupSignalHandlers;
33
+ /**
34
+ * Perform the shutdown sequence.
35
+ */
36
+ private performShutdown;
37
+ }
38
+ /**
39
+ * Get or create global lifecycle manager.
40
+ */
41
+ export declare function getLifecycleManager(): ProcessLifecycleManager;
42
+ /**
43
+ * Create a lifecycle manager for a process manager.
44
+ */
45
+ export declare function createLifecycleManager(processManager: ClaudeCodeProcessManager): ProcessLifecycleManager;
46
+ /**
47
+ * Register a global shutdown handler.
48
+ */
49
+ export declare function onShutdown(handler: () => Promise<void>): void;
50
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/ai-provider/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAMhE,qBAAa,uBAAuB;IAKtB,OAAO,CAAC,cAAc,CAAC;IAJnC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAkC;IAC1D,OAAO,CAAC,iBAAiB,CAAS;gBAEd,cAAc,CAAC,EAAE,wBAAwB,YAAA;IAO7D;;OAEG;IACH,iBAAiB,CAAC,cAAc,EAAE,wBAAwB,GAAG,IAAI;IAIjE;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI9C;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;YACW,eAAe;CAiC9B;AAOD;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,uBAAuB,CAK7D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,cAAc,EAAE,wBAAwB,GACvC,uBAAuB,CAEzB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAE7D"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Process Lifecycle Manager
3
+ *
4
+ * Handles graceful shutdown on SIGTERM, SIGINT, and SIGHUP.
5
+ */
6
+ import { createLogger } from './logger.js';
7
+ const logger = createLogger('ProcessLifecycle');
8
+ export class ProcessLifecycleManager {
9
+ processManager;
10
+ shutdownInProgress = false;
11
+ shutdownHandlers = [];
12
+ signalsRegistered = false;
13
+ constructor(processManager) {
14
+ this.processManager = processManager;
15
+ // Only setup signal handlers in Node.js environment
16
+ if (typeof process !== 'undefined' && typeof process.on === 'function') {
17
+ this.setupSignalHandlers();
18
+ }
19
+ }
20
+ /**
21
+ * Set the process manager to manage.
22
+ */
23
+ setProcessManager(processManager) {
24
+ this.processManager = processManager;
25
+ }
26
+ /**
27
+ * Register an additional shutdown handler.
28
+ */
29
+ onShutdown(handler) {
30
+ this.shutdownHandlers.push(handler);
31
+ }
32
+ /**
33
+ * Check if shutdown is in progress.
34
+ */
35
+ isShuttingDown() {
36
+ return this.shutdownInProgress;
37
+ }
38
+ /**
39
+ * Manually trigger shutdown.
40
+ */
41
+ async shutdown() {
42
+ if (this.shutdownInProgress) {
43
+ logger.warn('Shutdown already in progress');
44
+ return;
45
+ }
46
+ await this.performShutdown('manual');
47
+ }
48
+ /**
49
+ * Setup signal handlers.
50
+ */
51
+ setupSignalHandlers() {
52
+ if (this.signalsRegistered) {
53
+ return;
54
+ }
55
+ const signals = ['SIGTERM', 'SIGINT', 'SIGHUP'];
56
+ for (const signal of signals) {
57
+ process.on(signal, () => {
58
+ this.performShutdown(signal).then(() => {
59
+ process.exit(0);
60
+ }).catch((error) => {
61
+ logger.error('Error during shutdown', { error: error.message });
62
+ process.exit(1);
63
+ });
64
+ });
65
+ }
66
+ // Handle uncaught exceptions
67
+ process.on('uncaughtException', (error) => {
68
+ logger.error('Uncaught exception', {
69
+ error: error.message,
70
+ stack: error.stack,
71
+ });
72
+ this.performShutdown('uncaughtException').finally(() => {
73
+ process.exit(1);
74
+ });
75
+ });
76
+ // Handle unhandled promise rejections
77
+ process.on('unhandledRejection', (reason) => {
78
+ logger.error('Unhandled rejection', {
79
+ reason: String(reason),
80
+ });
81
+ });
82
+ this.signalsRegistered = true;
83
+ logger.debug('Signal handlers registered');
84
+ }
85
+ /**
86
+ * Perform the shutdown sequence.
87
+ */
88
+ async performShutdown(signal) {
89
+ if (this.shutdownInProgress) {
90
+ return;
91
+ }
92
+ this.shutdownInProgress = true;
93
+ logger.info(`Received ${signal}, starting graceful shutdown...`);
94
+ try {
95
+ // Run custom shutdown handlers first
96
+ for (const handler of this.shutdownHandlers) {
97
+ try {
98
+ await handler();
99
+ }
100
+ catch (error) {
101
+ logger.warn('Shutdown handler error', {
102
+ error: error.message,
103
+ });
104
+ }
105
+ }
106
+ // Shutdown process manager
107
+ if (this.processManager) {
108
+ await this.processManager.shutdown();
109
+ }
110
+ logger.info('Graceful shutdown completed');
111
+ }
112
+ catch (error) {
113
+ logger.error('Error during shutdown', {
114
+ error: error.message,
115
+ });
116
+ throw error;
117
+ }
118
+ }
119
+ }
120
+ /**
121
+ * Global lifecycle manager instance.
122
+ */
123
+ let globalLifecycleManager = null;
124
+ /**
125
+ * Get or create global lifecycle manager.
126
+ */
127
+ export function getLifecycleManager() {
128
+ if (!globalLifecycleManager) {
129
+ globalLifecycleManager = new ProcessLifecycleManager();
130
+ }
131
+ return globalLifecycleManager;
132
+ }
133
+ /**
134
+ * Create a lifecycle manager for a process manager.
135
+ */
136
+ export function createLifecycleManager(processManager) {
137
+ return new ProcessLifecycleManager(processManager);
138
+ }
139
+ /**
140
+ * Register a global shutdown handler.
141
+ */
142
+ export function onShutdown(handler) {
143
+ getLifecycleManager().onShutdown(handler);
144
+ }
145
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/ai-provider/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * AI Provider Logger
3
+ *
4
+ * Structured JSON logging with request ID support.
5
+ */
6
+ import type { LogLevel } from './types.js';
7
+ export declare class Logger {
8
+ private component;
9
+ private static globalRequestId?;
10
+ private static logLevel;
11
+ constructor(component: string);
12
+ /**
13
+ * Set global request ID for correlation
14
+ */
15
+ static setRequestId(requestId: string): void;
16
+ /**
17
+ * Clear global request ID
18
+ */
19
+ static clearRequestId(): void;
20
+ /**
21
+ * Get current request ID
22
+ */
23
+ static getRequestId(): string | undefined;
24
+ /**
25
+ * Set minimum log level
26
+ */
27
+ static setLogLevel(level: LogLevel): void;
28
+ /**
29
+ * Check if a log level should be output
30
+ */
31
+ private shouldLog;
32
+ /**
33
+ * Log debug message
34
+ */
35
+ debug(message: string, context?: Record<string, unknown>): void;
36
+ /**
37
+ * Log info message
38
+ */
39
+ info(message: string, context?: Record<string, unknown>): void;
40
+ /**
41
+ * Log warning message
42
+ */
43
+ warn(message: string, context?: Record<string, unknown>): void;
44
+ /**
45
+ * Log error message
46
+ */
47
+ error(message: string, context?: Record<string, unknown>): void;
48
+ /**
49
+ * Log error with Error object
50
+ */
51
+ errorWithException(message: string, error: Error, context?: Record<string, unknown>): void;
52
+ /**
53
+ * Create a child logger with additional context
54
+ */
55
+ child(subComponent: string): Logger;
56
+ /**
57
+ * Core logging method
58
+ */
59
+ private log;
60
+ /**
61
+ * Sanitize context to prevent PII logging
62
+ */
63
+ private sanitizeContext;
64
+ }
65
+ /**
66
+ * Create a logger for a specific component
67
+ */
68
+ export declare function createLogger(component: string): Logger;
69
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/ai-provider/logger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAMrD,qBAAa,MAAM;IAIL,OAAO,CAAC,SAAS;IAH7B,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAS;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAoB;gBAEvB,SAAS,EAAE,MAAM;IAErC;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,MAAM,CAAC,cAAc,IAAI,IAAI;IAI7B;;OAEG;IACH,MAAM,CAAC,YAAY,IAAI,MAAM,GAAG,SAAS;IAIzC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAIzC;;OAEG;IACH,OAAO,CAAC,SAAS;IAOjB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAW1F;;OAEG;IACH,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;IACH,OAAO,CAAC,GAAG;IAiCX;;OAEG;IACH,OAAO,CAAC,eAAe;CAyBxB;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * AI Provider Logger
3
+ *
4
+ * Structured JSON logging with request ID support.
5
+ */
6
+ // ============================================================================
7
+ // Logger Class
8
+ // ============================================================================
9
+ export class Logger {
10
+ component;
11
+ static globalRequestId;
12
+ static logLevel = 'info';
13
+ constructor(component) {
14
+ this.component = component;
15
+ }
16
+ /**
17
+ * Set global request ID for correlation
18
+ */
19
+ static setRequestId(requestId) {
20
+ Logger.globalRequestId = requestId;
21
+ }
22
+ /**
23
+ * Clear global request ID
24
+ */
25
+ static clearRequestId() {
26
+ Logger.globalRequestId = undefined;
27
+ }
28
+ /**
29
+ * Get current request ID
30
+ */
31
+ static getRequestId() {
32
+ return Logger.globalRequestId;
33
+ }
34
+ /**
35
+ * Set minimum log level
36
+ */
37
+ static setLogLevel(level) {
38
+ Logger.logLevel = level;
39
+ }
40
+ /**
41
+ * Check if a log level should be output
42
+ */
43
+ shouldLog(level) {
44
+ const levels = ['debug', 'info', 'warn', 'error'];
45
+ const currentIndex = levels.indexOf(Logger.logLevel);
46
+ const messageIndex = levels.indexOf(level);
47
+ return messageIndex >= currentIndex;
48
+ }
49
+ /**
50
+ * Log debug message
51
+ */
52
+ debug(message, context) {
53
+ this.log('debug', message, context);
54
+ }
55
+ /**
56
+ * Log info message
57
+ */
58
+ info(message, context) {
59
+ this.log('info', message, context);
60
+ }
61
+ /**
62
+ * Log warning message
63
+ */
64
+ warn(message, context) {
65
+ this.log('warn', message, context);
66
+ }
67
+ /**
68
+ * Log error message
69
+ */
70
+ error(message, context) {
71
+ this.log('error', message, context);
72
+ }
73
+ /**
74
+ * Log error with Error object
75
+ */
76
+ errorWithException(message, error, context) {
77
+ this.log('error', message, {
78
+ ...context,
79
+ error: {
80
+ name: error.name,
81
+ message: error.message,
82
+ stack: error.stack,
83
+ },
84
+ });
85
+ }
86
+ /**
87
+ * Create a child logger with additional context
88
+ */
89
+ child(subComponent) {
90
+ return new Logger(`${this.component}:${subComponent}`);
91
+ }
92
+ /**
93
+ * Core logging method
94
+ */
95
+ log(level, message, context) {
96
+ if (!this.shouldLog(level)) {
97
+ return;
98
+ }
99
+ const entry = {
100
+ timestamp: new Date().toISOString(),
101
+ level,
102
+ component: this.component,
103
+ message,
104
+ context: this.sanitizeContext(context),
105
+ requestId: Logger.globalRequestId,
106
+ };
107
+ // Structured JSON logging
108
+ const output = JSON.stringify(entry);
109
+ switch (level) {
110
+ case 'debug':
111
+ console.debug(output);
112
+ break;
113
+ case 'info':
114
+ console.info(output);
115
+ break;
116
+ case 'warn':
117
+ console.warn(output);
118
+ break;
119
+ case 'error':
120
+ console.error(output);
121
+ break;
122
+ }
123
+ }
124
+ /**
125
+ * Sanitize context to prevent PII logging
126
+ */
127
+ sanitizeContext(context) {
128
+ if (!context) {
129
+ return undefined;
130
+ }
131
+ const sanitized = {};
132
+ const sensitiveKeys = ['password', 'token', 'apiKey', 'secret', 'credential', 'auth'];
133
+ for (const [key, value] of Object.entries(context)) {
134
+ const lowerKey = key.toLowerCase();
135
+ const isSensitive = sensitiveKeys.some(sk => lowerKey.includes(sk));
136
+ if (isSensitive) {
137
+ sanitized[key] = '[REDACTED]';
138
+ }
139
+ else if (typeof value === 'string' && value.length > 1000) {
140
+ sanitized[key] = value.substring(0, 1000) + '...[TRUNCATED]';
141
+ }
142
+ else if (typeof value === 'object' && value !== null) {
143
+ sanitized[key] = this.sanitizeContext(value);
144
+ }
145
+ else {
146
+ sanitized[key] = value;
147
+ }
148
+ }
149
+ return sanitized;
150
+ }
151
+ }
152
+ // ============================================================================
153
+ // Factory Function
154
+ // ============================================================================
155
+ /**
156
+ * Create a logger for a specific component
157
+ */
158
+ export function createLogger(component) {
159
+ return new Logger(component);
160
+ }
161
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/ai-provider/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Metrics Collection
3
+ *
4
+ * Counters and histograms for observability.
5
+ */
6
+ import type { MetricStats } from './types.js';
7
+ export declare class Metrics {
8
+ private counters;
9
+ private histograms;
10
+ private gauges;
11
+ /**
12
+ * Increment a counter.
13
+ */
14
+ increment(name: string, value?: number): void;
15
+ /**
16
+ * Decrement a counter.
17
+ */
18
+ decrement(name: string, value?: number): void;
19
+ /**
20
+ * Record a value in a histogram.
21
+ */
22
+ histogram(name: string, value: number): void;
23
+ /**
24
+ * Set a gauge value.
25
+ */
26
+ gauge(name: string, value: number): void;
27
+ /**
28
+ * Get a counter value.
29
+ */
30
+ getCounter(name: string): number;
31
+ /**
32
+ * Get a gauge value.
33
+ */
34
+ getGauge(name: string): number;
35
+ /**
36
+ * Get histogram statistics.
37
+ */
38
+ getHistogramStats(name: string): MetricStats | null;
39
+ /**
40
+ * Get all metrics.
41
+ */
42
+ getAll(): {
43
+ counters: Record<string, number>;
44
+ gauges: Record<string, number>;
45
+ histograms: Record<string, MetricStats | null>;
46
+ };
47
+ /**
48
+ * Reset all metrics.
49
+ */
50
+ reset(): void;
51
+ /**
52
+ * Reset a specific metric.
53
+ */
54
+ resetMetric(name: string): void;
55
+ /**
56
+ * Export metrics as Prometheus-style text.
57
+ */
58
+ toPrometheus(): string;
59
+ /**
60
+ * Calculate percentile from sorted array.
61
+ */
62
+ private percentile;
63
+ }
64
+ /**
65
+ * Get or create global metrics instance.
66
+ */
67
+ export declare function getMetrics(): Metrics;
68
+ /**
69
+ * Create a new metrics instance.
70
+ */
71
+ export declare function createMetrics(): Metrics;
72
+ export declare const METRIC_NAMES: {
73
+ readonly REQUESTS_STARTED: "requests.started";
74
+ readonly REQUESTS_SUCCESS: "requests.success";
75
+ readonly REQUESTS_FAILURE: "requests.failure";
76
+ readonly REQUESTS_TIMEOUT: "requests.timeout";
77
+ readonly REQUESTS_CIRCUIT_BLOCKED: "requests.circuit_breaker_blocked";
78
+ readonly REQUEST_DURATION_MS: "requests.duration_ms";
79
+ readonly SPAWN_DURATION_MS: "spawn.duration_ms";
80
+ readonly PROCESSES_ACTIVE: "processes.active";
81
+ readonly PROCESSES_SPAWNED: "processes.spawned";
82
+ readonly PROCESSES_KILLED: "processes.killed";
83
+ readonly ERRORS_AUTH: "errors.auth";
84
+ readonly ERRORS_RATE_LIMIT: "errors.rate_limit";
85
+ readonly ERRORS_TIMEOUT: "errors.timeout";
86
+ readonly ERRORS_NETWORK: "errors.network";
87
+ readonly ERRORS_UNKNOWN: "errors.unknown";
88
+ readonly RETRIES_ATTEMPTED: "retries.attempted";
89
+ readonly RETRIES_SUCCESS: "retries.success";
90
+ };
91
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/ai-provider/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,MAAM,CAAkC;IAEhD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAKhD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,IAAI;IAKhD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5C;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIhC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI9B;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAkBnD;;OAEG;IACH,MAAM,IAAI;QACR,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;KAChD;IAaD;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM/B;;OAEG;IACH,YAAY,IAAI,MAAM;IAsCtB;;OAEG;IACH,OAAO,CAAC,UAAU;CAInB;AAOD;;GAEG;AACH,wBAAgB,UAAU,IAAI,OAAO,CAKpC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAGD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;CA2Bf,CAAC"}