steroids-cli 0.4.47

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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +640 -0
  3. package/dist/cli/colors.d.ts +110 -0
  4. package/dist/cli/colors.d.ts.map +1 -0
  5. package/dist/cli/colors.js +228 -0
  6. package/dist/cli/colors.js.map +1 -0
  7. package/dist/cli/env.d.ts +159 -0
  8. package/dist/cli/env.d.ts.map +1 -0
  9. package/dist/cli/env.js +227 -0
  10. package/dist/cli/env.js.map +1 -0
  11. package/dist/cli/errors.d.ts +166 -0
  12. package/dist/cli/errors.d.ts.map +1 -0
  13. package/dist/cli/errors.js +244 -0
  14. package/dist/cli/errors.js.map +1 -0
  15. package/dist/cli/flags.d.ts +75 -0
  16. package/dist/cli/flags.d.ts.map +1 -0
  17. package/dist/cli/flags.js +232 -0
  18. package/dist/cli/flags.js.map +1 -0
  19. package/dist/cli/help.d.ts +97 -0
  20. package/dist/cli/help.d.ts.map +1 -0
  21. package/dist/cli/help.js +275 -0
  22. package/dist/cli/help.js.map +1 -0
  23. package/dist/cli/index.d.ts +13 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +29 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/interactive.d.ts +58 -0
  28. package/dist/cli/interactive.d.ts.map +1 -0
  29. package/dist/cli/interactive.js +127 -0
  30. package/dist/cli/interactive.js.map +1 -0
  31. package/dist/cli/output.d.ts +116 -0
  32. package/dist/cli/output.d.ts.map +1 -0
  33. package/dist/cli/output.js +178 -0
  34. package/dist/cli/output.js.map +1 -0
  35. package/dist/commands/about.d.ts +7 -0
  36. package/dist/commands/about.d.ts.map +1 -0
  37. package/dist/commands/about.js +259 -0
  38. package/dist/commands/about.js.map +1 -0
  39. package/dist/commands/ai.d.ts +6 -0
  40. package/dist/commands/ai.d.ts.map +1 -0
  41. package/dist/commands/ai.js +382 -0
  42. package/dist/commands/ai.js.map +1 -0
  43. package/dist/commands/backup.d.ts +3 -0
  44. package/dist/commands/backup.d.ts.map +1 -0
  45. package/dist/commands/backup.js +528 -0
  46. package/dist/commands/backup.js.map +1 -0
  47. package/dist/commands/completion.d.ts +3 -0
  48. package/dist/commands/completion.d.ts.map +1 -0
  49. package/dist/commands/completion.js +405 -0
  50. package/dist/commands/completion.js.map +1 -0
  51. package/dist/commands/config.d.ts +3 -0
  52. package/dist/commands/config.d.ts.map +1 -0
  53. package/dist/commands/config.js +665 -0
  54. package/dist/commands/config.js.map +1 -0
  55. package/dist/commands/disputes.d.ts +3 -0
  56. package/dist/commands/disputes.d.ts.map +1 -0
  57. package/dist/commands/disputes.js +499 -0
  58. package/dist/commands/disputes.js.map +1 -0
  59. package/dist/commands/gc.d.ts +3 -0
  60. package/dist/commands/gc.d.ts.map +1 -0
  61. package/dist/commands/gc.js +300 -0
  62. package/dist/commands/gc.js.map +1 -0
  63. package/dist/commands/git.d.ts +3 -0
  64. package/dist/commands/git.d.ts.map +1 -0
  65. package/dist/commands/git.js +458 -0
  66. package/dist/commands/git.js.map +1 -0
  67. package/dist/commands/health.d.ts +3 -0
  68. package/dist/commands/health.d.ts.map +1 -0
  69. package/dist/commands/health.js +604 -0
  70. package/dist/commands/health.js.map +1 -0
  71. package/dist/commands/hooks.d.ts +6 -0
  72. package/dist/commands/hooks.d.ts.map +1 -0
  73. package/dist/commands/hooks.js +529 -0
  74. package/dist/commands/hooks.js.map +1 -0
  75. package/dist/commands/init.d.ts +6 -0
  76. package/dist/commands/init.d.ts.map +1 -0
  77. package/dist/commands/init.js +200 -0
  78. package/dist/commands/init.js.map +1 -0
  79. package/dist/commands/llm.d.ts +7 -0
  80. package/dist/commands/llm.d.ts.map +1 -0
  81. package/dist/commands/llm.js +285 -0
  82. package/dist/commands/llm.js.map +1 -0
  83. package/dist/commands/locks.d.ts +3 -0
  84. package/dist/commands/locks.d.ts.map +1 -0
  85. package/dist/commands/locks.js +431 -0
  86. package/dist/commands/locks.js.map +1 -0
  87. package/dist/commands/logs.d.ts +3 -0
  88. package/dist/commands/logs.d.ts.map +1 -0
  89. package/dist/commands/logs.js +487 -0
  90. package/dist/commands/logs.js.map +1 -0
  91. package/dist/commands/loop-phases.d.ts +11 -0
  92. package/dist/commands/loop-phases.d.ts.map +1 -0
  93. package/dist/commands/loop-phases.js +204 -0
  94. package/dist/commands/loop-phases.js.map +1 -0
  95. package/dist/commands/loop.d.ts +3 -0
  96. package/dist/commands/loop.d.ts.map +1 -0
  97. package/dist/commands/loop.js +396 -0
  98. package/dist/commands/loop.js.map +1 -0
  99. package/dist/commands/projects.d.ts +6 -0
  100. package/dist/commands/projects.d.ts.map +1 -0
  101. package/dist/commands/projects.js +362 -0
  102. package/dist/commands/projects.js.map +1 -0
  103. package/dist/commands/purge.d.ts +3 -0
  104. package/dist/commands/purge.d.ts.map +1 -0
  105. package/dist/commands/purge.js +516 -0
  106. package/dist/commands/purge.js.map +1 -0
  107. package/dist/commands/runners.d.ts +3 -0
  108. package/dist/commands/runners.d.ts.map +1 -0
  109. package/dist/commands/runners.js +1076 -0
  110. package/dist/commands/runners.js.map +1 -0
  111. package/dist/commands/scan.d.ts +3 -0
  112. package/dist/commands/scan.d.ts.map +1 -0
  113. package/dist/commands/scan.js +291 -0
  114. package/dist/commands/scan.js.map +1 -0
  115. package/dist/commands/sections-commands.d.ts +9 -0
  116. package/dist/commands/sections-commands.d.ts.map +1 -0
  117. package/dist/commands/sections-commands.js +282 -0
  118. package/dist/commands/sections-commands.js.map +1 -0
  119. package/dist/commands/sections-graph.d.ts +25 -0
  120. package/dist/commands/sections-graph.d.ts.map +1 -0
  121. package/dist/commands/sections-graph.js +180 -0
  122. package/dist/commands/sections-graph.js.map +1 -0
  123. package/dist/commands/sections.d.ts +3 -0
  124. package/dist/commands/sections.d.ts.map +1 -0
  125. package/dist/commands/sections.js +376 -0
  126. package/dist/commands/sections.js.map +1 -0
  127. package/dist/commands/stats.d.ts +6 -0
  128. package/dist/commands/stats.d.ts.map +1 -0
  129. package/dist/commands/stats.js +324 -0
  130. package/dist/commands/stats.js.map +1 -0
  131. package/dist/commands/tasks.d.ts +3 -0
  132. package/dist/commands/tasks.d.ts.map +1 -0
  133. package/dist/commands/tasks.js +1115 -0
  134. package/dist/commands/tasks.js.map +1 -0
  135. package/dist/commands/web.d.ts +7 -0
  136. package/dist/commands/web.d.ts.map +1 -0
  137. package/dist/commands/web.js +204 -0
  138. package/dist/commands/web.js.map +1 -0
  139. package/dist/config/ai-setup.d.ts +27 -0
  140. package/dist/config/ai-setup.d.ts.map +1 -0
  141. package/dist/config/ai-setup.js +432 -0
  142. package/dist/config/ai-setup.js.map +1 -0
  143. package/dist/config/browser.d.ts +9 -0
  144. package/dist/config/browser.d.ts.map +1 -0
  145. package/dist/config/browser.js +200 -0
  146. package/dist/config/browser.js.map +1 -0
  147. package/dist/config/json-schema.d.ts +28 -0
  148. package/dist/config/json-schema.d.ts.map +1 -0
  149. package/dist/config/json-schema.js +84 -0
  150. package/dist/config/json-schema.js.map +1 -0
  151. package/dist/config/loader.d.ts +152 -0
  152. package/dist/config/loader.d.ts.map +1 -0
  153. package/dist/config/loader.js +270 -0
  154. package/dist/config/loader.js.map +1 -0
  155. package/dist/config/schema.d.ts +34 -0
  156. package/dist/config/schema.d.ts.map +1 -0
  157. package/dist/config/schema.js +437 -0
  158. package/dist/config/schema.js.map +1 -0
  159. package/dist/config/validator.d.ts +32 -0
  160. package/dist/config/validator.d.ts.map +1 -0
  161. package/dist/config/validator.js +187 -0
  162. package/dist/config/validator.js.map +1 -0
  163. package/dist/database/connection.d.ts +35 -0
  164. package/dist/database/connection.d.ts.map +1 -0
  165. package/dist/database/connection.js +208 -0
  166. package/dist/database/connection.js.map +1 -0
  167. package/dist/database/queries.d.ts +218 -0
  168. package/dist/database/queries.d.ts.map +1 -0
  169. package/dist/database/queries.js +613 -0
  170. package/dist/database/queries.js.map +1 -0
  171. package/dist/database/schema.d.ts +8 -0
  172. package/dist/database/schema.d.ts.map +1 -0
  173. package/dist/database/schema.js +160 -0
  174. package/dist/database/schema.js.map +1 -0
  175. package/dist/disputes/behavior.d.ts +106 -0
  176. package/dist/disputes/behavior.d.ts.map +1 -0
  177. package/dist/disputes/behavior.js +150 -0
  178. package/dist/disputes/behavior.js.map +1 -0
  179. package/dist/disputes/create.d.ts +59 -0
  180. package/dist/disputes/create.d.ts.map +1 -0
  181. package/dist/disputes/create.js +222 -0
  182. package/dist/disputes/create.js.map +1 -0
  183. package/dist/disputes/index.d.ts +21 -0
  184. package/dist/disputes/index.d.ts.map +1 -0
  185. package/dist/disputes/index.js +76 -0
  186. package/dist/disputes/index.js.map +1 -0
  187. package/dist/disputes/markdown.d.ts +41 -0
  188. package/dist/disputes/markdown.d.ts.map +1 -0
  189. package/dist/disputes/markdown.js +261 -0
  190. package/dist/disputes/markdown.js.map +1 -0
  191. package/dist/disputes/queries.d.ts +83 -0
  192. package/dist/disputes/queries.d.ts.map +1 -0
  193. package/dist/disputes/queries.js +180 -0
  194. package/dist/disputes/queries.js.map +1 -0
  195. package/dist/disputes/resolve.d.ts +57 -0
  196. package/dist/disputes/resolve.d.ts.map +1 -0
  197. package/dist/disputes/resolve.js +171 -0
  198. package/dist/disputes/resolve.js.map +1 -0
  199. package/dist/disputes/stale.d.ts +98 -0
  200. package/dist/disputes/stale.d.ts.map +1 -0
  201. package/dist/disputes/stale.js +205 -0
  202. package/dist/disputes/stale.js.map +1 -0
  203. package/dist/disputes/types.d.ts +92 -0
  204. package/dist/disputes/types.d.ts.map +1 -0
  205. package/dist/disputes/types.js +100 -0
  206. package/dist/disputes/types.js.map +1 -0
  207. package/dist/git/push.d.ts +26 -0
  208. package/dist/git/push.d.ts.map +1 -0
  209. package/dist/git/push.js +97 -0
  210. package/dist/git/push.js.map +1 -0
  211. package/dist/git/status.d.ts +61 -0
  212. package/dist/git/status.d.ts.map +1 -0
  213. package/dist/git/status.js +251 -0
  214. package/dist/git/status.js.map +1 -0
  215. package/dist/hooks/events.d.ts +72 -0
  216. package/dist/hooks/events.d.ts.map +1 -0
  217. package/dist/hooks/events.js +120 -0
  218. package/dist/hooks/events.js.map +1 -0
  219. package/dist/hooks/index.d.ts +19 -0
  220. package/dist/hooks/index.d.ts.map +1 -0
  221. package/dist/hooks/index.js +48 -0
  222. package/dist/hooks/index.js.map +1 -0
  223. package/dist/hooks/integration.d.ts +69 -0
  224. package/dist/hooks/integration.d.ts.map +1 -0
  225. package/dist/hooks/integration.js +179 -0
  226. package/dist/hooks/integration.js.map +1 -0
  227. package/dist/hooks/merge.d.ts +115 -0
  228. package/dist/hooks/merge.d.ts.map +1 -0
  229. package/dist/hooks/merge.js +161 -0
  230. package/dist/hooks/merge.js.map +1 -0
  231. package/dist/hooks/orchestrator.d.ts +115 -0
  232. package/dist/hooks/orchestrator.d.ts.map +1 -0
  233. package/dist/hooks/orchestrator.js +226 -0
  234. package/dist/hooks/orchestrator.js.map +1 -0
  235. package/dist/hooks/payload.d.ts +294 -0
  236. package/dist/hooks/payload.d.ts.map +1 -0
  237. package/dist/hooks/payload.js +267 -0
  238. package/dist/hooks/payload.js.map +1 -0
  239. package/dist/hooks/script-runner.d.ts +63 -0
  240. package/dist/hooks/script-runner.d.ts.map +1 -0
  241. package/dist/hooks/script-runner.js +221 -0
  242. package/dist/hooks/script-runner.js.map +1 -0
  243. package/dist/hooks/templates.d.ts +104 -0
  244. package/dist/hooks/templates.d.ts.map +1 -0
  245. package/dist/hooks/templates.js +327 -0
  246. package/dist/hooks/templates.js.map +1 -0
  247. package/dist/hooks/webhook-runner.d.ts +69 -0
  248. package/dist/hooks/webhook-runner.d.ts.map +1 -0
  249. package/dist/hooks/webhook-runner.js +208 -0
  250. package/dist/hooks/webhook-runner.js.map +1 -0
  251. package/dist/index.d.ts +7 -0
  252. package/dist/index.d.ts.map +1 -0
  253. package/dist/index.js +281 -0
  254. package/dist/index.js.map +1 -0
  255. package/dist/locking/cleanup.d.ts +70 -0
  256. package/dist/locking/cleanup.d.ts.map +1 -0
  257. package/dist/locking/cleanup.js +157 -0
  258. package/dist/locking/cleanup.js.map +1 -0
  259. package/dist/locking/queries.d.ts +116 -0
  260. package/dist/locking/queries.d.ts.map +1 -0
  261. package/dist/locking/queries.js +255 -0
  262. package/dist/locking/queries.js.map +1 -0
  263. package/dist/locking/section-lock.d.ts +74 -0
  264. package/dist/locking/section-lock.d.ts.map +1 -0
  265. package/dist/locking/section-lock.js +207 -0
  266. package/dist/locking/section-lock.js.map +1 -0
  267. package/dist/locking/task-lock.d.ts +92 -0
  268. package/dist/locking/task-lock.d.ts.map +1 -0
  269. package/dist/locking/task-lock.js +246 -0
  270. package/dist/locking/task-lock.js.map +1 -0
  271. package/dist/migrations/index.d.ts +7 -0
  272. package/dist/migrations/index.d.ts.map +1 -0
  273. package/dist/migrations/index.js +37 -0
  274. package/dist/migrations/index.js.map +1 -0
  275. package/dist/migrations/manifest.d.ts +92 -0
  276. package/dist/migrations/manifest.d.ts.map +1 -0
  277. package/dist/migrations/manifest.js +270 -0
  278. package/dist/migrations/manifest.js.map +1 -0
  279. package/dist/migrations/runner.d.ts +84 -0
  280. package/dist/migrations/runner.d.ts.map +1 -0
  281. package/dist/migrations/runner.js +351 -0
  282. package/dist/migrations/runner.js.map +1 -0
  283. package/dist/orchestrator/coder.d.ts +32 -0
  284. package/dist/orchestrator/coder.d.ts.map +1 -0
  285. package/dist/orchestrator/coder.js +174 -0
  286. package/dist/orchestrator/coder.js.map +1 -0
  287. package/dist/orchestrator/coordinator.d.ts +28 -0
  288. package/dist/orchestrator/coordinator.d.ts.map +1 -0
  289. package/dist/orchestrator/coordinator.js +256 -0
  290. package/dist/orchestrator/coordinator.js.map +1 -0
  291. package/dist/orchestrator/reviewer.d.ts +35 -0
  292. package/dist/orchestrator/reviewer.d.ts.map +1 -0
  293. package/dist/orchestrator/reviewer.js +241 -0
  294. package/dist/orchestrator/reviewer.js.map +1 -0
  295. package/dist/orchestrator/task-selector.d.ts +102 -0
  296. package/dist/orchestrator/task-selector.d.ts.map +1 -0
  297. package/dist/orchestrator/task-selector.js +341 -0
  298. package/dist/orchestrator/task-selector.js.map +1 -0
  299. package/dist/prompts/coder.d.ts +36 -0
  300. package/dist/prompts/coder.d.ts.map +1 -0
  301. package/dist/prompts/coder.js +315 -0
  302. package/dist/prompts/coder.js.map +1 -0
  303. package/dist/prompts/prompt-helpers.d.ts +51 -0
  304. package/dist/prompts/prompt-helpers.d.ts.map +1 -0
  305. package/dist/prompts/prompt-helpers.js +312 -0
  306. package/dist/prompts/prompt-helpers.js.map +1 -0
  307. package/dist/prompts/reviewer.d.ts +40 -0
  308. package/dist/prompts/reviewer.d.ts.map +1 -0
  309. package/dist/prompts/reviewer.js +438 -0
  310. package/dist/prompts/reviewer.js.map +1 -0
  311. package/dist/providers/api-models.d.ts +65 -0
  312. package/dist/providers/api-models.d.ts.map +1 -0
  313. package/dist/providers/api-models.js +323 -0
  314. package/dist/providers/api-models.js.map +1 -0
  315. package/dist/providers/claude.d.ts +53 -0
  316. package/dist/providers/claude.d.ts.map +1 -0
  317. package/dist/providers/claude.js +229 -0
  318. package/dist/providers/claude.js.map +1 -0
  319. package/dist/providers/codex.d.ts +53 -0
  320. package/dist/providers/codex.d.ts.map +1 -0
  321. package/dist/providers/codex.js +214 -0
  322. package/dist/providers/codex.js.map +1 -0
  323. package/dist/providers/gemini.d.ts +58 -0
  324. package/dist/providers/gemini.d.ts.map +1 -0
  325. package/dist/providers/gemini.js +242 -0
  326. package/dist/providers/gemini.js.map +1 -0
  327. package/dist/providers/index.d.ts +13 -0
  328. package/dist/providers/index.d.ts.map +1 -0
  329. package/dist/providers/index.js +49 -0
  330. package/dist/providers/index.js.map +1 -0
  331. package/dist/providers/interface.d.ts +173 -0
  332. package/dist/providers/interface.d.ts.map +1 -0
  333. package/dist/providers/interface.js +96 -0
  334. package/dist/providers/interface.js.map +1 -0
  335. package/dist/providers/invocation-logger.d.ts +114 -0
  336. package/dist/providers/invocation-logger.d.ts.map +1 -0
  337. package/dist/providers/invocation-logger.js +298 -0
  338. package/dist/providers/invocation-logger.js.map +1 -0
  339. package/dist/providers/openai.d.ts +53 -0
  340. package/dist/providers/openai.d.ts.map +1 -0
  341. package/dist/providers/openai.js +232 -0
  342. package/dist/providers/openai.js.map +1 -0
  343. package/dist/providers/registry.d.ts +100 -0
  344. package/dist/providers/registry.d.ts.map +1 -0
  345. package/dist/providers/registry.js +178 -0
  346. package/dist/providers/registry.js.map +1 -0
  347. package/dist/runners/activity-log.d.ts +65 -0
  348. package/dist/runners/activity-log.d.ts.map +1 -0
  349. package/dist/runners/activity-log.js +148 -0
  350. package/dist/runners/activity-log.js.map +1 -0
  351. package/dist/runners/cron.d.ts +26 -0
  352. package/dist/runners/cron.d.ts.map +1 -0
  353. package/dist/runners/cron.js +176 -0
  354. package/dist/runners/cron.js.map +1 -0
  355. package/dist/runners/daemon.d.ts +71 -0
  356. package/dist/runners/daemon.d.ts.map +1 -0
  357. package/dist/runners/daemon.js +245 -0
  358. package/dist/runners/daemon.js.map +1 -0
  359. package/dist/runners/global-db.d.ts +31 -0
  360. package/dist/runners/global-db.d.ts.map +1 -0
  361. package/dist/runners/global-db.js +230 -0
  362. package/dist/runners/global-db.js.map +1 -0
  363. package/dist/runners/hang-detector.d.ts +38 -0
  364. package/dist/runners/hang-detector.d.ts.map +1 -0
  365. package/dist/runners/hang-detector.js +136 -0
  366. package/dist/runners/hang-detector.js.map +1 -0
  367. package/dist/runners/heartbeat.d.ts +39 -0
  368. package/dist/runners/heartbeat.d.ts.map +1 -0
  369. package/dist/runners/heartbeat.js +79 -0
  370. package/dist/runners/heartbeat.js.map +1 -0
  371. package/dist/runners/lock.d.ts +47 -0
  372. package/dist/runners/lock.d.ts.map +1 -0
  373. package/dist/runners/lock.js +150 -0
  374. package/dist/runners/lock.js.map +1 -0
  375. package/dist/runners/orchestrator-loop.d.ts +20 -0
  376. package/dist/runners/orchestrator-loop.d.ts.map +1 -0
  377. package/dist/runners/orchestrator-loop.js +285 -0
  378. package/dist/runners/orchestrator-loop.js.map +1 -0
  379. package/dist/runners/projects.d.ts +96 -0
  380. package/dist/runners/projects.d.ts.map +1 -0
  381. package/dist/runners/projects.js +255 -0
  382. package/dist/runners/projects.js.map +1 -0
  383. package/dist/runners/wakeup.d.ts +34 -0
  384. package/dist/runners/wakeup.d.ts.map +1 -0
  385. package/dist/runners/wakeup.js +291 -0
  386. package/dist/runners/wakeup.js.map +1 -0
  387. package/migrations/001_initial_schema.sql +106 -0
  388. package/migrations/002_add_commit_sha.sql +12 -0
  389. package/migrations/003_add_section_priority.sql +13 -0
  390. package/migrations/004_add_section_dependencies.sql +18 -0
  391. package/migrations/005_add_audit_actor_model.sql +10 -0
  392. package/migrations/006_add_task_invocations.sql +33 -0
  393. package/migrations/007_add_file_anchor.sql +14 -0
  394. package/migrations/manifest.json +62 -0
  395. package/package.json +49 -0
