devchain-cli 0.21.0 → 0.22.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 (379) hide show
  1. package/README.md +1 -0
  2. package/dist/drizzle/0073_integration_storage.sql +27 -0
  3. package/dist/drizzle/0074_black_drax.sql +7 -0
  4. package/dist/drizzle/0075_misty_franklin_richards.sql +37 -0
  5. package/dist/drizzle/0076_epic_time_accounting.sql +48 -0
  6. package/dist/drizzle/meta/0073_snapshot.json +6247 -0
  7. package/dist/drizzle/meta/0074_snapshot.json +6299 -0
  8. package/dist/drizzle/meta/0075_snapshot.json +6563 -0
  9. package/dist/drizzle/meta/0076_snapshot.json +6913 -0
  10. package/dist/drizzle/meta/_journal.json +28 -0
  11. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts +27 -1
  12. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.d.ts.map +1 -1
  13. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js +15 -0
  14. package/dist/node_modules/@devchain/shared/mobile-rpc-contract/index.js.map +1 -1
  15. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +52 -52
  16. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  17. package/dist/server/app.main.module.js +4 -0
  18. package/dist/server/app.main.module.js.map +1 -1
  19. package/dist/server/app.normal.module.js +2 -0
  20. package/dist/server/app.normal.module.js.map +1 -1
  21. package/dist/server/common/config/container-scope.d.ts +11 -0
  22. package/dist/server/common/config/container-scope.js +37 -0
  23. package/dist/server/common/config/container-scope.js.map +1 -1
  24. package/dist/server/common/constants/terminal.d.ts +1 -0
  25. package/dist/server/common/constants/terminal.js +2 -1
  26. package/dist/server/common/constants/terminal.js.map +1 -1
  27. package/dist/server/common/filters/http-exception.filter.js +3 -4
  28. package/dist/server/common/filters/http-exception.filter.js.map +1 -1
  29. package/dist/server/common/guards/integration-admission.guard.d.ts +4 -0
  30. package/dist/server/common/guards/integration-admission.guard.js +22 -0
  31. package/dist/server/common/guards/integration-admission.guard.js.map +1 -0
  32. package/dist/server/common/test/app-bootstrap.helper.js +1 -1
  33. package/dist/server/common/test/app-bootstrap.helper.js.map +1 -1
  34. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js +4 -0
  35. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js.map +1 -1
  36. package/dist/server/modules/cloud/cloud.module.js +5 -1
  37. package/dist/server/modules/cloud/cloud.module.js.map +1 -1
  38. package/dist/server/modules/cloud/services/cloud-egress-bridge.service.d.ts +3 -1
  39. package/dist/server/modules/cloud/services/cloud-egress-bridge.service.js +19 -3
  40. package/dist/server/modules/cloud/services/cloud-egress-bridge.service.js.map +1 -1
  41. package/dist/server/modules/cloud/services/egress-queue.service.d.ts +2 -0
  42. package/dist/server/modules/cloud/services/egress-queue.service.js +35 -17
  43. package/dist/server/modules/cloud/services/egress-queue.service.js.map +1 -1
  44. package/dist/server/modules/cloud/services/event-mapper.service.d.ts +1 -0
  45. package/dist/server/modules/cloud/services/event-mapper.service.js.map +1 -1
  46. package/dist/server/modules/cloud/services/notification-recipient-resolver.service.d.ts +10 -0
  47. package/dist/server/modules/cloud/services/notification-recipient-resolver.service.js +55 -0
  48. package/dist/server/modules/cloud/services/notification-recipient-resolver.service.js.map +1 -0
  49. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.d.ts +31 -5
  50. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js +15 -0
  51. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-contract.generated.js.map +1 -1
  52. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js +5 -2
  53. package/dist/server/modules/cloud-tunnel/services/mobile-rpc-workspace-access.service.js.map +1 -1
  54. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.d.ts +1 -0
  55. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js +8 -0
  56. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js.map +1 -1
  57. package/dist/server/modules/core/controllers/runtime.controller.d.ts +1 -0
  58. package/dist/server/modules/core/controllers/runtime.controller.js +2 -0
  59. package/dist/server/modules/core/controllers/runtime.controller.js.map +1 -1
  60. package/dist/server/modules/e2ee/services/e2ee-device-store.service.d.ts +2 -0
  61. package/dist/server/modules/e2ee/services/e2ee-device-store.service.js +26 -0
  62. package/dist/server/modules/e2ee/services/e2ee-device-store.service.js.map +1 -1
  63. package/dist/server/modules/e2ee/services/e2ee-trust.service.d.ts +5 -0
  64. package/dist/server/modules/e2ee/services/e2ee-trust.service.js +11 -0
  65. package/dist/server/modules/e2ee/services/e2ee-trust.service.js.map +1 -1
  66. package/dist/server/modules/e2ee/services/paired-device-workspace-access.service.d.ts +1 -0
  67. package/dist/server/modules/e2ee/services/paired-device-workspace-access.service.js +4 -0
  68. package/dist/server/modules/e2ee/services/paired-device-workspace-access.service.js.map +1 -1
  69. package/dist/server/modules/epic-time/controllers/epic-time.controller.d.ts +8 -0
  70. package/dist/server/modules/epic-time/controllers/epic-time.controller.js +70 -0
  71. package/dist/server/modules/epic-time/controllers/epic-time.controller.js.map +1 -0
  72. package/dist/server/modules/epic-time/epic-time.module.d.ts +2 -0
  73. package/dist/server/modules/epic-time/epic-time.module.js +28 -0
  74. package/dist/server/modules/epic-time/epic-time.module.js.map +1 -0
  75. package/dist/server/modules/epic-time/models/epic-time.models.d.ts +26 -0
  76. package/dist/server/modules/epic-time/models/epic-time.models.js +3 -0
  77. package/dist/server/modules/epic-time/models/epic-time.models.js.map +1 -0
  78. package/dist/server/modules/epic-time/services/agent-time-accounting.service.d.ts +32 -0
  79. package/dist/server/modules/epic-time/services/agent-time-accounting.service.js +159 -0
  80. package/dist/server/modules/epic-time/services/agent-time-accounting.service.js.map +1 -0
  81. package/dist/server/modules/epic-time/services/epic-time.service.d.ts +15 -0
  82. package/dist/server/modules/epic-time/services/epic-time.service.js +224 -0
  83. package/dist/server/modules/epic-time/services/epic-time.service.js.map +1 -0
  84. package/dist/server/modules/epic-time/services/epic-time.store.d.ts +75 -0
  85. package/dist/server/modules/epic-time/services/epic-time.store.js +453 -0
  86. package/dist/server/modules/epic-time/services/epic-time.store.js.map +1 -0
  87. package/dist/server/modules/epics/controllers/epics.controller.d.ts +10 -0
  88. package/dist/server/modules/epics/controllers/epics.controller.js +92 -0
  89. package/dist/server/modules/epics/controllers/epics.controller.js.map +1 -1
  90. package/dist/server/modules/epics/services/epics.service.d.ts +32 -2
  91. package/dist/server/modules/epics/services/epics.service.js +243 -96
  92. package/dist/server/modules/epics/services/epics.service.js.map +1 -1
  93. package/dist/server/modules/events/catalog/agent.created.d.ts +4 -4
  94. package/dist/server/modules/events/catalog/agent.deleted.d.ts +2 -2
  95. package/dist/server/modules/events/catalog/agent.message.sent.d.ts +40 -40
  96. package/dist/server/modules/events/catalog/broadcast-registry.js +1 -0
  97. package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
  98. package/dist/server/modules/events/catalog/claude.hooks.ask_user_question.pending.d.ts +4 -4
  99. package/dist/server/modules/events/catalog/claude.hooks.session.started.d.ts +10 -10
  100. package/dist/server/modules/events/catalog/epic.comment.created.d.ts +6 -6
  101. package/dist/server/modules/events/catalog/epic.created.d.ts +8 -8
  102. package/dist/server/modules/events/catalog/epic.deleted.d.ts +4 -4
  103. package/dist/server/modules/events/catalog/epic.updated.d.ts +68 -42
  104. package/dist/server/modules/events/catalog/epic.updated.js +5 -0
  105. package/dist/server/modules/events/catalog/epic.updated.js.map +1 -1
  106. package/dist/server/modules/events/catalog/guest.registered.d.ts +2 -2
  107. package/dist/server/modules/events/catalog/guest.unregistered.d.ts +4 -4
  108. package/dist/server/modules/events/catalog/index.d.ts +370 -228
  109. package/dist/server/modules/events/catalog/index.js +11 -1
  110. package/dist/server/modules/events/catalog/index.js.map +1 -1
  111. package/dist/server/modules/events/catalog/integration.connection.created.d.ts +30 -0
  112. package/dist/server/modules/events/catalog/integration.connection.created.js +17 -0
  113. package/dist/server/modules/events/catalog/integration.connection.created.js.map +1 -0
  114. package/dist/server/modules/events/catalog/integration.connection.deleted.d.ts +27 -0
  115. package/dist/server/modules/events/catalog/integration.connection.deleted.js +16 -0
  116. package/dist/server/modules/events/catalog/integration.connection.deleted.js.map +1 -0
  117. package/dist/server/modules/events/catalog/integration.connection.updated.d.ts +39 -0
  118. package/dist/server/modules/events/catalog/integration.connection.updated.js +20 -0
  119. package/dist/server/modules/events/catalog/integration.connection.updated.js.map +1 -0
  120. package/dist/server/modules/events/catalog/review.comment.created.d.ts +16 -16
  121. package/dist/server/modules/events/catalog/review.comment.deleted.d.ts +2 -2
  122. package/dist/server/modules/events/catalog/review.comment.resolved.d.ts +2 -2
  123. package/dist/server/modules/events/catalog/review.comment.updated.d.ts +4 -4
  124. package/dist/server/modules/events/catalog/review.created.d.ts +12 -12
  125. package/dist/server/modules/events/catalog/review.updated.d.ts +22 -22
  126. package/dist/server/modules/events/catalog/scheduled-epic.executed.d.ts +12 -12
  127. package/dist/server/modules/events/catalog/session.human-prompt-state-changed.d.ts +77 -0
  128. package/dist/server/modules/events/catalog/session.human-prompt-state-changed.js +25 -0
  129. package/dist/server/modules/events/catalog/session.human-prompt-state-changed.js.map +1 -0
  130. package/dist/server/modules/events/catalog/session.provider-session-id.discovered.d.ts +2 -2
  131. package/dist/server/modules/events/catalog/session.recommendation.d.ts +4 -4
  132. package/dist/server/modules/events/catalog/session.restored.d.ts +2 -2
  133. package/dist/server/modules/events/catalog/session.started.d.ts +2 -2
  134. package/dist/server/modules/events/catalog/session.starting.d.ts +2 -2
  135. package/dist/server/modules/events/catalog/session.stopped.d.ts +2 -2
  136. package/dist/server/modules/events/catalog/session.transcript.discovered.d.ts +4 -4
  137. package/dist/server/modules/events/catalog/team.config.updated.d.ts +6 -6
  138. package/dist/server/modules/events/catalog/team.member.added.d.ts +2 -2
  139. package/dist/server/modules/events/catalog/team.member.removed.d.ts +2 -2
  140. package/dist/server/modules/events/catalog/terminal.watcher.triggered.d.ts +4 -4
  141. package/dist/server/modules/events/events-core.module.js +8 -1
  142. package/dist/server/modules/events/events-core.module.js.map +1 -1
  143. package/dist/server/modules/events/events-infra.module.js +6 -1
  144. package/dist/server/modules/events/events-infra.module.js.map +1 -1
  145. package/dist/server/modules/events/services/committed-event.store.d.ts +23 -0
  146. package/dist/server/modules/events/services/committed-event.store.js +169 -0
  147. package/dist/server/modules/events/services/committed-event.store.js.map +1 -0
  148. package/dist/server/modules/events/services/durable-event-dispatcher.service.d.ts +16 -0
  149. package/dist/server/modules/events/services/durable-event-dispatcher.service.js +97 -0
  150. package/dist/server/modules/events/services/durable-event-dispatcher.service.js.map +1 -0
  151. package/dist/server/modules/events/services/durable-event-registry.service.d.ts +25 -0
  152. package/dist/server/modules/events/services/durable-event-registry.service.js +59 -0
  153. package/dist/server/modules/events/services/durable-event-registry.service.js.map +1 -0
  154. package/dist/server/modules/events/services/event-log.service.d.ts +6 -1
  155. package/dist/server/modules/events/services/event-log.service.js +32 -18
  156. package/dist/server/modules/events/services/event-log.service.js.map +1 -1
  157. package/dist/server/modules/events/services/events.service.d.ts +11 -1
  158. package/dist/server/modules/events/services/events.service.js +50 -7
  159. package/dist/server/modules/events/services/events.service.js.map +1 -1
  160. package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.d.ts +97 -0
  161. package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.js +1404 -0
  162. package/dist/server/modules/external-integrations/adapters/clickup-external-task.provider.js.map +1 -0
  163. package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.d.ts +113 -0
  164. package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.js +1790 -0
  165. package/dist/server/modules/external-integrations/adapters/jira-external-task.provider.js.map +1 -0
  166. package/dist/server/modules/external-integrations/adapters/rich/clickup-comment-converter.d.ts +10 -0
  167. package/dist/server/modules/external-integrations/adapters/rich/clickup-comment-converter.js +97 -0
  168. package/dist/server/modules/external-integrations/adapters/rich/clickup-comment-converter.js.map +1 -0
  169. package/dist/server/modules/external-integrations/adapters/rich/clickup-markdown-converter.d.ts +16 -0
  170. package/dist/server/modules/external-integrations/adapters/rich/clickup-markdown-converter.js +386 -0
  171. package/dist/server/modules/external-integrations/adapters/rich/clickup-markdown-converter.js.map +1 -0
  172. package/dist/server/modules/external-integrations/adapters/rich/jira-adf-converter.d.ts +5 -0
  173. package/dist/server/modules/external-integrations/adapters/rich/jira-adf-converter.js +229 -0
  174. package/dist/server/modules/external-integrations/adapters/rich/jira-adf-converter.js.map +1 -0
  175. package/dist/server/modules/external-integrations/adapters/vendor-shared.d.ts +42 -0
  176. package/dist/server/modules/external-integrations/adapters/vendor-shared.js +182 -0
  177. package/dist/server/modules/external-integrations/adapters/vendor-shared.js.map +1 -0
  178. package/dist/server/modules/external-integrations/connections/integration-connections.controller.d.ts +11 -0
  179. package/dist/server/modules/external-integrations/connections/integration-connections.controller.js +121 -0
  180. package/dist/server/modules/external-integrations/connections/integration-connections.controller.js.map +1 -0
  181. package/dist/server/modules/external-integrations/connections/integration-connections.service.d.ts +46 -0
  182. package/dist/server/modules/external-integrations/connections/integration-connections.service.js +193 -0
  183. package/dist/server/modules/external-integrations/connections/integration-connections.service.js.map +1 -0
  184. package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.d.ts +8 -0
  185. package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.js +73 -0
  186. package/dist/server/modules/external-integrations/connections/managed-subtask-sync.controller.js.map +1 -0
  187. package/dist/server/modules/external-integrations/errors/external-provider.errors.d.ts +23 -0
  188. package/dist/server/modules/external-integrations/errors/external-provider.errors.js +105 -0
  189. package/dist/server/modules/external-integrations/errors/external-provider.errors.js.map +1 -0
  190. package/dist/server/modules/external-integrations/external-integrations.module.d.ts +2 -0
  191. package/dist/server/modules/external-integrations/external-integrations.module.js +72 -0
  192. package/dist/server/modules/external-integrations/external-integrations.module.js.map +1 -0
  193. package/dist/server/modules/external-integrations/external-task-provider.registry.d.ts +12 -0
  194. package/dist/server/modules/external-integrations/external-task-provider.registry.js +65 -0
  195. package/dist/server/modules/external-integrations/external-task-provider.registry.js.map +1 -0
  196. package/dist/server/modules/external-integrations/models/external-comment-lookup-token.d.ts +12 -0
  197. package/dist/server/modules/external-integrations/models/external-comment-lookup-token.js +49 -0
  198. package/dist/server/modules/external-integrations/models/external-comment-lookup-token.js.map +1 -0
  199. package/dist/server/modules/external-integrations/models/external-edit-session.models.d.ts +94 -0
  200. package/dist/server/modules/external-integrations/models/external-edit-session.models.js +10 -0
  201. package/dist/server/modules/external-integrations/models/external-edit-session.models.js.map +1 -0
  202. package/dist/server/modules/external-integrations/models/external-provider.models.d.ts +341 -0
  203. package/dist/server/modules/external-integrations/models/external-provider.models.js +21 -0
  204. package/dist/server/modules/external-integrations/models/external-provider.models.js.map +1 -0
  205. package/dist/server/modules/external-integrations/models/external-rich-capabilities.d.ts +6 -0
  206. package/dist/server/modules/external-integrations/models/external-rich-capabilities.js +9 -0
  207. package/dist/server/modules/external-integrations/models/external-rich-capabilities.js.map +1 -0
  208. package/dist/server/modules/external-integrations/models/external-rich-document.d.ts +59 -0
  209. package/dist/server/modules/external-integrations/models/external-rich-document.js +233 -0
  210. package/dist/server/modules/external-integrations/models/external-rich-document.js.map +1 -0
  211. package/dist/server/modules/external-integrations/models/external-task-source.d.ts +4 -0
  212. package/dist/server/modules/external-integrations/models/external-task-source.js +71 -0
  213. package/dist/server/modules/external-integrations/models/external-task-source.js.map +1 -0
  214. package/dist/server/modules/external-integrations/models/external-time-mutation.models.d.ts +74 -0
  215. package/dist/server/modules/external-integrations/models/external-time-mutation.models.js +19 -0
  216. package/dist/server/modules/external-integrations/models/external-time-mutation.models.js.map +1 -0
  217. package/dist/server/modules/external-integrations/my-work/external-edit-session.service.d.ts +57 -0
  218. package/dist/server/modules/external-integrations/my-work/external-edit-session.service.js +776 -0
  219. package/dist/server/modules/external-integrations/my-work/external-edit-session.service.js.map +1 -0
  220. package/dist/server/modules/external-integrations/my-work/external-my-work.controller.d.ts +37 -0
  221. package/dist/server/modules/external-integrations/my-work/external-my-work.controller.js +626 -0
  222. package/dist/server/modules/external-integrations/my-work/external-my-work.controller.js.map +1 -0
  223. package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.d.ts +29 -0
  224. package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.js +847 -0
  225. package/dist/server/modules/external-integrations/my-work/external-my-work.openapi.js.map +1 -0
  226. package/dist/server/modules/external-integrations/my-work/external-my-work.service.d.ts +34 -0
  227. package/dist/server/modules/external-integrations/my-work/external-my-work.service.js +330 -0
  228. package/dist/server/modules/external-integrations/my-work/external-my-work.service.js.map +1 -0
  229. package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.d.ts +27 -0
  230. package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.js +412 -0
  231. package/dist/server/modules/external-integrations/my-work/external-time-mutation.service.js.map +1 -0
  232. package/dist/server/modules/external-integrations/ports/external-task-provider.d.ts +13 -0
  233. package/dist/server/modules/external-integrations/ports/external-task-provider.js +5 -0
  234. package/dist/server/modules/external-integrations/ports/external-task-provider.js.map +1 -0
  235. package/dist/server/modules/external-integrations/request-validation.d.ts +2 -0
  236. package/dist/server/modules/external-integrations/request-validation.js +14 -0
  237. package/dist/server/modules/external-integrations/request-validation.js.map +1 -0
  238. package/dist/server/modules/external-integrations/sessions/external-edit-session.store.d.ts +59 -0
  239. package/dist/server/modules/external-integrations/sessions/external-edit-session.store.js +329 -0
  240. package/dist/server/modules/external-integrations/sessions/external-edit-session.store.js.map +1 -0
  241. package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.d.ts +44 -0
  242. package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.js +171 -0
  243. package/dist/server/modules/external-integrations/sessions/external-time-mutation.store.js.map +1 -0
  244. package/dist/server/modules/external-integrations/sessions/provider-operation-gate.d.ts +7 -0
  245. package/dist/server/modules/external-integrations/sessions/provider-operation-gate.js +33 -0
  246. package/dist/server/modules/external-integrations/sessions/provider-operation-gate.js.map +1 -0
  247. package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.d.ts +69 -0
  248. package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.js +1092 -0
  249. package/dist/server/modules/external-integrations/subscribers/external-subtask-sync.subscriber.js.map +1 -0
  250. package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.d.ts +8 -0
  251. package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.js +23 -0
  252. package/dist/server/modules/external-integrations/subscribers/managed-subtask-content.js.map +1 -0
  253. package/dist/server/modules/external-integrations/subscribers/managed-subtask-recovery-policy.d.ts +7 -0
  254. package/dist/server/modules/external-integrations/subscribers/managed-subtask-recovery-policy.js +30 -0
  255. package/dist/server/modules/external-integrations/subscribers/managed-subtask-recovery-policy.js.map +1 -0
  256. package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.d.ts +44 -0
  257. package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.js +135 -0
  258. package/dist/server/modules/external-integrations/subscribers/managed-subtask-sync-health.service.js.map +1 -0
  259. package/dist/server/modules/external-integrations/transport/safe-vendor-http-client.d.ts +47 -0
  260. package/dist/server/modules/external-integrations/transport/safe-vendor-http-client.js +294 -0
  261. package/dist/server/modules/external-integrations/transport/safe-vendor-http-client.js.map +1 -0
  262. package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +64 -64
  263. package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +36 -36
  264. package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.d.ts +5 -0
  265. package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js +51 -1
  266. package/dist/server/modules/orchestrator/docker/services/seed-preparation.service.js.map +1 -1
  267. package/dist/server/modules/orchestrator/sync/services/task-merge.service.d.ts +0 -2
  268. package/dist/server/modules/orchestrator/sync/services/task-merge.service.js +9 -48
  269. package/dist/server/modules/orchestrator/sync/services/task-merge.service.js.map +1 -1
  270. package/dist/server/modules/profiles/dto.d.ts +11 -11
  271. package/dist/server/modules/projects/controllers/projects.controller.d.ts +2 -2
  272. package/dist/server/modules/projects/dtos/export.dto.d.ts +6 -6
  273. package/dist/server/modules/projects/helpers/project-export.d.ts +1 -1
  274. package/dist/server/modules/projects/services/projects.service.d.ts +1 -1
  275. package/dist/server/modules/projects/template-codec/codecs/watchers.codec.d.ts +1 -1
  276. package/dist/server/modules/registry/controllers/templates.controller.d.ts +7 -7
  277. package/dist/server/modules/reviews/dtos/review.dto.d.ts +10 -10
  278. package/dist/server/modules/scheduled-epics/dtos/scheduled-epic.dto.d.ts +1 -1
  279. package/dist/server/modules/session-reader/adapters/antigravity-session-reader.adapter.d.ts +1 -1
  280. package/dist/server/modules/session-reader/adapters/opencode-session-reader.adapter.d.ts +1 -1
  281. package/dist/server/modules/session-reader/data/pricing.json +128 -39
  282. package/dist/server/modules/session-terminal-runtime/session-terminal-runtime.service.d.ts +2 -0
  283. package/dist/server/modules/session-terminal-runtime/session-terminal-runtime.service.js +18 -12
  284. package/dist/server/modules/session-terminal-runtime/session-terminal-runtime.service.js.map +1 -1
  285. package/dist/server/modules/sessions/controllers/sessions.controller.d.ts +3 -0
  286. package/dist/server/modules/sessions/controllers/sessions.controller.js +30 -0
  287. package/dist/server/modules/sessions/controllers/sessions.controller.js.map +1 -1
  288. package/dist/server/modules/sessions/dtos/sessions.dto.d.ts +2 -2
  289. package/dist/server/modules/sessions/services/message-enqueue.service.d.ts +2 -0
  290. package/dist/server/modules/sessions/services/message-enqueue.service.js +2 -0
  291. package/dist/server/modules/sessions/services/message-enqueue.service.js.map +1 -1
  292. package/dist/server/modules/sessions/services/message-pool.types.d.ts +8 -1
  293. package/dist/server/modules/sessions/services/sessions-message-pool.service.d.ts +50 -6
  294. package/dist/server/modules/sessions/services/sessions-message-pool.service.js +828 -190
  295. package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
  296. package/dist/server/modules/settings/dtos/settings.dto.d.ts +8 -0
  297. package/dist/server/modules/settings/dtos/settings.dto.js +1 -0
  298. package/dist/server/modules/settings/dtos/settings.dto.js.map +1 -1
  299. package/dist/server/modules/settings/local/delegates/core-settings.delegate.js +12 -0
  300. package/dist/server/modules/settings/local/delegates/core-settings.delegate.js.map +1 -1
  301. package/dist/server/modules/settings/services/settings.constants.d.ts +1 -1
  302. package/dist/server/modules/settings/services/settings.constants.js +2 -1
  303. package/dist/server/modules/settings/services/settings.constants.js.map +1 -1
  304. package/dist/server/modules/settings/services/settings.service.d.ts +1 -1
  305. package/dist/server/modules/settings/services/settings.service.js +2 -1
  306. package/dist/server/modules/settings/services/settings.service.js.map +1 -1
  307. package/dist/server/modules/skills/dtos/skill.dto.d.ts +2 -2
  308. package/dist/server/modules/storage/db/schema.d.ts +2420 -958
  309. package/dist/server/modules/storage/db/schema.js +144 -2
  310. package/dist/server/modules/storage/db/schema.js.map +1 -1
  311. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +34 -6
  312. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  313. package/dist/server/modules/storage/local/delegates/epic.delegate.d.ts +9 -5
  314. package/dist/server/modules/storage/local/delegates/epic.delegate.js +67 -30
  315. package/dist/server/modules/storage/local/delegates/epic.delegate.js.map +1 -1
  316. package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.d.ts +18 -0
  317. package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.js +320 -0
  318. package/dist/server/modules/storage/local/delegates/external-managed-subtask.delegate.js.map +1 -0
  319. package/dist/server/modules/storage/local/delegates/integration.delegate.d.ts +37 -0
  320. package/dist/server/modules/storage/local/delegates/integration.delegate.js +308 -0
  321. package/dist/server/modules/storage/local/delegates/integration.delegate.js.map +1 -0
  322. package/dist/server/modules/storage/local/integration-credential-cipher.d.ts +18 -0
  323. package/dist/server/modules/storage/local/integration-credential-cipher.js +138 -0
  324. package/dist/server/modules/storage/local/integration-credential-cipher.js.map +1 -0
  325. package/dist/server/modules/storage/local/local-storage.service.d.ts +36 -7
  326. package/dist/server/modules/storage/local/local-storage.service.js +93 -10
  327. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  328. package/dist/server/modules/storage/models/domain.models.d.ts +127 -0
  329. package/dist/server/modules/storage/models/domain.models.js +15 -0
  330. package/dist/server/modules/storage/models/domain.models.js.map +1 -1
  331. package/dist/server/modules/storage/storage.module.js +2 -1
  332. package/dist/server/modules/storage/storage.module.js.map +1 -1
  333. package/dist/server/modules/subscribers/dtos/subscriber.dto.d.ts +1 -1
  334. package/dist/server/modules/terminal/dtos/ws-envelope.dto.d.ts +2 -2
  335. package/dist/server/modules/terminal/gateways/terminal.gateway.d.ts +9 -1
  336. package/dist/server/modules/terminal/gateways/terminal.gateway.js +79 -3
  337. package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
  338. package/dist/server/modules/terminal/services/human-prompt-state.service.d.ts +58 -0
  339. package/dist/server/modules/terminal/services/human-prompt-state.service.js +206 -0
  340. package/dist/server/modules/terminal/services/human-prompt-state.service.js.map +1 -0
  341. package/dist/server/modules/terminal/services/terminal-activity.service.js +7 -18
  342. package/dist/server/modules/terminal/services/terminal-activity.service.js.map +1 -1
  343. package/dist/server/modules/terminal/services/terminal-io/delivery.d.ts +2 -1
  344. package/dist/server/modules/terminal/services/terminal-io/delivery.js +77 -33
  345. package/dist/server/modules/terminal/services/terminal-io/delivery.js.map +1 -1
  346. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.d.ts +14 -5
  347. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js +64 -8
  348. package/dist/server/modules/terminal/services/terminal-io/terminal-io.service.js.map +1 -1
  349. package/dist/server/modules/terminal/services/terminal-io/types.d.ts +8 -0
  350. package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.d.ts +5 -1
  351. package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js +39 -2
  352. package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js.map +1 -1
  353. package/dist/server/modules/terminal/services/terminal-session/terminal-session-registry.d.ts +3 -1
  354. package/dist/server/modules/terminal/services/terminal-session/terminal-session-registry.js +7 -2
  355. package/dist/server/modules/terminal/services/terminal-session/terminal-session-registry.js.map +1 -1
  356. package/dist/server/modules/terminal/services/terminal-session/terminal-session.d.ts +4 -0
  357. package/dist/server/modules/terminal/services/terminal-session/terminal-session.js +8 -0
  358. package/dist/server/modules/terminal/services/terminal-session/terminal-session.js.map +1 -1
  359. package/dist/server/modules/terminal/terminal-delivery.module.js +13 -2
  360. package/dist/server/modules/terminal/terminal-delivery.module.js.map +1 -1
  361. package/dist/server/modules/terminal/terminal.module.js +4 -3
  362. package/dist/server/modules/terminal/terminal.module.js.map +1 -1
  363. package/dist/server/modules/terminal/utils/terminal-activity.d.ts +4 -0
  364. package/dist/server/modules/terminal/utils/terminal-activity.js +86 -0
  365. package/dist/server/modules/terminal/utils/terminal-activity.js.map +1 -0
  366. package/dist/server/modules/watchers/dtos/watcher.dto.d.ts +8 -8
  367. package/dist/server/templates/teams-dev.json +9 -9
  368. package/dist/server/tsconfig.tsbuildinfo +1 -1
  369. package/dist/server/ui/assets/ExternalRichEditor-DMtnZIMZ.js +113 -0
  370. package/dist/server/ui/assets/{ReviewDetailPage-CNffXKv8.js → ReviewDetailPage-BmyiM5IR.js} +1 -1
  371. package/dist/server/ui/assets/{ReviewsPage-DAcufZ3r.js → ReviewsPage-CQ87BMwT.js} +1 -1
  372. package/dist/server/ui/assets/index-BX6Yze-A.js +1177 -0
  373. package/dist/server/ui/assets/index-qoQEv_u4.css +32 -0
  374. package/dist/server/ui/assets/{useReviewSubscription-DD29I7uU.js → useReviewSubscription-DjbEUzt4.js} +1 -1
  375. package/dist/server/ui/index.html +2 -2
  376. package/dist/templates/teams-dev.json +9 -9
  377. package/package.json +15 -4
  378. package/dist/server/ui/assets/index-7iCs8Dxj.js +0 -1153
  379. package/dist/server/ui/assets/index-CLXZjL_B.css +0 -32
