crewly 1.13.0 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (597) hide show
  1. package/config/skills/_common/complete-body-shape.test.sh +113 -0
  2. package/config/skills/_common/no-dangling-symlinks.test.sh +63 -0
  3. package/config/skills/_common/task-pool-body-shape.test.sh +471 -0
  4. package/config/skills/agent/core/accept-task/execute.sh +30 -5
  5. package/config/skills/agent/core/block-task/execute.sh +59 -6
  6. package/config/skills/agent/core/complete-task/SKILL.md +37 -5
  7. package/config/skills/agent/core/complete-task/execute.sh +40 -9
  8. package/config/skills/agent/core/complete-task/execute.test.sh +213 -0
  9. package/config/skills/agent/core/create-task/SKILL.md +33 -0
  10. package/config/skills/agent/core/create-task/execute.sh +82 -23
  11. package/config/skills/agent/core/delegate-task/execute.sh +46 -0
  12. package/config/skills/agent/core/get-team-norms/SKILL.md +1 -1
  13. package/config/skills/agent/core/get-team-norms/execute.sh +73 -2
  14. package/config/skills/agent/core/handoff-task/execute.sh +8 -1
  15. package/config/skills/agent/core/report-status/SKILL.md +26 -0
  16. package/config/skills/agent/core/report-status/execute.sh +40 -5
  17. package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
  18. package/config/skills/orchestrator/delegate-task/execute.sh +45 -11
  19. package/config/skills/orchestrator/delegate-task/execute.test.sh +153 -1
  20. package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
  21. package/config/skills/team-leader/decompose-goal/execute.sh +11 -16
  22. package/config/skills/team-leader/delegate-task/SKILL.md +14 -1
  23. package/config/skills/team-leader/delegate-task/execute.sh +132 -43
  24. package/config/skills/team-leader/delegate-task/execute.test.sh +180 -27
  25. package/config/vitest-exclude.constants.ts +56 -0
  26. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  27. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +18 -3
  28. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  29. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/slack/slack.controller.js +18 -15
  31. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  32. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +6 -1
  33. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  34. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +19 -10
  35. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  36. package/dist/backend/backend/src/index.d.ts.map +1 -1
  37. package/dist/backend/backend/src/index.js +20 -0
  38. package/dist/backend/backend/src/index.js.map +1 -1
  39. package/dist/backend/backend/src/scripts/stamp-build.d.ts +25 -0
  40. package/dist/backend/backend/src/scripts/stamp-build.d.ts.map +1 -0
  41. package/dist/backend/backend/src/scripts/stamp-build.js +48 -0
  42. package/dist/backend/backend/src/scripts/stamp-build.js.map +1 -0
  43. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  44. package/dist/backend/backend/src/services/agent/agent-registration.service.js +25 -0
  45. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  46. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
  47. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +9 -1
  48. package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
  49. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +42 -3
  50. package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
  51. package/dist/backend/backend/src/services/agent/crewly-agent/types.js +22 -1
  52. package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
  53. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +15 -0
  54. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  55. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +40 -0
  56. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  57. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +28 -3
  58. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
  59. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +65 -8
  60. package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
  61. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +214 -4
  62. package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +330 -48
  64. package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
  65. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +13 -1
  66. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +84 -5
  68. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  69. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +14 -0
  70. package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
  71. package/dist/backend/backend/src/services/reconciler/reconciler.service.js +77 -3
  72. package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
  73. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
  74. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +268 -36
  76. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  77. package/dist/backend/backend/src/services/v3/escalation-router.service.js +2 -2
  78. package/dist/backend/backend/src/services/v3/escalation-router.service.js.map +1 -1
  79. package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
  80. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +39 -2
  81. package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
  82. package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
  83. package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
  84. package/dist/backend/backend/src/types/v2/index.js +1 -1
  85. package/dist/backend/backend/src/types/v2/index.js.map +1 -1
  86. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +181 -1
  87. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  88. package/dist/backend/backend/src/types/v2/work-item.types.js +104 -17
  89. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  90. package/dist/backend/backend/src/utils/build-provenance.d.ts +150 -0
  91. package/dist/backend/backend/src/utils/build-provenance.d.ts.map +1 -0
  92. package/dist/backend/backend/src/utils/build-provenance.js +211 -0
  93. package/dist/backend/backend/src/utils/build-provenance.js.map +1 -0
  94. package/dist/backend/build-info.json +4 -0
  95. package/dist/backend/config/vitest-exclude.constants.d.ts +53 -0
  96. package/dist/backend/config/vitest-exclude.constants.d.ts.map +1 -0
  97. package/dist/backend/config/vitest-exclude.constants.js +55 -0
  98. package/dist/backend/config/vitest-exclude.constants.js.map +1 -0
  99. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +538 -0
  100. package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
  101. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +802 -0
  102. package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
  103. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts +240 -0
  104. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts.map +1 -0
  105. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js +524 -0
  106. package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js.map +1 -0
  107. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +629 -0
  108. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -0
  109. package/dist/cli/backend/src/services/agent/agent-registration.service.js +4548 -0
  110. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -0
  111. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +118 -0
  112. package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +1 -0
  113. package/dist/cli/backend/src/services/agent/agent-suspend.service.js +304 -0
  114. package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +1 -0
  115. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts +196 -0
  116. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
  117. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +504 -0
  118. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
  119. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +97 -0
  120. package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -0
  121. package/dist/cli/backend/src/services/agent/claude-runtime.service.js +334 -0
  122. package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -0
  123. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +47 -0
  124. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -0
  125. package/dist/cli/backend/src/services/agent/codex-runtime.service.js +112 -0
  126. package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -0
  127. package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts +323 -0
  128. package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
  129. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +1056 -0
  130. package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
  131. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +198 -0
  132. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -0
  133. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +816 -0
  134. package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -0
  135. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +155 -0
  136. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
  137. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +272 -0
  138. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
  139. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +91 -0
  140. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -0
  141. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +120 -0
  142. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -0
  143. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +536 -0
  144. package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
  145. package/dist/cli/backend/src/services/agent/crewly-agent/types.js +282 -0
  146. package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -0
  147. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +100 -0
  148. package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +1 -0
  149. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +149 -0
  150. package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +1 -0
  151. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +130 -0
  152. package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -0
  153. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +758 -0
  154. package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -0
  155. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
  156. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
  157. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +508 -0
  158. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
  159. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +113 -0
  160. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -0
  161. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +161 -0
  162. package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -0
  163. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +156 -0
  164. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -0
  165. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +641 -0
  166. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -0
  167. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +295 -0
  168. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -0
  169. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +1166 -0
  170. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -0
  171. package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts +71 -0
  172. package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -0
  173. package/dist/cli/backend/src/services/agent/runtime-service.factory.js +174 -0
  174. package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -0
  175. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +435 -0
  176. package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -0
  177. package/dist/cli/backend/src/services/ai/prompt-builder.service.js +1331 -0
  178. package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -0
  179. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts +33 -0
  180. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts.map +1 -0
  181. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js +70 -0
  182. package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js.map +1 -0
  183. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +100 -0
  184. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
  185. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +296 -0
  186. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
  187. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
  188. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
  189. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
  190. package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
  191. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
  192. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
  193. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
  194. package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
  195. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts +35 -0
  196. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts.map +1 -0
  197. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js +50 -0
  198. package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js.map +1 -0
  199. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts +41 -0
  200. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts.map +1 -0
  201. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js +95 -0
  202. package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js.map +1 -0
  203. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
  204. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
  205. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
  206. package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
  207. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
  208. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
  209. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
  210. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
  211. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
  212. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
  213. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
  214. package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
  215. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
  216. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
  217. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
  218. package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
  219. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts +46 -0
  220. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts.map +1 -0
  221. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js +44 -0
  222. package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js.map +1 -0
  223. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
  224. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
  225. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
  226. package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
  227. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
  228. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
  229. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
  230. package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
  231. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
  232. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
  233. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
  234. package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
  235. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
  236. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
  237. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +383 -0
  238. package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
  239. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
  240. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
  241. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +96 -0
  242. package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
  243. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
  244. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
  245. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
  246. package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
  247. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts +35 -0
  248. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts.map +1 -0
  249. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js +50 -0
  250. package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js.map +1 -0
  251. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts +91 -0
  252. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -0
  253. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js +411 -0
  254. package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -0
  255. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +62 -0
  256. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
  257. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +199 -0
  258. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
  259. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
  260. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
  261. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
  262. package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
  263. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts +102 -0
  264. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
  265. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js +229 -0
  266. package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
  267. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts +61 -0
  268. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts.map +1 -0
  269. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js +197 -0
  270. package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js.map +1 -0
  271. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
  272. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
  273. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
  274. package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
  275. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +32 -0
  276. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
  277. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +69 -0
  278. package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
  279. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
  280. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
  281. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
  282. package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
  283. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
  284. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
  285. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
  286. package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
  287. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +737 -0
  288. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
  289. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +1213 -0
  290. package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
  291. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
  292. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
  293. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
  294. package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
  295. package/dist/cli/backend/src/services/chat-v2/config.d.ts +100 -0
  296. package/dist/cli/backend/src/services/chat-v2/config.d.ts.map +1 -0
  297. package/dist/cli/backend/src/services/chat-v2/config.js +174 -0
  298. package/dist/cli/backend/src/services/chat-v2/config.js.map +1 -0
  299. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts +118 -0
  300. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
  301. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js +171 -0
  302. package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
  303. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +188 -0
  304. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
  305. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +317 -0
  306. package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
  307. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts +119 -0
  308. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
  309. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +551 -0
  310. package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
  311. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +208 -0
  312. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
  313. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +405 -0
  314. package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
  315. package/dist/cli/backend/src/services/chat-v2/types.d.ts +341 -0
  316. package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -0
  317. package/dist/cli/backend/src/services/chat-v2/types.js +61 -0
  318. package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -0
  319. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts +37 -0
  320. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -0
  321. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js +63 -0
  322. package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -0
  323. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts +335 -0
  324. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
  325. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js +421 -0
  326. package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
  327. package/dist/cli/backend/src/services/mcp-client.d.ts +233 -0
  328. package/dist/cli/backend/src/services/mcp-client.d.ts.map +1 -0
  329. package/dist/cli/backend/src/services/mcp-client.js +302 -0
  330. package/dist/cli/backend/src/services/mcp-client.js.map +1 -0
  331. package/dist/cli/backend/src/services/memory/mission-context.service.d.ts +168 -0
  332. package/dist/cli/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
  333. package/dist/cli/backend/src/services/memory/mission-context.service.js +365 -0
  334. package/dist/cli/backend/src/services/memory/mission-context.service.js.map +1 -0
  335. package/dist/cli/backend/src/services/memory/session-memory.service.d.ts +197 -0
  336. package/dist/cli/backend/src/services/memory/session-memory.service.d.ts.map +1 -0
  337. package/dist/cli/backend/src/services/memory/session-memory.service.js +369 -0
  338. package/dist/cli/backend/src/services/memory/session-memory.service.js.map +1 -0
  339. package/dist/cli/backend/src/services/memory/user-profile.service.d.ts +77 -0
  340. package/dist/cli/backend/src/services/memory/user-profile.service.d.ts.map +1 -0
  341. package/dist/cli/backend/src/services/memory/user-profile.service.js +171 -0
  342. package/dist/cli/backend/src/services/memory/user-profile.service.js.map +1 -0
  343. package/dist/cli/backend/src/services/memory/working-memory.service.d.ts +232 -0
  344. package/dist/cli/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
  345. package/dist/cli/backend/src/services/memory/working-memory.service.js +417 -0
  346. package/dist/cli/backend/src/services/memory/working-memory.service.js.map +1 -0
  347. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +84 -0
  348. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -0
  349. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +136 -0
  350. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -0
  351. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +358 -0
  352. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -0
  353. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +755 -0
  354. package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -0
  355. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +269 -0
  356. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -0
  357. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +391 -0
  358. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -0
  359. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
  360. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
  361. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js +284 -0
  362. package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
  363. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
  364. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
  365. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
  366. package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
  367. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
  368. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
  369. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js +48 -0
  370. package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
  371. package/dist/cli/backend/src/services/observability/observability-db.d.ts +84 -0
  372. package/dist/cli/backend/src/services/observability/observability-db.d.ts.map +1 -0
  373. package/dist/cli/backend/src/services/observability/observability-db.js +165 -0
  374. package/dist/cli/backend/src/services/observability/observability-db.js.map +1 -0
  375. package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts +124 -0
  376. package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts.map +1 -0
  377. package/dist/cli/backend/src/services/onboarding/content-approval.service.js +256 -0
  378. package/dist/cli/backend/src/services/onboarding/content-approval.service.js.map +1 -0
  379. package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts +80 -0
  380. package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts.map +1 -0
  381. package/dist/cli/backend/src/services/onboarding/content-approval.types.js +16 -0
  382. package/dist/cli/backend/src/services/onboarding/content-approval.types.js.map +1 -0
  383. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +142 -0
  384. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -0
  385. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +265 -0
  386. package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -0
  387. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts +231 -0
  388. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -0
  389. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js +353 -0
  390. package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -0
  391. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts +157 -0
  392. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts.map +1 -0
  393. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js +483 -0
  394. package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js.map +1 -0
  395. package/dist/cli/backend/src/services/orchestrator/index.d.ts +16 -0
  396. package/dist/cli/backend/src/services/orchestrator/index.d.ts.map +1 -0
  397. package/dist/cli/backend/src/services/orchestrator/index.js +16 -0
  398. package/dist/cli/backend/src/services/orchestrator/index.js.map +1 -0
  399. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts +117 -0
  400. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -0
  401. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js +300 -0
  402. package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -0
  403. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts +114 -0
  404. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts.map +1 -0
  405. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js +195 -0
  406. package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js.map +1 -0
  407. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts +94 -0
  408. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -0
  409. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js +279 -0
  410. package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -0
  411. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts +192 -0
  412. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts.map +1 -0
  413. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js +395 -0
  414. package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js.map +1 -0
  415. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts +201 -0
  416. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts.map +1 -0
  417. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js +396 -0
  418. package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js.map +1 -0
  419. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts +17 -0
  420. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts.map +1 -0
  421. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js +30 -0
  422. package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js.map +1 -0
  423. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts +249 -0
  424. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -0
  425. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js +569 -0
  426. package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js.map +1 -0
  427. package/dist/cli/backend/src/services/session/index.d.ts +47 -0
  428. package/dist/cli/backend/src/services/session/index.d.ts.map +1 -0
  429. package/dist/cli/backend/src/services/session/index.js +50 -0
  430. package/dist/cli/backend/src/services/session/index.js.map +1 -0
  431. package/dist/cli/backend/src/services/session/log-rotation.service.d.ts +163 -0
  432. package/dist/cli/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
  433. package/dist/cli/backend/src/services/session/log-rotation.service.js +362 -0
  434. package/dist/cli/backend/src/services/session/log-rotation.service.js.map +1 -0
  435. package/dist/cli/backend/src/services/session/pty/index.d.ts +11 -0
  436. package/dist/cli/backend/src/services/session/pty/index.d.ts.map +1 -0
  437. package/dist/cli/backend/src/services/session/pty/index.js +11 -0
  438. package/dist/cli/backend/src/services/session/pty/index.js.map +1 -0
  439. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +445 -0
  440. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -0
  441. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +804 -0
  442. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -0
  443. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +252 -0
  444. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -0
  445. package/dist/cli/backend/src/services/session/pty/pty-session.js +611 -0
  446. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -0
  447. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +275 -0
  448. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -0
  449. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +403 -0
  450. package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -0
  451. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
  452. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
  453. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js +214 -0
  454. package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
  455. package/dist/cli/backend/src/services/session/session-backend.factory.d.ts +127 -0
  456. package/dist/cli/backend/src/services/session/session-backend.factory.d.ts.map +1 -0
  457. package/dist/cli/backend/src/services/session/session-backend.factory.js +226 -0
  458. package/dist/cli/backend/src/services/session/session-backend.factory.js.map +1 -0
  459. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +390 -0
  460. package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -0
  461. package/dist/cli/backend/src/services/session/session-backend.interface.js +19 -0
  462. package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -0
  463. package/dist/cli/backend/src/services/session/session-command-helper.d.ts +350 -0
  464. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -0
  465. package/dist/cli/backend/src/services/session/session-command-helper.js +810 -0
  466. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -0
  467. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +307 -0
  468. package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
  469. package/dist/cli/backend/src/services/session/session-handoff.service.js +742 -0
  470. package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -0
  471. package/dist/cli/backend/src/services/session/session-state-persistence.d.ts +231 -0
  472. package/dist/cli/backend/src/services/session/session-state-persistence.d.ts.map +1 -0
  473. package/dist/cli/backend/src/services/session/session-state-persistence.js +407 -0
  474. package/dist/cli/backend/src/services/session/session-state-persistence.js.map +1 -0
  475. package/dist/cli/backend/src/services/settings/role.service.d.ts +277 -0
  476. package/dist/cli/backend/src/services/settings/role.service.d.ts.map +1 -0
  477. package/dist/cli/backend/src/services/settings/role.service.js +728 -0
  478. package/dist/cli/backend/src/services/settings/role.service.js.map +1 -0
  479. package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts +152 -0
  480. package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -0
  481. package/dist/cli/backend/src/services/slack/cross-machine-message.service.js +354 -0
  482. package/dist/cli/backend/src/services/slack/cross-machine-message.service.js.map +1 -0
  483. package/dist/cli/backend/src/services/slack/slack-image.service.d.ts +114 -0
  484. package/dist/cli/backend/src/services/slack/slack-image.service.d.ts.map +1 -0
  485. package/dist/cli/backend/src/services/slack/slack-image.service.js +331 -0
  486. package/dist/cli/backend/src/services/slack/slack-image.service.js.map +1 -0
  487. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +499 -0
  488. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -0
  489. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +1928 -0
  490. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -0
  491. package/dist/cli/backend/src/services/slack/slack.service.d.ts +315 -0
  492. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -0
  493. package/dist/cli/backend/src/services/slack/slack.service.js +1094 -0
  494. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -0
  495. package/dist/cli/backend/src/services/sop/sop.service.d.ts +364 -0
  496. package/dist/cli/backend/src/services/sop/sop.service.d.ts.map +1 -0
  497. package/dist/cli/backend/src/services/sop/sop.service.js +734 -0
  498. package/dist/cli/backend/src/services/sop/sop.service.js.map +1 -0
  499. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
  500. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  501. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +268 -36
  502. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  503. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +178 -0
  504. package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -0
  505. package/dist/cli/backend/src/services/v3/escalation-router.service.js +692 -0
  506. package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -0
  507. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts +200 -0
  508. package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -0
  509. package/dist/cli/backend/src/services/v3/kr-tracking.service.js +482 -0
  510. package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -0
  511. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +117 -0
  512. package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -0
  513. package/dist/cli/backend/src/services/v3/mission-executor.service.js +321 -0
  514. package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -0
  515. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +610 -0
  516. package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
  517. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +1529 -0
  518. package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
  519. package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts +78 -0
  520. package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts.map +1 -0
  521. package/dist/cli/backend/src/services/v3/request-tracker.service.js +108 -0
  522. package/dist/cli/backend/src/services/v3/request-tracker.service.js.map +1 -0
  523. package/dist/cli/backend/src/services/v3/request.service.d.ts +295 -0
  524. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -0
  525. package/dist/cli/backend/src/services/v3/request.service.js +534 -0
  526. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -0
  527. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +340 -0
  528. package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -0
  529. package/dist/cli/backend/src/services/v3/v3-data.service.js +1113 -0
  530. package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -0
  531. package/dist/cli/backend/src/types/cross-machine.types.d.ts +103 -0
  532. package/dist/cli/backend/src/types/cross-machine.types.d.ts.map +1 -0
  533. package/dist/cli/backend/src/types/cross-machine.types.js +47 -0
  534. package/dist/cli/backend/src/types/cross-machine.types.js.map +1 -0
  535. package/dist/cli/backend/src/types/intent-task.types.d.ts +402 -0
  536. package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -0
  537. package/dist/cli/backend/src/types/intent-task.types.js +403 -0
  538. package/dist/cli/backend/src/types/intent-task.types.js.map +1 -0
  539. package/dist/cli/backend/src/types/orchestrator-state.types.d.ts +531 -0
  540. package/dist/cli/backend/src/types/orchestrator-state.types.d.ts.map +1 -0
  541. package/dist/cli/backend/src/types/orchestrator-state.types.js +110 -0
  542. package/dist/cli/backend/src/types/orchestrator-state.types.js.map +1 -0
  543. package/dist/cli/backend/src/types/v2/index.d.ts +30 -0
  544. package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -0
  545. package/dist/cli/backend/src/types/v2/index.js +22 -0
  546. package/dist/cli/backend/src/types/v2/index.js.map +1 -0
  547. package/dist/cli/backend/src/types/v2/key-result.types.d.ts +279 -0
  548. package/dist/cli/backend/src/types/v2/key-result.types.d.ts.map +1 -0
  549. package/dist/cli/backend/src/types/v2/key-result.types.js +264 -0
  550. package/dist/cli/backend/src/types/v2/key-result.types.js.map +1 -0
  551. package/dist/cli/backend/src/types/v2/mission.types.d.ts +661 -0
  552. package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -0
  553. package/dist/cli/backend/src/types/v2/mission.types.js +713 -0
  554. package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -0
  555. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +204 -0
  556. package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -0
  557. package/dist/cli/backend/src/types/v2/reconcile.types.js +121 -0
  558. package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -0
  559. package/dist/cli/backend/src/types/v2/request.types.d.ts +192 -0
  560. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -0
  561. package/dist/cli/backend/src/types/v2/request.types.js +179 -0
  562. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -0
  563. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +181 -1
  564. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  565. package/dist/cli/backend/src/types/v2/work-item.types.js +104 -17
  566. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  567. package/dist/cli/backend/src/types/v2/workspace.types.d.ts +157 -0
  568. package/dist/cli/backend/src/types/v2/workspace.types.d.ts.map +1 -0
  569. package/dist/cli/backend/src/types/v2/workspace.types.js +173 -0
  570. package/dist/cli/backend/src/types/v2/workspace.types.js.map +1 -0
  571. package/dist/cli/backend/src/utils/async.utils.d.ts +68 -0
  572. package/dist/cli/backend/src/utils/async.utils.d.ts.map +1 -0
  573. package/dist/cli/backend/src/utils/async.utils.js +80 -0
  574. package/dist/cli/backend/src/utils/async.utils.js.map +1 -0
  575. package/dist/cli/backend/src/utils/native-binding.utils.d.ts +128 -0
  576. package/dist/cli/backend/src/utils/native-binding.utils.d.ts.map +1 -0
  577. package/dist/cli/backend/src/utils/native-binding.utils.js +206 -0
  578. package/dist/cli/backend/src/utils/native-binding.utils.js.map +1 -0
  579. package/dist/cli/backend/src/websocket/chat.gateway.d.ts +142 -0
  580. package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -0
  581. package/dist/cli/backend/src/websocket/chat.gateway.js +327 -0
  582. package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -0
  583. package/dist/cli/backend/src/websocket/terminal.gateway.d.ts +341 -0
  584. package/dist/cli/backend/src/websocket/terminal.gateway.d.ts.map +1 -0
  585. package/dist/cli/backend/src/websocket/terminal.gateway.js +933 -0
  586. package/dist/cli/backend/src/websocket/terminal.gateway.js.map +1 -0
  587. package/dist/cli/config/vitest-exclude.constants.d.ts +53 -0
  588. package/dist/cli/config/vitest-exclude.constants.d.ts.map +1 -0
  589. package/dist/cli/config/vitest-exclude.constants.js +55 -0
  590. package/dist/cli/config/vitest-exclude.constants.js.map +1 -0
  591. package/frontend/dist/assets/index-890d3f9d.js +4961 -0
  592. package/frontend/dist/index.html +1 -1
  593. package/package.json +2 -2
  594. package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +174 -30
  595. package/packages/crewly-agent/src/runtime/agent-runner.service.ts +121 -6
  596. package/packages/crewly-agent/src/runtime/types.ts +56 -5
  597. package/frontend/dist/assets/index-aa737fd3.js +0 -5254
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: Complete Task
3
3
  description: Mark a task as complete with a summary of the work done.
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  category: task-management
6
6
  skillType: claude-skill
