@substrate-ai/core 0.19.54

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 (486) hide show
  1. package/README.md +55 -0
  2. package/dist/__tests__/adapter.test.d.ts +12 -0
  3. package/dist/__tests__/adapter.test.d.ts.map +1 -0
  4. package/dist/__tests__/adapter.test.js +259 -0
  5. package/dist/__tests__/adapter.test.js.map +1 -0
  6. package/dist/__tests__/event-bus.test.d.ts +14 -0
  7. package/dist/__tests__/event-bus.test.d.ts.map +1 -0
  8. package/dist/__tests__/event-bus.test.js +199 -0
  9. package/dist/__tests__/event-bus.test.js.map +1 -0
  10. package/dist/__tests__/output-quality.test.d.ts +8 -0
  11. package/dist/__tests__/output-quality.test.d.ts.map +1 -0
  12. package/dist/__tests__/output-quality.test.js +166 -0
  13. package/dist/__tests__/output-quality.test.js.map +1 -0
  14. package/dist/__tests__/schema-suffix.test.d.ts +9 -0
  15. package/dist/__tests__/schema-suffix.test.d.ts.map +1 -0
  16. package/dist/__tests__/schema-suffix.test.js +126 -0
  17. package/dist/__tests__/schema-suffix.test.js.map +1 -0
  18. package/dist/__tests__/yaml-parser.test.d.ts +18 -0
  19. package/dist/__tests__/yaml-parser.test.d.ts.map +1 -0
  20. package/dist/__tests__/yaml-parser.test.js +475 -0
  21. package/dist/__tests__/yaml-parser.test.js.map +1 -0
  22. package/dist/__type-checks__.d.ts +11 -0
  23. package/dist/__type-checks__.d.ts.map +1 -0
  24. package/dist/__type-checks__.js +19 -0
  25. package/dist/__type-checks__.js.map +1 -0
  26. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts +12 -0
  27. package/dist/adapters/__tests__/adapter-output-normalizer.test.d.ts.map +1 -0
  28. package/dist/adapters/__tests__/adapter-output-normalizer.test.js +193 -0
  29. package/dist/adapters/__tests__/adapter-output-normalizer.test.js.map +1 -0
  30. package/dist/adapters/adapter-format-error.d.ts +35 -0
  31. package/dist/adapters/adapter-format-error.d.ts.map +1 -0
  32. package/dist/adapters/adapter-format-error.js +38 -0
  33. package/dist/adapters/adapter-format-error.js.map +1 -0
  34. package/dist/adapters/adapter-output-normalizer.d.ts +50 -0
  35. package/dist/adapters/adapter-output-normalizer.d.ts.map +1 -0
  36. package/dist/adapters/adapter-output-normalizer.js +233 -0
  37. package/dist/adapters/adapter-output-normalizer.js.map +1 -0
  38. package/dist/adapters/adapter-registry.d.ts +50 -0
  39. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  40. package/dist/adapters/adapter-registry.js +101 -0
  41. package/dist/adapters/adapter-registry.js.map +1 -0
  42. package/dist/adapters/claude-adapter.d.ts +59 -0
  43. package/dist/adapters/claude-adapter.d.ts.map +1 -0
  44. package/dist/adapters/claude-adapter.js +367 -0
  45. package/dist/adapters/claude-adapter.js.map +1 -0
  46. package/dist/adapters/codex-adapter.d.ts +64 -0
  47. package/dist/adapters/codex-adapter.d.ts.map +1 -0
  48. package/dist/adapters/codex-adapter.js +263 -0
  49. package/dist/adapters/codex-adapter.js.map +1 -0
  50. package/dist/adapters/gemini-adapter.d.ts +57 -0
  51. package/dist/adapters/gemini-adapter.d.ts.map +1 -0
  52. package/dist/adapters/gemini-adapter.js +311 -0
  53. package/dist/adapters/gemini-adapter.js.map +1 -0
  54. package/dist/adapters/index.d.ts +10 -0
  55. package/dist/adapters/index.d.ts.map +1 -0
  56. package/dist/adapters/index.js +14 -0
  57. package/dist/adapters/index.js.map +1 -0
  58. package/dist/adapters/schemas.d.ts +137 -0
  59. package/dist/adapters/schemas.d.ts.map +1 -0
  60. package/dist/adapters/schemas.js +140 -0
  61. package/dist/adapters/schemas.js.map +1 -0
  62. package/dist/adapters/types.d.ts +245 -0
  63. package/dist/adapters/types.d.ts.map +1 -0
  64. package/dist/adapters/types.js +6 -0
  65. package/dist/adapters/types.js.map +1 -0
  66. package/dist/adapters/worker-adapter.d.ts +188 -0
  67. package/dist/adapters/worker-adapter.d.ts.map +1 -0
  68. package/dist/adapters/worker-adapter.js +19 -0
  69. package/dist/adapters/worker-adapter.js.map +1 -0
  70. package/dist/budget/budget-tracker.d.ts +22 -0
  71. package/dist/budget/budget-tracker.d.ts.map +1 -0
  72. package/dist/budget/budget-tracker.js +39 -0
  73. package/dist/budget/budget-tracker.js.map +1 -0
  74. package/dist/budget/index.d.ts +6 -0
  75. package/dist/budget/index.d.ts.map +1 -0
  76. package/dist/budget/index.js +5 -0
  77. package/dist/budget/index.js.map +1 -0
  78. package/dist/config/config-migrator.d.ts +58 -0
  79. package/dist/config/config-migrator.d.ts.map +1 -0
  80. package/dist/config/config-migrator.js +158 -0
  81. package/dist/config/config-migrator.js.map +1 -0
  82. package/dist/config/config-system-impl.d.ts +63 -0
  83. package/dist/config/config-system-impl.d.ts.map +1 -0
  84. package/dist/config/config-system-impl.js +364 -0
  85. package/dist/config/config-system-impl.js.map +1 -0
  86. package/dist/config/config-watcher.d.ts +59 -0
  87. package/dist/config/config-watcher.d.ts.map +1 -0
  88. package/dist/config/config-watcher.js +137 -0
  89. package/dist/config/config-watcher.js.map +1 -0
  90. package/dist/config/defaults.d.ts +13 -0
  91. package/dist/config/defaults.d.ts.map +1 -0
  92. package/dist/config/defaults.js +62 -0
  93. package/dist/config/defaults.js.map +1 -0
  94. package/dist/config/errors.d.ts +25 -0
  95. package/dist/config/errors.d.ts.map +1 -0
  96. package/dist/config/errors.js +49 -0
  97. package/dist/config/errors.js.map +1 -0
  98. package/dist/config/index.d.ts +19 -0
  99. package/dist/config/index.d.ts.map +1 -0
  100. package/dist/config/index.js +39 -0
  101. package/dist/config/index.js.map +1 -0
  102. package/dist/config/types.d.ts +456 -0
  103. package/dist/config/types.d.ts.map +1 -0
  104. package/dist/config/types.js +174 -0
  105. package/dist/config/types.js.map +1 -0
  106. package/dist/config/version-utils.d.ts +39 -0
  107. package/dist/config/version-utils.d.ts.map +1 -0
  108. package/dist/config/version-utils.js +66 -0
  109. package/dist/config/version-utils.js.map +1 -0
  110. package/dist/context/index.d.ts +2 -0
  111. package/dist/context/index.d.ts.map +1 -0
  112. package/dist/context/index.js +2 -0
  113. package/dist/context/index.js.map +1 -0
  114. package/dist/context/types.d.ts +113 -0
  115. package/dist/context/types.d.ts.map +1 -0
  116. package/dist/context/types.js +59 -0
  117. package/dist/context/types.js.map +1 -0
  118. package/dist/cost-tracker/cost-tracker-impl.d.ts +51 -0
  119. package/dist/cost-tracker/cost-tracker-impl.d.ts.map +1 -0
  120. package/dist/cost-tracker/cost-tracker-impl.js +85 -0
  121. package/dist/cost-tracker/cost-tracker-impl.js.map +1 -0
  122. package/dist/cost-tracker/cost-tracker-subscriber.d.ts +31 -0
  123. package/dist/cost-tracker/cost-tracker-subscriber.d.ts.map +1 -0
  124. package/dist/cost-tracker/cost-tracker-subscriber.js +116 -0
  125. package/dist/cost-tracker/cost-tracker-subscriber.js.map +1 -0
  126. package/dist/cost-tracker/index.d.ts +11 -0
  127. package/dist/cost-tracker/index.d.ts.map +1 -0
  128. package/dist/cost-tracker/index.js +7 -0
  129. package/dist/cost-tracker/index.js.map +1 -0
  130. package/dist/cost-tracker/token-rates.d.ts +25 -0
  131. package/dist/cost-tracker/token-rates.d.ts.map +1 -0
  132. package/dist/cost-tracker/token-rates.js +99 -0
  133. package/dist/cost-tracker/token-rates.js.map +1 -0
  134. package/dist/cost-tracker/types.d.ts +6 -0
  135. package/dist/cost-tracker/types.d.ts.map +1 -0
  136. package/dist/cost-tracker/types.js +2 -0
  137. package/dist/cost-tracker/types.js.map +1 -0
  138. package/dist/dispatch/dispatcher-impl.d.ts +92 -0
  139. package/dist/dispatch/dispatcher-impl.d.ts.map +1 -0
  140. package/dist/dispatch/dispatcher-impl.js +847 -0
  141. package/dist/dispatch/dispatcher-impl.js.map +1 -0
  142. package/dist/dispatch/index.d.ts +15 -0
  143. package/dist/dispatch/index.d.ts.map +1 -0
  144. package/dist/dispatch/index.js +14 -0
  145. package/dist/dispatch/index.js.map +1 -0
  146. package/dist/dispatch/interface-change-detector.d.ts +46 -0
  147. package/dist/dispatch/interface-change-detector.d.ts.map +1 -0
  148. package/dist/dispatch/interface-change-detector.js +135 -0
  149. package/dist/dispatch/interface-change-detector.js.map +1 -0
  150. package/dist/dispatch/output-quality.d.ts +43 -0
  151. package/dist/dispatch/output-quality.d.ts.map +1 -0
  152. package/dist/dispatch/output-quality.js +148 -0
  153. package/dist/dispatch/output-quality.js.map +1 -0
  154. package/dist/dispatch/types.d.ts +271 -0
  155. package/dist/dispatch/types.d.ts.map +1 -0
  156. package/dist/dispatch/types.js +76 -0
  157. package/dist/dispatch/types.js.map +1 -0
  158. package/dist/dispatch/yaml-parser.d.ts +40 -0
  159. package/dist/dispatch/yaml-parser.d.ts.map +1 -0
  160. package/dist/dispatch/yaml-parser.js +323 -0
  161. package/dist/dispatch/yaml-parser.js.map +1 -0
  162. package/dist/events/core-events.d.ts +288 -0
  163. package/dist/events/core-events.d.ts.map +1 -0
  164. package/dist/events/core-events.js +10 -0
  165. package/dist/events/core-events.js.map +1 -0
  166. package/dist/events/event-bus.d.ts +55 -0
  167. package/dist/events/event-bus.d.ts.map +1 -0
  168. package/dist/events/event-bus.js +52 -0
  169. package/dist/events/event-bus.js.map +1 -0
  170. package/dist/events/index.d.ts +9 -0
  171. package/dist/events/index.d.ts.map +1 -0
  172. package/dist/events/index.js +6 -0
  173. package/dist/events/index.js.map +1 -0
  174. package/dist/events/types.d.ts +21 -0
  175. package/dist/events/types.d.ts.map +1 -0
  176. package/dist/events/types.js +8 -0
  177. package/dist/events/types.js.map +1 -0
  178. package/dist/git/git-manager.d.ts +31 -0
  179. package/dist/git/git-manager.d.ts.map +1 -0
  180. package/dist/git/git-manager.js +46 -0
  181. package/dist/git/git-manager.js.map +1 -0
  182. package/dist/git/git-utils.d.ts +166 -0
  183. package/dist/git/git-utils.d.ts.map +1 -0
  184. package/dist/git/git-utils.js +347 -0
  185. package/dist/git/git-utils.js.map +1 -0
  186. package/dist/git/git-worktree-manager-impl.d.ts +58 -0
  187. package/dist/git/git-worktree-manager-impl.d.ts.map +1 -0
  188. package/dist/git/git-worktree-manager-impl.js +336 -0
  189. package/dist/git/git-worktree-manager-impl.js.map +1 -0
  190. package/dist/git/git-worktree-manager.d.ts +122 -0
  191. package/dist/git/git-worktree-manager.d.ts.map +1 -0
  192. package/dist/git/git-worktree-manager.js +14 -0
  193. package/dist/git/git-worktree-manager.js.map +1 -0
  194. package/dist/git/index.d.ts +11 -0
  195. package/dist/git/index.d.ts.map +1 -0
  196. package/dist/git/index.js +8 -0
  197. package/dist/git/index.js.map +1 -0
  198. package/dist/index.d.ts +33 -0
  199. package/dist/index.d.ts.map +1 -0
  200. package/dist/index.js +47 -0
  201. package/dist/index.js.map +1 -0
  202. package/dist/llm/client.d.ts +42 -0
  203. package/dist/llm/client.d.ts.map +1 -0
  204. package/dist/llm/client.js +27 -0
  205. package/dist/llm/client.js.map +1 -0
  206. package/dist/monitor/index.d.ts +15 -0
  207. package/dist/monitor/index.d.ts.map +1 -0
  208. package/dist/monitor/index.js +9 -0
  209. package/dist/monitor/index.js.map +1 -0
  210. package/dist/monitor/monitor-agent-impl.d.ts +56 -0
  211. package/dist/monitor/monitor-agent-impl.d.ts.map +1 -0
  212. package/dist/monitor/monitor-agent-impl.js +178 -0
  213. package/dist/monitor/monitor-agent-impl.js.map +1 -0
  214. package/dist/monitor/monitor-agent.d.ts +36 -0
  215. package/dist/monitor/monitor-agent.d.ts.map +1 -0
  216. package/dist/monitor/monitor-agent.js +6 -0
  217. package/dist/monitor/monitor-agent.js.map +1 -0
  218. package/dist/monitor/performance-aggregates.d.ts +41 -0
  219. package/dist/monitor/performance-aggregates.d.ts.map +1 -0
  220. package/dist/monitor/performance-aggregates.js +6 -0
  221. package/dist/monitor/performance-aggregates.js.map +1 -0
  222. package/dist/monitor/recommendation-engine.d.ts +27 -0
  223. package/dist/monitor/recommendation-engine.d.ts.map +1 -0
  224. package/dist/monitor/recommendation-engine.js +140 -0
  225. package/dist/monitor/recommendation-engine.js.map +1 -0
  226. package/dist/monitor/recommendation-types.d.ts +30 -0
  227. package/dist/monitor/recommendation-types.d.ts.map +1 -0
  228. package/dist/monitor/recommendation-types.js +43 -0
  229. package/dist/monitor/recommendation-types.js.map +1 -0
  230. package/dist/monitor/report-generator.d.ts +48 -0
  231. package/dist/monitor/report-generator.d.ts.map +1 -0
  232. package/dist/monitor/report-generator.js +123 -0
  233. package/dist/monitor/report-generator.js.map +1 -0
  234. package/dist/monitor/task-type-classifier.d.ts +19 -0
  235. package/dist/monitor/task-type-classifier.d.ts.map +1 -0
  236. package/dist/monitor/task-type-classifier.js +68 -0
  237. package/dist/monitor/task-type-classifier.js.map +1 -0
  238. package/dist/persistence/adapter.d.ts +4 -0
  239. package/dist/persistence/adapter.d.ts.map +1 -0
  240. package/dist/persistence/adapter.js +56 -0
  241. package/dist/persistence/adapter.js.map +1 -0
  242. package/dist/persistence/cost-types.d.ts +87 -0
  243. package/dist/persistence/cost-types.d.ts.map +1 -0
  244. package/dist/persistence/cost-types.js +14 -0
  245. package/dist/persistence/cost-types.js.map +1 -0
  246. package/dist/persistence/dolt-adapter-transaction.test.d.ts +10 -0
  247. package/dist/persistence/dolt-adapter-transaction.test.d.ts.map +1 -0
  248. package/dist/persistence/dolt-adapter-transaction.test.js +359 -0
  249. package/dist/persistence/dolt-adapter-transaction.test.js.map +1 -0
  250. package/dist/persistence/dolt-adapter.d.ts +77 -0
  251. package/dist/persistence/dolt-adapter.d.ts.map +1 -0
  252. package/dist/persistence/dolt-adapter.js +98 -0
  253. package/dist/persistence/dolt-adapter.js.map +1 -0
  254. package/dist/persistence/dolt-client.d.ts +69 -0
  255. package/dist/persistence/dolt-client.d.ts.map +1 -0
  256. package/dist/persistence/dolt-client.js +278 -0
  257. package/dist/persistence/dolt-client.js.map +1 -0
  258. package/dist/persistence/dolt-errors.d.ts +10 -0
  259. package/dist/persistence/dolt-errors.d.ts.map +1 -0
  260. package/dist/persistence/dolt-errors.js +15 -0
  261. package/dist/persistence/dolt-errors.js.map +1 -0
  262. package/dist/persistence/dolt-init.d.ts +64 -0
  263. package/dist/persistence/dolt-init.d.ts.map +1 -0
  264. package/dist/persistence/dolt-init.js +233 -0
  265. package/dist/persistence/dolt-init.js.map +1 -0
  266. package/dist/persistence/index.d.ts +23 -0
  267. package/dist/persistence/index.d.ts.map +1 -0
  268. package/dist/persistence/index.js +23 -0
  269. package/dist/persistence/index.js.map +1 -0
  270. package/dist/persistence/memory-adapter.d.ts +156 -0
  271. package/dist/persistence/memory-adapter.d.ts.map +1 -0
  272. package/dist/persistence/memory-adapter.js +1167 -0
  273. package/dist/persistence/memory-adapter.js.map +1 -0
  274. package/dist/persistence/monitor-database.d.ts +113 -0
  275. package/dist/persistence/monitor-database.d.ts.map +1 -0
  276. package/dist/persistence/monitor-database.js +345 -0
  277. package/dist/persistence/monitor-database.js.map +1 -0
  278. package/dist/persistence/queries/amendments.d.ts +91 -0
  279. package/dist/persistence/queries/amendments.d.ts.map +1 -0
  280. package/dist/persistence/queries/amendments.js +185 -0
  281. package/dist/persistence/queries/amendments.js.map +1 -0
  282. package/dist/persistence/queries/cost.d.ts +130 -0
  283. package/dist/persistence/queries/cost.d.ts.map +1 -0
  284. package/dist/persistence/queries/cost.js +384 -0
  285. package/dist/persistence/queries/cost.js.map +1 -0
  286. package/dist/persistence/queries/decisions.d.ts +131 -0
  287. package/dist/persistence/queries/decisions.d.ts.map +1 -0
  288. package/dist/persistence/queries/decisions.js +339 -0
  289. package/dist/persistence/queries/decisions.js.map +1 -0
  290. package/dist/persistence/queries/metrics.d.ts +155 -0
  291. package/dist/persistence/queries/metrics.d.ts.map +1 -0
  292. package/dist/persistence/queries/metrics.js +237 -0
  293. package/dist/persistence/queries/metrics.js.map +1 -0
  294. package/dist/persistence/queries/retry-escalated.d.ts +35 -0
  295. package/dist/persistence/queries/retry-escalated.d.ts.map +1 -0
  296. package/dist/persistence/queries/retry-escalated.js +83 -0
  297. package/dist/persistence/queries/retry-escalated.js.map +1 -0
  298. package/dist/persistence/schema-version.d.ts +89 -0
  299. package/dist/persistence/schema-version.d.ts.map +1 -0
  300. package/dist/persistence/schema-version.js +67 -0
  301. package/dist/persistence/schema-version.js.map +1 -0
  302. package/dist/persistence/schema.d.ts +26 -0
  303. package/dist/persistence/schema.d.ts.map +1 -0
  304. package/dist/persistence/schema.js +509 -0
  305. package/dist/persistence/schema.js.map +1 -0
  306. package/dist/persistence/schemas/decisions.d.ts +176 -0
  307. package/dist/persistence/schemas/decisions.d.ts.map +1 -0
  308. package/dist/persistence/schemas/decisions.js +139 -0
  309. package/dist/persistence/schemas/decisions.js.map +1 -0
  310. package/dist/persistence/schemas/operational.d.ts +194 -0
  311. package/dist/persistence/schemas/operational.d.ts.map +1 -0
  312. package/dist/persistence/schemas/operational.js +197 -0
  313. package/dist/persistence/schemas/operational.js.map +1 -0
  314. package/dist/persistence/types.d.ts +98 -0
  315. package/dist/persistence/types.d.ts.map +1 -0
  316. package/dist/persistence/types.js +22 -0
  317. package/dist/persistence/types.js.map +1 -0
  318. package/dist/quality-gates/index.d.ts +2 -0
  319. package/dist/quality-gates/index.d.ts.map +1 -0
  320. package/dist/quality-gates/index.js +2 -0
  321. package/dist/quality-gates/index.js.map +1 -0
  322. package/dist/quality-gates/types.d.ts +106 -0
  323. package/dist/quality-gates/types.d.ts.map +1 -0
  324. package/dist/quality-gates/types.js +5 -0
  325. package/dist/quality-gates/types.js.map +1 -0
  326. package/dist/routing/index.d.ts +19 -0
  327. package/dist/routing/index.d.ts.map +1 -0
  328. package/dist/routing/index.js +32 -0
  329. package/dist/routing/index.js.map +1 -0
  330. package/dist/routing/model-routing-config.d.ts +75 -0
  331. package/dist/routing/model-routing-config.d.ts.map +1 -0
  332. package/dist/routing/model-routing-config.js +110 -0
  333. package/dist/routing/model-routing-config.js.map +1 -0
  334. package/dist/routing/model-routing-resolver.d.ts +48 -0
  335. package/dist/routing/model-routing-resolver.d.ts.map +1 -0
  336. package/dist/routing/model-routing-resolver.js +105 -0
  337. package/dist/routing/model-routing-resolver.js.map +1 -0
  338. package/dist/routing/model-tier.d.ts +21 -0
  339. package/dist/routing/model-tier.d.ts.map +1 -0
  340. package/dist/routing/model-tier.js +34 -0
  341. package/dist/routing/model-tier.js.map +1 -0
  342. package/dist/routing/provider-status.d.ts +99 -0
  343. package/dist/routing/provider-status.d.ts.map +1 -0
  344. package/dist/routing/provider-status.js +163 -0
  345. package/dist/routing/provider-status.js.map +1 -0
  346. package/dist/routing/routing-decision.d.ts +127 -0
  347. package/dist/routing/routing-decision.d.ts.map +1 -0
  348. package/dist/routing/routing-decision.js +111 -0
  349. package/dist/routing/routing-decision.js.map +1 -0
  350. package/dist/routing/routing-engine-impl.d.ts +132 -0
  351. package/dist/routing/routing-engine-impl.d.ts.map +1 -0
  352. package/dist/routing/routing-engine-impl.js +450 -0
  353. package/dist/routing/routing-engine-impl.js.map +1 -0
  354. package/dist/routing/routing-engine.d.ts +83 -0
  355. package/dist/routing/routing-engine.d.ts.map +1 -0
  356. package/dist/routing/routing-engine.js +24 -0
  357. package/dist/routing/routing-engine.js.map +1 -0
  358. package/dist/routing/routing-policy.d.ts +138 -0
  359. package/dist/routing/routing-policy.d.ts.map +1 -0
  360. package/dist/routing/routing-policy.js +159 -0
  361. package/dist/routing/routing-policy.js.map +1 -0
  362. package/dist/routing/routing-recommender.d.ts +60 -0
  363. package/dist/routing/routing-recommender.d.ts.map +1 -0
  364. package/dist/routing/routing-recommender.js +209 -0
  365. package/dist/routing/routing-recommender.js.map +1 -0
  366. package/dist/routing/routing-telemetry.d.ts +36 -0
  367. package/dist/routing/routing-telemetry.d.ts.map +1 -0
  368. package/dist/routing/routing-telemetry.js +39 -0
  369. package/dist/routing/routing-telemetry.js.map +1 -0
  370. package/dist/routing/routing-token-accumulator.d.ts +68 -0
  371. package/dist/routing/routing-token-accumulator.d.ts.map +1 -0
  372. package/dist/routing/routing-token-accumulator.js +111 -0
  373. package/dist/routing/routing-token-accumulator.js.map +1 -0
  374. package/dist/routing/routing-tuner.d.ts +69 -0
  375. package/dist/routing/routing-tuner.d.ts.map +1 -0
  376. package/dist/routing/routing-tuner.js +217 -0
  377. package/dist/routing/routing-tuner.js.map +1 -0
  378. package/dist/routing/types.d.ts +152 -0
  379. package/dist/routing/types.d.ts.map +1 -0
  380. package/dist/routing/types.js +13 -0
  381. package/dist/routing/types.js.map +1 -0
  382. package/dist/supervisor/analysis.d.ts +178 -0
  383. package/dist/supervisor/analysis.d.ts.map +1 -0
  384. package/dist/supervisor/analysis.js +420 -0
  385. package/dist/supervisor/analysis.js.map +1 -0
  386. package/dist/supervisor/experimenter.d.ts +118 -0
  387. package/dist/supervisor/experimenter.d.ts.map +1 -0
  388. package/dist/supervisor/experimenter.js +493 -0
  389. package/dist/supervisor/experimenter.js.map +1 -0
  390. package/dist/supervisor/index.d.ts +13 -0
  391. package/dist/supervisor/index.d.ts.map +1 -0
  392. package/dist/supervisor/index.js +11 -0
  393. package/dist/supervisor/index.js.map +1 -0
  394. package/dist/telemetry/batch-buffer.d.ts +53 -0
  395. package/dist/telemetry/batch-buffer.d.ts.map +1 -0
  396. package/dist/telemetry/batch-buffer.js +83 -0
  397. package/dist/telemetry/batch-buffer.js.map +1 -0
  398. package/dist/telemetry/categorizer.d.ts +65 -0
  399. package/dist/telemetry/categorizer.d.ts.map +1 -0
  400. package/dist/telemetry/categorizer.js +338 -0
  401. package/dist/telemetry/categorizer.js.map +1 -0
  402. package/dist/telemetry/consumer-analyzer.d.ts +53 -0
  403. package/dist/telemetry/consumer-analyzer.d.ts.map +1 -0
  404. package/dist/telemetry/consumer-analyzer.js +182 -0
  405. package/dist/telemetry/consumer-analyzer.js.map +1 -0
  406. package/dist/telemetry/cost-table.d.ts +36 -0
  407. package/dist/telemetry/cost-table.d.ts.map +1 -0
  408. package/dist/telemetry/cost-table.js +127 -0
  409. package/dist/telemetry/cost-table.js.map +1 -0
  410. package/dist/telemetry/efficiency-scorer.d.ts +103 -0
  411. package/dist/telemetry/efficiency-scorer.d.ts.map +1 -0
  412. package/dist/telemetry/efficiency-scorer.js +311 -0
  413. package/dist/telemetry/efficiency-scorer.js.map +1 -0
  414. package/dist/telemetry/index.d.ts +28 -0
  415. package/dist/telemetry/index.d.ts.map +1 -0
  416. package/dist/telemetry/index.js +37 -0
  417. package/dist/telemetry/index.js.map +1 -0
  418. package/dist/telemetry/ingestion-server.d.ts +99 -0
  419. package/dist/telemetry/ingestion-server.d.ts.map +1 -0
  420. package/dist/telemetry/ingestion-server.js +315 -0
  421. package/dist/telemetry/ingestion-server.js.map +1 -0
  422. package/dist/telemetry/log-turn-analyzer.d.ts +35 -0
  423. package/dist/telemetry/log-turn-analyzer.d.ts.map +1 -0
  424. package/dist/telemetry/log-turn-analyzer.js +132 -0
  425. package/dist/telemetry/log-turn-analyzer.js.map +1 -0
  426. package/dist/telemetry/normalizer.d.ts +43 -0
  427. package/dist/telemetry/normalizer.d.ts.map +1 -0
  428. package/dist/telemetry/normalizer.js +320 -0
  429. package/dist/telemetry/normalizer.js.map +1 -0
  430. package/dist/telemetry/recommender.d.ts +116 -0
  431. package/dist/telemetry/recommender.d.ts.map +1 -0
  432. package/dist/telemetry/recommender.js +532 -0
  433. package/dist/telemetry/recommender.js.map +1 -0
  434. package/dist/telemetry/source-detector.d.ts +19 -0
  435. package/dist/telemetry/source-detector.d.ts.map +1 -0
  436. package/dist/telemetry/source-detector.js +73 -0
  437. package/dist/telemetry/source-detector.js.map +1 -0
  438. package/dist/telemetry/task-baselines.d.ts +30 -0
  439. package/dist/telemetry/task-baselines.d.ts.map +1 -0
  440. package/dist/telemetry/task-baselines.js +44 -0
  441. package/dist/telemetry/task-baselines.js.map +1 -0
  442. package/dist/telemetry/telemetry-pipeline.d.ts +122 -0
  443. package/dist/telemetry/telemetry-pipeline.d.ts.map +1 -0
  444. package/dist/telemetry/telemetry-pipeline.js +349 -0
  445. package/dist/telemetry/telemetry-pipeline.js.map +1 -0
  446. package/dist/telemetry/timestamp-normalizer.d.ts +32 -0
  447. package/dist/telemetry/timestamp-normalizer.d.ts.map +1 -0
  448. package/dist/telemetry/timestamp-normalizer.js +133 -0
  449. package/dist/telemetry/timestamp-normalizer.js.map +1 -0
  450. package/dist/telemetry/token-extractor.d.ts +57 -0
  451. package/dist/telemetry/token-extractor.d.ts.map +1 -0
  452. package/dist/telemetry/token-extractor.js +200 -0
  453. package/dist/telemetry/token-extractor.js.map +1 -0
  454. package/dist/telemetry/turn-analyzer.d.ts +34 -0
  455. package/dist/telemetry/turn-analyzer.d.ts.map +1 -0
  456. package/dist/telemetry/turn-analyzer.js +101 -0
  457. package/dist/telemetry/turn-analyzer.js.map +1 -0
  458. package/dist/telemetry/types.d.ts +456 -0
  459. package/dist/telemetry/types.d.ts.map +1 -0
  460. package/dist/telemetry/types.js +186 -0
  461. package/dist/telemetry/types.js.map +1 -0
  462. package/dist/types.d.ts +80 -0
  463. package/dist/types.d.ts.map +1 -0
  464. package/dist/types.js +6 -0
  465. package/dist/types.js.map +1 -0
  466. package/dist/version-manager/index.d.ts +11 -0
  467. package/dist/version-manager/index.d.ts.map +1 -0
  468. package/dist/version-manager/index.js +8 -0
  469. package/dist/version-manager/index.js.map +1 -0
  470. package/dist/version-manager/update-checker.d.ts +44 -0
  471. package/dist/version-manager/update-checker.d.ts.map +1 -0
  472. package/dist/version-manager/update-checker.js +171 -0
  473. package/dist/version-manager/update-checker.js.map +1 -0
  474. package/dist/version-manager/version-cache.d.ts +42 -0
  475. package/dist/version-manager/version-cache.d.ts.map +1 -0
  476. package/dist/version-manager/version-cache.js +69 -0
  477. package/dist/version-manager/version-cache.js.map +1 -0
  478. package/dist/version-manager/version-manager-impl.d.ts +81 -0
  479. package/dist/version-manager/version-manager-impl.d.ts.map +1 -0
  480. package/dist/version-manager/version-manager-impl.js +223 -0
  481. package/dist/version-manager/version-manager-impl.js.map +1 -0
  482. package/dist/version-manager/version-manager.d.ts +70 -0
  483. package/dist/version-manager/version-manager.d.ts.map +1 -0
  484. package/dist/version-manager/version-manager.js +8 -0
  485. package/dist/version-manager/version-manager.js.map +1 -0
  486. package/package.json +27 -0
