crewly 1.20.192 → 1.20.194

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 (525) 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/experiment-card/SKILL.md +96 -0
  28. package/config/skills/agent/core/experiment-card/execute.sh +147 -0
  29. package/config/skills/agent/core/experiment-card/execute.test.sh +91 -0
  30. package/config/skills/agent/core/handoff-task/execute.sh +1 -1
  31. package/config/skills/agent/core/report-status/SKILL.md +27 -4
  32. package/config/skills/agent/core/report-status/execute.sh +104 -4
  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/registry.json +6 -5
  48. package/config/skills/team-leader/delegate-task/execute.sh +1 -1
  49. package/config/skills/team-leader/verify-output/SKILL.md +18 -1
  50. package/config/skills/team-leader/verify-output/execute.sh +28 -0
  51. package/config/skills/team-leader/verify-output/execute.test.sh +27 -0
  52. package/dist/backend/backend/src/constants.d.ts +192 -2
  53. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  54. package/dist/backend/backend/src/constants.js +196 -1
  55. package/dist/backend/backend/src/constants.js.map +1 -1
  56. package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts +6 -0
  57. package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts.map +1 -1
  58. package/dist/backend/backend/src/controllers/canva/canva.controller.js +13 -2
  59. package/dist/backend/backend/src/controllers/canva/canva.controller.js.map +1 -1
  60. package/dist/backend/backend/src/controllers/canva/canva.routes.d.ts.map +1 -1
  61. package/dist/backend/backend/src/controllers/canva/canva.routes.js +3 -1
  62. package/dist/backend/backend/src/controllers/canva/canva.routes.js.map +1 -1
  63. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
  64. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +4 -1
  65. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
  66. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts +4 -0
  67. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts.map +1 -1
  68. package/dist/backend/backend/src/controllers/connector/connector.controller.js +32 -3
  69. package/dist/backend/backend/src/controllers/connector/connector.controller.js.map +1 -1
  70. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts +41 -0
  71. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts.map +1 -0
  72. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js +75 -0
  73. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js.map +1 -0
  74. package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts +27 -0
  75. package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts.map +1 -0
  76. package/dist/backend/backend/src/controllers/experiments/experiments.routes.js +96 -0
  77. package/dist/backend/backend/src/controllers/experiments/experiments.routes.js.map +1 -0
  78. package/dist/backend/backend/src/controllers/google/google.controller.d.ts +6 -0
  79. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  80. package/dist/backend/backend/src/controllers/google/google.controller.js +19 -0
  81. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  82. package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
  83. package/dist/backend/backend/src/controllers/google/google.routes.js +3 -1
  84. package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
  85. package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts.map +1 -1
  86. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +22 -3
  87. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js.map +1 -1
  88. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +19 -2
  89. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -1
  90. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +37 -4
  91. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -1
  92. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -1
  93. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +3 -1
  94. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -1
  95. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +9 -0
  96. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  97. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +26 -0
  98. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  99. package/dist/backend/backend/src/controllers/people/people.routes.d.ts +25 -0
  100. package/dist/backend/backend/src/controllers/people/people.routes.d.ts.map +1 -0
  101. package/dist/backend/backend/src/controllers/people/people.routes.js +90 -0
  102. package/dist/backend/backend/src/controllers/people/people.routes.js.map +1 -0
  103. package/dist/backend/backend/src/controllers/request-types.d.ts +2 -0
  104. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  105. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts +22 -1
  106. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
  107. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +143 -3
  108. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
  109. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +25 -3
  110. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  111. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +125 -19
  112. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  113. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  114. package/dist/backend/backend/src/controllers/team/team.controller.js +14 -0
  115. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  116. package/dist/backend/backend/src/index.d.ts.map +1 -1
  117. package/dist/backend/backend/src/index.js +82 -3
  118. package/dist/backend/backend/src/index.js.map +1 -1
  119. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  120. package/dist/backend/backend/src/routes/api.routes.js +6 -0
  121. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  122. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +13 -0
  123. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/agent/agent-registration.service.js +28 -3
  125. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  126. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  127. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +3 -0
  128. package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  129. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
  130. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  131. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +14 -3
  132. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  133. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
  134. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  135. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
  136. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  137. package/dist/backend/backend/src/services/agent/idle-detection.service.js +1 -1
  138. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  139. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
  140. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  141. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
  142. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  143. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
  144. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  145. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
  146. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  147. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
  148. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  149. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +49 -5
  150. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  151. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  152. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
  153. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  154. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
  155. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
  156. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  157. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  158. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  159. package/dist/backend/backend/src/services/canva/canva-token.service.d.ts +17 -4
  160. package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
  161. package/dist/backend/backend/src/services/canva/canva-token.service.js +54 -17
  162. package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
  163. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +35 -0
  164. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  165. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +77 -1
  166. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  167. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +17 -2
  168. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -1
  169. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +30 -6
  170. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -1
  171. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +38 -2
  172. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -1
  173. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +63 -1
  174. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -1
  175. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
  176. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  177. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +204 -56
  178. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  179. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
  180. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  181. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  182. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  183. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +3 -0
  184. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  185. package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts +88 -0
  186. package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts.map +1 -0
  187. package/dist/backend/backend/src/services/experiments/experiment-verdict.js +226 -0
  188. package/dist/backend/backend/src/services/experiments/experiment-verdict.js.map +1 -0
  189. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +301 -0
  190. package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -0
  191. package/dist/backend/backend/src/services/experiments/experiment.service.js +754 -0
  192. package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -0
  193. package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts +73 -0
  194. package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -0
  195. package/dist/backend/backend/src/services/experiments/experiment.wiring.js +142 -0
  196. package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -0
  197. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts +60 -0
  198. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts.map +1 -0
  199. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js +113 -0
  200. package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js.map +1 -0
  201. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts +25 -2
  202. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
  203. package/dist/backend/backend/src/services/google/google-workspace-token.service.js +53 -7
  204. package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
  205. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts +207 -0
  206. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
  207. package/dist/backend/backend/src/services/harness/claude-accounts.js +306 -0
  208. package/dist/backend/backend/src/services/harness/claude-accounts.js.map +1 -0
  209. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
  210. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  211. package/dist/backend/backend/src/services/harness/harness-credentials.store.js +48 -0
  212. package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  213. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
  214. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
  215. package/dist/backend/backend/src/services/harness/harness-relogin.service.js +156 -19
  216. package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -1
  217. package/dist/backend/backend/src/services/harness/harness.types.d.ts +2 -0
  218. package/dist/backend/backend/src/services/harness/harness.types.d.ts.map +1 -1
  219. package/dist/backend/backend/src/services/harness/harness.types.js.map +1 -1
  220. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +19 -4
  221. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  222. package/dist/backend/backend/src/services/harness/login-broker.service.js +46 -7
  223. package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -1
  224. package/dist/backend/backend/src/services/harness/owner-login-request.d.ts +18 -2
  225. package/dist/backend/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
  226. package/dist/backend/backend/src/services/harness/owner-login-request.js +31 -7
  227. package/dist/backend/backend/src/services/harness/owner-login-request.js.map +1 -1
  228. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
  229. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  230. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
  231. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  232. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +19 -0
  233. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  234. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +46 -0
  235. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  236. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
  237. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  238. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
  239. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  240. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +87 -5
  241. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -1
  242. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +151 -12
  243. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -1
  244. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +17 -4
  245. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
  246. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +50 -17
  247. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
  248. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts +53 -7
  249. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -1
  250. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js +77 -14
  251. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -1
  252. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +53 -1
  253. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map +1 -1
  254. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js +130 -29
  255. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
  256. package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts.map +1 -1
  257. package/dist/backend/backend/src/services/orc/orc-status-router.service.js +3 -2
  258. package/dist/backend/backend/src/services/orc/orc-status-router.service.js.map +1 -1
  259. package/dist/backend/backend/src/services/people/acting-for.service.d.ts +188 -0
  260. package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -0
  261. package/dist/backend/backend/src/services/people/acting-for.service.js +299 -0
  262. package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -0
  263. package/dist/backend/backend/src/services/people/dedicated-agent.d.ts +89 -0
  264. package/dist/backend/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
  265. package/dist/backend/backend/src/services/people/dedicated-agent.js +113 -0
  266. package/dist/backend/backend/src/services/people/dedicated-agent.js.map +1 -0
  267. package/dist/backend/backend/src/services/people/grant-sharing.d.ts +80 -0
  268. package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -0
  269. package/dist/backend/backend/src/services/people/grant-sharing.js +143 -0
  270. package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -0
  271. package/dist/backend/backend/src/services/people/people-directory.service.d.ts +239 -0
  272. package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -0
  273. package/dist/backend/backend/src/services/people/people-directory.service.js +454 -0
  274. package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -0
  275. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  276. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
  277. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
  278. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
  279. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
  280. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts +8 -1
  281. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts.map +1 -1
  282. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js +16 -2
  283. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js.map +1 -1
  284. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +60 -1
  285. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
  286. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +140 -8
  287. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
  288. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js +1 -1
  289. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js.map +1 -1
  290. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
  291. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
  293. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
  294. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
  295. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +12 -2
  296. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
  297. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts +7 -1
  298. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts.map +1 -1
  299. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js +18 -3
  300. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js.map +1 -1
  301. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  302. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +3 -0
  303. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  304. package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts +33 -0
  305. package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts.map +1 -0
  306. package/dist/backend/backend/src/services/slack/slack-bot-ids.js +56 -0
  307. package/dist/backend/backend/src/services/slack/slack-bot-ids.js.map +1 -0
  308. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +22 -0
  309. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  310. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +70 -0
  311. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  312. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +9 -0
  313. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  314. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +46 -0
  315. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  316. package/dist/backend/backend/src/services/slack/slack.service.d.ts +6 -0
  317. package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
  318. package/dist/backend/backend/src/services/slack/slack.service.js +8 -0
  319. package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
  320. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts +105 -0
  321. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts.map +1 -0
  322. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js +238 -0
  323. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js.map +1 -0
  324. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  325. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +4 -0
  326. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  327. package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts +39 -12
  328. package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts.map +1 -1
  329. package/dist/backend/backend/src/services/usage/usage-stats.service.js +61 -20
  330. package/dist/backend/backend/src/services/usage/usage-stats.service.js.map +1 -1
  331. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +2 -0
  332. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  333. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +9 -0
  334. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  335. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +10 -0
  336. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  337. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +45 -2
  338. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  339. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  340. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  341. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  342. package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
  343. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +3 -0
  344. package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
  345. package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
  346. package/dist/backend/backend/src/services/workflow/scheduler.service.js +3 -0
  347. package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
  348. package/dist/backend/backend/src/types/experiment.types.d.ts +153 -0
  349. package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -0
  350. package/dist/backend/backend/src/types/experiment.types.js +32 -0
  351. package/dist/backend/backend/src/types/experiment.types.js.map +1 -0
  352. package/dist/backend/backend/src/types/index.d.ts +12 -1
  353. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  354. package/dist/backend/backend/src/types/index.js.map +1 -1
  355. package/dist/backend/backend/src/types/messaging.types.d.ts +11 -0
  356. package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
  357. package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
  358. package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts +77 -0
  359. package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts.map +1 -0
  360. package/dist/backend/backend/src/types/v2/completion-evidence.types.js +119 -0
  361. package/dist/backend/backend/src/types/v2/completion-evidence.types.js.map +1 -0
  362. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +13 -0
  363. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  364. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  365. package/dist/backend/build-info.json +2 -2
  366. package/dist/backend/config/constants.d.ts +11 -0
  367. package/dist/backend/config/constants.d.ts.map +1 -1
  368. package/dist/backend/config/constants.js +11 -0
  369. package/dist/backend/config/constants.js.map +1 -1
  370. package/dist/cli/backend/src/constants.d.ts +192 -2
  371. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  372. package/dist/cli/backend/src/constants.js +196 -1
  373. package/dist/cli/backend/src/constants.js.map +1 -1
  374. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +13 -0
  375. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  376. package/dist/cli/backend/src/services/agent/agent-registration.service.js +28 -3
  377. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  378. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
  379. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +3 -0
  380. package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
  381. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
  382. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  383. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +14 -3
  384. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  385. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
  386. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  387. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
  388. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  389. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
  390. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  391. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
  392. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  393. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
  394. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  395. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
  396. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  397. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
  398. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  399. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +49 -5
  400. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  401. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  402. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
  403. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  404. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
  405. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
  406. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  407. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
  408. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  409. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +35 -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 +77 -1
  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-sync.service.d.ts +74 -4
  414. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  415. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +204 -56
  416. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  417. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
  418. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  419. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  420. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts +207 -0
  421. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
  422. package/dist/cli/backend/src/services/harness/claude-accounts.js +306 -0
  423. package/dist/cli/backend/src/services/harness/claude-accounts.js.map +1 -0
  424. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
  425. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  426. package/dist/cli/backend/src/services/harness/harness-credentials.store.js +48 -0
  427. package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  428. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
  429. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
  430. package/dist/cli/backend/src/services/harness/harness-relogin.service.js +156 -19
  431. package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -1
  432. package/dist/cli/backend/src/services/harness/harness.types.d.ts +2 -0
  433. package/dist/cli/backend/src/services/harness/harness.types.d.ts.map +1 -1
  434. package/dist/cli/backend/src/services/harness/harness.types.js.map +1 -1
  435. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +19 -4
  436. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  437. package/dist/cli/backend/src/services/harness/login-broker.service.js +46 -7
  438. package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -1
  439. package/dist/cli/backend/src/services/harness/owner-login-request.d.ts +18 -2
  440. package/dist/cli/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
  441. package/dist/cli/backend/src/services/harness/owner-login-request.js +31 -7
  442. package/dist/cli/backend/src/services/harness/owner-login-request.js.map +1 -1
  443. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
  444. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  445. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
  446. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  447. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +19 -0
  448. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  449. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +46 -0
  450. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  451. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
  452. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  453. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
  454. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  455. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts +197 -0
  456. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -0
  457. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js +455 -0
  458. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -0
  459. package/dist/cli/backend/src/services/people/acting-for.service.d.ts +188 -0
  460. package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -0
  461. package/dist/cli/backend/src/services/people/acting-for.service.js +299 -0
  462. package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -0
  463. package/dist/cli/backend/src/services/people/dedicated-agent.d.ts +89 -0
  464. package/dist/cli/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
  465. package/dist/cli/backend/src/services/people/dedicated-agent.js +113 -0
  466. package/dist/cli/backend/src/services/people/dedicated-agent.js.map +1 -0
  467. package/dist/cli/backend/src/services/people/people-directory.service.d.ts +239 -0
  468. package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -0
  469. package/dist/cli/backend/src/services/people/people-directory.service.js +454 -0
  470. package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -0
  471. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
  472. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
  473. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
  474. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
  475. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
  476. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
  477. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
  478. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
  479. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  480. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +3 -0
  481. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  482. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +22 -0
  483. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  484. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +70 -0
  485. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  486. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +9 -0
  487. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  488. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +46 -0
  489. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  490. package/dist/cli/backend/src/services/slack/slack.service.d.ts +6 -0
  491. package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
  492. package/dist/cli/backend/src/services/slack/slack.service.js +8 -0
  493. package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
  494. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  495. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +4 -0
  496. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  497. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  498. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  499. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  500. package/dist/cli/backend/src/types/index.d.ts +12 -1
  501. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  502. package/dist/cli/backend/src/types/index.js.map +1 -1
  503. package/dist/cli/backend/src/types/messaging.types.d.ts +11 -0
  504. package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
  505. package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
  506. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +13 -0
  507. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  508. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  509. package/dist/cli/cli/src/utils/marketplace.d.ts +21 -0
  510. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  511. package/dist/cli/cli/src/utils/marketplace.js +35 -1
  512. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  513. package/dist/cli/config/constants.d.ts +11 -0
  514. package/dist/cli/config/constants.d.ts.map +1 -1
  515. package/dist/cli/config/constants.js +11 -0
  516. package/dist/cli/config/constants.js.map +1 -1
  517. package/dist/cli/config/skills/marketplace-registry.d.ts +4 -4
  518. package/dist/cli/config/skills/marketplace-registry.js +4 -4
  519. package/frontend/dist/assets/{index-fc715ec3.css → index-5e967795.css} +1 -1
  520. package/frontend/dist/assets/{index-5b7af029.js → index-800118ca.js} +296 -296
  521. package/frontend/dist/index.html +2 -2
  522. package/package.json +1 -1
  523. package/packages/crewly-agent/src/runtime/tool-registry.test.ts +45 -0
  524. package/packages/crewly-agent/src/runtime/tool-registry.ts +40 -5
  525. package/packages/crewly-agent/src/test/isolated-home.test.ts +24 -0
