devchain-cli 0.16.1 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/dist/drizzle/0066_provider_efforts_and_overrides.sql +29 -0
  2. package/dist/drizzle/meta/0066_snapshot.json +5803 -0
  3. package/dist/drizzle/meta/_journal.json +7 -0
  4. package/dist/node_modules/@devchain/codebase-overview/tsconfig.tsbuildinfo +1 -1
  5. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +55 -4
  6. package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
  7. package/dist/node_modules/@devchain/shared/schemas/export-schema.js +12 -0
  8. package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
  9. package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
  10. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js +6 -1
  11. package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js.map +1 -1
  12. package/dist/server/modules/agent-message-delivery/dtos/delivery.types.d.ts +2 -0
  13. package/dist/server/modules/agents/controllers/agents.controller.d.ts +3 -0
  14. package/dist/server/modules/agents/controllers/agents.controller.js +6 -0
  15. package/dist/server/modules/agents/controllers/agents.controller.js.map +1 -1
  16. package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js +4 -0
  17. package/dist/server/modules/cloud-tunnel/cloud-tunnel.module.js.map +1 -1
  18. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.d.ts +6 -1
  19. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js +18 -2
  20. package/dist/server/modules/cloud-tunnel/services/mobile-chat-rpc.service.js.map +1 -1
  21. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.d.ts +7 -1
  22. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js +63 -2
  23. package/dist/server/modules/cloud-tunnel/services/tunnel-handler.service.js.map +1 -1
  24. package/dist/server/modules/events/catalog/claude.hooks.session.started.d.ts +2 -2
  25. package/dist/server/modules/events/catalog/index.d.ts +2 -2
  26. package/dist/server/modules/hooks/dtos/hook-event.dto.d.ts +16 -16
  27. package/dist/server/modules/orchestrator/docker/docker.module.js +2 -1
  28. package/dist/server/modules/orchestrator/docker/docker.module.js.map +1 -1
  29. package/dist/server/modules/orchestrator/docker/services/docker.service.d.ts +3 -9
  30. package/dist/server/modules/orchestrator/docker/services/docker.service.js +19 -170
  31. package/dist/server/modules/orchestrator/docker/services/docker.service.js.map +1 -1
  32. package/dist/server/modules/orchestrator/docker/services/worktree-mount-discovery.service.d.ts +20 -0
  33. package/dist/server/modules/orchestrator/docker/services/worktree-mount-discovery.service.js +191 -0
  34. package/dist/server/modules/orchestrator/docker/services/worktree-mount-discovery.service.js.map +1 -0
  35. package/dist/server/modules/orchestrator/worktrees/runtime/container-runtime.d.ts +17 -0
  36. package/dist/server/modules/orchestrator/worktrees/runtime/container-runtime.js +58 -0
  37. package/dist/server/modules/orchestrator/worktrees/runtime/container-runtime.js.map +1 -0
  38. package/dist/server/modules/orchestrator/worktrees/runtime/process-runtime.d.ts +38 -0
  39. package/dist/server/modules/orchestrator/worktrees/runtime/process-runtime.js +295 -0
  40. package/dist/server/modules/orchestrator/worktrees/runtime/process-runtime.js.map +1 -0
  41. package/dist/server/modules/orchestrator/worktrees/runtime/worktree-runtime.d.ts +15 -0
  42. package/dist/server/modules/orchestrator/worktrees/runtime/worktree-runtime.js +3 -0
  43. package/dist/server/modules/orchestrator/worktrees/runtime/worktree-runtime.js.map +1 -0
  44. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.d.ts +12 -17
  45. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js +83 -304
  46. package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js.map +1 -1
  47. package/dist/server/modules/orchestrator/worktrees/worktrees.module.js +4 -0
  48. package/dist/server/modules/orchestrator/worktrees/worktrees.module.js.map +1 -1
  49. package/dist/server/modules/profiles/controllers/profiles.controller.js +2 -0
  50. package/dist/server/modules/profiles/controllers/profiles.controller.js.map +1 -1
  51. package/dist/server/modules/profiles/controllers/provider-configs.controller.js +6 -0
  52. package/dist/server/modules/profiles/controllers/provider-configs.controller.js.map +1 -1
  53. package/dist/server/modules/profiles/dto.d.ts +24 -6
  54. package/dist/server/modules/profiles/dto.js +14 -0
  55. package/dist/server/modules/profiles/dto.js.map +1 -1
  56. package/dist/server/modules/projects/controllers/projects.controller.d.ts +60 -35
  57. package/dist/server/modules/projects/controllers/projects.controller.js +90 -8
  58. package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
  59. package/dist/server/modules/projects/dtos/export.dto.d.ts +7 -0
  60. package/dist/server/modules/projects/dtos/export.dto.js +1 -0
  61. package/dist/server/modules/projects/dtos/export.dto.js.map +1 -1
  62. package/dist/server/modules/projects/dtos/setup-preview.dto.d.ts +28 -0
  63. package/dist/server/modules/projects/dtos/setup-preview.dto.js +3 -0
  64. package/dist/server/modules/projects/dtos/setup-preview.dto.js.map +1 -0
  65. package/dist/server/modules/projects/helpers/profile-mapping.helpers.d.ts +26 -2
  66. package/dist/server/modules/projects/helpers/profile-mapping.helpers.js +140 -4
  67. package/dist/server/modules/projects/helpers/profile-mapping.helpers.js.map +1 -1
  68. package/dist/server/modules/projects/helpers/project-export.d.ts +26 -17
  69. package/dist/server/modules/projects/helpers/project-export.js +36 -323
  70. package/dist/server/modules/projects/helpers/project-export.js.map +1 -1
  71. package/dist/server/modules/projects/helpers/project-import.d.ts +13 -16
  72. package/dist/server/modules/projects/helpers/project-import.js +56 -354
  73. package/dist/server/modules/projects/helpers/project-import.js.map +1 -1
  74. package/dist/server/modules/projects/helpers/project-presets.helpers.d.ts +5 -0
  75. package/dist/server/modules/projects/helpers/project-presets.helpers.js +32 -14
  76. package/dist/server/modules/projects/helpers/project-presets.helpers.js.map +1 -1
  77. package/dist/server/modules/projects/helpers/team-overrides.helpers.d.ts +26 -0
  78. package/dist/server/modules/projects/helpers/team-overrides.helpers.js +53 -0
  79. package/dist/server/modules/projects/helpers/team-overrides.helpers.js.map +1 -0
  80. package/dist/server/modules/projects/helpers/template-loader.d.ts +16 -4
  81. package/dist/server/modules/projects/helpers/template-loader.js +93 -308
  82. package/dist/server/modules/projects/helpers/template-loader.js.map +1 -1
  83. package/dist/server/modules/projects/projects.module.js +2 -0
  84. package/dist/server/modules/projects/projects.module.js.map +1 -1
  85. package/dist/server/modules/projects/services/projects.service.d.ts +41 -21
  86. package/dist/server/modules/projects/services/projects.service.js +69 -7
  87. package/dist/server/modules/projects/services/projects.service.js.map +1 -1
  88. package/dist/server/modules/projects/template-codec/codec-registry.d.ts +3 -0
  89. package/dist/server/modules/projects/template-codec/codec-registry.js +33 -0
  90. package/dist/server/modules/projects/template-codec/codec-registry.js.map +1 -0
  91. package/dist/server/modules/projects/template-codec/codecs/agents.codec.d.ts +40 -0
  92. package/dist/server/modules/projects/template-codec/codecs/agents.codec.js +96 -0
  93. package/dist/server/modules/projects/template-codec/codecs/agents.codec.js.map +1 -0
  94. package/dist/server/modules/projects/template-codec/codecs/presets.codec.d.ts +16 -0
  95. package/dist/server/modules/projects/template-codec/codecs/presets.codec.js +34 -0
  96. package/dist/server/modules/projects/template-codec/codecs/presets.codec.js.map +1 -0
  97. package/dist/server/modules/projects/template-codec/codecs/profiles.codec.d.ts +71 -0
  98. package/dist/server/modules/projects/template-codec/codecs/profiles.codec.js +152 -0
  99. package/dist/server/modules/projects/template-codec/codecs/profiles.codec.js.map +1 -0
  100. package/dist/server/modules/projects/template-codec/codecs/project-settings.codec.d.ts +42 -0
  101. package/dist/server/modules/projects/template-codec/codecs/project-settings.codec.js +68 -0
  102. package/dist/server/modules/projects/template-codec/codecs/project-settings.codec.js.map +1 -0
  103. package/dist/server/modules/projects/template-codec/codecs/prompts.codec.d.ts +31 -0
  104. package/dist/server/modules/projects/template-codec/codecs/prompts.codec.js +53 -0
  105. package/dist/server/modules/projects/template-codec/codecs/prompts.codec.js.map +1 -0
  106. package/dist/server/modules/projects/template-codec/codecs/provider-efforts.codec.d.ts +23 -0
  107. package/dist/server/modules/projects/template-codec/codecs/provider-efforts.codec.js +73 -0
  108. package/dist/server/modules/projects/template-codec/codecs/provider-efforts.codec.js.map +1 -0
  109. package/dist/server/modules/projects/template-codec/codecs/provider-models.codec.d.ts +23 -0
  110. package/dist/server/modules/projects/template-codec/codecs/provider-models.codec.js +73 -0
  111. package/dist/server/modules/projects/template-codec/codecs/provider-models.codec.js.map +1 -0
  112. package/dist/server/modules/projects/template-codec/codecs/provider-settings.codec.d.ts +36 -0
  113. package/dist/server/modules/projects/template-codec/codecs/provider-settings.codec.js +138 -0
  114. package/dist/server/modules/projects/template-codec/codecs/provider-settings.codec.js.map +1 -0
  115. package/dist/server/modules/projects/template-codec/codecs/scheduled-epics.codec.d.ts +46 -0
  116. package/dist/server/modules/projects/template-codec/codecs/scheduled-epics.codec.js +120 -0
  117. package/dist/server/modules/projects/template-codec/codecs/scheduled-epics.codec.js.map +1 -0
  118. package/dist/server/modules/projects/template-codec/codecs/statuses.codec.d.ts +32 -0
  119. package/dist/server/modules/projects/template-codec/codecs/statuses.codec.js +101 -0
  120. package/dist/server/modules/projects/template-codec/codecs/statuses.codec.js.map +1 -0
  121. package/dist/server/modules/projects/template-codec/codecs/subscribers.codec.d.ts +65 -0
  122. package/dist/server/modules/projects/template-codec/codecs/subscribers.codec.js +47 -0
  123. package/dist/server/modules/projects/template-codec/codecs/subscribers.codec.js.map +1 -0
  124. package/dist/server/modules/projects/template-codec/codecs/teams.codec.d.ts +83 -0
  125. package/dist/server/modules/projects/template-codec/codecs/teams.codec.js +297 -0
  126. package/dist/server/modules/projects/template-codec/codecs/teams.codec.js.map +1 -0
  127. package/dist/server/modules/projects/template-codec/codecs/watchers.codec.d.ts +62 -0
  128. package/dist/server/modules/projects/template-codec/codecs/watchers.codec.js +78 -0
  129. package/dist/server/modules/projects/template-codec/codecs/watchers.codec.js.map +1 -0
  130. package/dist/server/modules/projects/template-codec/import-context.d.ts +38 -0
  131. package/dist/server/modules/projects/template-codec/import-context.js +49 -0
  132. package/dist/server/modules/projects/template-codec/import-context.js.map +1 -0
  133. package/dist/server/modules/projects/template-codec/template-pipeline.d.ts +17 -0
  134. package/dist/server/modules/projects/template-codec/template-pipeline.js +159 -0
  135. package/dist/server/modules/projects/template-codec/template-pipeline.js.map +1 -0
  136. package/dist/server/modules/projects/template-codec/template-section-codec.d.ts +93 -0
  137. package/dist/server/modules/projects/template-codec/template-section-codec.js +3 -0
  138. package/dist/server/modules/projects/template-codec/template-section-codec.js.map +1 -0
  139. package/dist/server/modules/providers/adapters/capabilities/effort.capability.d.ts +8 -0
  140. package/dist/server/modules/providers/adapters/capabilities/effort.capability.js +3 -0
  141. package/dist/server/modules/providers/adapters/capabilities/effort.capability.js.map +1 -0
  142. package/dist/server/modules/providers/adapters/capabilities/index.d.ts +2 -2
  143. package/dist/server/modules/providers/adapters/capabilities/index.js +2 -1
  144. package/dist/server/modules/providers/adapters/capabilities/index.js.map +1 -1
  145. package/dist/server/modules/providers/adapters/capabilities/type-guards.d.ts +3 -0
  146. package/dist/server/modules/providers/adapters/capabilities/type-guards.js +4 -0
  147. package/dist/server/modules/providers/adapters/capabilities/type-guards.js.map +1 -1
  148. package/dist/server/modules/providers/adapters/claude.adapter.d.ts +7 -2
  149. package/dist/server/modules/providers/adapters/claude.adapter.js +5 -0
  150. package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
  151. package/dist/server/modules/providers/adapters/codex.adapter.d.ts +9 -2
  152. package/dist/server/modules/providers/adapters/codex.adapter.js +26 -0
  153. package/dist/server/modules/providers/adapters/codex.adapter.js.map +1 -1
  154. package/dist/server/modules/providers/adapters/copilot.adapter.d.ts +7 -2
  155. package/dist/server/modules/providers/adapters/copilot.adapter.js +7 -0
  156. package/dist/server/modules/providers/adapters/copilot.adapter.js.map +1 -1
  157. package/dist/server/modules/providers/adapters/opencode.adapter.d.ts +8 -1
  158. package/dist/server/modules/providers/adapters/opencode.adapter.js +54 -0
  159. package/dist/server/modules/providers/adapters/opencode.adapter.js.map +1 -1
  160. package/dist/server/modules/providers/controllers/provider-efforts.controller.d.ts +20 -0
  161. package/dist/server/modules/providers/controllers/provider-efforts.controller.js +128 -0
  162. package/dist/server/modules/providers/controllers/provider-efforts.controller.js.map +1 -0
  163. package/dist/server/modules/providers/controllers/providers.controller.d.ts +3 -1
  164. package/dist/server/modules/providers/controllers/providers.controller.js +11 -2
  165. package/dist/server/modules/providers/controllers/providers.controller.js.map +1 -1
  166. package/dist/server/modules/providers/providers.module.js +4 -1
  167. package/dist/server/modules/providers/providers.module.js.map +1 -1
  168. package/dist/server/modules/providers/services/provider-effort-seeding.module.d.ts +2 -0
  169. package/dist/server/modules/providers/services/provider-effort-seeding.module.js +24 -0
  170. package/dist/server/modules/providers/services/provider-effort-seeding.module.js.map +1 -0
  171. package/dist/server/modules/providers/services/provider-effort-seeding.service.d.ts +19 -0
  172. package/dist/server/modules/providers/services/provider-effort-seeding.service.js +64 -0
  173. package/dist/server/modules/providers/services/provider-effort-seeding.service.js.map +1 -0
  174. package/dist/server/modules/providers/services/provider-project-sync.service.js +34 -3
  175. package/dist/server/modules/providers/services/provider-project-sync.service.js.map +1 -1
  176. package/dist/server/modules/providers/services/provider-state-manager.service.d.ts +4 -1
  177. package/dist/server/modules/providers/services/provider-state-manager.service.js +14 -2
  178. package/dist/server/modules/providers/services/provider-state-manager.service.js.map +1 -1
  179. package/dist/server/modules/registry/controllers/templates.controller.d.ts +10 -1
  180. package/dist/server/modules/seeders/seeders/0010_seed_provider_effort_defaults.d.ts +3 -0
  181. package/dist/server/modules/seeders/seeders/0010_seed_provider_effort_defaults.js +21 -0
  182. package/dist/server/modules/seeders/seeders/0010_seed_provider_effort_defaults.js.map +1 -0
  183. package/dist/server/modules/seeders/seeders.module.js +2 -1
  184. package/dist/server/modules/seeders/seeders.module.js.map +1 -1
  185. package/dist/server/modules/seeders/services/data-seeder.service.d.ts +3 -1
  186. package/dist/server/modules/seeders/services/data-seeder.service.js +10 -4
  187. package/dist/server/modules/seeders/services/data-seeder.service.js.map +1 -1
  188. package/dist/server/modules/seeders/types/seeder.types.d.ts +2 -0
  189. package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.d.ts +3 -2
  190. package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js +22 -14
  191. package/dist/server/modules/session-reader/adapters/codex-session-reader.adapter.js.map +1 -1
  192. package/dist/server/modules/session-reader/adapters/session-reader-adapter.interface.d.ts +7 -0
  193. package/dist/server/modules/session-reader/data/pricing.json +40 -40
  194. package/dist/server/modules/session-reader/services/transcript-persistence.listener.d.ts +1 -0
  195. package/dist/server/modules/session-reader/services/transcript-persistence.listener.js +41 -33
  196. package/dist/server/modules/session-reader/services/transcript-persistence.listener.js.map +1 -1
  197. package/dist/server/modules/sessions/services/message-enqueue.service.d.ts +1 -0
  198. package/dist/server/modules/sessions/services/message-enqueue.service.js +1 -0
  199. package/dist/server/modules/sessions/services/message-enqueue.service.js.map +1 -1
  200. package/dist/server/modules/sessions/services/message-log.service.d.ts +3 -0
  201. package/dist/server/modules/sessions/services/message-log.service.js +35 -3
  202. package/dist/server/modules/sessions/services/message-log.service.js.map +1 -1
  203. package/dist/server/modules/sessions/services/message-pool.types.d.ts +4 -0
  204. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.d.ts +1 -0
  205. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js +6 -0
  206. package/dist/server/modules/sessions/services/provider-launch-config/provider-launch-config.service.js.map +1 -1
  207. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +7 -0
  208. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +7 -0
  209. package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
  210. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +9 -1
  211. package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
  212. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +14 -1
  213. package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
  214. package/dist/server/modules/sessions/services/sessions-message-log-read.facade.d.ts +16 -0
  215. package/dist/server/modules/sessions/services/sessions-message-log-read.facade.js +40 -0
  216. package/dist/server/modules/sessions/services/sessions-message-log-read.facade.js.map +1 -0
  217. package/dist/server/modules/sessions/services/sessions-message-pool.service.js +21 -4
  218. package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
  219. package/dist/server/modules/sessions/services/sessions.service.js +4 -0
  220. package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
  221. package/dist/server/modules/sessions/sessions-message-log-read.module.d.ts +2 -0
  222. package/dist/server/modules/sessions/sessions-message-log-read.module.js +23 -0
  223. package/dist/server/modules/sessions/sessions-message-log-read.module.js.map +1 -0
  224. package/dist/server/modules/sessions/utils/profile-options.d.ts +1 -0
  225. package/dist/server/modules/sessions/utils/profile-options.js +18 -0
  226. package/dist/server/modules/sessions/utils/profile-options.js.map +1 -1
  227. package/dist/server/modules/settings/dtos/settings.dto.d.ts +15 -0
  228. package/dist/server/modules/settings/dtos/settings.dto.js +1 -0
  229. package/dist/server/modules/settings/dtos/settings.dto.js.map +1 -1
  230. package/dist/server/modules/storage/db/schema.d.ts +176 -0
  231. package/dist/server/modules/storage/db/schema.js +18 -2
  232. package/dist/server/modules/storage/db/schema.js.map +1 -1
  233. package/dist/server/modules/storage/interfaces/storage.interface.d.ts +13 -62
  234. package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
  235. package/dist/server/modules/storage/local/delegates/agent.delegate.js +3 -0
  236. package/dist/server/modules/storage/local/delegates/agent.delegate.js.map +1 -1
  237. package/dist/server/modules/storage/local/delegates/profile-provider-config.delegate.d.ts +2 -0
  238. package/dist/server/modules/storage/local/delegates/profile-provider-config.delegate.js +24 -0
  239. package/dist/server/modules/storage/local/delegates/profile-provider-config.delegate.js.map +1 -1
  240. package/dist/server/modules/storage/local/delegates/project.delegate.d.ts +3 -2
  241. package/dist/server/modules/storage/local/delegates/project.delegate.js +25 -198
  242. package/dist/server/modules/storage/local/delegates/project.delegate.js.map +1 -1
  243. package/dist/server/modules/storage/local/delegates/provider-effort.delegate.d.ts +15 -0
  244. package/dist/server/modules/storage/local/delegates/provider-effort.delegate.js +200 -0
  245. package/dist/server/modules/storage/local/delegates/provider-effort.delegate.js.map +1 -0
  246. package/dist/server/modules/storage/local/local-storage.service.d.ts +12 -2
  247. package/dist/server/modules/storage/local/local-storage.service.js +22 -2
  248. package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
  249. package/dist/server/modules/storage/models/domain.models.d.ts +18 -1
  250. package/dist/server/modules/teams/services/teams.service.d.ts +0 -5
  251. package/dist/server/modules/teams/services/teams.service.js +22 -131
  252. package/dist/server/modules/teams/services/teams.service.js.map +1 -1
  253. package/dist/server/modules/teams/services/teams.validators.d.ts +14 -0
  254. package/dist/server/modules/teams/services/teams.validators.js +94 -0
  255. package/dist/server/modules/teams/services/teams.validators.js.map +1 -0
  256. package/dist/server/modules/terminal/gateways/terminal.gateway.d.ts +1 -0
  257. package/dist/server/modules/terminal/gateways/terminal.gateway.js +39 -10
  258. package/dist/server/modules/terminal/gateways/terminal.gateway.js.map +1 -1
  259. package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.d.ts +10 -0
  260. package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js +73 -0
  261. package/dist/server/modules/terminal/services/terminal-key-input/terminal-key-input.facade.js.map +1 -0
  262. package/dist/server/modules/terminal/services/terminal-registry-rehydrator.service.js +1 -0
  263. package/dist/server/modules/terminal/services/terminal-registry-rehydrator.service.js.map +1 -1
  264. package/dist/server/modules/terminal/services/terminal-session/terminal-session.d.ts +2 -0
  265. package/dist/server/modules/terminal/services/terminal-session/terminal-session.js +15 -0
  266. package/dist/server/modules/terminal/services/terminal-session/terminal-session.js.map +1 -1
  267. package/dist/server/modules/terminal/terminal-key-input.module.d.ts +2 -0
  268. package/dist/server/modules/terminal/terminal-key-input.module.js +23 -0
  269. package/dist/server/modules/terminal/terminal-key-input.module.js.map +1 -0
  270. package/dist/server/modules/watchers/services/watcher-runner.service.d.ts +2 -16
  271. package/dist/server/modules/watchers/services/watcher-runner.service.js +11 -125
  272. package/dist/server/modules/watchers/services/watcher-runner.service.js.map +1 -1
  273. package/dist/server/modules/watchers/services/watcher-trigger-state.d.ts +23 -0
  274. package/dist/server/modules/watchers/services/watcher-trigger-state.js +136 -0
  275. package/dist/server/modules/watchers/services/watcher-trigger-state.js.map +1 -0
  276. package/dist/server/templates/3-agents-dev.json +144 -85
  277. package/dist/server/templates/teams-dev.json +305 -208
  278. package/dist/server/tsconfig.tsbuildinfo +1 -1
  279. package/dist/server/ui/assets/{ReviewDetailPage-BDisSE9l.js → ReviewDetailPage-Dd40lXMW.js} +1 -1
  280. package/dist/server/ui/assets/{ReviewsPage-3puoJiOQ.js → ReviewsPage-CBSbsimJ.js} +1 -1
  281. package/dist/server/ui/assets/index-COvyD_66.css +32 -0
  282. package/dist/server/ui/assets/index-DtIjl-Lt.js +1113 -0
  283. package/dist/server/ui/assets/{useReviewSubscription-wTrdkdi0.js → useReviewSubscription-CpDyx3vJ.js} +1 -1
  284. package/dist/server/ui/index.html +2 -2
  285. package/dist/templates/3-agents-dev.json +144 -85
  286. package/dist/templates/teams-dev.json +305 -208
  287. package/package.json +11 -1
  288. package/dist/server/ui/assets/index-CzMrWNAV.css +0 -32
  289. package/dist/server/ui/assets/index-zlQ1ekQ2.js +0 -1103
