crewly 1.20.192 → 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 (458) 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/todo-add/SKILL.md +16 -2
  31. package/config/skills/agent/core/todo-add/execute.sh +21 -5
  32. package/config/skills/agent/core/todo-add/execute.test.sh +14 -0
  33. package/config/skills/agent/core/todo-tasks/SKILL.md +4 -3
  34. package/config/skills/agent/core/todo-update/SKILL.md +13 -2
  35. package/config/skills/agent/core/todo-update/execute.sh +41 -3
  36. package/config/skills/agent/core/todo-update/execute.test.sh +7 -0
  37. package/config/skills/marketplace-registry.ts +4 -4
  38. package/config/skills/orchestrator/complete-task/SKILL.md +13 -6
  39. package/config/skills/orchestrator/complete-task/execute.sh +22 -3
  40. package/config/skills/orchestrator/delegate-task/execute.sh +2 -2
  41. package/config/skills/orchestrator/harness-login/SKILL.md +9 -1
  42. package/config/skills/orchestrator/harness-login/execute.sh +12 -4
  43. package/config/skills/orchestrator/harness-login/execute.test.sh +7 -0
  44. package/config/skills/team-leader/delegate-task/execute.sh +1 -1
  45. package/config/skills/team-leader/verify-output/SKILL.md +18 -1
  46. package/config/skills/team-leader/verify-output/execute.sh +28 -0
  47. package/config/skills/team-leader/verify-output/execute.test.sh +27 -0
  48. package/dist/backend/backend/src/constants.d.ts +135 -2
  49. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  50. package/dist/backend/backend/src/constants.js +136 -1
  51. package/dist/backend/backend/src/constants.js.map +1 -1
  52. package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts +6 -0
  53. package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts.map +1 -1
  54. package/dist/backend/backend/src/controllers/canva/canva.controller.js +13 -2
  55. package/dist/backend/backend/src/controllers/canva/canva.controller.js.map +1 -1
  56. package/dist/backend/backend/src/controllers/canva/canva.routes.d.ts.map +1 -1
  57. package/dist/backend/backend/src/controllers/canva/canva.routes.js +3 -1
  58. package/dist/backend/backend/src/controllers/canva/canva.routes.js.map +1 -1
  59. package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
  60. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +4 -1
  61. package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
  62. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts +4 -0
  63. package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts.map +1 -1
  64. package/dist/backend/backend/src/controllers/connector/connector.controller.js +32 -3
  65. package/dist/backend/backend/src/controllers/connector/connector.controller.js.map +1 -1
  66. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts +41 -0
  67. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts.map +1 -0
  68. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js +75 -0
  69. package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js.map +1 -0
  70. package/dist/backend/backend/src/controllers/google/google.controller.d.ts +6 -0
  71. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  72. package/dist/backend/backend/src/controllers/google/google.controller.js +19 -0
  73. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  74. package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
  75. package/dist/backend/backend/src/controllers/google/google.routes.js +3 -1
  76. package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
  77. package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts.map +1 -1
  78. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +22 -3
  79. package/dist/backend/backend/src/controllers/harness/owner-login.controller.js.map +1 -1
  80. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +19 -2
  81. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -1
  82. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +37 -4
  83. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -1
  84. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -1
  85. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +3 -1
  86. package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -1
  87. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +9 -0
  88. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
  89. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +26 -0
  90. package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
  91. package/dist/backend/backend/src/controllers/people/people.routes.d.ts +25 -0
  92. package/dist/backend/backend/src/controllers/people/people.routes.d.ts.map +1 -0
  93. package/dist/backend/backend/src/controllers/people/people.routes.js +90 -0
  94. package/dist/backend/backend/src/controllers/people/people.routes.js.map +1 -0
  95. package/dist/backend/backend/src/controllers/request-types.d.ts +2 -0
  96. package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
  97. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts +22 -1
  98. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
  99. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +143 -3
  100. package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
  101. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +25 -3
  102. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
  103. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +125 -19
  104. package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
  105. package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
  106. package/dist/backend/backend/src/controllers/team/team.controller.js +14 -0
  107. package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
  108. package/dist/backend/backend/src/index.d.ts.map +1 -1
  109. package/dist/backend/backend/src/index.js +44 -1
  110. package/dist/backend/backend/src/index.js.map +1 -1
  111. package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
  112. package/dist/backend/backend/src/routes/api.routes.js +3 -0
  113. package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
  114. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +13 -0
  115. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  116. package/dist/backend/backend/src/services/agent/agent-registration.service.js +28 -3
  117. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  118. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
  119. package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  120. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +14 -3
  121. package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  122. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
  123. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  124. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
  125. package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  126. package/dist/backend/backend/src/services/agent/idle-detection.service.js +1 -1
  127. package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
  128. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
  129. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  130. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
  131. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  132. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
  133. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  134. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
  135. package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  136. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
  137. package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  138. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +49 -5
  139. package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  140. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  141. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
  142. package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  143. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
  144. package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
  145. package/dist/backend/backend/src/services/canva/canva-token.service.d.ts +17 -4
  146. package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
  147. package/dist/backend/backend/src/services/canva/canva-token.service.js +49 -17
  148. package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
  149. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +24 -0
  150. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  151. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +52 -0
  152. package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  153. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +17 -2
  154. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -1
  155. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +30 -6
  156. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -1
  157. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +38 -2
  158. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -1
  159. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +63 -1
  160. package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -1
  161. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
  162. package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  163. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +204 -56
  164. package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  165. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
  166. package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  167. package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  168. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
  169. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +3 -0
  170. package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
  171. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts +25 -2
  172. package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
  173. package/dist/backend/backend/src/services/google/google-workspace-token.service.js +48 -7
  174. package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
  175. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts +207 -0
  176. package/dist/backend/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
  177. package/dist/backend/backend/src/services/harness/claude-accounts.js +306 -0
  178. package/dist/backend/backend/src/services/harness/claude-accounts.js.map +1 -0
  179. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
  180. package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  181. package/dist/backend/backend/src/services/harness/harness-credentials.store.js +48 -0
  182. package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  183. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
  184. package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
  185. package/dist/backend/backend/src/services/harness/harness-relogin.service.js +156 -19
  186. package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -1
  187. package/dist/backend/backend/src/services/harness/harness.types.d.ts +2 -0
  188. package/dist/backend/backend/src/services/harness/harness.types.d.ts.map +1 -1
  189. package/dist/backend/backend/src/services/harness/harness.types.js.map +1 -1
  190. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +19 -4
  191. package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  192. package/dist/backend/backend/src/services/harness/login-broker.service.js +46 -7
  193. package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -1
  194. package/dist/backend/backend/src/services/harness/owner-login-request.d.ts +18 -2
  195. package/dist/backend/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
  196. package/dist/backend/backend/src/services/harness/owner-login-request.js +31 -7
  197. package/dist/backend/backend/src/services/harness/owner-login-request.js.map +1 -1
  198. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
  199. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  200. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
  201. package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  202. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
  203. package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  204. package/dist/backend/backend/src/services/messaging/queue-processor.service.js +29 -0
  205. package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  206. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
  207. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  208. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
  209. package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  210. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +87 -5
  211. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -1
  212. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +151 -12
  213. package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -1
  214. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +17 -4
  215. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
  216. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +45 -17
  217. package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
  218. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts +53 -7
  219. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -1
  220. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js +77 -14
  221. package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -1
  222. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +53 -1
  223. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map +1 -1
  224. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js +130 -29
  225. package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
  226. package/dist/backend/backend/src/services/people/acting-for.service.d.ts +151 -0
  227. package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -0
  228. package/dist/backend/backend/src/services/people/acting-for.service.js +224 -0
  229. package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -0
  230. package/dist/backend/backend/src/services/people/dedicated-agent.d.ts +89 -0
  231. package/dist/backend/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
  232. package/dist/backend/backend/src/services/people/dedicated-agent.js +113 -0
  233. package/dist/backend/backend/src/services/people/dedicated-agent.js.map +1 -0
  234. package/dist/backend/backend/src/services/people/grant-sharing.d.ts +79 -0
  235. package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -0
  236. package/dist/backend/backend/src/services/people/grant-sharing.js +135 -0
  237. package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -0
  238. package/dist/backend/backend/src/services/people/people-directory.service.d.ts +181 -0
  239. package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -0
  240. package/dist/backend/backend/src/services/people/people-directory.service.js +317 -0
  241. package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -0
  242. package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
  243. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
  244. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
  245. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
  246. package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
  247. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts +8 -1
  248. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts.map +1 -1
  249. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js +16 -2
  250. package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js.map +1 -1
  251. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +60 -1
  252. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
  253. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +140 -8
  254. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
  255. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js +1 -1
  256. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js.map +1 -1
  257. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
  258. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
  259. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
  260. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
  261. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
  262. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +12 -2
  263. package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
  264. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts +7 -1
  265. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts.map +1 -1
  266. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js +18 -3
  267. package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js.map +1 -1
  268. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  269. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +3 -0
  270. package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  271. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
  272. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  273. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
  274. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  275. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +9 -0
  276. package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  277. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +46 -0
  278. package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  279. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts +105 -0
  280. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts.map +1 -0
  281. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js +238 -0
  282. package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js.map +1 -0
  283. package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  284. package/dist/backend/backend/src/services/task-pool/task-pool.service.js +4 -0
  285. package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  286. package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts +39 -12
  287. package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts.map +1 -1
  288. package/dist/backend/backend/src/services/usage/usage-stats.service.js +61 -20
  289. package/dist/backend/backend/src/services/usage/usage-stats.service.js.map +1 -1
  290. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +2 -0
  291. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
  292. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +9 -0
  293. package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
  294. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +10 -0
  295. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
  296. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +45 -2
  297. package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
  298. package/dist/backend/backend/src/types/index.d.ts +12 -1
  299. package/dist/backend/backend/src/types/index.d.ts.map +1 -1
  300. package/dist/backend/backend/src/types/index.js.map +1 -1
  301. package/dist/backend/backend/src/types/messaging.types.d.ts +5 -0
  302. package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
  303. package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
  304. package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts +77 -0
  305. package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts.map +1 -0
  306. package/dist/backend/backend/src/types/v2/completion-evidence.types.js +119 -0
  307. package/dist/backend/backend/src/types/v2/completion-evidence.types.js.map +1 -0
  308. package/dist/backend/backend/src/types/v2/work-item.types.d.ts +13 -0
  309. package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  310. package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
  311. package/dist/backend/build-info.json +2 -2
  312. package/dist/backend/config/constants.d.ts +11 -0
  313. package/dist/backend/config/constants.d.ts.map +1 -1
  314. package/dist/backend/config/constants.js +11 -0
  315. package/dist/backend/config/constants.js.map +1 -1
  316. package/dist/cli/backend/src/constants.d.ts +135 -2
  317. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  318. package/dist/cli/backend/src/constants.js +136 -1
  319. package/dist/cli/backend/src/constants.js.map +1 -1
  320. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +13 -0
  321. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  322. package/dist/cli/backend/src/services/agent/agent-registration.service.js +28 -3
  323. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  324. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
  325. package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
  326. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +14 -3
  327. package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
  328. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
  329. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
  330. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
  331. package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
  332. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
  333. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  334. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
  335. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  336. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
  337. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
  338. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
  339. package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
  340. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
  341. package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
  342. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +49 -5
  343. package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
  344. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
  345. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
  346. package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
  347. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
  348. package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
  349. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +24 -0
  350. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
  351. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +52 -0
  352. package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
  353. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
  354. package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
  355. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +204 -56
  356. package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
  357. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
  358. package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
  359. package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
  360. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts +207 -0
  361. package/dist/cli/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
  362. package/dist/cli/backend/src/services/harness/claude-accounts.js +306 -0
  363. package/dist/cli/backend/src/services/harness/claude-accounts.js.map +1 -0
  364. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
  365. package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
  366. package/dist/cli/backend/src/services/harness/harness-credentials.store.js +48 -0
  367. package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -1
  368. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
  369. package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
  370. package/dist/cli/backend/src/services/harness/harness-relogin.service.js +156 -19
  371. package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -1
  372. package/dist/cli/backend/src/services/harness/harness.types.d.ts +2 -0
  373. package/dist/cli/backend/src/services/harness/harness.types.d.ts.map +1 -1
  374. package/dist/cli/backend/src/services/harness/harness.types.js.map +1 -1
  375. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +19 -4
  376. package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
  377. package/dist/cli/backend/src/services/harness/login-broker.service.js +46 -7
  378. package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -1
  379. package/dist/cli/backend/src/services/harness/owner-login-request.d.ts +18 -2
  380. package/dist/cli/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
  381. package/dist/cli/backend/src/services/harness/owner-login-request.js +31 -7
  382. package/dist/cli/backend/src/services/harness/owner-login-request.js.map +1 -1
  383. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
  384. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
  385. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
  386. package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
  387. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
  388. package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
  389. package/dist/cli/backend/src/services/messaging/queue-processor.service.js +29 -0
  390. package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
  391. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
  392. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
  393. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
  394. package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
  395. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts +197 -0
  396. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -0
  397. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js +455 -0
  398. package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -0
  399. package/dist/cli/backend/src/services/people/acting-for.service.d.ts +151 -0
  400. package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -0
  401. package/dist/cli/backend/src/services/people/acting-for.service.js +224 -0
  402. package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -0
  403. package/dist/cli/backend/src/services/people/dedicated-agent.d.ts +89 -0
  404. package/dist/cli/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
  405. package/dist/cli/backend/src/services/people/dedicated-agent.js +113 -0
  406. package/dist/cli/backend/src/services/people/dedicated-agent.js.map +1 -0
  407. package/dist/cli/backend/src/services/people/people-directory.service.d.ts +181 -0
  408. package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -0
  409. package/dist/cli/backend/src/services/people/people-directory.service.js +317 -0
  410. package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -0
  411. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
  412. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
  413. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
  414. package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
  415. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
  416. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
  417. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
  418. package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
  419. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
  420. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +3 -0
  421. package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
  422. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
  423. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  424. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
  425. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  426. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +9 -0
  427. package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
  428. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +46 -0
  429. package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
  430. package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
  431. package/dist/cli/backend/src/services/task-pool/task-pool.service.js +4 -0
  432. package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
  433. package/dist/cli/backend/src/types/index.d.ts +12 -1
  434. package/dist/cli/backend/src/types/index.d.ts.map +1 -1
  435. package/dist/cli/backend/src/types/index.js.map +1 -1
  436. package/dist/cli/backend/src/types/messaging.types.d.ts +5 -0
  437. package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
  438. package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
  439. package/dist/cli/backend/src/types/v2/work-item.types.d.ts +13 -0
  440. package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
  441. package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
  442. package/dist/cli/cli/src/utils/marketplace.d.ts +21 -0
  443. package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
  444. package/dist/cli/cli/src/utils/marketplace.js +35 -1
  445. package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
  446. package/dist/cli/config/constants.d.ts +11 -0
  447. package/dist/cli/config/constants.d.ts.map +1 -1
  448. package/dist/cli/config/constants.js +11 -0
  449. package/dist/cli/config/constants.js.map +1 -1
  450. package/dist/cli/config/skills/marketplace-registry.d.ts +4 -4
  451. package/dist/cli/config/skills/marketplace-registry.js +4 -4
  452. package/frontend/dist/assets/{index-5b7af029.js → index-465d1f8f.js} +293 -293
  453. package/frontend/dist/assets/{index-fc715ec3.css → index-5e967795.css} +1 -1
  454. package/frontend/dist/index.html +2 -2
  455. package/package.json +1 -1
  456. package/packages/crewly-agent/src/runtime/tool-registry.test.ts +45 -0
  457. package/packages/crewly-agent/src/runtime/tool-registry.ts +40 -5
  458. package/packages/crewly-agent/src/test/isolated-home.test.ts +24 -0