@@ -0,0 +1,347 @@
1
+ /**
2
+ * git-utils.ts — Low-level git command helpers.
3
+ *
4
+ * All git commands are executed via child_process.spawn (not simple-git),
5
+ * as specified in ADR-007 (Git Worktree Management).
6
+ *
7
+ * Functions:
8
+ * - spawnGit: Execute git with given args, returns stdout/stderr/code
9
+ * - getGitVersion: Returns version string like "2.42.0"
10
+ * - parseGitVersion: Parses version string into { major, minor, patch }
11
+ * - isGitVersionSupported: Checks if version >= 2.20.0
12
+ * - verifyGitVersion: Throws if git not installed or < 2.20
13
+ * - createWorktree: Creates a worktree + branch
14
+ * - removeWorktree: Removes a worktree directory
15
+ * - removeBranch: Deletes a branch with git branch -D
16
+ * - getOrphanedWorktrees: Scans .substrate-worktrees/ and returns paths
17
+ * - simulateMerge: Runs git merge --no-commit --no-ff to detect conflicts
18
+ * - abortMerge: Runs git merge --abort to clean up a simulated merge
19
+ * - getConflictingFiles: Returns list of files with conflicts using git diff --name-only --diff-filter=U
20
+ * - performMerge: Runs git merge --no-ff to execute actual merge
21
+ * - getMergedFiles: Returns list of files changed in a merge using git diff --name-only
22
+ */
23
+ import { spawn } from 'node:child_process';
24
+ import { readdir, access } from 'node:fs/promises';
25
+ import * as path from 'node:path';
26
+ // Minimum supported git version
27
+ const MIN_GIT_MAJOR = 2;
28
+ const MIN_GIT_MINOR = 20;
29
+ // ---------------------------------------------------------------------------
30
+ // spawnGit
31
+ // ---------------------------------------------------------------------------
32
+ /**
33
+ * Spawn a git subprocess with the given args.
34
+ *
35
+ * @param args - Arguments to pass to git (e.g., ['worktree', 'add', ...])
36
+ * @param options - Optional spawn options (cwd, env)
37
+ * @returns - Object with stdout, stderr, and exit code
38
+ */
39
+ export function spawnGit(args, options) {
40
+ return new Promise((resolve) => {
41
+ const proc = spawn('git', args, {
42
+ cwd: options?.cwd,
43
+ env: options?.env ?? process.env,
44
+ stdio: ['ignore', 'pipe', 'pipe'],
45
+ });
46
+ let stdout = '';
47
+ let stderr = '';
48
+ proc.stdout?.on('data', (chunk) => {
49
+ stdout += chunk.toString();
50
+ });
51
+ proc.stderr?.on('data', (chunk) => {
52
+ stderr += chunk.toString();
53
+ });
54
+ proc.on('close', (code) => {
55
+ resolve({ stdout: stdout.trim(), stderr: stderr.trim(), code: code ?? 1 });
56
+ });
57
+ proc.on('error', (err) => {
58
+ resolve({ stdout: '', stderr: err.message, code: 1 });
59
+ });
60
+ });
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // getGitVersion
64
+ // ---------------------------------------------------------------------------
65
+ /**
66
+ * Get the installed git version string.
67
+ *
68
+ * @returns Version string like "2.42.0"
69
+ * @throws Error if git is not installed or version cannot be parsed
70
+ */
71
+ export async function getGitVersion() {
72
+ const result = await spawnGit(['--version']);
73
+ if (result.code !== 0) {
74
+ throw new Error(`git --version failed: ${result.stderr}`);
75
+ }
76
+ // Output is like: "git version 2.42.0"
77
+ const match = /git version\s+(\d+\.\d+(?:\.\d+)?)/.exec(result.stdout);
78
+ if (match === null || match[1] === undefined) {
79
+ throw new Error(`Unable to parse git version from output: "${result.stdout}"`);
80
+ }
81
+ return match[1];
82
+ }
83
+ // ---------------------------------------------------------------------------
84
+ // parseGitVersion
85
+ // ---------------------------------------------------------------------------
86
+ /**
87
+ * Parse a git version string into major/minor/patch components.
88
+ *
89
+ * @param versionString - Version string like "2.42.0" or "2.20"
90
+ * @returns - Parsed version components
91
+ */
92
+ export function parseGitVersion(versionString) {
93
+ const parts = versionString.split('.').map(Number);
94
+ return {
95
+ major: parts[0] ?? 0,
96
+ minor: parts[1] ?? 0,
97
+ patch: parts[2] ?? 0,
98
+ };
99
+ }
100
+ // ---------------------------------------------------------------------------
101
+ // isGitVersionSupported
102
+ // ---------------------------------------------------------------------------
103
+ /**
104
+ * Check if the given git version string is >= 2.20.0.
105
+ *
106
+ * @param version - Version string like "2.42.0"
107
+ * @returns - true if version >= 2.20.0
108
+ */
109
+ export function isGitVersionSupported(version) {
110
+ const { major, minor } = parseGitVersion(version);
111
+ if (major > MIN_GIT_MAJOR)
112
+ return true;
113
+ if (major === MIN_GIT_MAJOR && minor >= MIN_GIT_MINOR)
114
+ return true;
115
+ return false;
116
+ }
117
+ // ---------------------------------------------------------------------------
118
+ // verifyGitVersion
119
+ // ---------------------------------------------------------------------------
120
+ /**
121
+ * Verify that git is installed and version >= 2.20.
122
+ *
123
+ * @throws Error with clear message if git is not installed or too old
124
+ */
125
+ export async function verifyGitVersion() {
126
+ let version;
127
+ try {
128
+ version = await getGitVersion();
129
+ }
130
+ catch (err) {
131
+ throw new Error(`git is not installed or could not be executed. ` +
132
+ `Please install git 2.20 or newer. Details: ${String(err)}`);
133
+ }
134
+ if (!isGitVersionSupported(version)) {
135
+ const { major, minor, patch } = parseGitVersion(version);
136
+ throw new Error(`Git version ${major}.${minor}.${patch} is too old. ` +
137
+ `Substrate requires git 2.20 or newer. ` +
138
+ `Please upgrade git: https://git-scm.com/downloads`);
139
+ }
140
+ }
141
+ // ---------------------------------------------------------------------------
142
+ // createWorktree
143
+ // ---------------------------------------------------------------------------
144
+ /**
145
+ * Create a git worktree and its associated branch.
146
+ *
147
+ * Uses a single `git worktree add {worktreePath} -b {branchName} {baseBranch}`
148
+ * command to create the worktree with a new branch in one step.
149
+ *
150
+ * @param projectRoot - Absolute path to the git repository root
151
+ * @param taskId - Task identifier (used in path derivation)
152
+ * @param branchName - Branch name to create (e.g., "substrate/task-abc123")
153
+ * @param baseBranch - Branch to base the worktree on (e.g., "main")
154
+ * @returns - Object with the worktreePath
155
+ * @throws - Error if git command fails
156
+ */
157
+ export async function createWorktree(projectRoot, taskId, branchName, baseBranch) {
158
+ const worktreePath = path.join(projectRoot, '.substrate-worktrees', taskId);
159
+ // Create the worktree with a new branch based on baseBranch in one command
160
+ const addResult = await spawnGit(['worktree', 'add', worktreePath, '-b', branchName, baseBranch], { cwd: projectRoot });
161
+ if (addResult.code !== 0) {
162
+ throw new Error(`git worktree add failed for task "${taskId}": ${addResult.stderr || addResult.stdout}`);
163
+ }
164
+ return { worktreePath };
165
+ }
166
+ // ---------------------------------------------------------------------------
167
+ // removeWorktree
168
+ // ---------------------------------------------------------------------------
169
+ /**
170
+ * Remove a git worktree by path.
171
+ *
172
+ * Uses `git worktree remove --force` to handle unclean worktrees.
173
+ *
174
+ * @param worktreePath - Absolute path to the worktree directory
175
+ * @param projectRoot - Absolute path to the git repository root
176
+ * @throws - Error if git command fails
177
+ */
178
+ export async function removeWorktree(worktreePath, projectRoot) {
179
+ const spawnOpts = {};
180
+ if (projectRoot !== undefined)
181
+ spawnOpts.cwd = projectRoot;
182
+ const result = await spawnGit(['worktree', 'remove', '--force', worktreePath], spawnOpts);
183
+ if (result.code !== 0) {
184
+ throw new Error(`git worktree remove failed for "${worktreePath}": ${result.stderr || result.stdout}`);
185
+ }
186
+ }
187
+ // ---------------------------------------------------------------------------
188
+ // removeBranch
189
+ // ---------------------------------------------------------------------------
190
+ /**
191
+ * Delete a git branch using `git branch -D`.
192
+ *
193
+ * @param branchName - Branch name to delete (e.g., "substrate/task-abc123")
194
+ * @param projectRoot - Absolute path to the git repository root
195
+ * @returns - true if branch was successfully deleted, false otherwise
196
+ */
197
+ export async function removeBranch(branchName, projectRoot) {
198
+ const spawnOpts = {};
199
+ if (projectRoot !== undefined)
200
+ spawnOpts.cwd = projectRoot;
201
+ const result = await spawnGit(['branch', '-D', branchName], spawnOpts);
202
+ if (result.code !== 0) {
203
+ // Branch may not exist (e.g., worktree checkout failed earlier) — treat as warning not error
204
+ return false;
205
+ }
206
+ return true;
207
+ }
208
+ // ---------------------------------------------------------------------------
209
+ // getOrphanedWorktrees
210
+ // ---------------------------------------------------------------------------
211
+ /**
212
+ * Scan the worktrees base directory and return paths of all found worktree directories.
213
+ *
214
+ * @param projectRoot - Absolute path to the git repository root
215
+ * @param baseDirectory - Relative directory name for worktrees (default: '.substrate-worktrees')
216
+ * @returns - Array of absolute worktree directory paths
217
+ */
218
+ export async function getOrphanedWorktrees(projectRoot, baseDirectory = '.substrate-worktrees') {
219
+ const worktreesDir = path.join(projectRoot, baseDirectory);
220
+ // Check if the directory exists
221
+ try {
222
+ await access(worktreesDir);
223
+ }
224
+ catch {
225
+ // Directory doesn't exist — no orphaned worktrees
226
+ return [];
227
+ }
228
+ let entries;
229
+ try {
230
+ entries = await readdir(worktreesDir, { withFileTypes: true });
231
+ }
232
+ catch {
233
+ return [];
234
+ }
235
+ // Filter for directories only and return absolute paths
236
+ return entries
237
+ .filter((entry) => entry.isDirectory())
238
+ .map((entry) => path.join(worktreesDir, entry.name));
239
+ }
240
+ // ---------------------------------------------------------------------------
241
+ // simulateMerge
242
+ // ---------------------------------------------------------------------------
243
+ /**
244
+ * Simulate a merge using git merge --no-commit --no-ff without committing.
245
+ *
246
+ * This runs in the target branch's working directory (the project root or
247
+ * worktree path). The simulation must be aborted after checking conflicts
248
+ * via abortMerge().
249
+ *
250
+ * @param branchName - The source branch to simulate merging
251
+ * @param cwd - Working directory (must be on the target branch)
252
+ * @returns - true if merge would be clean, false if there are conflicts
253
+ */
254
+ export async function simulateMerge(branchName, cwd) {
255
+ const result = await spawnGit(['merge', '--no-commit', '--no-ff', branchName], { cwd });
256
+ // Git exits with code 0 if merge is clean (but not committed due to --no-commit)
257
+ // Git exits with non-zero code if there are conflicts
258
+ if (result.code === 0) {
259
+ return true;
260
+ }
261
+ return false;
262
+ }
263
+ // ---------------------------------------------------------------------------
264
+ // abortMerge
265
+ // ---------------------------------------------------------------------------
266
+ /**
267
+ * Abort a merge in progress using git merge --abort.
268
+ *
269
+ * Should be called after simulateMerge() to clean up the merge state,
270
+ * regardless of whether conflicts were found.
271
+ *
272
+ * @param cwd - Working directory (same as used for simulateMerge)
273
+ */
274
+ export async function abortMerge(cwd) {
275
+ await spawnGit(['merge', '--abort'], { cwd });
276
+ }
277
+ // ---------------------------------------------------------------------------
278
+ // getConflictingFiles
279
+ // ---------------------------------------------------------------------------
280
+ /**
281
+ * Get a list of files with conflicts during a merge.
282
+ *
283
+ * Must be called while a merge is in progress (after simulateMerge() and
284
+ * before abortMerge()).
285
+ *
286
+ * @param cwd - Working directory of the repository
287
+ * @returns - Array of conflicting file paths
288
+ */
289
+ export async function getConflictingFiles(cwd) {
290
+ const result = await spawnGit(['diff', '--name-only', '--diff-filter=U'], { cwd });
291
+ if (result.code !== 0) {
292
+ return [];
293
+ }
294
+ if (result.stdout.trim() === '') {
295
+ return [];
296
+ }
297
+ return result.stdout.trim().split('\n').filter((f) => f.trim().length > 0);
298
+ }
299
+ // ---------------------------------------------------------------------------
300
+ // performMerge
301
+ // ---------------------------------------------------------------------------
302
+ /**
303
+ * Perform an actual merge using git merge --no-ff.
304
+ *
305
+ * Should only be called after detectConflicts() confirms there are no conflicts.
306
+ * Creates a merge commit even if fast-forward is possible (--no-ff ensures history).
307
+ *
308
+ * @param branchName - The source branch to merge
309
+ * @param cwd - Working directory (must be on the target branch)
310
+ * @returns - true if merge succeeded, false otherwise
311
+ */
312
+ export async function performMerge(branchName, cwd) {
313
+ const result = await spawnGit(['merge', '--no-ff', branchName], { cwd });
314
+ if (result.code !== 0) {
315
+ return false;
316
+ }
317
+ return true;
318
+ }
319
+ // ---------------------------------------------------------------------------
320
+ // getMergedFiles
321
+ // ---------------------------------------------------------------------------
322
+ /**
323
+ * Get a list of files changed in the most recent merge.
324
+ *
325
+ * Uses git diff --name-only HEAD~1..HEAD to find files in the merge commit.
326
+ * Falls back to empty array if commit history is insufficient.
327
+ *
328
+ * @param cwd - Working directory of the repository
329
+ * @returns - Array of file paths that were merged
330
+ */
331
+ export async function getMergedFiles(cwd) {
332
+ // Get files changed between HEAD~1 and HEAD (the merge commit)
333
+ const result = await spawnGit(['diff', '--name-only', 'HEAD~1..HEAD'], { cwd });
334
+ if (result.code !== 0) {
335
+ // May fail if there's only one commit — try alternative approach
336
+ const altResult = await spawnGit(['show', '--name-only', '--format=', 'HEAD'], { cwd });
337
+ if (altResult.code !== 0) {
338
+ return [];
339
+ }
340
+ return altResult.stdout.trim().split('\n').filter((f) => f.trim().length > 0);
341
+ }
342
+ if (result.stdout.trim() === '') {
343
+ return [];
344
+ }
345
+ return result.stdout.trim().split('\n').filter((f) => f.trim().length > 0);
346
+ }
347
+ //# sourceMappingURL=git-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-utils.js","sourceRoot":"","sources":["../../src/git/git-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * GitWorktreeManagerImpl — concrete implementation of GitWorktreeManager.
3
+ *
4
+ * Subscribes to task:ready events to create worktrees and to
5
+ * task:complete / task:failed events to clean them up.
6
+ *
7
+ * Architecture constraints:
8
+ * - Uses child_process.spawn for all git operations (via git-utils)
9
+ * - Branch names: "substrate/task-{taskId}"
10
+ * - Worktree path: {projectRoot}/.substrate-worktrees/{taskId}
11
+ * - Implements IBaseService lifecycle (initialize / shutdown)
12
+ */
13
+ import type { TypedEventBus, CoreEvents } from '../events/index.js';
14
+ import type { ILogger } from '../dispatch/types.js';
15
+ import type { GitWorktreeManager, WorktreeInfo, ConflictReport, MergeResult } from './git-worktree-manager.js';
16
+ /**
17
+ * Minimal interface for the legacy db parameter (unused in current implementation,
18
+ * kept for backward compatibility with call sites that pass a db instance).
19
+ */
20
+ export interface LegacyDbLike {
21
+ readonly isOpen?: boolean;
22
+ readonly db?: Record<string, unknown>;
23
+ initialize?(): Promise<void>;
24
+ shutdown?(): Promise<void>;
25
+ }
26
+ export declare class GitWorktreeManagerImpl implements GitWorktreeManager {
27
+ private readonly _eventBus;
28
+ private readonly _projectRoot;
29
+ private readonly _baseDirectory;
30
+ private readonly _db;
31
+ private readonly _logger;
32
+ /** Bound listener references for cleanup in shutdown() */
33
+ private readonly _onTaskReady;
34
+ private readonly _onTaskComplete;
35
+ private readonly _onTaskFailed;
36
+ constructor(eventBus: TypedEventBus<CoreEvents>, projectRoot: string, baseDirectory?: string, db?: LegacyDbLike | null, logger?: ILogger);
37
+ initialize(): Promise<void>;
38
+ shutdown(): Promise<void>;
39
+ private _handleTaskReady;
40
+ private _handleTaskDone;
41
+ createWorktree(taskId: string, baseBranch?: string): Promise<WorktreeInfo>;
42
+ cleanupWorktree(taskId: string): Promise<void>;
43
+ cleanupAllWorktrees(): Promise<number>;
44
+ detectConflicts(taskId: string, targetBranch?: string): Promise<ConflictReport>;
45
+ mergeWorktree(taskId: string, targetBranch?: string): Promise<MergeResult>;
46
+ listWorktrees(): Promise<WorktreeInfo[]>;
47
+ getWorktreePath(taskId: string): string;
48
+ verifyGitVersion(): Promise<void>;
49
+ }
50
+ export interface GitWorktreeManagerOptions {
51
+ eventBus: TypedEventBus<CoreEvents>;
52
+ projectRoot: string;
53
+ baseDirectory?: string;
54
+ db?: LegacyDbLike | null;
55
+ logger?: ILogger;
56
+ }
57
+ export declare function createGitWorktreeManager(options: GitWorktreeManagerOptions): GitWorktreeManager;
58
+ //# sourceMappingURL=git-worktree-manager-impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-worktree-manager-impl.d.ts","sourceRoot":"","sources":["../../src/git/git-worktree-manager-impl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAG9G;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,UAAU,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,QAAQ,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAYD,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAuC;IACvE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;gBAGnE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,EACnC,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,MAA8B,EAC7C,EAAE,GAAE,YAAY,GAAG,IAAW,EAC9B,MAAM,CAAC,EAAE,OAAO;IA6BZ,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsB3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAkBjB,gBAAgB;YAShB,eAAe;IAcvB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAkC1E,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C9C,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IA4CtC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IAuD/E,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IAgD1E,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAiC9C,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAOxC;AAMD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IACnC,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,EAAE,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,kBAAkB,CAQ/F"}