7
7
  assignableRoles:
@@ -43,24 +43,56 @@ Mark a task as complete with a summary of the work done. If the task has an outp
43
43
 
44
44
  | Parameter | Required | Description |
45
45
  |-----------|----------|-------------|
46
- | `absoluteTaskPath` | Yes | Absolute filesystem path to the task file |
46
+ | `workItemId` | Preferred | ID of the V3 WorkItem to complete. This is the only input that selects the WorkItem |
47
47
  | `sessionName` | Yes | Your agent session name |
48
48
  | `summary` | Yes | Summary of the work completed |
49
+ | `absoluteTaskPath` | No | **Legacy (V1).** Still accepted so older callers keep working, but it does NOT identify a WorkItem |
49
50
  | `output` | No | Structured output object (required if task has an output schema) |
50
- | `skipGates` | No | Set to `true` to skip quality gate checks |
51
+ | ~~`skipGates`~~ | **Rejected** | **Not supported.** This endpoint runs no quality gates, so there is nothing to skip. Passing it is a hard error. Use the `check-quality-gates` skill for gates. |
52
+
53
+ ### Which WorkItem gets completed
54
+
55
+ Resolution order:
56
+
57
+ 1. `workItemId`, if you pass it — always wins.
58
+ 2. Otherwise, a lookup of the WorkItem currently `running` against your
59
+ `sessionName` (`GET /api/task-pool/items?status=running&target=<session>`).
60
+ 3. If neither resolves, the skill exits non-zero with an error naming the
61
+ session it searched. It never reports success without completing something.
62
+
63
+ Pass `workItemId` whenever you know it — the lookup in step 2 depends on the
64
+ pool state at that instant and cannot disambiguate two concurrently running
65
+ items for one session.
51
66
 
