@amsterdamdatalabs/enact-factory 0.1.1

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 (644) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +566 -0
  3. package/dist/adapters/agenticLoop.d.ts +90 -0
  4. package/dist/adapters/agenticLoop.d.ts.map +1 -0
  5. package/dist/adapters/agenticLoop.js +219 -0
  6. package/dist/adapters/agenticLoop.js.map +1 -0
  7. package/dist/adapters/base.d.ts +16 -0
  8. package/dist/adapters/base.d.ts.map +1 -0
  9. package/dist/adapters/base.js +135 -0
  10. package/dist/adapters/base.js.map +1 -0
  11. package/dist/adapters/claude.d.ts +13 -0
  12. package/dist/adapters/claude.d.ts.map +1 -0
  13. package/dist/adapters/claude.js +318 -0
  14. package/dist/adapters/claude.js.map +1 -0
  15. package/dist/adapters/codex.d.ts +14 -0
  16. package/dist/adapters/codex.d.ts.map +1 -0
  17. package/dist/adapters/codex.js +366 -0
  18. package/dist/adapters/codex.js.map +1 -0
  19. package/dist/adapters/cryptoQuantAdapter.d.ts +85 -0
  20. package/dist/adapters/cryptoQuantAdapter.d.ts.map +1 -0
  21. package/dist/adapters/cryptoQuantAdapter.js +238 -0
  22. package/dist/adapters/cryptoQuantAdapter.js.map +1 -0
  23. package/dist/adapters/cursor.d.ts +13 -0
  24. package/dist/adapters/cursor.d.ts.map +1 -0
  25. package/dist/adapters/cursor.js +300 -0
  26. package/dist/adapters/cursor.js.map +1 -0
  27. package/dist/adapters/envPath.d.ts +20 -0
  28. package/dist/adapters/envPath.d.ts.map +1 -0
  29. package/dist/adapters/envPath.js +49 -0
  30. package/dist/adapters/envPath.js.map +1 -0
  31. package/dist/adapters/hermes.d.ts +13 -0
  32. package/dist/adapters/hermes.d.ts.map +1 -0
  33. package/dist/adapters/hermes.js +283 -0
  34. package/dist/adapters/hermes.js.map +1 -0
  35. package/dist/adapters/index.d.ts +18 -0
  36. package/dist/adapters/index.d.ts.map +1 -0
  37. package/dist/adapters/index.js +56 -0
  38. package/dist/adapters/index.js.map +1 -0
  39. package/dist/adapters/opencode.d.ts +13 -0
  40. package/dist/adapters/opencode.d.ts.map +1 -0
  41. package/dist/adapters/opencode.js +282 -0
  42. package/dist/adapters/opencode.js.map +1 -0
  43. package/dist/adapters/processRegistry.d.ts +38 -0
  44. package/dist/adapters/processRegistry.d.ts.map +1 -0
  45. package/dist/adapters/processRegistry.js +147 -0
  46. package/dist/adapters/processRegistry.js.map +1 -0
  47. package/dist/adapters/responses.d.ts +16 -0
  48. package/dist/adapters/responses.d.ts.map +1 -0
  49. package/dist/adapters/responses.js +244 -0
  50. package/dist/adapters/responses.js.map +1 -0
  51. package/dist/adapters/streamBuffer.d.ts +59 -0
  52. package/dist/adapters/streamBuffer.d.ts.map +1 -0
  53. package/dist/adapters/streamBuffer.js +123 -0
  54. package/dist/adapters/streamBuffer.js.map +1 -0
  55. package/dist/adapters/tools.d.ts +30 -0
  56. package/dist/adapters/tools.d.ts.map +1 -0
  57. package/dist/adapters/tools.js +219 -0
  58. package/dist/adapters/tools.js.map +1 -0
  59. package/dist/adapters/types.d.ts +82 -0
  60. package/dist/adapters/types.d.ts.map +1 -0
  61. package/dist/adapters/types.js +6 -0
  62. package/dist/adapters/types.js.map +1 -0
  63. package/dist/agents/agentBus.d.ts +160 -0
  64. package/dist/agents/agentBus.d.ts.map +1 -0
  65. package/dist/agents/agentBus.js +350 -0
  66. package/dist/agents/agentBus.js.map +1 -0
  67. package/dist/agents/agentPair.d.ts +215 -0
  68. package/dist/agents/agentPair.d.ts.map +1 -0
  69. package/dist/agents/agentPair.js +456 -0
  70. package/dist/agents/agentPair.js.map +1 -0
  71. package/dist/agents/auditor.d.ts +27 -0
  72. package/dist/agents/auditor.d.ts.map +1 -0
  73. package/dist/agents/auditor.js +238 -0
  74. package/dist/agents/auditor.js.map +1 -0
  75. package/dist/agents/cliStreamParser.d.ts +18 -0
  76. package/dist/agents/cliStreamParser.d.ts.map +1 -0
  77. package/dist/agents/cliStreamParser.js +156 -0
  78. package/dist/agents/cliStreamParser.js.map +1 -0
  79. package/dist/agents/documenter.d.ts +31 -0
  80. package/dist/agents/documenter.d.ts.map +1 -0
  81. package/dist/agents/documenter.js +286 -0
  82. package/dist/agents/documenter.js.map +1 -0
  83. package/dist/agents/draftAnalyzer.d.ts +50 -0
  84. package/dist/agents/draftAnalyzer.d.ts.map +1 -0
  85. package/dist/agents/draftAnalyzer.js +289 -0
  86. package/dist/agents/draftAnalyzer.js.map +1 -0
  87. package/dist/agents/evaluator.d.ts +61 -0
  88. package/dist/agents/evaluator.d.ts.map +1 -0
  89. package/dist/agents/evaluator.js +338 -0
  90. package/dist/agents/evaluator.js.map +1 -0
  91. package/dist/agents/executor.d.ts +33 -0
  92. package/dist/agents/executor.d.ts.map +1 -0
  93. package/dist/agents/executor.js +130 -0
  94. package/dist/agents/executor.js.map +1 -0
  95. package/dist/agents/index.d.ts +10 -0
  96. package/dist/agents/index.d.ts.map +1 -0
  97. package/dist/agents/index.js +10 -0
  98. package/dist/agents/index.js.map +1 -0
  99. package/dist/agents/pairMetrics.d.ts +63 -0
  100. package/dist/agents/pairMetrics.d.ts.map +1 -0
  101. package/dist/agents/pairMetrics.js +232 -0
  102. package/dist/agents/pairMetrics.js.map +1 -0
  103. package/dist/agents/pairPipeline.d.ts +184 -0
  104. package/dist/agents/pairPipeline.d.ts.map +1 -0
  105. package/dist/agents/pairPipeline.js +934 -0
  106. package/dist/agents/pairPipeline.js.map +1 -0
  107. package/dist/agents/pairWebhook.d.ts +59 -0
  108. package/dist/agents/pairWebhook.d.ts.map +1 -0
  109. package/dist/agents/pairWebhook.js +242 -0
  110. package/dist/agents/pairWebhook.js.map +1 -0
  111. package/dist/agents/pipelineFormat.d.ts +8 -0
  112. package/dist/agents/pipelineFormat.d.ts.map +1 -0
  113. package/dist/agents/pipelineFormat.js +65 -0
  114. package/dist/agents/pipelineFormat.js.map +1 -0
  115. package/dist/agents/pipelineGuards.d.ts +23 -0
  116. package/dist/agents/pipelineGuards.d.ts.map +1 -0
  117. package/dist/agents/pipelineGuards.js +257 -0
  118. package/dist/agents/pipelineGuards.js.map +1 -0
  119. package/dist/agents/reviewer.d.ts +37 -0
  120. package/dist/agents/reviewer.d.ts.map +1 -0
  121. package/dist/agents/reviewer.js +214 -0
  122. package/dist/agents/reviewer.js.map +1 -0
  123. package/dist/agents/skillDocumenter.d.ts +23 -0
  124. package/dist/agents/skillDocumenter.d.ts.map +1 -0
  125. package/dist/agents/skillDocumenter.js +219 -0
  126. package/dist/agents/skillDocumenter.js.map +1 -0
  127. package/dist/agents/tester.d.ts +37 -0
  128. package/dist/agents/tester.d.ts.map +1 -0
  129. package/dist/agents/tester.js +309 -0
  130. package/dist/agents/tester.js.map +1 -0
  131. package/dist/automation/autonomousRunner.d.ts +145 -0
  132. package/dist/automation/autonomousRunner.d.ts.map +1 -0
  133. package/dist/automation/autonomousRunner.js +1272 -0
  134. package/dist/automation/autonomousRunner.js.map +1 -0
  135. package/dist/automation/dailyReporter.d.ts +26 -0
  136. package/dist/automation/dailyReporter.d.ts.map +1 -0
  137. package/dist/automation/dailyReporter.js +130 -0
  138. package/dist/automation/dailyReporter.js.map +1 -0
  139. package/dist/automation/index.d.ts +5 -0
  140. package/dist/automation/index.d.ts.map +1 -0
  141. package/dist/automation/index.js +5 -0
  142. package/dist/automation/index.js.map +1 -0
  143. package/dist/automation/longRunningMonitor.d.ts +26 -0
  144. package/dist/automation/longRunningMonitor.d.ts.map +1 -0
  145. package/dist/automation/longRunningMonitor.js +356 -0
  146. package/dist/automation/longRunningMonitor.js.map +1 -0
  147. package/dist/automation/prOwnership.d.ts +18 -0
  148. package/dist/automation/prOwnership.d.ts.map +1 -0
  149. package/dist/automation/prOwnership.js +61 -0
  150. package/dist/automation/prOwnership.js.map +1 -0
  151. package/dist/automation/runnerExecution.d.ts +57 -0
  152. package/dist/automation/runnerExecution.d.ts.map +1 -0
  153. package/dist/automation/runnerExecution.js +701 -0
  154. package/dist/automation/runnerExecution.js.map +1 -0
  155. package/dist/automation/runnerState.d.ts +170 -0
  156. package/dist/automation/runnerState.d.ts.map +1 -0
  157. package/dist/automation/runnerState.js +496 -0
  158. package/dist/automation/runnerState.js.map +1 -0
  159. package/dist/automation/runnerTypes.d.ts +57 -0
  160. package/dist/automation/runnerTypes.d.ts.map +1 -0
  161. package/dist/automation/runnerTypes.js +5 -0
  162. package/dist/automation/runnerTypes.js.map +1 -0
  163. package/dist/automation/scheduler.d.ts +75 -0
  164. package/dist/automation/scheduler.d.ts.map +1 -0
  165. package/dist/automation/scheduler.js +402 -0
  166. package/dist/automation/scheduler.js.map +1 -0
  167. package/dist/azdo/azdo.d.ts +70 -0
  168. package/dist/azdo/azdo.d.ts.map +1 -0
  169. package/dist/azdo/azdo.js +328 -0
  170. package/dist/azdo/azdo.js.map +1 -0
  171. package/dist/azdo/index.d.ts +3 -0
  172. package/dist/azdo/index.d.ts.map +1 -0
  173. package/dist/azdo/index.js +3 -0
  174. package/dist/azdo/index.js.map +1 -0
  175. package/dist/azdo/projectUpdater.d.ts +13 -0
  176. package/dist/azdo/projectUpdater.d.ts.map +1 -0
  177. package/dist/azdo/projectUpdater.js +155 -0
  178. package/dist/azdo/projectUpdater.js.map +1 -0
  179. package/dist/azureDevOps/client.d.ts +75 -0
  180. package/dist/azureDevOps/client.d.ts.map +1 -0
  181. package/dist/azureDevOps/client.js +150 -0
  182. package/dist/azureDevOps/client.js.map +1 -0
  183. package/dist/azureDevOps/hierarchy.d.ts +119 -0
  184. package/dist/azureDevOps/hierarchy.d.ts.map +1 -0
  185. package/dist/azureDevOps/hierarchy.js +470 -0
  186. package/dist/azureDevOps/hierarchy.js.map +1 -0
  187. package/dist/azureDevOps/mapper.d.ts +101 -0
  188. package/dist/azureDevOps/mapper.d.ts.map +1 -0
  189. package/dist/azureDevOps/mapper.js +438 -0
  190. package/dist/azureDevOps/mapper.js.map +1 -0
  191. package/dist/azureDevOps/stateMapping.d.ts +15 -0
  192. package/dist/azureDevOps/stateMapping.d.ts.map +1 -0
  193. package/dist/azureDevOps/stateMapping.js +141 -0
  194. package/dist/azureDevOps/stateMapping.js.map +1 -0
  195. package/dist/cli/authHandler.d.ts +13 -0
  196. package/dist/cli/authHandler.d.ts.map +1 -0
  197. package/dist/cli/authHandler.js +70 -0
  198. package/dist/cli/authHandler.js.map +1 -0
  199. package/dist/cli/checkHandler.d.ts +27 -0
  200. package/dist/cli/checkHandler.d.ts.map +1 -0
  201. package/dist/cli/checkHandler.js +560 -0
  202. package/dist/cli/checkHandler.js.map +1 -0
  203. package/dist/cli/daemon.d.ts +30 -0
  204. package/dist/cli/daemon.d.ts.map +1 -0
  205. package/dist/cli/daemon.js +141 -0
  206. package/dist/cli/daemon.js.map +1 -0
  207. package/dist/cli/factoryCommands.d.ts +3 -0
  208. package/dist/cli/factoryCommands.d.ts.map +1 -0
  209. package/dist/cli/factoryCommands.js +165 -0
  210. package/dist/cli/factoryCommands.js.map +1 -0
  211. package/dist/cli/promptHandler.d.ts +13 -0
  212. package/dist/cli/promptHandler.d.ts.map +1 -0
  213. package/dist/cli/promptHandler.js +193 -0
  214. package/dist/cli/promptHandler.js.map +1 -0
  215. package/dist/cli.d.ts +3 -0
  216. package/dist/cli.d.ts.map +1 -0
  217. package/dist/cli.js +320 -0
  218. package/dist/cli.js.map +1 -0
  219. package/dist/core/agentLifecycle.d.ts +322 -0
  220. package/dist/core/agentLifecycle.d.ts.map +1 -0
  221. package/dist/core/agentLifecycle.js +230 -0
  222. package/dist/core/agentLifecycle.js.map +1 -0
  223. package/dist/core/areaMapping.d.ts +9 -0
  224. package/dist/core/areaMapping.d.ts.map +1 -0
  225. package/dist/core/areaMapping.js +37 -0
  226. package/dist/core/areaMapping.js.map +1 -0
  227. package/dist/core/config.d.ts +469 -0
  228. package/dist/core/config.d.ts.map +1 -0
  229. package/dist/core/config.js +780 -0
  230. package/dist/core/config.js.map +1 -0
  231. package/dist/core/dashboardContract.d.ts +204 -0
  232. package/dist/core/dashboardContract.d.ts.map +1 -0
  233. package/dist/core/dashboardContract.js +205 -0
  234. package/dist/core/dashboardContract.js.map +1 -0
  235. package/dist/core/devopsModel.d.ts +138 -0
  236. package/dist/core/devopsModel.d.ts.map +1 -0
  237. package/dist/core/devopsModel.js +137 -0
  238. package/dist/core/devopsModel.js.map +1 -0
  239. package/dist/core/envFile.d.ts +11 -0
  240. package/dist/core/envFile.d.ts.map +1 -0
  241. package/dist/core/envFile.js +104 -0
  242. package/dist/core/envFile.js.map +1 -0
  243. package/dist/core/eventHub.d.ts +220 -0
  244. package/dist/core/eventHub.d.ts.map +1 -0
  245. package/dist/core/eventHub.js +136 -0
  246. package/dist/core/eventHub.js.map +1 -0
  247. package/dist/core/index.d.ts +8 -0
  248. package/dist/core/index.d.ts.map +1 -0
  249. package/dist/core/index.js +7 -0
  250. package/dist/core/index.js.map +1 -0
  251. package/dist/core/laneExecutionState.d.ts +29 -0
  252. package/dist/core/laneExecutionState.d.ts.map +1 -0
  253. package/dist/core/laneExecutionState.js +18 -0
  254. package/dist/core/laneExecutionState.js.map +1 -0
  255. package/dist/core/laneStatus.d.ts +49 -0
  256. package/dist/core/laneStatus.d.ts.map +1 -0
  257. package/dist/core/laneStatus.js +153 -0
  258. package/dist/core/laneStatus.js.map +1 -0
  259. package/dist/core/prSidecar.d.ts +96 -0
  260. package/dist/core/prSidecar.d.ts.map +1 -0
  261. package/dist/core/prSidecar.js +33 -0
  262. package/dist/core/prSidecar.js.map +1 -0
  263. package/dist/core/runtimeConfig.d.ts +6 -0
  264. package/dist/core/runtimeConfig.d.ts.map +1 -0
  265. package/dist/core/runtimeConfig.js +24 -0
  266. package/dist/core/runtimeConfig.js.map +1 -0
  267. package/dist/core/scmProvider.d.ts +19 -0
  268. package/dist/core/scmProvider.d.ts.map +1 -0
  269. package/dist/core/scmProvider.js +38 -0
  270. package/dist/core/scmProvider.js.map +1 -0
  271. package/dist/core/service.d.ts +10 -0
  272. package/dist/core/service.d.ts.map +1 -0
  273. package/dist/core/service.js +297 -0
  274. package/dist/core/service.js.map +1 -0
  275. package/dist/core/traceCollector.d.ts +105 -0
  276. package/dist/core/traceCollector.d.ts.map +1 -0
  277. package/dist/core/traceCollector.js +141 -0
  278. package/dist/core/traceCollector.js.map +1 -0
  279. package/dist/core/types.d.ts +432 -0
  280. package/dist/core/types.d.ts.map +1 -0
  281. package/dist/core/types.js +2 -0
  282. package/dist/core/types.js.map +1 -0
  283. package/dist/core/workItemMapper.d.ts +39 -0
  284. package/dist/core/workItemMapper.d.ts.map +1 -0
  285. package/dist/core/workItemMapper.js +427 -0
  286. package/dist/core/workItemMapper.js.map +1 -0
  287. package/dist/core/workItemModel.d.ts +120 -0
  288. package/dist/core/workItemModel.d.ts.map +1 -0
  289. package/dist/core/workItemModel.js +104 -0
  290. package/dist/core/workItemModel.js.map +1 -0
  291. package/dist/core/workItemPayload.d.ts +195 -0
  292. package/dist/core/workItemPayload.d.ts.map +1 -0
  293. package/dist/core/workItemPayload.js +24 -0
  294. package/dist/core/workItemPayload.js.map +1 -0
  295. package/dist/core/workspaceConfig.d.ts +57 -0
  296. package/dist/core/workspaceConfig.d.ts.map +1 -0
  297. package/dist/core/workspaceConfig.js +184 -0
  298. package/dist/core/workspaceConfig.js.map +1 -0
  299. package/dist/doctor.d.ts +18 -0
  300. package/dist/doctor.d.ts.map +1 -0
  301. package/dist/doctor.js +34 -0
  302. package/dist/doctor.js.map +1 -0
  303. package/dist/factory/activeSkill.d.ts +11 -0
  304. package/dist/factory/activeSkill.d.ts.map +1 -0
  305. package/dist/factory/activeSkill.js +44 -0
  306. package/dist/factory/activeSkill.js.map +1 -0
  307. package/dist/factory/assignment.d.ts +54 -0
  308. package/dist/factory/assignment.d.ts.map +1 -0
  309. package/dist/factory/assignment.js +94 -0
  310. package/dist/factory/assignment.js.map +1 -0
  311. package/dist/factory/auditLog.d.ts +10 -0
  312. package/dist/factory/auditLog.d.ts.map +1 -0
  313. package/dist/factory/auditLog.js +38 -0
  314. package/dist/factory/auditLog.js.map +1 -0
  315. package/dist/factory/closureRequirements.d.ts +12 -0
  316. package/dist/factory/closureRequirements.d.ts.map +1 -0
  317. package/dist/factory/closureRequirements.js +30 -0
  318. package/dist/factory/closureRequirements.js.map +1 -0
  319. package/dist/factory/delegationPrompt.d.ts +3 -0
  320. package/dist/factory/delegationPrompt.d.ts.map +1 -0
  321. package/dist/factory/delegationPrompt.js +16 -0
  322. package/dist/factory/delegationPrompt.js.map +1 -0
  323. package/dist/factory/http.d.ts +3 -0
  324. package/dist/factory/http.d.ts.map +1 -0
  325. package/dist/factory/http.js +555 -0
  326. package/dist/factory/http.js.map +1 -0
  327. package/dist/factory/lifecyclePushMap.d.ts +4 -0
  328. package/dist/factory/lifecyclePushMap.d.ts.map +1 -0
  329. package/dist/factory/lifecyclePushMap.js +7 -0
  330. package/dist/factory/lifecyclePushMap.js.map +1 -0
  331. package/dist/factory/missions.d.ts +125 -0
  332. package/dist/factory/missions.d.ts.map +1 -0
  333. package/dist/factory/missions.js +304 -0
  334. package/dist/factory/missions.js.map +1 -0
  335. package/dist/factory/mode.d.ts +9 -0
  336. package/dist/factory/mode.d.ts.map +1 -0
  337. package/dist/factory/mode.js +30 -0
  338. package/dist/factory/mode.js.map +1 -0
  339. package/dist/factory/operatorActiveSkill.d.ts +15 -0
  340. package/dist/factory/operatorActiveSkill.d.ts.map +1 -0
  341. package/dist/factory/operatorActiveSkill.js +95 -0
  342. package/dist/factory/operatorActiveSkill.js.map +1 -0
  343. package/dist/factory/paseoDispatcher.d.ts +52 -0
  344. package/dist/factory/paseoDispatcher.d.ts.map +1 -0
  345. package/dist/factory/paseoDispatcher.js +122 -0
  346. package/dist/factory/paseoDispatcher.js.map +1 -0
  347. package/dist/factory/paseoLifecycle.d.ts +32 -0
  348. package/dist/factory/paseoLifecycle.d.ts.map +1 -0
  349. package/dist/factory/paseoLifecycle.js +260 -0
  350. package/dist/factory/paseoLifecycle.js.map +1 -0
  351. package/dist/factory/paths.d.ts +31 -0
  352. package/dist/factory/paths.d.ts.map +1 -0
  353. package/dist/factory/paths.js +139 -0
  354. package/dist/factory/paths.js.map +1 -0
  355. package/dist/factory/progressWatchdog.d.ts +58 -0
  356. package/dist/factory/progressWatchdog.d.ts.map +1 -0
  357. package/dist/factory/progressWatchdog.js +160 -0
  358. package/dist/factory/progressWatchdog.js.map +1 -0
  359. package/dist/factory/roster.d.ts +59 -0
  360. package/dist/factory/roster.d.ts.map +1 -0
  361. package/dist/factory/roster.js +116 -0
  362. package/dist/factory/roster.js.map +1 -0
  363. package/dist/factory/runtime.d.ts +44 -0
  364. package/dist/factory/runtime.d.ts.map +1 -0
  365. package/dist/factory/runtime.js +238 -0
  366. package/dist/factory/runtime.js.map +1 -0
  367. package/dist/factory/sync.d.ts +29 -0
  368. package/dist/factory/sync.d.ts.map +1 -0
  369. package/dist/factory/sync.js +77 -0
  370. package/dist/factory/sync.js.map +1 -0
  371. package/dist/factory/workitemQueues.d.ts +37 -0
  372. package/dist/factory/workitemQueues.d.ts.map +1 -0
  373. package/dist/factory/workitemQueues.js +99 -0
  374. package/dist/factory/workitemQueues.js.map +1 -0
  375. package/dist/factory/workitemTriage.d.ts +9 -0
  376. package/dist/factory/workitemTriage.d.ts.map +1 -0
  377. package/dist/factory/workitemTriage.js +81 -0
  378. package/dist/factory/workitemTriage.js.map +1 -0
  379. package/dist/hooks.d.ts +18 -0
  380. package/dist/hooks.d.ts.map +1 -0
  381. package/dist/hooks.js +96 -0
  382. package/dist/hooks.js.map +1 -0
  383. package/dist/index.d.ts +3 -0
  384. package/dist/index.d.ts.map +1 -0
  385. package/dist/index.js +90 -0
  386. package/dist/index.js.map +1 -0
  387. package/dist/install/agentCatalog.d.ts +7 -0
  388. package/dist/install/agentCatalog.d.ts.map +1 -0
  389. package/dist/install/agentCatalog.js +28 -0
  390. package/dist/install/agentCatalog.js.map +1 -0
  391. package/dist/install/bundlePaths.d.ts +10 -0
  392. package/dist/install/bundlePaths.d.ts.map +1 -0
  393. package/dist/install/bundlePaths.js +30 -0
  394. package/dist/install/bundlePaths.js.map +1 -0
  395. package/dist/install/codex.d.ts +43 -0
  396. package/dist/install/codex.d.ts.map +1 -0
  397. package/dist/install/codex.js +207 -0
  398. package/dist/install/codex.js.map +1 -0
  399. package/dist/install/enactHome.d.ts +37 -0
  400. package/dist/install/enactHome.d.ts.map +1 -0
  401. package/dist/install/enactHome.js +152 -0
  402. package/dist/install/enactHome.js.map +1 -0
  403. package/dist/install/plugins.d.ts +115 -0
  404. package/dist/install/plugins.d.ts.map +1 -0
  405. package/dist/install/plugins.js +259 -0
  406. package/dist/install/plugins.js.map +1 -0
  407. package/dist/install/setup.d.ts +33 -0
  408. package/dist/install/setup.d.ts.map +1 -0
  409. package/dist/install/setup.js +167 -0
  410. package/dist/install/setup.js.map +1 -0
  411. package/dist/locale/en.d.ts +3 -0
  412. package/dist/locale/en.d.ts.map +1 -0
  413. package/dist/locale/en.js +435 -0
  414. package/dist/locale/en.js.map +1 -0
  415. package/dist/locale/index.d.ts +28 -0
  416. package/dist/locale/index.d.ts.map +1 -0
  417. package/dist/locale/index.js +84 -0
  418. package/dist/locale/index.js.map +1 -0
  419. package/dist/locale/prompts/en.d.ts +3 -0
  420. package/dist/locale/prompts/en.d.ts.map +1 -0
  421. package/dist/locale/prompts/en.js +254 -0
  422. package/dist/locale/prompts/en.js.map +1 -0
  423. package/dist/locale/types.d.ts +433 -0
  424. package/dist/locale/types.d.ts.map +1 -0
  425. package/dist/locale/types.js +5 -0
  426. package/dist/locale/types.js.map +1 -0
  427. package/dist/mcp/server.d.ts +489 -0
  428. package/dist/mcp/server.d.ts.map +1 -0
  429. package/dist/mcp/server.js +597 -0
  430. package/dist/mcp/server.js.map +1 -0
  431. package/dist/orchestration/decisionEngine.d.ts +175 -0
  432. package/dist/orchestration/decisionEngine.d.ts.map +1 -0
  433. package/dist/orchestration/decisionEngine.js +471 -0
  434. package/dist/orchestration/decisionEngine.js.map +1 -0
  435. package/dist/orchestration/index.d.ts +5 -0
  436. package/dist/orchestration/index.d.ts.map +1 -0
  437. package/dist/orchestration/index.js +5 -0
  438. package/dist/orchestration/index.js.map +1 -0
  439. package/dist/orchestration/workItemParser.d.ts +67 -0
  440. package/dist/orchestration/workItemParser.d.ts.map +1 -0
  441. package/dist/orchestration/workItemParser.js +560 -0
  442. package/dist/orchestration/workItemParser.js.map +1 -0
  443. package/dist/orchestration/workItemScheduler.d.ts +141 -0
  444. package/dist/orchestration/workItemScheduler.d.ts.map +1 -0
  445. package/dist/orchestration/workItemScheduler.js +317 -0
  446. package/dist/orchestration/workItemScheduler.js.map +1 -0
  447. package/dist/orchestration/workflow.d.ts +145 -0
  448. package/dist/orchestration/workflow.d.ts.map +1 -0
  449. package/dist/orchestration/workflow.js +301 -0
  450. package/dist/orchestration/workflow.js.map +1 -0
  451. package/dist/providers/codexSessions.d.ts +93 -0
  452. package/dist/providers/codexSessions.d.ts.map +1 -0
  453. package/dist/providers/codexSessions.js +366 -0
  454. package/dist/providers/codexSessions.js.map +1 -0
  455. package/dist/registry/bsDetector.d.ts +24 -0
  456. package/dist/registry/bsDetector.d.ts.map +1 -0
  457. package/dist/registry/bsDetector.js +276 -0
  458. package/dist/registry/bsDetector.js.map +1 -0
  459. package/dist/registry/entityScanner.d.ts +36 -0
  460. package/dist/registry/entityScanner.d.ts.map +1 -0
  461. package/dist/registry/entityScanner.js +693 -0
  462. package/dist/registry/entityScanner.js.map +1 -0
  463. package/dist/registry/index.d.ts +9 -0
  464. package/dist/registry/index.d.ts.map +1 -0
  465. package/dist/registry/index.js +13 -0
  466. package/dist/registry/index.js.map +1 -0
  467. package/dist/registry/schema.d.ts +307 -0
  468. package/dist/registry/schema.d.ts.map +1 -0
  469. package/dist/registry/schema.js +139 -0
  470. package/dist/registry/schema.js.map +1 -0
  471. package/dist/registry/sqliteStore.d.ts +101 -0
  472. package/dist/registry/sqliteStore.d.ts.map +1 -0
  473. package/dist/registry/sqliteStore.js +688 -0
  474. package/dist/registry/sqliteStore.js.map +1 -0
  475. package/dist/registry/workItemBridge.d.ts +8 -0
  476. package/dist/registry/workItemBridge.d.ts.map +1 -0
  477. package/dist/registry/workItemBridge.js +30 -0
  478. package/dist/registry/workItemBridge.js.map +1 -0
  479. package/dist/runners/cliRunner.d.ts +11 -0
  480. package/dist/runners/cliRunner.d.ts.map +1 -0
  481. package/dist/runners/cliRunner.js +193 -0
  482. package/dist/runners/cliRunner.js.map +1 -0
  483. package/dist/support/apiCache.d.ts +85 -0
  484. package/dist/support/apiCache.d.ts.map +1 -0
  485. package/dist/support/apiCache.js +163 -0
  486. package/dist/support/apiCache.js.map +1 -0
  487. package/dist/support/chat.d.ts +3 -0
  488. package/dist/support/chat.d.ts.map +1 -0
  489. package/dist/support/chat.js +305 -0
  490. package/dist/support/chat.js.map +1 -0
  491. package/dist/support/chatBackend.d.ts +25 -0
  492. package/dist/support/chatBackend.d.ts.map +1 -0
  493. package/dist/support/chatBackend.js +289 -0
  494. package/dist/support/chatBackend.js.map +1 -0
  495. package/dist/support/chatTui.d.ts +3 -0
  496. package/dist/support/chatTui.d.ts.map +1 -0
  497. package/dist/support/chatTui.js +1082 -0
  498. package/dist/support/chatTui.js.map +1 -0
  499. package/dist/support/costTracker.d.ts +29 -0
  500. package/dist/support/costTracker.d.ts.map +1 -0
  501. package/dist/support/costTracker.js +113 -0
  502. package/dist/support/costTracker.js.map +1 -0
  503. package/dist/support/dashboardHtml.d.ts +5 -0
  504. package/dist/support/dashboardHtml.d.ts.map +1 -0
  505. package/dist/support/dashboardHtml.js +2629 -0
  506. package/dist/support/dashboardHtml.js.map +1 -0
  507. package/dist/support/dev.d.ts +55 -0
  508. package/dist/support/dev.d.ts.map +1 -0
  509. package/dist/support/dev.js +298 -0
  510. package/dist/support/dev.js.map +1 -0
  511. package/dist/support/editParser.d.ts +37 -0
  512. package/dist/support/editParser.d.ts.map +1 -0
  513. package/dist/support/editParser.js +365 -0
  514. package/dist/support/editParser.js.map +1 -0
  515. package/dist/support/ghosttyThemeCatalog.generated.d.ts +2 -0
  516. package/dist/support/ghosttyThemeCatalog.generated.d.ts.map +1 -0
  517. package/dist/support/ghosttyThemeCatalog.generated.js +11116 -0
  518. package/dist/support/ghosttyThemeCatalog.generated.js.map +1 -0
  519. package/dist/support/gitStatus.d.ts +21 -0
  520. package/dist/support/gitStatus.d.ts.map +1 -0
  521. package/dist/support/gitStatus.js +108 -0
  522. package/dist/support/gitStatus.js.map +1 -0
  523. package/dist/support/gitTracker.d.ts +30 -0
  524. package/dist/support/gitTracker.d.ts.map +1 -0
  525. package/dist/support/gitTracker.js +143 -0
  526. package/dist/support/gitTracker.js.map +1 -0
  527. package/dist/support/index.d.ts +12 -0
  528. package/dist/support/index.d.ts.map +1 -0
  529. package/dist/support/index.js +12 -0
  530. package/dist/support/index.js.map +1 -0
  531. package/dist/support/planner.d.ts +64 -0
  532. package/dist/support/planner.d.ts.map +1 -0
  533. package/dist/support/planner.js +396 -0
  534. package/dist/support/planner.js.map +1 -0
  535. package/dist/support/projectMapper.d.ts +46 -0
  536. package/dist/support/projectMapper.d.ts.map +1 -0
  537. package/dist/support/projectMapper.js +273 -0
  538. package/dist/support/projectMapper.js.map +1 -0
  539. package/dist/support/pty-helper.py +117 -0
  540. package/dist/support/quotaTracker.d.ts +29 -0
  541. package/dist/support/quotaTracker.d.ts.map +1 -0
  542. package/dist/support/quotaTracker.js +89 -0
  543. package/dist/support/quotaTracker.js.map +1 -0
  544. package/dist/support/rateLimiter.d.ts +101 -0
  545. package/dist/support/rateLimiter.d.ts.map +1 -0
  546. package/dist/support/rateLimiter.js +219 -0
  547. package/dist/support/rateLimiter.js.map +1 -0
  548. package/dist/support/rollback.d.ts +61 -0
  549. package/dist/support/rollback.d.ts.map +1 -0
  550. package/dist/support/rollback.js +329 -0
  551. package/dist/support/rollback.js.map +1 -0
  552. package/dist/support/sharedShell.d.ts +17 -0
  553. package/dist/support/sharedShell.d.ts.map +1 -0
  554. package/dist/support/sharedShell.js +439 -0
  555. package/dist/support/sharedShell.js.map +1 -0
  556. package/dist/support/stuckDetector.d.ts +68 -0
  557. package/dist/support/stuckDetector.d.ts.map +1 -0
  558. package/dist/support/stuckDetector.js +174 -0
  559. package/dist/support/stuckDetector.js.map +1 -0
  560. package/dist/support/terminalBridge.d.ts +18 -0
  561. package/dist/support/terminalBridge.d.ts.map +1 -0
  562. package/dist/support/terminalBridge.js +553 -0
  563. package/dist/support/terminalBridge.js.map +1 -0
  564. package/dist/support/timeWindow.d.ts +60 -0
  565. package/dist/support/timeWindow.d.ts.map +1 -0
  566. package/dist/support/timeWindow.js +236 -0
  567. package/dist/support/timeWindow.js.map +1 -0
  568. package/dist/support/uiThemes.d.ts +44 -0
  569. package/dist/support/uiThemes.d.ts.map +1 -0
  570. package/dist/support/uiThemes.js +290 -0
  571. package/dist/support/uiThemes.js.map +1 -0
  572. package/dist/support/web.d.ts +29 -0
  573. package/dist/support/web.d.ts.map +1 -0
  574. package/dist/support/web.js +1097 -0
  575. package/dist/support/web.js.map +1 -0
  576. package/dist/support/worktreeManager.d.ts +20 -0
  577. package/dist/support/worktreeManager.d.ts.map +1 -0
  578. package/dist/support/worktreeManager.js +140 -0
  579. package/dist/support/worktreeManager.js.map +1 -0
  580. package/dist/task_state_model.py +55 -0
  581. package/dist/workItemState/store.d.ts +122 -0
  582. package/dist/workItemState/store.d.ts.map +1 -0
  583. package/dist/workItemState/store.js +438 -0
  584. package/dist/workItemState/store.js.map +1 -0
  585. package/dist/workItems/azdoBridge.d.ts +42 -0
  586. package/dist/workItems/azdoBridge.d.ts.map +1 -0
  587. package/dist/workItems/azdoBridge.js +143 -0
  588. package/dist/workItems/azdoBridge.js.map +1 -0
  589. package/dist/workItems/azdoSyncRuntime.d.ts +28 -0
  590. package/dist/workItems/azdoSyncRuntime.d.ts.map +1 -0
  591. package/dist/workItems/azdoSyncRuntime.js +158 -0
  592. package/dist/workItems/azdoSyncRuntime.js.map +1 -0
  593. package/dist/workItems/azureDevOpsSync.d.ts +128 -0
  594. package/dist/workItems/azureDevOpsSync.d.ts.map +1 -0
  595. package/dist/workItems/azureDevOpsSync.js +748 -0
  596. package/dist/workItems/azureDevOpsSync.js.map +1 -0
  597. package/dist/workItems/helpers.d.ts +11 -0
  598. package/dist/workItems/helpers.d.ts.map +1 -0
  599. package/dist/workItems/helpers.js +17 -0
  600. package/dist/workItems/helpers.js.map +1 -0
  601. package/dist/workItems/index.d.ts +21 -0
  602. package/dist/workItems/index.d.ts.map +1 -0
  603. package/dist/workItems/index.js +89 -0
  604. package/dist/workItems/index.js.map +1 -0
  605. package/dist/workItems/localWorkItemFetcher.d.ts +55 -0
  606. package/dist/workItems/localWorkItemFetcher.d.ts.map +1 -0
  607. package/dist/workItems/localWorkItemFetcher.js +209 -0
  608. package/dist/workItems/localWorkItemFetcher.js.map +1 -0
  609. package/dist/workItems/migrations/001_rename_workItem_to_work_item.sql +10 -0
  610. package/dist/workItems/postgresStore.d.ts +78 -0
  611. package/dist/workItems/postgresStore.d.ts.map +1 -0
  612. package/dist/workItems/postgresStore.js +937 -0
  613. package/dist/workItems/postgresStore.js.map +1 -0
  614. package/dist/workItems/schema.d.ts +257 -0
  615. package/dist/workItems/schema.d.ts.map +1 -0
  616. package/dist/workItems/schema.js +176 -0
  617. package/dist/workItems/schema.js.map +1 -0
  618. package/dist/workItems/sqliteStore.d.ts +124 -0
  619. package/dist/workItems/sqliteStore.d.ts.map +1 -0
  620. package/dist/workItems/sqliteStore.js +713 -0
  621. package/dist/workItems/sqliteStore.js.map +1 -0
  622. package/dist/workItems/workItemBoardHtml.d.ts +5 -0
  623. package/dist/workItems/workItemBoardHtml.d.ts.map +1 -0
  624. package/dist/workItems/workItemBoardHtml.js +2192 -0
  625. package/dist/workItems/workItemBoardHtml.js.map +1 -0
  626. package/package.json +99 -0
  627. package/templates/AGENTS.md +432 -0
  628. package/templates/BOOT.md +25 -0
  629. package/templates/BOOTSTRAP.md +50 -0
  630. package/templates/CHANGELOG_AUDIT.md +74 -0
  631. package/templates/HEARTBEAT.md +86 -0
  632. package/templates/IDENTITY.md +27 -0
  633. package/templates/PR_LAND.md +75 -0
  634. package/templates/PR_REVIEW.md +97 -0
  635. package/templates/SOUL.dev.md +52 -0
  636. package/templates/SOUL.md +81 -0
  637. package/templates/TOOLS.md +52 -0
  638. package/templates/USER.md +22 -0
  639. package/templates/WORKITEM_ANALYSIS.md +31 -0
  640. package/templates/agents/executor.md +26 -0
  641. package/templates/agents/plan.md +22 -0
  642. package/templates/agents/ralph.md +37 -0
  643. package/templates/agents/review.md +22 -0
  644. package/templates/agents/team.md +39 -0
