@mc1global/opencode-jarvis 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/application/agent-registry/dtos.d.ts +66 -0
  2. package/dist/application/agent-registry/dtos.d.ts.map +1 -0
  3. package/dist/application/agent-registry/dtos.js +11 -0
  4. package/dist/application/agent-registry/dtos.js.map +1 -0
  5. package/dist/application/agent-registry/use-cases.d.ts +39 -0
  6. package/dist/application/agent-registry/use-cases.d.ts.map +1 -0
  7. package/dist/application/agent-registry/use-cases.js +222 -0
  8. package/dist/application/agent-registry/use-cases.js.map +1 -0
  9. package/dist/application/azure-sync/dtos.d.ts +210 -0
  10. package/dist/application/azure-sync/dtos.d.ts.map +1 -0
  11. package/dist/application/azure-sync/dtos.js +11 -0
  12. package/dist/application/azure-sync/dtos.js.map +1 -0
  13. package/dist/application/azure-sync/field-builders.d.ts +54 -0
  14. package/dist/application/azure-sync/field-builders.d.ts.map +1 -0
  15. package/dist/application/azure-sync/field-builders.js +166 -0
  16. package/dist/application/azure-sync/field-builders.js.map +1 -0
  17. package/dist/application/azure-sync/index.d.ts +16 -0
  18. package/dist/application/azure-sync/index.d.ts.map +1 -0
  19. package/dist/application/azure-sync/index.js +10 -0
  20. package/dist/application/azure-sync/index.js.map +1 -0
  21. package/dist/application/azure-sync/pr-use-cases.d.ts +39 -0
  22. package/dist/application/azure-sync/pr-use-cases.d.ts.map +1 -0
  23. package/dist/application/azure-sync/pr-use-cases.js +192 -0
  24. package/dist/application/azure-sync/pr-use-cases.js.map +1 -0
  25. package/dist/application/azure-sync/pull-use-cases.d.ts +43 -0
  26. package/dist/application/azure-sync/pull-use-cases.d.ts.map +1 -0
  27. package/dist/application/azure-sync/pull-use-cases.js +322 -0
  28. package/dist/application/azure-sync/pull-use-cases.js.map +1 -0
  29. package/dist/application/azure-sync/push-use-cases.d.ts +53 -0
  30. package/dist/application/azure-sync/push-use-cases.d.ts.map +1 -0
  31. package/dist/application/azure-sync/push-use-cases.js +341 -0
  32. package/dist/application/azure-sync/push-use-cases.js.map +1 -0
  33. package/dist/application/azure-sync/reverse-field-builder.d.ts +52 -0
  34. package/dist/application/azure-sync/reverse-field-builder.d.ts.map +1 -0
  35. package/dist/application/azure-sync/reverse-field-builder.js +130 -0
  36. package/dist/application/azure-sync/reverse-field-builder.js.map +1 -0
  37. package/dist/application/azure-sync/task-push-use-cases.d.ts +68 -0
  38. package/dist/application/azure-sync/task-push-use-cases.d.ts.map +1 -0
  39. package/dist/application/azure-sync/task-push-use-cases.js +162 -0
  40. package/dist/application/azure-sync/task-push-use-cases.js.map +1 -0
  41. package/dist/application/config/config-service.d.ts +64 -0
  42. package/dist/application/config/config-service.d.ts.map +1 -0
  43. package/dist/application/config/config-service.js +110 -0
  44. package/dist/application/config/config-service.js.map +1 -0
  45. package/dist/application/config/index.d.ts +5 -0
  46. package/dist/application/config/index.d.ts.map +1 -0
  47. package/dist/application/config/index.js +5 -0
  48. package/dist/application/config/index.js.map +1 -0
  49. package/dist/application/kanban/board-use-cases.d.ts.map +1 -1
  50. package/dist/application/kanban/board-use-cases.js +14 -0
  51. package/dist/application/kanban/board-use-cases.js.map +1 -1
  52. package/dist/application/kanban/card-use-cases.d.ts +21 -2
  53. package/dist/application/kanban/card-use-cases.d.ts.map +1 -1
  54. package/dist/application/kanban/card-use-cases.js +180 -1
  55. package/dist/application/kanban/card-use-cases.js.map +1 -1
  56. package/dist/application/kanban/dtos.d.ts +59 -0
  57. package/dist/application/kanban/dtos.d.ts.map +1 -1
  58. package/dist/application/mcp/index.d.ts +10 -0
  59. package/dist/application/mcp/index.d.ts.map +1 -0
  60. package/dist/application/mcp/index.js +8 -0
  61. package/dist/application/mcp/index.js.map +1 -0
  62. package/dist/application/mcp/middleware.d.ts +91 -0
  63. package/dist/application/mcp/middleware.d.ts.map +1 -0
  64. package/dist/application/mcp/middleware.js +84 -0
  65. package/dist/application/mcp/middleware.js.map +1 -0
  66. package/dist/application/mcp/tool-adapter.d.ts +72 -0
  67. package/dist/application/mcp/tool-adapter.d.ts.map +1 -0
  68. package/dist/application/mcp/tool-adapter.js +132 -0
  69. package/dist/application/mcp/tool-adapter.js.map +1 -0
  70. package/dist/application/pipeline/dtos.d.ts +135 -0
  71. package/dist/application/pipeline/dtos.d.ts.map +1 -0
  72. package/dist/application/pipeline/dtos.js +11 -0
  73. package/dist/application/pipeline/dtos.js.map +1 -0
  74. package/dist/application/pipeline/index.d.ts +8 -0
  75. package/dist/application/pipeline/index.d.ts.map +1 -0
  76. package/dist/application/pipeline/index.js +7 -0
  77. package/dist/application/pipeline/index.js.map +1 -0
  78. package/dist/application/pipeline/use-cases.d.ts +67 -0
  79. package/dist/application/pipeline/use-cases.d.ts.map +1 -0
  80. package/dist/application/pipeline/use-cases.js +413 -0
  81. package/dist/application/pipeline/use-cases.js.map +1 -0
  82. package/dist/application/rag/use-cases.d.ts +3 -0
  83. package/dist/application/rag/use-cases.d.ts.map +1 -1
  84. package/dist/application/rag/use-cases.js +112 -34
  85. package/dist/application/rag/use-cases.js.map +1 -1
  86. package/dist/domain/agent-registry/entities.d.ts +68 -0
  87. package/dist/domain/agent-registry/entities.d.ts.map +1 -0
  88. package/dist/domain/agent-registry/entities.js +177 -0
  89. package/dist/domain/agent-registry/entities.js.map +1 -0
  90. package/dist/domain/agent-registry/repositories.d.ts +56 -0
  91. package/dist/domain/agent-registry/repositories.d.ts.map +1 -0
  92. package/dist/domain/agent-registry/repositories.js +12 -0
  93. package/dist/domain/agent-registry/repositories.js.map +1 -0
  94. package/dist/domain/agent-registry/services.d.ts +87 -0
  95. package/dist/domain/agent-registry/services.d.ts.map +1 -0
  96. package/dist/domain/agent-registry/services.js +188 -0
  97. package/dist/domain/agent-registry/services.js.map +1 -0
  98. package/dist/domain/agent-registry/value-objects.d.ts +145 -0
  99. package/dist/domain/agent-registry/value-objects.d.ts.map +1 -0
  100. package/dist/domain/agent-registry/value-objects.js +339 -0
  101. package/dist/domain/agent-registry/value-objects.js.map +1 -0
  102. package/dist/domain/azure-sync/entities.d.ts +165 -0
  103. package/dist/domain/azure-sync/entities.d.ts.map +1 -0
  104. package/dist/domain/azure-sync/entities.js +203 -0
  105. package/dist/domain/azure-sync/entities.js.map +1 -0
  106. package/dist/domain/azure-sync/index.d.ts +16 -0
  107. package/dist/domain/azure-sync/index.d.ts.map +1 -0
  108. package/dist/domain/azure-sync/index.js +14 -0
  109. package/dist/domain/azure-sync/index.js.map +1 -0
  110. package/dist/domain/azure-sync/ports.d.ts +117 -0
  111. package/dist/domain/azure-sync/ports.d.ts.map +1 -0
  112. package/dist/domain/azure-sync/ports.js +13 -0
  113. package/dist/domain/azure-sync/ports.js.map +1 -0
  114. package/dist/domain/azure-sync/repositories.d.ts +53 -0
  115. package/dist/domain/azure-sync/repositories.d.ts.map +1 -0
  116. package/dist/domain/azure-sync/repositories.js +11 -0
  117. package/dist/domain/azure-sync/repositories.js.map +1 -0
  118. package/dist/domain/azure-sync/services.d.ts +107 -0
  119. package/dist/domain/azure-sync/services.d.ts.map +1 -0
  120. package/dist/domain/azure-sync/services.js +316 -0
  121. package/dist/domain/azure-sync/services.js.map +1 -0
  122. package/dist/domain/azure-sync/value-objects.d.ts +129 -0
  123. package/dist/domain/azure-sync/value-objects.d.ts.map +1 -0
  124. package/dist/domain/azure-sync/value-objects.js +343 -0
  125. package/dist/domain/azure-sync/value-objects.js.map +1 -0
  126. package/dist/domain/config/index.d.ts +9 -0
  127. package/dist/domain/config/index.d.ts.map +1 -0
  128. package/dist/domain/config/index.js +7 -0
  129. package/dist/domain/config/index.js.map +1 -0
  130. package/dist/domain/config/repositories.d.ts +36 -0
  131. package/dist/domain/config/repositories.d.ts.map +1 -0
  132. package/dist/domain/config/repositories.js +12 -0
  133. package/dist/domain/config/repositories.js.map +1 -0
  134. package/dist/domain/config/value-objects.d.ts +112 -0
  135. package/dist/domain/config/value-objects.d.ts.map +1 -0
  136. package/dist/domain/config/value-objects.js +93 -0
  137. package/dist/domain/config/value-objects.js.map +1 -0
  138. package/dist/domain/governance/policies.d.ts.map +1 -1
  139. package/dist/domain/governance/policies.js +70 -0
  140. package/dist/domain/governance/policies.js.map +1 -1
  141. package/dist/domain/kanban/entities.d.ts +67 -15
  142. package/dist/domain/kanban/entities.d.ts.map +1 -1
  143. package/dist/domain/kanban/entities.js +177 -14
  144. package/dist/domain/kanban/entities.js.map +1 -1
  145. package/dist/domain/kanban/grooming.d.ts +27 -7
  146. package/dist/domain/kanban/grooming.d.ts.map +1 -1
  147. package/dist/domain/kanban/grooming.js +50 -12
  148. package/dist/domain/kanban/grooming.js.map +1 -1
  149. package/dist/domain/kanban/services.d.ts +16 -2
  150. package/dist/domain/kanban/services.d.ts.map +1 -1
  151. package/dist/domain/kanban/services.js +29 -2
  152. package/dist/domain/kanban/services.js.map +1 -1
  153. package/dist/domain/kanban/value-objects.d.ts +48 -0
  154. package/dist/domain/kanban/value-objects.d.ts.map +1 -1
  155. package/dist/domain/kanban/value-objects.js +53 -0
  156. package/dist/domain/kanban/value-objects.js.map +1 -1
  157. package/dist/domain/pipeline/gate.d.ts +75 -0
  158. package/dist/domain/pipeline/gate.d.ts.map +1 -0
  159. package/dist/domain/pipeline/gate.js +158 -0
  160. package/dist/domain/pipeline/gate.js.map +1 -0
  161. package/dist/domain/pipeline/index.d.ts +13 -0
  162. package/dist/domain/pipeline/index.d.ts.map +1 -0
  163. package/dist/domain/pipeline/index.js +14 -0
  164. package/dist/domain/pipeline/index.js.map +1 -0
  165. package/dist/domain/pipeline/pipeline.d.ts +99 -0
  166. package/dist/domain/pipeline/pipeline.d.ts.map +1 -0
  167. package/dist/domain/pipeline/pipeline.js +257 -0
  168. package/dist/domain/pipeline/pipeline.js.map +1 -0
  169. package/dist/domain/pipeline/ports.d.ts +120 -0
  170. package/dist/domain/pipeline/ports.d.ts.map +1 -0
  171. package/dist/domain/pipeline/ports.js +12 -0
  172. package/dist/domain/pipeline/ports.js.map +1 -0
  173. package/dist/domain/pipeline/repositories.d.ts +66 -0
  174. package/dist/domain/pipeline/repositories.d.ts.map +1 -0
  175. package/dist/domain/pipeline/repositories.js +11 -0
  176. package/dist/domain/pipeline/repositories.js.map +1 -0
  177. package/dist/domain/pipeline/services.d.ts +77 -0
  178. package/dist/domain/pipeline/services.d.ts.map +1 -0
  179. package/dist/domain/pipeline/services.js +156 -0
  180. package/dist/domain/pipeline/services.js.map +1 -0
  181. package/dist/domain/pipeline/value-objects.d.ts +117 -0
  182. package/dist/domain/pipeline/value-objects.d.ts.map +1 -0
  183. package/dist/domain/pipeline/value-objects.js +313 -0
  184. package/dist/domain/pipeline/value-objects.js.map +1 -0
  185. package/dist/domain/rag/value-objects.d.ts +9 -2
  186. package/dist/domain/rag/value-objects.d.ts.map +1 -1
  187. package/dist/domain/rag/value-objects.js +8 -2
  188. package/dist/domain/rag/value-objects.js.map +1 -1
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +113 -75
  191. package/dist/index.js.map +1 -1
  192. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts +29 -0
  193. package/dist/infrastructure/agent-registry/agent-profile-repository.d.ts.map +1 -0
  194. package/dist/infrastructure/agent-registry/agent-profile-repository.js +109 -0
  195. package/dist/infrastructure/agent-registry/agent-profile-repository.js.map +1 -0
  196. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts +28 -0
  197. package/dist/infrastructure/agent-registry/agent-session-adapter.d.ts.map +1 -0
  198. package/dist/infrastructure/agent-registry/agent-session-adapter.js +61 -0
  199. package/dist/infrastructure/agent-registry/agent-session-adapter.js.map +1 -0
  200. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts +19 -0
  201. package/dist/infrastructure/agent-registry/built-in-profiles.d.ts.map +1 -0
  202. package/dist/infrastructure/agent-registry/built-in-profiles.js +210 -0
  203. package/dist/infrastructure/agent-registry/built-in-profiles.js.map +1 -0
  204. package/dist/infrastructure/azure-sync/azure-auth.d.ts +40 -0
  205. package/dist/infrastructure/azure-sync/azure-auth.d.ts.map +1 -0
  206. package/dist/infrastructure/azure-sync/azure-auth.js +94 -0
  207. package/dist/infrastructure/azure-sync/azure-auth.js.map +1 -0
  208. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts +43 -0
  209. package/dist/infrastructure/azure-sync/azure-devops-client.d.ts.map +1 -0
  210. package/dist/infrastructure/azure-sync/azure-devops-client.js +296 -0
  211. package/dist/infrastructure/azure-sync/azure-devops-client.js.map +1 -0
  212. package/dist/infrastructure/azure-sync/index.d.ts +9 -0
  213. package/dist/infrastructure/azure-sync/index.d.ts.map +1 -0
  214. package/dist/infrastructure/azure-sync/index.js +12 -0
  215. package/dist/infrastructure/azure-sync/index.js.map +1 -0
  216. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts +39 -0
  217. package/dist/infrastructure/azure-sync/sqlite-sync-repository.d.ts.map +1 -0
  218. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js +202 -0
  219. package/dist/infrastructure/azure-sync/sqlite-sync-repository.js.map +1 -0
  220. package/dist/infrastructure/config/index.d.ts +5 -0
  221. package/dist/infrastructure/config/index.d.ts.map +1 -0
  222. package/dist/infrastructure/config/index.js +5 -0
  223. package/dist/infrastructure/config/index.js.map +1 -0
  224. package/dist/infrastructure/config/yaml-config-repository.d.ts +22 -0
  225. package/dist/infrastructure/config/yaml-config-repository.d.ts.map +1 -0
  226. package/dist/infrastructure/config/yaml-config-repository.js +68 -0
  227. package/dist/infrastructure/config/yaml-config-repository.js.map +1 -0
  228. package/dist/infrastructure/database/sqlite-adapter.d.ts +13 -15
  229. package/dist/infrastructure/database/sqlite-adapter.d.ts.map +1 -1
  230. package/dist/infrastructure/database/sqlite-adapter.js +31 -17
  231. package/dist/infrastructure/database/sqlite-adapter.js.map +1 -1
  232. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts +21 -0
  233. package/dist/infrastructure/domain-map/llm-prompt-factory.d.ts.map +1 -0
  234. package/dist/infrastructure/domain-map/llm-prompt-factory.js +49 -0
  235. package/dist/infrastructure/domain-map/llm-prompt-factory.js.map +1 -0
  236. package/dist/infrastructure/kanban/card-repository.d.ts +6 -0
  237. package/dist/infrastructure/kanban/card-repository.d.ts.map +1 -1
  238. package/dist/infrastructure/kanban/card-repository.js +79 -7
  239. package/dist/infrastructure/kanban/card-repository.js.map +1 -1
  240. package/dist/infrastructure/pipeline/dagger-adapter.d.ts +50 -0
  241. package/dist/infrastructure/pipeline/dagger-adapter.d.ts.map +1 -0
  242. package/dist/infrastructure/pipeline/dagger-adapter.js +153 -0
  243. package/dist/infrastructure/pipeline/dagger-adapter.js.map +1 -0
  244. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts +35 -0
  245. package/dist/infrastructure/pipeline/dagger-scaffold-generator.d.ts.map +1 -0
  246. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js +132 -0
  247. package/dist/infrastructure/pipeline/dagger-scaffold-generator.js.map +1 -0
  248. package/dist/infrastructure/pipeline/index.d.ts +20 -0
  249. package/dist/infrastructure/pipeline/index.d.ts.map +1 -0
  250. package/dist/infrastructure/pipeline/index.js +19 -0
  251. package/dist/infrastructure/pipeline/index.js.map +1 -0
  252. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts +23 -0
  253. package/dist/infrastructure/pipeline/pipeline-template-registry.d.ts.map +1 -0
  254. package/dist/infrastructure/pipeline/pipeline-template-registry.js +63 -0
  255. package/dist/infrastructure/pipeline/pipeline-template-registry.js.map +1 -0
  256. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts +17 -0
  257. package/dist/infrastructure/pipeline/scaffold-templates-extra.d.ts.map +1 -0
  258. package/dist/infrastructure/pipeline/scaffold-templates-extra.js +467 -0
  259. package/dist/infrastructure/pipeline/scaffold-templates-extra.js.map +1 -0
  260. package/dist/infrastructure/pipeline/scaffold-templates.d.ts +23 -0
  261. package/dist/infrastructure/pipeline/scaffold-templates.d.ts.map +1 -0
  262. package/dist/infrastructure/pipeline/scaffold-templates.js +476 -0
  263. package/dist/infrastructure/pipeline/scaffold-templates.js.map +1 -0
  264. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts +32 -0
  265. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.d.ts.map +1 -0
  266. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js +197 -0
  267. package/dist/infrastructure/pipeline/sqlite-pipeline-repository.js.map +1 -0
  268. package/dist/mcp-server.d.ts +3 -0
  269. package/dist/mcp-server.d.ts.map +1 -0
  270. package/dist/mcp-server.js +300 -0
  271. package/dist/mcp-server.js.map +1 -0
  272. package/dist/tools/agent-registry-tools.d.ts +11 -0
  273. package/dist/tools/agent-registry-tools.d.ts.map +1 -0
  274. package/dist/tools/agent-registry-tools.js +208 -0
  275. package/dist/tools/agent-registry-tools.js.map +1 -0
  276. package/dist/tools/azure-sync-tools.d.ts +15 -0
  277. package/dist/tools/azure-sync-tools.d.ts.map +1 -0
  278. package/dist/tools/azure-sync-tools.js +332 -0
  279. package/dist/tools/azure-sync-tools.js.map +1 -0
  280. package/dist/tools/kanban-card-tools.d.ts.map +1 -1
  281. package/dist/tools/kanban-card-tools.js +41 -16
  282. package/dist/tools/kanban-card-tools.js.map +1 -1
  283. package/dist/tools/kanban-gate-tools.d.ts +7 -0
  284. package/dist/tools/kanban-gate-tools.d.ts.map +1 -0
  285. package/dist/tools/kanban-gate-tools.js +106 -0
  286. package/dist/tools/kanban-gate-tools.js.map +1 -0
  287. package/dist/tools/kanban-grooming-tools.d.ts +7 -0
  288. package/dist/tools/kanban-grooming-tools.d.ts.map +1 -0
  289. package/dist/tools/kanban-grooming-tools.js +180 -0
  290. package/dist/tools/kanban-grooming-tools.js.map +1 -0
  291. package/dist/tools/pipeline-tools.d.ts +15 -0
  292. package/dist/tools/pipeline-tools.d.ts.map +1 -0
  293. package/dist/tools/pipeline-tools.js +424 -0
  294. package/dist/tools/pipeline-tools.js.map +1 -0
  295. package/package.json +9 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-builders.d.ts","sourceRoot":"","sources":["../../../src/application/azure-sync/field-builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,0CAA0C,CAAC;AAElG,OAAO,EAAE,WAAW,EAAgB,MAAM,qCAAqC,CAAC;AAIhF,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,SAAS;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IAC9E,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAED,4EAA4E;AAC5E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C;AAYD;;;GAGG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW;IAErD,6CAA6C;IAC7C,eAAe,CACb,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,eAAe,GACzB,SAAS,eAAe,EAAE;IAsB7B,kDAAkD;IAClD,eAAe,CACb,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,eAAe,GACxB,SAAS,eAAe,EAAE;IA4C7B,iFAAiF;IACjF,eAAe,CACb,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,eAAe,GACxB,SAAS,eAAe,EAAE;IA2B7B,OAAO,CAAC,sBAAsB;IA4C9B,OAAO,CAAC,iBAAiB;CA2B1B"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Azure Sync Application — Field Builders