52
67
  ## Example
53
68
 
54
69
  ```bash
55
- bash config/skills/agent/complete-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/implement-login.md","sessionName":"dev-1","summary":"Implemented login form with validation and tests"}'
70
+ bash config/skills/agent/core/complete-task/execute.sh '{"workItemId":"wi-abc123","sessionName":"dev-1","summary":"Implemented login form with validation and tests"}'
71
+ ```
72
+
73
+ ### Letting the skill resolve your running WorkItem
74
+
75
+ ```bash
76
+ bash config/skills/agent/core/complete-task/execute.sh '{"sessionName":"dev-1","summary":"Implemented login form with validation and tests"}'
56
77
  ```
57
78
 
58
79
  ### With structured output
59
80
 
60
81
  ```bash
61
- bash config/skills/agent/complete-task/execute.sh '{"absoluteTaskPath":"/projects/app/tasks/implement-login.md","sessionName":"dev-1","summary":"Implemented login","output":{"summary":"Login form with validation","filesChanged":["src/login.tsx","src/login.test.tsx"],"testsAdded":2}}'
82
+ bash config/skills/agent/core/complete-task/execute.sh '{"workItemId":"wi-abc123","sessionName":"dev-1","summary":"Implemented login","output":{"summary":"Login form with validation","filesChanged":["src/login.tsx","src/login.test.tsx"],"testsAdded":2}}'
62
83
  ```
