steroids-api 0.2.7

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 (328) hide show
  1. package/dist/API/src/index.d.ts +10 -0
  2. package/dist/API/src/index.d.ts.map +1 -0
  3. package/dist/API/src/index.js +130 -0
  4. package/dist/API/src/index.js.map +1 -0
  5. package/dist/API/src/routes/activity.d.ts +7 -0
  6. package/dist/API/src/routes/activity.d.ts.map +1 -0
  7. package/dist/API/src/routes/activity.js +252 -0
  8. package/dist/API/src/routes/activity.js.map +1 -0
  9. package/dist/API/src/routes/config.d.ts +7 -0
  10. package/dist/API/src/routes/config.d.ts.map +1 -0
  11. package/dist/API/src/routes/config.js +521 -0
  12. package/dist/API/src/routes/config.js.map +1 -0
  13. package/dist/API/src/routes/health.d.ts +7 -0
  14. package/dist/API/src/routes/health.d.ts.map +1 -0
  15. package/dist/API/src/routes/health.js +172 -0
  16. package/dist/API/src/routes/health.js.map +1 -0
  17. package/dist/API/src/routes/incidents.d.ts +7 -0
  18. package/dist/API/src/routes/incidents.d.ts.map +1 -0
  19. package/dist/API/src/routes/incidents.js +117 -0
  20. package/dist/API/src/routes/incidents.js.map +1 -0
  21. package/dist/API/src/routes/projects.d.ts +7 -0
  22. package/dist/API/src/routes/projects.d.ts.map +1 -0
  23. package/dist/API/src/routes/projects.js +398 -0
  24. package/dist/API/src/routes/projects.js.map +1 -0
  25. package/dist/API/src/routes/runners.d.ts +7 -0
  26. package/dist/API/src/routes/runners.d.ts.map +1 -0
  27. package/dist/API/src/routes/runners.js +242 -0
  28. package/dist/API/src/routes/runners.js.map +1 -0
  29. package/dist/API/src/routes/tasks.d.ts +7 -0
  30. package/dist/API/src/routes/tasks.d.ts.map +1 -0
  31. package/dist/API/src/routes/tasks.js +1007 -0
  32. package/dist/API/src/routes/tasks.js.map +1 -0
  33. package/dist/API/src/utils/validation.d.ts +22 -0
  34. package/dist/API/src/utils/validation.d.ts.map +1 -0
  35. package/dist/API/src/utils/validation.js +50 -0
  36. package/dist/API/src/utils/validation.js.map +1 -0
  37. package/dist/index.d.ts +10 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +184 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/routes/activity.d.ts +7 -0
  42. package/dist/routes/activity.d.ts.map +1 -0
  43. package/dist/routes/activity.js +252 -0
  44. package/dist/routes/activity.js.map +1 -0
  45. package/dist/routes/config.d.ts +7 -0
  46. package/dist/routes/config.d.ts.map +1 -0
  47. package/dist/routes/config.js +647 -0
  48. package/dist/routes/config.js.map +1 -0
  49. package/dist/routes/credit-alerts.d.ts +2 -0
  50. package/dist/routes/credit-alerts.d.ts.map +1 -0
  51. package/dist/routes/credit-alerts.js +97 -0
  52. package/dist/routes/credit-alerts.js.map +1 -0
  53. package/dist/routes/health.d.ts +7 -0
  54. package/dist/routes/health.d.ts.map +1 -0
  55. package/dist/routes/health.js +200 -0
  56. package/dist/routes/health.js.map +1 -0
  57. package/dist/routes/incidents.d.ts +7 -0
  58. package/dist/routes/incidents.d.ts.map +1 -0
  59. package/dist/routes/incidents.js +117 -0
  60. package/dist/routes/incidents.js.map +1 -0
  61. package/dist/routes/projects.d.ts +7 -0
  62. package/dist/routes/projects.d.ts.map +1 -0
  63. package/dist/routes/projects.js +643 -0
  64. package/dist/routes/projects.js.map +1 -0
  65. package/dist/routes/runners.d.ts +7 -0
  66. package/dist/routes/runners.d.ts.map +1 -0
  67. package/dist/routes/runners.js +299 -0
  68. package/dist/routes/runners.js.map +1 -0
  69. package/dist/routes/skills.d.ts +3 -0
  70. package/dist/routes/skills.d.ts.map +1 -0
  71. package/dist/routes/skills.js +109 -0
  72. package/dist/routes/skills.js.map +1 -0
  73. package/dist/routes/storage.d.ts +7 -0
  74. package/dist/routes/storage.d.ts.map +1 -0
  75. package/dist/routes/storage.js +93 -0
  76. package/dist/routes/storage.js.map +1 -0
  77. package/dist/routes/tasks.d.ts +7 -0
  78. package/dist/routes/tasks.d.ts.map +1 -0
  79. package/dist/routes/tasks.js +1145 -0
  80. package/dist/routes/tasks.js.map +1 -0
  81. package/dist/src/cleanup/invocation-logs.d.ts +30 -0
  82. package/dist/src/cleanup/invocation-logs.d.ts.map +1 -0
  83. package/dist/src/cleanup/invocation-logs.js +66 -0
  84. package/dist/src/cleanup/invocation-logs.js.map +1 -0
  85. package/dist/src/commands/loop-phases.d.ts +11 -0
  86. package/dist/src/commands/loop-phases.d.ts.map +1 -0
  87. package/dist/src/commands/loop-phases.js +304 -0
  88. package/dist/src/commands/loop-phases.js.map +1 -0
  89. package/dist/src/config/loader.d.ts +160 -0
  90. package/dist/src/config/loader.d.ts.map +1 -0
  91. package/dist/src/config/loader.js +276 -0
  92. package/dist/src/config/loader.js.map +1 -0
  93. package/dist/src/database/connection.d.ts +35 -0
  94. package/dist/src/database/connection.d.ts.map +1 -0
  95. package/dist/src/database/connection.js +197 -0
  96. package/dist/src/database/connection.js.map +1 -0
  97. package/dist/src/database/queries.d.ts +220 -0
  98. package/dist/src/database/queries.d.ts.map +1 -0
  99. package/dist/src/database/queries.js +589 -0
  100. package/dist/src/database/queries.js.map +1 -0
  101. package/dist/src/database/schema.d.ts +8 -0
  102. package/dist/src/database/schema.d.ts.map +1 -0
  103. package/dist/src/database/schema.js +184 -0
  104. package/dist/src/database/schema.js.map +1 -0
  105. package/dist/src/git/push.d.ts +26 -0
  106. package/dist/src/git/push.d.ts.map +1 -0
  107. package/dist/src/git/push.js +91 -0
  108. package/dist/src/git/push.js.map +1 -0
  109. package/dist/src/git/status.d.ts +83 -0
  110. package/dist/src/git/status.d.ts.map +1 -0
  111. package/dist/src/git/status.js +315 -0
  112. package/dist/src/git/status.js.map +1 -0
  113. package/dist/src/health/stuck-task-detector.d.ts +131 -0
  114. package/dist/src/health/stuck-task-detector.d.ts.map +1 -0
  115. package/dist/src/health/stuck-task-detector.js +233 -0
  116. package/dist/src/health/stuck-task-detector.js.map +1 -0
  117. package/dist/src/health/stuck-task-recovery.d.ts +45 -0
  118. package/dist/src/health/stuck-task-recovery.d.ts.map +1 -0
  119. package/dist/src/health/stuck-task-recovery.js +309 -0
  120. package/dist/src/health/stuck-task-recovery.js.map +1 -0
  121. package/dist/src/index.d.ts +10 -0
  122. package/dist/src/index.d.ts.map +1 -0
  123. package/dist/src/index.js +130 -0
  124. package/dist/src/index.js.map +1 -0
  125. package/dist/src/locking/queries.d.ts +116 -0
  126. package/dist/src/locking/queries.d.ts.map +1 -0
  127. package/dist/src/locking/queries.js +232 -0
  128. package/dist/src/locking/queries.js.map +1 -0
  129. package/dist/src/locking/section-lock.d.ts +74 -0
  130. package/dist/src/locking/section-lock.d.ts.map +1 -0
  131. package/dist/src/locking/section-lock.js +196 -0
  132. package/dist/src/locking/section-lock.js.map +1 -0
  133. package/dist/src/locking/task-lock.d.ts +92 -0
  134. package/dist/src/locking/task-lock.d.ts.map +1 -0
  135. package/dist/src/locking/task-lock.js +233 -0
  136. package/dist/src/locking/task-lock.js.map +1 -0
  137. package/dist/src/migrations/index.d.ts +7 -0
  138. package/dist/src/migrations/index.d.ts.map +1 -0
  139. package/dist/src/migrations/index.js +9 -0
  140. package/dist/src/migrations/index.js.map +1 -0
  141. package/dist/src/migrations/manifest.d.ts +92 -0
  142. package/dist/src/migrations/manifest.d.ts.map +1 -0
  143. package/dist/src/migrations/manifest.js +255 -0
  144. package/dist/src/migrations/manifest.js.map +1 -0
  145. package/dist/src/migrations/runner.d.ts +84 -0
  146. package/dist/src/migrations/runner.d.ts.map +1 -0
  147. package/dist/src/migrations/runner.js +338 -0
  148. package/dist/src/migrations/runner.js.map +1 -0
  149. package/dist/src/orchestrator/coder.d.ts +32 -0
  150. package/dist/src/orchestrator/coder.d.ts.map +1 -0
  151. package/dist/src/orchestrator/coder.js +170 -0
  152. package/dist/src/orchestrator/coder.js.map +1 -0
  153. package/dist/src/orchestrator/coordinator.d.ts +28 -0
  154. package/dist/src/orchestrator/coordinator.d.ts.map +1 -0
  155. package/dist/src/orchestrator/coordinator.js +252 -0
  156. package/dist/src/orchestrator/coordinator.js.map +1 -0
  157. package/dist/src/orchestrator/fallback-handler.d.ts +24 -0
  158. package/dist/src/orchestrator/fallback-handler.d.ts.map +1 -0
  159. package/dist/src/orchestrator/fallback-handler.js +280 -0
  160. package/dist/src/orchestrator/fallback-handler.js.map +1 -0
  161. package/dist/src/orchestrator/invoke.d.ts +14 -0
  162. package/dist/src/orchestrator/invoke.d.ts.map +1 -0
  163. package/dist/src/orchestrator/invoke.js +76 -0
  164. package/dist/src/orchestrator/invoke.js.map +1 -0
  165. package/dist/src/orchestrator/post-coder.d.ts +10 -0
  166. package/dist/src/orchestrator/post-coder.d.ts.map +1 -0
  167. package/dist/src/orchestrator/post-coder.js +198 -0
  168. package/dist/src/orchestrator/post-coder.js.map +1 -0
  169. package/dist/src/orchestrator/post-reviewer.d.ts +10 -0
  170. package/dist/src/orchestrator/post-reviewer.d.ts.map +1 -0
  171. package/dist/src/orchestrator/post-reviewer.js +199 -0
  172. package/dist/src/orchestrator/post-reviewer.js.map +1 -0
  173. package/dist/src/orchestrator/reviewer.d.ts +35 -0
  174. package/dist/src/orchestrator/reviewer.d.ts.map +1 -0
  175. package/dist/src/orchestrator/reviewer.js +237 -0
  176. package/dist/src/orchestrator/reviewer.js.map +1 -0
  177. package/dist/src/orchestrator/schemas.d.ts +10 -0
  178. package/dist/src/orchestrator/schemas.d.ts.map +1 -0
  179. package/dist/src/orchestrator/schemas.js +81 -0
  180. package/dist/src/orchestrator/schemas.js.map +1 -0
  181. package/dist/src/orchestrator/task-selector.d.ts +102 -0
  182. package/dist/src/orchestrator/task-selector.d.ts.map +1 -0
  183. package/dist/src/orchestrator/task-selector.js +326 -0
  184. package/dist/src/orchestrator/task-selector.js.map +1 -0
  185. package/dist/src/orchestrator/types.d.ts +74 -0
  186. package/dist/src/orchestrator/types.d.ts.map +1 -0
  187. package/dist/src/orchestrator/types.js +5 -0
  188. package/dist/src/orchestrator/types.js.map +1 -0
  189. package/dist/src/prompts/coder.d.ts +36 -0
  190. package/dist/src/prompts/coder.d.ts.map +1 -0
  191. package/dist/src/prompts/coder.js +303 -0
  192. package/dist/src/prompts/coder.js.map +1 -0
  193. package/dist/src/prompts/prompt-helpers.d.ts +51 -0
  194. package/dist/src/prompts/prompt-helpers.d.ts.map +1 -0
  195. package/dist/src/prompts/prompt-helpers.js +299 -0
  196. package/dist/src/prompts/prompt-helpers.js.map +1 -0
  197. package/dist/src/prompts/reviewer.d.ts +40 -0
  198. package/dist/src/prompts/reviewer.d.ts.map +1 -0
  199. package/dist/src/prompts/reviewer.js +416 -0
  200. package/dist/src/prompts/reviewer.js.map +1 -0
  201. package/dist/src/providers/claude.d.ts +53 -0
  202. package/dist/src/providers/claude.d.ts.map +1 -0
  203. package/dist/src/providers/claude.js +227 -0
  204. package/dist/src/providers/claude.js.map +1 -0
  205. package/dist/src/providers/codex.d.ts +53 -0
  206. package/dist/src/providers/codex.d.ts.map +1 -0
  207. package/dist/src/providers/codex.js +253 -0
  208. package/dist/src/providers/codex.js.map +1 -0
  209. package/dist/src/providers/gemini.d.ts +58 -0
  210. package/dist/src/providers/gemini.d.ts.map +1 -0
  211. package/dist/src/providers/gemini.js +240 -0
  212. package/dist/src/providers/gemini.js.map +1 -0
  213. package/dist/src/providers/interface.d.ts +185 -0
  214. package/dist/src/providers/interface.d.ts.map +1 -0
  215. package/dist/src/providers/interface.js +92 -0
  216. package/dist/src/providers/interface.js.map +1 -0
  217. package/dist/src/providers/invocation-logger.d.ts +97 -0
  218. package/dist/src/providers/invocation-logger.d.ts.map +1 -0
  219. package/dist/src/providers/invocation-logger.js +378 -0
  220. package/dist/src/providers/invocation-logger.js.map +1 -0
  221. package/dist/src/providers/openai.d.ts +53 -0
  222. package/dist/src/providers/openai.d.ts.map +1 -0
  223. package/dist/src/providers/openai.js +230 -0
  224. package/dist/src/providers/openai.js.map +1 -0
  225. package/dist/src/providers/registry.d.ts +100 -0
  226. package/dist/src/providers/registry.d.ts.map +1 -0
  227. package/dist/src/providers/registry.js +170 -0
  228. package/dist/src/providers/registry.js.map +1 -0
  229. package/dist/src/routes/activity.d.ts +7 -0
  230. package/dist/src/routes/activity.d.ts.map +1 -0
  231. package/dist/src/routes/activity.js +252 -0
  232. package/dist/src/routes/activity.js.map +1 -0
  233. package/dist/src/routes/config.d.ts +7 -0
  234. package/dist/src/routes/config.d.ts.map +1 -0
  235. package/dist/src/routes/config.js +521 -0
  236. package/dist/src/routes/config.js.map +1 -0
  237. package/dist/src/routes/health.d.ts +7 -0
  238. package/dist/src/routes/health.d.ts.map +1 -0
  239. package/dist/src/routes/health.js +172 -0
  240. package/dist/src/routes/health.js.map +1 -0
  241. package/dist/src/routes/incidents.d.ts +7 -0
  242. package/dist/src/routes/incidents.d.ts.map +1 -0
  243. package/dist/src/routes/incidents.js +117 -0
  244. package/dist/src/routes/incidents.js.map +1 -0
  245. package/dist/src/routes/projects.d.ts +7 -0
  246. package/dist/src/routes/projects.d.ts.map +1 -0
  247. package/dist/src/routes/projects.js +398 -0
  248. package/dist/src/routes/projects.js.map +1 -0
  249. package/dist/src/routes/runners.d.ts +7 -0
  250. package/dist/src/routes/runners.d.ts.map +1 -0
  251. package/dist/src/routes/runners.js +242 -0
  252. package/dist/src/routes/runners.js.map +1 -0
  253. package/dist/src/routes/tasks.d.ts +7 -0
  254. package/dist/src/routes/tasks.d.ts.map +1 -0
  255. package/dist/src/routes/tasks.js +1007 -0
  256. package/dist/src/routes/tasks.js.map +1 -0
  257. package/dist/src/runners/activity-log.d.ts +65 -0
  258. package/dist/src/runners/activity-log.d.ts.map +1 -0
  259. package/dist/src/runners/activity-log.js +140 -0
  260. package/dist/src/runners/activity-log.js.map +1 -0
  261. package/dist/src/runners/cron.d.ts +30 -0
  262. package/dist/src/runners/cron.d.ts.map +1 -0
  263. package/dist/src/runners/cron.js +333 -0
  264. package/dist/src/runners/cron.js.map +1 -0
  265. package/dist/src/runners/daemon.d.ts +71 -0
  266. package/dist/src/runners/daemon.d.ts.map +1 -0
  267. package/dist/src/runners/daemon.js +233 -0
  268. package/dist/src/runners/daemon.js.map +1 -0
  269. package/dist/src/runners/global-db.d.ts +31 -0
  270. package/dist/src/runners/global-db.d.ts.map +1 -0
  271. package/dist/src/runners/global-db.js +220 -0
  272. package/dist/src/runners/global-db.js.map +1 -0
  273. package/dist/src/runners/hang-detector.d.ts +38 -0
  274. package/dist/src/runners/hang-detector.d.ts.map +1 -0
  275. package/dist/src/runners/hang-detector.js +130 -0
  276. package/dist/src/runners/hang-detector.js.map +1 -0
  277. package/dist/src/runners/heartbeat.d.ts +39 -0
  278. package/dist/src/runners/heartbeat.d.ts.map +1 -0
  279. package/dist/src/runners/heartbeat.js +71 -0
  280. package/dist/src/runners/heartbeat.js.map +1 -0
  281. package/dist/src/runners/lock.d.ts +47 -0
  282. package/dist/src/runners/lock.d.ts.map +1 -0
  283. package/dist/src/runners/lock.js +140 -0
  284. package/dist/src/runners/lock.js.map +1 -0
  285. package/dist/src/runners/orchestrator-loop.d.ts +20 -0
  286. package/dist/src/runners/orchestrator-loop.d.ts.map +1 -0
  287. package/dist/src/runners/orchestrator-loop.js +208 -0
  288. package/dist/src/runners/orchestrator-loop.js.map +1 -0
  289. package/dist/src/runners/projects.d.ts +96 -0
  290. package/dist/src/runners/projects.d.ts.map +1 -0
  291. package/dist/src/runners/projects.js +243 -0
  292. package/dist/src/runners/projects.js.map +1 -0
  293. package/dist/src/runners/wakeup.d.ts +37 -0
  294. package/dist/src/runners/wakeup.d.ts.map +1 -0
  295. package/dist/src/runners/wakeup.js +355 -0
  296. package/dist/src/runners/wakeup.js.map +1 -0
  297. package/dist/src/utils/validation.d.ts +22 -0
  298. package/dist/src/utils/validation.d.ts.map +1 -0
  299. package/dist/src/utils/validation.js +50 -0
  300. package/dist/src/utils/validation.js.map +1 -0
  301. package/dist/utils/sqlite.d.ts +17 -0
  302. package/dist/utils/sqlite.d.ts.map +1 -0
  303. package/dist/utils/sqlite.js +27 -0
  304. package/dist/utils/sqlite.js.map +1 -0
  305. package/dist/utils/storage-cache.d.ts +33 -0
  306. package/dist/utils/storage-cache.d.ts.map +1 -0
  307. package/dist/utils/storage-cache.js +81 -0
  308. package/dist/utils/storage-cache.js.map +1 -0
  309. package/dist/utils/validation.d.ts +22 -0
  310. package/dist/utils/validation.d.ts.map +1 -0
  311. package/dist/utils/validation.js +51 -0
  312. package/dist/utils/validation.js.map +1 -0
  313. package/package.json +39 -0
  314. package/src/index.ts +199 -0
  315. package/src/routes/activity.ts +302 -0
  316. package/src/routes/config.ts +723 -0
  317. package/src/routes/credit-alerts.ts +73 -0
  318. package/src/routes/health.ts +219 -0
  319. package/src/routes/incidents.ts +131 -0
  320. package/src/routes/projects.ts +854 -0
  321. package/src/routes/runners.ts +357 -0
  322. package/src/routes/skills.ts +127 -0
  323. package/src/routes/storage.ts +108 -0
  324. package/src/routes/tasks.ts +1372 -0
  325. package/src/utils/sqlite.ts +36 -0
  326. package/src/utils/storage-cache.ts +107 -0
  327. package/src/utils/validation.ts +61 -0
  328. package/tsconfig.json +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../../src/providers/openai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Provider Registry