@@ -23,6 +23,14 @@
23
23
  * {@link module:services/monitoring/model-pricing} and reports whether a
24
24
  * rate was an exact match.
25
25
  *
26
+ * A session that runs on another of the owner's Claude Code accounts
27
+ * (issue #942, `claude-code@<name>`) writes its transcripts under that
28
+ * account's config dir, not `~/.claude`. Both are searched, the account's
29
+ * first, so its turns count toward its daily token cap. When a session moves
30
+ * to another transcript (an account switch, a new conversation), the unread
31
+ * tail of the one it leaves is counted first and its offset is remembered,
32
+ * so returning to it later never counts a turn twice.
33
+ *
26
34
  * As a side effect the sync knows each agent's true context size — the sum of
27
35
  * fresh, cached and cache-written input on its most recent turn — which is the
28
36
  * only reliable source for it, since Claude Code's TUI context readout is not
@@ -40,6 +48,8 @@ import { TokenUsageService } from './token-usage.service.js';
40
48
  import { calculateCost } from './model-pricing.js';
41
49
  import { CLAUDE_TRANSCRIPT_SYNC_CONSTANTS } from '../../constants.js';
42
50
  import { findLatestSessionFile, findSessionJsonlPath } from './claude-session-tokens.service.js';
51
+ import { effectiveClaudeAccount } from '../runtime-fallback/effective-runtime.js';
52
+ import { claudeAccountConfigDir } from '../harness/claude-accounts.js';
43
53
  /**
44
54
  * Reads Claude Code transcripts on an interval and records exact token usage.
45
55
  *
@@ -62,6 +72,8 @@ export class ClaudeTranscriptSyncService {
62
72
  * untestable against a temp tree.
63
73
  */
64
74
  homeDir;
75
+ /** Config dir of one of the owner's other Claude Code accounts (issue #942) */
76
+ accountConfigDir;
65
77
  cursors = new Map();
66
78
  timer = null;
67
79
  observers = [];
@@ -71,10 +83,12 @@ export class ClaudeTranscriptSyncService {
71
83
  /**
72
84
  * @param cursorFile - Override the cursor persistence path (tests)
73
85
  * @param homeDir - Override the home directory transcripts live under (tests)
86
+ * @param accountConfigDir - Override where an account's config dir is (tests)
74
87
  */
75
- constructor(cursorFile, homeDir) {
88
+ constructor(cursorFile, homeDir, accountConfigDir) {
76
89
  this.logger = LoggerService.getInstance().createComponentLogger('ClaudeTranscriptSync');
77
90
  this.homeDir = homeDir ?? os.homedir();
91
+ this.accountConfigDir = accountConfigDir ?? ((account) => claudeAccountConfigDir(account));
78
92
  this.cursorFile =
79
93
  cursorFile ?? path.join(this.homeDir, '.crewly', CLAUDE_TRANSCRIPT_SYNC_CONSTANTS.CURSOR_FILE);
80
94
  }
@@ -156,10 +170,15 @@ export class ClaudeTranscriptSyncService {
156
170
  // transcript resolution knows when a directory cannot identify a
157
171
  // single agent.
158
172
  const perCwd = new Map();
159
- for (const info of sessions.values()) {
173
+ // Conversation id → session, so a transcript another session now
174
+ // owns is never drained into this one's spend.
175
+ const ownerOfConversation = new Map();
176
+ for (const [name, info] of sessions) {
160
177
  if (info.runtimeType !== 'claude-code' || !info.cwd)
161
178
  continue;
162
179
  perCwd.set(info.cwd, (perCwd.get(info.cwd) ?? 0) + 1);
180
+ if (info.claudeSessionId)
181
+ ownerOfConversation.set(info.claudeSessionId, name);
163
182
  }
164
183
  for (const [sessionName, info] of sessions) {
165
184
  // Only Claude Code writes the transcripts this service reads.
@@ -167,12 +186,15 @@ export class ClaudeTranscriptSyncService {
167
186
  continue;
168
187
  if (!info.cwd)
169
188
  continue;
170
- const filePath = await this.resolveTranscript(info.cwd, info.claudeSessionId, (perCwd.get(info.cwd) ?? 0) > 1);
189
+ const filePath = await this.resolveTranscript(info.cwd, info.claudeSessionId, (perCwd.get(info.cwd) ?? 0) > 1, this.accountConfigDirsOf(sessionName));
171
190
  if (!filePath) {
172
191
  result.sessionsWithoutTranscript += 1;
173
192
  continue;
174
193
  }
175
- const counted = await this.syncOne(sessionName, filePath);
194
+ const counted = await this.syncOne(sessionName, filePath, (id) => {
195
+ const owner = ownerOfConversation.get(id);
196
+ return owner !== undefined && owner !== sessionName;
197
+ });
176
198
  if (counted.turns > 0) {
177
199
  result.sessionsUpdated += 1;
178
200
  result.turnsCounted += counted.turns;
@@ -213,6 +235,24 @@ export class ClaudeTranscriptSyncService {
213
235
  }
214
236
  return result;
215
237
  }
238
+ /**
239
+ * Claude config dirs to search for a session besides `~/.claude`: the
240
+ * config dir of the owner's other Claude Code account it runs on, if any.
241
+ *
242
+ * @param sessionName - Crewly session name
243
+ * @returns `[accountConfigDir]` while on `claude-code@<name>`, else `[]`
244
+ */
245
+ accountConfigDirsOf(sessionName) {
246
+ const account = effectiveClaudeAccount(sessionName);
247
+ if (!account)
248
+ return [];
249
+ try {
250
+ return [this.accountConfigDir(account)];
251
+ }
252
+ catch {
253
+ return [];
254
+ }
255
+ }
216
256
  /**
217
257
  * Locate a session's transcript file.
218
258
  *
@@ -224,15 +264,17 @@ export class ClaudeTranscriptSyncService {
224
264
  * @param claudeSessionId - Conversation id, when known
225
265
  * @param cwdIsShared - Whether another registered session works in the
226
266
  * same directory, which makes newest-wins unsafe
267
+ * @param configDirs - Config dirs of the owner's other Claude Code account
268
+ * the session runs on (searched before `~/.claude`)
227
269
  * @returns Absolute path, or null when nothing readable exists
228
270
  */
229
- async resolveTranscript(cwd, claudeSessionId, cwdIsShared) {
271
+ async resolveTranscript(cwd, claudeSessionId, cwdIsShared, configDirs = []) {
230
272
  // Claude Code files transcripts under the *resolved* cwd, so a cwd that
231
273
  // goes through a symlink (/tmp on macOS) lands in a different slug
232
274
  // directory than the raw path suggests (#938). Both lookups below check
233
275
  // the realpath slug first, then the raw slug.
234
276
  if (claudeSessionId) {
235
- const direct = await findSessionJsonlPath(cwd, claudeSessionId, this.homeDir);
277
+ const direct = await findSessionJsonlPath(cwd, claudeSessionId, this.homeDir, configDirs);
236
278
  if (direct)
237
279
  return direct;
238
280
  // Recorded id has no file — fall through to newest-wins.
@@ -250,51 +292,106 @@ export class ClaudeTranscriptSyncService {
250
292
  // dashboard its meaning.
251
293
  if (cwdIsShared)
252
294
  return null;
253
- return findLatestSessionFile(cwd, this.homeDir);
295
+ return findLatestSessionFile(cwd, this.homeDir, configDirs);
254
296
  }
255
297
  /**
256
298
  * Consume the unread tail of one transcript and record what it holds.
257
299
  *
300
+ * When the session's transcript changed since the last pass (a new
301
+ * conversation, or a move to another of the owner's Claude Code accounts,
302
+ * whose transcripts live in that account's config dir), the transcript it
303
+ * leaves is read to its end first — turns written there just before the
304
+ * move would otherwise never be counted — unless another session now owns
305
+ * that conversation. Its offset is remembered, and the new transcript
306
+ * resumes at its own remembered offset (0 when new). Message ids seen are
307
+ * kept across transcripts, so a turn is counted once whichever file it is
308
+ * read from.
309
+ *
258
310
  * @param sessionName - Crewly session name, used as the usage key
259
311
  * @param filePath - Transcript to read
312
+ * @param ownedByOther - Whether a conversation id belongs to another session
260
313
  * @returns Turns counted and cost added for this session
261
314
  */
262
- async syncOne(sessionName, filePath) {
315
+ async syncOne(sessionName, filePath, ownedByOther = () => false) {
263
316
  let cursor = this.cursors.get(sessionName);
264
- // A different transcript means the agent was given a new conversation
265
- // (a fresh session id, not a resume). Start its cursor over, but keep
266
- // the cost so the dashboard shows the agent's lifetime spend.
267
- if (!cursor || cursor.filePath !== filePath) {
268
- cursor = { filePath, offset: 0, seenMessageIds: [], cost: cursor?.cost ?? 0, costBasis: 2 };
317
+ if (!cursor) {
318
+ cursor = { filePath, offset: 0, seenMessageIds: [], cost: 0, costBasis: 2 };
269
319
  this.cursors.set(sessionName, cursor);
270
320
  }
321
+ let turns = 0;
322
+ let costAdded = 0;
323
+ let latest = null;
324
+ if (cursor.filePath !== filePath) {
325
+ const left = cursor.filePath;
326
+ if (!ownedByOther(path.basename(left, '.jsonl'))) {
327
+ const drained = await this.consume(sessionName, cursor);
328
+ turns += drained.turns;
329
+ costAdded += drained.cost;
330
+ }
331
+ const offsets = { ...(cursor.fileOffsets ?? {}) };
332
+ delete offsets[left];
333
+ offsets[left] = cursor.offset;
334
+ const resumeAt = offsets[filePath] ?? 0;
335
+ delete offsets[filePath];
336
+ const kept = Object.entries(offsets).slice(-CLAUDE_TRANSCRIPT_SYNC_CONSTANTS.MAX_REMEMBERED_TRANSCRIPTS);
337
+ cursor.filePath = filePath;
338
+ cursor.offset = resumeAt;
339
+ cursor.fileOffsets = Object.fromEntries(kept);
340
+ }
341
+ const read = await this.consume(sessionName, cursor);
342
+ turns += read.turns;
343
+ costAdded += read.cost;
344
+ latest = read.latest;
345
+ if (turns === 0)
346
+ return { turns: 0, cost: 0 };
347
+ cursor.cost += costAdded;
348
+ TokenUsageService.getInstance().overrideSessionCost(sessionName, cursor.cost);
349
+ if (latest) {
350
+ const contextTokens = latest.input + latest.cacheRead + latest.cacheWrite;
351
+ cursor.lastContextTokens = contextTokens;
352
+ this.emitContext({ sessionName, contextTokens, model: latest.model });
353
+ }
354
+ return { turns, cost: costAdded };
355
+ }
356
+ /**
357
+ * Read `cursor.filePath` from `cursor.offset` to its last whole line,
358
+ * record each new turn in the token ledger and advance the cursor.
359
+ *
360
+ * Does not touch `cursor.cost`; the caller adds the returned cost.
361
+ *
362
+ * @param sessionName - Crewly session name, used as the usage key
363
+ * @param cursor - The session's cursor (mutated: offset, seen ids)
364
+ * @returns Turns recorded, their cost and the newest of them
365
+ */
366
+ async consume(sessionName, cursor) {
367
+ const none = { turns: 0, cost: 0, latest: null };
368
+ const filePath = cursor.filePath;
271
369
  let size;
272
370
  try {
273
371
  size = (await fs.stat(filePath)).size;
274
372
  }
275
373
  catch {
276
- return { turns: 0, cost: 0 };
374
+ return none;
277
375
  }
278
376
  // Truncated or rotated underneath us — re-read from the top rather
279
377
  // than seeking past the end and silently counting nothing forever.
280
- if (size < cursor.offset) {
378
+ // The seen ids are kept: a turn still in the file is not new.
379
+ if (size < cursor.offset)
281
380
  cursor.offset = 0;
282
- cursor.seenMessageIds = [];
283
- }
284
381
  if (size === cursor.offset)
285
- return { turns: 0, cost: 0 };
382
+ return none;
286
383
  const tail = await this.readFrom(filePath, cursor.offset, size);
287
384
  // Only advance past whole lines; a partial trailing line is re-read next pass.
288
385
  const lastNewline = tail.lastIndexOf('\n');
289
386
  if (lastNewline < 0)
290
- return { turns: 0, cost: 0 };
387
+ return none;
291
388
  const complete = tail.slice(0, lastNewline);
292
389
  const consumedBytes = Buffer.byteLength(complete, 'utf-8') + 1;
293
390
  const seen = new Set(cursor.seenMessageIds);
294
391
  const turns = this.parseTurns(complete, seen);
295
392
  cursor.offset += consumedBytes;
296
393
  if (turns.length === 0)
297
- return { turns: 0, cost: 0 };
394
+ return none;
298
395
  const tokenSvc = TokenUsageService.getInstance();
299
396
  let costAdded = 0;
300
397
  let latest = null;
@@ -312,17 +409,10 @@ export class ClaudeTranscriptSyncService {
312
409
  seen.add(turn.messageId);
313
410
  latest = turn;
314
411
  }
315
- cursor.cost += costAdded;
316
- tokenSvc.overrideSessionCost(sessionName, cursor.cost);
317
412
  // Keep the dedupe set bounded — only the newest ids can collide with
318
413
  // a line Claude Code rewrites.
319
414
  cursor.seenMessageIds = Array.from(seen).slice(-CLAUDE_TRANSCRIPT_SYNC_CONSTANTS.MAX_DEDUPE_IDS);
320
- if (latest) {
321
- const contextTokens = latest.input + latest.cacheRead + latest.cacheWrite;
322
- cursor.lastContextTokens = contextTokens;
323
- this.emitContext({ sessionName, contextTokens, model: latest.model });
324
- }
325
- return { turns: turns.length, cost: costAdded };
415
+ return { turns: turns.length, cost: costAdded, latest };
326
416
  }
327
417
  /**
328
418
  * Read a byte range of a file as UTF-8.
@@ -454,8 +544,13 @@ export class ClaudeTranscriptSyncService {
454
544
  catch {
455
545
  continue;
456
546
  }
547
+ // Count whole lines only, exactly as syncOne() does; a partial
548
+ // trailing line is left for the next sync to read.
549
+ const lastNewline = text.lastIndexOf('\n');
550
+ const complete = lastNewline < 0 ? '' : text.slice(0, lastNewline);
551
+ const seen = new Set();
457
552
  let cost = 0;
458
- for (const turn of this.parseTurns(text, new Set())) {
553
+ for (const turn of this.parseTurns(complete, seen)) {
459
554
  cost += calculateCost({ input: turn.input, output: turn.output, cacheRead: turn.cacheRead, cacheWrite: turn.cacheWrite }, turn.model).cost;
460
555
  }
461
556
  if (Math.abs(cost - cursor.cost) > 0.01) {
@@ -467,6 +562,12 @@ export class ClaudeTranscriptSyncService {
467
562
  }
468
563
  cursor.cost = cost;
469
564
  cursor.costBasis = 2;
565
+ // Move the cursor to the end of what was just counted (#972). The
566
+ // legacy offset often belonged to another agent's transcript; left
567
+ // past the end of this file, the next sync would take it for a
568
+ // truncation, re-read from the top and count every turn again.
569
+ cursor.offset = lastNewline < 0 ? 0 : Buffer.byteLength(complete, 'utf-8') + 1;
570
+ cursor.seenMessageIds = Array.from(seen).slice(-CLAUDE_TRANSCRIPT_SYNC_CONSTANTS.MAX_DEDUPE_IDS);
470
571
  changed = true;
471
572
  }
472
573
  if (changed)
@@ -1 +1 @@
1
- {"version":3,"file":"claude-transcript-sync.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/claude-transcript-sync.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-transcript-sync.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/claude-transcript-sync.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
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, a dashboard message records the owner. A
8
+ * message one agent sends another passes the sender's person on, so work
9
+ * delegated for Info stays Info's. Scheduled and system turns change nothing.
10
+ *
11
+ * The record is set only by the backend from what it delivered — never from
12
+ * anything an agent sends — and connector credential requests carry it to
13
+ * Cloud, which decides whether that person may use the grant.
14
+ *
15
+ * Kept in `<CREWLY_HOME>/acting-for.json` so a restart does not turn a
16
+ * member's in-flight turn into the owner's.
17
+ *
18
+ * specs/per-person-access.md
19
+ *
20
+ * @module services/people/acting-for.service
21
+ */
22
+ import { type PeopleDirectoryService, type PersonRole } from './people-directory.service.js';
23
+ /** Where an acting-for record came from. */
24
+ export type ActingForSource = 'slack' | 'dashboard' | 'agent';
25
+ /** One session's record. */
26
+ export interface ActingForEntry {
27
+ /** Person id (Slack user id, or `owner`) */
28
+ personId: string;
29
+ source: ActingForSource;
30
+ /** ISO time it was recorded */
31
+ at: string;
32
+ }
33
+ /** The person a request acts for, as Cloud is told. */
34
+ export interface Actor {
35
+ id: string;
36
+ role: PersonRole;
37
+ /** Display name, for messages */
38
+ name: string;
39
+ }
40
+ /** Injectable dependencies. */
41
+ export interface ActingForDeps {
42
+ filePath?: string;
43
+ people?: () => PeopleDirectoryService;
44
+ now?: () => number;
45
+ }
46
+ /** The acting-for record. */
47
+ export declare class ActingForService {
48
+ private readonly filePathOverride?;
49
+ private readonly people;
50
+ private readonly now;
51
+ private cache;
52
+ /**
53
+ * @param deps - Store path, people directory, clock
54
+ */
55
+ constructor(deps?: ActingForDeps);
56
+ /**
57
+ * Record that a session now acts for a person.
58
+ *
59
+ * @param session - Agent session name
60
+ * @param personId - Slack user id, or `owner`
61
+ * @param source - What delivered the message
62
+ */
63
+ record(session: string, personId: string, source: ActingForSource): void;
64
+ /**
65
+ * Record a human message delivered to a session: a Slack sender, or the
66
+ * owner when it carries no Slack sender (dashboard / terminal).
67
+ *
68
+ * @param session - Agent session name
69
+ * @param slackUserId - Sender's Slack user id, when the message came from Slack
70
+ */
71
+ recordHumanMessage(session: string, slackUserId: string | null | undefined): void;
72
+ /**
73
+ * A message from one agent to another: the target acts for whoever the
74
+ * sender acts for (the owner when the sender has no record).
75
+ *
76
+ * @param target - Receiving session
77
+ * @param fromSession - Sending session
78
+ */
79
+ inherit(target: string, fromSession: string): void;
80
+ /**
81
+ * A session's record.
82
+ *
83
+ * @param session - Agent session name
84
+ * @returns Entry, or null when the session never got a human message
85
+ */
86
+ get(session: string): ActingForEntry | null;
87
+ /**
88
+ * The person a request acts for: the owner for a request with no agent
89
+ * session (the owner's dashboard), else the session's record (the owner
90
+ * when it has none).
91
+ *
92
+ * @param session - Calling agent session, if any
93
+ * @returns Actor
94
+ */
95
+ actorFor(session?: string | null): Actor;
96
+ /** Forget everything (tests). */
97
+ clear(): void;
98
+ /** @returns Store path */
99
+ private filePath;
100
+ /** @returns All records (read once, then cached) */
101
+ private load;
102
+ /**
103
+ * Save atomically (best effort: the in-memory record still applies).
104
+ *
105
+ * @param all - Records
106
+ */
107
+ private save;
108
+ }
109
+ /**
110
+ * The backend's acting-for record.
111
+ *
112
+ * @returns Singleton
113
+ */
114
+ export declare function getActingFor(): ActingForService;
115
+ /**
116
+ * Replace the singleton (tests).
117
+ *
118
+ * @param service - Instance, or null to reset
119
+ */
120
+ export declare function setActingForForTesting(service: ActingForService | null): void;
121
+ /**
122
+ * Run work as a person: connector token requests made inside carry that
123
+ * person to Cloud.
124
+ *
125
+ * @param actor - Person
126
+ * @param fn - Work
127
+ * @returns What `fn` returns
128
+ */
129
+ export declare function runAsActor<T>(actor: Actor, fn: () => T): T;
130
+ /**
131
+ * The person the current request acts for.
132
+ *
133
+ * @returns Actor, or null outside a connector request (backend-internal calls)
134
+ */
135
+ export declare function currentActor(): Actor | null;
136
+ /**
137
+ * Headers that tell Cloud who a credential request is for.
138
+ *
139
+ * @param actor - Person (default: the current request's)
140
+ * @returns Headers (empty outside a connector request)
141
+ */
142
+ export declare function actingForHeaders(actor?: Actor | null): Record<string, string>;
143
+ /**
144
+ * Cache-key suffix for a token fetched for the current person, so one
145
+ * person's cached token is never handed to another.
146
+ *
147
+ * @param actor - Person (default: the current request's)
148
+ * @returns `''` outside a connector request, else `\0<person id>`
149
+ */
150
+ export declare function actorCacheSuffix(actor?: Actor | null): string;
151
+ //# 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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,EAAsB,KAAK,sBAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEjH,4CAA4C;AAC5C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9D,4BAA4B;AAC5B,MAAM,WAAW,cAAc;IAC9B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;IACxB,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;CACX;AAED,uDAAuD;AACvD,MAAM,WAAW,KAAK;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;CACb;AAED,+BAA+B;AAC/B,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,sBAAsB,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACnB;AAED,6BAA6B;AAC7B,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,KAAK,CAA+C;IAE5D;;OAEG;gBACS,IAAI,GAAE,aAAkB;IAMpC;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI;IASxE;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAajF;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAMlD;;;;;OAKG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAK3C;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK;IAOxC,iCAAiC;IACjC,KAAK,IAAI,IAAI;IAIb,0BAA0B;IAC1B,OAAO,CAAC,QAAQ;IAIhB,oDAAoD;IACpD,OAAO,CAAC,IAAI;IAoBZ;;;;OAIG;IACH,OAAO,CAAC,IAAI;CAYZ;AAID;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,gBAAgB,CAG/C;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAE7E;AAID;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,KAAK,GAAG,IAAI,CAE3C;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,KAAK,GAAG,IAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG7F;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,GAAE,KAAK,GAAG,IAAqB,GAAG,MAAM,CAE7E"}