63
84
 
85
+ Note: a `summary` key inside `output` overrides the top-level `summary`.
86
+
87
+ ### Legacy V1 caller (still supported)
88
+
89
+ ```bash
90
+ bash config/skills/agent/core/complete-task/execute.sh '{"absoluteTaskPath":"/projects/app/.crewly/tasks/in_progress/implement-login.md","sessionName":"dev-1","summary":"Implemented login"}'
91
+ ```
92
+
93
+ `absoluteTaskPath` is carried for logging context only; the WorkItem is still
94
+ resolved by step 2 above.
95
+
64
96
  ## Output Schema
65
97
 
66
98
  If the task markdown contains an `## Output Schema` section with a JSON Schema definition, your `output` object must validate against that schema. If validation fails, the response will include the errors and you can retry (up to 2 retries). After max retries, the task will be moved to blocked/.
@@ -5,14 +5,42 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
5
5
  source "${SCRIPT_DIR}/../../_common/lib.sh"
6
6
 
7
7
  INPUT=$(read_json_input "${1:-}")
8
- [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"absoluteTaskPath\":\"/path/to/task\",\"sessionName\":\"dev-1\",\"summary\":\"Implemented feature X\",\"output\":{\"key\":\"value\"}}'"
8
+ [ -z "$INPUT" ] && error_exit "Usage: execute.sh '{\"workItemId\":\"wi-abc123\",\"sessionName\":\"dev-1\",\"summary\":\"Implemented feature X\",\"output\":{\"key\":\"value\"}}'"
9
9
 
10
+ # `workItemId` is the V3 identifier and the ONLY input that drives the API
11
+ # call (see the resolution block further down). `absoluteTaskPath` is the
12
+ # legacy V1 input: still ACCEPTED so pre-existing callers keep working, but
13
+ # it neither selects the WorkItem nor is required.
14
+ #
15
+ # It used to be `require_param`'d here, contradicting this skill's own
16
+ # resolution logic: passing `workItemId` alone — the documented V3 flow —
17
+ # returned `{"error":"Missing required parameter: absoluteTaskPath"}`, so
18
+ # every agent completing a V3 WorkItem had to bypass the skill and curl
19
+ # /api/task-pool/complete by hand. Same silent-friction class as the
20
+ # create-task `{workItem: ...}` wrapper: the skill rejected a request that
21
+ # was, by its own contract, correct.
22
+ WORK_ITEM_ID=$(printf '%s' "$INPUT" | jq -r '.workItemId // empty')
10
23
  ABSOLUTE_TASK_PATH=$(printf '%s' "$INPUT" | jq -r '.absoluteTaskPath // empty')
11
24
  SESSION_NAME=$(printf '%s' "$INPUT" | jq -r '.sessionName // empty')
12
25
  SUMMARY=$(printf '%s' "$INPUT" | jq -r '.summary // empty')
26
+ # `skipGates` is REJECTED, not ignored.
27
+ #
28
+ # It was previously parsed here and forwarded in the request body. Nothing ever
29
+ # read it: `completeItem` destructures only `{agentId, tokenUsage, result}`
30
+ # (task-pool.controller.ts), and `POST /task-pool/complete/:id` runs no quality
31
+ # gates at all — gates live behind `POST /quality-gates/check`, reached via the
32
+ # `check-quality-gates` skill. So the field promised to skip something this
33
+ # endpoint never runs.
34
+ #
35
+ # Accepting-and-ignoring is the worst of the three dispositions: the caller
36
+ # believes gates were skipped, the belief is unfalsifiable, and nothing ever
37
+ # fails. Honouring it is incoherent (there is nothing here to skip). So it
38
+ # fails loudly instead. Safe to hard-error: no caller in the repo passes it.
13
39
  SKIP_GATES=$(printf '%s' "$INPUT" | jq -r '.skipGates // empty')
40
+ if [ -n "$SKIP_GATES" ]; then
41
+ error_exit "skipGates is not supported by complete-task and never was — it was accepted and silently discarded. POST /task-pool/complete runs no quality gates, so there is nothing here to skip. Quality gates live behind the 'check-quality-gates' skill (POST /quality-gates/check); run or skip them there. Remove skipGates from this call."
42
+ fi
14
43
  OUTPUT_JSON=$(printf '%s' "$INPUT" | jq -c '.output // empty')
15
- require_param "absoluteTaskPath" "$ABSOLUTE_TASK_PATH"
16
44
  require_param "sessionName" "$SESSION_NAME"
17
45
  require_param "summary" "$SUMMARY"
18
46
 
@@ -48,7 +76,7 @@ fi
48
76
 
49
77
  # #186: If the task file was already moved from in_progress/ to done/ by
50
78
  # report-status (via complete-by-session), succeed silently instead of failing.
51
- if echo "$ABSOLUTE_TASK_PATH" | grep -q '/in_progress/'; then
79
+ if [ -n "$ABSOLUTE_TASK_PATH" ] && echo "$ABSOLUTE_TASK_PATH" | grep -q '/in_progress/'; then
52
80
  DONE_PATH="${ABSOLUTE_TASK_PATH/\/in_progress\///done/}"
53
81
  if [ -f "$DONE_PATH" ] && [ ! -f "$ABSOLUTE_TASK_PATH" ]; then
54
82
  echo '{"success":true,"message":"Task already completed (moved to done by report-status)"}'
@@ -69,15 +97,20 @@ fi
69
97
  # The legacy `absoluteTaskPath` input is still accepted but no longer
70
98
  # drives the API call — it's only used for logging context. Callers
71
99
  # should switch to passing `workItemId`.
72
- WORK_ITEM_ID=$(printf '%s' "$INPUT" | jq -r '.workItemId // empty')
100
+ #
101
+ # WORK_ITEM_ID was read from the input up top alongside the other params,
102
+ # so the identifier is known before any of the legacy path handling runs.
73
103
  if [ -z "$WORK_ITEM_ID" ]; then
74
104
  POOL_RESP=$(api_call GET "/task-pool/items?status=running&target=${SESSION_NAME}" 2>/dev/null || echo '{}')
75
105
  WORK_ITEM_ID=$(echo "$POOL_RESP" | jq -r '.workItems[0].id // .data[0].id // empty' 2>/dev/null || true)
76
106
  fi
77
107
 
108
+ # Neither an explicit `workItemId` nor the pool lookup produced a target.
109
+ # Fail loudly and name both accepted identifiers — exiting 0 here would let
110
+ # a worker believe its task was closed while the pool still shows it
111
+ # running, which is the silent no-op this skill must never perform.
78
112
  if [ -z "$WORK_ITEM_ID" ]; then
79
- echo '{"error":"Could not resolve a running WorkItem for this session — pass `workItemId` explicitly."}' >&2
80
- exit 1
113
+ error_exit "Could not resolve a WorkItem to complete: no 'workItemId' was passed and no running WorkItem is assigned to session '${SESSION_NAME}'. Pass 'workItemId' explicitly — find it with GET /api/task-pool/items?status=running&target=${SESSION_NAME}. Note: 'absoluteTaskPath' is a legacy input and does NOT identify a WorkItem."
81
114
  fi
82
115
 
83
116
  # Hygiene #4: emit canonical body shape `{agentId, result:{summary, ...output}}`
@@ -99,7 +132,6 @@ fi
99
132
  BODY=$(jq -n \
100
133
  --arg agentId "$SESSION_NAME" \
101
134
  --arg summary "$SUMMARY" \
102
- --arg skipGates "$SKIP_GATES" \
103
135
  --argjson output "${OUTPUT_JSON:-null}" \
104
136
  '{
105
137
  agentId: $agentId,
@@ -107,8 +139,7 @@ BODY=$(jq -n \
107
139
  + (if $output != null and ($output | type) == "object"
108
140
  then $output
109
141
  else {} end))
110
- }
111
- + (if $skipGates == "true" then {skipGates: true} else {} end)')
142
+ }')
112
143
 