3
+ *
4
+ * Builds Azure DevOps work item patch operations from local entity data.
5
+ * Handles template-aware field mapping for different process templates.
6
+ *
7
+ * SOLID: SRP — field building/mapping only
8
+ * DDD: Application-layer transformation between local and Azure representations
9
+ */
10
+ import { TASK_STATE_FOR_MET } from "../../domain/azure-sync/value-objects.js";
11
+ import { FieldMapper, AZURE_FIELDS } from "../../domain/azure-sync/services.js";
12
+ // ─── Priority Map ─────────────────────────────────────────────────────────────
13
+ const PRIORITY_MAP = {
14
+ high: 1,
15
+ medium: 2,
16
+ low: 3,
17
+ };
18
+ // ─── Field Builder ────────────────────────────────────────────────────────────
19
+ /**
20
+ * Builds Azure DevOps work item patch operations from local entities.
21
+ * Template-aware: adapts field placement based on process template capabilities.
22
+ */
23
+ export class AzureFieldBuilder {
24
+ fieldMapper;
25
+ constructor(fieldMapper) {
26
+ this.fieldMapper = fieldMapper;
27
+ }
28
+ /** Build patch ops for an epic work item. */
29
+ buildEpicFields(epic, _template) {
30
+ const fields = [
31
+ { op: "add", path: `/fields/${AZURE_FIELDS.TITLE}`, value: epic.title },
32
+ ];
33
+ if (epic.description !== undefined) {
34
+ fields.push({
35
+ op: "add",
36
+ path: `/fields/${AZURE_FIELDS.DESCRIPTION}`,
37
+ value: epic.description,
38
+ });
39
+ }
40
+ const prio = PRIORITY_MAP[epic.priority];
41
+ if (prio !== undefined) {
42
+ fields.push({
43
+ op: "add",
44
+ path: `/fields/${AZURE_FIELDS.PRIORITY}`,
45
+ value: prio,
46
+ });
47
+ }
48
+ return fields;
49
+ }
50
+ /** Build patch ops for a card/issue work item. */
51
+ buildCardFields(card, template) {
52
+ const fields = [
53
+ { op: "add", path: `/fields/${AZURE_FIELDS.TITLE}`, value: card.title },
54
+ ];
55
+ // State mapping
56
+ const azureState = this.fieldMapper.mapStateToAzure(template, card.status);
57
+ fields.push({
58
+ op: "add",
59
+ path: `/fields/${AZURE_FIELDS.STATE}`,
60
+ value: azureState,
61
+ });
62
+ // Priority
63
+ const prio = PRIORITY_MAP[card.priority];
64
+ if (prio !== undefined) {
65
+ fields.push({
66
+ op: "add",
67
+ path: `/fields/${AZURE_FIELDS.PRIORITY}`,
68
+ value: prio,
69
+ });
70
+ }
71
+ // Description + AC (template-aware)
72
+ this.appendDescriptionAndAc(fields, card, template);
73
+ // Story points (template-aware)
74
+ this.appendStoryPoints(fields, card, template);
75
+ // Iteration path (sprint assignment)
76
+ if (card.iterationPath !== undefined) {
77
+ fields.push({
78
+ op: "add",
79
+ path: `/fields/${AZURE_FIELDS.ITERATION_PATH}`,
80
+ value: card.iterationPath,
81
+ });
82
+ }
83
+ return fields;
84
+ }
85
+ /** Build patch ops for a Task work item derived from an acceptance criterion. */
86
+ buildTaskFields(task, template) {
87
+ const fields = [
88
+ { op: "add", path: `/fields/${AZURE_FIELDS.TITLE}`, value: task.title },
89
+ ];
90
+ // Task state: met=true → done state, met=false → todo state
91
+ const taskStates = TASK_STATE_FOR_MET[template];
92
+ fields.push({
93
+ op: "add",
94
+ path: `/fields/${AZURE_FIELDS.STATE}`,
95
+ value: task.met ? taskStates.done : taskStates.todo,
96
+ });
97
+ // Iteration path (inherit from parent card)
98
+ if (task.iterationPath !== undefined) {
99
+ fields.push({
100
+ op: "add",
101
+ path: `/fields/${AZURE_FIELDS.ITERATION_PATH}`,
102
+ value: task.iterationPath,
103
+ });
104
+ }
105
+ return fields;
106
+ }
107
+ // ── Private Helpers ─────────────────────────────────────────────
108
+ appendDescriptionAndAc(fields, card, template) {
109
+ const acTexts = card.acceptanceCriteria.map((ac) => `${ac.met ? "[x]" : "[ ]"} ${ac.description}`);
110
+ const mappings = this.fieldMapper.getFieldMappings(template);
111
+ const acMapping = mappings.find((m) => m.localField === "acceptanceCriteria");
112
+ if (acMapping && acMapping.fallback === "description") {
113
+ // Basic/CMMI: embed AC in description
114
+ const desc = card.description ?? "";
115
+ const html = this.fieldMapper.buildAcceptanceCriteriaHtml(desc, acTexts);
116
+ fields.push({
117
+ op: "add",
118
+ path: `/fields/${AZURE_FIELDS.DESCRIPTION}`,
119
+ value: html,
120
+ });
121
+ }
122
+ else {
123
+ // Agile/Scrum: separate fields
124
+ if (card.description !== undefined) {
125
+ fields.push({
126
+ op: "add",
127
+ path: `/fields/${AZURE_FIELDS.DESCRIPTION}`,
128
+ value: card.description,
129
+ });
130
+ }
131
+ if (acTexts.length > 0 && acMapping) {
132
+ const acHtml = acTexts
133
+ .map((t) => `<li>${t}</li>`)
134
+ .join("");
135
+ fields.push({
136
+ op: "add",
137
+ path: `/fields/${acMapping.azureField}`,
138
+ value: `<ul>${acHtml}</ul>`,
139
+ });
140
+ }
141
+ }
142
+ }
143
+ appendStoryPoints(fields, card, template) {
144
+ const mappings = this.fieldMapper.getFieldMappings(template);
145
+ const spMapping = mappings.find((m) => m.localField === "storyPoints");
146
+ if (card.storyPoints !== undefined && spMapping) {
147
+ if (spMapping.fallback === "tag") {
148
+ // Basic/CMMI: add SP as tag
149
+ fields.push({
150
+ op: "add",
151
+ path: `/fields/${AZURE_FIELDS.TAGS}`,
152
+ value: this.fieldMapper.buildStoryPointsTag(card.storyPoints, ""),
153
+ });
154
+ }
155
+ else {
156
+ // Agile/Scrum: native field
157
+ fields.push({
158
+ op: "add",
159
+ path: `/fields/${spMapping.azureField}`,
160
+ value: card.storyPoints,
161
+ });
162
+ }
163
+ }
164
+ }
165
+ }
166
+ //# sourceMappingURL=field-builders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-builders.js","sourceRoot":"","sources":["../../../src/application/azure-sync/field-builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Azure Sync Application — Barrel Export
3
+ */
4
+ export { AzureSyncUseCases } from "./push-use-cases.js";
5
+ export type { AzureSyncDeps } from "./push-use-cases.js";
6
+ export { AzureSyncPullUseCases } from "./pull-use-cases.js";
7
+ export { AzurePrUseCases } from "./pr-use-cases.js";
8
+ export type { AzurePrDeps } from "./pr-use-cases.js";
9
+ export { AzureFieldBuilder } from "./field-builders.js";
10
+ export { ReverseFieldBuilder } from "./reverse-field-builder.js";
11
+ export { TaskPushUseCases, buildTaskLocalId, parseTaskLocalId } from "./task-push-use-cases.js";
12
+ export type { CardForTaskPush, TaskPushDeps, TaskPushResult } from "./task-push-use-cases.js";
13
+ export type { EpicFieldInput, CardFieldInput, TaskFieldInput } from "./field-builders.js";
14
+ export type { ExtractedCardData, ExtractedEpicData } from "./reverse-field-builder.js";
15
+ export type { DiscoverRequest, DiscoverResponse, PushRequest, PushResponse, PullRequest, PullResponse, BidiSyncRequest, BidiSyncResponse, SyncStatusRequest, SyncStatusResponse, ConfigStatusResponse, CreatePrRequest, PrResponse, PrReviewerInfo, ListPrRequest, ListPrResponse, CommentRequest, CommentResponse, } from "./dtos.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/application/azure-sync/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC9F,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1F,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACvF,YAAY,EACV,eAAe,EAAE,gBAAgB,EACjC,WAAW,EAAE,YAAY,EACzB,WAAW,EAAE,YAAY,EACzB,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAC3D,eAAe,EAAE,UAAU,EAAE,cAAc,EAC3C,aAAa,EAAE,cAAc,EAC7B,cAAc,EAAE,eAAe,GAChC,MAAM,WAAW,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Azure Sync Application — Barrel Export
3
+ */
4
+ export { AzureSyncUseCases } from "./push-use-cases.js";
5
+ export { AzureSyncPullUseCases } from "./pull-use-cases.js";
6
+ export { AzurePrUseCases } from "./pr-use-cases.js";
7
+ export { AzureFieldBuilder } from "./field-builders.js";
8
+ export { ReverseFieldBuilder } from "./reverse-field-builder.js";
9
+ export { TaskPushUseCases, buildTaskLocalId, parseTaskLocalId } from "./task-push-use-cases.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/application/azure-sync/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Azure Sync Application — PR & Comment Use Cases
3
+ *
4
+ * Orchestrates Pull Request creation, listing, and structured
5
+ * work item comment generation for Azure DevOps integration.
6
+ *
7
+ * SOLID: SRP — PR and comment operations only
8
+ * SOLID: DIP — depends on AzureDevOpsPort abstraction
9
+ * DDD: Application layer use cases with DTO boundaries
10
+ */
11
+ import type { Result } from "../../domain/shared/value-objects.js";
12
+ import type { AzureDevOpsPort } from "../../domain/azure-sync/ports.js";
13
+ import type { ConfigService } from "../config/config-service.js";
14
+ import type { CreatePrRequest, PrResponse, ListPrRequest, ListPrResponse, CommentRequest, CommentResponse, PushResponse } from "./dtos.js";
15
+ /** Dependencies for PR use cases. */
16
+ export interface AzurePrDeps {
17
+ readonly azureClient: AzureDevOpsPort;
18
+ readonly configService: ConfigService;
19
+ }
20
+ /**
21
+ * Application use cases for Azure DevOps Pull Requests and structured comments.
22
+ * Handles PR CRUD and comment generation from sync results.
23
+ */
24
+ export declare class AzurePrUseCases {
25
+ private readonly deps;
26
+ constructor(deps: AzurePrDeps);
27
+ /** Create a Pull Request in Azure Repos. */
28
+ createPr(req: CreatePrRequest): Promise<Result<PrResponse>>;
29
+ /** List Pull Requests, or get a single PR by ID. */
30
+ listPrs(req: ListPrRequest): Promise<Result<ListPrResponse>>;
31
+ /** Post a structured comment on an Azure work item. */
32
+ postComment(req: CommentRequest): Promise<Result<CommentResponse>>;
33
+ /**
34
+ * Post auto-comments on all work items that were pushed.
35
+ * Creates a brief sync summary comment on each pushed work item.
36
+ */
37
+ autoCommentOnPush(org: string, project: string, pushResult: PushResponse): Promise<readonly CommentResponse[]>;
38
+ }
39
+ //# sourceMappingURL=pr-use-cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-use-cases.d.ts","sourceRoot":"","sources":["../../../src/application/azure-sync/pr-use-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,kCAAkC,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAEV,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,YAAY,EACb,MAAM,WAAW,CAAC;AAInB,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;CACvC;AAID;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAc;gBAEvB,IAAI,EAAE,WAAW;IAM7B,4CAA4C;IACtC,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IA2BjE,oDAAoD;IAC9C,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAqClE,uDAAuD;IACjD,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAwBxE;;;OAGG;IACG,iBAAiB,CACrB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,YAAY,GACvB,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;CAqBvC"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Azure Sync Application — PR & Comment Use Cases
3
+ *
4
+ * Orchestrates Pull Request creation, listing, and structured
5
+ * work item comment generation for Azure DevOps integration.
6
+ *
7
+ * SOLID: SRP — PR and comment operations only
8
+ * SOLID: DIP — depends on AzureDevOpsPort abstraction
9
+ * DDD: Application layer use cases with DTO boundaries
10
+ */
11
+ import { ok } from "../../domain/shared/value-objects.js";
12
+ // ── PR Use Cases ──────────────────────────────────────────────────────────────
13
+ /**
14
+ * Application use cases for Azure DevOps Pull Requests and structured comments.
15
+ * Handles PR CRUD and comment generation from sync results.
16
+ */
17
+ export class AzurePrUseCases {
18
+ deps;
19
+ constructor(deps) {
20
+ this.deps = deps;
21
+ }
22
+ // ── Pull Request Operations ───────────────────────────────────────
23
+ /** Create a Pull Request in Azure Repos. */
24
+ async createPr(req) {
25
+ const targetBranch = req.targetBranch ?? "refs/heads/main";
26
+ const sourceBranch = req.sourceBranch.startsWith("refs/")
27
+ ? req.sourceBranch
28
+ : `refs/heads/${req.sourceBranch}`;
29
+ const target = targetBranch.startsWith("refs/")
30
+ ? targetBranch
31
+ : `refs/heads/${targetBranch}`;
32
+ const result = await this.deps.azureClient.createPullRequest(req.org, req.project, req.repository, {
33
+ title: req.title,
34
+ description: req.description,
35
+ sourceRefName: sourceBranch,
36
+ targetRefName: target,
37
+ ...(req.workItemIds !== undefined ? { workItemIds: req.workItemIds } : {}),
38
+ ...(req.reviewers !== undefined ? { reviewers: req.reviewers } : {}),
39
+ });
40
+ if (!result.success)
41
+ return result;
42
+ return ok(mapPrToResponse(result.data));
43
+ }
44
+ /** List Pull Requests, or get a single PR by ID. */
45
+ async listPrs(req) {
46
+ // Single PR by ID
47
+ if (req.pullRequestId !== undefined) {
48
+ const result = await this.deps.azureClient.getPullRequest(req.org, req.project, req.repository, req.pullRequestId);
49
+ if (!result.success)
50
+ return result;
51
+ const pr = mapPrToResponse(result.data);
52
+ return ok({
53
+ pullRequests: [pr],
54
+ summary: `PR #${pr.pullRequestId}: ${pr.title} [${pr.status}]`,
55
+ });
56
+ }
57
+ // List PRs by status
58
+ const status = normalizeStatusFilter(req.status);
59
+ const result = await this.deps.azureClient.listPullRequests(req.org, req.project, req.repository, status, req.top);
60
+ if (!result.success)
61
+ return result;
62
+ const prs = result.data.map(mapPrToResponse);
63
+ return ok({
64
+ pullRequests: prs,
65
+ summary: `Found ${prs.length} pull request(s) [${status}]`,
66
+ });
67
+ }
68
+ // ── Structured Comments ───────────────────────────────────────────
69
+ /** Post a structured comment on an Azure work item. */
70
+ async postComment(req) {
71
+ const html = buildCommentHtml(req);
72
+ const result = await this.deps.azureClient.addComment(req.org, req.project, req.workItemId, html);
73
+ if (!result.success) {
74
+ return ok({
75
+ workItemId: req.workItemId,
76
+ success: false,
77
+ error: result.error,
78
+ });
79
+ }
80
+ return ok({
81
+ workItemId: req.workItemId,
82
+ success: true,
83
+ });
84
+ }
85
+ /**
86
+ * Post auto-comments on all work items that were pushed.
87
+ * Creates a brief sync summary comment on each pushed work item.
88
+ */
89
+ async autoCommentOnPush(org, project, pushResult) {
90
+ const results = [];
91
+ for (const item of pushResult.pushed) {
92
+ const comment = await this.postComment({
93
+ org,
94
+ project,
95
+ workItemId: item.azureWorkItemId,
96
+ commentType: "push-summary",
97
+ pushSummary: pushResult,
98
+ });
99
+ results.push(comment.success
100
+ ? comment.data
101
+ : { workItemId: item.azureWorkItemId, success: false, error: comment.error });
102
+ }
103
+ return results;
104
+ }
105
+ }
106
+ // ── Helpers ───────────────────────────────────────────────────────────────────
107
+ /** Map domain AzurePullRequest to PrResponse DTO. */
108
+ function mapPrToResponse(pr) {
109
+ return {
110
+ pullRequestId: pr.pullRequestId,
111
+ title: pr.title,
112
+ description: pr.description,
113
+ status: pr.status,
114
+ sourceBranch: pr.sourceRefName.replace("refs/heads/", ""),
115
+ targetBranch: pr.targetRefName.replace("refs/heads/", ""),
116
+ createdBy: pr.createdBy,
117
+ creationDate: pr.creationDate,
118
+ mergeStatus: pr.mergeStatus,
119
+ url: pr.url,
120
+ workItemIds: pr.workItemIds,
121
+ reviewers: pr.reviewers.map(mapReviewer),
122
+ };
123
+ }
124
+ /** Map reviewer vote number to human-readable label. */
125
+ function mapReviewer(r) {
126
+ const voteLabels = {
127
+ 10: "Approved",
128
+ 5: "Approved with suggestions",
129
+ 0: "No vote",
130
+ [-5]: "Waiting for author",
131
+ [-10]: "Rejected",
132
+ };
133
+ return {
134
+ displayName: r.displayName,
135
+ uniqueName: r.uniqueName,
136
+ vote: r.vote,
137
+ voteLabel: voteLabels[r.vote] ?? `Vote: ${r.vote}`,
138
+ };
139
+ }
140
+ function normalizeStatusFilter(status) {
141
+ if (status === undefined)
142
+ return "active";
143
+ const lower = status.toLowerCase();
144
+ if (lower === "abandoned")
145
+ return "abandoned";
146
+ if (lower === "completed")
147
+ return "completed";
148
+ if (lower === "all")
149
+ return "all";
150
+ return "active";
151
+ }
152
+ // ── Comment HTML Builder ─────────────────────────────────────────────────────
153
+ /** Build structured HTML comment based on comment type. */
154
+ function buildCommentHtml(req) {
155
+ switch (req.commentType) {
156
+ case "push-summary":
157
+ return buildPushSummaryHtml(req.pushSummary);
158
+ case "pr-link":
159
+ return buildPrLinkHtml(req.prUrl, req.prTitle);
160
+ case "custom":
161
+ return req.customText ?? "";
162
+ }
163
+ }
164
+ /** Build HTML for a push operation summary. */
165
+ function buildPushSummaryHtml(pushSummary) {
166
+ if (pushSummary === undefined)
167
+ return "<p><strong>JARVIS Sync</strong>: Push completed.</p>";
168
+ const lines = [
169
+ "<h3>JARVIS Sync — Push Summary</h3>",
170
+ `<p>${pushSummary.summary}</p>`,
171
+ ];
172
+ if (pushSummary.pushed.length > 0) {
173
+ lines.push("<ul>");
174
+ for (const item of pushSummary.pushed) {
175
+ const icon = item.action === "created" ? "+" : "~";
176
+ lines.push(`<li>${icon} ${item.localId} &quot;${item.localTitle}&quot; → #${item.azureWorkItemId}</li>`);
177
+ }
178
+ lines.push("</ul>");
179
+ }
180
+ if (pushSummary.errors.length > 0) {
181
+ lines.push(`<p><strong>Errors</strong>: ${pushSummary.errors.length}</p>`);
182
+ }
183
+ return lines.join("\n");
184
+ }
185
+ /** Build HTML for a PR link comment. */
186
+ function buildPrLinkHtml(prUrl, prTitle) {
187
+ if (prUrl === undefined)
188
+ return "<p><strong>JARVIS</strong>: PR created.</p>";
189
+ const title = prTitle ?? "Pull Request";
190
+ return `<p><strong>JARVIS</strong>: PR created — <a href="${prUrl}">${title}</a></p>`;
191
+ }
192
+ //# sourceMappingURL=pr-use-cases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-use-cases.js","sourceRoot":"","sources":["../../../src/application/azure-sync/pr-use-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,EAAE,EAAE,MAAM,sCAAsC,CAAC;AAsB1D,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,OAAO,eAAe;IACT,IAAI,CAAc;IAEnC,YAAY,IAAiB;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,qEAAqE;IAErE,4CAA4C;IAC5C,KAAK,CAAC,QAAQ,CAAC,GAAoB;QACjC,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,IAAI,iBAAiB,CAAC;QAC3D,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;YACvD,CAAC,CAAC,GAAG,CAAC,YAAY;YAClB,CAAC,CAAC,cAAc,GAAG,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;YAC7C,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,cAAc,YAAY,EAAE,CAAC;QAEjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAC1D,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,UAAU,EACd;YACE,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,aAAa,EAAE,YAAY;YAC3B,aAAa,EAAE,MAAM;YACrB,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC;QACnC,OAAO,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,oDAAoD;IACpD,KAAK,CAAC,OAAO,CAAC,GAAkB;QAC9B,kBAAkB;QAClB,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CACvD,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,UAAU,EACd,GAAG,CAAC,aAAa,CAClB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,MAAM,CAAC;YACnC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,EAAE,CAAC;gBACR,YAAY,EAAE,CAAC,EAAE,CAAC;gBAClB,OAAO,EAAE,OAAO,EAAE,CAAC,aAAa,KAAK,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,MAAM,GAAG;aAC/D,CAAC,CAAC;QACL,CAAC;QAED,qBAAqB;QACrB,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CACzD,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,UAAU,EACd,MAAM,EACN,GAAG,CAAC,GAAG,CACR,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,MAAM,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7C,OAAO,EAAE,CAAC;YACR,YAAY,EAAE,GAAG;YACjB,OAAO,EAAE,SAAS,GAAG,CAAC,MAAM,qBAAqB,MAAM,GAAG;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,qEAAqE;IAErE,uDAAuD;IACvD,KAAK,CAAC,WAAW,CAAC,GAAmB;QACnC,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAEnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CACnD,GAAG,CAAC,GAAG,EACP,GAAG,CAAC,OAAO,EACX,GAAG,CAAC,UAAU,EACd,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,EAAE,CAAC;gBACR,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,CAAC;YACR,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CACrB,GAAW,EACX,OAAe,EACf,UAAwB;QAExB,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;gBACrC,GAAG;gBACH,OAAO;gBACP,UAAU,EAAE,IAAI,CAAC,eAAe;gBAChC,WAAW,EAAE,cAAc;gBAC3B,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;YAEH,OAAO,CAAC,IAAI,CACV,OAAO,CAAC,OAAO;gBACb,CAAC,CAAC,OAAO,CAAC,IAAI;gBACd,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,iFAAiF;AAEjF,qDAAqD;AACrD,SAAS,eAAe,CAAC,EAAoB;IAC3C,OAAO;QACL,aAAa,EAAE,EAAE,CAAC,aAAa;QAC/B,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,MAAM,EAAE,EAAE,CAAC,MAAM;QACjB,YAAY,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACzD,YAAY,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QACzD,SAAS,EAAE,EAAE,CAAC,SAAS;QACvB,YAAY,EAAE,EAAE,CAAC,YAAY;QAC7B,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,GAAG,EAAE,EAAE,CAAC,GAAG;QACX,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;KACzC,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,SAAS,WAAW,CAAC,CAA4D;IAC/E,MAAM,UAAU,GAA2B;QACzC,EAAE,EAAE,UAAU;QACd,CAAC,EAAE,2BAA2B;QAC9B,CAAC,EAAE,SAAS;QACZ,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB;QAC1B,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU;KAClB,CAAC;IACF,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAe;IAEf,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC9C,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IAC9C,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAClC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,gFAAgF;AAEhF,2DAA2D;AAC3D,SAAS,gBAAgB,CAAC,GAAmB;IAC3C,QAAQ,GAAG,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,cAAc;YACjB,OAAO,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/C,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACjD,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;IAChC,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,SAAS,oBAAoB,CAAC,WAA0B;IACtD,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,sDAAsD,CAAC;IAE7F,MAAM,KAAK,GAAa;QACtB,qCAAqC;QACrC,MAAM,WAAW,CAAC,OAAO,MAAM;KAChC,CAAC;IAEF,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,UAAU,aAAa,IAAI,CAAC,eAAe,OAAO,CAAC,CAAC;QAC3G,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,+BAA+B,WAAW,CAAC,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,wCAAwC;AACxC,SAAS,eAAe,CAAC,KAAc,EAAE,OAAgB;IACvD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,6CAA6C,CAAC;IAC9E,MAAM,KAAK,GAAG,OAAO,IAAI,cAAc,CAAC;IACxC,OAAO,qDAAqD,KAAK,KAAK,KAAK,UAAU,CAAC;AACxF,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Azure Sync Application — Pull & Bidirectional Use Cases
3
+ *
4
+ * Orchestrates pull (Azure → local) and bidirectional sync operations.
5
+ * Fetches Azure work items, reverse-maps fields, creates/updates local
6
+ * entities via kanban use cases, and resolves conflicts.
7
+ *
8
+ * SOLID: SRP — pull orchestration only
9
+ * SOLID: DIP — depends on interfaces (ports, repositories, use cases)
10
+ * DDD: Application service coordinating bounded contexts
11
+ */
12
+ import type { Result } from "../../domain/shared/value-objects.js";
13
+ import type { AzureSyncDeps } from "./push-use-cases.js";
14
+ import type { AzureSyncUseCases } from "./push-use-cases.js";
15
+ import type { PullRequest, PullResponse, BidiSyncRequest, BidiSyncResponse, SyncStatusRequest, SyncStatusResponse } from "./dtos.js";
16
+ /**
17
+ * Orchestrates pull and bidirectional sync operations.
18
+ * Fetches Azure work items and creates/updates local kanban entities.
19
+ */
20
+ export declare class AzureSyncPullUseCases {
21
+ private readonly deps;
22
+ private readonly pushUseCases;
23
+ private readonly fieldMapper;
24
+ private readonly reverseBuilder;
25
+ private readonly conflictResolver;
26
+ constructor(deps: AzureSyncDeps, pushUseCases: AzureSyncUseCases);
27
+ /** Pull work items from Azure and create/update local entities. */
28
+ pull(req: PullRequest): Promise<Result<PullResponse>>;
29
+ /** Push local changes then pull Azure changes in one operation. */
30
+ bidiSync(req: BidiSyncRequest): Promise<Result<BidiSyncResponse>>;
31
+ /** Enhanced sync status that also detects unmapped Azure items. */
32
+ enhancedSyncStatus(req: SyncStatusRequest): Promise<Result<SyncStatusResponse>>;
33
+ private pullEpics;
34
+ private pullCards;
35
+ private handleMappedCard;
36
+ private createLocalCard;
37
+ private updateLocalCard;
38
+ private createLocalEpic;
39
+ private createPullMapping;
40
+ private logSync;
41
+ private findUnmappedAzureItems;
42
+ }
43
+ //# sourceMappingURL=pull-use-cases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-use-cases.d.ts","sourceRoot":"","sources":["../../../src/application/azure-sync/pull-use-cases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAQnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EACV,WAAW,EAAE,YAAY,EAEzB,eAAe,EAAE,gBAAgB,EACjC,iBAAiB,EAAE,kBAAkB,EACtC,MAAM,WAAW,CAAC;AAInB;;;GAGG;AACH,qBAAa,qBAAqB;IAM9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAN/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA0B;gBAGxC,IAAI,EAAE,aAAa,EACnB,YAAY,EAAE,iBAAiB;IAKlD,mEAAmE;IAC7D,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IA6B3D,mEAAmE;IAC7D,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IA8BvE,mEAAmE;IAC7D,kBAAkB,CACtB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAsBxB,SAAS;YA2CT,SAAS;YAkDT,gBAAgB;YAkChB,eAAe;YAgDf,eAAe;YA8Cf,eAAe;YAgCf,iBAAiB;YAwBjB,OAAO;YAsBP,sBAAsB;CAgCrC"}