devchain-cli 0.22.1 → 0.23.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 (249) hide show
  1. package/dist/drizzle/0077_familiar_morbius.sql +6 -0
  2. package/dist/drizzle/0078_preserve_legacy_connection_ownership.sql +180 -0
  3. package/dist/drizzle/0079_premium_forgotten_one.sql +18 -0
  4. package/dist/drizzle/0080_lethal_thunderbolt_ross.sql +49 -0
  5. package/dist/drizzle/0081_early_kronos.sql +58 -0
  6. package/dist/drizzle/0082_huge_black_queen.sql +14 -0
  7. package/dist/drizzle/meta/0077_snapshot.json +6957 -0
  8. package/dist/drizzle/meta/0078_snapshot.json +6957 -0
  9. package/dist/drizzle/meta/0079_snapshot.json +7093 -0
  10. package/dist/drizzle/meta/0080_snapshot.json +7241 -0
  11. package/dist/drizzle/meta/0081_snapshot.json +7482 -0
  12. package/dist/drizzle/meta/0082_snapshot.json +7571 -0
  13. package/dist/drizzle/meta/_journal.json +42 -0
  14. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  15. package/dist/server/common/errors/error-types.d.ts +7 -0
  16. package/dist/server/common/errors/error-types.js +7 -1
  17. package/dist/server/common/errors/error-types.js.map +1 -1
  18. package/dist/server/modules/epic-time/controllers/agent-time-buffer.controller.d.ts +9 -0
  19. package/dist/server/modules/epic-time/controllers/agent-time-buffer.controller.js +90 -0
  20. package/dist/server/modules/epic-time/controllers/agent-time-buffer.controller.js.map +1 -0
  21. package/dist/server/modules/epic-time/controllers/external-estimate-log.controller.d.ts +12 -0
  22. package/dist/server/modules/epic-time/controllers/external-estimate-log.controller.js +322 -0
  23. package/dist/server/modules/epic-time/controllers/external-estimate-log.controller.js.map +1 -0
  24. package/dist/server/modules/epic-time/epic-time-store.module.d.ts +2 -0
  25. package/dist/server/modules/epic-time/epic-time-store.module.js +23 -0
  26. package/dist/server/modules/epic-time/epic-time-store.module.js.map +1 -0
  27. package/dist/server/modules/epic-time/epic-time.module.js +10 -6
  28. package/dist/server/modules/epic-time/epic-time.module.js.map +1 -1
  29. package/dist/server/modules/epic-time/models/epic-time-daily-allocator.d.ts +30 -0
  30. package/dist/server/modules/epic-time/models/epic-time-daily-allocator.js +125 -0
  31. package/dist/server/modules/epic-time/models/epic-time-daily-allocator.js.map +1 -0
  32. package/dist/server/modules/epic-time/models/epic-time-local-day.d.ts +9 -0
  33. package/dist/server/modules/epic-time/models/epic-time-local-day.js +164 -0
  34. package/dist/server/modules/epic-time/models/epic-time-local-day.js.map +1 -0
  35. package/dist/server/modules/epic-time/models/epic-time.models.d.ts +147 -0
  36. package/dist/server/modules/epic-time/models/epic-time.models.js +2 -0
  37. package/dist/server/modules/epic-time/models/epic-time.models.js.map +1 -1
  38. package/dist/server/modules/epic-time/services/agent-time-accounting.service.d.ts +1 -0
  39. package/dist/server/modules/epic-time/services/agent-time-accounting.service.js +31 -8
  40. package/dist/server/modules/epic-time/services/agent-time-accounting.service.js.map +1 -1
  41. package/dist/server/modules/epic-time/services/epic-estimate-logging.service.d.ts +37 -0
  42. package/dist/server/modules/epic-time/services/epic-estimate-logging.service.js +716 -0
  43. package/dist/server/modules/epic-time/services/epic-estimate-logging.service.js.map +1 -0
  44. package/dist/server/modules/epic-time/services/epic-time.service.d.ts +13 -3
  45. package/dist/server/modules/epic-time/services/epic-time.service.js +162 -69
  46. package/dist/server/modules/epic-time/services/epic-time.service.js.map +1 -1
  47. package/dist/server/modules/epic-time/services/epic-time.store.d.ts +50 -3
  48. package/dist/server/modules/epic-time/services/epic-time.store.js +705 -146
  49. package/dist/server/modules/epic-time/services/epic-time.store.js.map +1 -1
  50. package/dist/server/modules/epics/controllers/epics.controller.d.ts +10 -1
  51. package/dist/server/modules/epics/controllers/epics.controller.js +108 -2
  52. package/dist/server/modules/epics/controllers/epics.controller.js.map +1 -1
  53. package/dist/server/modules/epics/epics.module.js +8 -2
  54. package/dist/server/modules/epics/epics.module.js.map +1 -1
  55. package/dist/server/modules/epics/models/epic-relations.models.d.ts +34 -0
  56. package/dist/server/modules/epics/models/epic-relations.models.js +16 -0
  57. package/dist/server/modules/epics/models/epic-relations.models.js.map +1 -0
  58. package/dist/server/modules/epics/services/epic-relation-target-resolver.d.ts +8 -0
  59. package/dist/server/modules/epics/services/epic-relation-target-resolver.js +37 -0
  60. package/dist/server/modules/epics/services/epic-relation-target-resolver.js.map +1 -0
  61. package/dist/server/modules/epics/services/epic-relations.service.d.ts +52 -0
  62. package/dist/server/modules/epics/services/epic-relations.service.js +135 -0
  63. package/dist/server/modules/epics/services/epic-relations.service.js.map +1 -0
  64. package/dist/server/modules/epics/services/epics.service.d.ts +9 -2
  65. package/dist/server/modules/epics/services/epics.service.js +115 -11
  66. package/dist/server/modules/epics/services/epics.service.js.map +1 -1
  67. package/dist/server/modules/events/catalog/broadcast-registry.js +16 -0
  68. package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
  69. package/dist/server/modules/events/catalog/epic.relations.invalidated.d.ts +12 -0
  70. package/dist/server/modules/events/catalog/epic.relations.invalidated.js +13 -0
  71. package/dist/server/modules/events/catalog/epic.relations.invalidated.js.map +1 -0
  72. package/dist/server/modules/events/catalog/epic.time.scope.invalidated.d.ts +12 -0
  73. package/dist/server/modules/events/catalog/epic.time.scope.invalidated.js +13 -0
  74. package/dist/server/modules/events/catalog/epic.time.scope.invalidated.js.map +1 -0
  75. package/dist/server/modules/events/catalog/index.d.ts +27 -4
  76. package/dist/server/modules/events/catalog/index.js +6 -0
  77. package/dist/server/modules/events/catalog/index.js.map +1 -1
  78. package/dist/server/modules/events/catalog/integration.connection.created.d.ts +4 -1
  79. package/dist/server/modules/events/catalog/integration.connection.created.js +5 -2
  80. package/dist/server/modules/events/catalog/integration.connection.created.js.map +1 -1
  81. package/dist/server/modules/events/catalog/integration.connection.deleted.d.ts +4 -1
  82. package/dist/server/modules/events/catalog/integration.connection.deleted.js +5 -2
  83. package/dist/server/modules/events/catalog/integration.connection.deleted.js.map +1 -1
  84. package/dist/server/modules/events/catalog/integration.connection.legacy.d.ts +85 -0
  85. package/dist/server/modules/events/catalog/integration.connection.legacy.js +41 -0
  86. package/dist/server/modules/events/catalog/integration.connection.legacy.js.map +1 -0
  87. package/dist/server/modules/events/catalog/integration.connection.updated.d.ts +4 -1
  88. package/dist/server/modules/events/catalog/integration.connection.updated.js +5 -2
  89. package/dist/server/modules/events/catalog/integration.connection.updated.js.map +1 -1
  90. package/dist/server/modules/events/services/committed-event-replay.d.ts +10 -0
  91. package/dist/server/modules/events/services/committed-event-replay.js +30 -0
  92. package/dist/server/modules/events/services/committed-event-replay.js.map +1 -0
  93. package/dist/server/modules/events/services/committed-event.store.d.ts +1 -0
  94. package/dist/server/modules/events/services/committed-event.store.js +12 -7
  95. package/dist/server/modules/events/services/committed-event.store.js.map +1 -1
  96. package/dist/server/modules/events/services/durable-event-registry.service.d.ts +9 -2
  97. package/dist/server/modules/events/services/durable-event-registry.service.js.map +1 -1
  98. package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.d.ts +7 -0
  99. package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.js +158 -50
  100. package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.js.map +1 -1
  101. package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.d.ts +4 -0
  102. package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.js +73 -33
  103. package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.js.map +1 -1
  104. package/dist/server/modules/external-integrations/connections/integration-connections.controller.d.ts +6 -3
  105. package/dist/server/modules/external-integrations/connections/integration-connections.controller.js +67 -12
  106. package/dist/server/modules/external-integrations/connections/integration-connections.controller.js.map +1 -1
  107. package/dist/server/modules/external-integrations/connections/integration-connections.service.d.ts +35 -3
  108. package/dist/server/modules/external-integrations/connections/integration-connections.service.js +178 -17
  109. package/dist/server/modules/external-integrations/connections/integration-connections.service.js.map +1 -1
  110. package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.d.ts +6 -3
  111. package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.js +51 -11
  112. package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.js.map +1 -1
  113. package/dist/server/modules/external-integrations/external-integrations.module.js +6 -1
  114. package/dist/server/modules/external-integrations/external-integrations.module.js.map +1 -1
  115. package/dist/server/modules/external-integrations/models/external-edit-session.models.d.ts +1 -0
  116. package/dist/server/modules/external-integrations/models/external-provider.models.d.ts +6 -2
  117. package/dist/server/modules/external-integrations/models/external-provider.models.js +2 -3
  118. package/dist/server/modules/external-integrations/models/external-provider.models.js.map +1 -1
  119. package/dist/server/modules/external-integrations/models/external-time-mutation.models.d.ts +33 -2
  120. package/dist/server/modules/external-integrations/models/external-time-mutation.models.js +14 -0
  121. package/dist/server/modules/external-integrations/models/external-time-mutation.models.js.map +1 -1
  122. package/dist/server/modules/external-integrations/my-work/external-edit-session.service.d.ts +10 -9
  123. package/dist/server/modules/external-integrations/my-work/external-edit-session.service.js +81 -46
  124. package/dist/server/modules/external-integrations/my-work/external-edit-session.service.js.map +1 -1
  125. package/dist/server/modules/external-integrations/my-work/external-my-work.controller.d.ts +22 -20
  126. package/dist/server/modules/external-integrations/my-work/external-my-work.controller.js +136 -64
  127. package/dist/server/modules/external-integrations/my-work/external-my-work.controller.js.map +1 -1
  128. package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.d.ts +7 -0
  129. package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.js +289 -4
  130. package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.js.map +1 -1
  131. package/dist/server/modules/external-integrations/my-work/external-my-work.service.d.ts +12 -7
  132. package/dist/server/modules/external-integrations/my-work/external-my-work.service.js +114 -54
  133. package/dist/server/modules/external-integrations/my-work/external-my-work.service.js.map +1 -1
  134. package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.d.ts +19 -6
  135. package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.js +346 -46
  136. package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.js.map +1 -1
  137. package/dist/server/modules/external-integrations/sessions/external-edit-session.store.d.ts +2 -1
  138. package/dist/server/modules/external-integrations/sessions/external-edit-session.store.js +3 -2
  139. package/dist/server/modules/external-integrations/sessions/external-edit-session.store.js.map +1 -1
  140. package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.d.ts +6 -1
  141. package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.js +19 -0
  142. package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.js.map +1 -1
  143. package/dist/server/modules/external-integrations/sessions/provider-operation-gate.d.ts +15 -2
  144. package/dist/server/modules/external-integrations/sessions/provider-operation-gate.js +33 -6
  145. package/dist/server/modules/external-integrations/sessions/provider-operation-gate.js.map +1 -1
  146. package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.d.ts +13 -6
  147. package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.js +212 -75
  148. package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.js.map +1 -1
  149. package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.d.ts +13 -4
  150. package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.js +98 -0
  151. package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.js.map +1 -1
  152. package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.d.ts +10 -4
  153. package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.js +57 -18
  154. package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.js.map +1 -1
  155. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +139 -0
  156. package/dist/server/modules/mcp/dtos/mcp.dto.js +41 -1
  157. package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
  158. package/dist/server/modules/mcp/services/handlers/epic-context.d.ts +2 -0
  159. package/dist/server/modules/mcp/services/handlers/epic-tools.d.ts +4 -0
  160. package/dist/server/modules/mcp/services/handlers/epic-tools.js +275 -0
  161. package/dist/server/modules/mcp/services/handlers/epic-tools.js.map +1 -1
  162. package/dist/server/modules/mcp/services/mcp-tool-binding.registry.d.ts +2 -1
  163. package/dist/server/modules/mcp/services/mcp-tool-binding.registry.js +13 -8
  164. package/dist/server/modules/mcp/services/mcp-tool-binding.registry.js.map +1 -1
  165. package/dist/server/modules/mcp/services/testing/mcp-tool-binding-registry.fixture.d.ts +1 -1
  166. package/dist/server/modules/mcp/services/testing/mcp-tool-binding-registry.fixture.js +1 -1
  167. package/dist/server/modules/mcp/services/testing/mcp-tool-binding-registry.fixture.js.map +1 -1
  168. package/dist/server/modules/mcp/tool-descriptors/binding-types.d.ts +2 -0
  169. package/dist/server/modules/mcp/tool-descriptors/binding-types.js.map +1 -1
  170. package/dist/server/modules/mcp/tool-descriptors/epic.bindings.js +6 -0
  171. package/dist/server/modules/mcp/tool-descriptors/epic.bindings.js.map +1 -1
  172. package/dist/server/modules/mcp/tool-descriptors/epic.metadata.js +132 -0
  173. package/dist/server/modules/mcp/tool-descriptors/epic.metadata.js.map +1 -1
  174. package/dist/server/modules/projects/controllers/projects.controller.js +1 -4
  175. package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
  176. package/dist/server/modules/projects/projects.module.js +2 -0
  177. package/dist/server/modules/projects/projects.module.js.map +1 -1
  178. package/dist/server/modules/projects/services/projects.service.d.ts +4 -1
  179. package/dist/server/modules/projects/services/projects.service.js +23 -2
  180. package/dist/server/modules/projects/services/projects.service.js.map +1 -1
  181. package/dist/server/modules/providers/adapters/claude.adapter.d.ts +4 -2
  182. package/dist/server/modules/providers/adapters/claude.adapter.js +31 -0
  183. package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
  184. package/dist/server/modules/providers/services/provider-mcp-ensure.service.d.ts +7 -0
  185. package/dist/server/modules/providers/services/provider-mcp-ensure.service.js +69 -4
  186. package/dist/server/modules/providers/services/provider-mcp-ensure.service.js.map +1 -1
  187. package/dist/server/modules/session-reader/data/pricing.json +452 -56
  188. package/dist/server/modules/session-reader/services/session-reader.service.d.ts +2 -0
  189. package/dist/server/modules/session-reader/services/session-reader.service.js +85 -9
  190. package/dist/server/modules/session-reader/services/session-reader.service.js.map +1 -1
  191. package/dist/server/modules/session-reader/services/transcript-path-validator.service.js +8 -2
  192. package/dist/server/modules/session-reader/services/transcript-path-validator.service.js.map +1 -1
  193. package/dist/server/modules/session-reader/services/transcript-watcher.service.js +44 -17
  194. package/dist/server/modules/session-reader/services/transcript-watcher.service.js.map +1 -1
  195. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +1 -0
  196. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +1 -0
  197. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
  198. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +11 -1
  199. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
  200. package/dist/server/modules/sessions/services/sessions.service.d.ts +3 -1
  201. package/dist/server/modules/sessions/services/sessions.service.js +36 -6
  202. package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
  203. package/dist/server/modules/sessions/sessions.module.js +2 -0
  204. package/dist/server/modules/sessions/sessions.module.js.map +1 -1
  205. package/dist/server/modules/sessions/utils/claude-config.d.ts +4 -1
  206. package/dist/server/modules/sessions/utils/claude-config.js +265 -60
  207. package/dist/server/modules/sessions/utils/claude-config.js.map +1 -1
  208. package/dist/server/modules/storage/db/schema.d.ts +1109 -98
  209. package/dist/server/modules/storage/db/schema.js +141 -3
  210. package/dist/server/modules/storage/db/schema.js.map +1 -1
  211. package/dist/server/modules/storage/db/sqlite-json.d.ts +1 -0
  212. package/dist/server/modules/storage/db/sqlite-json.js +4 -0
  213. package/dist/server/modules/storage/db/sqlite-json.js.map +1 -1
  214. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +58 -10
  215. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  216. package/dist/server/modules/storage/local/delegates/epic.delegate.d.ts +30 -5
  217. package/dist/server/modules/storage/local/delegates/epic.delegate.js +718 -14
  218. package/dist/server/modules/storage/local/delegates/epic.delegate.js.map +1 -1
  219. package/dist/server/modules/storage/local/delegates/external-estimate-log.delegate.d.ts +52 -0
  220. package/dist/server/modules/storage/local/delegates/external-estimate-log.delegate.js +659 -0
  221. package/dist/server/modules/storage/local/delegates/external-estimate-log.delegate.js.map +1 -0
  222. package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.d.ts +2 -1
  223. package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.js +17 -4
  224. package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.js.map +1 -1
  225. package/dist/server/modules/storage/local/delegates/integration.delegate.d.ts +23 -8
  226. package/dist/server/modules/storage/local/delegates/integration.delegate.js +238 -52
  227. package/dist/server/modules/storage/local/delegates/integration.delegate.js.map +1 -1
  228. package/dist/server/modules/storage/local/delegates/project.delegate.d.ts +2 -0
  229. package/dist/server/modules/storage/local/delegates/project.delegate.js +180 -130
  230. package/dist/server/modules/storage/local/delegates/project.delegate.js.map +1 -1
  231. package/dist/server/modules/storage/local/local-storage.service.d.ts +45 -10
  232. package/dist/server/modules/storage/local/local-storage.service.js +99 -15
  233. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  234. package/dist/server/modules/storage/models/domain.models.d.ts +170 -0
  235. package/dist/server/modules/storage/models/domain.models.js +9 -0
  236. package/dist/server/modules/storage/models/domain.models.js.map +1 -1
  237. package/dist/server/templates/teams-dev.json +311 -301
  238. package/dist/server/tsconfig.tsbuildinfo +1 -1
  239. package/dist/server/ui/assets/{ExternalRichEditor-DMtnZIMZ.js → ExternalRichEditor-FwCAalXO.js} +1 -1
  240. package/dist/server/ui/assets/{ReviewDetailPage-BmyiM5IR.js → ReviewDetailPage-D8DVpsJm.js} +1 -1
  241. package/dist/server/ui/assets/{ReviewsPage-CQ87BMwT.js → ReviewsPage-DcWpRFbm.js} +1 -1
  242. package/dist/server/ui/assets/index-CV8ydm7w.css +32 -0
  243. package/dist/server/ui/assets/index-Cwe7LxcW.js +1197 -0
  244. package/dist/server/ui/assets/{useReviewSubscription-DjbEUzt4.js → useReviewSubscription-CYoSg-88.js} +1 -1
  245. package/dist/server/ui/index.html +2 -2
  246. package/dist/templates/teams-dev.json +311 -301
  247. package/package.json +20 -2
  248. package/dist/server/ui/assets/index-BX6Yze-A.js +0 -1177
  249. package/dist/server/ui/assets/index-qoQEv_u4.css +0 -32