113
144
  api_call POST "/task-pool/complete/${WORK_ITEM_ID}" "$BODY"
114
145
 
@@ -0,0 +1,213 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # Tests for complete-task skill
4
+ #
5
+ # Guards how this skill resolves WHICH WorkItem to complete.
6
+ #
7
+ # `absoluteTaskPath` used to be `require_param`'d, which contradicted the
8
+ # skill's own resolution logic: the V3 path selects the WorkItem from
9
+ # `workItemId` (or a pool lookup) and treats `absoluteTaskPath` as legacy
10
+ # logging context only. Passing `workItemId` alone therefore returned
11
+ # `{"error":"Missing required parameter: absoluteTaskPath"}` and agents had
12
+ # to bypass the skill and curl /api/task-pool/complete by hand.
13
+ #
14
+ # These tests fail if that requirement is reintroduced, if the legacy
15
+ # `absoluteTaskPath` path stops working, or if resolving nothing degrades
16
+ # into a silent no-op instead of a clear error.
17
+ #
18
+ # `curl` is stubbed on PATH, so every case runs offline and deterministically
19
+ # while still proving the real HTTP request the skill would have issued.
20
+ # =============================================================================
21
+ set -eo pipefail
22
+
23
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
24
+ PASS=0
25
+ FAIL=0
26
+ ERRORS=""
27
+
28
+ assert_contains() {
29
+ local test_name="$1" needle="$2" haystack="$3"
30
+ if printf '%s' "$haystack" | grep -qF -- "$needle"; then
31
+ PASS=$((PASS + 1))
32
+ echo " ✓ ${test_name}"
33
+ else
34
+ FAIL=$((FAIL + 1))
35
+ ERRORS="${ERRORS}\n ✗ ${test_name}\n expected to contain: ${needle}\n actual: ${haystack}"
36
+ echo " ✗ ${test_name}"
37
+ echo " expected to contain: ${needle}"
38
+ fi
39
+ }
40
+
41
+ assert_not_contains() {
42
+ local test_name="$1" needle="$2" haystack="$3"
43
+ if printf '%s' "$haystack" | grep -qF -- "$needle"; then
44
+ FAIL=$((FAIL + 1))
45
+ ERRORS="${ERRORS}\n ✗ ${test_name}\n expected NOT to contain: ${needle}\n actual: ${haystack}"
46
+ echo " ✗ ${test_name}"
47
+ echo " expected NOT to contain: ${needle}"
48
+ else
49
+ PASS=$((PASS + 1))
50
+ echo " ✓ ${test_name}"
51
+ fi
52
+ }
53
+
54
+ # ---------------------------------------------------------------------------
55
+ # curl stub
56
+ #
57
+ # api_call() shells out to bare `curl`, so shadowing it on PATH intercepts
58
+ # every request without touching the skill. The stub records `METHOD URL` and
59
+ # the request body, then emits `<body>\n<http_code>` — the exact shape
60
+ # api_call parses because of its `-w '\n%{http_code}'`.
61
+ #
62
+ # GET /task-pool/items returns one WorkItem so the legacy pool-lookup path
63
+ # resolves, or an empty list when STUB_POOL_EMPTY=1, which is how the
64
+ # "resolves nothing" case is exercised.
65
+ # ---------------------------------------------------------------------------
66
+ STUB_DIR="$(mktemp -d)"
67
+ cat > "$STUB_DIR/curl" << 'STUB_EOF'
68
+ #!/bin/bash
69
+ METHOD="GET"; BODY=""; URL=""
70
+ while [ $# -gt 0 ]; do
71
+ case "$1" in
72
+ -X) METHOD="$2"; shift 2 ;;
73
+ -d) BODY="$2"; shift 2 ;;
74
+ -H) shift 2 ;;
75
+ -w) shift 2 ;;
76
+ -s) shift ;;
77
+ *) URL="$1"; shift ;;
78
+ esac
79
+ done
80
+ echo "${METHOD} ${URL}" >> "$CURL_LOG"
81
+ # Flatten to one line per request: jq -n pretty-prints, and the assertions
82
+ # below need one parseable JSON document per log line.
83
+ printf '%s\n' "$(printf '%s' "$BODY" | tr '\n' ' ')" >> "$CURL_BODY_LOG"
84
+
85
+ if [ "$METHOD" = "GET" ] && printf '%s' "$URL" | grep -q '/task-pool/items'; then
86
+ if [ "${STUB_POOL_EMPTY:-0}" = "1" ]; then
87
+ echo '{"success":true,"data":[],"count":0}'
88
+ else
89
+ echo '{"success":true,"data":[{"id":"wi-from-pool"}],"count":1}'
90
+ fi
91
+ echo "200"
92
+ exit 0
93
+ fi
94
+
95
+ echo '{"success":true,"stub":true}'
96
+ echo "200"
97
+ STUB_EOF
98
+ chmod +x "$STUB_DIR/curl"
99
+
100
+ export CREWLY_API_URL="http://stub.invalid"
101
+ export PATH="$STUB_DIR:$PATH"
102
+
103
+ # Runs execute.sh with a fresh request log. Sets OUT (stdout+stderr),
104
+ # REQUESTS (one "METHOD URL" per line) and BODIES (request bodies).
105
+ run_skill() {
106
+ CURL_LOG="$(mktemp)"; export CURL_LOG
107
+ CURL_BODY_LOG="$(mktemp)"; export CURL_BODY_LOG
108
+ OUT="$(bash "$SCRIPT_DIR/execute.sh" "$1" 2>&1)" || true
109
+ REQUESTS="$(cat "$CURL_LOG")"
110
+ BODIES="$(cat "$CURL_BODY_LOG")"
111
+ rm -f "$CURL_LOG" "$CURL_BODY_LOG"
112
+ }
113
+
114
+ echo "=== complete-task tests ==="
115
+
116
+ echo ""
117
+ echo "--- workItemId alone is sufficient (the reported bug) ---"
118
+
119
+ run_skill '{"workItemId":"wi-explicit","sessionName":"dev-1","summary":"Implemented feature X"}'
120
+ assert_not_contains "workItemId alone does NOT demand absoluteTaskPath" \
121
+ "Missing required parameter: absoluteTaskPath" "$OUT"
122
+ assert_contains "workItemId alone reaches POST /task-pool/complete/<id>" \
123
+ "POST http://stub.invalid/api/task-pool/complete/wi-explicit" "$REQUESTS"
124
+ assert_not_contains "workItemId alone skips the pool lookup entirely" \
125
+ "/task-pool/items" "$REQUESTS"
126
+
127
+ echo ""
128
+ echo "--- Canonical completion body ---"
129
+
130
+ # The endpoint reads `result.summary`; a top-level `summary` is ignored and
131
+ # 400s (task-pool.controller.ts `completeItem`).
132
+ # Tolerate no-match so a regression elsewhere reports as a failed assertion
133
+ # rather than killing the run under `set -e` / `pipefail`.
134
+ COMPLETE_BODY="$(printf '%s' "$BODIES" | grep 'agentId' | head -1 || true)"
135
+ assert_contains "body carries agentId" '"agentId": "dev-1"' "$COMPLETE_BODY"
136
+ assert_contains "body nests summary under result" '"summary": "Implemented feature X"' "$COMPLETE_BODY"
137
+ RESULT_SUMMARY="$(printf '%s' "$COMPLETE_BODY" | jq -r '.result.summary // "MISSING"' 2>/dev/null || echo "MISSING")"
138
+ assert_contains "result.summary is populated" "Implemented feature X" "$RESULT_SUMMARY"
139
+
140
+ echo ""
141
+ echo "--- Legacy absoluteTaskPath callers keep working (no regression) ---"
142
+
143
+ run_skill '{"absoluteTaskPath":"/proj/.crewly/tasks/in_progress/t.md","sessionName":"dev-2","summary":"Legacy caller"}'
144
+ assert_contains "legacy-only call falls back to the pool lookup" \
145
+ "GET http://stub.invalid/api/task-pool/items" "$REQUESTS"
146
+ assert_contains "legacy-only call completes the resolved WorkItem" \
147
+ "POST http://stub.invalid/api/task-pool/complete/wi-from-pool" "$REQUESTS"
148
+
149
+ run_skill '{"absoluteTaskPath":"/proj/.crewly/tasks/in_progress/t.md","workItemId":"wi-both","sessionName":"dev-2","summary":"Both identifiers"}'
150
+ assert_contains "explicit workItemId wins when both are supplied" \
151
+ "POST http://stub.invalid/api/task-pool/complete/wi-both" "$REQUESTS"
152
+
153
+ echo ""
154
+ echo "--- Neither identifier resolves: clear error, not a silent no-op ---"
155
+
156
+ STUB_POOL_EMPTY=1 run_skill '{"sessionName":"dev-3","summary":"Nothing to complete"}'
157
+ assert_contains "unresolvable completion reports an error" '"error"' "$OUT"
158
+ assert_contains "error names the workItemId parameter to pass" "workItemId" "$OUT"
159
+ assert_contains "error names the session it searched" "dev-3" "$OUT"
160
+ assert_not_contains "unresolvable completion does NOT POST a completion" \
161
+ "/task-pool/complete/" "$REQUESTS"
162
+
163
+ CURL_LOG="$(mktemp)"; export CURL_LOG
164
+ CURL_BODY_LOG="$(mktemp)"; export CURL_BODY_LOG
165
+ if STUB_POOL_EMPTY=1 bash "$SCRIPT_DIR/execute.sh" \
166
+ '{"sessionName":"dev-3","summary":"Nothing to complete"}' > /dev/null 2>&1; then
167
+ FAIL=$((FAIL + 1))
168
+ echo " ✗ unresolvable completion exits non-zero"
169
+ ERRORS="${ERRORS}\n ✗ unresolvable completion exits non-zero (exited 0)"
170
+ else
171
+ PASS=$((PASS + 1))
172
+ echo " ✓ unresolvable completion exits non-zero"
173
+ fi
174
+ rm -f "$CURL_LOG" "$CURL_BODY_LOG"
175
+
176
+ echo ""
177
+ echo "--- Remaining required parameters still enforced ---"
178
+
179
+ run_skill '{"workItemId":"wi-1","summary":"no session"}'
180
+ assert_contains "Missing sessionName returns error" "sessionName" "$OUT"
181
+
182
+ run_skill '{"workItemId":"wi-1","sessionName":"dev-1"}'
183
+ assert_contains "Missing summary returns error" "summary" "$OUT"
184
+
185
+ OUT="$(bash "$SCRIPT_DIR/execute.sh" '' 2>&1)" || true
186
+ assert_contains "Empty input returns usage error" "Usage" "$OUT"
187
+ assert_contains "Usage example leads with workItemId" "workItemId" "$OUT"
188
+
189
+ echo ""
190
+ echo "--- Source-level guards ---"
191
+
192
+ SRC="$(cat "$SCRIPT_DIR/execute.sh")"
193
+
194
+ assert_not_contains "absoluteTaskPath is NOT a required parameter" \
195
+ 'require_param "absoluteTaskPath"' "$SRC"
196
+ assert_contains "absoluteTaskPath is still parsed (legacy callers accepted)" \
197
+ "jq -r '.absoluteTaskPath // empty'" "$SRC"
198
+ assert_contains "sessionName is still required" 'require_param "sessionName"' "$SRC"
199
+ assert_contains "summary is still required" 'require_param "summary"' "$SRC"
200
+ assert_contains "unresolved WorkItem exits via error_exit" \
201
+ 'error_exit "Could not resolve a WorkItem to complete' "$SRC"
202
+ assert_contains "legacy in_progress shortcut only runs on the legacy path" \
203
+ 'if [ -n "$ABSOLUTE_TASK_PATH" ] && echo "$ABSOLUTE_TASK_PATH" | grep -q' "$SRC"
204
+
205
+ # Cleanup
206
+ rm -rf "$STUB_DIR"
207
+
208
+ echo ""
209
+ echo "=== Results: ${PASS} passed, ${FAIL} failed ==="
210
+ if [ $FAIL -gt 0 ]; then
211
+ echo -e "\nFailures:${ERRORS}"
212
+ exit 1
213
+ fi
@@ -49,6 +49,39 @@ Create a new task via the `/api/task-management/create` endpoint. This allows te
49
49
  | `--milestone` / `-m` | `milestone` | No | Milestone/sprint name (default: `delegated`) |
