crewly 1.20.152 → 1.20.154

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 (804) hide show
  1. package/README.md +21 -3
  2. package/config/constants.ts +78 -0
  3. package/config/hooks/agent-status/report.sh +78 -0
  4. package/config/hooks/control-plane-guard/pretooluse-bash.sh +241 -0
  5. package/config/orchestrator_tasks/prompts/assign-task-orchestrator-prompt-template.md +19 -49
  6. package/config/orchestrator_tasks/prompts/checkin-orchestrator-prompt-template.md +25 -125
  7. package/config/orchestrator_tasks/prompts/project-start-orchestrator-prompt-template.md +29 -100
  8. package/config/roles/orchestrator/prompt.md +25 -2
  9. package/config/roles/team-leader/prompt.md +19 -3
  10. package/config/roles/team-leader/role.json +1 -1
  11. package/config/roles/team-leader/tl-addon.md +12 -3
  12. package/config/skills/agent/core/complete-task/SKILL.md +1 -1
  13. package/config/skills/agent/core/project-tickets/SKILL.md +127 -0
  14. package/config/skills/agent/core/project-tickets/execute.sh +182 -0
  15. package/config/skills/agent/core/project-tickets/execute.test.sh +116 -0
  16. package/config/skills/agent/core/recall/SKILL.md +1 -1
  17. package/config/skills/agent/core/recall/execute.sh +7 -0
  18. package/config/skills/agent/core/report-status/SKILL.md +3 -2
  19. package/config/skills/agent/core/report-status/execute.sh +37 -15
  20. package/config/skills/agent/core/split-ticket/SKILL.md +62 -0
  21. package/config/skills/agent/core/split-ticket/execute.sh +87 -0
  22. package/config/skills/agent/core/split-ticket/execute.test.sh +77 -0
  23. package/config/skills/agent/core/standing-update/SKILL.md +96 -0
  24. package/config/skills/agent/core/standing-update/execute.sh +107 -0
  25. package/config/skills/agent/onboarding/materialize-team/SKILL.md +1 -1
  26. package/config/skills/agent/onboarding/recommend-team/SKILL.md +1 -1
  27. package/config/skills/orchestrator/delegate-task/SKILL.md +4 -3
  28. package/config/skills/orchestrator/render-verdict/SKILL.md +62 -0
  29. package/config/skills/orchestrator/render-verdict/execute.sh +47 -0
  30. package/config/skills/orchestrator/render-verdict/execute.test.sh +121 -0
  31. package/config/skills/orchestrator/wiki-migrate/SKILL.md +0 -1
  32. package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
  33. package/config/skills/team-leader/assign-ticket/SKILL.md +47 -0
  34. package/config/skills/team-leader/assign-ticket/execute.sh +59 -0
  35. package/config/skills/team-leader/assign-ticket/execute.test.sh +64 -0
  36. package/config/skills/team-leader/decompose-goal/SKILL.md +4 -4
  37. package/config/skills/team-leader/delegate-task/SKILL.md +1 -1
  38. package/config/skills/team-leader/verify-output/SKILL.md +2 -2
  39. package/config/sops/developer/git-workflow.md +2 -1
  40. package/dist/backend/backend/src/constants.d.ts +451 -1
  41. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  42. package/dist/backend/backend/src/constants.js +442 -2
  43. package/dist/backend/backend/src/constants.js.map +1 -1
  44. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts +27 -0
  45. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts.map +1 -0
  46. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js +55 -0
  47. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js.map +1 -0
  48. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts +13 -0
  49. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.d.ts.map +1 -0
  50. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js +19 -0
  51. package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.routes.js.map +1 -0
  52. package/dist/backend/backend/src/controllers/api.controller.d.ts +0 -12
  53. package/dist/backend/backend/src/controllers/api.controller.d.ts.map +1 -1
  54. package/dist/backend/backend/src/controllers/api.controller.js +0 -44
  55. package/dist/backend/backend/src/controllers/api.controller.js.map +1 -1
  56. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +27 -5
  57. package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
  58. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +55 -15
  59. package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
  60. package/dist/backend/backend/src/controllers/approvals/approvals.routes.d.ts.map +1 -1
  61. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js +2 -0
  62. package/dist/backend/backend/src/controllers/approvals/approvals.routes.js.map +1 -1
  63. package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts +13 -0
  64. package/dist/backend/backend/src/controllers/expert/expert.controller.d.ts.map +1 -1
  65. package/dist/backend/backend/src/controllers/expert/expert.controller.js +67 -9
  66. package/dist/backend/backend/src/controllers/expert/expert.controller.js.map +1 -1
  67. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts +41 -0
  68. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -0
  69. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +146 -0
  70. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -0
  71. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts +20 -0
  72. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.d.ts.map +1 -0
  73. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js +29 -0
  74. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.routes.js.map +1 -0
  75. package/dist/backend/backend/src/controllers/project/project.controller.d.ts +2 -2
  76. package/dist/backend/backend/src/controllers/project/project.controller.d.ts.map +1 -1
  77. package/dist/backend/backend/src/controllers/project/project.controller.js +24 -7
  78. package/dist/backend/backend/src/controllers/project/project.controller.js.map +1 -1
  79. package/dist/backend/backend/src/controllers/project/project.routes.d.ts +2 -2
  80. package/dist/backend/backend/src/controllers/project/project.routes.d.ts.map +1 -1
  81. package/dist/backend/backend/src/controllers/project/project.routes.js +3 -36
  82. package/dist/backend/backend/src/controllers/project/project.routes.js.map +1 -1
  83. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +93 -0
  84. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -0
  85. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +252 -0
  86. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -0
  87. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +34 -0
  88. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts.map +1 -0
  89. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +51 -0
  90. package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js.map +1 -0
  91. package/dist/backend/backend/src/controllers/request-types.d.ts +13 -0
  92. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  93. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +49 -0
  94. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -0
  95. package/dist/backend/backend/src/controllers/standing/standing.controller.js +100 -0
  96. package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -0
  97. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +38 -0
  98. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  99. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +143 -8
  100. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  101. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.d.ts.map +1 -1
  102. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js +6 -1
  103. package/dist/backend/backend/src/controllers/task-pool/task-pool.routes.js.map +1 -1
  104. package/dist/backend/backend/src/controllers/team/team.controller.d.ts +2 -0
  105. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  106. package/dist/backend/backend/src/controllers/team/team.controller.js +26 -6
  107. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  108. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +18 -0
  109. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
  110. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +56 -0
  111. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
  112. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +1 -0
  113. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
  114. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +3 -1
  115. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
  116. package/dist/backend/backend/src/controllers/types.d.ts +1 -2
  117. package/dist/backend/backend/src/controllers/types.d.ts.map +1 -1
  118. package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts +2 -3
  119. package/dist/backend/backend/src/controllers/wiki/wiki.controller.d.ts.map +1 -1
  120. package/dist/backend/backend/src/controllers/wiki/wiki.controller.js +2 -3
  121. package/dist/backend/backend/src/controllers/wiki/wiki.controller.js.map +1 -1
  122. package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.d.ts +29 -0
  123. package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.d.ts.map +1 -0
  124. package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.js +63 -0
  125. package/dist/backend/backend/src/controllers/worktree-janitor/worktree-janitor.routes.js.map +1 -0
  126. package/dist/backend/backend/src/index.d.ts +7 -0
  127. package/dist/backend/backend/src/index.d.ts.map +1 -1
  128. package/dist/backend/backend/src/index.js +214 -9
  129. package/dist/backend/backend/src/index.js.map +1 -1
  130. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +29 -0
  131. package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -1
  132. package/dist/backend/backend/src/middleware/api-token.middleware.js +38 -0
  133. package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -1
  134. package/dist/backend/backend/src/models/index.d.ts +0 -1
  135. package/dist/backend/backend/src/models/index.d.ts.map +1 -1
  136. package/dist/backend/backend/src/models/index.js +0 -1
  137. package/dist/backend/backend/src/models/index.js.map +1 -1
  138. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  139. package/dist/backend/backend/src/routes/api.routes.js +27 -3
  140. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  141. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts +6 -2
  142. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.d.ts.map +1 -1
  143. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js +6 -2
  144. package/dist/backend/backend/src/scripts/leaked-stub-teams.lib.js.map +1 -1
  145. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +28 -1
  146. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/agent/agent-registration.service.js +93 -34
  148. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  149. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
  150. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
  151. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +231 -0
  152. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
  153. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +1 -1
  154. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +9 -0
  156. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  157. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
  158. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
  160. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  161. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts +9 -1
  162. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/agent/tmux-command.service.js +12 -2
  164. package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
  165. package/dist/backend/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  166. package/dist/backend/backend/src/services/ai/prompt-builder.service.js +9 -8
  167. package/dist/backend/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  168. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
  169. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
  170. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
  171. package/dist/backend/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
  172. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +18 -3
  173. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -4
  175. package/dist/backend/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
  176. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +3 -0
  177. package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
  178. package/dist/backend/backend/src/services/ai/prompt-modules/index.js +3 -0
  179. package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
  180. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
  181. package/dist/backend/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
  182. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  183. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +12 -0
  184. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  185. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +14 -0
  186. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  187. package/dist/backend/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  188. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
  190. package/dist/backend/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  191. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
  192. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
  193. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
  194. package/dist/backend/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
  195. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
  196. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
  197. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
  198. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
  199. package/dist/backend/backend/src/services/ai/prompt-template.service.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/ai/prompt-template.service.js +9 -7
  201. package/dist/backend/backend/src/services/ai/prompt-template.service.js.map +1 -1
  202. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  203. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  204. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js +1 -0
  205. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  206. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  207. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +7 -0
  208. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  209. package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.d.ts +128 -0
  210. package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.d.ts.map +1 -0
  211. package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.js +279 -0
  212. package/dist/backend/backend/src/services/cloud/waiting-actions-inbound.service.js.map +1 -0
  213. package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.d.ts +122 -0
  214. package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.d.ts.map +1 -0
  215. package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.js +261 -0
  216. package/dist/backend/backend/src/services/cloud/waiting-items-sync.service.js.map +1 -0
  217. package/dist/backend/backend/src/services/cloud/waiting-items.contract.d.ts +101 -0
  218. package/dist/backend/backend/src/services/cloud/waiting-items.contract.d.ts.map +1 -0
  219. package/dist/backend/backend/src/services/cloud/waiting-items.contract.js +113 -0
  220. package/dist/backend/backend/src/services/cloud/waiting-items.contract.js.map +1 -0
  221. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
  222. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
  223. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
  224. package/dist/backend/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
  225. package/dist/backend/backend/src/services/core/logger.service.d.ts +21 -0
  226. package/dist/backend/backend/src/services/core/logger.service.d.ts.map +1 -1
  227. package/dist/backend/backend/src/services/core/logger.service.js +42 -4
  228. package/dist/backend/backend/src/services/core/logger.service.js.map +1 -1
  229. package/dist/backend/backend/src/services/core/storage.service.d.ts +1 -5
  230. package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
  231. package/dist/backend/backend/src/services/core/storage.service.js +5 -162
  232. package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
  233. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  234. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +15 -9
  235. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  236. package/dist/backend/backend/src/services/index.d.ts +0 -4
  237. package/dist/backend/backend/src/services/index.d.ts.map +1 -1
  238. package/dist/backend/backend/src/services/index.js +0 -4
  239. package/dist/backend/backend/src/services/index.js.map +1 -1
  240. package/dist/backend/backend/src/services/intent-task/intent-task.service.d.ts +1 -1
  241. package/dist/backend/backend/src/services/intent-task/intent-task.service.js +1 -1
  242. package/dist/backend/backend/src/services/mcp-server.d.ts +19 -6
  243. package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
  244. package/dist/backend/backend/src/services/mcp-server.js +46 -16
  245. package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
  246. package/dist/backend/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  247. package/dist/backend/backend/src/services/mcp-tool-definitions.js +3 -2
  248. package/dist/backend/backend/src/services/mcp-tool-definitions.js.map +1 -1
  249. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +247 -0
  250. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
  251. package/dist/backend/backend/src/services/memory/standing-answers.service.js +534 -0
  252. package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -0
  253. package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts +104 -0
  254. package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts.map +1 -0
  255. package/dist/backend/backend/src/services/memory/standing-refresh.service.js +218 -0
  256. package/dist/backend/backend/src/services/memory/standing-refresh.service.js.map +1 -0
  257. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
  258. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  259. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +99 -1
  260. package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  261. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
  262. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
  263. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js +80 -0
  264. package/dist/backend/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
  265. package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts +114 -0
  266. package/dist/backend/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
  267. package/dist/backend/backend/src/services/monitoring/agent-attention.js +165 -0
  268. package/dist/backend/backend/src/services/monitoring/agent-attention.js.map +1 -0
  269. package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts +76 -0
  270. package/dist/backend/backend/src/services/monitoring/agent-hook-state.d.ts.map +1 -0
  271. package/dist/backend/backend/src/services/monitoring/agent-hook-state.js +96 -0
  272. package/dist/backend/backend/src/services/monitoring/agent-hook-state.js.map +1 -0
  273. package/dist/backend/backend/src/services/orchestrator/onboarding/materialize-team.js +1 -1
  274. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts +1 -1
  275. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.d.ts.map +1 -1
  276. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js +13 -3
  277. package/dist/backend/backend/src/services/orchestrator/onboarding/recommend-team.js.map +1 -1
  278. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.d.ts.map +1 -1
  279. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js +0 -4
  280. package/dist/backend/backend/src/services/orchestrator/prompts/onboarding-mode.prompt.js.map +1 -1
  281. package/dist/backend/backend/src/services/project/project-search.service.d.ts +22 -16
  282. package/dist/backend/backend/src/services/project/project-search.service.d.ts.map +1 -1
  283. package/dist/backend/backend/src/services/project/project-search.service.js +30 -53
  284. package/dist/backend/backend/src/services/project/project-search.service.js.map +1 -1
  285. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +381 -0
  286. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -0
  287. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +839 -0
  288. package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -0
  289. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
  290. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
  291. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +466 -0
  292. package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
  293. package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
  294. package/dist/backend/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
  295. package/dist/backend/backend/src/services/project-tickets/ticket-file.js +468 -0
  296. package/dist/backend/backend/src/services/project-tickets/ticket-file.js.map +1 -0
  297. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
  298. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
  299. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
  300. package/dist/backend/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
  301. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
  302. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
  303. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js +83 -0
  304. package/dist/backend/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
  305. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
  306. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
  307. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js +201 -0
  308. package/dist/backend/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
  309. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +86 -22
  310. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  311. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +173 -28
  312. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  313. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +19 -1
  314. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  315. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +33 -4
  316. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  317. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +24 -12
  318. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  319. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +87 -19
  320. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  321. package/dist/backend/backend/src/services/runtime-adapter.d.ts +1 -1
  322. package/dist/backend/backend/src/services/runtime-adapter.d.ts.map +1 -1
  323. package/dist/backend/backend/src/services/runtime-adapter.js +5 -9
  324. package/dist/backend/backend/src/services/runtime-adapter.js.map +1 -1
  325. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
  326. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  327. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +33 -2
  328. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  329. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts +5 -0
  330. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  331. package/dist/backend/backend/src/services/session/pty/pty-session.js +8 -1
  332. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  333. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
  334. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
  335. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
  336. package/dist/backend/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
  337. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts +8 -0
  338. package/dist/backend/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  339. package/dist/backend/backend/src/services/session/session-backend.interface.js.map +1 -1
  340. package/dist/backend/backend/src/services/session/session-command-helper.d.ts +12 -2
  341. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  342. package/dist/backend/backend/src/services/session/session-command-helper.js +14 -2
  343. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  344. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  345. package/dist/backend/backend/src/services/slack/slack-initializer.js +2 -1
  346. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  347. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts +239 -0
  348. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.d.ts.map +1 -0
  349. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js +395 -0
  350. package/dist/backend/backend/src/services/task-pool/give-up/give-up-recovery.service.js.map +1 -0
  351. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts +53 -0
  352. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.d.ts.map +1 -0
  353. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js +83 -0
  354. package/dist/backend/backend/src/services/task-pool/give-up/give-up-stats.js.map +1 -0
  355. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts +93 -0
  356. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.d.ts.map +1 -0
  357. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js +244 -0
  358. package/dist/backend/backend/src/services/task-pool/give-up/stop-classifier.js.map +1 -0
  359. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
  360. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  361. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +321 -53
  362. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  363. package/dist/backend/backend/src/services/template/template.service.d.ts.map +1 -1
  364. package/dist/backend/backend/src/services/template/template.service.js +11 -6
  365. package/dist/backend/backend/src/services/template/template.service.js.map +1 -1
  366. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +21 -4
  367. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  368. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +53 -3
  369. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  370. package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts +85 -6
  371. package/dist/backend/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
  372. package/dist/backend/backend/src/services/v3/escalation-router.service.js +188 -9
  373. package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
  374. package/dist/backend/backend/src/services/v3/escalation.service.js +1 -1
  375. package/dist/backend/backend/src/services/v3/escalation.service.js.map +1 -1
  376. package/dist/backend/backend/src/services/v3/mission-executor.service.js +2 -2
  377. package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
  378. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts +184 -0
  379. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts.map +1 -0
  380. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js +420 -0
  381. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js.map +1 -0
  382. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +61 -0
  383. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -0
  384. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js +100 -0
  385. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js.map +1 -0
  386. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts +36 -0
  387. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts.map +1 -0
  388. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js +239 -0
  389. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js.map +1 -0
  390. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +152 -0
  391. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -0
  392. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +209 -0
  393. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -0
  394. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +194 -0
  395. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -0
  396. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js +85 -0
  397. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -0
  398. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
  399. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  400. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +15 -6
  401. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  402. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
  403. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +14 -5
  404. package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
  405. package/dist/backend/backend/src/services/v3/request.service.d.ts +19 -0
  406. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  407. package/dist/backend/backend/src/services/v3/request.service.js +38 -0
  408. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  409. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
  410. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
  411. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js +172 -0
  412. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
  413. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  414. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +2 -0
  415. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  416. package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
  417. package/dist/backend/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
  418. package/dist/backend/backend/src/services/v3/ticket-intake-log.js +116 -0
  419. package/dist/backend/backend/src/services/v3/ticket-intake-log.js.map +1 -0
  420. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
  421. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  422. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +263 -45
  423. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  424. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +3 -1
  425. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  426. package/dist/backend/backend/src/services/v3/ticket-review.service.js +6 -2
  427. package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -1
  428. package/dist/backend/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  429. package/dist/backend/backend/src/services/v3/v3-data.service.js +9 -3
  430. package/dist/backend/backend/src/services/v3/v3-data.service.js.map +1 -1
  431. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +41 -1
  432. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  433. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +51 -2
  434. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  435. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts +13 -5
  436. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
  437. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +10 -9
  438. package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
  439. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts +241 -0
  440. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.d.ts.map +1 -0
  441. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js +511 -0
  442. package/dist/backend/backend/src/services/worktree/workitem-worktree.service.js.map +1 -0
  443. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts +70 -0
  444. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts.map +1 -0
  445. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js +121 -0
  446. package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js.map +1 -0
  447. package/dist/backend/backend/src/services/worktree/worktree-git.d.ts +260 -0
  448. package/dist/backend/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
  449. package/dist/backend/backend/src/services/worktree/worktree-git.js +569 -0
  450. package/dist/backend/backend/src/services/worktree/worktree-git.js.map +1 -0
  451. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts +131 -0
  452. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.d.ts.map +1 -0
  453. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js +238 -0
  454. package/dist/backend/backend/src/services/worktree/worktree-janitor.git.js.map +1 -0
  455. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts +241 -0
  456. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -0
  457. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +504 -0
  458. package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -0
  459. package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
  460. package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
  461. package/dist/backend/backend/src/types/event-bus.types.js +8 -0
  462. package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
  463. package/dist/backend/backend/src/types/index.d.ts +23 -18
  464. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  465. package/dist/backend/backend/src/types/index.js.map +1 -1
  466. package/dist/backend/backend/src/types/intent-task.types.d.ts +1 -1
  467. package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
  468. package/dist/backend/backend/src/types/project-ticket.types.d.ts +132 -0
  469. package/dist/backend/backend/src/types/project-ticket.types.d.ts.map +1 -0
  470. package/dist/backend/backend/src/types/project-ticket.types.js +120 -0
  471. package/dist/backend/backend/src/types/project-ticket.types.js.map +1 -0
  472. package/dist/backend/backend/src/types/review-reason.types.d.ts +3 -1
  473. package/dist/backend/backend/src/types/review-reason.types.d.ts.map +1 -1
  474. package/dist/backend/backend/src/types/review-reason.types.js +1 -0
  475. package/dist/backend/backend/src/types/review-reason.types.js.map +1 -1
  476. package/dist/backend/backend/src/types/v2/index.d.ts +2 -2
  477. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  478. package/dist/backend/backend/src/types/v2/index.js +1 -1
  479. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  480. package/dist/backend/backend/src/types/v2/reconcile.types.d.ts +7 -0
  481. package/dist/backend/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
  482. package/dist/backend/backend/src/types/v2/reconcile.types.js.map +1 -1
  483. package/dist/backend/backend/src/types/v2/request.types.d.ts +18 -0
  484. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  485. package/dist/backend/backend/src/types/v2/request.types.js +1 -0
  486. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  487. package/dist/backend/backend/src/types/v2/ticket.types.d.ts +6 -2
  488. package/dist/backend/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  489. package/dist/backend/backend/src/types/v2/ticket.types.js +1 -1
  490. package/dist/backend/backend/src/types/v2/ticket.types.js.map +1 -1
  491. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +169 -14
  492. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  493. package/dist/backend/backend/src/types/v2/work-item.types.js +263 -44
  494. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  495. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +33 -0
  496. package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
  497. package/dist/backend/backend/src/utils/agent-caller.utils.js +37 -0
  498. package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
  499. package/dist/backend/backend/src/utils/secret-env.d.ts +61 -0
  500. package/dist/backend/backend/src/utils/secret-env.d.ts.map +1 -0
  501. package/dist/backend/backend/src/utils/secret-env.js +89 -0
  502. package/dist/backend/backend/src/utils/secret-env.js.map +1 -0
  503. package/dist/backend/build-info.json +2 -2
  504. package/dist/backend/config/constants.d.ts +71 -0
  505. package/dist/backend/config/constants.d.ts.map +1 -1
  506. package/dist/backend/config/constants.js +77 -0
  507. package/dist/backend/config/constants.js.map +1 -1
  508. package/dist/cli/backend/src/constants.d.ts +451 -1
  509. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  510. package/dist/cli/backend/src/constants.js +442 -2
  511. package/dist/cli/backend/src/constants.js.map +1 -1
  512. package/dist/cli/backend/src/models/index.d.ts +0 -1
  513. package/dist/cli/backend/src/models/index.d.ts.map +1 -1
  514. package/dist/cli/backend/src/models/index.js +0 -1
  515. package/dist/cli/backend/src/models/index.js.map +1 -1
  516. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +28 -1
  517. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  518. package/dist/cli/backend/src/services/agent/agent-registration.service.js +93 -34
  519. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  520. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +169 -0
  521. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -0
  522. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +231 -0
  523. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -0
  524. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +16 -0
  525. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  526. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +50 -0
  527. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  528. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -1
  529. package/dist/cli/backend/src/services/ai/prompt-builder.service.js +9 -8
  530. package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -1
  531. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts +75 -0
  532. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.d.ts.map +1 -0
  533. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js +89 -0
  534. package/dist/cli/backend/src/services/ai/prompt-modules/active-work.module.js.map +1 -0
  535. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +18 -3
  536. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -1
  537. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +28 -4
  538. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -1
  539. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +1 -1
  540. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -1
  541. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
  542. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +12 -0
  543. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
  544. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts +14 -0
  545. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.d.ts.map +1 -1
  546. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-module.interface.js.map +1 -1
  547. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -1
  548. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +11 -7
  549. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -1
  550. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts +41 -0
  551. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.d.ts.map +1 -0
  552. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js +44 -0
  553. package/dist/cli/backend/src/services/ai/prompt-modules/session-briefing.module.js.map +1 -0
  554. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +67 -0
  555. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -0
  556. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js +146 -0
  557. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -0
  558. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +1 -1
  559. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  560. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js +1 -0
  561. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  562. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts +7 -0
  563. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.d.ts.map +1 -1
  564. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js +9 -1
  565. package/dist/cli/backend/src/services/continuation/patterns/waiting-patterns.js.map +1 -1
  566. package/dist/cli/backend/src/services/core/logger.service.d.ts +21 -0
  567. package/dist/cli/backend/src/services/core/logger.service.d.ts.map +1 -1
  568. package/dist/cli/backend/src/services/core/logger.service.js +42 -4
  569. package/dist/cli/backend/src/services/core/logger.service.js.map +1 -1
  570. package/dist/cli/backend/src/services/core/storage.service.d.ts +1 -5
  571. package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
  572. package/dist/cli/backend/src/services/core/storage.service.js +5 -162
  573. package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
  574. package/dist/cli/backend/src/services/mcp-server.d.ts +19 -6
  575. package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
  576. package/dist/cli/backend/src/services/mcp-server.js +46 -16
  577. package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
  578. package/dist/cli/backend/src/services/mcp-tool-definitions.d.ts.map +1 -1
  579. package/dist/cli/backend/src/services/mcp-tool-definitions.js +3 -2
  580. package/dist/cli/backend/src/services/mcp-tool-definitions.js.map +1 -1
  581. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +247 -0
  582. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -0
  583. package/dist/cli/backend/src/services/memory/standing-answers.service.js +534 -0
  584. package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -0
  585. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +35 -0
  586. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
  587. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +99 -1
  588. package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
  589. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts +75 -0
  590. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.d.ts.map +1 -0
  591. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js +80 -0
  592. package/dist/cli/backend/src/services/monitoring/agent-attention-registry.js.map +1 -0
  593. package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts +114 -0
  594. package/dist/cli/backend/src/services/monitoring/agent-attention.d.ts.map +1 -0
  595. package/dist/cli/backend/src/services/monitoring/agent-attention.js +165 -0
  596. package/dist/cli/backend/src/services/monitoring/agent-attention.js.map +1 -0
  597. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +214 -0
  598. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -0
  599. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +466 -0
  600. package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -0
  601. package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts +121 -0
  602. package/dist/cli/backend/src/services/project-tickets/ticket-file.d.ts.map +1 -0
  603. package/dist/cli/backend/src/services/project-tickets/ticket-file.js +468 -0
  604. package/dist/cli/backend/src/services/project-tickets/ticket-file.js.map +1 -0
  605. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts +69 -0
  606. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.d.ts.map +1 -0
  607. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js +194 -0
  608. package/dist/cli/backend/src/services/project-tickets/ticket-folder-lock.js.map +1 -0
  609. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts +47 -0
  610. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.d.ts.map +1 -0
  611. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js +83 -0
  612. package/dist/cli/backend/src/services/project-tickets/ticket-tracking.js.map +1 -0
  613. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts +97 -0
  614. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.d.ts.map +1 -0
  615. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js +201 -0
  616. package/dist/cli/backend/src/services/project-tickets/v1-task-migration.js.map +1 -0
  617. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +26 -1
  618. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  619. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +33 -2
  620. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  621. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +5 -0
  622. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  623. package/dist/cli/backend/src/services/session/pty/pty-session.js +8 -1
  624. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  625. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +18 -0
  626. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -1
  627. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +23 -0
  628. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -1
  629. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +8 -0
  630. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -1
  631. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -1
  632. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +12 -2
  633. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  634. package/dist/cli/backend/src/services/session/session-command-helper.js +14 -2
  635. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
  636. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +145 -19
  637. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  638. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +321 -53
  639. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  640. package/dist/cli/backend/src/services/template/template.service.d.ts.map +1 -1
  641. package/dist/cli/backend/src/services/template/template.service.js +11 -6
  642. package/dist/cli/backend/src/services/template/template.service.js.map +1 -1
  643. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +85 -6
  644. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -1
  645. package/dist/cli/backend/src/services/v3/escalation-router.service.js +188 -9
  646. package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -1
  647. package/dist/cli/backend/src/services/v3/mission-executor.service.js +2 -2
  648. package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -1
  649. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +6 -4
  650. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  651. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +15 -6
  652. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  653. package/dist/cli/backend/src/services/v3/request.service.d.ts +19 -0
  654. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  655. package/dist/cli/backend/src/services/v3/request.service.js +38 -0
  656. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  657. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts +82 -0
  658. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -0
  659. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js +172 -0
  660. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js.map +1 -0
  661. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  662. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +2 -0
  663. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  664. package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts +87 -0
  665. package/dist/cli/backend/src/services/v3/ticket-intake-log.d.ts.map +1 -0
  666. package/dist/cli/backend/src/services/v3/ticket-intake-log.js +116 -0
  667. package/dist/cli/backend/src/services/v3/ticket-intake-log.js.map +1 -0
  668. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +133 -15
  669. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  670. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +263 -45
  671. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  672. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +3 -1
  673. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  674. package/dist/cli/backend/src/services/v3/ticket-review.service.js +6 -2
  675. package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -1
  676. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -1
  677. package/dist/cli/backend/src/services/v3/v3-data.service.js +9 -3
  678. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -1
  679. package/dist/cli/backend/src/services/worktree/worktree-git.d.ts +260 -0
  680. package/dist/cli/backend/src/services/worktree/worktree-git.d.ts.map +1 -0
  681. package/dist/cli/backend/src/services/worktree/worktree-git.js +569 -0
  682. package/dist/cli/backend/src/services/worktree/worktree-git.js.map +1 -0
  683. package/dist/cli/backend/src/types/event-bus.types.d.ts +1 -1
  684. package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
  685. package/dist/cli/backend/src/types/event-bus.types.js +8 -0
  686. package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
  687. package/dist/cli/backend/src/types/index.d.ts +23 -18
  688. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  689. package/dist/cli/backend/src/types/index.js.map +1 -1
  690. package/dist/cli/backend/src/types/intent-task.types.d.ts +1 -1
  691. package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -1
  692. package/dist/cli/backend/src/types/project-ticket.types.d.ts +132 -0
  693. package/dist/cli/backend/src/types/project-ticket.types.d.ts.map +1 -0
  694. package/dist/cli/backend/src/types/project-ticket.types.js +120 -0
  695. package/dist/cli/backend/src/types/project-ticket.types.js.map +1 -0
  696. package/dist/cli/backend/src/types/v2/index.d.ts +2 -2
  697. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -1
  698. package/dist/cli/backend/src/types/v2/index.js +1 -1
  699. package/dist/cli/backend/src/types/v2/index.js.map +1 -1
  700. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +7 -0
  701. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -1
  702. package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -1
  703. package/dist/cli/backend/src/types/v2/request.types.d.ts +18 -0
  704. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  705. package/dist/cli/backend/src/types/v2/request.types.js +1 -0
  706. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  707. package/dist/cli/backend/src/types/v2/ticket.types.d.ts +6 -2
  708. package/dist/cli/backend/src/types/v2/ticket.types.d.ts.map +1 -1
  709. package/dist/cli/backend/src/types/v2/ticket.types.js +1 -1
  710. package/dist/cli/backend/src/types/v2/ticket.types.js.map +1 -1
  711. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +169 -14
  712. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  713. package/dist/cli/backend/src/types/v2/work-item.types.js +263 -44
  714. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  715. package/dist/cli/backend/src/utils/secret-env.d.ts +61 -0
  716. package/dist/cli/backend/src/utils/secret-env.d.ts.map +1 -0
  717. package/dist/cli/backend/src/utils/secret-env.js +89 -0
  718. package/dist/cli/backend/src/utils/secret-env.js.map +1 -0
  719. package/dist/cli/cli/src/commands/onboard.d.ts +1 -1
  720. package/dist/cli/cli/src/commands/onboard.js +3 -3
  721. package/dist/cli/cli/src/commands/onboard.js.map +1 -1
  722. package/dist/cli/cli/src/commands/publish.d.ts.map +1 -1
  723. package/dist/cli/cli/src/commands/publish.js +4 -5
  724. package/dist/cli/cli/src/commands/publish.js.map +1 -1
  725. package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
  726. package/dist/cli/cli/src/commands/service.js +5 -2
  727. package/dist/cli/cli/src/commands/service.js.map +1 -1
  728. package/dist/cli/cli/src/commands/tickets.d.ts +60 -0
  729. package/dist/cli/cli/src/commands/tickets.d.ts.map +1 -0
  730. package/dist/cli/cli/src/commands/tickets.js +111 -0
  731. package/dist/cli/cli/src/commands/tickets.js.map +1 -0
  732. package/dist/cli/cli/src/index.js +12 -0
  733. package/dist/cli/cli/src/index.js.map +1 -1
  734. package/dist/cli/cli/src/utils/archive-creator.d.ts +7 -3
  735. package/dist/cli/cli/src/utils/archive-creator.d.ts.map +1 -1
  736. package/dist/cli/cli/src/utils/archive-creator.js +17 -5
  737. package/dist/cli/cli/src/utils/archive-creator.js.map +1 -1
  738. package/dist/cli/cli/src/utils/cloud-submit.d.ts +1 -1
  739. package/dist/cli/cli/src/utils/cloud-submit.js +1 -1
  740. package/dist/cli/cli/src/utils/gh-submit.d.ts +10 -1
  741. package/dist/cli/cli/src/utils/gh-submit.d.ts.map +1 -1
  742. package/dist/cli/cli/src/utils/gh-submit.js +20 -4
  743. package/dist/cli/cli/src/utils/gh-submit.js.map +1 -1
  744. package/dist/cli/cli/src/utils/package-validator.d.ts +29 -6
  745. package/dist/cli/cli/src/utils/package-validator.d.ts.map +1 -1
  746. package/dist/cli/cli/src/utils/package-validator.js +88 -36
  747. package/dist/cli/cli/src/utils/package-validator.js.map +1 -1
  748. package/dist/cli/config/constants.d.ts +71 -0
  749. package/dist/cli/config/constants.d.ts.map +1 -1
  750. package/dist/cli/config/constants.js +77 -0
  751. package/dist/cli/config/constants.js.map +1 -1
  752. package/dist/cli/config/skills/marketplace-registry.d.ts +143 -0
  753. package/dist/cli/config/skills/marketplace-registry.d.ts.map +1 -0
  754. package/dist/cli/config/skills/marketplace-registry.js +192 -0
  755. package/dist/cli/config/skills/marketplace-registry.js.map +1 -0
  756. package/frontend/dist/assets/index-8d4b3ad2.js +4951 -0
  757. package/frontend/dist/assets/index-b6aded4c.css +42 -0
  758. package/frontend/dist/index.html +2 -2
  759. package/package.json +1 -1
  760. package/config/task_starters/build_e2e_test_plan_prompt.json +0 -51
  761. package/config/task_starters/build_tasks_prompt.json +0 -55
  762. package/config/task_starters/prompts/build_tasks_step1_milestone_structure.md +0 -274
  763. package/config/task_starters/prompts/e2e_test_plan_step1_build_tests.md +0 -391
  764. package/config/task_starters/prompts/e2e_test_plan_step2_run_tests.md +0 -240
  765. package/config/templates/customer-loyalty-team.json +0 -44
  766. package/config/templates/dtc-viral-content-team.json +0 -58
  767. package/config/templates/expert-innovation-team.json +0 -60
  768. package/config/templates/pragmatic-mvp-dev-team.json +0 -58
  769. package/config/templates/pro-sops/norms/content-production-pipeline.md +0 -39
  770. package/config/templates/pro-sops/norms/customer-onboarding-sop.md +0 -40
  771. package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts +0 -13
  772. package/dist/backend/backend/src/controllers/task-management/tickets.controller.d.ts.map +0 -1
  773. package/dist/backend/backend/src/controllers/task-management/tickets.controller.js +0 -214
  774. package/dist/backend/backend/src/controllers/task-management/tickets.controller.js.map +0 -1
  775. package/dist/backend/backend/src/models/Ticket.d.ts +0 -24
  776. package/dist/backend/backend/src/models/Ticket.d.ts.map +0 -1
  777. package/dist/backend/backend/src/models/Ticket.js +0 -102
  778. package/dist/backend/backend/src/models/Ticket.js.map +0 -1
  779. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts +0 -134
  780. package/dist/backend/backend/src/services/agent/task-planning.service.d.ts.map +0 -1
  781. package/dist/backend/backend/src/services/agent/task-planning.service.js +0 -291
  782. package/dist/backend/backend/src/services/agent/task-planning.service.js.map +0 -1
  783. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts +0 -71
  784. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.d.ts.map +0 -1
  785. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js +0 -304
  786. package/dist/backend/backend/src/services/monitoring/task-assignment-monitor.service.js.map +0 -1
  787. package/dist/backend/backend/src/services/project/task-folder.service.d.ts +0 -48
  788. package/dist/backend/backend/src/services/project/task-folder.service.d.ts.map +0 -1
  789. package/dist/backend/backend/src/services/project/task-folder.service.js +0 -193
  790. package/dist/backend/backend/src/services/project/task-folder.service.js.map +0 -1
  791. package/dist/backend/backend/src/services/project/task.service.d.ts +0 -47
  792. package/dist/backend/backend/src/services/project/task.service.d.ts.map +0 -1
  793. package/dist/backend/backend/src/services/project/task.service.js +0 -253
  794. package/dist/backend/backend/src/services/project/task.service.js.map +0 -1
  795. package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts +0 -130
  796. package/dist/backend/backend/src/services/project/ticket-editor.service.d.ts.map +0 -1
  797. package/dist/backend/backend/src/services/project/ticket-editor.service.js +0 -406
  798. package/dist/backend/backend/src/services/project/ticket-editor.service.js.map +0 -1
  799. package/dist/cli/backend/src/models/Ticket.d.ts +0 -24
  800. package/dist/cli/backend/src/models/Ticket.d.ts.map +0 -1
  801. package/dist/cli/backend/src/models/Ticket.js +0 -102
  802. package/dist/cli/backend/src/models/Ticket.js.map +0 -1
  803. package/frontend/dist/assets/index-2bdb57b9.css +0 -42
  804. package/frontend/dist/assets/index-54f1061c.js +0 -4963
