crewly 1.20.191 → 1.20.193

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 (541) hide show
  1. package/config/constants.ts +11 -0
  2. package/config/hooks/subagent-guard/subagent.sh +113 -0
  3. package/config/roles/architect/prompt.md +1 -1
  4. package/config/roles/auditor/prompt.md +1 -1
  5. package/config/roles/backend-developer/prompt.md +1 -1
  6. package/config/roles/content-strategist/prompt.md +2 -2
  7. package/config/roles/designer/prompt.md +1 -1
  8. package/config/roles/developer/prompt.md +2 -2
  9. package/config/roles/frontend-developer/prompt.md +1 -1
  10. package/config/roles/fullstack-dev/prompt.md +1 -1
  11. package/config/roles/generalist/prompt.md +1 -1
  12. package/config/roles/ops/prompt.md +1 -1
  13. package/config/roles/orchestrator/prompt.md +2 -2
  14. package/config/roles/product-manager/prompt.md +1 -1
  15. package/config/roles/qa/prompt.md +1 -1
  16. package/config/roles/qa-engineer/prompt.md +1 -1
  17. package/config/roles/researcher/prompt.md +1 -1
  18. package/config/roles/sales/prompt.md +1 -1
  19. package/config/roles/support/prompt.md +1 -1
  20. package/config/roles/team-leader/prompt.md +1 -1
  21. package/config/roles/tpm/prompt.md +1 -1
  22. package/config/roles/ux-designer/prompt.md +1 -1
  23. package/config/skills/_common/complete-body-shape.test.sh +17 -0
  24. package/config/skills/agent/core/complete-task/SKILL.md +27 -4
  25. package/config/skills/agent/core/complete-task/execute.sh +23 -3
  26. package/config/skills/agent/core/complete-task/execute.test.sh +34 -0
  27. package/config/skills/agent/core/handoff-task/execute.sh +1 -1
  28. package/config/skills/agent/core/report-status/SKILL.md +27 -4
  29. package/config/skills/agent/core/report-status/execute.sh +104 -4
  30. package/config/skills/agent/core/send-message/SKILL.md +6 -0
  31. package/config/skills/agent/core/send-message/execute.sh +17 -1
  32. package/config/skills/agent/core/send-message/execute.test.sh +81 -0
  33. package/config/skills/agent/core/todo-add/SKILL.md +16 -2
  34. package/config/skills/agent/core/todo-add/execute.sh +21 -5
  35. package/config/skills/agent/core/todo-add/execute.test.sh +14 -0
  36. package/config/skills/agent/core/todo-tasks/SKILL.md +4 -3
  37. package/config/skills/agent/core/todo-update/SKILL.md +13 -2
  38. package/config/skills/agent/core/todo-update/execute.sh +41 -3
  39. package/config/skills/agent/core/todo-update/execute.test.sh +7 -0
  40. package/config/skills/marketplace-registry.ts +4 -4
  41. package/config/skills/orchestrator/complete-task/SKILL.md +13 -6
  42. package/config/skills/orchestrator/complete-task/execute.sh +22 -3
  43. package/config/skills/orchestrator/delegate-task/execute.sh +2 -2
  44. package/config/skills/orchestrator/harness-login/SKILL.md +9 -1
  45. package/config/skills/orchestrator/harness-login/execute.sh +12 -4
  46. package/config/skills/orchestrator/harness-login/execute.test.sh +7 -0
  47. package/config/skills/team-leader/delegate-task/execute.sh +1 -1
  48. package/config/skills/team-leader/verify-output/SKILL.md +18 -1
  49. package/config/skills/team-leader/verify-output/execute.sh +28 -0
  50. package/config/skills/team-leader/verify-output/execute.test.sh +27 -0
  51. package/dist/backend/backend/src/constants.d.ts +181 -2
  52. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  53. package/dist/backend/backend/src/constants.js +183 -2
  54. package/dist/backend/backend/src/constants.js.map +1 -1
  55. package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts +6 -0
  56. package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts.map +1 -1
  57. package/dist/backend/backend/src/controllers/canva/canva.controller.js +15 -4
  58. package/dist/backend/backend/src/controllers/canva/canva.controller.js.map +1 -1
  59. package/dist/backend/backend/src/controllers/canva/canva.routes.d.ts.map +1 -1
  60. package/dist/backend/backend/src/controllers/canva/canva.routes.js +3 -1
  61. package/dist/backend/backend/src/controllers/canva/canva.routes.js.map +1 -1
  62. package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.d.ts +1 -1
  63. package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.js +1 -1
  64. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
  65. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +4 -1
  66. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
  67. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts +4 -0
  68. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts.map +1 -1
  69. package/dist/backend/backend/src/controllers/connector/connector.controller.js +32 -3
  70. package/dist/backend/backend/src/controllers/connector/connector.controller.js.map +1 -1
  71. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts +41 -0
  72. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts.map +1 -0
  73. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js +75 -0
  74. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js.map +1 -0
  75. package/dist/backend/backend/src/controllers/google/google.controller.d.ts +6 -0
  76. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  77. package/dist/backend/backend/src/controllers/google/google.controller.js +21 -2
  78. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  79. package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
  80. package/dist/backend/backend/src/controllers/google/google.routes.js +3 -1
  81. package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
  82. package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts.map +1 -1
  83. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +22 -3
  84. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js.map +1 -1
  85. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +19 -2
  86. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -1
  87. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +39 -6
  88. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -1
  89. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -1
  90. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +3 -1
  91. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -1
  92. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +9 -0
  93. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  94. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +71 -2
  95. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  96. package/dist/backend/backend/src/controllers/people/people.routes.d.ts +25 -0
  97. package/dist/backend/backend/src/controllers/people/people.routes.d.ts.map +1 -0
  98. package/dist/backend/backend/src/controllers/people/people.routes.js +90 -0
  99. package/dist/backend/backend/src/controllers/people/people.routes.js.map +1 -0
  100. package/dist/backend/backend/src/controllers/request-types.d.ts +2 -0
  101. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  102. package/dist/backend/backend/src/controllers/security/approvals.controller.d.ts +26 -0
  103. package/dist/backend/backend/src/controllers/security/approvals.controller.d.ts.map +1 -0
  104. package/dist/backend/backend/src/controllers/security/approvals.controller.js +73 -0
  105. package/dist/backend/backend/src/controllers/security/approvals.controller.js.map +1 -0
  106. package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
  107. package/dist/backend/backend/src/controllers/session/session.controller.js +9 -0
  108. package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
  109. package/dist/backend/backend/src/controllers/slack/slack.controller.js +1 -1
  110. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  111. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts +22 -1
  112. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
  113. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +143 -3
  114. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
  115. package/dist/backend/backend/src/controllers/system/usage.controller.d.ts +3 -3
  116. package/dist/backend/backend/src/controllers/system/usage.controller.js +3 -3
  117. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +25 -3
  118. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  119. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +125 -19
  120. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  121. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  122. package/dist/backend/backend/src/controllers/team/team.controller.js +14 -0
  123. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  124. package/dist/backend/backend/src/index.d.ts.map +1 -1
  125. package/dist/backend/backend/src/index.js +44 -1
  126. package/dist/backend/backend/src/index.js.map +1 -1
  127. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  128. package/dist/backend/backend/src/routes/api.routes.js +3 -0
  129. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  130. package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
  131. package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
  132. package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
  133. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +13 -0
  134. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/agent/agent-registration.service.js +28 -3
  136. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  137. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
  138. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  139. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +14 -3
  140. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  141. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
  142. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  143. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
  144. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  145. package/dist/backend/backend/src/services/agent/idle-detection.service.js +1 -1
  146. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  147. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
  148. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  149. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
  150. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  151. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
  152. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  153. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
  154. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  155. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
  156. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  157. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +49 -5
  158. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  159. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  160. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
  161. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  162. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
  163. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
  164. package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts +8 -0
  165. package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts.map +1 -1
  166. package/dist/backend/backend/src/services/browser/browser-approval.service.js +10 -0
  167. package/dist/backend/backend/src/services/browser/browser-approval.service.js.map +1 -1
  168. package/dist/backend/backend/src/services/canva/canva-token.service.d.ts +17 -4
  169. package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
  170. package/dist/backend/backend/src/services/canva/canva-token.service.js +49 -17
  171. package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
  172. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +55 -0
  173. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  174. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +80 -0
  175. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  176. package/dist/backend/backend/src/services/cloud/cloud-device-pairing.client.d.ts +1 -1
  177. package/dist/backend/backend/src/services/cloud/cloud-device-pairing.client.js +1 -1
  178. package/dist/backend/backend/src/services/cloud/cloud-device-pairing.service.d.ts +1 -1
  179. package/dist/backend/backend/src/services/cloud/cloud-device-pairing.service.js +1 -1
  180. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +17 -2
  181. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -1
  182. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +30 -6
  183. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -1
  184. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +38 -2
  185. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -1
  186. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +63 -1
  187. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -1
  188. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
  189. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  190. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +204 -56
  191. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  192. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
  193. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  194. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  195. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +9 -0
  196. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  197. package/dist/backend/backend/src/services/decisions/decision.service.js +11 -0
  198. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  199. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +3 -0
  201. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  202. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts +25 -2
  203. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
  204. package/dist/backend/backend/src/services/google/google-workspace-token.service.js +48 -7
  205. package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
  206. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts +207 -0
  207. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
  208. package/dist/backend/backend/src/services/harness/claude-accounts.js +306 -0
  209. package/dist/backend/backend/src/services/harness/claude-accounts.js.map +1 -0
  210. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
  211. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  212. package/dist/backend/backend/src/services/harness/harness-credentials.store.js +48 -0
  213. package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  214. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
  215. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
  216. package/dist/backend/backend/src/services/harness/harness-relogin.service.js +156 -19
  217. package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -1
  218. package/dist/backend/backend/src/services/harness/harness.types.d.ts +2 -0
  219. package/dist/backend/backend/src/services/harness/harness.types.d.ts.map +1 -1
  220. package/dist/backend/backend/src/services/harness/harness.types.js.map +1 -1
  221. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +19 -4
  222. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  223. package/dist/backend/backend/src/services/harness/login-broker.service.js +46 -7
  224. package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -1
  225. package/dist/backend/backend/src/services/harness/owner-login-request.d.ts +18 -2
  226. package/dist/backend/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
  227. package/dist/backend/backend/src/services/harness/owner-login-request.js +31 -7
  228. package/dist/backend/backend/src/services/harness/owner-login-request.js.map +1 -1
  229. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
  230. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  231. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
  232. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  233. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
  234. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  235. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +29 -0
  236. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  237. package/dist/backend/backend/src/services/messaging/spend-capped-delivery.d.ts +54 -0
  238. package/dist/backend/backend/src/services/messaging/spend-capped-delivery.d.ts.map +1 -0
  239. package/dist/backend/backend/src/services/messaging/spend-capped-delivery.js +65 -0
  240. package/dist/backend/backend/src/services/messaging/spend-capped-delivery.js.map +1 -0
  241. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
  242. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  243. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
  244. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  245. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +87 -5
  246. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -1
  247. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +151 -12
  248. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -1
  249. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +17 -4
  250. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
  251. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +45 -17
  252. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
  253. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts +118 -2
  254. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -1
  255. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js +213 -45
  256. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -1
  257. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +53 -1
  258. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map +1 -1
  259. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js +137 -60
  260. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
  261. package/dist/backend/backend/src/services/monitoring/model-pricing.d.ts +2 -1
  262. package/dist/backend/backend/src/services/monitoring/model-pricing.d.ts.map +1 -1
  263. package/dist/backend/backend/src/services/monitoring/model-pricing.js +13 -0
  264. package/dist/backend/backend/src/services/monitoring/model-pricing.js.map +1 -1
  265. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +9 -0
  266. package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  267. package/dist/backend/backend/src/services/monitoring/token-usage.service.js +32 -3
  268. package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  269. package/dist/backend/backend/src/services/people/acting-for.service.d.ts +151 -0
  270. package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -0
  271. package/dist/backend/backend/src/services/people/acting-for.service.js +224 -0
  272. package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -0
  273. package/dist/backend/backend/src/services/people/dedicated-agent.d.ts +89 -0
  274. package/dist/backend/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
  275. package/dist/backend/backend/src/services/people/dedicated-agent.js +113 -0
  276. package/dist/backend/backend/src/services/people/dedicated-agent.js.map +1 -0
  277. package/dist/backend/backend/src/services/people/grant-sharing.d.ts +79 -0
  278. package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -0
  279. package/dist/backend/backend/src/services/people/grant-sharing.js +135 -0
  280. package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -0
  281. package/dist/backend/backend/src/services/people/people-directory.service.d.ts +181 -0
  282. package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -0
  283. package/dist/backend/backend/src/services/people/people-directory.service.js +317 -0
  284. package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -0
  285. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  286. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
  287. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
  288. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
  289. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
  290. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts +8 -1
  291. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js +16 -2
  293. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js.map +1 -1
  294. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +60 -1
  295. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
  296. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +140 -8
  297. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
  298. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js +1 -1
  299. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js.map +1 -1
  300. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
  301. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
  302. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
  303. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
  304. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
  305. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +12 -2
  306. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
  307. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts +7 -1
  308. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts.map +1 -1
  309. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js +18 -3
  310. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js.map +1 -1
  311. package/dist/backend/backend/src/services/security/approval-activity.service.d.ts +203 -0
  312. package/dist/backend/backend/src/services/security/approval-activity.service.d.ts.map +1 -0
  313. package/dist/backend/backend/src/services/security/approval-activity.service.js +279 -0
  314. package/dist/backend/backend/src/services/security/approval-activity.service.js.map +1 -0
  315. package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
  316. package/dist/backend/backend/src/services/skill/skill.service.js +14 -3
  317. package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
  318. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  319. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +3 -0
  320. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  321. package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts +22 -0
  322. package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -1
  323. package/dist/backend/backend/src/services/slack/slack-mention-resolver.js +50 -0
  324. package/dist/backend/backend/src/services/slack/slack-mention-resolver.js.map +1 -1
  325. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
  326. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  327. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
  328. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  329. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +54 -1
  330. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  331. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +260 -20
  332. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  333. package/dist/backend/backend/src/services/spend/spend-cap-command.js +1 -1
  334. package/dist/backend/backend/src/services/spend/spend-cap-command.js.map +1 -1
  335. package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +48 -1
  336. package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -1
  337. package/dist/backend/backend/src/services/spend/spend-cap.service.js +85 -2
  338. package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -1
  339. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts +105 -0
  340. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts.map +1 -0
  341. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js +238 -0
  342. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js.map +1 -0
  343. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  344. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +4 -0
  345. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  346. package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts +101 -14
  347. package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts.map +1 -1
  348. package/dist/backend/backend/src/services/usage/usage-stats.service.js +183 -61
  349. package/dist/backend/backend/src/services/usage/usage-stats.service.js.map +1 -1
  350. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +2 -0
  351. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  352. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +9 -0
  353. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  354. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +10 -0
  355. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  356. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +45 -2
  357. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  358. package/dist/backend/backend/src/types/index.d.ts +12 -1
  359. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  360. package/dist/backend/backend/src/types/index.js.map +1 -1
  361. package/dist/backend/backend/src/types/messaging.types.d.ts +5 -0
  362. package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
  363. package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
  364. package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts +77 -0
  365. package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts.map +1 -0
  366. package/dist/backend/backend/src/types/v2/completion-evidence.types.js +119 -0
  367. package/dist/backend/backend/src/types/v2/completion-evidence.types.js.map +1 -0
  368. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +13 -0
  369. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  370. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  371. package/dist/backend/build-info.json +2 -2
  372. package/dist/backend/config/constants.d.ts +11 -0
  373. package/dist/backend/config/constants.d.ts.map +1 -1
  374. package/dist/backend/config/constants.js +11 -0
  375. package/dist/backend/config/constants.js.map +1 -1
  376. package/dist/cli/backend/src/constants.d.ts +181 -2
  377. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  378. package/dist/cli/backend/src/constants.js +183 -2
  379. package/dist/cli/backend/src/constants.js.map +1 -1
  380. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +13 -0
  381. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  382. package/dist/cli/backend/src/services/agent/agent-registration.service.js +28 -3
  383. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  384. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
  385. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  386. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +14 -3
  387. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  388. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
  389. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  390. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
  391. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  392. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
  393. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  394. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
  395. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  396. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
  397. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  398. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
  399. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  400. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
  401. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  402. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +49 -5
  403. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  404. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  405. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
  406. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  407. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
  408. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
  409. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +55 -0
  410. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  411. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +80 -0
  412. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  413. package/dist/cli/backend/src/services/cloud/cloud-device-pairing.client.d.ts +1 -1
  414. package/dist/cli/backend/src/services/cloud/cloud-device-pairing.client.js +1 -1
  415. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
  416. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  417. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +204 -56
  418. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  419. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
  420. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  421. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  422. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +9 -0
  423. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  424. package/dist/cli/backend/src/services/decisions/decision.service.js +11 -0
  425. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  426. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts +207 -0
  427. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
  428. package/dist/cli/backend/src/services/harness/claude-accounts.js +306 -0
  429. package/dist/cli/backend/src/services/harness/claude-accounts.js.map +1 -0
  430. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
  431. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  432. package/dist/cli/backend/src/services/harness/harness-credentials.store.js +48 -0
  433. package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  434. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
  435. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
  436. package/dist/cli/backend/src/services/harness/harness-relogin.service.js +156 -19
  437. package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -1
  438. package/dist/cli/backend/src/services/harness/harness.types.d.ts +2 -0
  439. package/dist/cli/backend/src/services/harness/harness.types.d.ts.map +1 -1
  440. package/dist/cli/backend/src/services/harness/harness.types.js.map +1 -1
  441. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +19 -4
  442. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  443. package/dist/cli/backend/src/services/harness/login-broker.service.js +46 -7
  444. package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -1
  445. package/dist/cli/backend/src/services/harness/owner-login-request.d.ts +18 -2
  446. package/dist/cli/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
  447. package/dist/cli/backend/src/services/harness/owner-login-request.js +31 -7
  448. package/dist/cli/backend/src/services/harness/owner-login-request.js.map +1 -1
  449. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
  450. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  451. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
  452. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  453. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
  454. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  455. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +29 -0
  456. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  457. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
  458. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  459. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
  460. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  461. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts +197 -0
  462. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -0
  463. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js +455 -0
  464. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -0
  465. package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts +2 -1
  466. package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts.map +1 -1
  467. package/dist/cli/backend/src/services/monitoring/model-pricing.js +13 -0
  468. package/dist/cli/backend/src/services/monitoring/model-pricing.js.map +1 -1
  469. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +9 -0
  470. package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
  471. package/dist/cli/backend/src/services/monitoring/token-usage.service.js +32 -3
  472. package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
  473. package/dist/cli/backend/src/services/people/acting-for.service.d.ts +151 -0
  474. package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -0
  475. package/dist/cli/backend/src/services/people/acting-for.service.js +224 -0
  476. package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -0
  477. package/dist/cli/backend/src/services/people/dedicated-agent.d.ts +89 -0
  478. package/dist/cli/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
  479. package/dist/cli/backend/src/services/people/dedicated-agent.js +113 -0
  480. package/dist/cli/backend/src/services/people/dedicated-agent.js.map +1 -0
  481. package/dist/cli/backend/src/services/people/people-directory.service.d.ts +181 -0
  482. package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -0
  483. package/dist/cli/backend/src/services/people/people-directory.service.js +317 -0
  484. package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -0
  485. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
  486. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
  487. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
  488. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
  489. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
  490. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
  491. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
  492. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
  493. package/dist/cli/backend/src/services/skill/skill.service.d.ts.map +1 -1
  494. package/dist/cli/backend/src/services/skill/skill.service.js +14 -3
  495. package/dist/cli/backend/src/services/skill/skill.service.js.map +1 -1
  496. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  497. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +3 -0
  498. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  499. package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts +22 -0
  500. package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -1
  501. package/dist/cli/backend/src/services/slack/slack-mention-resolver.js +50 -0
  502. package/dist/cli/backend/src/services/slack/slack-mention-resolver.js.map +1 -1
  503. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
  504. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  505. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
  506. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  507. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +54 -1
  508. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  509. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +260 -20
  510. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  511. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  512. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +4 -0
  513. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  514. package/dist/cli/backend/src/types/index.d.ts +12 -1
  515. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  516. package/dist/cli/backend/src/types/index.js.map +1 -1
  517. package/dist/cli/backend/src/types/messaging.types.d.ts +5 -0
  518. package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
  519. package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
  520. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +13 -0
  521. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  522. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  523. package/dist/cli/cli/src/utils/marketplace.d.ts +21 -0
  524. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  525. package/dist/cli/cli/src/utils/marketplace.js +35 -1
  526. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  527. package/dist/cli/config/constants.d.ts +11 -0
  528. package/dist/cli/config/constants.d.ts.map +1 -1
  529. package/dist/cli/config/constants.js +11 -0
  530. package/dist/cli/config/constants.js.map +1 -1
  531. package/dist/cli/config/skills/marketplace-registry.d.ts +4 -4
  532. package/dist/cli/config/skills/marketplace-registry.js +4 -4
  533. package/frontend/dist/assets/index-465d1f8f.js +4955 -0
  534. package/frontend/dist/assets/index-5e967795.css +42 -0
  535. package/frontend/dist/index.html +2 -2
  536. package/package.json +1 -1
  537. package/packages/crewly-agent/src/runtime/tool-registry.test.ts +45 -0
  538. package/packages/crewly-agent/src/runtime/tool-registry.ts +40 -5
  539. package/packages/crewly-agent/src/test/isolated-home.test.ts +24 -0
  540. package/frontend/dist/assets/index-20a67829.css +0 -42
  541. package/frontend/dist/assets/index-49f50b45.js +0 -4952