50
50
  | `--session` / `-s` | `sessionName` | No | Session to assign the task to (open if omitted) |
51
51
  | `--output-schema` | `outputSchema` | No | JSON object defining expected output schema |
52
+ | `--owner` | `owner` | No | Responsible role: `orchestrator`, `team_lead`, `agent` (default), `system`. A role, not a session name — use `--session` for the session |
53
+ | `--description` / `-d` | `description` | No | Short summary of the task |
54
+ | `--brief` | `briefMarkdown` | No | Long-form brief in markdown. Inline text, or `@/path/to/file.md`. Max 16384 bytes |
55
+
56
+ ### Always attach a brief
57
+
58
+ A task's title is not a contract. Every delegated task should carry **Goal**, **Expected Outcome**, and **Eval Criteria**
59
+ — the receiving agent is expected to ask for them if they are missing, and a task without them tends to drift or come
60
+ back unsatisfiable.
61
+
62
+ Put them in `--brief`. Prefer the `@file` form: a real brief is usually too long, and too full of quotes and backticks,
63
+ to survive being passed as a shell argument.
64
+
65
+ ```bash
66
+ cat > /tmp/brief.md <<'EOF'
67
+ ## GOAL
68
+ What the user ultimately wants.
69
+
70
+ ## EXPECTED OUTCOME
71
+ What must be true when this is done.
72
+
73
+ ## EVAL CRITERIA
74
+ 1. Testable statement.
75
+ 2. Another one.
76
+ EOF
77
+
78
+ bash execute.sh --project-path /path/to/project --task "Implement login API" \
79
+ --description "Session-cookie auth for the web portal" \
80
+ --brief @/tmp/brief.md --session dev-max
81
+ ```
82
+
83
+ An over-limit brief is **rejected, never truncated** — the error names the limit and your actual size, because what to
84
+ cut is your call, not the tool's.
52
85
 