@@ -0,0 +1,466 @@
1
+ /**
2
+ * Project ticket store — list / get / create / update / transition the
3
+ * markdown tickets of one project (specs/2026-09-28-project-tickets.md).
4
+ *
5
+ * Storage is the project folder itself (`<project>/.crewly/tickets/`), which
6
+ * is tracked in git and edited by humans too. So:
7
+ * - every read goes through a cheap mtime/size-keyed cache (one `readdir` +
8
+ * `stat` per list), which is how edits made by hand or by a `git pull` are
9
+ * picked up — no long-lived watcher to leak or miss events;
10
+ * - every write re-reads the file under the folder lock, applies only the
11
+ * owned-field / Log changes ({@link applyTicketChanges}) and writes
12
+ * atomically;
13
+ * - files that are not valid tickets are skipped with a warning and reported
14
+ * in `invalid[]`, never fatal.
15
+ *
16
+ * This layer knows nothing about teams, agents or WorkItems — permissions and
17
+ * the WorkItem link live in `ProjectTicketWorkflowService`.
18
+ *
19
+ * @module services/project-tickets/project-ticket.service
20
+ */
21
+ import * as fs from 'fs/promises';
22
+ import * as path from 'path';
23
+ import { PROJECT_TICKET_CONSTANTS } from '../../constants.js';
24
+ import { LoggerService } from '../core/logger.service.js';
25
+ import { resolveProjectDataDir } from '../core/crewly-home.utils.js';
26
+ import { atomicWriteFile } from '../../utils/file-io.utils.js';
27
+ import { isValidProjectTicketTransition, normalizeProjectTicketPriority, } from '../../types/project-ticket.types.js';
28
+ import { applyTicketChanges, formatLogLine, parseTicketFile, renderNewTicketFile, slugifyTitle, } from './ticket-file.js';
29
+ import { allocateTicketId, withTicketFolderLock } from './ticket-folder-lock.js';
30
+ import { ensureTicketsTracked } from './ticket-tracking.js';
31
+ /** An error with the HTTP status the API should answer with. */
32
+ export class ProjectTicketError extends Error {
33
+ status;
34
+ /**
35
+ * @param status - HTTP status (400 bad input, 403 not allowed, 404 missing, 409 conflict)
36
+ * @param message - Human-readable reason
37
+ */
38
+ constructor(status, message) {
39
+ super(message);
40
+ this.status = status;
41
+ this.name = 'ProjectTicketError';
42
+ }
43
+ }
44
+ /**
45
+ * Normalise acceptance input to criteria.
46
+ *
47
+ * @param items - Strings or criteria
48
+ * @returns Criteria (empty texts dropped)
49
+ */
50
+ function toCriteria(items) {
51
+ return items
52
+ .map((c) => (typeof c === 'string' ? { text: c, done: false } : { text: String(c.text ?? ''), done: c.done === true }))
53
+ .map((c) => ({ ...c, text: c.text.trim() }))
54
+ .filter((c) => c.text.length > 0);
55
+ }
56
+ /**
57
+ * Read a priority input or fail with 400.
58
+ *
59
+ * @param value - Raw priority
60
+ * @returns The priority
61
+ * @throws ProjectTicketError(400) when unreadable
62
+ */
63
+ function requirePriority(value) {
64
+ const p = normalizeProjectTicketPriority(value);
65
+ if (!p)
66
+ throw new ProjectTicketError(400, 'priority must be P0, P1, P2 or P3');
67
+ return p;
68
+ }
69
+ /**
70
+ * Clean a labels list.
71
+ *
72
+ * @param labels - Raw labels
73
+ * @returns Trimmed, non-empty, de-duplicated
74
+ */
75
+ function cleanLabels(labels) {
76
+ return [...new Set(labels.map((l) => String(l).trim()).filter((l) => l.length > 0))];
77
+ }
78
+ export class ProjectTicketService {
79
+ static instance = null;
80
+ logger;
81
+ now;
82
+ ensureTracked;
83
+ /** dir → fileName → parsed entry */
84
+ cache = new Map();
85
+ /** Invalid files already warned about (`path@mtime`) */
86
+ warned = new Set();
87
+ /** Projects whose git tracking was checked this process */
88
+ trackingChecked = new Set();
89
+ /**
90
+ * @param deps - Optional dependencies
91
+ */
92
+ constructor(deps = {}) {
93
+ this.logger = deps.logger ?? LoggerService.getInstance().createComponentLogger('ProjectTicketService');
94
+ this.now = deps.now ?? (() => new Date().toISOString());
95
+ this.ensureTracked = deps.ensureTracked ?? ((p) => ensureTicketsTracked(p));
96
+ }
97
+ /**
98
+ * Process-wide instance.
99
+ *
100
+ * @returns The singleton
101
+ */
102
+ static getInstance() {
103
+ if (!ProjectTicketService.instance)
104
+ ProjectTicketService.instance = new ProjectTicketService();
105
+ return ProjectTicketService.instance;
106
+ }
107
+ /** Reset the singleton (tests). */
108
+ static resetInstance() {
109
+ ProjectTicketService.instance = null;
110
+ }
111
+ /**
112
+ * The tickets folder of a project.
113
+ *
114
+ * @param projectPath - Absolute project root
115
+ * @returns `<project>/.crewly/tickets`
116
+ */
117
+ ticketsDir(projectPath) {
118
+ return path.join(resolveProjectDataDir(path.resolve(projectPath)), PROJECT_TICKET_CONSTANTS.DIR_NAME);
119
+ }
120
+ /**
121
+ * Every ticket of a project (plus the files that are not valid tickets).
122
+ * Sorted by status order, then priority, then id number.
123
+ *
124
+ * @param projectPath - Absolute project root
125
+ * @returns Tickets and invalid files
126
+ */
127
+ async list(projectPath) {
128
+ const root = path.resolve(projectPath);
129
+ const dir = this.ticketsDir(root);
130
+ let names;
131
+ try {
132
+ names = (await fs.readdir(dir)).filter((n) => n.endsWith('.md'));
133
+ }
134
+ catch (err) {
135
+ if (err.code === 'ENOENT')
136
+ return { tickets: [], invalid: [] };
137
+ throw err;
138
+ }
139
+ const dirCache = this.cache.get(dir) ?? new Map();
140
+ this.cache.set(dir, dirCache);
141
+ for (const cached of [...dirCache.keys()])
142
+ if (!names.includes(cached))
143
+ dirCache.delete(cached);
144
+ const tickets = [];
145
+ const invalid = [];
146
+ const seen = new Map();
147
+ for (const fileName of names.sort()) {
148
+ const filePath = path.join(dir, fileName);
149
+ const result = await this.readCached(dirCache, filePath, fileName);
150
+ if (!result)
151
+ continue;
152
+ if (!result.ok) {
153
+ invalid.push({ fileName, error: result.error });
154
+ continue;
155
+ }
156
+ const dupOf = seen.get(result.file.fields.id);
157
+ if (dupOf) {
158
+ invalid.push({ fileName, error: `duplicate id ${result.file.fields.id} (also in ${dupOf})` });
159
+ continue;
160
+ }
161
+ seen.set(result.file.fields.id, fileName);
162
+ tickets.push(this.toTicket(result, fileName, filePath, root, false));
163
+ }
164
+ const statusOrder = PROJECT_TICKET_CONSTANTS.STATUSES;
165
+ const prioOrder = PROJECT_TICKET_CONSTANTS.PRIORITIES;
166
+ const num = (id) => Number(id.split('-').pop());
167
+ tickets.sort((a, b) => statusOrder.indexOf(a.status) - statusOrder.indexOf(b.status) ||
168
+ prioOrder.indexOf(a.priority) - prioOrder.indexOf(b.priority) ||
169
+ num(a.id) - num(b.id));
170
+ return { tickets, invalid };
171
+ }
172
+ /**
173
+ * One ticket by id, with its raw body.
174
+ *
175
+ * @param projectPath - Absolute project root
176
+ * @param id - Ticket id (case-insensitive)
177
+ * @returns The ticket, or null
178
+ */
179
+ async get(projectPath, id) {
180
+ const { tickets } = await this.list(projectPath);
181
+ const hit = tickets.find((t) => t.id.toLowerCase() === id.toLowerCase());
182
+ if (!hit)
183
+ return null;
184
+ const result = parseTicketFile(await fs.readFile(hit.filePath, 'utf8'));
185
+ return result.ok ? this.toTicket(result, hit.fileName, hit.filePath, hit.projectPath, true) : null;
186
+ }
187
+ /**
188
+ * Create a ticket. Allocates the id under the folder lock and checks git
189
+ * tracking on the first write into the project.
190
+ *
191
+ * @param projectPath - Absolute project root
192
+ * @param projectName - Project name (id prefix on first allocation)
193
+ * @param input - Ticket content
194
+ * @param actor - Who creates it (`owner`, a session name, `system`)
195
+ * @returns The new ticket
196
+ * @throws ProjectTicketError(400) on invalid input
197
+ */
198
+ async create(projectPath, projectName, input, actor) {
199
+ const title = typeof input.title === 'string' ? input.title.replace(/\s+/g, ' ').trim() : '';
200
+ if (!title)
201
+ throw new ProjectTicketError(400, 'title is required');
202
+ const priority = input.priority ? requirePriority(input.priority) : PROJECT_TICKET_CONSTANTS.DEFAULT_PRIORITY;
203
+ const status = input.status ?? PROJECT_TICKET_CONSTANTS.DEFAULT_STATUS;
204
+ const root = path.resolve(projectPath);
205
+ const dir = this.ticketsDir(root);
206
+ const now = this.now();
207
+ const created = await withTicketFolderLock(dir, async () => {
208
+ const id = await allocateTicketId(dir, projectName);
209
+ const fields = {
210
+ id,
211
+ title,
212
+ status,
213
+ priority,
214
+ assignee: input.assignee ?? null,
215
+ team: input.team ?? null,
216
+ labels: cleanLabels(input.labels ?? []),
217
+ ownerReview: input.ownerReview === true,
218
+ createdAt: input.createdAt ?? now,
219
+ updatedAt: now,
220
+ workItemId: null,
221
+ requestId: input.requestId ?? null,
222
+ source: input.source ?? null,
223
+ migratedFrom: input.migratedFrom ?? null,
224
+ };
225
+ const fileName = `${id}-${slugifyTitle(title)}.md`;
226
+ const filePath = path.join(dir, fileName);
227
+ const content = renderNewTicketFile({
228
+ fields,
229
+ description: input.description ?? '',
230
+ acceptance: toCriteria(input.acceptance ?? []),
231
+ logLines: [formatLogLine(actor, `created (${status})`, now)],
232
+ });
233
+ await atomicWriteFile(filePath, content);
234
+ return { fileName, filePath, content };
235
+ });
236
+ await this.checkTracking(root);
237
+ const parsed = parseTicketFile(created.content);
238
+ if (!parsed.ok)
239
+ throw new ProjectTicketError(500, `created ticket did not parse: ${parsed.error}`);
240
+ this.logger.info('Project ticket created', { projectPath: root, id: parsed.file.fields.id, actor });
241
+ return this.toTicket(parsed, created.fileName, created.filePath, root, true);
242
+ }
243
+ /**
244
+ * Apply a mutation computed from the current ticket, under the folder lock.
245
+ * The ticket is re-read inside the lock, so the mutation always sees the
246
+ * latest file (a human edit or another writer).
247
+ *
248
+ * @param projectPath - Absolute project root
249
+ * @param id - Ticket id
250
+ * @param actor - Who changes it (for Log lines)
251
+ * @param compute - Current ticket → changes (null = nothing to do)
252
+ * @returns The ticket after the change
253
+ * @throws ProjectTicketError(404) when the ticket does not exist; whatever `compute` throws
254
+ */
255
+ async mutate(projectPath, id, actor, compute) {
256
+ const root = path.resolve(projectPath);
257
+ const dir = this.ticketsDir(root);
258
+ const result = await withTicketFolderLock(dir, async () => {
259
+ const current = await this.get(root, id);
260
+ if (!current)
261
+ throw new ProjectTicketError(404, `Ticket not found: ${id}`);
262
+ const mutation = await compute(current);
263
+ if (!mutation)
264
+ return current;
265
+ const now = this.now();
266
+ const changes = {
267
+ fields: { ...(mutation.fields ?? {}), updatedAt: now },
268
+ description: mutation.description,
269
+ acceptance: mutation.acceptance,
270
+ logLines: (mutation.log ?? []).map((m) => formatLogLine(actor, m, now)),
271
+ };
272
+ const before = await fs.readFile(current.filePath, 'utf8');
273
+ const after = applyTicketChanges(before, changes);
274
+ if (after !== before)
275
+ await atomicWriteFile(current.filePath, after);
276
+ const parsed = parseTicketFile(after);
277
+ if (!parsed.ok)
278
+ throw new ProjectTicketError(500, `ticket no longer parses: ${parsed.error}`);
279
+ return this.toTicket(parsed, current.fileName, current.filePath, root, true);
280
+ });
281
+ return result;
282
+ }
283
+ /**
284
+ * Change editable fields / sections.
285
+ *
286
+ * @param projectPath - Absolute project root
287
+ * @param id - Ticket id
288
+ * @param input - Changes
289
+ * @param actor - Who changes it
290
+ * @param note - Optional Log note
291
+ * @returns Updated ticket
292
+ * @throws ProjectTicketError(400/404)
293
+ */
294
+ async update(projectPath, id, input, actor, note) {
295
+ return this.mutate(projectPath, id, actor, () => {
296
+ const fields = {};
297
+ const changed = [];
298
+ if (input.title !== undefined) {
299
+ const t = String(input.title).replace(/\s+/g, ' ').trim();
300
+ if (!t)
301
+ throw new ProjectTicketError(400, 'title cannot be empty');
302
+ fields.title = t;
303
+ changed.push('title');
304
+ }
305
+ if (input.priority !== undefined) {
306
+ fields.priority = requirePriority(input.priority);
307
+ changed.push(`priority ${fields.priority}`);
308
+ }
309
+ if (input.labels !== undefined) {
310
+ fields.labels = cleanLabels(input.labels);
311
+ changed.push('labels');
312
+ }
313
+ if (input.team !== undefined) {
314
+ fields.team = input.team || null;
315
+ changed.push('team');
316
+ }
317
+ if (input.ownerReview !== undefined) {
318
+ fields.ownerReview = input.ownerReview === true;
319
+ changed.push('ownerReview');
320
+ }
321
+ if (input.requestId !== undefined) {
322
+ fields.requestId = input.requestId || null;
323
+ changed.push('requestId');
324
+ }
325
+ if (input.description !== undefined)
326
+ changed.push('description');
327
+ if (input.acceptance !== undefined)
328
+ changed.push('acceptance criteria');
329
+ if (changed.length === 0 && !note)
330
+ return null;
331
+ const log = changed.length > 0 ? [`updated ${changed.join(', ')}${note ? ` — ${note}` : ''}`] : [String(note)];
332
+ return {
333
+ fields,
334
+ description: input.description,
335
+ acceptance: input.acceptance !== undefined ? toCriteria(input.acceptance) : undefined,
336
+ log,
337
+ };
338
+ });
339
+ }
340
+ /**
341
+ * Move a ticket to another status, enforcing the state machine.
342
+ *
343
+ * @param projectPath - Absolute project root
344
+ * @param id - Ticket id
345
+ * @param to - New status
346
+ * @param actor - Who moves it
347
+ * @param note - Optional reason (goes into the Log line)
348
+ * @param extra - Other owned fields to set in the same write (assignee, workItemId…)
349
+ * @returns Updated ticket
350
+ * @throws ProjectTicketError(400) for an invalid transition, (404) when missing
351
+ */
352
+ async transition(projectPath, id, to, actor, note, extra = {}) {
353
+ return this.mutate(projectPath, id, actor, (t) => {
354
+ if (t.status === to)
355
+ return null;
356
+ if (!isValidProjectTicketTransition(t.status, to)) {
357
+ throw new ProjectTicketError(400, `Cannot move ${t.id} from ${t.status} to ${to}`);
358
+ }
359
+ return { fields: { ...extra, status: to }, log: [`${t.status} → ${to}${note ? ` — ${note}` : ''}`] };
360
+ });
361
+ }
362
+ /**
363
+ * Append a note to the Log.
364
+ *
365
+ * @param projectPath - Absolute project root
366
+ * @param id - Ticket id
367
+ * @param actor - Who writes it
368
+ * @param note - The note
369
+ * @returns Updated ticket
370
+ */
371
+ async appendLog(projectPath, id, actor, note) {
372
+ const text = String(note ?? '').trim();
373
+ if (!text)
374
+ throw new ProjectTicketError(400, 'note is required');
375
+ return this.mutate(projectPath, id, actor, () => ({ log: [text] }));
376
+ }
377
+ /**
378
+ * Read a file through the cache.
379
+ *
380
+ * @param dirCache - Cache of the folder
381
+ * @param filePath - File
382
+ * @param fileName - Name
383
+ * @returns Parse result, or null when the file vanished / is not a file
384
+ */
385
+ async readCached(dirCache, filePath, fileName) {
386
+ let stat;
387
+ try {
388
+ stat = await fs.stat(filePath);
389
+ }
390
+ catch {
391
+ dirCache.delete(fileName);
392
+ return null;
393
+ }
394
+ if (!stat.isFile())
395
+ return null;
396
+ const hit = dirCache.get(fileName);
397
+ if (hit && hit.mtimeMs === stat.mtimeMs && hit.size === stat.size)
398
+ return hit.result;
399
+ let result;
400
+ try {
401
+ result = parseTicketFile(await fs.readFile(filePath, 'utf8'));
402
+ }
403
+ catch (err) {
404
+ result = { ok: false, error: err instanceof Error ? err.message : String(err) };
405
+ }
406
+ dirCache.set(fileName, { mtimeMs: stat.mtimeMs, size: stat.size, result });
407
+ if (!result.ok) {
408
+ const key = `${filePath}@${stat.mtimeMs}`;
409
+ if (!this.warned.has(key)) {
410
+ this.warned.add(key);
411
+ this.logger.warn('Skipping invalid project ticket file', { filePath, error: result.error });
412
+ }
413
+ }
414
+ return result;
415
+ }
416
+ /**
417
+ * Build the API shape of a parsed file.
418
+ *
419
+ * @param result - Successful parse
420
+ * @param fileName - File name
421
+ * @param filePath - Absolute path
422
+ * @param projectPath - Project root
423
+ * @param withBody - Include the raw body
424
+ * @returns Ticket
425
+ */
426
+ toTicket(result, fileName, filePath, projectPath, withBody) {
427
+ const { file } = result;
428
+ return {
429
+ ...file.fields,
430
+ fileName,
431
+ filePath,
432
+ projectPath,
433
+ description: file.description,
434
+ acceptance: file.acceptance,
435
+ log: file.log,
436
+ extra: file.extra,
437
+ ...(withBody ? { body: file.body } : {}),
438
+ };
439
+ }
440
+ /**
441
+ * Check git tracking once per project per process (best-effort).
442
+ *
443
+ * @param projectPath - Project root
444
+ */
445
+ async checkTracking(projectPath) {
446
+ if (this.trackingChecked.has(projectPath))
447
+ return;
448
+ this.trackingChecked.add(projectPath);
449
+ try {
450
+ const outcome = await this.ensureTracked(projectPath);
451
+ if (outcome === 'unignored') {
452
+ this.logger.info('Project .gitignore updated so .crewly/tickets/ is tracked', { projectPath });
453
+ }
454
+ else if (outcome === 'still-ignored') {
455
+ this.logger.warn('.crewly/tickets/ is ignored by git and could not be re-included', { projectPath });
456
+ }
457
+ }
458
+ catch (err) {
459
+ this.logger.warn('Could not check git tracking of .crewly/tickets/', {
460
+ projectPath,
461
+ error: err instanceof Error ? err.message : String(err),
462
+ });
463
+ }
464
+ }
465
+ }
466
+ //# sourceMappingURL=project-ticket.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-ticket.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/project-ticket.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,GAQ/B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,YAAY,GAGb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAA8B,MAAM,sBAAsB,CAAC;AAExF,gEAAgE;AAChE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAKf;IAJ5B;;;OAGG;IACH,YAA4B,MAAc,EAAE,OAAe;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QADW,WAAM,GAAN,MAAM,CAAQ;QAExC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AA4DD;;;;;GAKG;AACH,SAAS,UAAU,CAAC,KAA6C;IAC/D,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;SACtH,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,CAAC,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,mCAAmC,CAAC,CAAC;IAC/E,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,MAAiB;IACpC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAC,QAAQ,GAAgC,IAAI,CAAC;IAE3C,MAAM,CAAkB;IACxB,GAAG,CAAe;IAClB,aAAa,CAA0D;IACxF,oCAAoC;IACnB,KAAK,GAAG,IAAI,GAAG,EAAmC,CAAC;IACpE,wDAAwD;IACvC,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAC5C,2DAA2D;IAC1C,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAErD;;OAEG;IACH,YAAY,OAAiC,EAAE;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;QACvG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,oBAAoB,CAAC,QAAQ;YAAE,oBAAoB,CAAC,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC/F,OAAO,oBAAoB,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,mCAAmC;IACnC,MAAM,CAAC,aAAa;QAClB,oBAAoB,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,WAAmB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IACxG,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,WAAmB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YAC1F,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAsB,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEhG,MAAM,OAAO,GAAoB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAwB,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;QACvC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnE,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;gBAChD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,aAAa,KAAK,GAAG,EAAE,CAAC,CAAC;gBAC9F,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,WAAW,GAAG,wBAAwB,CAAC,QAA6B,CAAC;QAC3E,MAAM,SAAS,GAAG,wBAAwB,CAAC,UAA+B,CAAC;QAC3E,MAAM,GAAG,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC7D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACxB,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,GAAG,CAAC,WAAmB,EAAE,EAAU;QACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrG,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,WAAmB,EAAE,KAA+B,EAAE,KAAa;QACnG,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,gBAAgB,CAAC;QAC9G,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,wBAAwB,CAAC,cAAc,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YACpD,MAAM,MAAM,GAAwB;gBAClC,EAAE;gBACF,KAAK;gBACL,MAAM;gBACN,QAAQ;gBACR,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;gBACxB,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;gBACvC,WAAW,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI;gBACvC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG;gBACjC,SAAS,EAAE,GAAG;gBACd,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;gBAClC,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;gBAC5B,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,IAAI;aACzC,CAAC;YACF,MAAM,QAAQ,GAAG,GAAG,EAAE,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,mBAAmB,CAAC;gBAClC,MAAM;gBACN,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;gBACpC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAC9C,QAAQ,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,MAAM,GAAG,EAAE,GAAG,CAAC,CAAC;aAC7D,CAAC,CAAC;YACH,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,iCAAiC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,MAAM,CACV,WAAmB,EACnB,EAAU,EACV,KAAa,EACb,OAA0F;QAE1F,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE,CAAC,CAAC;YAC3E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,QAAQ;gBAAE,OAAO,OAAO,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,OAAO,GAAkB;gBAC7B,MAAM,EAAE,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;gBACtD,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;aACxE,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,IAAI,KAAK,KAAK,MAAM;gBAAE,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACrE,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,4BAA4B,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9F,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/E,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,WAAmB,EAAE,EAAU,EAAE,KAA+B,EAAE,KAAa,EAAE,IAAa;QACzG,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAiC,EAAE,CAAC;YAChD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1D,IAAI,CAAC,CAAC;oBAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;gBACnE,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;gBACpC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS;gBAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/G,OAAO;gBACL,MAAM;gBACN,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;gBACrF,GAAG;aACJ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,UAAU,CACd,WAAmB,EACnB,EAAU,EACV,EAAuB,EACvB,KAAa,EACb,IAAa,EACb,QAAsC,EAAE;QAExC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;YAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,EAAE;gBAAE,OAAO,IAAI,CAAC;YACjC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,MAAM,OAAO,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACvG,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CAAC,WAAmB,EAAE,EAAU,EAAE,KAAa,EAAE,IAAY;QAC1E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,UAAU,CAAC,QAAiC,EAAE,QAAgB,EAAE,QAAgB;QAC5F,IAAI,IAAI,CAAC;QACT,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;QACrF,IAAI,MAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClF,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;OASG;IACK,QAAQ,CACd,MAAgD,EAChD,QAAgB,EAChB,QAAgB,EAChB,WAAmB,EACnB,QAAiB;QAEjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;QACxB,OAAO;YACL,GAAG,IAAI,CAAC,MAAM;YACd,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC7C,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO;QAClD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2DAA2D,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACjG,CAAC;iBAAM,IAAI,OAAO,KAAK,eAAe,EAAE,CAAC;gBACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE;gBACnE,WAAW;gBACX,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;IACH,CAAC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Project ticket file format — parse and edit one `<ID>-<slug>.md` file
3
+ * (specs/2026-09-28-project-tickets.md §2).
4
+ *
5
+ * The file is owned by humans as much as by Crewly: people edit the body
6
+ * freely, add frontmatter keys, write comments. So the writer here never
7
+ * re-renders a file. It edits in place:
8
+ * - frontmatter: only the keys in {@link OWNED_TICKET_FIELDS} are set, through
9
+ * the `yaml` Document API, so unknown keys, key order and comments survive;
10
+ * when no owned key changes, the frontmatter bytes are kept as they were;
11
+ * - body: lines are appended to the `## Log` section, and the Description /
12
+ * Acceptance sections are replaced only when a caller explicitly asks.
13
+ * Everything else is preserved byte-for-byte.
14
+ *
15
+ * @module services/project-tickets/ticket-file
16
+ */
17
+ import { type ProjectTicketCriterion, type ProjectTicketFields } from '../../types/project-ticket.types.js';
18
+ /** Ticket ids: `<KEY>-<n>` */
19
+ export declare const TICKET_ID_RE: RegExp;
20
+ /** A successfully parsed ticket file. */
21
+ export interface ParsedTicketFile {
22
+ /** The owned fields, validated and normalised */
23
+ fields: ProjectTicketFields;
24
+ /** Frontmatter keys the service does not own */
25
+ extra: Record<string, unknown>;
26
+ /** Everything after the closing `---` line, verbatim */
27
+ body: string;
28
+ /** Text of the Description section (trimmed) */
29
+ description: string;
30
+ /** Acceptance criteria */
31
+ acceptance: ProjectTicketCriterion[];
32
+ /** Log lines (without the leading `- `) */
33
+ log: string[];
34
+ }
35
+ /** Parse outcome: a ticket, or why the file is not one. */
36
+ export type ParseTicketResult = {
37
+ ok: true;
38
+ file: ParsedTicketFile;
39
+ } | {
40
+ ok: false;
41
+ error: string;
42
+ };
43
+ /** Changes applied by {@link applyTicketChanges}. */
44
+ export interface TicketChanges {
45
+ /** Owned frontmatter fields to set */
46
+ fields?: Partial<ProjectTicketFields>;
47
+ /** Replace the Description section content */
48
+ description?: string;
49
+ /** Replace the Acceptance criteria section content */
50
+ acceptance?: ProjectTicketCriterion[];
51
+ /** Lines to append to the Log section (without `- `) */
52
+ logLines?: string[];
53
+ }
54
+ /** Content of a brand-new ticket file. */
55
+ export interface NewTicketContent {
56
+ fields: ProjectTicketFields;
57
+ description: string;
58
+ acceptance: ProjectTicketCriterion[];
59
+ logLines: string[];
60
+ }
61
+ /**
62
+ * Render acceptance criteria as checkbox lines.
63
+ *
64
+ * @param criteria - Criteria
65
+ * @param eol - Line ending
66
+ * @returns Section content
67
+ */
68
+ export declare function renderCriteria(criteria: readonly ProjectTicketCriterion[], eol?: string): string;
69
+ /**
70
+ * Parse a ticket file. Never throws: an unreadable file comes back as
71
+ * `{ ok: false, error }` so callers can skip it with a warning.
72
+ *
73
+ * @param content - Whole file content
74
+ * @returns The parsed ticket, or the reason it is not one
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const r = parseTicketFile(await fs.readFile(p, 'utf8'));
79
+ * if (r.ok) console.log(r.file.fields.status);
80
+ * ```
81
+ */
82
+ export declare function parseTicketFile(content: string): ParseTicketResult;
83
+ /**
84
+ * Apply changes to a ticket file, touching only owned frontmatter keys and
85
+ * the sections asked for.
86
+ *
87
+ * @param content - Current file content
88
+ * @param changes - What to change
89
+ * @returns New file content (identical to `content` when nothing changes)
90
+ * @throws When the file has no parseable frontmatter mapping
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * const next = applyTicketChanges(text, { fields: { status: 'ready' }, logLines: ['… · owner · ready'] });
95
+ * ```
96
+ */
97
+ export declare function applyTicketChanges(content: string, changes: TicketChanges): string;
98
+ /**
99
+ * Render a brand-new ticket file.
100
+ *
101
+ * @param content - Fields, description, criteria and the first log lines
102
+ * @returns File content
103
+ */
104
+ export declare function renderNewTicketFile(content: NewTicketContent): string;
105
+ /**
106
+ * A file-name slug for a title (`Export as CSV!` → `export-as-csv`).
107
+ *
108
+ * @param title - Ticket title
109
+ * @returns Slug (never empty)
110
+ */
111
+ export declare function slugifyTitle(title: string): string;
112
+ /**
113
+ * Format one Log line: `<iso> · <actor> · <message>`.
114
+ *
115
+ * @param actor - Who did it (`owner`, a session name, `system`)
116
+ * @param message - What happened
117
+ * @param at - Timestamp (defaults to now)
118
+ * @returns The line (without `- `)
119
+ */
120
+ export declare function formatLogLine(actor: string, message: string, at?: string): string;
121
+ //# sourceMappingURL=ticket-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket-file.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-file.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACzB,MAAM,qCAAqC,CAAC;AAK7C,8BAA8B;AAC9B,eAAO,MAAM,YAAY,QAAuB,CAAC;AAejD,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpG,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,UAAU,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACtC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAkLD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,EAAE,GAAG,SAAO,GAAG,MAAM,CAG9F;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAsClE;AAiFD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAmClF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CA6BrE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAE,MAAiC,GAAG,MAAM,CAE3G"}