@@ -0,0 +1,341 @@
1
+ import type { IntegrationCredentials, IntegrationProvider } from '../../storage/models/domain.models';
2
+ import type { ExternalRichDocumentV1 } from './external-rich-document';
3
+ export declare const MAX_REMOTE_TASK_ID_LENGTH = 256;
4
+ export declare const MAX_STATUS_LENGTH = 256;
5
+ export declare const MAX_COMMENT_LENGTH = 10000;
6
+ export declare const MAX_TIME_ENTRY_NOTE_LENGTH = 10000;
7
+ export declare const MAX_TIME_ENTRY_DURATION_MS: number;
8
+ export declare const MAX_TASK_DETAIL_TEXT_LENGTH = 65536;
9
+ export declare const MAX_TASK_DETAIL_SUBTASKS = 100;
10
+ export declare const MAX_TASK_COMMENT_BODY_LENGTH = 8000;
11
+ export declare const MAX_TASK_COMMENT_AUTHOR_LENGTH = 256;
12
+ export declare const MAX_TASK_COMMENT_ID_LENGTH = 256;
13
+ export declare const MAX_TASK_COMMENT_CURSOR_LENGTH = 1024;
14
+ export declare const MAX_EXTERNAL_SUBTASK_TITLE_LENGTH = 255;
15
+ export declare const MAX_EXTERNAL_SUBTASK_DESCRIPTION_LENGTH = 65536;
16
+ export declare const MAX_EXTERNAL_SUBTASK_OWNERSHIP_TOKEN_LENGTH = 256;
17
+ export declare const EXTERNAL_SUBTASK_MANAGEMENT_NOTE = "Managed by DevChain. Update or delete this subtask in DevChain; remote changes are not imported.";
18
+ export declare const TIME_ENTRY_HISTORY_WINDOW_DAYS = 30;
19
+ export declare const MAX_TIME_ENTRY_HISTORY_ENTRIES = 100;
20
+ export interface ExternalProviderAccount {
21
+ provider: IntegrationProvider;
22
+ remoteId: string;
23
+ displayName: string;
24
+ }
25
+ export interface ExternalProviderDescriptor {
26
+ provider: IntegrationProvider;
27
+ displayName: string;
28
+ capabilities: {
29
+ myWork: boolean;
30
+ };
31
+ }
32
+ export type ExternalTaskStatusCategory = 'active' | 'completed' | 'unknown';
33
+ export interface ExternalTaskStatus {
34
+ remoteId?: string | null;
35
+ name: string;
36
+ category: ExternalTaskStatusCategory;
37
+ }
38
+ export type ExternalWorkAreaKind = 'list' | 'board' | 'project';
39
+ export type ExternalWorkAreaLocationKind = 'workspace' | 'space' | 'folder' | 'project' | 'board';
40
+ export interface ExternalWorkAreaLocation {
41
+ kind: ExternalWorkAreaLocationKind;
42
+ remoteId: string;
43
+ name: string;
44
+ }
45
+ export interface ExternalWorkAreaColumn {
46
+ remoteId: string | null;
47
+ remoteStatusIds?: string[];
48
+ name: string;
49
+ color: string;
50
+ category: ExternalTaskStatusCategory;
51
+ position: number;
52
+ }
53
+ export interface ExternalWorkAreaWorkflow {
54
+ isOverridden: boolean;
55
+ columns: ExternalWorkAreaColumn[];
56
+ }
57
+ export interface ExternalTaskStatusOption extends ExternalWorkAreaColumn {
58
+ actionValue: string;
59
+ actionLabel?: string;
60
+ }
61
+ export type ExternalWorkAreaRefreshState = 'fresh' | 'stale' | 'error';
62
+ export interface ExternalWorkAreaRefresh {
63
+ state: ExternalWorkAreaRefreshState;
64
+ refreshedAt: string | null;
65
+ retryable: boolean;
66
+ retryAt: string | null;
67
+ }
68
+ export interface ExternalWorkArea {
69
+ remoteId: string;
70
+ scopeKey: string;
71
+ name: string;
72
+ kind: ExternalWorkAreaKind;
73
+ description: string | null;
74
+ assignedTaskCount: number;
75
+ hierarchy: ExternalWorkAreaLocation[];
76
+ workflow: ExternalWorkAreaWorkflow;
77
+ refresh: ExternalWorkAreaRefresh;
78
+ }
79
+ export interface ExternalTaskSummary {
80
+ remoteId: string;
81
+ parentRemoteTaskId: string | null;
82
+ title: string;
83
+ status: ExternalTaskStatus;
84
+ updatedAt: string;
85
+ dueAt: string | null;
86
+ completedAt: string | null;
87
+ webUrl: string | null;
88
+ }
89
+ export interface ExternalTaskSubtaskSummary {
90
+ remoteId: string;
91
+ remoteKey: string;
92
+ title: string;
93
+ status: ExternalTaskStatus;
94
+ webUrl: string | null;
95
+ }
96
+ export interface ExternalWorkAreaTask {
97
+ workArea: ExternalWorkArea;
98
+ task: ExternalTaskSummary;
99
+ }
100
+ export type ExternalTaskAction = 'change_status' | 'add_comment' | 'log_time';
101
+ export interface ExternalTaskActionCapability {
102
+ action: ExternalTaskAction;
103
+ supported: boolean;
104
+ }
105
+ export interface ExternalTaskPriority {
106
+ name: string;
107
+ color: string;
108
+ }
109
+ export interface ExternalTaskLocation {
110
+ scopeKey: string;
111
+ workAreaId: string;
112
+ workAreaName: string;
113
+ }
114
+ export interface ExternalTaskLinkState {
115
+ linked: boolean;
116
+ epicId: string | null;
117
+ }
118
+ export interface ExternalProviderTaskDetail {
119
+ remoteId: string;
120
+ remoteKey: string;
121
+ title: string;
122
+ description: string | null;
123
+ descriptionTruncated: boolean;
124
+ status: ExternalWorkAreaColumn;
125
+ dueAt: string | null;
126
+ priority: ExternalTaskPriority | null;
127
+ subtasks: ExternalTaskSubtaskSummary[];
128
+ subtasksTruncated: boolean;
129
+ taskTotalDurationMs: number | null;
130
+ webUrl: string;
131
+ location: ExternalTaskLocation;
132
+ allowedStatuses: ExternalTaskStatusOption[];
133
+ actions: ExternalTaskActionCapability[];
134
+ }
135
+ export interface ExternalTaskDetail extends ExternalProviderTaskDetail {
136
+ linkState: ExternalTaskLinkState;
137
+ }
138
+ export interface ExternalTaskStatusInput {
139
+ status: string;
140
+ }
141
+ export interface ExternalTaskCommentInput {
142
+ text: string;
143
+ notifyAll: boolean;
144
+ }
145
+ export interface ExternalTaskCommentAuthor {
146
+ remoteId: string | null;
147
+ displayName: string;
148
+ }
149
+ export interface ExternalTaskCommentRich {
150
+ document: ExternalRichDocumentV1;
151
+ supported: true;
152
+ }
153
+ export type ExternalTaskCommentRichResult = ExternalTaskCommentRich | {
154
+ supported: false;
155
+ readOnlyReason: string;
156
+ };
157
+ export interface ExternalTaskComment {
158
+ remoteId: string;
159
+ author: ExternalTaskCommentAuthor;
160
+ body: string;
161
+ bodyTruncated: boolean;
162
+ rich: ExternalTaskCommentRichResult | null;
163
+ lookupToken: string | null;
164
+ owned: boolean;
165
+ createdAt: string;
166
+ updatedAt: string | null;
167
+ }
168
+ export interface ExternalTaskCommentPage {
169
+ comments: ExternalTaskComment[];
170
+ nextCursor: string | null;
171
+ }
172
+ export interface ExternalTaskTimeEntryInput {
173
+ startedAt: string;
174
+ durationMs: number;
175
+ note: string | null;
176
+ }
177
+ export interface ExternalTaskTimeEntry {
178
+ remoteId: string;
179
+ durationMs: number;
180
+ startedAt: string;
181
+ note: string | null;
182
+ noteTruncated: boolean;
183
+ canDelete: boolean;
184
+ }
185
+ export interface ExternalTaskTimeEntryHistory {
186
+ windowDays: 30;
187
+ entries: ExternalTaskTimeEntry[];
188
+ truncated: boolean;
189
+ hasRunningTimer: boolean;
190
+ }
191
+ export interface ExternalTaskActionResult {
192
+ remoteTaskId: string;
193
+ action: ExternalTaskAction;
194
+ succeeded: true;
195
+ refresh: Array<'my_work' | 'task_detail'>;
196
+ }
197
+ export interface ExternalTaskLinkLookupInput {
198
+ scopeKey: string;
199
+ taskId: string;
200
+ }
201
+ export interface ExternalTaskLinkStateSummary extends ExternalTaskLinkLookupInput {
202
+ linked: boolean;
203
+ epicId: string | null;
204
+ projectId: string | null;
205
+ projectName: string | null;
206
+ }
207
+ export interface ExternalTaskSourceSummary {
208
+ provider: IntegrationProvider;
209
+ remoteTaskId: string;
210
+ remoteKey: string;
211
+ title: string;
212
+ workAreaName: string;
213
+ statusName: string;
214
+ webUrl: string | null;
215
+ linkedAt: string;
216
+ }
217
+ export interface ExternalTaskImportResponse {
218
+ epic: {
219
+ id: string;
220
+ projectId: string;
221
+ };
222
+ created: boolean;
223
+ }
224
+ export interface ExternalMyWorkRequestOptions {
225
+ includeCompleted: boolean;
226
+ }
227
+ export interface ExternalProviderConnectionContext {
228
+ connectionId: string;
229
+ connectionGeneration: number;
230
+ }
231
+ export interface ExternalMyWorkOptions extends ExternalMyWorkRequestOptions, ExternalProviderConnectionContext {
232
+ }
233
+ export interface ExternalMyWorkCapabilities {
234
+ timeTrackingEnabled: boolean;
235
+ }
236
+ export interface ExternalMyWorkSnapshot {
237
+ capabilities: ExternalMyWorkCapabilities;
238
+ workAreas: ExternalWorkArea[];
239
+ tasks: ExternalWorkAreaTask[];
240
+ refreshedAt: string;
241
+ }
242
+ export interface ExternalMyWorkCapability {
243
+ discover(credentials: IntegrationCredentials, options: ExternalMyWorkOptions): Promise<ExternalMyWorkSnapshot>;
244
+ getTaskDetail(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<ExternalProviderTaskDetail>;
245
+ listComments(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, cursor: string | null): Promise<ExternalTaskCommentPage>;
246
+ changeStatus(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, input: ExternalTaskStatusInput): Promise<void>;
247
+ addComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, input: ExternalTaskCommentInput): Promise<void>;
248
+ getTimeEntryHistory(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<ExternalTaskTimeEntryHistory>;
249
+ }
250
+ export interface ExternalTimeEntryExactRead {
251
+ remoteId: string;
252
+ startedAt: string;
253
+ durationMs: number;
254
+ owned: boolean;
255
+ }
256
+ export interface ExternalTimeEntryRangeIds {
257
+ ids: string[];
258
+ complete: boolean;
259
+ }
260
+ export interface ExternalTimeEntryCreateProof {
261
+ remoteEntryId: string | null;
262
+ }
263
+ export interface ExternalTimeEntryMutationsCapability {
264
+ createTimeEntry(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, input: ExternalTaskTimeEntryInput): Promise<ExternalTimeEntryCreateProof>;
265
+ deleteTimeEntry(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, remoteEntryId: string): Promise<void>;
266
+ readTimeEntryExact(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, remoteEntryId: string): Promise<ExternalTimeEntryExactRead | null>;
267
+ listOwnTimeEntryIdsInRange(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, startedAfterMs: number, startedBeforeMs: number): Promise<ExternalTimeEntryRangeIds>;
268
+ assertTimeEntryDeletable(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, remoteEntryId: string): Promise<void>;
269
+ }
270
+ export interface ExternalSubtaskOwnershipProof {
271
+ remoteTaskId: string;
272
+ expectedParentRemoteTaskId: string;
273
+ ownershipToken: string;
274
+ }
275
+ export interface ExternalSubtaskCreateInput {
276
+ parentRemoteTaskId: string;
277
+ ownershipToken: string;
278
+ title: string;
279
+ description: string | null;
280
+ }
281
+ export interface ExternalSubtaskUpdateInput extends ExternalSubtaskOwnershipProof {
282
+ title?: string;
283
+ description?: string | null;
284
+ }
285
+ export interface ExternalSubtaskSnapshot {
286
+ remoteTaskId: string;
287
+ remoteKey: string;
288
+ parentRemoteTaskId: string | null;
289
+ workAreaRemoteId: string;
290
+ ownershipToken: string | null;
291
+ title: string;
292
+ description: string | null;
293
+ }
294
+ export interface ExternalSubtaskChildrenResult {
295
+ items: ExternalSubtaskSnapshot[];
296
+ complete: boolean;
297
+ }
298
+ export type ExternalSubtaskDeleteResult = {
299
+ outcome: 'deleted';
300
+ } | {
301
+ outcome: 'already_absent';
302
+ };
303
+ export interface ExternalSubtaskSyncCapability {
304
+ create(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, input: ExternalSubtaskCreateInput): Promise<ExternalSubtaskSnapshot>;
305
+ readExact(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<ExternalSubtaskSnapshot | null>;
306
+ update(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, input: ExternalSubtaskUpdateInput): Promise<void>;
307
+ delete(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, proof: ExternalSubtaskOwnershipProof): Promise<ExternalSubtaskDeleteResult>;
308
+ listOwnedDirectChildren(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, parentRemoteTaskId: string, ownershipToken: string): Promise<ExternalSubtaskChildrenResult>;
309
+ assertOwned(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, proof: ExternalSubtaskOwnershipProof): Promise<ExternalSubtaskSnapshot>;
310
+ }
311
+ export interface ExternalOwnedCommentSnapshot {
312
+ remoteId: string;
313
+ authorRemoteId: string | null;
314
+ createdAt: string;
315
+ raw: unknown;
316
+ metadata: {
317
+ assignee: number | null;
318
+ resolved: boolean | null;
319
+ groupAssignee: string | null;
320
+ };
321
+ }
322
+ export interface ExternalOwnedMutationsCapability {
323
+ getCurrentOwnerRemoteId(credentials: IntegrationCredentials): Promise<string>;
324
+ findComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, commentId: string, pageProof: string | null): Promise<ExternalOwnedCommentSnapshot | null>;
325
+ deleteComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, commentId: string): Promise<void>;
326
+ updateOwnedComment(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, commentId: string, document: ExternalRichDocumentV1, metadata: ExternalOwnedCommentSnapshot['metadata']): Promise<void>;
327
+ }
328
+ export interface ExternalDescriptionEditCapability {
329
+ readDescription(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string): Promise<unknown>;
330
+ writeDescription(credentials: IntegrationCredentials, context: ExternalProviderConnectionContext, remoteTaskId: string, raw: unknown): Promise<void>;
331
+ }
332
+ export type ExternalMyWorkResult = {
333
+ provider: IntegrationProvider;
334
+ descriptor: ExternalProviderDescriptor;
335
+ supported: false;
336
+ reason: 'unsupported';
337
+ } | ({
338
+ provider: IntegrationProvider;
339
+ descriptor: ExternalProviderDescriptor;
340
+ supported: true;
341
+ } & ExternalMyWorkSnapshot);
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_TIME_ENTRY_HISTORY_ENTRIES = exports.TIME_ENTRY_HISTORY_WINDOW_DAYS = exports.EXTERNAL_SUBTASK_MANAGEMENT_NOTE = exports.MAX_EXTERNAL_SUBTASK_OWNERSHIP_TOKEN_LENGTH = exports.MAX_EXTERNAL_SUBTASK_DESCRIPTION_LENGTH = exports.MAX_EXTERNAL_SUBTASK_TITLE_LENGTH = exports.MAX_TASK_COMMENT_CURSOR_LENGTH = exports.MAX_TASK_COMMENT_ID_LENGTH = exports.MAX_TASK_COMMENT_AUTHOR_LENGTH = exports.MAX_TASK_COMMENT_BODY_LENGTH = exports.MAX_TASK_DETAIL_SUBTASKS = exports.MAX_TASK_DETAIL_TEXT_LENGTH = exports.MAX_TIME_ENTRY_DURATION_MS = exports.MAX_TIME_ENTRY_NOTE_LENGTH = exports.MAX_COMMENT_LENGTH = exports.MAX_STATUS_LENGTH = exports.MAX_REMOTE_TASK_ID_LENGTH = void 0;
4
+ exports.MAX_REMOTE_TASK_ID_LENGTH = 256;
5
+ exports.MAX_STATUS_LENGTH = 256;
6
+ exports.MAX_COMMENT_LENGTH = 10_000;
7
+ exports.MAX_TIME_ENTRY_NOTE_LENGTH = 10_000;
8
+ exports.MAX_TIME_ENTRY_DURATION_MS = 7 * 24 * 60 * 60 * 1_000;
9
+ exports.MAX_TASK_DETAIL_TEXT_LENGTH = 65_536;
10
+ exports.MAX_TASK_DETAIL_SUBTASKS = 100;
11
+ exports.MAX_TASK_COMMENT_BODY_LENGTH = 8_000;
12
+ exports.MAX_TASK_COMMENT_AUTHOR_LENGTH = 256;
13
+ exports.MAX_TASK_COMMENT_ID_LENGTH = 256;
14
+ exports.MAX_TASK_COMMENT_CURSOR_LENGTH = 1_024;
15
+ exports.MAX_EXTERNAL_SUBTASK_TITLE_LENGTH = 255;
16
+ exports.MAX_EXTERNAL_SUBTASK_DESCRIPTION_LENGTH = 65_536;
17
+ exports.MAX_EXTERNAL_SUBTASK_OWNERSHIP_TOKEN_LENGTH = 256;
18
+ exports.EXTERNAL_SUBTASK_MANAGEMENT_NOTE = 'Managed by DevChain. Update or delete this subtask in DevChain; remote changes are not imported.';
19
+ exports.TIME_ENTRY_HISTORY_WINDOW_DAYS = 30;
20
+ exports.MAX_TIME_ENTRY_HISTORY_ENTRIES = 100;
21
+ //# sourceMappingURL=external-provider.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-provider.models.js","sourceRoot":"","sources":["../../../../src/modules/external-integrations/models/external-provider.models.ts"],"names":[],"mappings":";;;AAMa,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAChC,QAAA,iBAAiB,GAAG,GAAG,CAAC;AACxB,QAAA,kBAAkB,GAAG,MAAM,CAAC;AAC5B,QAAA,0BAA0B,GAAG,MAAM,CAAC;AACpC,QAAA,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AACtD,QAAA,2BAA2B,GAAG,MAAM,CAAC;AACrC,QAAA,wBAAwB,GAAG,GAAG,CAAC;AAC/B,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,8BAA8B,GAAG,GAAG,CAAC;AACrC,QAAA,0BAA0B,GAAG,GAAG,CAAC;AACjC,QAAA,8BAA8B,GAAG,KAAK,CAAC;AACvC,QAAA,iCAAiC,GAAG,GAAG,CAAC;AACxC,QAAA,uCAAuC,GAAG,MAAM,CAAC;AACjD,QAAA,2CAA2C,GAAG,GAAG,CAAC;AAClD,QAAA,gCAAgC,GAC3C,kGAAkG,CAAC;AACxF,QAAA,8BAA8B,GAAG,EAAE,CAAC;AACpC,QAAA,8BAA8B,GAAG,GAAG,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const EXTERNAL_RICH_CAPABILITIES: {
2
+ readonly richEdit: true;
3
+ readonly ownedDelete: true;
4
+ };
5
+ export type ExternalRichCapabilityFlags = typeof EXTERNAL_RICH_CAPABILITIES;
6
+ export declare const EXTERNAL_RICH_CAPABILITIES_TOKEN: unique symbol;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EXTERNAL_RICH_CAPABILITIES_TOKEN = exports.EXTERNAL_RICH_CAPABILITIES = void 0;
4
+ exports.EXTERNAL_RICH_CAPABILITIES = {
5
+ richEdit: true,
6
+ ownedDelete: true,
7
+ };
8
+ exports.EXTERNAL_RICH_CAPABILITIES_TOKEN = Symbol('EXTERNAL_RICH_CAPABILITIES_TOKEN');
9
+ //# sourceMappingURL=external-rich-capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-rich-capabilities.js","sourceRoot":"","sources":["../../../../src/modules/external-integrations/models/external-rich-capabilities.ts"],"names":[],"mappings":";;;AAOa,QAAA,0BAA0B,GAAG;IAExC,QAAQ,EAAE,IAAI;IAEd,WAAW,EAAE,IAAI;CACT,CAAC;AAIE,QAAA,gCAAgC,GAAG,MAAM,CAAC,kCAAkC,CAAC,CAAC"}
@@ -0,0 +1,59 @@
1
+ export declare const RICH_DOCUMENT_VERSION = 1;
2
+ export declare const RICH_MAX_DEPTH = 16;
3
+ export declare const RICH_MAX_BLOCK_COUNT = 1000;
4
+ export declare const RICH_MAX_NODE_COUNT = 10000;
5
+ export declare const RICH_MAX_TEXT_RUN_LENGTH = 8000;
6
+ export declare const RICH_MAX_TOTAL_TEXT_LENGTH = 65536;
7
+ export declare const RICH_COMMENT_MAX_SEGMENT_COUNT = 1000;
8
+ export type ExternalRichMark = {
9
+ type: 'bold';
10
+ } | {
11
+ type: 'italic';
12
+ } | {
13
+ type: 'code';
14
+ } | {
15
+ type: 'link';
16
+ href: string;
17
+ };
18
+ export interface ExternalRichTextRun {
19
+ type: 'text';
20
+ text: string;
21
+ marks: ExternalRichMark[];
22
+ }
23
+ export interface ExternalRichHardBreak {
24
+ type: 'hardBreak';
25
+ }
26
+ export type ExternalRichInline = ExternalRichTextRun | ExternalRichHardBreak;
27
+ export interface ExternalRichParagraph {
28
+ type: 'paragraph';
29
+ content: ExternalRichInline[];
30
+ }
31
+ export interface ExternalRichHeading {
32
+ type: 'heading';
33
+ level: 1 | 2 | 3 | 4 | 5 | 6;
34
+ content: ExternalRichInline[];
35
+ }
36
+ export interface ExternalRichBulletList {
37
+ type: 'bulletList';
38
+ items: ExternalRichInline[][];
39
+ }
40
+ export interface ExternalRichBlockquote {
41
+ type: 'blockquote';
42
+ paragraphs: ExternalRichInline[][];
43
+ }
44
+ export type ExternalRichBlock = ExternalRichParagraph | ExternalRichHeading | ExternalRichBulletList | ExternalRichBlockquote;
45
+ export interface ExternalRichDocumentV1 {
46
+ version: typeof RICH_DOCUMENT_VERSION;
47
+ blocks: ExternalRichBlock[];
48
+ }
49
+ export type ExternalRichUnsupportedReason = 'unsupported_node' | 'unsupported_mark' | 'limit_exceeded' | 'invalid_input';
50
+ export type ExternalRichDocumentResult = {
51
+ supported: true;
52
+ document: ExternalRichDocumentV1;
53
+ } | {
54
+ supported: false;
55
+ reason: ExternalRichUnsupportedReason;
56
+ };
57
+ export declare function isSafeRichLinkHref(value: unknown): value is string;
58
+ export declare function canonicalizeRichDocument(value: unknown): ExternalRichDocumentV1 | null;
59
+ export declare function richDocumentFingerprint(document: ExternalRichDocumentV1): string | null;
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RICH_COMMENT_MAX_SEGMENT_COUNT = exports.RICH_MAX_TOTAL_TEXT_LENGTH = exports.RICH_MAX_TEXT_RUN_LENGTH = exports.RICH_MAX_NODE_COUNT = exports.RICH_MAX_BLOCK_COUNT = exports.RICH_MAX_DEPTH = exports.RICH_DOCUMENT_VERSION = void 0;
4
+ exports.isSafeRichLinkHref = isSafeRichLinkHref;
5
+ exports.canonicalizeRichDocument = canonicalizeRichDocument;
6
+ exports.richDocumentFingerprint = richDocumentFingerprint;
7
+ exports.RICH_DOCUMENT_VERSION = 1;
8
+ exports.RICH_MAX_DEPTH = 16;
9
+ exports.RICH_MAX_BLOCK_COUNT = 1_000;
10
+ exports.RICH_MAX_NODE_COUNT = 10_000;
11
+ exports.RICH_MAX_TEXT_RUN_LENGTH = 8_000;
12
+ exports.RICH_MAX_TOTAL_TEXT_LENGTH = 65_536;
13
+ exports.RICH_COMMENT_MAX_SEGMENT_COUNT = 1_000;
14
+ const MARK_TYPE_ORDER = {
15
+ bold: 0,
16
+ italic: 1,
17
+ code: 2,
18
+ link: 3,
19
+ };
20
+ function isRecord(value) {
21
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
22
+ }
23
+ function isSafeRichLinkHref(value) {
24
+ if (typeof value !== 'string' || !value.trim()) {
25
+ return false;
26
+ }
27
+ let url;
28
+ try {
29
+ url = new URL(value);
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ return ((url.protocol === 'https:' || url.protocol === 'http:') &&
35
+ url.hostname !== '' &&
36
+ url.username === '' &&
37
+ url.password === '');
38
+ }
39
+ function markCompare(left, right) {
40
+ const leftKey = MARK_TYPE_ORDER[left.type];
41
+ const rightKey = MARK_TYPE_ORDER[right.type];
42
+ if (leftKey !== rightKey) {
43
+ return leftKey - rightKey;
44
+ }
45
+ return left.type === 'link' && right.type === 'link'
46
+ ? left.href < right.href
47
+ ? -1
48
+ : left.href > right.href
49
+ ? 1
50
+ : 0
51
+ : 0;
52
+ }
53
+ function markEqual(left, right) {
54
+ if (left.type !== right.type) {
55
+ return false;
56
+ }
57
+ return left.type === 'link' && right.type === 'link' ? left.href === right.href : true;
58
+ }
59
+ function normalizeMarks(value) {
60
+ if (value === undefined || value === null) {
61
+ return [];
62
+ }
63
+ if (!Array.isArray(value)) {
64
+ return null;
65
+ }
66
+ const marks = [];
67
+ for (const item of value) {
68
+ if (!isRecord(item) || typeof item.type !== 'string') {
69
+ return null;
70
+ }
71
+ if (item.type === 'bold' || item.type === 'italic' || item.type === 'code') {
72
+ marks.push({ type: item.type });
73
+ continue;
74
+ }
75
+ if (item.type === 'link') {
76
+ const href = item.href;
77
+ if (!isSafeRichLinkHref(href)) {
78
+ return null;
79
+ }
80
+ marks.push({ type: 'link', href });
81
+ continue;
82
+ }
83
+ return null;
84
+ }
85
+ const deduped = [];
86
+ for (const mark of marks) {
87
+ if (!deduped.some((existing) => markEqual(existing, mark))) {
88
+ deduped.push(mark);
89
+ }
90
+ }
91
+ return deduped.sort(markCompare);
92
+ }
93
+ function normalizeInline(value, limits) {
94
+ if (!Array.isArray(value)) {
95
+ return null;
96
+ }
97
+ const runs = [];
98
+ const pushText = (text, marks) => {
99
+ const previous = runs[runs.length - 1];
100
+ if (previous !== undefined &&
101
+ previous.type === 'text' &&
102
+ previous.marks.length === marks.length &&
103
+ previous.marks.every((mark, index) => markEqual(mark, marks[index]))) {
104
+ const merged = `${previous.text}${text}`.replace(/\s+/g, ' ');
105
+ runs[runs.length - 1] = { type: 'text', text: merged, marks };
106
+ return;
107
+ }
108
+ runs.push({ type: 'text', text, marks });
109
+ };
110
+ for (const item of value) {
111
+ limits.nodes += 1;
112
+ if (limits.nodes > exports.RICH_MAX_NODE_COUNT) {
113
+ return null;
114
+ }
115
+ if (isRecord(item) && item.type === 'hardBreak') {
116
+ runs.push({ type: 'hardBreak' });
117
+ continue;
118
+ }
119
+ if (!isRecord(item) || item.type !== 'text' || typeof item.text !== 'string') {
120
+ return null;
121
+ }
122
+ const marks = normalizeMarks(item.marks);
123
+ if (marks === null) {
124
+ return null;
125
+ }
126
+ const collapsed = item.text.replace(/\s+/g, ' ');
127
+ limits.totalText += collapsed.length;
128
+ if (collapsed.trim().length > exports.RICH_MAX_TEXT_RUN_LENGTH ||
129
+ limits.totalText > exports.RICH_MAX_TOTAL_TEXT_LENGTH) {
130
+ return null;
131
+ }
132
+ if (collapsed !== '') {
133
+ pushText(collapsed, marks);
134
+ }
135
+ }
136
+ const first = runs[0];
137
+ if (first !== undefined && first.type === 'text') {
138
+ runs[0] = { ...first, text: first.text.replace(/^ +/, '') };
139
+ }
140
+ const last = runs[runs.length - 1];
141
+ if (last !== undefined && last.type === 'text') {
142
+ runs[runs.length - 1] = { ...last, text: last.text.replace(/ +$/, '') };
143
+ }
144
+ return runs.filter((run) => run.type !== 'text' || run.text !== '');
145
+ }
146
+ function normalizeInlineList(value, limits) {
147
+ if (!Array.isArray(value)) {
148
+ return null;
149
+ }
150
+ const items = [];
151
+ for (const item of value) {
152
+ const inline = normalizeInline(item, limits);
153
+ if (inline === null) {
154
+ return null;
155
+ }
156
+ items.push(inline);
157
+ }
158
+ return items;
159
+ }
160
+ function normalizeBlock(value, depth, limits) {
161
+ if (depth > exports.RICH_MAX_DEPTH) {
162
+ return null;
163
+ }
164
+ if (!isRecord(value) || typeof value.type !== 'string') {
165
+ return null;
166
+ }
167
+ limits.nodes += 1;
168
+ if (limits.nodes > exports.RICH_MAX_NODE_COUNT) {
169
+ return null;
170
+ }
171
+ switch (value.type) {
172
+ case 'paragraph': {
173
+ const content = normalizeInline(value.content, limits);
174
+ return content === null || content.length === 0 ? null : { type: 'paragraph', content };
175
+ }
176
+ case 'heading': {
177
+ const level = value.level;
178
+ if (typeof level !== 'number' || !Number.isInteger(level) || level < 1 || level > 6) {
179
+ return null;
180
+ }
181
+ const content = normalizeInline(value.content, limits);
182
+ return content === null || content.length === 0
183
+ ? null
184
+ : { type: 'heading', level: level, content };
185
+ }
186
+ case 'bulletList': {
187
+ const items = normalizeInlineList(value.items, limits);
188
+ return items === null || items.length === 0 ? null : { type: 'bulletList', items };
189
+ }
190
+ case 'blockquote': {
191
+ if (!Array.isArray(value.paragraphs)) {
192
+ return null;
193
+ }
194
+ const paragraphs = [];
195
+ for (const paragraph of value.paragraphs) {
196
+ const inline = normalizeInline(paragraph, limits);
197
+ if (inline === null || inline.length === 0) {
198
+ return null;
199
+ }
200
+ paragraphs.push(inline);
201
+ }
202
+ return paragraphs.length === 0 ? null : { type: 'blockquote', paragraphs };
203
+ }
204
+ default:
205
+ return null;
206
+ }
207
+ }
208
+ function canonicalizeRichDocument(value) {
209
+ if (!isRecord(value) || value.version !== exports.RICH_DOCUMENT_VERSION || !Array.isArray(value.blocks)) {
210
+ return null;
211
+ }
212
+ if (value.blocks.length > exports.RICH_MAX_BLOCK_COUNT) {
213
+ return null;
214
+ }
215
+ const limits = { nodes: 0, totalText: 0 };
216
+ const blocks = [];
217
+ for (const block of value.blocks) {
218
+ const normalized = normalizeBlock(block, 1, limits);
219
+ if (normalized === null) {
220
+ return null;
221
+ }
222
+ blocks.push(normalized);
223
+ }
224
+ if (blocks.length === 0) {
225
+ return null;
226
+ }
227
+ return { version: exports.RICH_DOCUMENT_VERSION, blocks };
228
+ }
229
+ function richDocumentFingerprint(document) {
230
+ const canonical = canonicalizeRichDocument(document);
231
+ return canonical === null ? null : JSON.stringify(canonical);
232
+ }
233
+ //# sourceMappingURL=external-rich-document.js.map