@@ -0,0 +1,455 @@
1
+ /**
2
+ * Claude Session Token Reader
3
+ *
4
+ * Reads per-turn token usage from Claude Code's session JSONL files.
5
+ * Claude Code stores conversations at:
6
+ * ~/.claude/projects/{path-slug}/{sessionId}.jsonl
7
+ * or, for a session that runs on another of the owner's Claude Code accounts
8
+ * (issue #942, `CLAUDE_CONFIG_DIR` set to the account's config dir):
9
+ * <account config dir>/projects/{path-slug}/{sessionId}.jsonl
10
+ *
11
+ * Each assistant message includes an API `usage` object with exact
12
+ * token counts (input_tokens, output_tokens, cache tokens).
13
+ *
14
+ * Used as the primary token source for claude-code agents because
15
+ * Claude Code's TUI status bar is not capturable from PTY scrollback.
16
+ *
17
+ * @module services/monitoring/claude-session-tokens
18
+ */
19
+ import { promises as fs, realpathSync } from 'fs';
20
+ import * as path from 'path';
21
+ import * as os from 'os';
22
+ import { LoggerService } from '../core/logger.service.js';
23
+ /**
24
+ * Cache-aware cost rates for Claude models (USD per token).
25
+ * Cache reads are ~10% of input price; cache writes are ~125% of input price.
26
+ */
27
+ const CLAUDE_COST_RATES = {
28
+ 'claude-opus-4-6': { input: 0.000015, output: 0.000075, cacheRead: 0.0000015, cacheWrite: 0.00001875 },
29
+ 'claude-opus-4-20250514': { input: 0.000015, output: 0.000075, cacheRead: 0.0000015, cacheWrite: 0.00001875 },
30
+ 'claude-sonnet-4-6': { input: 0.000003, output: 0.000015, cacheRead: 0.0000003, cacheWrite: 0.00000375 },
31
+ 'claude-sonnet-4-20250514': { input: 0.000003, output: 0.000015, cacheRead: 0.0000003, cacheWrite: 0.00000375 },
32
+ 'claude-haiku-4-20250506': { input: 0.00000025, output: 0.00000125, cacheRead: 0.000000025, cacheWrite: 0.0000003125 },
33
+ default: { input: 0.000003, output: 0.000015, cacheRead: 0.0000003, cacheWrite: 0.00000375 },
34
+ };
35
+ /**
36
+ * Calculates cost with proper cache-aware pricing for Claude models.
37
+ */
38
+ function calculateClaudeCost(inputTokens, outputTokens, cacheReadTokens, cacheCreateTokens, model) {
39
+ const rates = CLAUDE_COST_RATES[model] || CLAUDE_COST_RATES.default;
40
+ return (inputTokens * rates.input +
41
+ outputTokens * rates.output +
42
+ cacheReadTokens * rates.cacheRead +
43
+ cacheCreateTokens * rates.cacheWrite);
44
+ }
45
+ /** Claude Code's per-user state directory, under the home directory. */
46
+ const CLAUDE_DIR_NAME = '.claude';
47
+ /** Subdirectory of {@link CLAUDE_DIR_NAME} holding one directory per project slug. */
48
+ const CLAUDE_PROJECTS_DIR_NAME = 'projects';
49
+ /** File extension of Claude Code conversation transcripts. */
50
+ const JSONL_EXTENSION = '.jsonl';
51
+ const logger = LoggerService.getInstance().createComponentLogger('ClaudeSessionTokens');
52
+ /**
53
+ * Encodes an absolute path into the slug format used by Claude Code
54
+ * for its projects directory. Replaces `/` with `-`.
55
+ *
56
+ * @param projectPath - Absolute path (e.g. /Users/alice/.crewly)
57
+ * @returns Encoded slug (e.g. -Users-alice--crewly)
58
+ */
59
+ export function encodeProjectSlug(projectPath) {
60
+ // Claude Code replaces both / and . with - in its project directory slug
61
+ return projectPath.replace(/[/.]/g, '-');
62
+ }
63
+ /**
64
+ * Builds the ordered, de-duplicated list of Claude Code project slugs that may
65
+ * hold transcripts for a working directory.
66
+ *
67
+ * Claude Code names its project directory after the *resolved* cwd (it sees
68
+ * `process.cwd()`, which the OS has already run through any symlinks). On
69
+ * macOS `/tmp` and `/var` are symlinks into `/private`, so an agent launched
70
+ * in `/tmp/proj` writes to `-private-tmp-proj`, not `-tmp-proj` (#938).
71
+ *
72
+ * The realpath slug comes first because that is where Claude Code writes. The
73
+ * raw slug is kept as a fallback for a cwd that cannot be resolved (deleted,
74
+ * permission denied) and for transcripts written before a directory was moved
75
+ * behind a symlink. Resolution failures never throw.
76
+ *
77
+ * @param projectPath - The agent's working directory, as Crewly recorded it
78
+ * @returns Slugs to try, most likely first; never empty
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * await resolveProjectSlugCandidates('/tmp/proj');
83
+ * // macOS: ['-private-tmp-proj', '-tmp-proj']; Linux: ['-tmp-proj']
84
+ * ```
85
+ */
86
+ export async function resolveProjectSlugCandidates(projectPath) {
87
+ const rawSlug = encodeProjectSlug(projectPath);
88
+ let resolvedSlug = null;
89
+ try {
90
+ resolvedSlug = encodeProjectSlug(await fs.realpath(projectPath));
91
+ }
92
+ catch {
93
+ // Nonexistent or unreadable cwd — the raw slug is the only guess left.
94
+ }
95
+ return resolvedSlug && resolvedSlug !== rawSlug ? [resolvedSlug, rawSlug] : [rawSlug];
96
+ }
97
+ /**
98
+ * Synchronous {@link resolveProjectSlugCandidates}, for callers that cannot
99
+ * await (launch-time resume checks).
100
+ *
101
+ * The raw slug is taken from the absolute (`path.resolve`d) cwd.
102
+ *
103
+ * @param projectPath - The agent's working directory
104
+ * @returns Slugs to try, realpath slug first; never empty
105
+ *
106
+ * @example
107
+ * ```typescript
108
+ * resolveProjectSlugCandidatesSync('/tmp/proj');
109
+ * // macOS: ['-private-tmp-proj', '-tmp-proj']
110
+ * ```
111
+ */
112
+ export function resolveProjectSlugCandidatesSync(projectPath) {
113
+ const absolute = path.resolve(projectPath);
114
+ const rawSlug = encodeProjectSlug(absolute);
115
+ let resolvedSlug = null;
116
+ try {
117
+ resolvedSlug = encodeProjectSlug(realpathSync(absolute));
118
+ }
119
+ catch {
120
+ // Nonexistent or unreadable cwd — the raw slug is the only guess left.
121
+ }
122
+ return resolvedSlug && resolvedSlug !== rawSlug ? [resolvedSlug, rawSlug] : [rawSlug];
123
+ }
124
+ /**
125
+ * The `projects/` directories Claude Code may have written a session's
126
+ * transcripts to, most likely first.
127
+ *
128
+ * A session on another of the owner's Claude Code accounts (issue #942) runs
129
+ * with `CLAUDE_CONFIG_DIR` set to that account's config dir, so its
130
+ * transcripts land in `<config dir>/projects/`. The default login's
131
+ * `~/.claude/projects/` is always included last: a session that switched
132
+ * accounts during the day has transcripts in both.
133
+ *
134
+ * @param homeDir - Home directory that contains `.claude/`
135
+ * @param configDirs - Claude config dirs of the session's accounts (current account first)
136
+ * @returns Absolute `projects/` directory paths, de-duplicated
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * claudeProjectsRoots('/Users/a', ['/Users/a/.crewly/claude-accounts/work']);
141
+ * // ['/Users/a/.crewly/claude-accounts/work/projects', '/Users/a/.claude/projects']
142
+ * ```
143
+ */
144
+ export function claudeProjectsRoots(homeDir, configDirs = []) {
145
+ const roots = [
146
+ ...configDirs.map((dir) => path.join(dir, CLAUDE_PROJECTS_DIR_NAME)),
147
+ path.join(homeDir, CLAUDE_DIR_NAME, CLAUDE_PROJECTS_DIR_NAME),
148
+ ];
149
+ return [...new Set(roots)];
150
+ }
151
+ /**
152
+ * Lists the Claude Code project directories that may hold transcripts for a
153
+ * working directory: every root of {@link claudeProjectsRoots}, each with the
154
+ * slugs of {@link resolveProjectSlugCandidates}. The directories are not
155
+ * required to exist.
156
+ *
157
+ * @param projectPath - The agent's working directory
158
+ * @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
159
+ * @param configDirs - Config dirs of the owner's other Claude Code accounts the session runs on (searched first)
160
+ * @returns Absolute candidate directory paths, most likely first
161
+ */
162
+ export async function resolveProjectDirCandidates(projectPath, homeDir = os.homedir(), configDirs = []) {
163
+ const slugs = await resolveProjectSlugCandidates(projectPath);
164
+ return claudeProjectsRoots(homeDir, configDirs).flatMap((root) => slugs.map((slug) => path.join(root, slug)));
165
+ }
166
+ /**
167
+ * Locates a known conversation's transcript across all candidate project
168
+ * directories, returning the first one that exists.
169
+ *
170
+ * @param projectPath - The agent's working directory
171
+ * @param sessionId - Claude Code conversation UUID
172
+ * @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
173
+ * @param configDirs - Config dirs of the owner's other Claude Code accounts (searched first)
174
+ * @returns Absolute path to the existing .jsonl file, or null if none exists
175
+ */
176
+ export async function findSessionJsonlPath(projectPath, sessionId, homeDir = os.homedir(), configDirs = []) {
177
+ for (const dir of await resolveProjectDirCandidates(projectPath, homeDir, configDirs)) {
178
+ const candidate = path.join(dir, `${sessionId}${JSONL_EXTENSION}`);
179
+ try {
180
+ await fs.access(candidate);
181
+ return candidate;
182
+ }
183
+ catch {
184
+ continue;
185
+ }
186
+ }
187
+ return null;
188
+ }
189
+ /**
190
+ * Lists every transcript file across all candidate project directories.
191
+ *
192
+ * Merges rather than stopping at the first existing directory: if both the
193
+ * resolved and the raw slug directories exist, the live conversation may be in
194
+ * either, and picking a directory by existence alone could lock onto a stale
195
+ * one. A file name seen in an earlier (more likely) directory shadows the same
196
+ * name in a later one, so a conversation is never listed twice.
197
+ *
198
+ * @param projectPath - The agent's working directory
199
+ * @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
200
+ * @param configDirs - Config dirs of the owner's other Claude Code accounts (searched first)
201
+ * @returns Absolute paths of all .jsonl files found, grouped by candidate directory order
202
+ */
203
+ export async function listProjectTranscripts(projectPath, homeDir = os.homedir(), configDirs = []) {
204
+ const seen = new Set();
205
+ const result = [];
206
+ for (const dir of await resolveProjectDirCandidates(projectPath, homeDir, configDirs)) {
207
+ let files;
208
+ try {
209
+ files = await fs.readdir(dir);
210
+ }
211
+ catch {
212
+ continue;
213
+ }
214
+ for (const file of files) {
215
+ if (!file.endsWith(JSONL_EXTENSION) || seen.has(file))
216
+ continue;
217
+ seen.add(file);
218
+ result.push(path.join(dir, file));
219
+ }
220
+ }
221
+ return result;
222
+ }
223
+ /**
224
+ * Finds the most recently modified transcript across all candidate project
225
+ * directories for a working directory.
226
+ *
227
+ * @param projectPath - The agent's working directory
228
+ * @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
229
+ * @param configDirs - Config dirs of the owner's other Claude Code accounts (searched too)
230
+ * @returns Absolute path of the newest .jsonl file, or null if there is none
231
+ */
232
+ export async function findLatestSessionFile(projectPath, homeDir = os.homedir(), configDirs = []) {
233
+ let latestFile = null;
234
+ let latestMtime = -1;
235
+ for (const file of await listProjectTranscripts(projectPath, homeDir, configDirs)) {
236
+ try {
237
+ const { mtimeMs } = await fs.stat(file);
238
+ if (mtimeMs > latestMtime) {
239
+ latestMtime = mtimeMs;
240
+ latestFile = file;
241
+ }
242
+ }
243
+ catch {
244
+ continue;
245
+ }
246
+ }
247
+ return latestFile;
248
+ }
249
+ /**
250
+ * Returns the path to a Claude Code session JSONL file under the *raw* cwd
251
+ * slug. Does not resolve symlinks — prefer {@link findSessionJsonlPath},
252
+ * which also checks the realpath slug Claude Code actually writes to.
253
+ *
254
+ * @param projectPath - The agent's working directory
255
+ * @param sessionId - Claude Code conversation UUID
256
+ * @returns Absolute path to the .jsonl file
257
+ */
258
+ export function getSessionJsonlPath(projectPath, sessionId) {
259
+ const slug = encodeProjectSlug(projectPath);
260
+ return path.join(os.homedir(), CLAUDE_DIR_NAME, CLAUDE_PROJECTS_DIR_NAME, slug, `${sessionId}${JSONL_EXTENSION}`);
261
+ }
262
+ /**
263
+ * Finds the most recently modified .jsonl session file in a Claude Code
264
+ * project directory. Used as a fallback when the session ID is not known
265
+ * (e.g. the orchestrator session, which may not have been persisted yet).
266
+ * Checks both the realpath and the raw cwd slug directories.
267
+ *
268
+ * @param projectPath - The agent's working directory
269
+ * @returns The session UUID, or null if no JSONL files found
270
+ */
271
+ export async function findLatestSessionId(projectPath) {
272
+ const latest = await findLatestSessionFile(projectPath);
273
+ return latest ? path.basename(latest, JSONL_EXTENSION) : null;
274
+ }
275
+ /**
276
+ * Reads token usage from a Claude Code session JSONL, summing all
277
+ * assistant turns whose timestamp is at or after `since`.
278
+ *
279
+ * Reads the file from the end backwards for efficiency — recent
280
+ * entries are at the tail.
281
+ *
282
+ * @param projectPath - The agent's working directory
283
+ * @param sessionId - Claude Code conversation UUID (if null, auto-detects latest)
284
+ * @param since - Only count turns at or after this time
285
+ * @param until - Only count turns before this time (defaults to now)
286
+ * @param configDirs - Config dirs of the owner's other Claude Code accounts the session runs on
287
+ * @returns Aggregated token summary, or null if the file doesn't exist
288
+ */
289
+ export async function getTokensSince(projectPath, sessionId, since, until, configDirs = []) {
290
+ // Auto-detect session if not provided
291
+ const filePath = sessionId
292
+ ? await findSessionJsonlPath(projectPath, sessionId, os.homedir(), configDirs)
293
+ : await findLatestSessionFile(projectPath, os.homedir(), configDirs);
294
+ if (!filePath) {
295
+ logger.debug('No Claude session JSONL found', { projectPath, sessionId });
296
+ return null;
297
+ }
298
+ let content;
299
+ try {
300
+ content = await fs.readFile(filePath, 'utf-8');
301
+ }
302
+ catch {
303
+ logger.debug('Session JSONL not found', { filePath });
304
+ return null;
305
+ }
306
+ const sinceMs = since.getTime();
307
+ const untilMs = until ? until.getTime() : Infinity;
308
+ const summary = {
309
+ inputTokens: 0,
310
+ outputTokens: 0,
311
+ cacheReadTokens: 0,
312
+ cacheCreateTokens: 0,
313
+ cost: 0,
314
+ model: '',
315
+ turnCount: 0,
316
+ };
317
+ // Parse lines from the end — most recent entries are last
318
+ const lines = content.split('\n');
319
+ for (let i = lines.length - 1; i >= 0; i--) {
320
+ const line = lines[i].trim();
321
+ if (!line)
322
+ continue;
323
+ let entry;
324
+ try {
325
+ entry = JSON.parse(line);
326
+ }
327
+ catch {
328
+ continue;
329
+ }
330
+ // Only assistant messages carry usage data
331
+ if (entry.type !== 'assistant')
332
+ continue;
333
+ const ts = entry.timestamp;
334
+ if (!ts)
335
+ continue;
336
+ // Timestamp can be ISO string or epoch ms
337
+ const entryMs = typeof ts === 'number' ? ts : new Date(ts).getTime();
338
+ if (isNaN(entryMs))
339
+ continue;
340
+ // Stop scanning once we're before the window — entries are chronological
341
+ if (entryMs < sinceMs)
342
+ break;
343
+ // Skip entries after the upper bound
344
+ if (entryMs > untilMs)
345
+ continue;
346
+ const msg = entry.message;
347
+ if (!msg)
348
+ continue;
349
+ const usage = msg.usage;
350
+ if (!usage)
351
+ continue;
352
+ const inputTokens = usage.input_tokens || 0;
353
+ const outputTokens = usage.output_tokens || 0;
354
+ const cacheRead = usage.cache_read_input_tokens || 0;
355
+ const cacheCreate = usage.cache_creation_input_tokens || 0;
356
+ const model = msg.model || '';
357
+ summary.inputTokens += inputTokens + cacheRead + cacheCreate;
358
+ summary.outputTokens += outputTokens;
359
+ summary.cacheReadTokens += cacheRead;
360
+ summary.cacheCreateTokens += cacheCreate;
361
+ summary.cost += calculateClaudeCost(inputTokens, outputTokens, cacheRead, cacheCreate, model);
362
+ summary.turnCount += 1;
363
+ if (!summary.model && model)
364
+ summary.model = model;
365
+ }
366
+ return summary;
367
+ }
368
+ /**
369
+ * Scans all Claude Code session JSONL files for a project and feeds
370
+ * aggregated per-session token data into TokenUsageService.
371
+ *
372
+ * This bridges the gap between Claude Code's file-based token tracking
373
+ * and the in-memory TokenUsageService that powers the Usage dashboard.
374
+ * Should be called once during server startup.
375
+ *
376
+ * Only processes sessions modified in the last `maxAgeDays` to avoid
377
+ * scanning hundreds of old session files.
378
+ *
379
+ * @param projectPath - The project's working directory
380
+ * @param maxAgeDays - Only process sessions modified within this many days (default: 7)
381
+ * @returns Number of sessions loaded
382
+ */
383
+ export async function syncSessionsToTokenUsageService(projectPath, maxAgeDays = 7) {
384
+ const { TokenUsageService } = await import('./token-usage.service.js');
385
+ const tokenSvc = TokenUsageService.getInstance();
386
+ const jsonlFiles = await listProjectTranscripts(projectPath);
387
+ if (jsonlFiles.length === 0) {
388
+ logger.debug('No Claude transcripts found for project', { projectPath });
389
+ return 0;
390
+ }
391
+ const cutoffMs = Date.now() - maxAgeDays * 24 * 60 * 60 * 1000;
392
+ let loaded = 0;
393
+ for (const filePath of jsonlFiles) {
394
+ try {
395
+ const stat = await fs.stat(filePath);
396
+ if (stat.mtimeMs < cutoffMs)
397
+ continue;
398
+ const content = await fs.readFile(filePath, 'utf-8');
399
+ const lines = content.split('\n');
400
+ let sessionInput = 0;
401
+ let sessionOutput = 0;
402
+ let sessionCacheRead = 0;
403
+ let sessionCacheCreate = 0;
404
+ let model = '';
405
+ let turnCount = 0;
406
+ for (const line of lines) {
407
+ if (!line.trim())
408
+ continue;
409
+ try {
410
+ const entry = JSON.parse(line);
411
+ if (entry.type !== 'assistant')
412
+ continue;
413
+ const msg = entry.message;
414
+ if (!msg?.usage)
415
+ continue;
416
+ const u = msg.usage;
417
+ sessionInput += u.input_tokens || 0;
418
+ sessionOutput += u.output_tokens || 0;
419
+ sessionCacheRead += u.cache_read_input_tokens || 0;
420
+ sessionCacheCreate += u.cache_creation_input_tokens || 0;
421
+ if (!model && msg.model)
422
+ model = msg.model;
423
+ turnCount++;
424
+ }
425
+ catch {
426
+ continue;
427
+ }
428
+ }
429
+ if (turnCount > 0) {
430
+ const sessionId = path.basename(filePath, JSONL_EXTENSION);
431
+ const resolvedModel = model || 'claude-sonnet-4-6';
432
+ // Calculate cost with proper cache-aware pricing
433
+ const cost = calculateClaudeCost(sessionInput, sessionOutput, sessionCacheRead, sessionCacheCreate, resolvedModel);
434
+ // Record only real input tokens (not cache) to avoid inflating counts.
435
+ // Pass pre-calculated cost via a dedicated method if available,
436
+ // otherwise record raw tokens and let the dashboard use our cost.
437
+ tokenSvc.recordUsage(sessionId, sessionId, sessionInput, sessionOutput, resolvedModel);
438
+ // Override the auto-calculated cost with our cache-aware cost
439
+ tokenSvc.overrideSessionCost(sessionId, cost);
440
+ loaded++;
441
+ }
442
+ }
443
+ catch {
444
+ continue;
445
+ }
446
+ }
447
+ logger.info('Synced Claude Code sessions to TokenUsageService', {
448
+ projectPath,
449
+ scannedFiles: jsonlFiles.length,
450
+ loadedSessions: loaded,
451
+ maxAgeDays,
452
+ });
453
+ return loaded;
454
+ }
455
+ //# sourceMappingURL=claude-session-tokens.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-session-tokens.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/claude-session-tokens.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Acting-for — the person each agent session is working for right now
3
+ * (issue #968).
4
+ *
5
+ * Every human message delivered to an agent records its sender as the person
6
+ * that agent acts for until the next human message: a Slack message records
7
+ * the sender's Slack user id (`owner` for any Slack id of the owner), a
8
+ * dashboard message records the owner. A message one agent sends another
9
+ * passes the sender's person on, so work delegated for Info stays Info's — and
10
+ * a message an agent wrote is never recorded as a person, even when it came
11
+ * through Slack under a bot's user id. Scheduled, autonomous and system turns
12
+ * act for the owner.
13
+ *
14
+ * The record is set only by the backend from what it delivered — never from
15
+ * anything an agent sends — and connector credential requests carry it to
16
+ * Cloud, which decides whether that person may use the grant.
17
+ *
18
+ * Kept in `<CREWLY_HOME>/acting-for.json` so a restart does not turn a
19
+ * member's in-flight turn into the owner's.
20
+ *
21
+ * specs/per-person-access.md
22
+ *
23
+ * @module services/people/acting-for.service
24
+ */
25
+ import { type PeopleDirectoryService, type PersonRole } from './people-directory.service.js';
26
+ /** Where an acting-for record came from. */
27
+ export type ActingForSource = 'slack' | 'dashboard' | 'agent' | 'system';
28
+ /** One session's record. */
29
+ export interface ActingForEntry {
30
+ /** Person id (a member's Slack user id, or `owner`) */
31
+ personId: string;
32
+ source: ActingForSource;
33
+ /** ISO time it was recorded */
34
+ at: string;
35
+ }
36
+ /** The person a request acts for, as Cloud is told. */
37
+ export interface Actor {
38
+ id: string;
39
+ role: PersonRole;
40
+ /** Display name, for messages */
41
+ name: string;
42
+ }
43
+ /** Injectable dependencies. */
44
+ export interface ActingForDeps {
45
+ filePath?: string;
46
+ people?: () => PeopleDirectoryService;
47
+ now?: () => number;
48
+ }
49
+ /** The acting-for record. */
50
+ export declare class ActingForService {
51
+ private readonly filePathOverride?;
52
+ private readonly people;
53
+ private readonly now;
54
+ private cache;
55
+ /**
56
+ * @param deps - Store path, people directory, clock
57
+ */
58
+ constructor(deps?: ActingForDeps);
59
+ /**
60
+ * Record that a session now acts for a person.
61
+ *
62
+ * @param session - Agent session name
63
+ * @param personId - Slack user id, or `owner`
64
+ * @param source - What delivered the message
65
+ */
66
+ record(session: string, personId: string, source: ActingForSource): void;
67
+ /**
68
+ * Record a human message delivered to a session: a Slack sender, or the
69
+ * owner when it carries no Slack sender (dashboard / terminal).
70
+ *
71
+ * @param session - Agent session name
72
+ * @param slackUserId - Sender's Slack user id, when the message came from Slack
73
+ */
74
+ recordHumanMessage(session: string, slackUserId: string | null | undefined): void;
75
+ /**
76
+ * A turn nobody asked for just now — a scheduled check, a scheduled
77
+ * message, an autonomous run, a system event: it acts for the owner, not
78
+ * for whoever spoke last.
79
+ *
80
+ * @param session - Agent session
81
+ */
82
+ recordSystemTurn(session: string): void;
83
+ /**
84
+ * A message an agent wrote (in Slack, or a chat row an agent authored):
85
+ * the target acts for whoever that agent acts for. When the author has no
86
+ * record here (an agent on another machine) the target is left as it was.
87
+ *
88
+ * @param target - Receiving session
89
+ * @param authorSession - The agent that wrote it
90
+ */
91
+ inheritFromAgent(target: string, authorSession: string): void;
92
+ /**
93
+ * A message from one agent to another: the target acts for whoever the
94
+ * sender acts for (the owner when the sender has no record).
95
+ *
96
+ * @param target - Receiving session
97
+ * @param fromSession - Sending session
98
+ */
99
+ inherit(target: string, fromSession: string): void;
100
+ /**
101
+ * A session's record.
102
+ *
103
+ * @param session - Agent session name
104
+ * @returns Entry, or null when the session never got a human message
105
+ */
106
+ get(session: string): ActingForEntry | null;
107
+ /**
108
+ * The person a request acts for: the owner for a request with no agent
109
+ * session (the owner's dashboard), else the session's record (the owner
110
+ * when it has none).
111
+ *
112
+ * @param session - Calling agent session, if any
113
+ * @returns Actor
114
+ */
115
+ actorFor(session?: string | null): Actor;
116
+ /**
117
+ * @param personId - Person id
118
+ * @returns `owner` for the owner by any spelling, else the id
119
+ */
120
+ private canonical;
121
+ /**
122
+ * @param id - Slack user id
123
+ * @returns True for a known bot (false when the directory cannot tell)
124
+ */
125
+ private isBot;
126
+ /** Forget everything (tests). */
127
+ clear(): void;
128
+ /** @returns Store path */
129
+ private filePath;
130
+ /** @returns All records (read once, then cached) */
131
+ private load;
132
+ /**
133
+ * Save atomically (best effort: the in-memory record still applies).
134
+ *
135
+ * @param all - Records
136
+ */
137
+ private save;
138
+ }
139
+ /**
140
+ * The backend's acting-for record.
141
+ *
142
+ * @returns Singleton
143
+ */
144
+ export declare function getActingFor(): ActingForService;
145
+ /**
146
+ * Replace the singleton (tests).
147
+ *
148
+ * @param service - Instance, or null to reset
149
+ */
150
+ export declare function setActingForForTesting(service: ActingForService | null): void;
151
+ /**
152
+ * Before a scheduled, autonomous or system turn is delivered: the session
153
+ * acts for the owner (best effort, never throws).
154
+ *
155
+ * @param session - Agent session the turn goes to
156
+ */
157
+ export declare function noteSystemTurn(session: string): void;
158
+ /**
159
+ * Run work as a person: connector token requests made inside carry that
160
+ * person to Cloud.
161
+ *
162
+ * @param actor - Person
163
+ * @param fn - Work
164
+ * @returns What `fn` returns
165
+ */
166
+ export declare function runAsActor<T>(actor: Actor, fn: () => T): T;
167
+ /**
168
+ * The person the current request acts for.
169
+ *
170
+ * @returns Actor, or null outside a connector request (backend-internal calls)
171
+ */
172
+ export declare function currentActor(): Actor | null;
173
+ /**
174
+ * Headers that tell Cloud who a credential request is for.
175
+ *
176
+ * @param actor - Person (default: the current request's)
177
+ * @returns Headers (empty outside a connector request)
178
+ */
179
+ export declare function actingForHeaders(actor?: Actor | null): Record<string, string>;
180
+ /**
181
+ * Cache-key suffix for a token fetched for the current person, so one
182
+ * person's cached token is never handed to another.
183
+ *
184
+ * @param actor - Person (default: the current request's)
185
+ * @returns `''` outside a connector request, else `\0<person id>`
186
+ */
187
+ export declare function actorCacheSuffix(actor?: Actor | null): string;
188
+ //# sourceMappingURL=acting-for.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acting-for.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/people/acting-for.service.ts"],"names":[],"mappings":"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"}