@@ -1,6 +1,6 @@
1
1
  import type { FeatureFlagConfig } from '../../../common/config/feature-flags';
2
2
  import type { PreparedEvent } from '../../events/services/durable-event-registry.service';
3
- import { Project, CreateProject, UpdateProject, ProjectWorkspace, DeleteProjectWorkspaceResult, Status, CreateStatus, UpdateStatus, Epic, CreateEpic, UpdateEpic, Prompt, CreatePrompt, UpdatePrompt, Tag, CreateTag, UpdateTag, Provider, CreateProvider, ProviderModel, CreateProviderModel, ProviderEffort, CreateProviderEffort, UpdateProvider, ProviderMcpMetadata, UpdateProviderMcpMetadata, ProviderPluginDefault, ProjectProviderPluginOverride, UpsertProviderPluginDefault, UpsertProjectProviderPluginOverride, EnvScopesMap, AgentProfile, CreateAgentProfile, UpdateAgentProfile, ProfileProviderConfig, CreateProfileProviderConfig, UpdateProfileProviderConfig, Agent, CreateAgent, UpdateAgent, EpicRecord, CreateEpicRecord, UpdateEpicRecord, Document, CreateDocument, UpdateDocument, EpicComment, CreateEpicComment, Guest, CreateGuest, Watcher, CreateWatcher, UpdateWatcher, Subscriber, CreateSubscriber, UpdateSubscriber, Review, CreateReview, UpdateReview, ReviewComment, ReviewCommentEnriched, CreateReviewComment, UpdateReviewComment, ReviewCommentTarget, ReviewStatus, ReviewCommentStatus, CommunitySkillSource, CreateCommunitySkillSource, LocalSkillSource, CreateLocalSkillSource, ScheduledEpic, CreateScheduledEpic, UpdateScheduledEpic, UpdateScheduledEpicRuntimeState, ScheduledEpicRun, CreateScheduledEpicRun, UpdateScheduledEpicRun, ScheduledEpicRunStatus, CreateExternalTaskLink, ExternalTaskLink, IntegrationConnection, IntegrationCredentials, IntegrationProvider, ReplaceIntegrationConnection, CreateEpicWithExternalTaskLink, CreateEpicWithExternalTaskLinkResult, CreateExternalManagedSubtaskLink, UpdateExternalManagedSubtaskLink, ExternalManagedSubtaskLink, ConfirmExternalManagedSubtaskLink, ConfirmExternalManagedSubtaskLinkResult } from '../models/domain.models';
3
+ import { Project, CreateProject, UpdateProject, ProjectWorkspace, DeleteProjectWorkspaceResult, Status, CreateStatus, UpdateStatus, Epic, CreateEpic, UpdateEpic, Prompt, CreatePrompt, UpdatePrompt, Tag, CreateTag, UpdateTag, Provider, CreateProvider, ProviderModel, CreateProviderModel, ProviderEffort, CreateProviderEffort, UpdateProvider, ProviderMcpMetadata, UpdateProviderMcpMetadata, ProviderPluginDefault, ProjectProviderPluginOverride, UpsertProviderPluginDefault, UpsertProjectProviderPluginOverride, EnvScopesMap, AgentProfile, CreateAgentProfile, UpdateAgentProfile, ProfileProviderConfig, CreateProfileProviderConfig, UpdateProfileProviderConfig, Agent, CreateAgent, UpdateAgent, EpicRecord, CreateEpicRecord, UpdateEpicRecord, Document, CreateDocument, UpdateDocument, EpicComment, CreateEpicComment, Guest, CreateGuest, Watcher, CreateWatcher, UpdateWatcher, Subscriber, CreateSubscriber, UpdateSubscriber, Review, CreateReview, UpdateReview, ReviewComment, ReviewCommentEnriched, CreateReviewComment, UpdateReviewComment, ReviewCommentTarget, ReviewStatus, ReviewCommentStatus, CommunitySkillSource, CreateCommunitySkillSource, LocalSkillSource, CreateLocalSkillSource, ScheduledEpic, CreateScheduledEpic, UpdateScheduledEpic, UpdateScheduledEpicRuntimeState, ScheduledEpicRun, CreateScheduledEpicRun, UpdateScheduledEpicRun, ScheduledEpicRunStatus, CreateExternalTaskLink, ExternalTaskLink, IntegrationConnection, IntegrationConnectionLookup, IntegrationCredentials, IntegrationProvider, ReplaceIntegrationConnection, CreateEpicWithExternalTaskLink, CreateEpicWithExternalTaskLinkResult, CreateExternalManagedSubtaskLink, UpdateExternalManagedSubtaskLink, ExternalManagedSubtaskLink, ConfirmExternalManagedSubtaskLink, ConfirmExternalManagedSubtaskLinkResult, EpicRelationCandidate, EpicRelationListItem, EpicRelationSummary, EpicRelationWriteContext, SetEpicRelationResult, DeleteEpicRelationResult, SetEpicRelation, ExternalEstimateLoggedMinutesEntry, ExternalEstimateLogDailyCheckpoint, ExternalEstimateLogIdentity, ExternalEstimateLogOperationMutation, ExternalEstimateLogState, PrepareExternalEstimateLogOperation, SetExternalEstimateLoggedMinutes, StoreExternalEstimateLogResolution } from '../models/domain.models';
4
4
  export type VerifyIntegrationCredentials = (credentials: IntegrationCredentials) => Promise<void>;