@@ -24,6 +24,8 @@
24
24
  *
25
25
  * @module services/slack/slack-team-channel.service
26
26
  */
27
+ import { notePerson } from '../people/people-directory.service.js';
28
+ import { dedicatedDecisionFor } from '../people/dedicated-agent.js';
27
29
  import { getTicketIntakeService } from '../v3/ticket-intake.service.js';
28
30
  import { intakeWithin, slackIntakeMessage, ticketOfOutcome, markAndLinkTicket } from '../v3/ticket-channel-hooks.js';
29
31
  import { CREWLY_CONSTANTS, RUNTIME_FALLBACK_CONSTANTS } from '../../constants.js';
@@ -42,7 +44,7 @@ import { getSlackDirectoryService } from './slack-directory.service.js';
42
44
  import { SLACK_TEAM_CHANNEL_CONSTANTS, OWNER_EVIDENCE_METADATA, SLACK_THREAD_KEY_CONSTANTS } from '../../constants.js';
43
45
  import { parseSlackThreadKey } from './slack-thread-key.js';
44
46
  import { withTopicLine } from '../orc/work-item-destination.js';
45
- import { resolveSlackMentions, extractNativeMentionIds } from './slack-mention-resolver.js';
47
+ import { resolveSlackMentions, extractNativeMentionIds, leadingNameMention } from './slack-mention-resolver.js';
46
48
  import { toSlackMrkdwn } from './slack-mrkdwn.js';