53
86
  ## Examples — CLI Flags (preferred)
54
87
 
@@ -26,6 +26,10 @@ Options:
26
26
  --milestone | -m Milestone/sprint name (default: delegated)
27
27
  --session | -s Session to assign the task to (optional; if omitted, task is open)
28
28
  --output-schema JSON string defining expected output schema (optional)
29
+ --owner Responsible role: orchestrator, team_lead, agent, system (default: agent)
30
+ --description | -d Short summary of the task (optional)
31
+ --brief Long-form brief in markdown: inline text, or @/path/to/file.md
32
+ Should carry Goal + Expected Outcome + Eval Criteria. Max 16384 bytes.
29
33
  --json | -j Raw JSON payload (same as legacy)
30
34
  --help | -h Show this help
31
35
  EOF_USAGE
@@ -38,6 +42,9 @@ PRIORITY=""
38
42
  MILESTONE=""
39
43
  SESSION_NAME=""
40
44
  OUTPUT_SCHEMA=""
45
+ OWNER=""
46
+ DESCRIPTION=""
47
+ BRIEF=""
41
48
 
42
49
  # Detect legacy JSON argument
43
50
  if [[ $# -gt 0 && ${1:0:1} == '{' ]]; then
@@ -71,6 +78,18 @@ while [[ $# -gt 0 ]]; do
71
78
  OUTPUT_SCHEMA="$2"
72
79
  shift 2
73
80
  ;;
81
+ --owner)
82
+ OWNER="$2"
83
+ shift 2
84
+ ;;
85
+ --description|-d)
86
+ DESCRIPTION="$2"
87
+ shift 2
88
+ ;;
89
+ --brief)
90
+ BRIEF="$2"
91
+ shift 2
92
+ ;;
74
93
  --json|-j)
75
94
  INPUT_JSON="$2"
76
95
  shift 2
@@ -111,52 +130,92 @@ if [ -n "$INPUT_JSON" ]; then
111
130
  [ -z "$MILESTONE" ] && MILESTONE=$(printf '%s' "$INPUT" | jq -r '.milestone // empty')
112
131
  [ -z "$SESSION_NAME" ] && SESSION_NAME=$(printf '%s' "$INPUT" | jq -r '.sessionName // empty')
113
132
  [ -z "$OUTPUT_SCHEMA" ] && OUTPUT_SCHEMA=$(printf '%s' "$INPUT" | jq -c '.outputSchema // empty')
133
+ [ -z "$OWNER" ] && OWNER=$(printf '%s' "$INPUT" | jq -r '.owner // empty')
134
+ [ -z "$DESCRIPTION" ] && DESCRIPTION=$(printf '%s' "$INPUT" | jq -r '.description // empty')
135
+ [ -z "$BRIEF" ] && BRIEF=$(printf '%s' "$INPUT" | jq -r '.briefMarkdown // .brief // empty')
114
136
  fi
115
137
 
116
138
  # Apply defaults
117
139
  PRIORITY="${PRIORITY:-medium}"
118
140
  MILESTONE="${MILESTONE:-delegated}"
141
+ OWNER="${OWNER:-agent}"
119
142
 
120
143
  require_param "projectPath (--project-path)" "$PROJECT_PATH"
121
144
  require_param "task (--task)" "$TASK"
122
145
 
123
- # Build a V3 WorkItem for the task-pool.
124
- # `addToPool` accepts the WorkItem directly (id auto-generated server-side
125
- # when omitted). `priority` is mapped to V3's numeric priority scale where
126
- # critical=1, high=2, medium=3, low=4 — lower number = higher priority.
127
- case "$PRIORITY" in
128
- critical) PRIORITY_NUM=1 ;;
129
- high) PRIORITY_NUM=2 ;;
130
- medium) PRIORITY_NUM=3 ;;
131
- low) PRIORITY_NUM=4 ;;
132
- *) PRIORITY_NUM=3 ;;
133
- esac
146
+ # `--brief @/path/to/file.md` reads the brief from a file. A real brief is
147
+ # usually too long and too full of quotes/backticks to pass safely as a shell
148
+ # argument, so the file form is the one callers should reach for.
149
+ if [ -n "$BRIEF" ] && [ "${BRIEF:0:1}" = "@" ]; then
150
+ BRIEF_PATH="${BRIEF:1}"
151
+ [ -f "$BRIEF_PATH" ] || error_exit "brief file not found: ${BRIEF_PATH}"
152
+ BRIEF="$(cat "$BRIEF_PATH")"
153
+ fi
134
154
 