5
5
  export interface ListOptions {
6
6
  limit?: number;
@@ -73,6 +73,18 @@ export interface ListSubEpicsForParentsOptions {
73
73
  export interface ListParentChildrenOptions extends ListOptions {
74
74
  statusId?: string;
75
75
  }
76
+ export interface ListEpicRelationCandidatesOptions extends ListOptions {
77
+ q?: string;
78
+ excludeMcpHidden?: boolean;
79
+ workspaceId?: string;
80
+ }
81
+ export interface EpicRelationReadOptions {
82
+ excludeMcpHidden?: boolean;
83
+ workspaceId?: string;
84
+ }
85
+ export interface ListEpicRelationsOptions extends EpicRelationReadOptions, ListOptions {
86
+ relatedEpicId?: string;
87
+ }
76
88
  export interface CreateEpicForProjectInput {
77
89
  title: string;
78
90
  description?: string | null;
@@ -112,6 +124,7 @@ export interface ProjectStorage {
112
124
  deleteProject(id: string): Promise<void>;
113
125
  getProjectByRootPath(rootPath: string): Promise<Project | null>;
114
126
  findProjectContainingPath(absolutePath: string): Promise<Project | null>;
127
+ getProjectWorkspaceSnapshot(projectId: string): Promise<Project[]>;
115
128
  getFeatureFlags(): FeatureFlagConfig;
116
129
  }
117
130
  export interface ProjectWorkspaceStorage {
@@ -132,7 +145,7 @@ export interface StatusStorage {
132
145
  }
133
146
  export interface EpicStorage {
134
147
  createEpic(data: CreateEpic, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<Epic>;
135
- createEpicWithinTransaction(data: CreateEpic, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<Epic>;
148
+ createEpicWithinTransaction(data: CreateEpic, eventFactory?: (epic: Epic) => PreparedEvent | null, beforeEventAppend?: (epic: Epic) => Promise<void>): Promise<Epic>;
136
149
  getEpic(id: string): Promise<Epic>;
137
150
  listEpics(projectId: string, options?: ListOptions): Promise<ListResult<Epic>>;
138
151
  listEpicsByStatus(statusId: string, options?: ListOptions): Promise<ListResult<Epic>>;
@@ -140,7 +153,7 @@ export interface EpicStorage {
140
153
  listAssignedEpics(projectId: string, options: ListAssignedEpicsOptions): Promise<ListResult<Epic>>;
141
154
  createEpicForProject(projectId: string, input: CreateEpicForProjectInput, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<Epic>;
142
155
  updateEpic(id: string, data: UpdateEpic, expectedVersion: number, eventFactory?: FactualEventFactory<Epic, Epic>): Promise<Epic>;
143
- deleteEpic(id: string, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<void>;
156
+ deleteEpic(id: string, eventFactory?: (epic: Epic, workspaceId: string) => PreparedEvent | null): Promise<void>;
144
157
  listSubEpics(parentId: string, options?: ListOptions): Promise<ListResult<Epic>>;
145
158
  listParentChildren(parentId: string, options?: ListParentChildrenOptions): Promise<ListResult<Epic>>;
146
159
  listSubEpicsForParents(projectId: string, parentIds: string[], options?: ListSubEpicsForParentsOptions): Promise<Map<string, Epic[]>>;
@@ -148,13 +161,19 @@ export interface EpicStorage {
148
161
  countEpicsByStatus(statusId: string): Promise<number>;
149
162
  updateEpicsStatus(oldStatusId: string, newStatusId: string): Promise<number>;
150
163
  listEpicComments(epicId: string, options?: ListOptions): Promise<ListResult<EpicComment>>;
151
- createEpicComment(data: CreateEpicComment): Promise<EpicComment>;
164
+ createEpicComment(data: CreateEpicComment, eventFactory?: FactualEventFactory<EpicComment, Epic>): Promise<EpicComment>;
152
165
  deleteEpicComment(id: string): Promise<void>;
153
166
  deleteEpicCommentScoped(epicId: string, commentId: string): Promise<boolean>;
154
167
  getEpicsByIdPrefix(projectId: string, prefix: string): Promise<Array<{
155
168
  id: string;
156
169
  title: string;
157
170
  }>>;
171
+ setEpicRelation(data: SetEpicRelation, context?: EpicRelationWriteContext): Promise<SetEpicRelationResult>;
172
+ deleteEpicRelation(epicId: string, relatedEpicId: string, context?: EpicRelationWriteContext): Promise<DeleteEpicRelationResult>;
173
+ listEpicRelations(epicId: string, options?: ListEpicRelationsOptions): Promise<ListResult<EpicRelationListItem>>;
174
+ summarizeEpicRelationsBatch(epicIds: string[], options?: EpicRelationReadOptions): Promise<Map<string, EpicRelationSummary>>;
175
+ listEpicRelationCandidates(epicId: string, options?: ListEpicRelationCandidatesOptions): Promise<ListResult<EpicRelationCandidate>>;
176
+ getWorkspaceEpicsByIdPrefix(epicId: string, prefix: string, options?: EpicRelationReadOptions): Promise<EpicRelationCandidate[]>;
158
177
  }
159
178
  export interface PromptStorage {
160
179
  createPrompt(data: CreatePrompt): Promise<Prompt>;
@@ -389,28 +408,57 @@ export interface SessionStorage {
389
408
  }
390
409
  export interface IntegrationStorage {
391
410
  replaceIntegrationConnection(data: ReplaceIntegrationConnection, verify: VerifyIntegrationCredentials, eventFactory?: FactualEventFactory<IntegrationConnection, IntegrationConnection | null>): Promise<IntegrationConnection>;
392
- getIntegrationConnection(provider: IntegrationProvider): Promise<IntegrationConnection | null>;
393
- listIntegrationConnections(): Promise<IntegrationConnection[]>;
394
- getIntegrationConnectionCredentials(provider: IntegrationProvider): Promise<IntegrationCredentials | null>;
395
- disconnectIntegrationConnection(provider: IntegrationProvider, eventFactory?: (connection: IntegrationConnection) => PreparedEvent | null, options?: {
411
+ getIntegrationConnection(identity: IntegrationConnectionLookup): Promise<IntegrationConnection | null>;
412
+ getIntegrationConnectionById(connectionId: string): Promise<IntegrationConnection | null>;
413
+ assignUnassignedIntegrationConnection(connectionId: string, projectId: string, eventFactory?: FactualEventFactory<IntegrationConnection, IntegrationConnection>): Promise<IntegrationConnection>;
414
+ listIntegrationConnectionsByLegacySourceConnectionId(legacySourceConnectionId: string): Promise<IntegrationConnection[]>;
415
+ listIntegrationConnections(projectId?: string): Promise<IntegrationConnection[]>;
416
+ getIntegrationConnectionCredentials(identity: IntegrationConnectionLookup): Promise<IntegrationCredentials | null>;
417
+ getIntegrationConnectionCredentialsById(connectionId: string): Promise<IntegrationCredentials | null>;
418
+ disconnectIntegrationConnection(identity: IntegrationConnectionLookup, eventFactory?: (connection: IntegrationConnection) => PreparedEvent | null, options?: {
419
+ acknowledgeOrphanRisk?: boolean;
420
+ }): Promise<boolean>;
421
+ disconnectIntegrationConnectionById(connectionId: string, eventFactory?: (connection: IntegrationConnection) => PreparedEvent | null, options?: {
422
+ acknowledgeOrphanRisk?: boolean;
423
+ }): Promise<boolean>;
424
+ disconnectUnassignedIntegrationConnection(connectionId: string, eventFactory?: (connection: IntegrationConnection) => PreparedEvent | null, options?: {
396
425
  acknowledgeOrphanRisk?: boolean;
397
426
  }): Promise<boolean>;
398
- updateIntegrationConnectionSyncSetting(provider: IntegrationProvider, subtaskSyncEnabled: boolean, eventFactory?: FactualEventFactory<IntegrationConnection, IntegrationConnection>): Promise<IntegrationConnection>;
427
+ updateIntegrationConnectionSyncSetting(identity: IntegrationConnectionLookup, subtaskSyncEnabled: boolean, eventFactory?: FactualEventFactory<IntegrationConnection, IntegrationConnection>): Promise<IntegrationConnection>;
428
+ updateIntegrationConnectionSyncSettingById(connectionId: string, subtaskSyncEnabled: boolean, eventFactory?: FactualEventFactory<IntegrationConnection, IntegrationConnection>): Promise<IntegrationConnection>;
399
429
  createExternalTaskLink(data: CreateExternalTaskLink): Promise<ExternalTaskLink>;
400
430
  createEpicWithExternalTaskLink(data: CreateEpicWithExternalTaskLink, eventFactory?: (result: CreateEpicWithExternalTaskLinkResult) => PreparedEvent | null): Promise<CreateEpicWithExternalTaskLinkResult>;
401
431
  findExternalTaskLink(provider: IntegrationProvider, remoteScopeKey: string, remoteTaskId: string): Promise<ExternalTaskLink | null>;
402
432
  listExternalTaskLinksByRemoteScope(provider: IntegrationProvider, remoteScopeKey: string): Promise<ExternalTaskLink[]>;
433
+ listExternalTaskLinksByRemoteTask(provider: IntegrationProvider, remoteTaskId: string): Promise<ExternalTaskLink[]>;
403
434
  listExternalTaskLinksForEpic(epicId: string): Promise<ExternalTaskLink[]>;
404
435
  listExternalTaskLinksForEpics(epicIds: string[]): Promise<ExternalTaskLink[]>;
405
436
  createExternalManagedSubtaskLink(data: CreateExternalManagedSubtaskLink): Promise<ExternalManagedSubtaskLink>;
406
437
  getExternalManagedSubtaskLink(id: string): Promise<ExternalManagedSubtaskLink>;
407
438
  listExternalManagedSubtaskLinksByProvider(provider: IntegrationProvider): Promise<ExternalManagedSubtaskLink[]>;
439
+ listExternalManagedSubtaskLinksByConnection(connectionId: string): Promise<ExternalManagedSubtaskLink[]>;
408
440
  listExternalManagedSubtaskLinksForEpicSnapshot(epicIdSnapshot: string): Promise<ExternalManagedSubtaskLink[]>;
409
441
  updateExternalManagedSubtaskLink(id: string, data: UpdateExternalManagedSubtaskLink): Promise<ExternalManagedSubtaskLink>;
410
442
  findRecognizedManagedSubtask(epicId: string, provider: IntegrationProvider, remoteScopeKey: string, remoteTaskId: string): Promise<ExternalManagedSubtaskLink | null>;
411
443
  confirmExternalManagedSubtaskLink(data: ConfirmExternalManagedSubtaskLink): Promise<ConfirmExternalManagedSubtaskLinkResult>;
412
444
  removeExternalManagedSubtaskLink(id: string): Promise<boolean>;
413
445
  }
414
- export interface StorageService extends ProjectStorage, ProjectWorkspaceStorage, StatusStorage, EpicStorage, PromptStorage, TagStorage, ProviderStorage, ProviderPluginPolicyStorage, SkillSourceStorage, AgentProfileStorage, ProfileProviderConfigStorage, AgentStorage, RecordStorage, DocumentStorage, GuestStorage, WatcherStorage, SubscriberStorage, ReviewStorage, ScheduledEpicStorage, SessionStorage, IntegrationStorage {
446
+ export interface ExternalEstimateLogStorage {
447
+ getExternalEstimateLogState(identity: ExternalEstimateLogIdentity): Promise<ExternalEstimateLogState | null>;
448
+ getExternalEstimateLogDailyCheckpoint(identity: ExternalEstimateLogIdentity): Promise<ExternalEstimateLogDailyCheckpoint | null>;
449
+ listExternalEstimateLogStatesByRemoteTask(provider: IntegrationProvider, remoteTaskId: string): Promise<ExternalEstimateLogState[]>;
450
+ listExternalEstimateLoggedMinutes(provider: IntegrationProvider, identities: ReadonlyArray<{
451
+ remoteScopeKey: string;
452
+ remoteTaskId: string;
453
+ }>): Promise<ExternalEstimateLoggedMinutesEntry[]>;
454
+ setExternalEstimateLoggedMinutes(data: SetExternalEstimateLoggedMinutes): Promise<ExternalEstimateLogState>;
455
+ prepareExternalEstimateLogOperation(data: PrepareExternalEstimateLogOperation): Promise<ExternalEstimateLogState>;
456
+ markExternalEstimateLogOperationOutcomeUnknown(data: ExternalEstimateLogOperationMutation): Promise<ExternalEstimateLogState>;
457
+ confirmExternalEstimateLogOperation(data: ExternalEstimateLogOperationMutation): Promise<ExternalEstimateLogState>;
458
+ clearExternalEstimateLogOperation(data: ExternalEstimateLogOperationMutation): Promise<ExternalEstimateLogState>;
459
+ storeExternalEstimateLogResolution(data: StoreExternalEstimateLogResolution): Promise<ExternalEstimateLogState>;
460
+ applyExternalEstimateLogResolution(data: ExternalEstimateLogOperationMutation): Promise<ExternalEstimateLogState>;
461
+ }
462
+ export interface StorageService extends ProjectStorage, ProjectWorkspaceStorage, StatusStorage, EpicStorage, PromptStorage, TagStorage, ProviderStorage, ProviderPluginPolicyStorage, SkillSourceStorage, AgentProfileStorage, ProfileProviderConfigStorage, AgentStorage, RecordStorage, DocumentStorage, GuestStorage, WatcherStorage, SubscriberStorage, ReviewStorage, ScheduledEpicStorage, SessionStorage, IntegrationStorage, ExternalEstimateLogStorage {
415
463
  }
416
464
  export declare const STORAGE_SERVICE = "STORAGE_SERVICE";
@@ -1 +1 @@
1
- {"version":3,"file":"storage.interface.js","sourceRoot":"","sources":["../../../../src/modules/storage/interfaces/storage.interface.ts"],"names":[],"mappings":";;;AAmvBa,QAAA,eAAe,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"storage.interface.js","sourceRoot":"","sources":["../../../../src/modules/storage/interfaces/storage.interface.ts"],"names":[],"mappings":";;;AA64Ba,QAAA,eAAe,GAAG,iBAAiB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { type CreateEpicForProjectInput, type ListAssignedEpicsOptions, type ListParentChildrenOptions, type ListOptions, type ListProjectEpicsOptions, type ListResult, type ListSubEpicsForParentsOptions, type FactualEventFactory } from '../../interfaces/storage.interface';
2
- import { type Agent, type CreateEpic, type CreateEpicComment, type CreateTag, type Epic, type EpicComment, type Status, type Tag, type UpdateEpic } from '../../models/domain.models';
1
+ import { type CreateEpicForProjectInput, type ListAssignedEpicsOptions, type ListEpicRelationCandidatesOptions, type ListEpicRelationsOptions, type EpicRelationReadOptions, type ListParentChildrenOptions, type ListOptions, type ListProjectEpicsOptions, type ListResult, type ListSubEpicsForParentsOptions, type FactualEventFactory } from '../../interfaces/storage.interface';
2
+ import { type Agent, type CreateEpic, type CreateEpicComment, type CreateTag, type Epic, type EpicComment, type EpicRelationCandidate, type EpicRelationListItem, type EpicRelationSummary, type EpicRelationWriteContext, type SetEpicRelationResult, type DeleteEpicRelationResult, type SetEpicRelation, type Status, type Tag, type UpdateEpic } from '../../models/domain.models';
3
3
  import { BaseStorageDelegate, type StorageDelegateContext } from './base-storage.delegate';
4
4
  import type { PreparedEvent } from '../../../events/services/durable-event-registry.service';
5
5
  export interface EpicStorageDelegateDependencies {
@@ -13,8 +13,9 @@ export declare class EpicStorageDelegate extends BaseStorageDelegate {
13
13
  private readonly dependencies;
14
14
  constructor(context: StorageDelegateContext, dependencies: EpicStorageDelegateDependencies);
15
15
  createEpic(data: CreateEpic, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<Epic>;
16
- createEpicInCurrentTransaction(data: CreateEpic, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<Epic>;
16
+ createEpicInCurrentTransaction(data: CreateEpic, eventFactory?: (epic: Epic) => PreparedEvent | null, beforeEventAppend?: (epic: Epic) => Promise<void>): Promise<Epic>;
17
17
  private insertEpic;
18
+ private appendEpicEvent;
18
19
  getEpic(id: string): Promise<Epic>;
19
20
  private getEpicSync;
20
21
  listEpics(projectId: string, options?: ListOptions): Promise<ListResult<Epic>>;
@@ -23,7 +24,7 @@ export declare class EpicStorageDelegate extends BaseStorageDelegate {
23
24
  listAssignedEpics(projectId: string, options: ListAssignedEpicsOptions): Promise<ListResult<Epic>>;
24
25
  createEpicForProject(projectId: string, input: CreateEpicForProjectInput, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<Epic>;
25
26
  updateEpic(id: string, data: UpdateEpic, expectedVersion: number, eventFactory?: FactualEventFactory<Epic, Epic>): Promise<Epic>;
26
- deleteEpic(id: string, eventFactory?: (epic: Epic) => PreparedEvent | null): Promise<void>;
27
+ deleteEpic(id: string, eventFactory?: (epic: Epic, workspaceId: string) => PreparedEvent | null): Promise<void>;
27
28
  listSubEpics(parentId: string, options?: ListOptions): Promise<ListResult<Epic>>;
28
29
  listParentChildren(parentId: string, options?: ListParentChildrenOptions): Promise<ListResult<Epic>>;
29
30
  listSubEpicsForParents(projectId: string, parentIds: string[], options?: ListSubEpicsForParentsOptions): Promise<Map<string, Epic[]>>;
@@ -31,13 +32,37 @@ export declare class EpicStorageDelegate extends BaseStorageDelegate {
31
32
  countEpicsByStatus(statusId: string): Promise<number>;
32
33
  updateEpicsStatus(oldStatusId: string, newStatusId: string): Promise<number>;
33
34
  listEpicComments(epicId: string, options?: ListOptions): Promise<ListResult<EpicComment>>;
34
- createEpicComment(data: CreateEpicComment): Promise<EpicComment>;
35
+ createEpicComment(data: CreateEpicComment, eventFactory?: FactualEventFactory<EpicComment, Epic>): Promise<EpicComment>;
36
+ private insertEpicComment;
35
37
  deleteEpicComment(id: string): Promise<void>;
36
38
  deleteEpicCommentScoped(epicId: string, commentId: string): Promise<boolean>;
37
39
  getEpicsByIdPrefix(projectId: string, prefix: string): Promise<Array<{
38
40
  id: string;
39
41
  title: string;
40
42
  }>>;
43
+ setEpicRelation(data: SetEpicRelation, context: EpicRelationWriteContext): Promise<SetEpicRelationResult>;
44
+ deleteEpicRelation(epicId: string, relatedEpicId: string, context: EpicRelationWriteContext): Promise<DeleteEpicRelationResult>;
45
+ listEpicRelations(epicId: string, options?: ListEpicRelationsOptions): Promise<ListResult<EpicRelationListItem>>;
46
+ summarizeEpicRelationsBatch(epicIds: string[], options?: EpicRelationReadOptions): Promise<Map<string, EpicRelationSummary>>;
47
+ listEpicRelationCandidates(epicId: string, options?: ListEpicRelationCandidatesOptions): Promise<ListResult<EpicRelationCandidate>>;
48
+ getWorkspaceEpicsByIdPrefix(epicId: string, prefix: string, options?: EpicRelationReadOptions): Promise<EpicRelationCandidate[]>;
49
+ private validateRelationPairSync;
50
+ private authorizeRelationWriteSync;
51
+ private assertRelationReadWorkspace;
52
+ private getRelationContextSync;
53
+ private canonicalRelationPair;
54
+ private toStoredRelation;
55
+ private static readonly ELIGIBLE_ROUTE_SOURCE_PREDICATE;
56
+ private assertNoEligibleRouteCycleSync;
57
+ private findOutgoingEligibleRouteSync;
58
+ private deleteOutgoingEligibleRouteSync;
59
+ private ensureEpicIsNotRouteEndpointSync;
60
+ private assertPromotionKeepsEligibleRoutesSync;
61
+ private toFocalRelationType;
62
+ private mapEpicRelation;
63
+ private mapRelationCandidate;
64
+ private normalizeRelationListLimit;
65
+ private normalizeRelationListOffset;
41
66
  private ensureValidEpicParentSync;
42
67
  private buildMcpHiddenExclusionPredicate;
43
68
  private ensureValidAgentSync;