47
49
  import { renderSlackThreadContext } from './slack-thread-context.service.js';
48
50
  const EMPTY_STORE = {
@@ -128,6 +130,12 @@ export function orchestratorSyncTeamId(instanceId) {
128
130
  }
129
131
  /** Separates the orchestrator's session from the instance it runs on. */
130
132
  const ORCHESTRATOR_INSTANCE_SEPARATOR = '@';
133
+ /**
134
+ * `@here` / `@channel` / `@everyone`, as Slack delivers them (`<!here>`) or
135
+ * typed literally: a message to the whole room, so it has an addressee of its
136
+ * own and never inherits a person-to-person exchange.
137
+ */
138
+ const SLACK_BROADCAST_MENTION_RE = /<!(?:here|channel|everyone)(?:\|[^>]*)?>|(?<![\w<@])@(?:here|channel|everyone)\b/i;
131
139
  /**
132
140
  * The session the orchestrator is registered with Cloud under.
133
141
  *
@@ -947,6 +955,38 @@ export class SlackTeamChannelService {
947
955
  // -------------------------------------------------------------------------
948
956
  // Inbound (Slack → huddle)
949
957
  // -------------------------------------------------------------------------
958
+ /**
959
+ * Post the polite decline for every @'d agent that is dedicated to someone
960
+ * other than the sender (issue #968).
961
+ *
962
+ * @param message - Inbound channel message (from a human)
963
+ * @param mentions - Sessions it addressed
964
+ * @returns The sessions that declined
965
+ */
966
+ async declineDedicatedMentions(message, mentions) {
967
+ const declined = [];
968
+ for (const sessionName of mentions) {
969
+ const decision = await dedicatedDecisionFor(this.deps.storage, sessionName, {
970
+ slackUserId: message.userId,
971
+ authorAgentSession: message.authorAgentSession,
972
+ });
973
+ if (!decision.decline)
974
+ continue;
975
+ declined.push(sessionName);
976
+ const botToken = this.deps.identities?.getInstalled(sessionName)?.botToken;
977
+ await this.deps.slack
978
+ .sendMessage({
979
+ channelId: message.channelId,
980
+ text: decision.text,
981
+ threadTs: message.threadTs || message.ts,
982
+ ...(botToken ? { botToken } : {}),
983
+ skipChatV2Mirror: true,
984
+ })
985
+ .catch((err) => this.logger.warn('Could not post the dedicated-agent decline', { sessionName, error: err instanceof Error ? err.message : String(err) }));
986
+ this.logger.info('Dedicated agent declined a channel message from someone else', { sessionName, slackUserId: message.userId });
987
+ }
988
+ return declined;
989
+ }
950
990
  /**
951
991
  * Route an inbound Slack message that arrived in a mapped channel.
952
992
  *
@@ -970,6 +1010,7 @@ export class SlackTeamChannelService {
970
1010
  await this.load();
971
1011
  if (message.userId && !message.authorAgentSession) {
972
1012
  this.rememberHuman(message.userId, [message.user?.realName, message.user?.name]);
1013
+ notePerson(message.userId, message.user?.realName || message.user?.name);
973
1014
  }
974
1015
  let mapping = this.findBySlackChannelId(message.channelId);
975
1016
  if (!mapping)
@@ -1041,7 +1082,36 @@ export class SlackTeamChannelService {
1041
1082
  // lists every agent the message @'s; one addressed only elsewhere is
1042
1083
  // that machine's to handle.
1043
1084
  const isLocal = (sess) => this.deps.isLocalAgent?.(sess) ?? members.some((m) => m.sessionName === sess);
1044
- const mentionedElsewhere = (message.mentionedAgentSessions ?? []).filter((sess) => !isLocal(sess));
1085
+ // An agent named at the start of the message, with no @ ("Aria,帮我…",
1086
+ // "Aria, can you…"), is addressed — owner's rule, 2026-10-02. Only agents
1087
+ // in this room count: its local members, and the ones Cloud lists on
1088
+ // other machines.
1089
+ const namedElsewhere = [];
1090
+ if (!handoffTo) {
1091
+ const roomLocal = isAdhocMapping(mapping)
1092
+ ? candidates.filter((c) => (mapping.members ?? []).includes(c.sessionName))
1093
+ : candidates;
1094
+ const roomRemote = (message.room?.members ?? [])
1095
+ .filter((m) => !isLocal(localAgentSession(m.agentSession)) && !roomLocal.some((c) => c.sessionName === m.agentSession))
1096
+ .map((m) => ({ name: m.displayName, sessionName: m.agentSession }));
1097
+ const named = leadingNameMention(message.text ?? '', [...roomLocal, ...roomRemote]);
1098
+ if (named && roomLocal.includes(named)) {
1099
+ if (!resolved.mentions.includes(named.sessionName))
1100
+ resolved.mentions.push(named.sessionName);
1101
+ }
1102
+ else if (named) {
1103
+ namedElsewhere.push(named.sessionName);
1104
+ }
1105
+ }
1106
+ // Dedicated agents (issue #968) @'d by anyone but their person: each
1107
+ // posts a polite decline from its own bot and is taken off the list —
1108
+ // nothing is dispatched to it and it is not woken.
1109
+ const declinedDedicated = !message.authorAgentSession && message.userId && resolved.mentions.length > 0 ? await this.declineDedicatedMentions(message, resolved.mentions) : [];
1110
+ const declinedOnly = declinedDedicated.length > 0 && resolved.mentions.every((sess) => declinedDedicated.includes(sess));
1111
+ for (const sess of declinedDedicated)
1112
+ resolved.mentions.splice(resolved.mentions.indexOf(sess), 1);
1113
+ const agentsMentionedViaCloud = [...new Set([...(message.mentionedAgentSessions ?? []), ...namedElsewhere])];
1114
+ const mentionedElsewhere = agentsMentionedViaCloud.filter((sess) => !isLocal(sess));
1045
1115
  const addressedElsewhereOnly = !handoffTo && resolved.mentions.length === 0 && mentionedElsewhere.length > 0;
1046
1116
  // @-mentions of people: the owner asking a
1047
1117
  // colleague is not a question for the agents (2026-10-01,
@@ -1050,10 +1120,7 @@ export class SlackTeamChannelService {
1050
1120
  const peopleMentions = message.authorAgentSession || handoffTo
1051
1121
  ? { userIds: [], names: [] }
1052
1122
  : await this.peopleMentions(message, resolved, teams);
1053
- const addressedPeopleOnly = !addressedElsewhereOnly &&
1054
- resolved.mentions.length === 0 &&
1055
- (message.mentionedAgentSessions ?? []).length === 0 &&
1056
- peopleMentions.userIds.length + peopleMentions.names.length > 0;
1123
+ const namedPeople = [...peopleMentions.userIds, ...peopleMentions.names];
1057
1124
  // Thread correlation.
1058
1125
  const slackThreadTs = message.threadTs || message.ts;
1059
1126
  let threadId;
@@ -1061,6 +1128,28 @@ export class SlackTeamChannelService {
1061
1128
  const root = this.deps.chat.findSlackThreadRoot(mapping.chatChannelId, message.threadTs);
1062
1129
  threadId = root?.id;
1063
1130
  }
1131
+ // A message with no @ of its own may still be one person talking to
1132
+ // another: the owner answered a colleague in two messages 35 s apart,
1133
+ // only the first carried the @, and the second woke Aria (2026-10-02,
1134
+ // #personal-assistant-team). It inherits the people the conversation was
1135
+ // addressed to (specs/slack-room-presence.md "Follow-ups of a
1136
+ // person-to-person exchange").
1137
+ const hasOwnAddressee = !!message.authorAgentSession ||
1138
+ !!handoffTo ||
1139
+ resolved.mentions.length > 0 ||
1140
+ resolved.unknown.length > 0 ||
1141
+ agentsMentionedViaCloud.length > 0 ||
1142
+ namedPeople.length > 0 ||
1143
+ SLACK_BROADCAST_MENTION_RE.test(message.text ?? '');
1144
+ const exchange = hasOwnAddressee
1145
+ ? { inherit: null, recent: [] }
1146
+ : this.personExchangeOf(message, mapping.chatChannelId, threadId);
1147
+ const inherited = exchange.inherit;
1148
+ const addresseePeople = inherited ? inherited.people : namedPeople;
1149
+ const addressedPeopleOnly = !addressedElsewhereOnly &&
1150
+ resolved.mentions.length === 0 &&
1151
+ agentsMentionedViaCloud.length === 0 &&
1152
+ addresseePeople.length > 0;
1064
1153
  // A colleague agent on another machine is recorded under its display
1065
1154
  // name, as a user turn: the dispatcher delivers user turns and skips
1066
1155
  // agent turns (self-loop guard), and to this team it IS an outside voice.
@@ -1091,13 +1180,12 @@ export class SlackTeamChannelService {
1091
1180
  slackTs: message.ts,
1092
1181
  slackUserId: message.userId,
1093
1182
  ...(message.teamId ? { slackTeamId: message.teamId } : {}),
1094
- ...(peopleMentions.userIds.length + peopleMentions.names.length > 0
1095
- ? {
1096
- [SLACK_TEAM_CHANNEL_CONSTANTS.PEOPLE_MENTIONS_METADATA_KEY]: [
1097
- ...peopleMentions.userIds,
1098
- ...peopleMentions.names,
1099
- ],
1100
- }
1183
+ ...(addresseePeople.length > 0
1184
+ ? { [SLACK_TEAM_CHANNEL_CONSTANTS.PEOPLE_MENTIONS_METADATA_KEY]: addresseePeople }
1185
+ : {}),
1186
+ ...(inherited ? { [SLACK_TEAM_CHANNEL_CONSTANTS.ADDRESSEE_INHERITED_METADATA_KEY]: inherited.reason } : {}),
1187
+ ...(agentsMentionedViaCloud.length > 0
1188
+ ? { [SLACK_TEAM_CHANNEL_CONSTANTS.AGENT_MENTIONS_METADATA_KEY]: agentsMentionedViaCloud }
1101
1189
  : {}),
1102
1190
  // Marks the row as agent-authored: the commitment-approval gate must
1103
1191
  // never read a colleague agent's post as owner approval (#730).
@@ -1152,6 +1240,10 @@ export class SlackTeamChannelService {
1152
1240
  ...(remoteAgent ? { excludeSessions: [remoteAgent] } : {}),
1153
1241
  ...(presence ? { room: presence.state, ...(presence.line ? { roomPresence: presence.line } : {}) } : {}),
1154
1242
  };
1243
+ if (declinedOnly) {
1244
+ // Every agent it addressed is dedicated to someone else and declined.
1245
+ return { mapping, message: persisted, mentions: [], dispatch: null };
1246
+ }
1155
1247
  if (addressedElsewhereOnly) {
1156
1248
  // Kept for context (the next question in the thread may be ours), but
1157
1249
  // no eyes, no placeholder, and nobody here is told.
@@ -1165,13 +1257,24 @@ export class SlackTeamChannelService {
1165
1257
  if (addressedPeopleOnly) {
1166
1258
  // Context for the agents' next turn in this thread, nothing more. No
1167
1259
  // suggestion hint either: the names were people, not typos.
1168
- this.logger.info('Slack team message addressed to people, not agents — recorded, not dispatched', {
1169
- teamId: mapping.teamId,
1170
- slackChannel: `#${mapping.slackChannelName}`,
1171
- mentionedUsers: peopleMentions.userIds,
1172
- mentionedNames: peopleMentions.names,
1173
- threaded: !!threadId,
1174
- });
1260
+ if (inherited) {
1261
+ this.logger.info('Slack team message continues a person-to-person exchange — recorded, not dispatched', {
1262
+ teamId: mapping.teamId,
1263
+ slackChannel: `#${mapping.slackChannelName}`,
1264
+ addressedTo: inherited.people,
1265
+ reason: inherited.reason,
1266
+ threaded: !!threadId,
1267
+ });
1268
+ }
1269
+ else {
1270
+ this.logger.info('Slack team message addressed to people, not agents — recorded, not dispatched', {
1271
+ teamId: mapping.teamId,
1272
+ slackChannel: `#${mapping.slackChannelName}`,
1273
+ mentionedUsers: peopleMentions.userIds,
1274
+ mentionedNames: peopleMentions.names,
1275
+ threaded: !!threadId,
1276
+ });
1277
+ }
1175
1278
  return { mapping, message: persisted, mentions: [], dispatch: null };
1176
1279
  }
1177
1280
  const planned = dispatcherForPlan?.planHuddleTargets
@@ -1265,9 +1368,17 @@ export class SlackTeamChannelService {
1265
1368
  // The thread as Slack has it — posts by agents on other machines
1266
1369
  // included — rendered per recipient so its own lines are marked.
1267
1370
  const slackContext = await message.threadContext;
1371
+ // Prompt backstop: who the message (or the exchange it may continue)
1372
+ // was meant for, when people are in the picture.
1373
+ const peopleAddressing = namedPeople.length > 0
1374
+ ? { kind: 'named-in-message', people: await this.personLabels(namedPeople, message.channelId) }
1375
+ : exchange.recent.length > 0
1376
+ ? { kind: 'recent-exchange', people: await this.personLabels(exchange.recent, message.channelId) }
1377
+ : null;
1268
1378
  dispatch = await dispatcher.dispatchMessage(channel, markAndLinkTicket(persisted, ticket), {
1269
1379
  ...dispatchOptions,
1270
1380
  ...(roster ? { channelRoster: roster } : {}),
1381
+ ...(peopleAddressing ? { peopleAddressing } : {}),
1271
1382
  ...(slackContext
1272
1383
  ? {
1273
1384
  slackContextFor: (session) => renderSlackThreadContext(slackContext, {
@@ -2120,6 +2231,135 @@ export class SlackTeamChannelService {
2120
2231
  }
2121
2232
  return { userIds: pending, names };
2122
2233
  }
2234
+ /**
2235
+ * Whether a message with no addressee of its own continues a
2236
+ * person-to-person exchange (specs/slack-room-presence.md "Follow-ups of a
2237
+ * person-to-person exchange"). Reads the huddle rows already recorded, so it
2238
+ * holds across restarts.
2239
+ *
2240
+ * - In a thread: walking back from the newest row, agents' posts and human
2241
+ * rows with no addressee (or an inherited one) are skipped; the first
2242
+ * human row with an addressee decides. People only → inherit them, while
2243
+ * that @ is within the person-exchange window (or is the same sender's
2244
+ * own message within the follow-up window); older → `recent` only. An agent (here or on
2245
+ * another machine) or `@here` → no inheritance; the most recent
2246
+ * people-only row older than that is returned as `recent`, for the
2247
+ * prompt backstop.
2248
+ * - At the top level: the channel's previous top-level row, when it came
2249
+ * within the follow-up window and was addressed to people only — inherited
2250
+ * when the same person wrote it, `recent` otherwise.
2251
+ *
2252
+ * @param message - The inbound message (no addressee of its own)
2253
+ * @param chatChannelId - Its huddle
2254
+ * @param threadId - Its huddle thread root, when the Slack thread is known here
2255
+ * @returns Inherited people (with why), and people of a recent exchange
2256
+ */
2257
+ personExchangeOf(message, chatChannelId, threadId) {
2258
+ const none = { inherit: null, recent: [] };
2259
+ const peopleOf = (m) => {
2260
+ const v = m.metadata?.[SLACK_TEAM_CHANNEL_CONSTANTS.PEOPLE_MENTIONS_METADATA_KEY];
2261
+ return Array.isArray(v) ? v.filter((x) => typeof x === 'string' && x.length > 0) : [];
2262
+ };
2263
+ const isHuman = (m) => m.senderType === 'user' && !m.metadata?.[OWNER_EVIDENCE_METADATA.REMOTE_AGENT_SESSION];
2264
+ const addressesAgent = (m) => {
2265
+ const elsewhere = m.metadata?.[SLACK_TEAM_CHANNEL_CONSTANTS.AGENT_MENTIONS_METADATA_KEY];
2266
+ return ((m.mentions?.length ?? 0) > 0 ||
2267
+ (Array.isArray(elsewhere) && elsewhere.length > 0) ||
2268
+ SLACK_BROADCAST_MENTION_RE.test(m.content ?? ''));
2269
+ };
2270
+ const seconds = (ts) => (typeof ts === 'string' ? Number.parseFloat(ts) : Number.NaN);
2271
+ const within = (m, windowMs) => {
2272
+ const gapMs = (seconds(message.ts) - seconds(m.metadata?.slackTs)) * 1000;
2273
+ return Number.isFinite(gapMs) && gapMs >= 0 && gapMs <= windowMs;
2274
+ };
2275
+ const withinWindow = (m) => within(m, this.windowMs(SLACK_TEAM_CHANNEL_CONSTANTS.PEOPLE_FOLLOWUP_WINDOW_ENV, SLACK_TEAM_CHANNEL_CONSTANTS.PEOPLE_FOLLOWUP_WINDOW_MS));
2276
+ const withinExchange = (m) => within(m, this.windowMs(SLACK_TEAM_CHANNEL_CONSTANTS.PERSON_EXCHANGE_WINDOW_ENV, SLACK_TEAM_CHANNEL_CONSTANTS.PERSON_EXCHANGE_WINDOW_MS));
2277
+ const sameSender = (m) => !!message.userId && m.metadata?.slackUserId === message.userId;
2278
+ if (message.threadTs) {
2279
+ if (!threadId || !this.deps.chat.listThreadForBridge)
2280
+ return none;
2281
+ const rows = this.deps.chat.listThreadForBridge(chatChannelId, threadId);
2282
+ let agentAddressed = false;
2283
+ for (let i = rows.length - 1; i >= 0; i--) {
2284
+ const row = rows[i];
2285
+ if (!isHuman(row) || row.metadata?.slackTs === message.ts)
2286
+ continue;
2287
+ // An inherited addressee is not an @: the exchange is timed from
2288
+ // the last explicit human-to-human @.
2289
+ if (row.metadata?.[SLACK_TEAM_CHANNEL_CONSTANTS.ADDRESSEE_INHERITED_METADATA_KEY])
2290
+ continue;
2291
+ const people = peopleOf(row);
2292
+ if (addressesAgent(row)) {
2293
+ agentAddressed = true;
2294
+ continue;
2295
+ }
2296
+ if (people.length === 0)
2297
+ continue;
2298
+ if (agentAddressed)
2299
+ return { inherit: null, recent: people };
2300
+ if (sameSender(row) && withinWindow(row))
2301
+ return { inherit: { people, reason: 'same-sender-followup' }, recent: [] };
2302
+ // An exchange that went quiet is over: the normal rules apply again.
2303
+ if (!withinExchange(row))
2304
+ return { inherit: null, recent: people };
2305
+ return { inherit: { people, reason: 'person-exchange' }, recent: [] };
2306
+ }
2307
+ return none;
2308
+ }
2309
+ const previous = this.deps.chat.findLatestSlackRoot(chatChannelId);
2310
+ if (!previous || !isHuman(previous) || addressesAgent(previous) || !withinWindow(previous))
2311
+ return none;
2312
+ const people = peopleOf(previous);
2313
+ if (people.length === 0)
2314
+ return none;
2315
+ return sameSender(previous)
2316
+ ? { inherit: { people, reason: 'same-sender-followup' }, recent: [] }
2317
+ : { inherit: null, recent: people };
2318
+ }
2319
+ /**
2320
+ * A time window, from its env override when that is a non-negative number,
2321
+ * else the default.
2322
+ *
2323
+ * @param envVar - Env var holding milliseconds
2324
+ * @param fallbackMs - Default
2325
+ * @returns Milliseconds
2326
+ */
2327
+ windowMs(envVar, fallbackMs) {
2328
+ const raw = process.env[envVar];
2329
+ const parsed = raw !== undefined && raw.trim() !== '' ? Number(raw) : Number.NaN;
2330
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : fallbackMs;
2331
+ }
2332
+ /**
2333
+ * How to name people in an agent's prompt: `Name (<@U…>)` when a name is
2334
+ * known (someone who spoke in a mapped channel, the owner, or a channel
2335
+ * member the cached directory lists), else the bare mention. Plain typed
2336
+ * names are kept as `@Name`.
2337
+ *
2338
+ * @param people - Slack user ids and/or typed names
2339
+ * @param slackChannelId - Channel, for the directory lookup
2340
+ * @returns One label per person
2341
+ */
2342
+ async personLabels(people, slackChannelId) {
2343
+ const names = new Map();
2344
+ if (people.some((p) => /^[UW][A-Z0-9]+$/.test(p))) {
2345
+ const directory = await getSlackDirectoryService()?.list(slackChannelId).catch(() => null);
2346
+ for (const e of directory ?? []) {
2347
+ const id = /^<@([UW][A-Z0-9]+)>$/.exec(e.mention ?? '')?.[1];
2348
+ if (id && e.kind === 'human' && e.name && !names.has(id))
2349
+ names.set(id, e.name);
2350
+ }
2351
+ }
2352
+ // Names people were seen under (lower-cased), for anyone the directory missed.
2353
+ for (const [name, id] of this.humanNames)
2354
+ if (!names.has(id))
2355
+ names.set(id, name);
2356
+ return people.map((p) => {
2357
+ if (!/^[UW][A-Z0-9]+$/.test(p))
2358
+ return `@${p}`;
2359
+ const name = names.get(p);
2360
+ return name ? `${name} (<@${p}>)` : `<@${p}>`;
2361
+ });
2362
+ }
2123
2363
  /**
2124
2364
  * Remember a person's names so an agent writing `@Their Name` reaches them.
2125
2365
  *