crewly 1.20.133 → 1.20.135

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 (270) hide show
  1. package/config/skills/agent/core/block-task/SKILL.md +16 -3
  2. package/dist/backend/backend/src/constants.d.ts +82 -0
  3. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  4. package/dist/backend/backend/src/constants.js +87 -0
  5. package/dist/backend/backend/src/constants.js.map +1 -1
  6. package/dist/backend/backend/src/controllers/bundle/bundle.controller.d.ts +44 -0
  7. package/dist/backend/backend/src/controllers/bundle/bundle.controller.d.ts.map +1 -0
  8. package/dist/backend/backend/src/controllers/bundle/bundle.controller.js +122 -0
  9. package/dist/backend/backend/src/controllers/bundle/bundle.controller.js.map +1 -0
  10. package/dist/backend/backend/src/controllers/bundle/bundle.routes.d.ts +25 -0
  11. package/dist/backend/backend/src/controllers/bundle/bundle.routes.d.ts.map +1 -0
  12. package/dist/backend/backend/src/controllers/bundle/bundle.routes.js +33 -0
  13. package/dist/backend/backend/src/controllers/bundle/bundle.routes.js.map +1 -0
  14. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +6 -1
  15. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  16. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +9 -2
  17. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  18. package/dist/backend/backend/src/index.d.ts.map +1 -1
  19. package/dist/backend/backend/src/index.js +28 -0
  20. package/dist/backend/backend/src/index.js.map +1 -1
  21. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  22. package/dist/backend/backend/src/routes/api.routes.js +4 -0
  23. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  24. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +43 -7
  25. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  26. package/dist/backend/backend/src/services/agent/agent-registration.service.js +144 -51
  27. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  28. package/dist/backend/backend/src/services/agent/registration-flow-registry.d.ts +92 -0
  29. package/dist/backend/backend/src/services/agent/registration-flow-registry.d.ts.map +1 -0
  30. package/dist/backend/backend/src/services/agent/registration-flow-registry.js +121 -0
  31. package/dist/backend/backend/src/services/agent/registration-flow-registry.js.map +1 -0
  32. package/dist/backend/backend/src/services/agent/resumed-kickoff.d.ts +66 -0
  33. package/dist/backend/backend/src/services/agent/resumed-kickoff.d.ts.map +1 -0
  34. package/dist/backend/backend/src/services/agent/resumed-kickoff.js +72 -0
  35. package/dist/backend/backend/src/services/agent/resumed-kickoff.js.map +1 -0
  36. package/dist/backend/backend/src/services/bundle/bundle-apply.factory.d.ts +62 -0
  37. package/dist/backend/backend/src/services/bundle/bundle-apply.factory.d.ts.map +1 -0
  38. package/dist/backend/backend/src/services/bundle/bundle-apply.factory.js +173 -0
  39. package/dist/backend/backend/src/services/bundle/bundle-apply.factory.js.map +1 -0
  40. package/dist/backend/backend/src/services/bundle/bundle-apply.service.d.ts +359 -0
  41. package/dist/backend/backend/src/services/bundle/bundle-apply.service.d.ts.map +1 -0
  42. package/dist/backend/backend/src/services/bundle/bundle-apply.service.js +888 -0
  43. package/dist/backend/backend/src/services/bundle/bundle-apply.service.js.map +1 -0
  44. package/dist/backend/backend/src/services/bundle/bundle-catalog.d.ts +167 -0
  45. package/dist/backend/backend/src/services/bundle/bundle-catalog.d.ts.map +1 -0
  46. package/dist/backend/backend/src/services/bundle/bundle-catalog.js +248 -0
  47. package/dist/backend/backend/src/services/bundle/bundle-catalog.js.map +1 -0
  48. package/dist/backend/backend/src/services/bundle/bundle-connectors.d.ts +43 -0
  49. package/dist/backend/backend/src/services/bundle/bundle-connectors.d.ts.map +1 -0
  50. package/dist/backend/backend/src/services/bundle/bundle-connectors.js +57 -0
  51. package/dist/backend/backend/src/services/bundle/bundle-connectors.js.map +1 -0
  52. package/dist/backend/backend/src/services/bundle/bundle-deps.d.ts +37 -0
  53. package/dist/backend/backend/src/services/bundle/bundle-deps.d.ts.map +1 -0
  54. package/dist/backend/backend/src/services/bundle/bundle-deps.js +60 -0
  55. package/dist/backend/backend/src/services/bundle/bundle-deps.js.map +1 -0
  56. package/dist/backend/backend/src/services/bundle/bundle-manifest.d.ts +93 -0
  57. package/dist/backend/backend/src/services/bundle/bundle-manifest.d.ts.map +1 -0
  58. package/dist/backend/backend/src/services/bundle/bundle-manifest.js +532 -0
  59. package/dist/backend/backend/src/services/bundle/bundle-manifest.js.map +1 -0
  60. package/dist/backend/backend/src/services/bundle/bundle-placeholders.d.ts +100 -0
  61. package/dist/backend/backend/src/services/bundle/bundle-placeholders.d.ts.map +1 -0
  62. package/dist/backend/backend/src/services/bundle/bundle-placeholders.js +183 -0
  63. package/dist/backend/backend/src/services/bundle/bundle-placeholders.js.map +1 -0
  64. package/dist/backend/backend/src/services/bundle/bundle-runtime.d.ts +36 -0
  65. package/dist/backend/backend/src/services/bundle/bundle-runtime.d.ts.map +1 -0
  66. package/dist/backend/backend/src/services/bundle/bundle-runtime.js +38 -0
  67. package/dist/backend/backend/src/services/bundle/bundle-runtime.js.map +1 -0
  68. package/dist/backend/backend/src/services/bundle/bundle-skill-installer.d.ts +105 -0
  69. package/dist/backend/backend/src/services/bundle/bundle-skill-installer.d.ts.map +1 -0
  70. package/dist/backend/backend/src/services/bundle/bundle-skill-installer.js +144 -0
  71. package/dist/backend/backend/src/services/bundle/bundle-skill-installer.js.map +1 -0
  72. package/dist/backend/backend/src/services/bundle/bundle-state.store.d.ts +48 -0
  73. package/dist/backend/backend/src/services/bundle/bundle-state.store.d.ts.map +1 -0
  74. package/dist/backend/backend/src/services/bundle/bundle-state.store.js +90 -0
  75. package/dist/backend/backend/src/services/bundle/bundle-state.store.js.map +1 -0
  76. package/dist/backend/backend/src/services/bundle/bundle-team.builder.d.ts +81 -0
  77. package/dist/backend/backend/src/services/bundle/bundle-team.builder.d.ts.map +1 -0
  78. package/dist/backend/backend/src/services/bundle/bundle-team.builder.js +172 -0
  79. package/dist/backend/backend/src/services/bundle/bundle-team.builder.js.map +1 -0
  80. package/dist/backend/backend/src/services/bundle/bundle-time.d.ts +59 -0
  81. package/dist/backend/backend/src/services/bundle/bundle-time.d.ts.map +1 -0
  82. package/dist/backend/backend/src/services/bundle/bundle-time.js +98 -0
  83. package/dist/backend/backend/src/services/bundle/bundle-time.js.map +1 -0
  84. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  85. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +5 -0
  86. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  87. package/dist/backend/backend/src/services/core/storage.service.js +1 -1
  88. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  89. package/dist/backend/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
  90. package/dist/backend/backend/src/services/core/teams-backup.service.js +4 -2
  91. package/dist/backend/backend/src/services/core/teams-backup.service.js.map +1 -1
  92. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.d.ts.map +1 -1
  93. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js +2 -0
  94. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.factory.js.map +1 -1
  95. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts +14 -2
  96. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -1
  97. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js +37 -1
  98. package/dist/backend/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -1
  99. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  100. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +9 -1
  101. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  102. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  103. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +8 -0
  104. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  105. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +21 -0
  106. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  107. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +85 -0
  108. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  109. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +32 -0
  110. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  111. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +60 -1
  112. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  113. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
  114. package/dist/backend/backend/src/services/template/template.service.js +5 -2
  115. package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
  116. package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
  117. package/dist/backend/backend/src/services/workflow/cron-task.service.js +4 -2
  118. package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
  119. package/dist/backend/backend/src/types/solution-bundle.types.d.ts +367 -0
  120. package/dist/backend/backend/src/types/solution-bundle.types.d.ts.map +1 -0
  121. package/dist/backend/backend/src/types/solution-bundle.types.js +17 -0
  122. package/dist/backend/backend/src/types/solution-bundle.types.js.map +1 -0
  123. package/dist/backend/backend/src/types/team-template.types.d.ts +8 -0
  124. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
  125. package/dist/backend/backend/src/types/team-template.types.js.map +1 -1
  126. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +37 -0
  127. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  128. package/dist/backend/backend/src/types/v2/work-item.types.js +33 -0
  129. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  130. package/dist/backend/build-info.json +2 -2
  131. package/dist/cli/backend/src/constants.d.ts +82 -0
  132. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  133. package/dist/cli/backend/src/constants.js +87 -0
  134. package/dist/cli/backend/src/constants.js.map +1 -1
  135. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +43 -7
  136. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  137. package/dist/cli/backend/src/services/agent/agent-registration.service.js +144 -51
  138. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  139. package/dist/cli/backend/src/services/agent/registration-flow-registry.d.ts +92 -0
  140. package/dist/cli/backend/src/services/agent/registration-flow-registry.d.ts.map +1 -0
  141. package/dist/cli/backend/src/services/agent/registration-flow-registry.js +121 -0
  142. package/dist/cli/backend/src/services/agent/registration-flow-registry.js.map +1 -0
  143. package/dist/cli/backend/src/services/agent/resumed-kickoff.d.ts +66 -0
  144. package/dist/cli/backend/src/services/agent/resumed-kickoff.d.ts.map +1 -0
  145. package/dist/cli/backend/src/services/agent/resumed-kickoff.js +72 -0
  146. package/dist/cli/backend/src/services/agent/resumed-kickoff.js.map +1 -0
  147. package/dist/cli/backend/src/services/bundle/bundle-apply.service.d.ts +359 -0
  148. package/dist/cli/backend/src/services/bundle/bundle-apply.service.d.ts.map +1 -0
  149. package/dist/cli/backend/src/services/bundle/bundle-apply.service.js +888 -0
  150. package/dist/cli/backend/src/services/bundle/bundle-apply.service.js.map +1 -0
  151. package/dist/cli/backend/src/services/bundle/bundle-catalog.d.ts +167 -0
  152. package/dist/cli/backend/src/services/bundle/bundle-catalog.d.ts.map +1 -0
  153. package/dist/cli/backend/src/services/bundle/bundle-catalog.js +248 -0
  154. package/dist/cli/backend/src/services/bundle/bundle-catalog.js.map +1 -0
  155. package/dist/cli/backend/src/services/bundle/bundle-deps.d.ts +37 -0
  156. package/dist/cli/backend/src/services/bundle/bundle-deps.d.ts.map +1 -0
  157. package/dist/cli/backend/src/services/bundle/bundle-deps.js +60 -0
  158. package/dist/cli/backend/src/services/bundle/bundle-deps.js.map +1 -0
  159. package/dist/cli/backend/src/services/bundle/bundle-manifest.d.ts +93 -0
  160. package/dist/cli/backend/src/services/bundle/bundle-manifest.d.ts.map +1 -0
  161. package/dist/cli/backend/src/services/bundle/bundle-manifest.js +532 -0
  162. package/dist/cli/backend/src/services/bundle/bundle-manifest.js.map +1 -0
  163. package/dist/cli/backend/src/services/bundle/bundle-placeholders.d.ts +100 -0
  164. package/dist/cli/backend/src/services/bundle/bundle-placeholders.d.ts.map +1 -0
  165. package/dist/cli/backend/src/services/bundle/bundle-placeholders.js +183 -0
  166. package/dist/cli/backend/src/services/bundle/bundle-placeholders.js.map +1 -0
  167. package/dist/cli/backend/src/services/bundle/bundle-runtime.d.ts +36 -0
  168. package/dist/cli/backend/src/services/bundle/bundle-runtime.d.ts.map +1 -0
  169. package/dist/cli/backend/src/services/bundle/bundle-runtime.js +38 -0
  170. package/dist/cli/backend/src/services/bundle/bundle-runtime.js.map +1 -0
  171. package/dist/cli/backend/src/services/bundle/bundle-skill-installer.d.ts +105 -0
  172. package/dist/cli/backend/src/services/bundle/bundle-skill-installer.d.ts.map +1 -0
  173. package/dist/cli/backend/src/services/bundle/bundle-skill-installer.js +144 -0
  174. package/dist/cli/backend/src/services/bundle/bundle-skill-installer.js.map +1 -0
  175. package/dist/cli/backend/src/services/bundle/bundle-state.store.d.ts +48 -0
  176. package/dist/cli/backend/src/services/bundle/bundle-state.store.d.ts.map +1 -0
  177. package/dist/cli/backend/src/services/bundle/bundle-state.store.js +90 -0
  178. package/dist/cli/backend/src/services/bundle/bundle-state.store.js.map +1 -0
  179. package/dist/cli/backend/src/services/bundle/bundle-team.builder.d.ts +81 -0
  180. package/dist/cli/backend/src/services/bundle/bundle-team.builder.d.ts.map +1 -0
  181. package/dist/cli/backend/src/services/bundle/bundle-team.builder.js +172 -0
  182. package/dist/cli/backend/src/services/bundle/bundle-team.builder.js.map +1 -0
  183. package/dist/cli/backend/src/services/bundle/bundle-time.d.ts +59 -0
  184. package/dist/cli/backend/src/services/bundle/bundle-time.d.ts.map +1 -0
  185. package/dist/cli/backend/src/services/bundle/bundle-time.js +98 -0
  186. package/dist/cli/backend/src/services/bundle/bundle-time.js.map +1 -0
  187. package/dist/cli/backend/src/services/core/storage.service.js +1 -1
  188. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  189. package/dist/cli/backend/src/services/core/teams-backup.service.d.ts.map +1 -1
  190. package/dist/cli/backend/src/services/core/teams-backup.service.js +4 -2
  191. package/dist/cli/backend/src/services/core/teams-backup.service.js.map +1 -1
  192. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +72 -0
  193. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -0
  194. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +389 -0
  195. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -0
  196. package/dist/cli/backend/src/services/messaging/index.d.ts +15 -0
  197. package/dist/cli/backend/src/services/messaging/index.d.ts.map +1 -0
  198. package/dist/cli/backend/src/services/messaging/index.js +20 -0
  199. package/dist/cli/backend/src/services/messaging/index.js.map +1 -0
  200. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +224 -0
  201. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -0
  202. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +969 -0
  203. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -0
  204. package/dist/cli/backend/src/services/messaging/response-router.service.d.ts +110 -0
  205. package/dist/cli/backend/src/services/messaging/response-router.service.d.ts.map +1 -0
  206. package/dist/cli/backend/src/services/messaging/response-router.service.js +268 -0
  207. package/dist/cli/backend/src/services/messaging/response-router.service.js.map +1 -0
  208. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts +14 -2
  209. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.d.ts.map +1 -1
  210. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js +37 -1
  211. package/dist/cli/backend/src/services/onboarding/onboarding-checklist.service.js.map +1 -1
  212. package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.d.ts +133 -0
  213. package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.d.ts.map +1 -0
  214. package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.js +232 -0
  215. package/dist/cli/backend/src/services/orchestrator/commitment-approval-guard.js.map +1 -0
  216. package/dist/cli/backend/src/services/skill/skill-catalog.service.d.ts +277 -0
  217. package/dist/cli/backend/src/services/skill/skill-catalog.service.d.ts.map +1 -0
  218. package/dist/cli/backend/src/services/skill/skill-catalog.service.js +708 -0
  219. package/dist/cli/backend/src/services/skill/skill-catalog.service.js.map +1 -0
  220. package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.d.ts +243 -0
  221. package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.d.ts.map +1 -0
  222. package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.js +439 -0
  223. package/dist/cli/backend/src/services/skill-setup/skill-install-job.service.js.map +1 -0
  224. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +21 -0
  225. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  226. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +85 -0
  227. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  228. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +32 -0
  229. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  230. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +60 -1
  231. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  232. package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -1
  233. package/dist/cli/backend/src/services/template/template.service.js +5 -2
  234. package/dist/cli/backend/src/services/template/template.service.js.map +1 -1
  235. package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts +316 -0
  236. package/dist/cli/backend/src/services/workflow/cron-task.service.d.ts.map +1 -0
  237. package/dist/cli/backend/src/services/workflow/cron-task.service.js +1043 -0
  238. package/dist/cli/backend/src/services/workflow/cron-task.service.js.map +1 -0
  239. package/dist/cli/backend/src/types/cron-task.types.d.ts +95 -0
  240. package/dist/cli/backend/src/types/cron-task.types.d.ts.map +1 -0
  241. package/dist/cli/backend/src/types/cron-task.types.js +10 -0
  242. package/dist/cli/backend/src/types/cron-task.types.js.map +1 -0
  243. package/dist/cli/backend/src/types/solution-bundle.types.d.ts +367 -0
  244. package/dist/cli/backend/src/types/solution-bundle.types.d.ts.map +1 -0
  245. package/dist/cli/backend/src/types/solution-bundle.types.js +17 -0
  246. package/dist/cli/backend/src/types/solution-bundle.types.js.map +1 -0
  247. package/dist/cli/backend/src/types/team-template.types.d.ts +8 -0
  248. package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
  249. package/dist/cli/backend/src/types/team-template.types.js.map +1 -1
  250. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +37 -0
  251. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  252. package/dist/cli/backend/src/types/v2/work-item.types.js +33 -0
  253. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  254. package/dist/cli/cli/src/commands/deploy-bundle.d.ts +160 -0
  255. package/dist/cli/cli/src/commands/deploy-bundle.d.ts.map +1 -0
  256. package/dist/cli/cli/src/commands/deploy-bundle.js +386 -0
  257. package/dist/cli/cli/src/commands/deploy-bundle.js.map +1 -0
  258. package/dist/cli/cli/src/commands/onboard.d.ts +32 -1
  259. package/dist/cli/cli/src/commands/onboard.d.ts.map +1 -1
  260. package/dist/cli/cli/src/commands/onboard.js +80 -3
  261. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  262. package/dist/cli/cli/src/constants.d.ts +5 -0
  263. package/dist/cli/cli/src/constants.d.ts.map +1 -1
  264. package/dist/cli/cli/src/constants.js +5 -0
  265. package/dist/cli/cli/src/constants.js.map +1 -1
  266. package/dist/cli/cli/src/index.js +15 -0
  267. package/dist/cli/cli/src/index.js.map +1 -1
  268. package/frontend/dist/assets/{index-e6c403b6.js → index-2c7ee4a6.js} +276 -276
  269. package/frontend/dist/index.html +1 -1
  270. package/package.json +1 -1
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Bundle deployment store — `<crewlyHome>/bundles/<templateId>.json`.
3
+ *
4
+ * One file per deployed template. The apply engine writes it after every
5
+ * step, so a crash or a failed step leaves an accurate record and a re-run
6
+ * resumes from it. Writes are atomic (temp file + rename).
7
+ *
8
+ * @module services/bundle/bundle-state.store
9
+ */
10
+ import type { BundleDeployment } from '../../types/solution-bundle.types.js';
11
+ /**
12
+ * Persists bundle deployments.
13
+ */
14
+ export declare class BundleDeploymentStore {
15
+ private readonly dir;
16
+ /**
17
+ * @param crewlyHome - Crewly home directory
18
+ */
19
+ constructor(crewlyHome: string);
20
+ /**
21
+ * File of a template's deployment.
22
+ *
23
+ * @param templateId - Template id (kebab case)
24
+ * @returns Absolute path
25
+ * @throws Error for an id that is not a safe file name
26
+ */
27
+ fileFor(templateId: string): string;
28
+ /**
29
+ * Read a deployment.
30
+ *
31
+ * @param templateId - Template id
32
+ * @returns The deployment, or null when the template was never deployed (or the file is unreadable)
33
+ */
34
+ read(templateId: string): Promise<BundleDeployment | null>;
35
+ /**
36
+ * Write a deployment atomically.
37
+ *
38
+ * @param deployment - Deployment
39
+ */
40
+ write(deployment: BundleDeployment): Promise<void>;
41
+ /**
42
+ * Every stored deployment.
43
+ *
44
+ * @returns Deployments (unreadable files are skipped)
45
+ */
46
+ list(): Promise<BundleDeployment[]>;
47
+ }
48
+ //# sourceMappingURL=bundle-state.store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-state.store.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-state.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAM7E;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B;;OAEG;gBACS,UAAU,EAAE,MAAM;IAI9B;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAKnC;;;;;OAKG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAShE;;;;OAIG;IACG,KAAK,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAiB1C"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Bundle deployment store — `<crewlyHome>/bundles/<templateId>.json`.
3
+ *
4
+ * One file per deployed template. The apply engine writes it after every
5
+ * step, so a crash or a failed step leaves an accurate record and a re-run
6
+ * resumes from it. Writes are atomic (temp file + rename).
7
+ *
8
+ * @module services/bundle/bundle-state.store
9
+ */
10
+ import { promises as fs } from 'fs';
11
+ import * as path from 'path';
12
+ import { BUNDLE_CONSTANTS } from '../../constants.js';
13
+ import { atomicWriteFile } from '../../utils/file-io.utils.js';
14
+ /** Template ids become file names; keep them to safe characters. */
15
+ const SAFE_ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
16
+ /**
17
+ * Persists bundle deployments.
18
+ */
19
+ export class BundleDeploymentStore {
20
+ dir;
21
+ /**
22
+ * @param crewlyHome - Crewly home directory
23
+ */
24
+ constructor(crewlyHome) {
25
+ this.dir = path.join(crewlyHome, BUNDLE_CONSTANTS.STATE_DIR);
26
+ }
27
+ /**
28
+ * File of a template's deployment.
29
+ *
30
+ * @param templateId - Template id (kebab case)
31
+ * @returns Absolute path
32
+ * @throws Error for an id that is not a safe file name
33
+ */
34
+ fileFor(templateId) {
35
+ if (!SAFE_ID_PATTERN.test(templateId))
36
+ throw new Error(`Invalid template id: ${templateId}`);
37
+ return path.join(this.dir, `${templateId}.json`);
38
+ }
39
+ /**
40
+ * Read a deployment.
41
+ *
42
+ * @param templateId - Template id
43
+ * @returns The deployment, or null when the template was never deployed (or the file is unreadable)
44
+ */
45
+ async read(templateId) {
46
+ try {
47
+ const parsed = JSON.parse(await fs.readFile(this.fileFor(templateId), 'utf-8'));
48
+ return parsed && parsed.templateId === templateId && Array.isArray(parsed.steps) ? parsed : null;
49
+ }
50
+ catch {
51
+ return null;
52
+ }
53
+ }
54
+ /**
55
+ * Write a deployment atomically.
56
+ *
57
+ * @param deployment - Deployment
58
+ */
59
+ async write(deployment) {
60
+ await fs.mkdir(this.dir, { recursive: true });
61
+ await atomicWriteFile(this.fileFor(deployment.templateId), JSON.stringify(deployment, null, 2));
62
+ }
63
+ /**
64
+ * Every stored deployment.
65
+ *
66
+ * @returns Deployments (unreadable files are skipped)
67
+ */
68
+ async list() {
69
+ let entries;
70
+ try {
71
+ entries = await fs.readdir(this.dir);
72
+ }
73
+ catch {
74
+ return [];
75
+ }
76
+ const out = [];
77
+ for (const entry of entries.sort()) {
78
+ if (!entry.endsWith('.json'))
79
+ continue;
80
+ const id = entry.slice(0, -'.json'.length);
81
+ if (!SAFE_ID_PATTERN.test(id))
82
+ continue;
83
+ const deployment = await this.read(id);
84
+ if (deployment)
85
+ out.push(deployment);
86
+ }
87
+ return out;
88
+ }
89
+ }
90
+ //# sourceMappingURL=bundle-state.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-state.store.js","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-state.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,oEAAoE;AACpE,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACf,GAAG,CAAS;IAE7B;;OAEG;IACH,YAAY,UAAkB;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,UAAkB;QACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;QAC7F,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,UAAkB;QAC3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAqB,CAAC;YACpG,OAAO,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACnG,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,UAA4B;QACtC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,GAAuB,EAAE,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACvC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,UAAU;gBAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Builds the Crewly teams of a solution bundle.
3
+ *
4
+ * Mirrors `TemplateService.createTeamFromTemplate` (members per role,
5
+ * hierarchy wiring) with what bundles need on top: placeholder filling,
6
+ * deterministic team ids (so every re-run and the CLI find the same team),
7
+ * ASCII session names like the onboarding starters, and one runtime for
8
+ * every member.
9
+ *
10
+ * @module services/bundle/bundle-team.builder
11
+ */
12
+ import type { Team, TeamMember } from '../../types/index.js';
13
+ import type { BundleTemplate } from '../../types/solution-bundle.types.js';
14
+ import type { NormalizedBundleTeam } from './bundle-manifest.js';
15
+ import { type BundleAnswers } from './bundle-placeholders.js';
16
+ /**
17
+ * Lower-case ASCII slug.
18
+ *
19
+ * @param value - Any text
20
+ * @returns Slug (may be empty for non-ASCII text)
21
+ */
22
+ export declare function toSlug(value: string): string;
23
+ /**
24
+ * The deterministic id of a bundle team: the template id for the main
25
+ * team, `<templateId>--<key>` for extra teams.
26
+ *
27
+ * @param templateId - Template id
28
+ * @param teamKey - Team key
29
+ * @returns Team id
30
+ */
31
+ export declare function bundleTeamId(templateId: string, teamKey: string): string;
32
+ /**
33
+ * The member name of the n-th member of a role.
34
+ *
35
+ * @param defaultName - Role default name
36
+ * @param count - Members in the role
37
+ * @param index - 0-based index
38
+ * @returns Name (`Writer`, or `Writer1`, `Writer2` …)
39
+ */
40
+ export declare function memberNameFor(defaultName: string, count: number, index: number): string;
41
+ /**
42
+ * Values for a team's placeholders: the answers plus the built-ins.
43
+ *
44
+ * @param answers - Owner answers
45
+ * @param teamName - Filled team name
46
+ * @param leadName - The lead member's name
47
+ * @returns Placeholder values
48
+ */
49
+ export declare function teamPlaceholderValues(answers: BundleAnswers, teamName: string, leadName: string): BundleAnswers;
50
+ /** Input of {@link buildBundleTeam}. */
51
+ export interface BuildBundleTeamInput {
52
+ template: BundleTemplate;
53
+ team: NormalizedBundleTeam;
54
+ answers: BundleAnswers;
55
+ runtime: string;
56
+ now: Date;
57
+ }
58
+ /**
59
+ * Build one bundle team (not saved).
60
+ *
61
+ * @param input - Template, normalized team, answers, runtime, clock
62
+ * @returns The team, ready for `StorageService.saveTeam`
63
+ * @throws BundlePlaceholderError when a text keeps an unfilled placeholder
64
+ */
65
+ export declare function buildBundleTeam(input: BuildBundleTeamInput): Team;
66
+ /**
67
+ * Find the member a ref names in a built team.
68
+ *
69
+ * @param team - Saved team
70
+ * @param role - Role id (the first member of the role is returned)
71
+ * @returns The member, or undefined
72
+ */
73
+ export declare function memberForRole(team: Team, role: string): TeamMember | undefined;
74
+ /**
75
+ * The session name a member runs under (its permanent agent id).
76
+ *
77
+ * @param member - Member
78
+ * @returns Session name
79
+ */
80
+ export declare function memberSession(member: TeamMember): string;
81
+ //# sourceMappingURL=bundle-team.builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-team.builder.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-team.builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAkB,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAIxE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CAE/G;AAED,wCAAwC;AACxC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,IAAI,CAAC;CACX;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAmFjE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAExD"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Builds the Crewly teams of a solution bundle.
3
+ *
4
+ * Mirrors `TemplateService.createTeamFromTemplate` (members per role,
5
+ * hierarchy wiring) with what bundles need on top: placeholder filling,
6
+ * deterministic team ids (so every re-run and the CLI find the same team),
7
+ * ASCII session names like the onboarding starters, and one runtime for
8
+ * every member.
9
+ *
10
+ * @module services/bundle/bundle-team.builder
11
+ */
12
+ import { randomUUID } from 'crypto';
13
+ import { BUNDLE_CONSTANTS } from '../../constants.js';
14
+ import { fillPlaceholders } from './bundle-placeholders.js';
15
+ /**
16
+ * Lower-case ASCII slug.
17
+ *
18
+ * @param value - Any text
19
+ * @returns Slug (may be empty for non-ASCII text)
20
+ */
21
+ export function toSlug(value) {
22
+ return value
23
+ .toLowerCase()
24
+ .replace(/[^a-z0-9]+/g, '-')
25
+ .replace(/^-+|-+$/g, '');
26
+ }
27
+ /**
28
+ * The deterministic id of a bundle team: the template id for the main
29
+ * team, `<templateId>--<key>` for extra teams.
30
+ *
31
+ * @param templateId - Template id
32
+ * @param teamKey - Team key
33
+ * @returns Team id
34
+ */
35
+ export function bundleTeamId(templateId, teamKey) {
36
+ return teamKey === BUNDLE_CONSTANTS.MAIN_TEAM_KEY
37
+ ? templateId
38
+ : `${templateId}${BUNDLE_CONSTANTS.TEAM_ID_SEPARATOR}${teamKey}`;
39
+ }
40
+ /**
41
+ * The member name of the n-th member of a role.
42
+ *
43
+ * @param defaultName - Role default name
44
+ * @param count - Members in the role
45
+ * @param index - 0-based index
46
+ * @returns Name (`Writer`, or `Writer1`, `Writer2` …)
47
+ */
48
+ export function memberNameFor(defaultName, count, index) {
49
+ return count > 1 ? `${defaultName}${index + 1}` : defaultName;
50
+ }
51
+ /**
52
+ * Values for a team's placeholders: the answers plus the built-ins.
53
+ *
54
+ * @param answers - Owner answers
55
+ * @param teamName - Filled team name
56
+ * @param leadName - The lead member's name
57
+ * @returns Placeholder values
58
+ */
59
+ export function teamPlaceholderValues(answers, teamName, leadName) {
60
+ return { ...answers, team_name: teamName, lead_name: leadName };
61
+ }
62
+ /**
63
+ * Build one bundle team (not saved).
64
+ *
65
+ * @param input - Template, normalized team, answers, runtime, clock
66
+ * @returns The team, ready for `StorageService.saveTeam`
67
+ * @throws BundlePlaceholderError when a text keeps an unfilled placeholder
68
+ */
69
+ export function buildBundleTeam(input) {
70
+ const { template, team, answers, runtime, now } = input;
71
+ const iso = now.toISOString();
72
+ const teamId = bundleTeamId(template.id, team.key);
73
+ const teamSlug = toSlug(teamId) || 'team';
74
+ const leadRole = team.roles.find((r) => r.role === team.leadRole);
75
+ const leadName = leadRole ? memberNameFor(leadRole.defaultName, leadRole.count, 0) : '';
76
+ const nameValues = { ...answers, lead_name: leadName, team_name: '' };
77
+ const teamName = fillPlaceholders(team.name, nameValues, `team ${team.key} name`);
78
+ const values = teamPlaceholderValues(answers, teamName, leadName);
79
+ const members = [];
80
+ const idsByRole = new Map();
81
+ for (const role of team.roles) {
82
+ const ids = [];
83
+ for (let i = 0; i < role.count; i++) {
84
+ const id = randomUUID();
85
+ const name = memberNameFor(role.defaultName, role.count, i);
86
+ const sessionName = `${teamSlug}-${toSlug(name) || 'member'}-${id.slice(0, 8)}`;
87
+ const where = `${team.key}/${role.role}`;
88
+ members.push({
89
+ id,
90
+ name,
91
+ sessionName,
92
+ agentId: sessionName,
93
+ role: role.role,
94
+ systemPrompt: fillPlaceholders(role.promptAdditions ?? '', values, `${where} promptAdditions`),
95
+ agentStatus: 'inactive',
96
+ workingStatus: 'idle',
97
+ runtimeType: runtime,
98
+ hierarchyLevel: role.hierarchyLevel,
99
+ canDelegate: role.canDelegate,
100
+ skillOverrides: role.defaultSkills.length > 0 ? [...role.defaultSkills] : undefined,
101
+ excludedRoleSkills: role.excludedSkills,
102
+ createdAt: iso,
103
+ updatedAt: iso,
104
+ jobTitle: role.jobTitle ?? role.label,
105
+ jobDescription: role.jobDescription ? fillPlaceholders(role.jobDescription, values, `${where} jobDescription`) : undefined,
106
+ ownershipScope: role.ownershipScope,
107
+ responsibilityType: role.responsibilityType,
108
+ autonomyLevel: role.autonomyLevel,
109
+ expertId: role.expertId,
110
+ domainSOP: role.domainSOP,
111
+ riskPolicy: role.riskPolicy,
112
+ });
113
+ ids.push(id);
114
+ }
115
+ idsByRole.set(role.role, ids);
116
+ }
117
+ // Hierarchy: every member of a role reports to the first member of its parent role.
118
+ for (const role of team.roles) {
119
+ if (!role.reportsTo)
120
+ continue;
121
+ const parentId = idsByRole.get(role.reportsTo)?.[0];
122
+ if (!parentId)
123
+ continue;
124
+ const childIds = idsByRole.get(role.role) ?? [];
125
+ for (const childId of childIds) {
126
+ const child = members.find((m) => m.id === childId);
127
+ if (child)
128
+ child.parentMemberId = parentId;
129
+ }
130
+ const parent = members.find((m) => m.id === parentId);
131
+ if (parent)
132
+ parent.subordinateIds = [...(parent.subordinateIds ?? []), ...childIds];
133
+ }
134
+ const leaderId = idsByRole.get(team.leadRole)?.[0];
135
+ const description = team.description ? fillPlaceholders(team.description, values, `team ${team.key} description`) : undefined;
136
+ const mission = team.key === BUNDLE_CONSTANTS.MAIN_TEAM_KEY && template.mission
137
+ ? fillPlaceholders(template.mission, values, 'mission')
138
+ : undefined;
139
+ return {
140
+ id: teamId,
141
+ name: teamName,
142
+ ...(description ? { description } : {}),
143
+ members,
144
+ projectIds: [],
145
+ hierarchical: template.hierarchical ?? true,
146
+ ...(leaderId ? { leaderId, leaderIds: [leaderId] } : {}),
147
+ templateId: template.id,
148
+ ...(mission ? { mission } : {}),
149
+ createdAt: iso,
150
+ updatedAt: iso,
151
+ };
152
+ }
153
+ /**
154
+ * Find the member a ref names in a built team.
155
+ *
156
+ * @param team - Saved team
157
+ * @param role - Role id (the first member of the role is returned)
158
+ * @returns The member, or undefined
159
+ */
160
+ export function memberForRole(team, role) {
161
+ return team.members.find((m) => m.role === role);
162
+ }
163
+ /**
164
+ * The session name a member runs under (its permanent agent id).
165
+ *
166
+ * @param member - Member
167
+ * @returns Session name
168
+ */
169
+ export function memberSession(member) {
170
+ return member.agentId || member.sessionName;
171
+ }
172
+ //# sourceMappingURL=bundle-team.builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-team.builder.js","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-team.builder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,0BAA0B,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,KAAK;SACT,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,OAAe;IAC9D,OAAO,OAAO,KAAK,gBAAgB,CAAC,aAAa;QAC/C,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,GAAG,UAAU,GAAG,gBAAgB,CAAC,iBAAiB,GAAG,OAAO,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB,EAAE,KAAa,EAAE,KAAa;IAC7E,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAsB,EAAE,QAAgB,EAAE,QAAgB;IAC9F,OAAO,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAClE,CAAC;AAWD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACxD,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,UAAU,GAAG,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACtE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;IAClF,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAElE,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,GAAG,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAChF,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE;gBACF,IAAI;gBACJ,WAAW;gBACX,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAsB;gBACjC,YAAY,EAAE,gBAAgB,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,KAAK,kBAAkB,CAAC;gBAC9F,WAAW,EAAE,UAAU;gBACvB,aAAa,EAAE,MAAM;gBACrB,WAAW,EAAE,OAAoC;gBACjD,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS;gBACnF,kBAAkB,EAAE,IAAI,CAAC,cAAc;gBACvC,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;gBACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK;gBACrC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC1H,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,oFAAoF;IACpF,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,SAAS;QAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACpD,IAAI,KAAK;gBAAE,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC7C,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QACtD,IAAI,MAAM;YAAE,MAAM,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9H,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,KAAK,gBAAgB,CAAC,aAAa,IAAI,QAAQ,CAAC,OAAO;QAC7E,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;QACvD,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,QAAQ;QACd,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,OAAO;QACP,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,IAAI;QAC3C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,IAAU,EAAE,IAAY;IACpD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,MAAkB;IAC9C,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Time helpers for bundle first-week tasks: "day 2 at 09:00 in the
3
+ * bundle's timezone" as a UTC instant, independent of the server's own
4
+ * timezone (hosted servers run in UTC; owners mostly do not).
5
+ *
6
+ * @module services/bundle/bundle-time
7
+ */
8
+ /** Calendar date and time in some timezone. */
9
+ interface ZonedParts {
10
+ year: number;
11
+ month: number;
12
+ day: number;
13
+ hour: number;
14
+ minute: number;
15
+ }
16
+ /**
17
+ * Whether a string is a valid IANA timezone.
18
+ *
19
+ * @param tz - Candidate
20
+ * @returns True when Intl accepts it
21
+ */
22
+ export declare function isValidTimezone(tz: string): boolean;
23
+ /**
24
+ * Calendar parts of an instant in a timezone.
25
+ *
26
+ * @param date - Instant
27
+ * @param tz - IANA timezone
28
+ * @returns Year, month (1-12), day, hour, minute
29
+ */
30
+ export declare function zonedParts(date: Date, tz: string): ZonedParts;
31
+ /**
32
+ * The UTC instant of a wall-clock time in a timezone.
33
+ *
34
+ * Starts from the wall time read as UTC, then corrects by the zone's offset
35
+ * at that instant (twice, which settles DST edges).
36
+ *
37
+ * @param wall - Calendar date and time in `tz`
38
+ * @param tz - IANA timezone
39
+ * @returns The instant
40
+ */
41
+ export declare function zonedTimeToUtc(wall: ZonedParts, tz: string): Date;
42
+ /**
43
+ * When a first-week task is due.
44
+ *
45
+ * Day 0 is due at `deployedAt`. Day n is due at `time` (default 09:00) on
46
+ * the n-th calendar day after the deploy day, in `tz`.
47
+ *
48
+ * @param deployedAt - When the bundle was applied
49
+ * @param day - 0-based day
50
+ * @param time - `HH:MM` (optional)
51
+ * @param tz - IANA timezone
52
+ * @returns ISO timestamp
53
+ *
54
+ * @example
55
+ * firstWeekDueAt(new Date('2026-09-25T02:00:00Z'), 1, '09:00', 'Asia/Shanghai') // '2026-09-26T01:00:00.000Z'
56
+ */
57
+ export declare function firstWeekDueAt(deployedAt: Date, day: number, time: string | undefined, tz: string): string;
58
+ export {};
59
+ //# sourceMappingURL=bundle-time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-time.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-time.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,+CAA+C;AAC/C,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAQnD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAmB7D;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CASjE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAU1G"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Time helpers for bundle first-week tasks: "day 2 at 09:00 in the
3
+ * bundle's timezone" as a UTC instant, independent of the server's own
4
+ * timezone (hosted servers run in UTC; owners mostly do not).
5
+ *
6
+ * @module services/bundle/bundle-time
7
+ */
8
+ import { BUNDLE_CONSTANTS } from '../../constants.js';
9
+ /**
10
+ * Whether a string is a valid IANA timezone.
11
+ *
12
+ * @param tz - Candidate
13
+ * @returns True when Intl accepts it
14
+ */
15
+ export function isValidTimezone(tz) {
16
+ if (!tz || !tz.trim())
17
+ return false;
18
+ try {
19
+ new Intl.DateTimeFormat('en-US', { timeZone: tz });
20
+ return true;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ /**
27
+ * Calendar parts of an instant in a timezone.
28
+ *
29
+ * @param date - Instant
30
+ * @param tz - IANA timezone
31
+ * @returns Year, month (1-12), day, hour, minute
32
+ */
33
+ export function zonedParts(date, tz) {
34
+ const parts = new Map();
35
+ const formatter = new Intl.DateTimeFormat('en-US', {
36
+ timeZone: tz,
37
+ year: 'numeric',
38
+ month: 'numeric',
39
+ day: 'numeric',
40
+ hour: 'numeric',
41
+ minute: 'numeric',
42
+ hour12: false,
43
+ });
44
+ for (const p of formatter.formatToParts(date))
45
+ parts.set(p.type, p.value);
46
+ return {
47
+ year: Number(parts.get('year')),
48
+ month: Number(parts.get('month')),
49
+ day: Number(parts.get('day')),
50
+ hour: Number(parts.get('hour')) % 24,
51
+ minute: Number(parts.get('minute')),
52
+ };
53
+ }
54
+ /**
55
+ * The UTC instant of a wall-clock time in a timezone.
56
+ *
57
+ * Starts from the wall time read as UTC, then corrects by the zone's offset
58
+ * at that instant (twice, which settles DST edges).
59
+ *
60
+ * @param wall - Calendar date and time in `tz`
61
+ * @param tz - IANA timezone
62
+ * @returns The instant
63
+ */
64
+ export function zonedTimeToUtc(wall, tz) {
65
+ const target = Date.UTC(wall.year, wall.month - 1, wall.day, wall.hour, wall.minute);
66
+ let guess = target;
67
+ for (let i = 0; i < 2; i++) {
68
+ const seen = zonedParts(new Date(guess), tz);
69
+ const seenAsUtc = Date.UTC(seen.year, seen.month - 1, seen.day, seen.hour, seen.minute);
70
+ guess += target - seenAsUtc;
71
+ }
72
+ return new Date(guess);
73
+ }
74
+ /**
75
+ * When a first-week task is due.
76
+ *
77
+ * Day 0 is due at `deployedAt`. Day n is due at `time` (default 09:00) on
78
+ * the n-th calendar day after the deploy day, in `tz`.
79
+ *
80
+ * @param deployedAt - When the bundle was applied
81
+ * @param day - 0-based day
82
+ * @param time - `HH:MM` (optional)
83
+ * @param tz - IANA timezone
84
+ * @returns ISO timestamp
85
+ *
86
+ * @example
87
+ * firstWeekDueAt(new Date('2026-09-25T02:00:00Z'), 1, '09:00', 'Asia/Shanghai') // '2026-09-26T01:00:00.000Z'
88
+ */
89
+ export function firstWeekDueAt(deployedAt, day, time, tz) {
90
+ if (day <= 0)
91
+ return deployedAt.toISOString();
92
+ const [hour, minute] = (time ?? BUNDLE_CONSTANTS.DEFAULT_FIRST_WEEK_TIME).split(':').map(Number);
93
+ const today = zonedParts(deployedAt, tz);
94
+ // Calendar arithmetic on a UTC date avoids month/year rollover bugs.
95
+ const date = new Date(Date.UTC(today.year, today.month - 1, today.day + day));
96
+ return zonedTimeToUtc({ year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate(), hour, minute }, tz).toISOString();
97
+ }
98
+ //# sourceMappingURL=bundle-time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-time.js","sourceRoot":"","sources":["../../../../../../backend/src/services/bundle/bundle-time.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-api-relay.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAShF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/E,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAChF,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3F;AAED,4DAA4D;AAC5D,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2F1F,CAAC;AAgBF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI5E;AAMD,2BAA2B;AAC3B,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,qBAAqB,CAAC;IACjC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,OAAO,CAA4D;gBAE/D,OAAO,EAAE,qBAAqB;IAQ1C,6CAA6C;IAC7C,KAAK,IAAI,IAAI;IAab,uDAAuD;IACvD,IAAI,IAAI,IAAI;IAOZ;;;;;;OAMG;YACW,aAAa;CAuE5B"}
1
+ {"version":3,"file":"mobile-api-relay.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAShF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/E,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAChF,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3F;AAED,4DAA4D;AAC5D,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAgG1F,CAAC;AAgBF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI5E;AAMD,2BAA2B;AAC3B,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,qBAAqB,CAAC;IACjC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,OAAO,CAA4D;gBAE/D,OAAO,EAAE,qBAAqB;IAQ1C,6CAA6C;IAC7C,KAAK,IAAI,IAAI;IAab,uDAAuD;IACvD,IAAI,IAAI,IAAI;IAOZ;;;;;;OAMG;YACW,aAAa;CAuE5B"}
@@ -123,6 +123,11 @@ export const MOBILE_API_ALLOWLIST = [
123
123
  { method: 'GET', prefix: '/cloud/device/status' },
124
124
  { method: 'POST', prefix: '/cloud/device/start' },
125
125
  { method: 'POST', prefix: '/cloud/device/cancel' },
126
+ // Solution bundles (specs/solution-bundles.md): the owner picks a bundle,
127
+ // answers its questions and deploys it from the phone, then watches the
128
+ // job. `GET /bundles` covers the list, the detail and `/bundles/apply/:jobId`.
129
+ { method: 'GET', prefix: '/bundles' },
130
+ { method: 'POST', prefix: '/bundles/apply' },
126
131
  ];
127
132
  /**
128
133
  * The owner's API token header for relayed calls (empty when no token).
@@ -1 +1 @@
1
- {"version":3,"file":"mobile-api-relay.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mobile-api-relay.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"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"}