135
- WI_ID="task-$(date +%s%N | cut -c1-13)-$$"
155
+ # Enforce MAX_BRIEF_MARKDOWN_BYTES (16 * 1024) HERE rather than letting the
156
+ # server reject it, so the caller gets the limit and their actual size instead
157
+ # of a bare 400. Deliberately NOT truncated: silently shipping a half-brief is
158
+ # the same class of bug this field was added to fix — trimming is the caller's
159
+ # decision, not ours.
160
+ if [ -n "$BRIEF" ]; then
161
+ BRIEF_BYTES=$(printf '%s' "$BRIEF" | wc -c | tr -d ' ')
162
+ if [ "$BRIEF_BYTES" -gt 16384 ]; then
163
+ error_exit "briefMarkdown is ${BRIEF_BYTES} bytes, over the 16384-byte limit (MAX_BRIEF_MARKDOWN_BYTES). Trim it, or attach the long form as a file and reference it from the brief. Not truncating automatically — what to cut is your call."
164
+ fi
165
+ fi
166
+
167
+ # Validate `owner` against the WorkItemOwner enum the endpoint accepts.
168
+ # This is the field, not the session name — `owner` answers "which role is
169
+ # responsible for execution", and `target` answers "which session runs it".
170
+ # Sending a session name here fails validation with
171
+ # "owner must be one of: orchestrator, team_lead, agent, system".
172
+ case "$OWNER" in
173
+ orchestrator|team_lead|agent|system) ;;
174
+ *) error_exit "owner must be one of: orchestrator, team_lead, agent, system (got: '$OWNER'). This is a role, not a session name — use --session/target for the session." ;;
175
+ esac
136
176
 
177
+ # Build a minimal `CreateWorkItemInput` for `POST /task-pool/add`.
178
+ #
179
+ # The endpoint reads `req.body` DIRECTLY as the input — there is no
180
+ # `{workItem: ...}` envelope. It accepts two shapes: this minimal input
181
+ # (server fills id/status/createdAt/retryCount/...), or a legacy full
182
+ # WorkItem carrying id AND status AND createdAt. We send the minimal shape,
183
+ # matching `team-leader/delegate-task`.
184
+ #
185
+ # Deliberately NOT sent:
186
+ # - `id` — this skill has no idempotency key worth preserving, so the
187
+ # server-generated uuid wins. (`CreateWorkItemInput.id` IS
188
+ # honoured when supplied; we simply have nothing stable to
189
+ # supply.)
190
+ # - `status` — derived server-side from dependsOn/scheduledAt.
191
+ # - empty `description`/`briefMarkdown` — omitted rather than sent as "",
192
+ # so a task filed without a brief stays a clean minimal WorkItem
193
+ # - top-level `priority` — NOT a WorkItem field; it is silently dropped by
194
+ # both body shapes. Priority travels in `metadata.priority`,
195
+ # which is what real pool items carry and what
196
+ # work-item-projection reads.
137
197
  WORK_ITEM=$(jq -n \
138
- --arg id "$WI_ID" \
139
198
  --arg title "$TASK" \
140
199
  --arg target "$SESSION_NAME" \
141
- --arg owner "${SESSION_NAME:-system}" \
200
+ --arg owner "$OWNER" \
142
201
  --arg projectPath "$PROJECT_PATH" \
143
202
  --arg milestone "$MILESTONE" \
144
- --argjson priority "$PRIORITY_NUM" \
203
+ --arg priority "$PRIORITY" \
204
+ --arg description "$DESCRIPTION" \
205
+ --arg briefMarkdown "$BRIEF" \
145
206
  '{
146
- id: $id,
147
207
  title: $title,
148
208
  type: "delegate",
149
209
  owner: $owner,
150
- priority: $priority,
151
- status: "queued",
152
210
  target: (if $target == "" then null else $target end),
153
- metadata: { projectPath: $projectPath, milestone: $milestone }
154
- } | with_entries(select(.value != null))')
211
+ metadata: { projectPath: $projectPath, milestone: $milestone, priority: $priority }
212
+ }
213
+ + (if $description != "" then {description: $description} else {} end)
214
+ + (if $briefMarkdown != "" then {briefMarkdown: $briefMarkdown} else {} end)
215
+ | with_entries(select(.value != null))')
155
216
 
156
217
  if [ -n "$OUTPUT_SCHEMA" ] && [ "$OUTPUT_SCHEMA" != "" ]; then
157
218
  WORK_ITEM=$(printf '%s' "$WORK_ITEM" | jq --argjson schema "$OUTPUT_SCHEMA" '.metadata += {outputSchema: $schema}')
158
219
  fi
159
220
 
160
- BODY=$(jq -n --argjson workItem "$WORK_ITEM" '{workItem: $workItem}')
161
-
162
- api_call POST "/task-pool/add" "$BODY"
221
+ api_call POST "/task-pool/add" "$WORK_ITEM"
@@ -0,0 +1,46 @@
1
+ #!/bin/bash
2
+ # =============================================================================
3
+ # NOT A SKILL — a signpost.
4
+ #
5
+ # `delegate-task` does not live here. It is a TEAM LEADER skill:
6
+ #
7
+ # config/skills/team-leader/delegate-task/execute.sh
8
+ #
9
+ # This path exists because agents reach for it. Every other core skill lives at
10
+ # config/skills/agent/core/<name>/execute.sh, so the pattern predicts a
11
+ # delegate-task here, and project memory records at least one TL agent taking
12
+ # that path and having to self-correct.
13
+ #
14
+ # It used to be a symlink — and a BROKEN one: it pointed at
15
+ # ../../../../team-leader/delegate-task/execute.sh, which is one `../` too many
16
+ # (four levels up from here is `config/`, not `config/skills/`). So it resolved
17
+ # to config/team-leader/delegate-task/execute.sh, which does not exist.
18
+ # `test -e` failed and running it printed "No such file or directory".
19
+ #
20
+ # That is the worst of the three states: `ls` showed a delegate-task directory
21
+ # containing an execute.sh, so the path LOOKED real to anyone browsing, and
22
+ # failed only on use.
23
+ #
24
+ # WHY A SIGNPOST RATHER THAN A REPAIRED SYMLINK
25
+ #
26
+ # Repairing the link would work, but it would create a SECOND working entry
27
+ # point to one skill. Two paths to one implementation is the drift shape this
28
+ # codebase keeps paying for — the hand-copied mock in the TL delegate-task
29
+ # test, the template copies of norms. Anyone editing or testing delegate-task
30
+ # would have to remember both. There are zero callers of this path, so there is
31
+ # nothing to preserve by making it work.
32
+ #
33
+ # So: one canonical implementation, and a path that fails loudly and tells you
34
+ # where to go. Same disposition as the `skipGates` rejection (#742) and the
35
+ # `block-task` status pre-check (#747): reject, and name the remedy.
36
+ # =============================================================================
37
+ set -euo pipefail
38
+
39
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
40
+ REAL_SKILL="$(cd "${SCRIPT_DIR}/../../.." && pwd)/team-leader/delegate-task/execute.sh"
41
+
42
+ cat >&2 <<EOF_MSG
43
+ {"error":"delegate-task is a TEAM LEADER skill and does not live under agent/core. Use: ${REAL_SKILL}","correctPath":"config/skills/team-leader/delegate-task/execute.sh","calledPath":"config/skills/agent/core/delegate-task/execute.sh"}
44
+ EOF_MSG
45
+
46
+ exit 1
@@ -53,7 +53,7 @@ anything governance-related — delegating, escalating, deciding scope.
53
53
 
54
54
  | Parameter | Required | Description |
55
55
  |-----------|----------|-------------|
56
- | `trigger` | No | Filter to norms relevant to a moment (e.g. `"before_commit"`, `"before_delegate"`). Omit to read all. |
56
+ | `trigger` | No | Filter to norms relevant to a moment (e.g. `"before_commit"`, `"delegation"`). Matched against the norm's `trigger:` list as whole tokens, case-insensitively — `"lead"` does NOT match a norm tagged `inbound_lead`. Pass several comma-separated to mean "any of these". Omit to read all. |
57
57
  | `teamId` | No | Team to read. Defaults to the team resolved from your `sessionName`. |
58
58
  | `sessionName` | No | Your session name, used to resolve the team when `teamId` is omitted. |
59
59