@@ -0,0 +1,470 @@
1
+ // ============================================
2
+ // EnactFactory - Azure DevOps Hierarchy Provisioning
3
+ // ============================================
4
+ //
5
+ // Provisions a stable Epic -> Feature -> (PBI/Bug) hierarchy in production
6
+ // Azure DevOps for orphaned work items (open PBIs/Bugs that have no parent).
7
+ //
8
+ // Design constraints:
9
+ // - This module CREATES real Epics/Features in production AzDO and re-parents
10
+ // work items. It MUST be idempotent: find-or-create, never duplicate.
11
+ // - Idempotency is enforced two ways:
12
+ // 1. A persistent KV cache (store.getSyncMeta / setSyncMeta) keyed by
13
+ // project + title so repeated backfills (across process restarts)
14
+ // re-use the same Epic/Feature ids.
15
+ // 2. A WIQL "find by title + type" probe so even a cold cache will adopt
16
+ // an existing Epic/Feature instead of creating a duplicate.
17
+ // 3. An in-run Map cache so a single backfill over many orphans never
18
+ // re-hits getSyncMeta / WIQL for the same Epic/Feature.
19
+ // - One bad orphan never aborts the backfill (per-item try/catch -> errors[]).
20
+ //
21
+ // Naming scheme:
22
+ // Epic : `${projectName}-v${major}.0.0` (e.g. "enact-factory-v1.0.0")
23
+ // Feature : `v${major}.${minor}.0` (e.g. "v1.3.0") -- for PBIs
24
+ // Feature : "Maintenance" -- for Bugs
25
+ // ============================================
26
+ import { readFileSync } from 'node:fs';
27
+ import { join } from 'node:path';
28
+ import { areaToProjectId } from '../core/areaMapping.js';
29
+ // ---------------------------------------------------------------------------
30
+ // Constants
31
+ // ---------------------------------------------------------------------------
32
+ /** Feature title used to collect all Bug-type orphans for a repo. */
33
+ export const MAINTENANCE_FEATURE_TITLE = 'Maintenance';
34
+ /** Default assignee stamped on every Epic/Feature this module creates. */
35
+ const DEFAULT_ASSIGNEE = 'Tarun Rana <tarun.rana@amsterdamdatalabs.com>';
36
+ /** Floor that all repos provision against (the user wants minimum v1.0.0). */
37
+ const VERSION_FLOOR = { major: 1, minor: 0, patch: 0 };
38
+ /**
39
+ * Read `${repoPath}/package.json` and parse its `version` semver.
40
+ * On any failure (missing file/field/parse error) returns the floor
41
+ * { major: 1, minor: 0, patch: 0 }. Major is always floored at 1.
42
+ */
43
+ export function getRepoVersion(repoPath) {
44
+ try {
45
+ const pkgPath = join(repoPath, 'package.json');
46
+ const raw = readFileSync(pkgPath, 'utf8');
47
+ const parsed = JSON.parse(raw);
48
+ const version = parsed.version;
49
+ if (typeof version !== 'string')
50
+ return { ...VERSION_FLOOR };
51
+ // Strip a leading 'v' and any pre-release / build metadata suffix.
52
+ const core = version.trim().replace(/^v/i, '').split(/[-+]/)[0];
53
+ const parts = core.split('.');
54
+ const major = Number.parseInt(parts[0] ?? '', 10);
55
+ const minor = Number.parseInt(parts[1] ?? '', 10);
56
+ const patch = Number.parseInt(parts[2] ?? '', 10);
57
+ if (!Number.isFinite(major))
58
+ return { ...VERSION_FLOOR };
59
+ return {
60
+ major: Math.max(1, major),
61
+ minor: Number.isFinite(minor) ? Math.max(0, minor) : 0,
62
+ patch: Number.isFinite(patch) ? Math.max(0, patch) : 0,
63
+ };
64
+ }
65
+ catch {
66
+ return { ...VERSION_FLOOR };
67
+ }
68
+ }
69
+ // ---------------------------------------------------------------------------
70
+ // Naming helpers (pure)
71
+ // ---------------------------------------------------------------------------
72
+ /** Epic title for a repo at a given major version, e.g. "enact-factory-v1.0.0". */
73
+ export function epicTitle(projectName, major) {
74
+ return `${projectName}-v${Math.max(1, major)}.0.0`;
75
+ }
76
+ /** Feature title for a repo version line, e.g. "v1.3.0". */
77
+ export function versionFeatureTitle(major, minor) {
78
+ return `v${Math.max(1, major)}.${minor}.0`;
79
+ }
80
+ /** Convert an area path slug into an AzDO area path, e.g. 'Enact/Factory' -> 'Enact\\Factory'. */
81
+ export function areaToAzdoAreaPath(area) {
82
+ return area.replace(/\//g, '\\');
83
+ }
84
+ /** Basename of a path, e.g. '/repos/enact-factory' -> 'enact-factory'. */
85
+ function pathBasename(p) {
86
+ const parts = p.replace(/[\\/]+$/, '').split(/[\\/]/);
87
+ return parts[parts.length - 1] ?? '';
88
+ }
89
+ /** Lowercase + hyphenate a name for tolerant comparison against a projectId. */
90
+ function slugify(name) {
91
+ return name.trim().toLowerCase().replace(/[\s/_]+/g, '-');
92
+ }
93
+ /**
94
+ * Resolve the repo for a given area using the EXPLICIT hardcoded area->projectId
95
+ * mapping. Returns null when the area is not in the map (the caller then skips
96
+ * the orphan — intended). When mapped, the projectId slug is the repo name used
97
+ * for the Epic title; we best-effort recover a ProjectConfig path (by path
98
+ * basename or slugified name) for version detection — a miss floors to v1.0.0.
99
+ */
100
+ export function resolveRepo(area, projects) {
101
+ const projectId = areaToProjectId(area);
102
+ if (!projectId)
103
+ return null;
104
+ const match = projects.find((p) => pathBasename(p.path) === projectId || slugify(p.name) === projectId);
105
+ return { name: projectId, path: match?.path };
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // Parent relation patch
109
+ // ---------------------------------------------------------------------------
110
+ /**
111
+ * Build the JSON-patch that parents a work item under `parentId`. Mirrors the
112
+ * shape in src/azdo/azdo.ts (createParentRelationPatch) but takes org/project
113
+ * explicitly so it has no dependency on global config.
114
+ */
115
+ function buildParentRelationPatch(organization, project, parentId) {
116
+ return {
117
+ op: 'add',
118
+ path: '/relations/-',
119
+ value: {
120
+ rel: 'System.LinkTypes.Hierarchy-Reverse',
121
+ url: `https://dev.azure.com/${organization}/${project}/_apis/wit/workItems/${parentId}`,
122
+ },
123
+ };
124
+ }
125
+ function fieldPatch(path, value) {
126
+ return { op: 'add', path, value };
127
+ }
128
+ // ---------------------------------------------------------------------------
129
+ // Retry (429 / 503 only)
130
+ // ---------------------------------------------------------------------------
131
+ function isRetryableStatus(err) {
132
+ const status = err?.status;
133
+ return status === 429 || status === 503;
134
+ }
135
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
136
+ /**
137
+ * Retry `fn` on 429/503 with exponential backoff (capped). Any non-throttle
138
+ * error is rethrown immediately. Deliberately self-contained to avoid a
139
+ * dependency cycle with azureDevOpsSync.ts.
140
+ */
141
+ export async function withRetry(fn, attempts = 3, baseMs = 1000, capMs = 30000) {
142
+ let lastErr;
143
+ for (let attempt = 0; attempt < attempts; attempt++) {
144
+ try {
145
+ return await fn();
146
+ }
147
+ catch (err) {
148
+ lastErr = err;
149
+ if (!isRetryableStatus(err) || attempt === attempts - 1)
150
+ throw err;
151
+ const delay = Math.min(capMs, baseMs * 2 ** attempt);
152
+ await sleep(delay);
153
+ }
154
+ }
155
+ throw lastErr;
156
+ }
157
+ // ---------------------------------------------------------------------------
158
+ // Find-or-create
159
+ // ---------------------------------------------------------------------------
160
+ /** Escape a WIQL string literal by doubling embedded single quotes. */
161
+ function escapeWiqlLiteral(value) {
162
+ return value.replace(/'/g, "''");
163
+ }
164
+ /**
165
+ * Find ALL work items of an exact title + type within a project via WIQL.
166
+ * Titles are NOT unique across repos (e.g. 'Maintenance', 'v1.0.0'), so callers
167
+ * that need a repo-scoped match must further filter by parent (see
168
+ * findFeatureUnderEpic). Returns every matching id.
169
+ */
170
+ async function findWorkItemIdsByTitleAndType(client, project, type, title) {
171
+ const wiql = `SELECT [System.Id] FROM WorkItems WHERE ` +
172
+ `[System.TeamProject] = '${escapeWiqlLiteral(project)}' AND ` +
173
+ `[System.WorkItemType] = '${escapeWiqlLiteral(type)}' AND ` +
174
+ `[System.Title] = '${escapeWiqlLiteral(title)}'`;
175
+ return withRetry(() => client.queryByWiql(wiql));
176
+ }
177
+ /**
178
+ * Find a work item by exact title + type within a project via WIQL.
179
+ * Returns the first matching id, or null. Project-wide — only safe for items
180
+ * whose title is unique per project (Epics: '<projectId>-v<major>.0.0').
181
+ */
182
+ export async function findWorkItemByTitleAndType(client, project, type, title) {
183
+ const ids = await findWorkItemIdsByTitleAndType(client, project, type, title);
184
+ return ids[0] ?? null;
185
+ }
186
+ /**
187
+ * Extract the parent work item id from a Hierarchy-Reverse relation, matching
188
+ * the extraction used by azureDevOpsSync.extractParentId (/workItems/(\d+)/i).
189
+ */
190
+ function parentIdFromRelationUrl(url) {
191
+ if (!url)
192
+ return null;
193
+ const match = url.match(/workItems\/(\d+)/i);
194
+ return match ? Number(match[1]) : null;
195
+ }
196
+ /**
197
+ * Index of the work item's Hierarchy-Reverse (parent) relation within its
198
+ * relations array, or -1 if it has none. Used to build the `remove` patch when
199
+ * re-parenting (AzDO removes relations by positional index).
200
+ */
201
+ function parentRelationIndex(workItem) {
202
+ const relations = workItem.relations ?? [];
203
+ return relations.findIndex((r) => r.rel === 'System.LinkTypes.Hierarchy-Reverse');
204
+ }
205
+ /**
206
+ * Find a Feature with `title` that is a CHILD of `epicId`. Feature titles are
207
+ * NOT unique across repos, so we WIQL all same-title Features in the project,
208
+ * batch-fetch them, and return the first whose Hierarchy-Reverse parent
209
+ * resolves to `epicId`. Returns null when no same-title Feature is parented to
210
+ * this Epic (caller then creates one under the correct Epic).
211
+ */
212
+ export async function findFeatureUnderEpic(client, project, epicId, title) {
213
+ const candidateIds = await findWorkItemIdsByTitleAndType(client, project, 'Feature', title);
214
+ if (candidateIds.length === 0)
215
+ return null;
216
+ const candidates = await withRetry(() => client.getWorkItems(candidateIds));
217
+ for (const candidate of candidates) {
218
+ const parent = candidate.relations
219
+ ?.filter((r) => r.rel === 'System.LinkTypes.Hierarchy-Reverse')
220
+ .map((r) => parentIdFromRelationUrl(r.url))
221
+ .find((id) => id != null);
222
+ if (parent === epicId)
223
+ return candidate.id;
224
+ }
225
+ return null;
226
+ }
227
+ /**
228
+ * Resolve a cached id, checking the in-run memo first then the persistent KV
229
+ * store. Returns the id if present, else null. Populates the memo on a KV hit.
230
+ */
231
+ async function readCachedId(ctx, cacheKey, validate) {
232
+ const memoHit = ctx.memo.get(cacheKey);
233
+ if (memoHit !== undefined) {
234
+ if (!validate || await validate(memoHit))
235
+ return memoHit;
236
+ ctx.memo.delete(cacheKey);
237
+ }
238
+ const stored = await ctx.deps.store.getSyncMeta(cacheKey);
239
+ if (stored != null) {
240
+ const id = Number.parseInt(stored, 10);
241
+ if (Number.isFinite(id) && id > 0) {
242
+ if (validate && !(await validate(id))) {
243
+ return null;
244
+ }
245
+ ctx.memo.set(cacheKey, id);
246
+ return id;
247
+ }
248
+ }
249
+ return null;
250
+ }
251
+ /** Persist a resolved id to both the in-run memo and the KV store. */
252
+ async function writeCachedId(ctx, cacheKey, id) {
253
+ ctx.memo.set(cacheKey, id);
254
+ await ctx.deps.store.setSyncMeta(cacheKey, String(id));
255
+ }
256
+ async function validateEpicCacheHit(ctx, id, title) {
257
+ try {
258
+ const item = await withRetry(() => ctx.deps.client.getWorkItem(id));
259
+ return item.fields['System.WorkItemType'] === 'Epic'
260
+ && String(item.fields['System.Title'] ?? '') === title;
261
+ }
262
+ catch {
263
+ return false;
264
+ }
265
+ }
266
+ async function validateFeatureCacheHit(ctx, id, title, epicId) {
267
+ try {
268
+ const item = await withRetry(() => ctx.deps.client.getWorkItem(id));
269
+ if (item.fields['System.WorkItemType'] !== 'Feature')
270
+ return false;
271
+ if (String(item.fields['System.Title'] ?? '') !== title)
272
+ return false;
273
+ return parentRelationIndex(item) >= 0
274
+ && parentIdFromRelationUrl(item.relations?.[parentRelationIndex(item)]?.url) === epicId;
275
+ }
276
+ catch {
277
+ return false;
278
+ }
279
+ }
280
+ /**
281
+ * Find-or-create the Epic for a repo's major version line. Idempotent via the
282
+ * cache key `azdo:epic:<cacheKeyName>`, falling back to a WIQL title probe, then
283
+ * to creation. Increments result.epicsCreated only on an actual create.
284
+ */
285
+ async function ensureEpic(ctx, args) {
286
+ const { project, projectName, cacheKeyName, areaPath, major } = args;
287
+ const cacheKey = `azdo:epic:${cacheKeyName}`;
288
+ const title = epicTitle(projectName, major);
289
+ const cached = await readCachedId(ctx, cacheKey, async (id) => validateEpicCacheHit(ctx, id, title));
290
+ if (cached != null)
291
+ return cached;
292
+ const existing = await findWorkItemByTitleAndType(ctx.deps.client, project, 'Epic', title);
293
+ if (existing != null) {
294
+ await writeCachedId(ctx, cacheKey, existing);
295
+ return existing;
296
+ }
297
+ const created = await withRetry(() => ctx.deps.client.createWorkItem('Epic', [
298
+ fieldPatch('/fields/System.Title', title),
299
+ fieldPatch('/fields/System.AreaPath', areaPath),
300
+ fieldPatch('/fields/System.AssignedTo', DEFAULT_ASSIGNEE),
301
+ ]));
302
+ ctx.result.epicsCreated++;
303
+ await writeCachedId(ctx, cacheKey, created.id);
304
+ return created.id;
305
+ }
306
+ /**
307
+ * Find-or-create a Feature under `epicId`. Idempotent via the cache key
308
+ * `azdo:feature:<cacheKeyName>:<title>`, falling back to a PARENT-SCOPED probe
309
+ * (findFeatureUnderEpic), then to creation. When CREATING, the Feature is
310
+ * parented to the Epic in the same patch document. Increments
311
+ * result.featuresCreated only on an actual create.
312
+ *
313
+ * The probe MUST be scoped to this Epic: Feature titles ('Maintenance',
314
+ * 'v1.0.0') are not unique across repos, so a project-wide title match would
315
+ * mis-link a new repo's items under another repo's Feature.
316
+ *
317
+ * Note: on a find/cache hit we assume the Feature is already linked to its
318
+ * Epic (the only code path that creates these Features always links them).
319
+ */
320
+ async function ensureFeature(ctx, args) {
321
+ const { project, cacheKeyName, areaPath, title, epicId } = args;
322
+ const cacheKey = `azdo:feature:${cacheKeyName}:${title}`;
323
+ const cached = await readCachedId(ctx, cacheKey, async (id) => validateFeatureCacheHit(ctx, id, title, epicId));
324
+ if (cached != null)
325
+ return cached;
326
+ const existing = await findFeatureUnderEpic(ctx.deps.client, project, epicId, title);
327
+ if (existing != null) {
328
+ await writeCachedId(ctx, cacheKey, existing);
329
+ return existing;
330
+ }
331
+ const created = await withRetry(() => ctx.deps.client.createWorkItem('Feature', [
332
+ fieldPatch('/fields/System.Title', title),
333
+ fieldPatch('/fields/System.AreaPath', areaPath),
334
+ fieldPatch('/fields/System.AssignedTo', DEFAULT_ASSIGNEE),
335
+ buildParentRelationPatch(ctx.deps.organization, ctx.deps.project, epicId),
336
+ ]));
337
+ ctx.result.featuresCreated++;
338
+ await writeCachedId(ctx, cacheKey, created.id);
339
+ return created.id;
340
+ }
341
+ /**
342
+ * Resolve the target Feature id for an item: find-or-create its Epic and the
343
+ * appropriate Feature (Bug -> Maintenance, PBI -> version line), all scoped to
344
+ * the item's repo. Returns null when the item can't be placed (unmapped area).
345
+ */
346
+ async function resolveTargetFeature(ctx, item) {
347
+ // Resolve the owning repo via the explicit area->projectId map. An area not
348
+ // in the map is unresolvable -> caller skips (intended).
349
+ const repo = resolveRepo(item.area, ctx.deps.projects);
350
+ if (!repo)
351
+ return null;
352
+ const area = item.area; // resolveRepo guarantees a mapped area
353
+ // When the repo is configured we read its package.json; otherwise floor to
354
+ // v1.0.0 (the user's minimum) so a brand-new repo still provisions.
355
+ const version = repo.path ? getRepoVersion(repo.path) : { major: 1, minor: 0, patch: 0 };
356
+ const areaPath = areaToAzdoAreaPath(area);
357
+ const cacheKeyName = repo.name.toLowerCase();
358
+ const epicId = await ensureEpic(ctx, {
359
+ project: ctx.deps.project,
360
+ projectName: repo.name,
361
+ cacheKeyName,
362
+ areaPath,
363
+ major: version.major,
364
+ });
365
+ const featureTitle = item.kind === 'Bug'
366
+ ? MAINTENANCE_FEATURE_TITLE
367
+ : versionFeatureTitle(version.major, version.minor);
368
+ return ensureFeature(ctx, {
369
+ project: ctx.deps.project,
370
+ cacheKeyName,
371
+ areaPath,
372
+ title: featureTitle,
373
+ epicId,
374
+ });
375
+ }
376
+ /**
377
+ * Provision the Epic -> Feature hierarchy for a set of open executable items
378
+ * and CORRECT their parentage so each lands under the right per-repo Feature.
379
+ *
380
+ * The caller should pass ALL open PBIs/Bugs (each carrying its current AzDO
381
+ * parent id), not just parentless orphans — items mis-parented by an earlier
382
+ * buggy run are self-healed here. For each item:
383
+ * - unmapped area / bad id -> skipped (no AzDO write)
384
+ * - already under the correct Feature -> alreadyCorrect (no AzDO write)
385
+ * - no parent -> add the parent link (linked)
386
+ * - under a different (wrong) Feature -> remove the old relation + add the
387
+ * new one in a single PATCH (reparented)
388
+ * Each item is processed in its own try/catch so one failure never aborts.
389
+ */
390
+ export async function provisionHierarchy(deps, items) {
391
+ const ctx = {
392
+ deps,
393
+ memo: new Map(),
394
+ result: {
395
+ epicsCreated: 0,
396
+ featuresCreated: 0,
397
+ linked: 0,
398
+ reparented: 0,
399
+ alreadyCorrect: 0,
400
+ skipped: 0,
401
+ errors: [],
402
+ },
403
+ };
404
+ for (const item of items) {
405
+ try {
406
+ // Defend against malformed ids.
407
+ const numericId = Number(item.id);
408
+ if (!Number.isFinite(numericId) || numericId <= 0) {
409
+ ctx.result.skipped++;
410
+ continue;
411
+ }
412
+ const targetFeatureId = await resolveTargetFeature(ctx, item);
413
+ if (targetFeatureId == null) {
414
+ ctx.result.skipped++;
415
+ continue;
416
+ }
417
+ const currentParent = item.currentParentId != null ? Number(item.currentParentId) : null;
418
+ // Already correctly parented -> no write.
419
+ if (currentParent === targetFeatureId) {
420
+ ctx.result.alreadyCorrect++;
421
+ continue;
422
+ }
423
+ const addParent = buildParentRelationPatch(deps.organization, deps.project, targetFeatureId);
424
+ if (currentParent == null || !Number.isFinite(currentParent)) {
425
+ // No parent -> just add the link.
426
+ await withRetry(() => deps.client.updateWorkItem(numericId, [addParent]));
427
+ ctx.result.linked++;
428
+ }
429
+ else {
430
+ // Wrong parent -> remove the existing Hierarchy-Reverse relation by its
431
+ // positional index, then add the correct one, in a single PATCH.
432
+ const fetched = await withRetry(() => deps.client.getWorkItem(numericId));
433
+ const idx = parentRelationIndex(fetched);
434
+ const patches = [];
435
+ if (idx >= 0) {
436
+ patches.push({ op: 'remove', path: `/relations/${idx}` });
437
+ }
438
+ patches.push(addParent);
439
+ await withRetry(() => deps.client.updateWorkItem(numericId, patches));
440
+ ctx.result.reparented++;
441
+ }
442
+ }
443
+ catch (err) {
444
+ const message = err instanceof Error ? err.message : String(err);
445
+ ctx.result.errors.push({ workItemId: item.id, message });
446
+ }
447
+ }
448
+ const r = ctx.result;
449
+ console.log(`[hierarchy] provisioned ${items.length} item(s): ` +
450
+ `epicsCreated=${r.epicsCreated} featuresCreated=${r.featuresCreated} ` +
451
+ `linked=${r.linked} reparented=${r.reparented} alreadyCorrect=${r.alreadyCorrect} ` +
452
+ `skipped=${r.skipped} errors=${r.errors.length}`);
453
+ return ctx.result;
454
+ }
455
+ /**
456
+ * Backward-compatible wrapper: provision hierarchy from WorkItemRecord orphans.
457
+ * Maps each record to a HierarchyItem, carrying its `parentId` as the current
458
+ * parent so the self-heal path applies. Prefer provisionHierarchy + the sync
459
+ * layer's extractParentId for the canonical (AzDO-sourced) current parent id.
460
+ */
461
+ export async function provisionHierarchyForOrphans(deps, orphans) {
462
+ const items = orphans.map((o) => ({
463
+ id: o.id,
464
+ kind: o.kind,
465
+ area: o.area,
466
+ currentParentId: o.parentId ?? null,
467
+ }));
468
+ return provisionHierarchy(deps, items);
469
+ }
470
+ //# sourceMappingURL=hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/azureDevOps/hierarchy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import type { AzdoWorkItem, AzdoFieldPatch } from '../azureDevOps/client.js';
2
+ import type { AzdoSyncConfig } from '../core/types.js';
3
+ import type { WorkItemRecord } from '../workItems/schema.js';
4
+ import type { WorkItemPayload, LayeredState, AzdoFields } from '../core/workItemPayload.js';
5
+ import type { WorkItemKind, WorkItemState, EpicFeatureState, Area } from '../core/workItemModel.js';
6
+ /** Thrown when an AzDO value cannot be mapped to an internal type. */
7
+ export declare class MapperError extends Error {
8
+ constructor(message: string);
9
+ }
10
+ /**
11
+ * Maps our logical field display names to their AzDO reference names.
12
+ * Override individual entries via `createAzdoClient` config or pass inline.
13
+ * All values follow the AzDO pattern: 'System.*', 'Microsoft.VSTS.*', or 'Custom.*'.
14
+ */
15
+ export interface AzdoFieldNames {
16
+ id: string;
17
+ workItemType: string;
18
+ title: string;
19
+ description: string;
20
+ areaPath: string;
21
+ state: string;
22
+ reason: string;
23
+ acceptanceCriteria: string;
24
+ reproSteps: string;
25
+ systemInfo: string;
26
+ severity: string;
27
+ priority: string;
28
+ startDate: string;
29
+ targetDate: string;
30
+ planWritten: string;
31
+ implementationComplete: string;
32
+ reviewPassed: string;
33
+ testsPassing: string;
34
+ docsUpdated: string;
35
+ mergedToDevelop: string;
36
+ assignedTo: string;
37
+ tags: string;
38
+ iterationPath: string;
39
+ operatorLane: string;
40
+ failureReason: string;
41
+ }
42
+ /**
43
+ * Default reference-name mapping.
44
+ * Callers may spread and override any entry.
45
+ */
46
+ export declare const DEFAULT_FIELD_NAMES: AzdoFieldNames;
47
+ /**
48
+ * Map AzDO `System.WorkItemType` to our `WorkItemKind`.
49
+ * Throws `MapperError` for unknown type strings.
50
+ */
51
+ export declare function azdoToWorkItemKind(azdo: AzdoWorkItem): WorkItemKind;
52
+ /**
53
+ * Map AzDO `System.State` to our `WorkItemState` discriminated union.
54
+ * Uses the kind to determine which tier state machine to apply.
55
+ */
56
+ export declare function azdoToWorkItemState(azdo: AzdoWorkItem, syncConfig?: AzdoSyncConfig): WorkItemState | EpicFeatureState;
57
+ /**
58
+ * Map AzDO area path to our `Area` type.
59
+ * Returns `null` for root-only paths (e.g. 'Enact' with no sub-area).
60
+ */
61
+ export declare function azdoToArea(azdo: AzdoWorkItem): Area | null;
62
+ /**
63
+ * Build a `LayeredState` from an AzDO work item.
64
+ * Execution snapshot and prSidecar are not present in AzDO — they default to null.
65
+ * The six Boolean fields are read from the custom field reference names.
66
+ */
67
+ export declare function azdoToLayeredState(azdo: AzdoWorkItem, fieldNames?: AzdoFieldNames, syncConfig?: AzdoSyncConfig): LayeredState;
68
+ /**
69
+ * Map an AzDO work item to a `Partial<WorkItemRecord>`.
70
+ * Only the fields that are present in both systems are populated.
71
+ */
72
+ export declare function azdoToWorkItemRecord(azdo: AzdoWorkItem, syncConfig?: AzdoSyncConfig): Partial<WorkItemRecord>;
73
+ /**
74
+ * Project an AzDO work item into the flat `AzdoFields` sub-object that gets
75
+ * embedded under `WorkItemPayload.azdoFields`. Pulls every field the board
76
+ * card or detail panel might want to render so the API doesn't need to
77
+ * round-trip back to AzDO on every request.
78
+ */
79
+ export declare function azdoToAzdoFields(azdo: AzdoWorkItem, fieldNames?: AzdoFieldNames): AzdoFields;
80
+ /**
81
+ * Map an AzDO work item to a full `WorkItemPayload`.
82
+ * Fields that cannot be derived from AzDO alone (worktreeLifecycle, execution snapshot)
83
+ * are set to `null`. Provider-specific fields land under `azdoFields`.
84
+ */
85
+ export declare function azdoToWorkItemPayload(azdo: AzdoWorkItem, fieldNames?: AzdoFieldNames, syncConfig?: AzdoSyncConfig): WorkItemPayload;
86
+ /**
87
+ * Build AzDO patches to set `System.State` (and optionally `System.Reason`)
88
+ * from a `WorkItemState` or `EpicFeatureState`.
89
+ */
90
+ export declare function workItemStateToAzdoPatches(state: WorkItemState | EpicFeatureState, syncConfig?: AzdoSyncConfig): AzdoFieldPatch[];
91
+ /**
92
+ * Build AzDO patches from a `LayeredState`.
93
+ * Maps business state + six lifecycle Boolean fields + review/resolution.
94
+ */
95
+ export declare function layeredStateToAzdoPatches(state: LayeredState, fieldNames?: AzdoFieldNames, syncConfig?: AzdoSyncConfig): AzdoFieldPatch[];
96
+ /**
97
+ * Build the full set of AzDO patches from a `WorkItemPayload`.
98
+ * Patches title, area, and all layered-state fields.
99
+ */
100
+ export declare function payloadToAzdoPatches(payload: WorkItemPayload, fieldNames?: AzdoFieldNames, syncConfig?: AzdoSyncConfig): AzdoFieldPatch[];
101
+ //# sourceMappingURL=mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../../src/azureDevOps/mapper.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3F,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAanG,sEAAsE;AACtE,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B;AAMD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAE7B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAGf,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IAGxB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IAGtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,cA+BjC,CAAC;AAkFF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAUnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,cAAc,GAC1B,aAAa,GAAG,gBAAgB,CAmBlC;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,CAG1D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,UAAU,GAAE,cAAoC,EAChD,UAAU,CAAC,EAAE,cAAc,GAC1B,YAAY,CAkCd;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,cAAc,GAC1B,OAAO,CAAC,cAAc,CAAC,CAmFzB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,UAAU,GAAE,cAAoC,GAC/C,UAAU,CAuCZ;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,YAAY,EAClB,UAAU,GAAE,cAAoC,EAChD,UAAU,CAAC,EAAE,cAAc,GAC1B,eAAe,CAuBjB;AAMD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,aAAa,GAAG,gBAAgB,EACvC,UAAU,CAAC,EAAE,cAAc,GAC1B,cAAc,EAAE,CAsBlB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,EACnB,UAAU,GAAE,cAAoC,EAChD,UAAU,CAAC,EAAE,cAAc,GAC1B,cAAc,EAAE,CAyClB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,EACxB,UAAU,GAAE,cAAoC,EAChD,UAAU,CAAC,EAAE,cAAc,GAC1B,cAAc,EAAE,CAqBlB"}