@@ -0,0 +1,83 @@
1
+ import type { StorageService } from '../../../storage/interfaces/storage.interface';
2
+ import type { ImportContext } from '../import-context';
3
+ import type { CodecApplyResult, CodecApplyRuntime, ParsedTemplatePayload, PipelineMode, TemplateSectionCodec } from '../template-section-codec';
4
+ type TeamsSection = ParsedTemplatePayload['teams'];
5
+ export interface TeamsExportService {
6
+ listTeams: (projectId: string, options?: {
7
+ limit?: number;
8
+ }) => Promise<{
9
+ items: Array<{
10
+ id: string;
11
+ name: string;
12
+ description: string | null;
13
+ teamLeadAgentId: string | null;
14
+ memberCount: number;
15
+ }>;
16
+ }>;
17
+ getTeam: (id: string) => Promise<{
18
+ id: string;
19
+ name: string;
20
+ description: string | null;
21
+ teamLeadAgentId: string | null;
22
+ maxMembers: number;
23
+ maxConcurrentTasks: number;
24
+ allowTeamLeadCreateAgents: boolean;
25
+ members: Array<{
26
+ agentId: string;
27
+ }>;
28
+ profileIds: string[];
29
+ profileConfigSelections: Array<{
30
+ profileId: string;
31
+ configIds: string[];
32
+ }>;
33
+ } | null>;
34
+ }
35
+ export declare function buildExportTeams(project: {
36
+ id: string;
37
+ }, teamsService: TeamsExportService, storage: StorageService): Promise<{
38
+ name: string;
39
+ description: string | null;
40
+ teamLeadAgentName: string | null;
41
+ memberAgentNames: string[];
42
+ maxMembers?: number;
43
+ maxConcurrentTasks?: number;
44
+ allowTeamLeadCreateAgents?: boolean;
45
+ profileNames: string[];
46
+ profileSelections?: Array<{
47
+ profileName: string;
48
+ configNames: string[];
49
+ }>;
50
+ }[]>;
51
+ export declare function pruneUnavailableTeamProfileSelections<TTeam extends {
52
+ name: string;
53
+ profileNames?: string[];
54
+ profileSelections?: Array<{
55
+ profileName: string;
56
+ configNames: string[];
57
+ }>;
58
+ }>(exportedTeams: TTeam[], profiles: Array<{
59
+ id?: string;
60
+ name: string;
61
+ providerConfigs?: Array<{
62
+ name: string;
63
+ }>;
64
+ }>, profileIdMap: Record<string, string>, configLookupMap: Map<string, string>): TTeam[];
65
+ declare class TeamsCodec implements TemplateSectionCodec<TeamsSection> {
66
+ readonly declaration: {
67
+ readonly section: "teams";
68
+ readonly reads: readonly ["selectedProfilesByFamily", "profileIdMap", "configLookupMap"];
69
+ readonly writes: readonly [];
70
+ readonly requiresState: readonly ["agentsPersisted"];
71
+ readonly modes: readonly ["replace", "create"];
72
+ readonly onFailure: {
73
+ readonly replace: "fatal";
74
+ readonly create: "swallow";
75
+ };
76
+ };
77
+ pick(payload: ParsedTemplatePayload): TeamsSection;
78
+ build(): never[];
79
+ apply(teams: TeamsSection, ctx: ImportContext, _mode: PipelineMode, rt: CodecApplyRuntime): Promise<CodecApplyResult>;
80
+ private createTeam;
81
+ }
82
+ export declare const teamsCodec: TeamsCodec;
83
+ export {};
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.teamsCodec = void 0;
4
+ exports.buildExportTeams = buildExportTeams;
5
+ exports.pruneUnavailableTeamProfileSelections = pruneUnavailableTeamProfileSelections;
6
+ const logger_1 = require("../../../../common/logging/logger");
7
+ const profile_mapping_helpers_1 = require("../../helpers/profile-mapping.helpers");
8
+ const team_overrides_helpers_1 = require("../../helpers/team-overrides.helpers");
9
+ const logger = (0, logger_1.createLogger)('TeamsCodec');
10
+ async function buildExportTeams(project, teamsService, storage) {
11
+ const { items: teamList } = await teamsService.listTeams(project.id, { limit: 10000 });
12
+ const result = [];
13
+ for (const teamSummary of teamList) {
14
+ const team = await teamsService.getTeam(teamSummary.id);
15
+ if (!team)
16
+ continue;
17
+ const memberAgentNames = [];
18
+ let teamLeadAgentName = null;
19
+ for (const member of team.members) {
20
+ try {
21
+ const agent = await storage.getAgent(member.agentId);
22
+ memberAgentNames.push(agent.name);
23
+ if (member.agentId === team.teamLeadAgentId) {
24
+ teamLeadAgentName = agent.name;
25
+ }
26
+ }
27
+ catch {
28
+ }
29
+ }
30
+ const profileNames = [];
31
+ for (const profileId of team.profileIds) {
32
+ try {
33
+ const profile = await storage.getAgentProfile(profileId);
34
+ profileNames.push(profile.name);
35
+ }
36
+ catch {
37
+ }
38
+ }
39
+ const profileSelections = [];
40
+ if (team.profileConfigSelections && team.profileConfigSelections.length > 0) {
41
+ const profileIdToName = new Map();
42
+ for (let i = 0; i < team.profileIds.length; i++) {
43
+ try {
44
+ const profile = await storage.getAgentProfile(team.profileIds[i]);
45
+ profileIdToName.set(profile.id, profile.name);
46
+ }
47
+ catch {
48
+ }
49
+ }
50
+ for (const sel of team.profileConfigSelections) {
51
+ const pName = profileIdToName.get(sel.profileId);
52
+ if (!pName)
53
+ continue;
54
+ const configNames = [];
55
+ for (const configId of sel.configIds) {
56
+ try {
57
+ const config = await storage.getProfileProviderConfig(configId);
58
+ configNames.push(config.name);
59
+ }
60
+ catch {
61
+ }
62
+ }
63
+ if (configNames.length > 0) {
64
+ profileSelections.push({ profileName: pName, configNames });
65
+ }
66
+ }
67
+ }
68
+ result.push({
69
+ name: team.name,
70
+ description: team.description,
71
+ teamLeadAgentName,
72
+ memberAgentNames,
73
+ ...(team.maxMembers !== 5 ? { maxMembers: team.maxMembers } : {}),
74
+ ...(team.maxConcurrentTasks !== 5 ? { maxConcurrentTasks: team.maxConcurrentTasks } : {}),
75
+ ...(team.allowTeamLeadCreateAgents ? { allowTeamLeadCreateAgents: true } : {}),
76
+ profileNames,
77
+ ...(profileSelections.length > 0 ? { profileSelections } : {}),
78
+ });
79
+ }
80
+ return result;
81
+ }
82
+ function pruneUnavailableTeamProfileSelections(exportedTeams, profiles, profileIdMap, configLookupMap) {
83
+ const profileNameToNewId = new Map();
84
+ const knownConfigNamesByNewProfileId = new Map();
85
+ for (const profile of profiles) {
86
+ if (!profile.id)
87
+ continue;
88
+ const newProfileId = profileIdMap[profile.id];
89
+ if (!newProfileId)
90
+ continue;
91
+ profileNameToNewId.set(profile.name.trim().toLowerCase(), newProfileId);
92
+ knownConfigNamesByNewProfileId.set(newProfileId, new Set((profile.providerConfigs ?? []).map((config) => config.name.trim().toLowerCase())));
93
+ }
94
+ return exportedTeams.map((team) => {
95
+ if (!team.profileSelections || team.profileSelections.length === 0) {
96
+ return team;
97
+ }
98
+ const profileSelections = [];
99
+ const profilesWithNoAvailableConfigs = new Set();
100
+ for (const selection of team.profileSelections) {
101
+ if (selection.configNames.length === 0) {
102
+ profileSelections.push(selection);
103
+ continue;
104
+ }
105
+ const newProfileId = profileNameToNewId.get(selection.profileName.trim().toLowerCase());
106
+ if (!newProfileId) {
107
+ profileSelections.push(selection);
108
+ continue;
109
+ }
110
+ const knownConfigNames = knownConfigNamesByNewProfileId.get(newProfileId) ?? new Set();
111
+ const availableConfigNames = [];
112
+ for (const configName of selection.configNames) {
113
+ const lookupKey = (0, profile_mapping_helpers_1.buildProviderConfigLookupKey)(newProfileId, configName);
114
+ if (configLookupMap.has(lookupKey)) {
115
+ availableConfigNames.push(configName);
116
+ continue;
117
+ }
118
+ if (knownConfigNames.has(configName.trim().toLowerCase())) {
119
+ logger.warn({
120
+ teamName: team.name,
121
+ profileName: selection.profileName,
122
+ configName,
123
+ }, 'Team profile config unavailable after provider filtering; skipping config');
124
+ continue;
125
+ }
126
+ availableConfigNames.push(configName);
127
+ }
128
+ if (availableConfigNames.length > 0) {
129
+ profileSelections.push({ ...selection, configNames: availableConfigNames });
130
+ }
131
+ else {
132
+ profilesWithNoAvailableConfigs.add(selection.profileName.trim().toLowerCase());
133
+ logger.warn({
134
+ teamName: team.name,
135
+ profileName: selection.profileName,
136
+ }, 'Team profile selection has no available configs after provider filtering; skipping selection');
137
+ }
138
+ }
139
+ const profileNames = profilesWithNoAvailableConfigs.size > 0
140
+ ? team.profileNames?.filter((profileName) => !profilesWithNoAvailableConfigs.has(profileName.trim().toLowerCase()))
141
+ : team.profileNames;
142
+ const nextTeam = profileNames !== team.profileNames
143
+ ? {
144
+ ...team,
145
+ ...(profileNames !== undefined ? { profileNames } : {}),
146
+ }
147
+ : team;
148
+ if (profileSelections.length > 0) {
149
+ return { ...nextTeam, profileSelections };
150
+ }
151
+ const { profileSelections: _profileSelections, ...teamWithoutSelections } = nextTeam;
152
+ return teamWithoutSelections;
153
+ });
154
+ }
155
+ class TeamsCodec {
156
+ constructor() {
157
+ this.declaration = {
158
+ section: 'teams',
159
+ reads: ['selectedProfilesByFamily', 'profileIdMap', 'configLookupMap'],
160
+ writes: [],
161
+ requiresState: ['agentsPersisted'],
162
+ modes: ['replace', 'create'],
163
+ onFailure: { replace: 'fatal', create: 'swallow' },
164
+ };
165
+ }
166
+ pick(payload) {
167
+ return payload.teams;
168
+ }
169
+ build() {
170
+ return [];
171
+ }
172
+ async apply(teams, ctx, _mode, rt) {
173
+ if (!rt.teamsService) {
174
+ return { section: 'teams', log: { teams: 0 } };
175
+ }
176
+ if (!teams || teams.length === 0) {
177
+ return { section: 'teams', log: { teams: 0 } };
178
+ }
179
+ const { projectId } = rt;
180
+ const selectedProfilesByFamily = ctx.get('selectedProfilesByFamily');
181
+ const teamOverrides = rt.teamOverrides;
182
+ if (teamOverrides) {
183
+ for (const override of teamOverrides) {
184
+ if (!teams.some((team) => team.name.trim().toLowerCase() === override.teamName.trim().toLowerCase())) {
185
+ logger.warn({ teamName: override.teamName }, 'teamOverrides references unknown team; skipping');
186
+ }
187
+ }
188
+ }
189
+ const teamsToImport = (0, team_overrides_helpers_1.applyTeamOverrides)(teams, teamOverrides, selectedProfilesByFamily.profileNameRemapMap, selectedProfilesByFamily.profilesToCreate);
190
+ const profileIdMap = ctx.get('profileIdMap');
191
+ const configLookupMap = ctx.get('configLookupMap');
192
+ const teamsWithAvailableConfigs = pruneUnavailableTeamProfileSelections(teamsToImport, selectedProfilesByFamily.profilesToCreate, profileIdMap, configLookupMap);
193
+ const { storage } = rt;
194
+ const { items: agents } = await storage.listAgents(projectId, { limit: 10000 });
195
+ const agentNameToId = new Map();
196
+ for (const agent of agents) {
197
+ agentNameToId.set(agent.name.trim().toLowerCase(), agent.id);
198
+ }
199
+ const { items: profiles } = await storage.listAgentProfiles({ projectId });
200
+ const profileNameToId = new Map();
201
+ for (const profile of profiles) {
202
+ profileNameToId.set(profile.name.trim().toLowerCase(), profile.id);
203
+ }
204
+ const createdTeamIds = [];
205
+ try {
206
+ for (const exportedTeam of teamsWithAvailableConfigs) {
207
+ const created = await this.createTeam(projectId, exportedTeam, agentNameToId, profileNameToId, storage, rt);
208
+ createdTeamIds.push(created.id);
209
+ }
210
+ return { section: 'teams', log: { teams: createdTeamIds.length } };
211
+ }
212
+ catch (error) {
213
+ if (createdTeamIds.length > 0) {
214
+ logger.warn({ createdTeamIds, error }, 'Teams import failed; cleaning up partially created teams');
215
+ try {
216
+ await rt.teamsService.deleteTeamsByIds(createdTeamIds);
217
+ }
218
+ catch (cleanupError) {
219
+ logger.error({ cleanupError }, 'Failed to clean up partially imported teams');
220
+ }
221
+ }
222
+ throw error;
223
+ }
224
+ }
225
+ async createTeam(projectId, exportedTeam, agentNameToId, profileNameToId, storage, rt) {
226
+ const memberAgentIds = [];
227
+ for (const memberName of exportedTeam.memberAgentNames) {
228
+ const agentId = agentNameToId.get(memberName.trim().toLowerCase());
229
+ if (!agentId) {
230
+ throw new Error(`Team "${exportedTeam.name}" references agent "${memberName}" which was not found in the project`);
231
+ }
232
+ memberAgentIds.push(agentId);
233
+ }
234
+ let teamLeadAgentId = null;
235
+ if (exportedTeam.teamLeadAgentName) {
236
+ teamLeadAgentId =
237
+ agentNameToId.get(exportedTeam.teamLeadAgentName.trim().toLowerCase()) ?? null;
238
+ if (!teamLeadAgentId) {
239
+ throw new Error(`Team "${exportedTeam.name}" references team lead "${exportedTeam.teamLeadAgentName}" which was not found in the project`);
240
+ }
241
+ }
242
+ const profileIds = [];
243
+ if (exportedTeam.profileNames) {
244
+ for (const profileName of exportedTeam.profileNames) {
245
+ const profileId = profileNameToId.get(profileName.trim().toLowerCase());
246
+ if (!profileId) {
247
+ throw new Error(`Team "${exportedTeam.name}" references profile "${profileName}" which was not found in the project`);
248
+ }
249
+ profileIds.push(profileId);
250
+ }
251
+ }
252
+ let profileConfigSelections;
253
+ if (exportedTeam.profileSelections && exportedTeam.profileSelections.length > 0) {
254
+ profileConfigSelections = [];
255
+ for (const sel of exportedTeam.profileSelections) {
256
+ const profileId = profileNameToId.get(sel.profileName.trim().toLowerCase());
257
+ if (!profileId) {
258
+ throw new Error(`Team "${exportedTeam.name}" references profile "${sel.profileName}" in profileSelections which was not found in the project`);
259
+ }
260
+ const configs = await storage.listProfileProviderConfigsByProfile(profileId);
261
+ const configNameToId = new Map();
262
+ for (const c of configs) {
263
+ configNameToId.set(c.name.trim().toLowerCase(), c.id);
264
+ }
265
+ const configIds = [];
266
+ for (const configName of sel.configNames) {
267
+ const configId = configNameToId.get(configName.trim().toLowerCase());
268
+ if (!configId) {
269
+ throw new Error(`Team "${exportedTeam.name}" references config "${configName}" for profile "${sel.profileName}" which was not found`);
270
+ }
271
+ configIds.push(configId);
272
+ }
273
+ if (configIds.length > 0) {
274
+ profileConfigSelections.push({ profileId, configIds });
275
+ }
276
+ }
277
+ }
278
+ return rt.teamsService.createTeam({
279
+ projectId,
280
+ name: exportedTeam.name,
281
+ description: exportedTeam.description ?? null,
282
+ teamLeadAgentId,
283
+ memberAgentIds,
284
+ ...(exportedTeam.maxMembers !== undefined ? { maxMembers: exportedTeam.maxMembers } : {}),
285
+ ...(exportedTeam.maxConcurrentTasks !== undefined
286
+ ? { maxConcurrentTasks: exportedTeam.maxConcurrentTasks }
287
+ : {}),
288
+ ...(exportedTeam.allowTeamLeadCreateAgents !== undefined
289
+ ? { allowTeamLeadCreateAgents: exportedTeam.allowTeamLeadCreateAgents }
290
+ : {}),
291
+ profileIds,
292
+ ...(profileConfigSelections ? { profileConfigSelections } : {}),
293
+ });
294
+ }
295
+ }
296
+ exports.teamsCodec = new TeamsCodec();
297
+ //# sourceMappingURL=teams.codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teams.codec.js","sourceRoot":"","sources":["../../../../../src/modules/projects/template-codec/codecs/teams.codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import type { StorageService } from '../../../storage/interfaces/storage.interface';
2
+ import type { ImportContext } from '../import-context';
3
+ import type { CodecApplyResult, CodecApplyRuntime, ParsedTemplatePayload, PipelineMode, TemplateSectionCodec } from '../template-section-codec';
4
+ type WatchersSection = ParsedTemplatePayload['watchers'];
5
+ interface ExportWatcherRow {
6
+ id: string;
7
+ name: string;
8
+ description: string | null;
9
+ enabled: boolean;
10
+ scope: 'all' | 'agent' | 'profile' | 'provider';
11
+ scopeFilterId: string | null;
12
+ pollIntervalMs: number;
13
+ viewportLines: number;
14
+ idleAfterSeconds: number;
15
+ condition: {
16
+ type: 'contains' | 'regex' | 'not_contains';
17
+ pattern: string;
18
+ flags?: string;
19
+ };
20
+ cooldownMs: number;
21
+ cooldownMode: 'time' | 'until_clear';
22
+ eventName: string;
23
+ }
24
+ export declare function buildExportWatchers(watchers: ReadonlyArray<ExportWatcherRow>, agents: ReadonlyArray<{
25
+ id: string;
26
+ name: string;
27
+ }>, profiles: ReadonlyArray<{
28
+ id: string;
29
+ name: string;
30
+ }>, storage: StorageService): Promise<{
31
+ id: string;
32
+ name: string;
33
+ description: string | null;
34
+ enabled: boolean;
35
+ scope: "all" | "agent" | "profile" | "provider";
36
+ scopeFilterName: string | null;
37
+ pollIntervalMs: number;
38
+ viewportLines: number;
39
+ idleAfterSeconds: number;
40
+ condition: {
41
+ type: "contains" | "regex" | "not_contains";
42
+ pattern: string;
43
+ flags?: string;
44
+ };
45
+ cooldownMs: number;
46
+ cooldownMode: "time" | "until_clear";
47
+ eventName: string;
48
+ }[]>;
49
+ declare class WatchersCodec implements TemplateSectionCodec<WatchersSection> {
50
+ readonly declaration: {
51
+ readonly section: "watchers";
52
+ readonly reads: readonly ["agentNameToId", "profileNameToId", "selectedProfilesByFamily"];
53
+ readonly writes: readonly ["watcherIdMap"];
54
+ readonly requiresState: readonly ["existingDataCleared"];
55
+ readonly modes: readonly ["replace", "create"];
56
+ };
57
+ pick(payload: ParsedTemplatePayload): WatchersSection;
58
+ build(): never[];
59
+ apply(watchers: WatchersSection, ctx: ImportContext, _mode: PipelineMode, rt: CodecApplyRuntime): Promise<CodecApplyResult>;
60
+ }
61
+ export declare const watchersCodec: WatchersCodec;
62
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.watchersCodec = void 0;
4
+ exports.buildExportWatchers = buildExportWatchers;
5
+ const project_runtime_helpers_1 = require("../../helpers/project-runtime.helpers");
6
+ async function buildExportWatchers(watchers, agents, profiles, storage) {
7
+ return Promise.all(watchers.map(async (watcher) => {
8
+ let scopeFilterName = null;
9
+ if (watcher.scopeFilterId) {
10
+ switch (watcher.scope) {
11
+ case 'agent':
12
+ scopeFilterName =
13
+ agents.find((agent) => agent.id === watcher.scopeFilterId)?.name ?? null;
14
+ break;
15
+ case 'profile':
16
+ scopeFilterName =
17
+ profiles.find((profile) => profile.id === watcher.scopeFilterId)?.name ?? null;
18
+ break;
19
+ case 'provider':
20
+ try {
21
+ scopeFilterName = (await storage.getProvider(watcher.scopeFilterId))?.name ?? null;
22
+ }
23
+ catch {
24
+ scopeFilterName = null;
25
+ }
26
+ break;
27
+ }
28
+ }
29
+ return {
30
+ id: watcher.id,
31
+ name: watcher.name,
32
+ description: watcher.description,
33
+ enabled: watcher.enabled,
34
+ scope: watcher.scope,
35
+ scopeFilterName,
36
+ pollIntervalMs: watcher.pollIntervalMs,
37
+ viewportLines: watcher.viewportLines,
38
+ idleAfterSeconds: watcher.idleAfterSeconds,
39
+ condition: watcher.condition,
40
+ cooldownMs: watcher.cooldownMs,
41
+ cooldownMode: watcher.cooldownMode,
42
+ eventName: watcher.eventName,
43
+ };
44
+ }));
45
+ }
46
+ class WatchersCodec {
47
+ constructor() {
48
+ this.declaration = {
49
+ section: 'watchers',
50
+ reads: ['agentNameToId', 'profileNameToId', 'selectedProfilesByFamily'],
51
+ writes: ['watcherIdMap'],
52
+ requiresState: ['existingDataCleared'],
53
+ modes: ['replace', 'create'],
54
+ };
55
+ }
56
+ pick(payload) {
57
+ return payload.watchers;
58
+ }
59
+ build() {
60
+ return [];
61
+ }
62
+ async apply(watchers, ctx, _mode, rt) {
63
+ if (!rt.watchersService) {
64
+ return { section: 'watchers', log: { watchers: 0, skipped: 'no watchersService' } };
65
+ }
66
+ const maps = {
67
+ agentNameToId: new Map(Object.entries(ctx.get('agentNameToId'))),
68
+ profileNameToId: ctx.get('profileNameToId'),
69
+ providerNameToId: rt.available ?? new Map(),
70
+ profileNameRemapMap: ctx.get('selectedProfilesByFamily').profileNameRemapMap,
71
+ };
72
+ const { created, watcherIdMap } = await (0, project_runtime_helpers_1.createWatchersFromPayloadWithHelper)(rt.projectId, watchers, maps, rt.watchersService);
73
+ ctx.set('watcherIdMap', watcherIdMap);
74
+ return { section: 'watchers', log: { watchers: created } };
75
+ }
76
+ }
77
+ exports.watchersCodec = new WatchersCodec();
78
+ //# sourceMappingURL=watchers.codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"watchers.codec.js","sourceRoot":"","sources":["../../../../../src/modules/projects/template-codec/codecs/watchers.codec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { SelectedProfilesByFamily } from './template-section-codec';
2
+ export interface ImportContextValues {
3
+ statusIdMap: Record<string, string>;
4
+ promptIdMap: Record<string, string>;
5
+ profileIdMap: Record<string, string>;
6
+ profileNameToId: Map<string, string>;
7
+ configLookupMap: Map<string, string>;
8
+ agentIdMap: Record<string, string>;
9
+ agentNameToId: Record<string, string>;
10
+ oldAgentIdToName: Map<string, string>;
11
+ profileNameRemapMap: Map<string, string>;
12
+ selectedProfilesByFamily: SelectedProfilesByFamily;
13
+ parkedByOldAgentId: Map<string, string[]>;
14
+ templateLabelToStatusId: Map<string, string>;
15
+ statusLabelToId: Map<string, string>;
16
+ createdPrompts: Array<{
17
+ id: string;
18
+ title: string;
19
+ }>;
20
+ watcherIdMap: Record<string, string>;
21
+ subscriberIdMap: Record<string, string>;
22
+ }
23
+ export type ImportContextKey = keyof ImportContextValues;
24
+ export type StorageStateFlag = 'existingDataCleared' | 'statusesPersisted' | 'promptsPersisted' | 'profilesPersisted' | 'agentsPersisted' | 'epicsLoaded';
25
+ export declare class ImportContextError extends Error {
26
+ constructor(message: string);
27
+ }
28
+ export declare class ImportContext {
29
+ private readonly values;
30
+ private readonly states;
31
+ constructor(seed?: Partial<ImportContextValues>, seedStates?: readonly StorageStateFlag[]);
32
+ set<K extends ImportContextKey>(key: K, value: ImportContextValues[K]): void;
33
+ get<K extends ImportContextKey>(key: K): ImportContextValues[K];
34
+ has(key: ImportContextKey): boolean;
35
+ markState(state: StorageStateFlag): void;
36
+ hasState(state: StorageStateFlag): boolean;
37
+ requireState(state: StorageStateFlag): void;
38
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportContext = exports.ImportContextError = void 0;
4
+ class ImportContextError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = 'ImportContextError';
8
+ }
9
+ }
10
+ exports.ImportContextError = ImportContextError;
11
+ class ImportContext {
12
+ constructor(seed, seedStates) {
13
+ this.values = new Map();
14
+ this.states = new Set();
15
+ if (seed) {
16
+ for (const [key, value] of Object.entries(seed)) {
17
+ if (value !== undefined)
18
+ this.values.set(key, value);
19
+ }
20
+ }
21
+ for (const state of seedStates ?? [])
22
+ this.states.add(state);
23
+ }
24
+ set(key, value) {
25
+ this.values.set(key, value);
26
+ }
27
+ get(key) {
28
+ if (!this.values.has(key)) {
29
+ throw new ImportContextError(`ImportContext read-before-write: "${key}" was read before any codec wrote it`);
30
+ }
31
+ return this.values.get(key);
32
+ }
33
+ has(key) {
34
+ return this.values.has(key);
35
+ }
36
+ markState(state) {
37
+ this.states.add(state);
38
+ }
39
+ hasState(state) {
40
+ return this.states.has(state);
41
+ }
42
+ requireState(state) {
43
+ if (!this.states.has(state)) {
44
+ throw new ImportContextError(`ImportContext missing required storage state: "${state}"`);
45
+ }
46
+ }
47
+ }
48
+ exports.ImportContext = ImportContext;
49
+ //# sourceMappingURL=import-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-context.js","sourceRoot":"","sources":["../../../../src/modules/projects/template-codec/import-context.ts"],"names":[],"mappings":";;;AA0DA,MAAa,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AALD,gDAKC;AAED,MAAa,aAAa;IASxB,YAAY,IAAmC,EAAE,UAAwC;QARxE,WAAM,GAAG,IAAI,GAAG,EAA6B,CAAC;QAC9C,WAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAQpD,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAkC,EAAE,CAAC;gBACjF,IAAI,KAAK,KAAK,SAAS;oBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,UAAU,IAAI,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED,GAAG,CAA6B,GAAM,EAAE,KAA6B;QACnE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAGD,GAAG,CAA6B,GAAM;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,kBAAkB,CAC1B,qCAAqC,GAAG,sCAAsC,CAC/E,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAA2B,CAAC;IACxD,CAAC;IAED,GAAG,CAAC,GAAqB;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS,CAAC,KAAuB;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,KAAuB;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAGD,YAAY,CAAC,KAAuB;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,kBAAkB,CAAC,kDAAkD,KAAK,GAAG,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF;AAlDD,sCAkDC"}
@@ -0,0 +1,17 @@
1
+ import { ImportContext } from './import-context';
2
+ import type { ImportContextKey, StorageStateFlag } from './import-context';
3
+ import type { CodecApplyResult, CodecApplyRuntime, ParsedTemplatePayload, PipelineMode, TemplateSectionCodec } from './template-section-codec';
4
+ export declare class TemplateTopologyError extends Error {
5
+ constructor(message: string);
6
+ }
7
+ export interface TopologySeed {
8
+ readonly seededKeys?: readonly ImportContextKey[];
9
+ readonly seededStates?: readonly StorageStateFlag[];
10
+ }
11
+ export declare class TemplatePipeline {
12
+ private readonly codecs;
13
+ constructor(codecs?: readonly TemplateSectionCodec[]);
14
+ static assertValidTopology(codecs: readonly TemplateSectionCodec[], seed?: TopologySeed): void;
15
+ private static assertAcyclic;
16
+ applySections(sectionIds: readonly string[], payload: ParsedTemplatePayload, ctx: ImportContext, mode: PipelineMode, rt: CodecApplyRuntime): Promise<CodecApplyResult[]>;
17
+ }