3
+ * Manages registration and discovery of AI providers
4
+ */
5
+ import type { IAIProvider } from './interface.js';
6
+ /**
7
+ * Provider availability status
8
+ */
9
+ export interface ProviderStatus {
10
+ /** Provider name */
11
+ name: string;
12
+ /** Human-readable display name */
13
+ displayName: string;
14
+ /** Whether the provider is available */
15
+ available: boolean;
16
+ /** Path to CLI if available */
17
+ cliPath?: string;
18
+ /** Available models */
19
+ models: string[];
20
+ }
21
+ /**
22
+ * Provider Registry
23
+ * Central registry for all AI providers
24
+ */
25
+ export declare class ProviderRegistry {
26
+ private providers;
27
+ /**
28
+ * Register a provider
29
+ */
30
+ register(provider: IAIProvider): void;
31
+ /**
32
+ * Unregister a provider
33
+ */
34
+ unregister(name: string): boolean;
35
+ /**
36
+ * Get a provider by name
37
+ * @throws Error if provider not found
38
+ */
39
+ get(name: string): IAIProvider;
40
+ /**
41
+ * Try to get a provider by name
42
+ * Returns undefined if not found
43
+ */
44
+ tryGet(name: string): IAIProvider | undefined;
45
+ /**
46
+ * Check if a provider is registered
47
+ */
48
+ has(name: string): boolean;
49
+ /**
50
+ * Get all registered provider names
51
+ */
52
+ getNames(): string[];
53
+ /**
54
+ * Get all registered providers
55
+ */
56
+ getAll(): IAIProvider[];
57
+ /**
58
+ * Get status of all providers
59
+ * Checks availability of each provider
60
+ */
61
+ getStatus(): Promise<ProviderStatus[]>;
62
+ /**
63
+ * Get only available providers
64
+ */
65
+ getAvailable(): Promise<IAIProvider[]>;
66
+ /**
67
+ * Detect and return status of all providers
68
+ * Useful for setup wizards
69
+ */
70
+ detect(): Promise<ProviderStatus[]>;
71
+ /**
72
+ * Validate that a provider and model combination is valid
73
+ */
74
+ validateProviderModel(providerName: string, model: string): void;
75
+ /**
76
+ * Get the default provider for a role
77
+ * Returns the first available provider that has a default model for the role
78
+ */
79
+ getDefaultProvider(role: 'orchestrator' | 'coder' | 'reviewer'): Promise<IAIProvider | undefined>;
80
+ }
81
+ /**
82
+ * Create a registry with default providers registered
83
+ */
84
+ export declare function createDefaultRegistry(): ProviderRegistry;
85
+ /**
86
+ * Get the global provider registry
87
+ * Creates a default registry if none exists
88
+ */
89
+ export declare function getProviderRegistry(): ProviderRegistry;
90
+ /**
91
+ * Set the global provider registry
92
+ * Useful for testing
93
+ */
94
+ export declare function setProviderRegistry(registry: ProviderRegistry): void;
95
+ /**
96
+ * Reset the global provider registry
97
+ * Useful for testing
98
+ */
99
+ export declare function resetProviderRegistry(): void;
100
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uBAAuB;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAuC;IAExD;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAOrC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAW9B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAI7C;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,QAAQ,IAAI,MAAM,EAAE;IAIpB;;OAEG;IACH,MAAM,IAAI,WAAW,EAAE;IAIvB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB5C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAY5C;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIzC;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYhE;;;OAGG;IACG,kBAAkB,CACtB,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,UAAU,GAC1C,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAYpC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,CAUxD;AAOD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAEpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Provider Registry
3
+ * Manages registration and discovery of AI providers
4
+ */
5
+ import { ClaudeProvider } from './claude.js';
6
+ import { CodexProvider } from './codex.js';
7
+ import { GeminiProvider } from './gemini.js';
8
+ import { OpenAIProvider } from './openai.js';
9
+ /**
10
+ * Provider Registry
11
+ * Central registry for all AI providers
12
+ */
13
+ export class ProviderRegistry {
14
+ providers = new Map();
15
+ /**
16
+ * Register a provider
17
+ */
18
+ register(provider) {
19
+ if (this.providers.has(provider.name)) {
20
+ throw new Error(`Provider '${provider.name}' is already registered`);
21
+ }
22
+ this.providers.set(provider.name, provider);
23
+ }
24
+ /**
25
+ * Unregister a provider
26
+ */
27
+ unregister(name) {
28
+ return this.providers.delete(name);
29
+ }
30
+ /**
31
+ * Get a provider by name
32
+ * @throws Error if provider not found
33
+ */
34
+ get(name) {
35
+ const provider = this.providers.get(name);
36
+ if (!provider) {
37
+ const available = Array.from(this.providers.keys()).join(', ');
38
+ throw new Error(`Provider '${name}' not found. Available providers: ${available || 'none'}`);
39
+ }
40
+ return provider;
41
+ }
42
+ /**
43
+ * Try to get a provider by name
44
+ * Returns undefined if not found
45
+ */
46
+ tryGet(name) {
47
+ return this.providers.get(name);
48
+ }
49
+ /**
50
+ * Check if a provider is registered
51
+ */
52
+ has(name) {
53
+ return this.providers.has(name);
54
+ }
55
+ /**
56
+ * Get all registered provider names
57
+ */
58
+ getNames() {
59
+ return Array.from(this.providers.keys());
60
+ }
61
+ /**
62
+ * Get all registered providers
63
+ */
64
+ getAll() {
65
+ return Array.from(this.providers.values());
66
+ }
67
+ /**
68
+ * Get status of all providers
69
+ * Checks availability of each provider
70
+ */
71
+ async getStatus() {
72
+ const statuses = [];
73
+ for (const provider of this.providers.values()) {
74
+ const available = await provider.isAvailable();
75
+ statuses.push({
76
+ name: provider.name,
77
+ displayName: provider.displayName,
78
+ available,
79
+ cliPath: provider.getCliPath(),
80
+ models: provider.listModels(),
81
+ });
82
+ }
83
+ return statuses;
84
+ }
85
+ /**
86
+ * Get only available providers
87
+ */
88
+ async getAvailable() {
89
+ const available = [];
90
+ for (const provider of this.providers.values()) {
91
+ if (await provider.isAvailable()) {
92
+ available.push(provider);
93
+ }
94
+ }
95
+ return available;
96
+ }
97
+ /**
98
+ * Detect and return status of all providers
99
+ * Useful for setup wizards
100
+ */
101
+ async detect() {
102
+ return this.getStatus();
103
+ }
104
+ /**
105
+ * Validate that a provider and model combination is valid
106
+ */
107
+ validateProviderModel(providerName, model) {
108
+ const provider = this.get(providerName);
109
+ const models = provider.listModels();
110
+ if (!models.includes(model)) {
111
+ throw new Error(`Model '${model}' not available for provider '${providerName}'. ` +
112
+ `Available models: ${models.join(', ')}`);
113
+ }
114
+ }
115
+ /**
116
+ * Get the default provider for a role
117
+ * Returns the first available provider that has a default model for the role
118
+ */
119
+ async getDefaultProvider(role) {
120
+ const available = await this.getAvailable();
121
+ for (const provider of available) {
122
+ const defaultModel = provider.getDefaultModel(role);
123
+ if (defaultModel) {
124
+ return provider;
125
+ }
126
+ }
127
+ return available[0]; // Fall back to first available
128
+ }
129
+ }
130
+ /**
131
+ * Create a registry with default providers registered
132
+ */
133
+ export function createDefaultRegistry() {
134
+ const registry = new ProviderRegistry();
135
+ // Register built-in providers
136
+ registry.register(new ClaudeProvider());
137
+ registry.register(new CodexProvider());
138
+ registry.register(new GeminiProvider());
139
+ registry.register(new OpenAIProvider());
140
+ return registry;
141
+ }
142
+ /**
143
+ * Global singleton registry instance
144
+ */
145
+ let globalRegistry = null;
146
+ /**
147
+ * Get the global provider registry
148
+ * Creates a default registry if none exists
149
+ */
150
+ export function getProviderRegistry() {
151
+ if (!globalRegistry) {
152
+ globalRegistry = createDefaultRegistry();
153
+ }
154
+ return globalRegistry;
155
+ }
156
+ /**
157
+ * Set the global provider registry
158
+ * Useful for testing
159
+ */
160
+ export function setProviderRegistry(registry) {
161
+ globalRegistry = registry;
162
+ }
163
+ /**
164
+ * Reset the global provider registry
165
+ * Useful for testing
166
+ */
167
+ export function resetProviderRegistry() {
168
+ globalRegistry = null;
169
+ }
170
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/providers/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Activity API routes
3
+ * Exposes activity log statistics for the dashboard
4
+ */
5
+ declare const router: import("express-serve-static-core").Router;
6
+ export default router;
7
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/routes/activity.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuCH,QAAA,MAAM,MAAM,4CAAW,CAAC;AAmQxB,eAAe,MAAM,CAAC"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Activity API routes
3
+ * Exposes activity log statistics for the dashboard
4
+ */
5
+ import { Router } from 'express';
6
+ import { execSync } from 'node:child_process';
7
+ import { getActivityStatsByProject, getActivityFiltered, } from '../../../src/runners/activity-log.js';
8
+ /**
9
+ * Get GitHub URL from git remote for a project
10
+ */
11
+ function getGitHubUrl(projectPath) {
12
+ try {
13
+ const remoteUrl = execSync('git remote get-url origin', {
14
+ cwd: projectPath,
15
+ encoding: 'utf-8',
16
+ }).trim();
17
+ // Convert SSH or HTTPS URL to web URL
18
+ if (remoteUrl.startsWith('git@github.com:')) {
19
+ const path = remoteUrl.replace('git@github.com:', '').replace(/\.git$/, '');
20
+ return `https://github.com/${path}`;
21
+ }
22
+ else if (remoteUrl.includes('github.com')) {
23
+ return remoteUrl.replace(/\.git$/, '');
24
+ }
25
+ return null;
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ const router = Router();
32
+ /**
33
+ * GET /api/activity
34
+ * Get activity statistics for a time range
35
+ * Query params:
36
+ * - hours: number (default: 24) - hours to look back
37
+ * - project: string (optional) - filter by project path
38
+ */
39
+ router.get('/activity', (req, res) => {
40
+ try {
41
+ const hoursParam = req.query.hours;
42
+ const projectPath = req.query.project;
43
+ // Parse hours parameter (default: 24)
44
+ let hours = 24;
45
+ if (hoursParam !== undefined) {
46
+ const parsed = parseInt(hoursParam, 10);
47
+ if (isNaN(parsed) || parsed <= 0) {
48
+ res.status(400).json({
49
+ success: false,
50
+ error: 'Invalid hours parameter - must be a positive integer',
51
+ });
52
+ return;
53
+ }
54
+ hours = parsed;
55
+ }
56
+ // Get stats from the activity log
57
+ const stats = getActivityStatsByProject(hours);
58
+ // Filter by project if specified
59
+ const filteredStats = projectPath
60
+ ? stats.filter((s) => s.project_path === projectPath)
61
+ : stats;
62
+ // Calculate derived metrics for each project
63
+ const enrichedStats = filteredStats.map((s) => {
64
+ // Calculate hours between first and last activity for rate
65
+ let tasksPerHour = 0;
66
+ if (s.first_activity && s.last_activity && s.total > 0) {
67
+ const firstTime = new Date(s.first_activity).getTime();
68
+ const lastTime = new Date(s.last_activity).getTime();
69
+ const hoursDiff = Math.max((lastTime - firstTime) / (1000 * 60 * 60), 1);
70
+ tasksPerHour = Math.round((s.total / hoursDiff) * 100) / 100;
71
+ }
72
+ // Calculate success rate (completed / total)
73
+ const successRate = s.total > 0 ? Math.round((s.completed / s.total) * 1000) / 10 : 0;
74
+ return {
75
+ project_path: s.project_path,
76
+ project_name: s.project_name,
77
+ completed: s.completed,
78
+ failed: s.failed,
79
+ skipped: s.skipped,
80
+ partial: s.partial,
81
+ disputed: s.disputed,
82
+ total: s.total,
83
+ first_activity: s.first_activity,
84
+ last_activity: s.last_activity,
85
+ tasks_per_hour: tasksPerHour,
86
+ success_rate: successRate,
87
+ };
88
+ });
89
+ // If filtering by a single project, return just that project's stats
90
+ // Otherwise return all projects
91
+ if (projectPath) {
92
+ const projectStats = enrichedStats[0] || {
93
+ project_path: projectPath,
94
+ project_name: null,
95
+ completed: 0,
96
+ failed: 0,
97
+ skipped: 0,
98
+ partial: 0,
99
+ disputed: 0,
100
+ total: 0,
101
+ first_activity: null,
102
+ last_activity: null,
103
+ tasks_per_hour: 0,
104
+ success_rate: 0,
105
+ };
106
+ res.json({
107
+ success: true,
108
+ hours,
109
+ stats: projectStats,
110
+ });
111
+ }
112
+ else {
113
+ // Aggregate all projects for global stats
114
+ const totals = enrichedStats.reduce((acc, s) => ({
115
+ completed: acc.completed + s.completed,
116
+ failed: acc.failed + s.failed,
117
+ skipped: acc.skipped + s.skipped,
118
+ partial: acc.partial + s.partial,
119
+ disputed: acc.disputed + s.disputed,
120
+ total: acc.total + s.total,
121
+ }), { completed: 0, failed: 0, skipped: 0, partial: 0, disputed: 0, total: 0 });
122
+ // Find the earliest first_activity and latest last_activity across all projects
123
+ let globalFirstActivity = null;
124
+ let globalLastActivity = null;
125
+ for (const s of enrichedStats) {
126
+ if (s.first_activity) {
127
+ if (!globalFirstActivity || s.first_activity < globalFirstActivity) {
128
+ globalFirstActivity = s.first_activity;
129
+ }
130
+ }
131
+ if (s.last_activity) {
132
+ if (!globalLastActivity || s.last_activity > globalLastActivity) {
133
+ globalLastActivity = s.last_activity;
134
+ }
135
+ }
136
+ }
137
+ // Calculate global metrics based on actual activity timespan
138
+ const globalSuccessRate = totals.total > 0
139
+ ? Math.round((totals.completed / totals.total) * 1000) / 10
140
+ : 0;
141
+ // Calculate tasks per hour based on actual time between first and last activity
142
+ let globalTasksPerHour = 0;
143
+ if (globalFirstActivity && globalLastActivity && totals.total > 0) {
144
+ const firstTime = new Date(globalFirstActivity).getTime();
145
+ const lastTime = new Date(globalLastActivity).getTime();
146
+ const hoursDiff = Math.max((lastTime - firstTime) / (1000 * 60 * 60), 1);
147
+ globalTasksPerHour = Math.round((totals.total / hoursDiff) * 100) / 100;
148
+ }
149
+ res.json({
150
+ success: true,
151
+ hours,
152
+ stats: {
153
+ ...totals,
154
+ first_activity: globalFirstActivity,
155
+ last_activity: globalLastActivity,
156
+ tasks_per_hour: globalTasksPerHour,
157
+ success_rate: globalSuccessRate,
158
+ },
159
+ by_project: enrichedStats,
160
+ });
161
+ }
162
+ }
163
+ catch (error) {
164
+ console.error('Error getting activity stats:', error);
165
+ res.status(500).json({
166
+ success: false,
167
+ error: 'Failed to get activity stats',
168
+ message: error instanceof Error ? error.message : 'Unknown error',
169
+ });
170
+ }
171
+ });
172
+ /**
173
+ * GET /api/activity/list
174
+ * Get activity log entries with optional filters
175
+ * Query params:
176
+ * - hours: number (default: 24) - hours to look back
177
+ * - status: string (optional) - filter by status (completed, failed, skipped, partial, disputed)
178
+ * - project: string (optional) - filter by project path
179
+ * - limit: number (optional) - max entries to return
180
+ */
181
+ router.get('/activity/list', (req, res) => {
182
+ try {
183
+ const hoursParam = req.query.hours;
184
+ const statusParam = req.query.status;
185
+ const projectPath = req.query.project;
186
+ const limitParam = req.query.limit;
187
+ // Parse hours parameter (default: 24)
188
+ let hours = 24;
189
+ if (hoursParam !== undefined) {
190
+ const parsed = parseInt(hoursParam, 10);
191
+ if (isNaN(parsed) || parsed <= 0) {
192
+ res.status(400).json({
193
+ success: false,
194
+ error: 'Invalid hours parameter - must be a positive integer',
195
+ });
196
+ return;
197
+ }
198
+ hours = parsed;
199
+ }
200
+ // Validate status if provided
201
+ const validStatuses = ['completed', 'failed', 'skipped', 'partial', 'disputed'];
202
+ if (statusParam && !validStatuses.includes(statusParam)) {
203
+ res.status(400).json({
204
+ success: false,
205
+ error: `Invalid status - must be one of: ${validStatuses.join(', ')}`,
206
+ });
207
+ return;
208
+ }
209
+ // Parse limit
210
+ let limit;
211
+ if (limitParam !== undefined) {
212
+ const parsed = parseInt(limitParam, 10);
213
+ if (!isNaN(parsed) && parsed > 0) {
214
+ limit = parsed;
215
+ }
216
+ }
217
+ const rawEntries = getActivityFiltered({
218
+ hoursAgo: hours,
219
+ status: statusParam,
220
+ projectPath,
221
+ limit,
222
+ });
223
+ // Cache GitHub URLs by project path to avoid repeated git calls
224
+ const githubUrlCache = new Map();
225
+ const entries = rawEntries.map((entry) => {
226
+ if (!githubUrlCache.has(entry.project_path)) {
227
+ githubUrlCache.set(entry.project_path, getGitHubUrl(entry.project_path));
228
+ }
229
+ return {
230
+ ...entry,
231
+ github_url: githubUrlCache.get(entry.project_path) ?? null,
232
+ };
233
+ });
234
+ res.json({
235
+ success: true,
236
+ hours,
237
+ status: statusParam || 'all',
238
+ entries,
239
+ count: entries.length,
240
+ });
241
+ }
242
+ catch (error) {
243
+ console.error('Error getting activity list:', error);
244
+ res.status(500).json({
245
+ success: false,
246
+ error: 'Failed to get activity list',
247
+ message: error instanceof Error ? error.message : 'Unknown error',
248
+ });
249
+ }
250
+ });
251
+ export default router;
252
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/routes/activity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Configuration API routes
3
+ * Provides schema and config value endpoints
4
+ */
5
+ declare const router: import("express-serve-static-core").Router;
6
+ export default router;
7
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/routes/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,QAAA,MAAM,MAAM,4CAAW,CAAC;AA8iBxB,eAAe,MAAM,CAAC"}