@@ -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,178 @@
1
+ "use strict";
2
+ /**
3
+ * Provider Registry
4
+ * Manages registration and discovery of AI providers
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ProviderRegistry = void 0;
8
+ exports.createDefaultRegistry = createDefaultRegistry;
9
+ exports.getProviderRegistry = getProviderRegistry;
10
+ exports.setProviderRegistry = setProviderRegistry;
11
+ exports.resetProviderRegistry = resetProviderRegistry;
12
+ const claude_js_1 = require("./claude.js");
13
+ const codex_js_1 = require("./codex.js");
14
+ const gemini_js_1 = require("./gemini.js");
15
+ const openai_js_1 = require("./openai.js");
16
+ /**
17
+ * Provider Registry
18
+ * Central registry for all AI providers
19
+ */
20
+ class ProviderRegistry {
21
+ providers = new Map();
22
+ /**
23
+ * Register a provider
24
+ */
25
+ register(provider) {
26
+ if (this.providers.has(provider.name)) {
27
+ throw new Error(`Provider '${provider.name}' is already registered`);
28
+ }
29
+ this.providers.set(provider.name, provider);
30
+ }
31
+ /**
32
+ * Unregister a provider
33
+ */
34
+ unregister(name) {
35
+ return this.providers.delete(name);
36
+ }
37
+ /**
38
+ * Get a provider by name
39
+ * @throws Error if provider not found
40
+ */
41
+ get(name) {
42
+ const provider = this.providers.get(name);
43
+ if (!provider) {
44
+ const available = Array.from(this.providers.keys()).join(', ');
45
+ throw new Error(`Provider '${name}' not found. Available providers: ${available || 'none'}`);
46
+ }
47
+ return provider;
48
+ }
49
+ /**
50
+ * Try to get a provider by name
51
+ * Returns undefined if not found
52
+ */
53
+ tryGet(name) {
54
+ return this.providers.get(name);
55
+ }
56
+ /**
57
+ * Check if a provider is registered
58
+ */
59
+ has(name) {
60
+ return this.providers.has(name);
61
+ }
62
+ /**
63
+ * Get all registered provider names
64
+ */
65
+ getNames() {
66
+ return Array.from(this.providers.keys());
67
+ }
68
+ /**
69
+ * Get all registered providers
70
+ */
71
+ getAll() {
72
+ return Array.from(this.providers.values());
73
+ }
74
+ /**
75
+ * Get status of all providers
76
+ * Checks availability of each provider
77
+ */
78
+ async getStatus() {
79
+ const statuses = [];
80
+ for (const provider of this.providers.values()) {
81
+ const available = await provider.isAvailable();
82
+ statuses.push({
83
+ name: provider.name,
84
+ displayName: provider.displayName,
85
+ available,
86
+ cliPath: provider.getCliPath(),
87
+ models: provider.listModels(),
88
+ });
89
+ }
90
+ return statuses;
91
+ }
92
+ /**
93
+ * Get only available providers
94
+ */
95
+ async getAvailable() {
96
+ const available = [];
97
+ for (const provider of this.providers.values()) {
98
+ if (await provider.isAvailable()) {
99
+ available.push(provider);
100
+ }
101
+ }
102
+ return available;
103
+ }
104
+ /**
105
+ * Detect and return status of all providers
106
+ * Useful for setup wizards
107
+ */
108
+ async detect() {
109
+ return this.getStatus();
110
+ }
111
+ /**
112
+ * Validate that a provider and model combination is valid
113
+ */
114
+ validateProviderModel(providerName, model) {
115
+ const provider = this.get(providerName);
116
+ const models = provider.listModels();
117
+ if (!models.includes(model)) {
118
+ throw new Error(`Model '${model}' not available for provider '${providerName}'. ` +
119
+ `Available models: ${models.join(', ')}`);
120
+ }
121
+ }
122
+ /**
123
+ * Get the default provider for a role
124
+ * Returns the first available provider that has a default model for the role
125
+ */
126
+ async getDefaultProvider(role) {
127
+ const available = await this.getAvailable();
128
+ for (const provider of available) {
129
+ const defaultModel = provider.getDefaultModel(role);
130
+ if (defaultModel) {
131
+ return provider;
132
+ }
133
+ }
134
+ return available[0]; // Fall back to first available
135
+ }
136
+ }
137
+ exports.ProviderRegistry = ProviderRegistry;
138
+ /**
139
+ * Create a registry with default providers registered
140
+ */
141
+ function createDefaultRegistry() {
142
+ const registry = new ProviderRegistry();
143
+ // Register built-in providers
144
+ registry.register(new claude_js_1.ClaudeProvider());
145
+ registry.register(new codex_js_1.CodexProvider());
146
+ registry.register(new gemini_js_1.GeminiProvider());
147
+ registry.register(new openai_js_1.OpenAIProvider());
148
+ return registry;
149
+ }
150
+ /**
151
+ * Global singleton registry instance
152
+ */
153
+ let globalRegistry = null;
154
+ /**
155
+ * Get the global provider registry
156
+ * Creates a default registry if none exists
157
+ */
158
+ function getProviderRegistry() {
159
+ if (!globalRegistry) {
160
+ globalRegistry = createDefaultRegistry();
161
+ }
162
+ return globalRegistry;
163
+ }
164
+ /**
165
+ * Set the global provider registry
166
+ * Useful for testing
167
+ */
168
+ function setProviderRegistry(registry) {
169
+ globalRegistry = registry;
170
+ }
171
+ /**
172
+ * Reset the global provider registry
173
+ * Useful for testing
174
+ */
175
+ function resetProviderRegistry() {
176
+ globalRegistry = null;
177
+ }
178
+ //# 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,65 @@
1
+ /**
2
+ * Global activity log for task completions
3
+ * Tracks task terminal states across all projects
4
+ */
5
+ export type ActivityStatus = 'completed' | 'failed' | 'skipped' | 'partial' | 'disputed';
6
+ export interface ActivityLogEntry {
7
+ id: number;
8
+ project_path: string;
9
+ runner_id: string;
10
+ task_id: string;
11
+ task_title: string;
12
+ section_name: string | null;
13
+ final_status: ActivityStatus;
14
+ commit_message: string | null;
15
+ commit_sha: string | null;
16
+ created_at: string;
17
+ }
18
+ /**
19
+ * Log a task reaching a terminal state
20
+ */
21
+ export declare function logActivity(projectPath: string, runnerId: string, taskId: string, taskTitle: string, sectionName: string | null, finalStatus: ActivityStatus, commitMessage?: string | null, commitSha?: string | null): void;
22
+ /**
23
+ * Query activity log for entries since a given time
24
+ */
25
+ export declare function getActivitySince(hoursAgo?: number): ActivityLogEntry[];
26
+ /**
27
+ * Query activity log with optional filters
28
+ */
29
+ export declare function getActivityFiltered(options: {
30
+ hoursAgo?: number;
31
+ status?: ActivityStatus;
32
+ projectPath?: string;
33
+ limit?: number;
34
+ }): ActivityLogEntry[];
35
+ /**
36
+ * Stats aggregated by project
37
+ */
38
+ export interface ProjectActivityStats {
39
+ project_path: string;
40
+ project_name: string | null;
41
+ completed: number;
42
+ failed: number;
43
+ skipped: number;
44
+ partial: number;
45
+ disputed: number;
46
+ total: number;
47
+ first_activity: string | null;
48
+ last_activity: string | null;
49
+ }
50
+ /**
51
+ * Get stats aggregated by project for a time range
52
+ */
53
+ export declare function getActivityStatsByProject(hoursAgo?: number): ProjectActivityStats[];
54
+ /**
55
+ * Get total count of activity entries
56
+ */
57
+ export declare function getActivityCount(): number;
58
+ /**
59
+ * Purge activity log entries older than a given time
60
+ * @param keepHours If provided, delete entries older than this many hours
61
+ * If undefined, delete ALL entries
62
+ * @returns Number of entries deleted
63
+ */
64
+ export declare function purgeActivity(keepHours?: number): number;
65
+ //# sourceMappingURL=activity-log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-log.d.ts","sourceRoot":"","sources":["../../src/runners/activity-log.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,cAAc,CAAC;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,WAAW,EAAE,cAAc,EAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,EAC7B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,IAAI,CAWN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAAW,GAAG,gBAAgB,EAAE,CAa1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,gBAAgB,EAAE,CAmCrB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,GAAE,MAAW,GACpB,oBAAoB,EAAE,CA0BxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAUzC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAoBxD"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /**
3
+ * Global activity log for task completions
4
+ * Tracks task terminal states across all projects
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.logActivity = logActivity;
8
+ exports.getActivitySince = getActivitySince;
9
+ exports.getActivityFiltered = getActivityFiltered;
10
+ exports.getActivityStatsByProject = getActivityStatsByProject;
11
+ exports.getActivityCount = getActivityCount;
12
+ exports.purgeActivity = purgeActivity;
13
+ const global_db_js_1 = require("./global-db.js");
14
+ /**
15
+ * Log a task reaching a terminal state
16
+ */
17
+ function logActivity(projectPath, runnerId, taskId, taskTitle, sectionName, finalStatus, commitMessage, commitSha) {
18
+ const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
19
+ try {
20
+ db.prepare(`INSERT INTO activity_log
21
+ (project_path, runner_id, task_id, task_title, section_name, final_status, commit_message, commit_sha)
22
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(projectPath, runnerId, taskId, taskTitle, sectionName, finalStatus, commitMessage ?? null, commitSha ?? null);
23
+ }
24
+ finally {
25
+ close();
26
+ }
27
+ }
28
+ /**
29
+ * Query activity log for entries since a given time
30
+ */
31
+ function getActivitySince(hoursAgo = 12) {
32
+ const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
33
+ try {
34
+ return db
35
+ .prepare(`SELECT * FROM activity_log
36
+ WHERE created_at >= datetime('now', ? || ' hours')
37
+ ORDER BY created_at DESC`)
38
+ .all(`-${hoursAgo}`);
39
+ }
40
+ finally {
41
+ close();
42
+ }
43
+ }
44
+ /**
45
+ * Query activity log with optional filters
46
+ */
47
+ function getActivityFiltered(options) {
48
+ const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
49
+ try {
50
+ const conditions = [];
51
+ const params = [];
52
+ if (options.hoursAgo) {
53
+ conditions.push(`created_at >= datetime('now', ? || ' hours')`);
54
+ params.push(`-${options.hoursAgo}`);
55
+ }
56
+ if (options.status) {
57
+ conditions.push(`final_status = ?`);
58
+ params.push(options.status);
59
+ }
60
+ if (options.projectPath) {
61
+ conditions.push(`project_path = ?`);
62
+ params.push(options.projectPath);
63
+ }
64
+ const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
65
+ const limitClause = options.limit ? `LIMIT ${options.limit}` : '';
66
+ return db
67
+ .prepare(`SELECT * FROM activity_log
68
+ ${whereClause}
69
+ ORDER BY created_at DESC
70
+ ${limitClause}`)
71
+ .all(...params);
72
+ }
73
+ finally {
74
+ close();
75
+ }
76
+ }
77
+ /**
78
+ * Get stats aggregated by project for a time range
79
+ */
80
+ function getActivityStatsByProject(hoursAgo = 12) {
81
+ const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
82
+ try {
83
+ return db
84
+ .prepare(`SELECT
85
+ a.project_path,
86
+ p.name as project_name,
87
+ SUM(CASE WHEN a.final_status = 'completed' THEN 1 ELSE 0 END) as completed,
88
+ SUM(CASE WHEN a.final_status = 'failed' THEN 1 ELSE 0 END) as failed,
89
+ SUM(CASE WHEN a.final_status = 'skipped' THEN 1 ELSE 0 END) as skipped,
90
+ SUM(CASE WHEN a.final_status = 'partial' THEN 1 ELSE 0 END) as partial,
91
+ SUM(CASE WHEN a.final_status = 'disputed' THEN 1 ELSE 0 END) as disputed,
92
+ COUNT(*) as total,
93
+ MIN(a.created_at) as first_activity,
94
+ MAX(a.created_at) as last_activity
95
+ FROM activity_log a
96
+ LEFT JOIN projects p ON a.project_path = p.path
97
+ WHERE a.created_at >= datetime('now', ? || ' hours')
98
+ GROUP BY a.project_path
99
+ ORDER BY a.project_path`)
100
+ .all(`-${hoursAgo}`);
101
+ }
102
+ finally {
103
+ close();
104
+ }
105
+ }
106
+ /**
107
+ * Get total count of activity entries
108
+ */
109
+ function getActivityCount() {
110
+ const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
111
+ try {
112
+ const row = db
113
+ .prepare('SELECT COUNT(*) as count FROM activity_log')
114
+ .get();
115
+ return row.count;
116
+ }
117
+ finally {
118
+ close();
119
+ }
120
+ }
121
+ /**
122
+ * Purge activity log entries older than a given time
123
+ * @param keepHours If provided, delete entries older than this many hours
124
+ * If undefined, delete ALL entries
125
+ * @returns Number of entries deleted
126
+ */
127
+ function purgeActivity(keepHours) {
128
+ const { db, close } = (0, global_db_js_1.openGlobalDatabase)();
129
+ try {
130
+ if (keepHours === undefined) {
131
+ // Delete all
132
+ const result = db.prepare('DELETE FROM activity_log').run();
133
+ return result.changes;
134
+ }
135
+ else {
136
+ // Delete older than threshold
137
+ const result = db
138
+ .prepare(`DELETE FROM activity_log
139
+ WHERE created_at < datetime('now', ? || ' hours')`)
140
+ .run(`-${keepHours}`);
141
+ return result.changes;
142
+ }
143
+ }
144
+ finally {
145
+ close();
146
+ }
147
+ }
148
+ //# sourceMappingURL=activity-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-log.js","sourceRoot":"","sources":["../../src/runners/activity-log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Cron management for runner wake-up
3
+ */
4
+ export interface CronStatus {
5
+ installed: boolean;
6
+ entry?: string;
7
+ error?: string;
8
+ }
9
+ export interface CronResult {
10
+ success: boolean;
11
+ message: string;
12
+ error?: string;
13
+ }
14
+ /**
15
+ * Check cron installation status
16
+ */
17
+ export declare function cronStatus(): CronStatus;
18
+ /**
19
+ * Install cron job for runner wake-up
20
+ */
21
+ export declare function cronInstall(): CronResult;
22
+ /**
23
+ * Uninstall cron job
24
+ */
25
+ export declare function cronUninstall(): CronResult;
26
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/runners/cron.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAuDD;;GAEG;AACH,wBAAgB,UAAU,IAAI,UAAU,CA8BvC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,UAAU,CAgDxC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,CA6C1C"}