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,182 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # project-tickets — a project's own backlog (<project>/.crewly/tickets/)
4
+ #
5
+ # Backed by /api/project-tickets (specs/2026-09-28-project-tickets.md §6).
6
+ #
7
+ # Usage:
8
+ # bash execute.sh list [--project P] [--status ready]
9
+ # bash execute.sh show --project P --id APP-12
10
+ # bash execute.sh create --project P --title "…" [--description "…"] [--acceptance "…" …]
11
+ # [--priority P1] [--labels a,b] [--team <teamId>] [--status ready]
12
+ # [--source request:TKT-012] [--request-id <id>] [--owner-review]
13
+ # bash execute.sh update --project P --id APP-12 [--title …] [--priority …] [--labels …]
14
+ # [--description …] [--acceptance "…" …] [--status …] [--note "…"]
15
+ # bash execute.sh claim --project P --id APP-12
16
+ # bash execute.sh release --project P --id APP-12 [--note "why"]
17
+ # bash execute.sh assign --project P --id APP-12 --to <session> [--no-start] (owner / orc / lead)
18
+ # bash execute.sh log --project P --id APP-12 --note "progress"
19
+ # bash execute.sh '{"action":"create","project":"P","title":"…"}'
20
+ #
21
+ # P = project id, name, or absolute path.
22
+ # =============================================================================
23
+ set -euo pipefail
24
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
25
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
26
+
27
+ print_usage() {
28
+ cat <<'EOF_USAGE'
29
+ Usage:
30
+ bash execute.sh list [--project P] [--status ready] Tickets of a project (or of all your teams' projects)
31
+ bash execute.sh show --project P --id APP-12 One ticket with its full body
32
+ bash execute.sh create --project P --title "…" [--description "…"] [--acceptance "…" …]
33
+ [--priority P0-P3] [--labels a,b] [--team <teamId>] [--status backlog|ready]
34
+ [--source request:TKT-012] [--request-id <id>] [--owner-review]
35
+ bash execute.sh update --project P --id APP-12 [--title …] [--priority …] [--labels …]
36
+ [--description …] [--acceptance "…" …] [--status …] [--note "…"]
37
+ bash execute.sh claim --project P --id APP-12 Take a ready ticket (creates your WorkItem)
38
+ bash execute.sh release --project P --id APP-12 [--note …] Give your ticket back (→ ready)
39
+ bash execute.sh assign --project P --id APP-12 --to <session> [--no-start]
40
+ Orchestrator / team lead: put someone on it
41
+ bash execute.sh log --project P --id APP-12 --note "…" Add a progress note to the ticket's Log
42
+
43
+ P = project id, name or absolute path. Workers' new tickets start in backlog;
44
+ the owner, the orchestrator or a team lead makes them ready.
45
+ EOF_USAGE
46
+ }
47
+
48
+ ACTION=""; PROJECT=""; ID=""; TITLE=""; DESCRIPTION=""; PRIORITY=""; LABELS=""; TEAM=""
49
+ STATUS=""; SOURCE=""; REQUEST_ID=""; NOTE=""; OWNER_REVIEW=""; ASSIGNEE=""; START="true"
50
+ ACCEPTANCE_JSON="null"
51
+ HAS_DESCRIPTION=0
52
+
53
+ if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
54
+ J="$1"; shift
55
+ ACTION=$(printf '%s' "$J" | jq -r '.action // empty')
56
+ PROJECT=$(printf '%s' "$J" | jq -r '.project // .projectPath // .projectId // empty')
57
+ ID=$(printf '%s' "$J" | jq -r '.id // .ticket // empty')
58
+ TITLE=$(printf '%s' "$J" | jq -r '.title // empty')
59
+ if printf '%s' "$J" | jq -e 'has("description")' >/dev/null; then
60
+ DESCRIPTION=$(printf '%s' "$J" | jq -r '.description // ""'); HAS_DESCRIPTION=1
61
+ fi
62
+ PRIORITY=$(printf '%s' "$J" | jq -r '.priority // empty')
63
+ LABELS=$(printf '%s' "$J" | jq -r 'if (.labels|type) == "array" then (.labels|join(",")) else (.labels // empty) end')
64
+ TEAM=$(printf '%s' "$J" | jq -r '.team // empty')
65
+ STATUS=$(printf '%s' "$J" | jq -r '.status // empty')
66
+ SOURCE=$(printf '%s' "$J" | jq -r '.source // empty')
67
+ REQUEST_ID=$(printf '%s' "$J" | jq -r '.requestId // empty')
68
+ NOTE=$(printf '%s' "$J" | jq -r '.note // empty')
69
+ OWNER_REVIEW=$(printf '%s' "$J" | jq -r 'if .ownerReview == true then "true" else empty end')
70
+ ACCEPTANCE_JSON=$(printf '%s' "$J" | jq -c 'if (.acceptance|type) == "array" then .acceptance else null end')
71
+ ASSIGNEE=$(printf '%s' "$J" | jq -r '.to // .assignee // empty')
72
+ START=$(printf '%s' "$J" | jq -r 'if .start == false then "false" else "true" end')
73
+ fi
74
+ if [[ -z "$ACTION" && $# -gt 0 && ${1:0:1} != '-' ]]; then ACTION="$1"; shift; fi
75
+
76
+ while [[ $# -gt 0 ]]; do
77
+ case "$1" in
78
+ --project|-p) [ $# -ge 2 ] || error_exit "--project requires a value"; PROJECT="$2"; shift 2 ;;
79
+ --id|--ticket) [ $# -ge 2 ] || error_exit "--id requires a value"; ID="$2"; shift 2 ;;
80
+ --title) [ $# -ge 2 ] || error_exit "--title requires a value"; TITLE="$2"; shift 2 ;;
81
+ --description) [ $# -ge 2 ] || error_exit "--description requires a value"; DESCRIPTION="$2"; HAS_DESCRIPTION=1; shift 2 ;;
82
+ --acceptance) [ $# -ge 2 ] || error_exit "--acceptance requires a value"
83
+ ACCEPTANCE_JSON=$(jq -c --arg a "$2" 'if . == null then [$a] else . + [$a] end' <<<"$ACCEPTANCE_JSON"); shift 2 ;;
84
+ --priority) [ $# -ge 2 ] || error_exit "--priority requires a value"; PRIORITY="$2"; shift 2 ;;
85
+ --labels) [ $# -ge 2 ] || error_exit "--labels requires a value"; LABELS="$2"; shift 2 ;;
86
+ --team) [ $# -ge 2 ] || error_exit "--team requires a value"; TEAM="$2"; shift 2 ;;
87
+ --status) [ $# -ge 2 ] || error_exit "--status requires a value"; STATUS="$2"; shift 2 ;;
88
+ --source) [ $# -ge 2 ] || error_exit "--source requires a value"; SOURCE="$2"; shift 2 ;;
89
+ --request-id) [ $# -ge 2 ] || error_exit "--request-id requires a value"; REQUEST_ID="$2"; shift 2 ;;
90
+ --note) [ $# -ge 2 ] || error_exit "--note requires a value"; NOTE="$2"; shift 2 ;;
91
+ --owner-review) OWNER_REVIEW="true"; shift ;;
92
+ --to|--assignee) [ $# -ge 2 ] || error_exit "--to requires a value"; ASSIGNEE="$2"; shift 2 ;;
93
+ --no-start) START="false"; shift ;;
94
+ --full) shift ;;
95
+ --help|-h) print_usage; exit 0 ;;
96
+ *) error_exit "Unknown option: $1" ;;
97
+ esac
98
+ done
99
+
100
+ [ -n "$ACTION" ] || { print_usage >&2; error_exit "Missing action: list | show | create | update | claim | release | assign | log"; }
101
+
102
+ # URL-encode a path segment (project paths contain slashes).
103
+ enc() { jq -rn --arg v "$1" '$v|@uri'; }
104
+
105
+ # Compact one-line-per-ticket view for lists.
106
+ TICKET_ROW='{id, title, status, priority, assignee, labels, workItemId}'
107
+
108
+ case "$ACTION" in
109
+ list)
110
+ if [ -n "$PROJECT" ]; then
111
+ QS=""; [ -n "$STATUS" ] && QS="?status=$(enc "$STATUS")"
112
+ api_call GET "/project-tickets/$(enc "$PROJECT")${QS}" | jq "{success, project: .data.project, tickets: [.data.tickets[] | ${TICKET_ROW}], invalid: .data.invalid}"
113
+ else
114
+ QS=""; [ -n "$STATUS" ] && QS="?status=$(enc "$STATUS")"
115
+ api_call GET "/project-tickets${QS}" | jq "{success, projects: [.data[] | {project, tickets: [.tickets[] | ${TICKET_ROW}]}]}"
116
+ fi
117
+ ;;
118
+ show)
119
+ require_param "project" "$PROJECT"; require_param "id" "$ID"
120
+ api_call GET "/project-tickets/$(enc "$PROJECT")/$(enc "$ID")" | jq '{success, ticket: (.data | del(.extra))}'
121
+ ;;
122
+ create)
123
+ require_param "project" "$PROJECT"; require_param "title" "$TITLE"
124
+ BODY=$(jq -n --arg title "$TITLE" --arg description "$DESCRIPTION" --argjson hasDescription "$HAS_DESCRIPTION" \
125
+ --arg priority "$PRIORITY" --arg labels "$LABELS" --arg team "$TEAM" --arg status "$STATUS" \
126
+ --arg source "$SOURCE" --arg requestId "$REQUEST_ID" --arg ownerReview "$OWNER_REVIEW" --argjson acceptance "$ACCEPTANCE_JSON" \
127
+ '{title: $title}
128
+ + (if $hasDescription == 1 then {description: $description} else {} end)
129
+ + (if $acceptance != null then {acceptance: $acceptance} else {} end)
130
+ + (if $priority != "" then {priority: $priority} else {} end)
131
+ + (if $labels != "" then {labels: ($labels | split(",") | map(gsub("^\\s+|\\s+$"; "")))} else {} end)
132
+ + (if $team != "" then {team: $team} else {} end)
133
+ + (if $status != "" then {status: $status} else {} end)
134
+ + (if $source != "" then {source: $source} else {} end)
135
+ + (if $requestId != "" then {requestId: $requestId} else {} end)
136
+ + (if $ownerReview == "true" then {ownerReview: true} else {} end)')
137
+ api_call POST "/project-tickets/$(enc "$PROJECT")" "$BODY" | jq "{success, ticket: (.data | ${TICKET_ROW} + {fileName})}"
138
+ ;;
139
+ update)
140
+ require_param "project" "$PROJECT"; require_param "id" "$ID"
141
+ BODY=$(jq -n --arg title "$TITLE" --arg description "$DESCRIPTION" --argjson hasDescription "$HAS_DESCRIPTION" \
142
+ --arg priority "$PRIORITY" --arg labels "$LABELS" --arg team "$TEAM" --arg status "$STATUS" \
143
+ --arg note "$NOTE" --arg ownerReview "$OWNER_REVIEW" --argjson acceptance "$ACCEPTANCE_JSON" \
144
+ '{}
145
+ + (if $title != "" then {title: $title} else {} end)
146
+ + (if $hasDescription == 1 then {description: $description} else {} end)
147
+ + (if $acceptance != null then {acceptance: $acceptance} else {} end)
148
+ + (if $priority != "" then {priority: $priority} else {} end)
149
+ + (if $labels != "" then {labels: ($labels | split(",") | map(gsub("^\\s+|\\s+$"; "")))} else {} end)
150
+ + (if $team != "" then {team: $team} else {} end)
151
+ + (if $status != "" then {status: $status} else {} end)
152
+ + (if $note != "" then {note: $note} else {} end)
153
+ + (if $ownerReview == "true" then {ownerReview: true} else {} end)')
154
+ [ "$BODY" != "{}" ] || error_exit "Nothing to update"
155
+ api_call POST "/project-tickets/$(enc "$PROJECT")/$(enc "$ID")/update" "$BODY" | jq "{success, ticket: (.data | ${TICKET_ROW})}"
156
+ ;;
157
+ claim)
158
+ require_param "project" "$PROJECT"; require_param "id" "$ID"
159
+ api_call POST "/project-tickets/$(enc "$PROJECT")/$(enc "$ID")/claim" '{}' \
160
+ | jq "{success, claimed: .data.claimed, workItemId: .data.workItem.id, ticket: (.data.ticket | ${TICKET_ROW}),
161
+ next: \"Do the work; when done, complete this WorkItem (complete-task / report-status with workItemId). The ticket closes when it is verified.\"}"
162
+ ;;
163
+ release)
164
+ require_param "project" "$PROJECT"; require_param "id" "$ID"
165
+ BODY=$(jq -n --arg note "$NOTE" '{status: "ready"} + (if $note != "" then {note: $note} else {} end)')
166
+ api_call POST "/project-tickets/$(enc "$PROJECT")/$(enc "$ID")/transition" "$BODY" | jq "{success, ticket: (.data | ${TICKET_ROW})}"
167
+ ;;
168
+ assign)
169
+ require_param "project" "$PROJECT"; require_param "id" "$ID"; require_param "to" "$ASSIGNEE"
170
+ BODY=$(jq -n --arg to "$ASSIGNEE" --argjson start "$START" '{assignee: $to, start: $start}')
171
+ api_call POST "/project-tickets/$(enc "$PROJECT")/$(enc "$ID")/assign" "$BODY" \
172
+ | jq "{success, workItemId: (.data.workItem.id // null), ticket: (.data.ticket | ${TICKET_ROW})}"
173
+ ;;
174
+ log)
175
+ require_param "project" "$PROJECT"; require_param "id" "$ID"; require_param "note" "$NOTE"
176
+ BODY=$(jq -n --arg note "$NOTE" '{note: $note}')
177
+ api_call POST "/project-tickets/$(enc "$PROJECT")/$(enc "$ID")/log" "$BODY" | jq '{success, lastLog: (.data.log | last)}'
178
+ ;;
179
+ *)
180
+ error_exit "Unknown action: $ACTION (use list | show | create | update | claim | release | assign | log)"
181
+ ;;
182
+ esac
@@ -0,0 +1,116 @@
1
+ #!/bin/bash
2
+ # Tests for project-tickets — run with: bash execute.test.sh
3
+ # A python HTTP stub plays the backend; asserts the calls and the output.
4
+ set -u
5
+ HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ EXEC="$HERE/execute.sh"
7
+ PASS=0; FAIL=0
8
+ check() {
9
+ local name="$1"; local got="$2"; local want="$3"
10
+ if [ "$got" = "$want" ]; then PASS=$((PASS+1)); else FAIL=$((FAIL+1)); echo "FAIL: $name"; echo " want: $want"; echo " got: $got"; fi
11
+ }
12
+
13
+ PORT=18841
14
+ STUB_LOG="$(mktemp)"; export STUB_LOG; export STUB_PORT="$PORT"
15
+ python3 -u <<'PY' >/dev/null 2>&1 &
16
+ from http.server import BaseHTTPRequestHandler, HTTPServer
17
+ import json, os
18
+ LOG = os.environ['STUB_LOG']; PORT = int(os.environ['STUB_PORT'])
19
+ T = {'id': 'APP-1', 'title': 'Export CSV', 'status': 'ready', 'priority': 'P1', 'assignee': None,
20
+ 'labels': ['ui'], 'workItemId': None, 'fileName': 'APP-1-export-csv.md', 'extra': {'x': 1},
21
+ 'log': ['a · owner · created', 'b · dev · note']}
22
+ class H(BaseHTTPRequestHandler):
23
+ def reply(self, code, obj):
24
+ self.send_response(code); self.send_header('Content-Type', 'application/json'); self.end_headers()
25
+ self.wfile.write(json.dumps(obj).encode())
26
+ def record(self, body=None):
27
+ open(LOG, 'w').write(json.dumps({'method': self.command, 'path': self.path, 'body': body, 'agent': self.headers.get('X-Agent-Session')}))
28
+ def do_GET(self):
29
+ self.record()
30
+ if self.path.startswith('/api/project-tickets/'):
31
+ if self.path.count('/') >= 4 and not self.path.split('?')[0].endswith('%2Fapp'):
32
+ return self.reply(200, {'success': True, 'data': T})
33
+ return self.reply(200, {'success': True, 'data': {'project': {'id': 'p1'}, 'tickets': [T], 'invalid': []}})
34
+ if self.path.startswith('/api/project-tickets'):
35
+ return self.reply(200, {'success': True, 'data': [{'project': {'id': 'p1'}, 'tickets': [T]}]})
36
+ return self.reply(404, {'success': False, 'error': 'nope'})
37
+ def do_POST(self):
38
+ n = int(self.headers.get('content-length', '0')); body = json.loads(self.rfile.read(n).decode() or '{}')
39
+ self.record(body)
40
+ if self.path.endswith('/claim'):
41
+ return self.reply(200, {'success': True, 'data': {'claimed': True, 'workItem': {'id': 'wi-9'}, 'ticket': dict(T, status='in_progress', assignee='dev-ann', workItemId='wi-9')}})
42
+ if 'forbidden' in self.path:
43
+ return self.reply(403, {'success': False, 'error': 'Not allowed'})
44
+ return self.reply(200, {'success': True, 'data': T})
45
+ def log_message(self, *a, **k): pass
46
+ HTTPServer(('127.0.0.1', PORT), H).serve_forever()
47
+ PY
48
+ STUB_PID=$!
49
+ disown "$STUB_PID" 2>/dev/null || true
50
+ trap 'kill "$STUB_PID" >/dev/null 2>&1; rm -f "$STUB_LOG"' EXIT
51
+ for i in $(seq 1 30); do curl -s -o /dev/null -m 0.2 "http://127.0.0.1:${PORT}/" 2>/dev/null && break; sleep 0.1; done
52
+
53
+ run() { CREWLY_SESSION_NAME=dev-ann CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>/dev/null; }
54
+ run_err() { CREWLY_SESSION_NAME=dev-ann CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" "$@" 2>&1 >/dev/null; }
55
+ last() { jq -r "$1" "$STUB_LOG"; }
56
+
57
+ # --- list: one project (path is URL-encoded), and across my teams' projects ---
58
+ OUT=$(run list --project /work/app --status ready)
59
+ check "list: path" "$(last .path)" "/api/project-tickets/%2Fwork%2Fapp?status=ready"
60
+ check "list: rows" "$(printf '%s' "$OUT" | jq -c '[.tickets[] | [.id, .status]]')" '[["APP-1","ready"]]'
61
+ check "list: agent header" "$(last .agent)" "dev-ann"
62
+ OUT=$(run list)
63
+ check "list mine: path" "$(last .path)" "/api/project-tickets"
64
+ check "list mine: grouped" "$(printf '%s' "$OUT" | jq -c '[.projects[] | .project.id]')" '["p1"]'
65
+
66
+ # --- show drops the extra frontmatter noise ---
67
+ OUT=$(run show --project p1 --id APP-1)
68
+ check "show: path" "$(last .path)" "/api/project-tickets/p1/APP-1"
69
+ check "show: no extra" "$(printf '%s' "$OUT" | jq -c '.ticket | has("extra")')" "false"
70
+
71
+ # --- create with repeated acceptance and labels ---
72
+ run create --project p1 --title "Export CSV" --description "why" --acceptance "header row" --acceptance "opens in Excel" --priority P1 --labels "ui, export" --source request:TKT-012 >/dev/null
73
+ check "create: path" "$(last .path)" "/api/project-tickets/p1"
74
+ check "create: body" "$(last '.body | tostring')" '{"title":"Export CSV","description":"why","acceptance":["header row","opens in Excel"],"priority":"P1","labels":["ui","export"],"source":"request:TKT-012"}'
75
+
76
+ # --- create from JSON input ---
77
+ run '{"action":"create","project":"p1","title":"From JSON","status":"ready","ownerReview":true}' >/dev/null
78
+ check "create json: body" "$(last '.body | tostring')" '{"title":"From JSON","status":"ready","ownerReview":true}'
79
+
80
+ # --- update only sends what was given ---
81
+ run update --project p1 --id APP-1 --priority P0 --status ready --note groomed >/dev/null
82
+ check "update: path" "$(last .path)" "/api/project-tickets/p1/APP-1/update"
83
+ check "update: body" "$(last '.body | tostring')" '{"priority":"P0","status":"ready","note":"groomed"}'
84
+ check "update: nothing" "$(run_err update --project p1 --id APP-1 | grep -c 'Nothing to update')" "1"
85
+
86
+ # --- claim returns the WorkItem id and what to do next ---
87
+ OUT=$(run claim --project p1 --id APP-1)
88
+ check "claim: path" "$(last .path)" "/api/project-tickets/p1/APP-1/claim"
89
+ check "claim: output" "$(printf '%s' "$OUT" | jq -c '[.claimed, .workItemId, .ticket.status]')" '[true,"wi-9","in_progress"]'
90
+
91
+ # --- release = transition to ready ---
92
+ run release --project p1 --id APP-1 --note "blocked on design" >/dev/null
93
+ check "release: path" "$(last .path)" "/api/project-tickets/p1/APP-1/transition"
94
+ check "release: body" "$(last '.body | tostring')" '{"status":"ready","note":"blocked on design"}'
95
+
96
+ # --- assign (orchestrator / lead) ---
97
+ run assign --project p1 --id APP-1 --to dev-bo >/dev/null
98
+ check "assign: path" "$(last .path)" "/api/project-tickets/p1/APP-1/assign"
99
+ check "assign: body" "$(last '.body | tostring')" '{"assignee":"dev-bo","start":true}'
100
+ run '{"action":"assign","project":"p1","id":"APP-1","to":"Steve","start":false}' >/dev/null
101
+ check "assign json no-start" "$(last '.body | tostring')" '{"assignee":"Steve","start":false}'
102
+ check "assign: missing to" "$(run_err assign --project p1 --id APP-1 | grep -c 'to')" "1"
103
+
104
+ # --- log ---
105
+ OUT=$(run log --project p1 --id APP-1 --note "halfway")
106
+ check "log: body" "$(last '.body | tostring')" '{"note":"halfway"}'
107
+ check "log: last line" "$(printf '%s' "$OUT" | jq -r .lastLog)" "b · dev · note"
108
+
109
+ # --- errors ---
110
+ check "missing action" "$(run_err | grep -c 'Missing action')" "1"
111
+ check "unknown action" "$(run_err explode | grep -c 'Unknown action')" "1"
112
+ check "missing project" "$(run_err show --id APP-1 | grep -c 'project')" "1"
113
+ check "server 403 surfaces" "$(run_err claim --project forbidden --id APP-1 >/dev/null; CREWLY_SESSION_NAME=dev-ann CREWLY_API_URL="http://127.0.0.1:${PORT}" bash "$EXEC" log --project forbidden --id APP-1 --note x 2>&1 >/dev/null | grep -c '403')" "1"
114
+
115
+ echo "project-tickets: ${PASS} passed, ${FAIL} failed"
116
+ [ "$FAIL" -eq 0 ]
@@ -55,7 +55,7 @@ Retrieve stored memories relevant to a given context or query. Use this to look
55
55
  | `--context` / `-c` | `context` | Yes | Search query (or pipe via stdin) |
56
56
  | `--scope` / `-s` | `scope` | No | Filter: `project`, `team`, or `global` |
57
57
  | `--limit` / `-l` | `limit` | No | Max number of results |
58
- | `--project` / `-p` | `projectPath` | No | Filter by project path |
58
+ | `--project` / `-p` | `projectPath` | No | Filter by project path (default: `$CREWLY_PROJECT_PATH` when set) |
59
59
 
60
60
  ## Examples — CLI Flags (preferred)
61
61
 
@@ -83,6 +83,13 @@ if [ -n "$INPUT_JSON" ]; then
83
83
  [ -z "$PROJECT_PATH" ] && PROJECT_PATH=$(printf '%s' "$INPUT" | jq -r '.projectPath // empty')
84
84
  fi
85
85
 
86
+ # #816: Auto-inject projectPath from CREWLY_PROJECT_PATH when not provided,
87
+ # the same default remember applies (#187). Without it a recall from an agent
88
+ # shell searches agent memory only and never sees the project's knowledge.
89
+ if [ -z "$PROJECT_PATH" ] && [ -n "${CREWLY_PROJECT_PATH:-}" ]; then
90
+ PROJECT_PATH="$CREWLY_PROJECT_PATH"
91
+ fi
92
+
86
93
  require_param "agentId (--agent)" "$AGENT_ID"
87
94
  require_param "context (--context)" "$CONTEXT"
88
95
 
@@ -41,7 +41,7 @@ execution:
41
41
 
42
42
  Proactively notify the orchestrator when a task is done, blocked, or failed. Use this skill to keep the orchestrator informed without waiting for a scheduled check-in.
43
43
 
44
- When `status` is `done` and a `taskPath` is provided, the task file is automatically moved from `in_progress/` to `done/` in the project's `.crewly/tasks/` directory.
44
+ Pass the `workItemId` of the work you are reporting on (from your `[CREWLY-DISPATCH]` notice or `get-my-tasks`) so the right WorkItem is closed. When that WorkItem belongs to a project ticket, the ticket follows it (done once the WorkItem is verified). The old `taskPath` field is still accepted but no longer moves any file.
45
45
 
46
46
  ## Parameters
47
47
 
@@ -52,6 +52,7 @@ When `status` is `done` and a `taskPath` is provided, the task file is automatic
52
52
  | `--summary` / `-m` | `summary` | Yes | Brief description (or pipe via stdin) |
53
53
  | `--summary-file` | — | No | Read summary from a file path |
54
54
  | `--project` / `-p` | `projectPath` | No | Project path for auto-remember on completion |
55
+ | `--role` / `-r` | `role` | No | Agent role recorded with the learning (default: `$CREWLY_ROLE`, else `agent`) |
55
56
  | `--task-path` | `taskPath` | No | Task file path; auto-moves to `done/` on completion |
56
57
  | `--task-id` | `taskId` | No | Task ID (for structured StatusReport format) |
57
58
  | `--progress` | `progress` | No | Progress percentage 0-100 |
@@ -112,7 +113,7 @@ bash execute.sh --session dev-1 --status done --summary-file /tmp/summary.txt --
112
113
  ## Examples — Legacy JSON (backward compatible)
113
114
 
114
115
  ```bash
115
- bash execute.sh '{"sessionName":"dev-1","status":"done","summary":"Finished implementing auth module","taskPath":"/path/.crewly/tasks/delegated/in_progress/implement_auth_1234.md"}'
116
+ bash execute.sh '{"sessionName":"dev-1","status":"done","summary":"Finished implementing auth module","workItemId":"<your WorkItem id>"}'
116
117
  ```
117
118
 
118
119
  ## Output
@@ -31,6 +31,7 @@ Options:
31
31
  --summary | -m Status summary text (required unless piped via stdin)
32
32
  --summary-file Read summary from file path
33
33
  --project | -p Project path for auto-remember on completion
34
+ --role | -r Agent role for the recorded learning (default: $CREWLY_ROLE, else "agent")
34
35
  --task-path Task file path to auto-complete
35
36
  --task-id Task ID (for structured StatusReport format)
36
37
  --progress Progress percentage (0-100, for structured format)
@@ -45,6 +46,7 @@ SESSION_NAME=""
45
46
  STATUS=""
46
47
  SUMMARY=""
47
48
  PROJECT_PATH=""
49
+ AGENT_ROLE=""
48
50
  TASK_PATH=""
49
51
  TASK_ID=""
50
52
  WORK_ITEM_ID=""
@@ -79,6 +81,10 @@ while [[ $# -gt 0 ]]; do
79
81
  PROJECT_PATH="$2"
80
82
  shift 2
81
83
  ;;
84
+ --role|-r)
85
+ AGENT_ROLE="$2"
86
+ shift 2
87
+ ;;
82
88
  --task-path)
83
89
  TASK_PATH="$2"
84
90
  shift 2
@@ -143,6 +149,7 @@ if [ -n "$INPUT_JSON" ]; then
143
149
  [ -z "$WORK_ITEM_ID" ] && WORK_ITEM_ID=$(printf '%s' "$INPUT" | jq -r '.workItemId // empty')
144
150
  [ -z "$PROGRESS" ] && PROGRESS=$(printf '%s' "$INPUT" | jq -r '.progress // empty')
145
151
  [ -z "$PROJECT_PATH" ] && PROJECT_PATH=$(printf '%s' "$INPUT" | jq -r '.projectPath // empty')
152
+ [ -z "$AGENT_ROLE" ] && AGENT_ROLE=$(printf '%s' "$INPUT" | jq -r '.role // .agentRole // empty')
146
153
  ARTIFACTS=$(printf '%s' "$INPUT" | jq -c '.artifacts // empty')
147
154
  BLOCKERS=$(printf '%s' "$INPUT" | jq -c '.blockers // empty')
148
155
  USE_STRUCTURED=$(printf '%s' "$INPUT" | jq -r '.structured // "false"')
@@ -156,6 +163,11 @@ require_param "sessionName (--session)" "$SESSION_NAME"
156
163
  require_param "status (--status)" "$STATUS"
157
164
  require_param "summary (--summary)" "$SUMMARY"
158
165
 
166
+ # The agent's role labels its learnings. Agent sessions carry it in
167
+ # CREWLY_ROLE (set by the backend at session creation); /memory/record-learning
168
+ # rejects an empty agentRole, so fall back to a generic label.
169
+ [ -z "$AGENT_ROLE" ] && AGENT_ROLE="${CREWLY_ROLE:-agent}"
170
+
159
171
  # Gate: milestone summaries must carry a real "WHAT shipped + WHAT it means
160
172
  # for the owner" — see config/sops/common/mid-flight-milestone-surface.md
161
173
  # (issue #435). Reject anything that looks like "task done" boilerplate
@@ -297,6 +309,28 @@ if [ "$STATUS" = "done" ]; then
297
309
  fi
298
310
  fi
299
311
 
312
+ # record_task_learning <label> <summary>
313
+ #
314
+ # Records the report as a project learning via POST /memory/record-learning.
315
+ # The controller requires {agentId, agentRole, projectPath, learning}; this
316
+ # call used to send {agentId, content, type}, so every one 400'd and the
317
+ # `2>/dev/null || true` hid it (#816). A failure is still non-fatal (the
318
+ # status report itself already went out) but is now surfaced on stderr.
319
+ record_task_learning() {
320
+ local label="$1" text="$2" body result
321
+ body=$(jq -n \
322
+ --arg agentId "$SESSION_NAME" \
323
+ --arg agentRole "$AGENT_ROLE" \
324
+ --arg projectPath "$PROJECT_PATH" \
325
+ --arg learning "${label}: ${text}" \
326
+ --arg relatedTask "${WORK_ITEM_ID:-$TASK_ID}" \
327
+ '{agentId: $agentId, agentRole: $agentRole, projectPath: $projectPath, learning: $learning}
328
+ + (if $relatedTask != "" then {relatedTask: $relatedTask} else {} end)')
329
+ if ! result=$(api_call POST "/memory/record-learning" "$body" 2>&1 >/dev/null); then
330
+ jq -n --arg err "$result" '{warning: "status reported, but recording the learning FAILED", error: $err}' >&2
331
+ fi
332
+ }
333
+
300
334
  # Auto-persist key findings as project knowledge when task is done (#127, #219).
301
335
  if [ "$STATUS" = "done" ] && [ -n "$SUMMARY" ]; then
302
336
  auto_remember "$SESSION_NAME" "[COMPLETED] Task completed by ${SESSION_NAME}: ${SUMMARY}" "decision" "project" "$PROJECT_PATH"
@@ -306,14 +340,8 @@ fi
306
340
  # Uses existing APIs — no additional LLM calls. The agent's own summary
307
341
  # is the learning input; keyword extraction identifies growth areas.
308
342
  if [ "$STATUS" = "done" ] && [ -n "$SUMMARY" ] && [ -n "$PROJECT_PATH" ]; then
309
- # Record as a structured learning entry (appends to what_worked.md)
310
- LEARN_BODY=$(jq -n \
311
- --arg agentId "$SESSION_NAME" \
312
- --arg content "$SUMMARY" \
313
- --arg projectPath "$PROJECT_PATH" \
314
- --arg type "success" \
315
- '{agentId: $agentId, content: $content, projectPath: $projectPath, type: $type}')
316
- api_call POST "/memory/record-learning" "$LEARN_BODY" 2>/dev/null || true
343
+ # Record as a project learning (POST /memory/record-learning).
344
+ record_task_learning "Task completed" "$SUMMARY"
317
345
 
318
346
  # Extract growth areas from summary (keyword-based, no LLM)
319
347
  GROWTH_BODY=$(jq -n \
@@ -326,12 +354,6 @@ fi
326
354
  # Growth: record failures for learning when task fails or is blocked.
327
355
  if [ "$STATUS" = "failed" ] || [ "$STATUS" = "blocked" ]; then
328
356
  if [ -n "$SUMMARY" ] && [ -n "$PROJECT_PATH" ]; then
329
- FAIL_BODY=$(jq -n \
330
- --arg agentId "$SESSION_NAME" \
331
- --arg content "$SUMMARY" \
332
- --arg projectPath "$PROJECT_PATH" \
333
- --arg type "failure" \
334
- '{agentId: $agentId, content: $content, projectPath: $projectPath, type: $type}')
335
- api_call POST "/memory/record-learning" "$FAIL_BODY" 2>/dev/null || true
357
+ record_task_learning "Task ${STATUS}" "$SUMMARY"
336
358
  fi
337
359
  fi
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: Split Ticket
3
+ description: Move an ask that landed in another ticket's discussion out into its own ticket, keeping the thread link.
4
+ version: 1.0.0
5
+ category: task-management
6
+ skillType: claude-skill
7
+ assignableRoles:
8
+ - developer
9
+ - qa
10
+ - tpm
11
+ - designer
12
+ - frontend-developer
13
+ - backend-developer
14
+ - fullstack-dev
15
+ - qa-engineer
16
+ - product-manager
17
+ - architect
18
+ - generalist
19
+ - sales
20
+ - support
21
+ - orchestrator
22
+ - team-leader
23
+ triggers:
24
+ - split ticket
25
+ - new ask in thread
26
+ - separate ticket
27
+ - TKT
28
+ tags:
29
+ - ticket
30
+ - intake
31
+ execution:
32
+ type: script
33
+ script:
34
+ file: execute.sh
35
+ interpreter: bash
36
+ timeoutMs: 15000
37
+ ---
38
+
39
+ # Split Ticket
40
+
41
+ Every distinct ask from the owner should be its own ticket, so the owner can
42
+ say it and move on. Intake opens a new ticket for a new ask said in an
43
+ existing ticket's thread. When it is unsure, it **appends** instead, because a
44
+ ticket per stray remark is worse than a missed split. If an ask landed in a
45
+ ticket where it does not belong, split it out:
46
+
47
+ ```bash
48
+ # See the ticket's follow-ups and their refs
49
+ bash execute.sh --ticket TKT-039 --list
50
+
51
+ # Move one of them out into its own ticket
52
+ bash execute.sh --ticket TKT-039 --discussion-ref slackch-C0C2QCGE9K9-1790433421.1
53
+
54
+ # Or open one from text (a pure information question: add --question)
55
+ bash execute.sh --ticket TKT-039 --text "research how Opus makes video" --assignee <session>
56
+ ```
57
+
58
+ - The new ticket stays in the same thread and records the old one as its
59
+ parent. Later follow-ups in that thread still find a ticket.
60
+ - `--question` means a pure information question. It gets no acceptance step.
61
+ - Split only a real new ask with its own deliverable. Answers, "好的",
62
+ clarifications and "send it as a PDF" belong to the ticket they were said in.
@@ -0,0 +1,87 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # split-ticket — move an ask out of a ticket into its own ticket (#827)
4
+ #
5
+ # Backed by GET /api/tickets/:tkt (list mode) and POST /api/tickets/:id/split
6
+ # (specs/ticket-loop.md, "New asks in a thread").
7
+ #
8
+ # Usage:
9
+ # bash execute.sh --ticket TKT-039 --list
10
+ # bash execute.sh --ticket TKT-039 --discussion-ref <ref> [--title "…"] [--assignee <session>] [--question]
11
+ # bash execute.sh --ticket TKT-039 --text "research X" [--title "…"] [--assignee <session>] [--question]
12
+ # bash execute.sh '{"ticket":"TKT-039","discussionRef":"<ref>"}'
13
+ # =============================================================================
14
+ set -euo pipefail
15
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
16
+ source "${SCRIPT_DIR}/../../_common/lib.sh"
17
+
18
+ print_usage() {
19
+ cat <<'EOF_USAGE'
20
+ Usage:
21
+ bash execute.sh --ticket TKT-039 --list Show the ticket's follow-ups (with their refs)
22
+ bash execute.sh --ticket TKT-039 --discussion-ref <ref> Move that follow-up out into its own ticket
23
+ bash execute.sh --ticket TKT-039 --text "the new ask" Open a new ticket from text
24
+
25
+ Options:
26
+ --ticket TKT-039, 39 or the ticket id (required)
27
+ --list List the follow-ups instead of splitting
28
+ --discussion-ref ref of the follow-up to move out (from --list)
29
+ --text Text of the new ask (when not moving a follow-up)
30
+ --title Title for the new ticket
31
+ --assignee Agent session that takes it (default: the source ticket's assignee)
32
+ --question A pure information question: no acceptance step
33
+ --help | -h Show this help
34
+ EOF_USAGE
35
+ }
36
+
37
+ TICKET=""; LIST=""; DREF=""; TEXT=""; TITLE=""; ASSIGNEE=""; QUESTION="false"
38
+ if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
39
+ TICKET=$(printf '%s' "$1" | jq -r '.ticket // .requestId // empty')
40
+ DREF=$(printf '%s' "$1" | jq -r '.discussionRef // empty')
41
+ TEXT=$(printf '%s' "$1" | jq -r '.text // empty')
42
+ TITLE=$(printf '%s' "$1" | jq -r '.title // empty')
43
+ ASSIGNEE=$(printf '%s' "$1" | jq -r '.assignee // empty')
44
+ QUESTION=$(printf '%s' "$1" | jq -r 'if .question == true then "true" else "false" end')
45
+ LIST=$(printf '%s' "$1" | jq -r 'if .list == true then "1" else empty end')
46
+ shift || true
47
+ fi
48
+ while [[ $# -gt 0 ]]; do
49
+ case "$1" in
50
+ --ticket|--request-id) [ $# -ge 2 ] || error_exit "--ticket requires a value"; TICKET="$2"; shift 2 ;;
51
+ --list) LIST="1"; shift ;;
52
+ --discussion-ref) [ $# -ge 2 ] || error_exit "--discussion-ref requires a value"; DREF="$2"; shift 2 ;;
53
+ --text) [ $# -ge 2 ] || error_exit "--text requires a value"; TEXT="$2"; shift 2 ;;
54
+ --title) [ $# -ge 2 ] || error_exit "--title requires a value"; TITLE="$2"; shift 2 ;;
55
+ --assignee) [ $# -ge 2 ] || error_exit "--assignee requires a value"; ASSIGNEE="$2"; shift 2 ;;
56
+ --question) QUESTION="true"; shift ;;
57
+ --help|-h) print_usage; exit 0 ;;
58
+ *) error_exit "Unknown option: $1" ;;
59
+ esac
60
+ done
61
+
62
+ require_param "ticket" "$TICKET"
63
+
64
+ # List mode: the follow-ups, with the ref to pass to --discussion-ref.
65
+ if [ -n "$LIST" ]; then
66
+ api_call GET "/tickets/${TICKET}" | jq '(.data.ticket // {}) as $t | {
67
+ tkt: (.data.board.tkt // null),
68
+ title: ($t.title // null),
69
+ followUps: [($t.discussion // [])[] | {ref, at, text: (.text | .[0:200])}]
70
+ } | . + {count: (.followUps | length)}'
71
+ exit 0
72
+ fi
73
+
74
+ [ -n "$DREF" ] || [ -n "$TEXT" ] || error_exit "Give --discussion-ref <ref> (move a follow-up out) or --text \"…\" (see --list)"
75
+
76
+ BODY=$(jq -n --arg d "$DREF" --arg t "$TEXT" --arg title "$TITLE" --arg a "$ASSIGNEE" --argjson q "$QUESTION" \
77
+ '{question: $q}
78
+ + (if $d == "" then {} else {discussionRef: $d} end)
79
+ + (if $t == "" then {} else {text: $t} end)
80
+ + (if $title == "" then {} else {title: $title} end)
81
+ + (if $a == "" then {} else {assignee: $a} end)')
82
+ api_call POST "/tickets/${TICKET}/split" "$BODY" | jq '{
83
+ success,
84
+ newTicket: (.data.ticket | if . then {id, ticketNumber, title, parentTicketId, threadRef: .origin.threadRef} else null end),
85
+ moved: (.data.moved // false),
86
+ error: (.error // null)
87
+ }'