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,306 @@
1
+ /**
2
+ * The owner's other Claude Code accounts on this machine (issue #942).
3
+ *
4
+ * When the owner's Claude Code account runs out of usage, agents can move to
5
+ * another account of the SAME owner before falling back to other runtimes.
6
+ * Each account has its own config dir and its own login — Crewly never
7
+ * switches accounts inside one login (in-place switching is unreliable
8
+ * upstream, anthropics/claude-code#94195):
9
+ *
10
+ * - config dir: `<CREWLY_HOME>/claude-accounts/<name>/`, passed to Claude as
11
+ * `CLAUDE_CONFIG_DIR` (its own history, settings and `.claude.json`);
12
+ * - login: the long-lived `claude setup-token` token, stored in
13
+ * `harness-credentials.json` (`claudeAccounts.<name>`) and passed as
14
+ * `CLAUDE_CODE_OAUTH_TOKEN` to sessions on that account only. A login
15
+ * done by hand (`CLAUDE_CONFIG_DIR=… claude /login`) also counts when it
16
+ * left a credentials file there.
17
+ *
18
+ * In a fallback chain an account is the entry `claude-code@<name>`; plain
19
+ * `claude-code` is the machine's default login.
20
+ *
21
+ * Add only Claude Code accounts that the owner owns.
22
+ *
23
+ * @module services/harness/claude-accounts
24
+ */
25
+ import * as fs from 'fs';
26
+ import * as os from 'os';
27
+ import * as path from 'path';
28
+ import { HARNESS_CONSTANTS, RUNTIME_TYPES } from '../../constants.js';
29
+ import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
30
+ import { prepareClaudeConfigForCrewlyLogin } from './claude-config.utils.js';
31
+ import { getHarnessCredentialsStore } from './harness-credentials.store.js';
32
+ const ACC = HARNESS_CONSTANTS.CLAUDE.ACCOUNTS;
33
+ /** An invalid account name. */
34
+ export class ClaudeAccountNameError extends Error {
35
+ }
36
+ /**
37
+ * Normalise an account name as written by a person.
38
+ *
39
+ * @param raw - e.g. "Work", " b "
40
+ * @returns The name, lower-cased and trimmed
41
+ */
42
+ export function normaliseClaudeAccountName(raw) {
43
+ return raw.trim().toLowerCase();
44
+ }
45
+ /**
46
+ * Whether a (normalised) name can be an account name.
47
+ *
48
+ * @param name - Candidate
49
+ * @returns True for 1–32 of `a-z0-9_-`, starting with a letter or digit, not a reserved word
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * isValidClaudeAccountName('work'); // true
54
+ * isValidClaudeAccountName('code'); // false (reserved)
55
+ * ```
56
+ */
57
+ export function isValidClaudeAccountName(name) {
58
+ return ACC.NAME_PATTERN.test(name) && !ACC.RESERVED_NAMES.includes(name);
59
+ }
60
+ /**
61
+ * Validate and normalise an account name.
62
+ *
63
+ * @param raw - Name as given
64
+ * @returns The normalised name
65
+ * @throws ClaudeAccountNameError when it is not a valid name
66
+ */
67
+ export function requireClaudeAccountName(raw) {
68
+ const name = typeof raw === 'string' ? normaliseClaudeAccountName(raw) : '';
69
+ if (!isValidClaudeAccountName(name)) {
70
+ throw new ClaudeAccountNameError(`Account names are 1–32 lower-case letters, digits, "-" or "_" (not ${ACC.RESERVED_NAMES.map((r) => `"${r}"`).join(', ')})`);
71
+ }
72
+ return name;
73
+ }
74
+ /**
75
+ * Split a runtime target.
76
+ *
77
+ * @param target - `claude-code`, `claude-code@work`, `crewly-agent`
78
+ * @returns Runtime and account
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * parseRuntimeTarget('claude-code@work'); // { runtime: 'claude-code', account: 'work' }
83
+ * ```
84
+ */
85
+ export function parseRuntimeTarget(target) {
86
+ const at = target.indexOf(ACC.TARGET_SEPARATOR);
87
+ if (at <= 0)
88
+ return { runtime: target };
89
+ return { runtime: target.slice(0, at), account: target.slice(at + 1) };
90
+ }
91
+ /**
92
+ * The runtime of a target, without its account.
93
+ *
94
+ * @param target - Runtime target
95
+ * @returns Runtime id
96
+ */
97
+ export function baseRuntimeOf(target) {
98
+ return parseRuntimeTarget(target).runtime;
99
+ }
100
+ /**
101
+ * The account of a target.
102
+ *
103
+ * @param target - Runtime target
104
+ * @returns Account name, or null for a runtime's default login
105
+ */
106
+ export function accountOf(target) {
107
+ return parseRuntimeTarget(target).account ?? null;
108
+ }
109
+ /**
110
+ * Build a target.
111
+ *
112
+ * @param runtime - Runtime id
113
+ * @param account - Account name (only Claude Code has accounts)
114
+ * @returns `runtime` or `runtime@account`
115
+ */
116
+ export function runtimeTarget(runtime, account) {
117
+ return account ? `${runtime}${ACC.TARGET_SEPARATOR}${account}` : runtime;
118
+ }
119
+ /**
120
+ * Whether a chain entry is one of the owner's Claude Code accounts.
121
+ *
122
+ * @param target - Chain entry
123
+ * @returns True for `claude-code@<valid name>`
124
+ */
125
+ export function isClaudeAccountTarget(target) {
126
+ const { runtime, account } = parseRuntimeTarget(target);
127
+ return runtime === RUNTIME_TYPES.CLAUDE_CODE && account !== undefined && isValidClaudeAccountName(account);
128
+ }
129
+ /**
130
+ * Directory holding every account's config dir.
131
+ *
132
+ * @param crewlyHome - CREWLY_HOME
133
+ * @returns Absolute path
134
+ */
135
+ export function claudeAccountsRoot(crewlyHome = getCrewlyHomePath()) {
136
+ return path.join(crewlyHome, ACC.DIR);
137
+ }
138
+ /**
139
+ * An account's config dir (its `CLAUDE_CONFIG_DIR`).
140
+ *
141
+ * @param account - Account name (valid)
142
+ * @param crewlyHome - CREWLY_HOME
143
+ * @returns Absolute path
144
+ */
145
+ export function claudeAccountConfigDir(account, crewlyHome = getCrewlyHomePath()) {
146
+ return path.join(claudeAccountsRoot(crewlyHome), account);
147
+ }
148
+ /**
149
+ * Accounts known on this machine: a config dir exists or a token is stored.
150
+ *
151
+ * @param location - CREWLY_HOME / credentials overrides
152
+ * @returns Sorted account names
153
+ */
154
+ export function listClaudeAccounts(location = {}) {
155
+ const names = new Set();
156
+ try {
157
+ for (const entry of fs.readdirSync(claudeAccountsRoot(location.crewlyHome), { withFileTypes: true })) {
158
+ if (entry.isDirectory() && isValidClaudeAccountName(entry.name))
159
+ names.add(entry.name);
160
+ }
161
+ }
162
+ catch {
163
+ // no accounts yet
164
+ }
165
+ try {
166
+ for (const name of (location.credentials ?? getHarnessCredentialsStore()).listClaudeAccountsWithToken()) {
167
+ if (isValidClaudeAccountName(name))
168
+ names.add(name);
169
+ }
170
+ }
171
+ catch {
172
+ // unreadable credentials: directories only
173
+ }
174
+ return [...names].sort();
175
+ }
176
+ /**
177
+ * Whether an account has a login: a stored token, or a credentials file in
178
+ * its config dir (a login done by hand).
179
+ *
180
+ * @param account - Account name
181
+ * @param location - CREWLY_HOME / credentials overrides
182
+ * @returns True when signed in
183
+ */
184
+ export function isClaudeAccountSignedIn(account, location = {}) {
185
+ try {
186
+ if ((location.credentials ?? getHarnessCredentialsStore()).getClaudeAccountToken(account))
187
+ return true;
188
+ }
189
+ catch {
190
+ // fall through to the file check
191
+ }
192
+ return fs.existsSync(path.join(claudeAccountConfigDir(account, location.crewlyHome), HARNESS_CONSTANTS.CLAUDE.CREDENTIALS_FILE));
193
+ }
194
+ /**
195
+ * Every known account with its login state.
196
+ *
197
+ * @param location - CREWLY_HOME / credentials overrides
198
+ * @returns Accounts
199
+ */
200
+ export function describeClaudeAccounts(location = {}) {
201
+ return listClaudeAccounts(location).map((name) => ({
202
+ name,
203
+ target: runtimeTarget(RUNTIME_TYPES.CLAUDE_CODE, name),
204
+ signedIn: isClaudeAccountSignedIn(name, location),
205
+ configDir: claudeAccountConfigDir(name, location.crewlyHome),
206
+ }));
207
+ }
208
+ /**
209
+ * Env that runs Claude Code on an account: its config dir and its token.
210
+ * The default login's credentials are blanked so they cannot win over the
211
+ * account's (an empty value counts as unset for Claude Code).
212
+ *
213
+ * @param account - Account name
214
+ * @param location - CREWLY_HOME / credentials overrides
215
+ * @returns Env vars to merge over the session's env
216
+ *
217
+ * @example
218
+ * ```ts
219
+ * claudeAccountEnv('work'); // { CLAUDE_CONFIG_DIR: '~/.crewly/claude-accounts/work', CLAUDE_CODE_OAUTH_TOKEN: '…', ANTHROPIC_API_KEY: '' }
220
+ * ```
221
+ */
222
+ export function claudeAccountEnv(account, location = {}) {
223
+ let token = null;
224
+ try {
225
+ token = (location.credentials ?? getHarnessCredentialsStore()).getClaudeAccountToken(account);
226
+ }
227
+ catch {
228
+ token = null;
229
+ }
230
+ return {
231
+ [HARNESS_CONSTANTS.CLAUDE.CONFIG_DIR_ENV]: claudeAccountConfigDir(account, location.crewlyHome),
232
+ [HARNESS_CONSTANTS.CLAUDE.OAUTH_TOKEN_ENV]: token ?? '',
233
+ [HARNESS_CONSTANTS.CLAUDE.API_KEY_ENV]: '',
234
+ };
235
+ }
236
+ /**
237
+ * Create an account's config dir (idempotent). A new dir starts with the
238
+ * owner's own choices from the default login: Claude's `settings.json` and
239
+ * the first-run answers in `.claude.json` (onboarding done, permission mode
240
+ * accepted, theme), so an agent on the account does not stop at a first-run
241
+ * screen the owner already answered. No credential is copied.
242
+ *
243
+ * @param account - Account name (valid)
244
+ * @param options - CREWLY_HOME and the default login's location (tests)
245
+ * @returns The config dir
246
+ */
247
+ export function ensureClaudeAccountDir(account, options = {}) {
248
+ const dir = claudeAccountConfigDir(account, options.crewlyHome);
249
+ if (fs.existsSync(dir))
250
+ return dir;
251
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
252
+ const env = options.defaultEnv ?? process.env;
253
+ const home = options.homeDir ?? os.homedir();
254
+ const defaultConfigDir = env[HARNESS_CONSTANTS.CLAUDE.CONFIG_DIR_ENV];
255
+ const defaultDataDir = defaultConfigDir ? defaultConfigDir : path.join(home, HARNESS_CONSTANTS.CLAUDE.DATA_DIR);
256
+ const defaultConfigFile = path.join(defaultConfigDir ? defaultConfigDir : home, HARNESS_CONSTANTS.CLAUDE.CONFIG_FILE);
257
+ try {
258
+ const settings = path.join(defaultDataDir, ACC.SETTINGS_FILE);
259
+ if (fs.existsSync(settings))
260
+ fs.copyFileSync(settings, path.join(dir, ACC.SETTINGS_FILE));
261
+ }
262
+ catch {
263
+ // the account starts with Claude's defaults
264
+ }
265
+ try {
266
+ const parsed = JSON.parse(fs.readFileSync(defaultConfigFile, 'utf-8'));
267
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
268
+ const source = parsed;
269
+ const copied = {};
270
+ for (const key of ACC.COPIED_CONFIG_KEYS)
271
+ if (key in source)
272
+ copied[key] = source[key];
273
+ if (Object.keys(copied).length > 0) {
274
+ fs.writeFileSync(path.join(dir, HARNESS_CONSTANTS.CLAUDE.CONFIG_FILE), `${JSON.stringify(copied, null, 2)}\n`, {
275
+ mode: HARNESS_CONSTANTS.CREDENTIALS_FILE_MODE,
276
+ });
277
+ }
278
+ }
279
+ }
280
+ catch {
281
+ // no default config to copy from
282
+ }
283
+ return dir;
284
+ }
285
+ /**
286
+ * After an account's login: create its dir if needed and record Claude's
287
+ * first-run "onboarding done" answer there (as for the default login).
288
+ *
289
+ * @param account - Account name (valid)
290
+ * @param crewlyHome - CREWLY_HOME
291
+ */
292
+ export function prepareClaudeAccountAfterLogin(account, crewlyHome) {
293
+ const dir = ensureClaudeAccountDir(account, { crewlyHome });
294
+ prepareClaudeConfigForCrewlyLogin({}, { env: { [HARNESS_CONSTANTS.CLAUDE.CONFIG_DIR_ENV]: dir } });
295
+ }
296
+ /**
297
+ * Remove an account: its stored token and its config dir.
298
+ *
299
+ * @param account - Account name (valid)
300
+ * @param location - CREWLY_HOME / credentials store
301
+ */
302
+ export function removeClaudeAccount(account, location = {}) {
303
+ (location.credentials ?? getHarnessCredentialsStore()).clearClaudeAccount(account);
304
+ fs.rmSync(claudeAccountConfigDir(account, location.crewlyHome), { recursive: true, force: true });
305
+ }
306
+ //# sourceMappingURL=claude-accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-accounts.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/claude-accounts.ts"],"names":[],"mappings":"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"}
@@ -35,6 +35,14 @@ export interface HarnessCredentials {
35
35
  geminiApiKey?: string;
36
36
  updatedAt?: string;
37
37
  };
38
+ /**
39
+ * The owner's other Claude Code accounts (issue #942), keyed by account
40
+ * name. Each token goes only to sessions running on that account.
41
+ */
42
+ claudeAccounts?: Record<string, {
43
+ oauthToken?: string;
44
+ updatedAt?: string;
45
+ }>;
38
46
  }
39
47
  /** Which stored Claude credential is active. */
40
48
  export type StoredClaudeCredential = 'oauth_token' | 'api_key' | null;
@@ -116,6 +124,33 @@ export declare class HarnessCredentialsStore {
116
124
  * Forget the stored Claude credential.
117
125
  */
118
126
  clearClaude(): void;
127
+ /**
128
+ * Store the `setup-token` token of one of the owner's other Claude Code accounts.
129
+ *
130
+ * @param account - Account name (validated by the caller)
131
+ * @param token - Token printed by `claude setup-token`
132
+ * @throws Error when the token is empty
133
+ */
134
+ setClaudeAccountToken(account: string, token: string): void;
135
+ /**
136
+ * The stored token of one of the owner's other Claude Code accounts.
137
+ *
138
+ * @param account - Account name
139
+ * @returns The token, or null when none is stored
140
+ */
141
+ getClaudeAccountToken(account: string): string | null;
142
+ /**
143
+ * Account names with a stored token.
144
+ *
145
+ * @returns Names
146
+ */
147
+ listClaudeAccountsWithToken(): string[];
148
+ /**
149
+ * Forget the token of one of the owner's other Claude Code accounts.
150
+ *
151
+ * @param account - Account name
152
+ */
153
+ clearClaudeAccount(account: string): void;
119
154
  /**
120
155
  * Which Claude credential Crewly holds (never the value).
121
156
  *
@@ -1 +1 @@
1
- {"version":3,"file":"harness-credentials.store.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-credentials.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,EAAE;QACR,uFAAuF;QACvF,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,wDAAwD;QACxD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE;QACP,iFAAiF;QACjF,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE;QACb,2GAA2G;QAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACF;AAED,gDAAgD;AAChD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;AAYtE;;;;;GAKG;AACH,qBAAa,uBAAuB;IAKvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAJtC;;;OAGG;gBAC0B,QAAQ,CAAC,EAAE,MAAM,YAAA;IAE9C;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;OAIG;IACH,IAAI,IAAI,kBAAkB;IAS1B;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAe5C;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxC;;;;;OAKG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMrC;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMlC;;;;;OAKG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM7C;;;;OAIG;IACH,0BAA0B,IAAI,MAAM,GAAG,IAAI;IAK3C;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;;;OAIG;IACH,uBAAuB,IAAI,sBAAsB;IAOjD;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,OAAO,GAAE,MAAM,CAAC,UAAwB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAgB3G;AAKD;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAAM,CAAC,UAAwB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM1H"}
1
+ {"version":3,"file":"harness-credentials.store.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-credentials.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,mDAAmD;AACnD,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,EAAE;QACR,uFAAuF;QACvF,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,wDAAwD;QACxD,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE;QACP,iFAAiF;QACjF,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE;QACb,2GAA2G;QAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7E;AAED,gDAAgD;AAChD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,SAAS,GAAG,IAAI,CAAC;AAYtE;;;;;GAKG;AACH,qBAAa,uBAAuB;IAKvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAJtC;;;OAGG;gBAC0B,QAAQ,CAAC,EAAE,MAAM,YAAA;IAE9C;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;OAIG;IACH,IAAI,IAAI,kBAAkB;IAS1B;;;;;;;;OAQG;IACH,KAAK,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAe5C;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxC;;;;;OAKG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMrC;;;;;OAKG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAMlC;;;;;OAKG;IACH,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAM7C;;;;OAIG;IACH,0BAA0B,IAAI,MAAM,GAAG,IAAI;IAK3C;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;OAEG;IACH,WAAW,IAAI,IAAI;IAQnB;;;;;;OAMG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAS3D;;;;;OAKG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKrD;;;;OAIG;IACH,2BAA2B,IAAI,MAAM,EAAE;IAKvC;;;;OAIG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQzC;;;;OAIG;IACH,uBAAuB,IAAI,sBAAsB;IAOjD;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,OAAO,GAAE,MAAM,CAAC,UAAwB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAgB3G;AAKD;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,uBAAuB,CAEpE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAAM,CAAC,UAAwB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM1H"}
@@ -171,6 +171,54 @@ export class HarnessCredentialsStore {
171
171
  delete next.claude;
172
172
  this.write(next);
173
173
  }
174
+ /**
175
+ * Store the `setup-token` token of one of the owner's other Claude Code accounts.
176
+ *
177
+ * @param account - Account name (validated by the caller)
178
+ * @param token - Token printed by `claude setup-token`
179
+ * @throws Error when the token is empty
180
+ */
181
+ setClaudeAccountToken(account, token) {
182
+ if (!isNonEmptyString(token))
183
+ throw new Error('Claude OAuth token is empty');
184
+ const current = this.read();
185
+ this.write({
186
+ ...current,
187
+ claudeAccounts: { ...(current.claudeAccounts ?? {}), [account]: { oauthToken: token.trim(), updatedAt: new Date().toISOString() } },
188
+ });
189
+ }
190
+ /**
191
+ * The stored token of one of the owner's other Claude Code accounts.
192
+ *
193
+ * @param account - Account name
194
+ * @returns The token, or null when none is stored
195
+ */
196
+ getClaudeAccountToken(account) {
197
+ const token = this.read().claudeAccounts?.[account]?.oauthToken;
198
+ return isNonEmptyString(token) ? token : null;
199
+ }
200
+ /**
201
+ * Account names with a stored token.
202
+ *
203
+ * @returns Names
204
+ */
205
+ listClaudeAccountsWithToken() {
206
+ const accounts = this.read().claudeAccounts ?? {};
207
+ return Object.keys(accounts).filter((name) => isNonEmptyString(accounts[name]?.oauthToken));
208
+ }
209
+ /**
210
+ * Forget the token of one of the owner's other Claude Code accounts.
211
+ *
212
+ * @param account - Account name
213
+ */
214
+ clearClaudeAccount(account) {
215
+ const current = this.read();
216
+ if (!current.claudeAccounts?.[account])
217
+ return;
218
+ const accounts = { ...current.claudeAccounts };
219
+ delete accounts[account];
220
+ this.write({ ...current, claudeAccounts: accounts });
221
+ }
174
222
  /**
175
223
  * Which Claude credential Crewly holds (never the value).
176
224
  *
@@ -1 +1 @@
1
- {"version":3,"file":"harness-credentials.store.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-credentials.store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-credentials.store.js","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-credentials.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA+B3D;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,OAAO,uBAAuB;IAKN;IAJ7B;;;OAGG;IACH,YAA6B,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IAAG,CAAC;IAElD;;;;OAIG;IACH,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC5F,CAAC;IAED;;;;OAIG;IACH,IAAI;QACH,IAAI,CAAC;YACJ,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YACjF,OAAO,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;QACtH,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,WAA+B;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QACvD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAC1E,IAAI,CAAC;YACJ,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;gBAAS,CAAC;YACV,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAC3D,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,KAAa;QAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACvG,CAAC;IAED;;;;;OAKG;IACH,kBAAkB,CAAC,GAAW;QAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1G,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,GAAW;QAC1B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACtG,CAAC;IAED;;;;;OAKG;IACH,0BAA0B,CAAC,GAAW;QACrC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED;;;;OAIG;IACH,0BAA0B;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;QAClD,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,gBAAgB;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,WAAW;YAAE,OAAO;QACjC,MAAM,IAAI,GAAuB,EAAE,GAAG,OAAO,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,WAAW,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,WAAW;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO;QAC5B,MAAM,IAAI,GAAuB,EAAE,GAAG,OAAO,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB,CAAC,OAAe,EAAE,KAAa;QACnD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC;YACV,GAAG,OAAO;YACV,cAAc,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE;SACnI,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,qBAAqB,CAAC,OAAe;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;QAChE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,2BAA2B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC;QAClD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAe;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC;YAAE,OAAO;QAC/C,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;QAC/C,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACH,uBAAuB;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC;QAClC,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC;YAAE,OAAO,aAAa,CAAC;QAC/D,IAAI,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC;YAAE,OAAO,SAAS,CAAC;QAChE,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,UAA6B,OAAO,CAAC,GAAG,EAAE,WAAoB;QACjF,MAAM,GAAG,GAA2B,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QACnE,CAAC;aAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC;QACpE,CAAC;QACD,IAAI,WAAW,KAAK,aAAa,CAAC,eAAe,EAAE,CAAC;YACnD,GAAG,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,GAAG,qBAAqB,CAAC,yBAAyB,CAAC;YACrG,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC;YAC7C,IAAI,gBAAgB,CAAC,GAAG,CAAC;gBAAE,GAAG,CAAC,qBAAqB,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;QACzE,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;AAED,4EAA4E;AAC5E,MAAM,YAAY,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAEnD;;;;GAIG;AACH,MAAM,UAAU,0BAA0B;IACzC,OAAO,YAAY,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAA6B,OAAO,CAAC,GAAG,EAAE,WAAoB;IACjG,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACjD,CAAC;AACF,CAAC"}
@@ -43,6 +43,12 @@
43
43
  * 「重新登录 claude」 / "relogin codex" / the orchestrator's `harness-login`
44
44
  * skill) start the broker at once, even while logged in (account switch).
45
45
  *
46
+ * `login claude <name>` signs in one of the owner's OTHER Claude Code
47
+ * accounts (issue #942, claude-accounts.ts): the same link-and-code flow,
48
+ * run with that account's config dir; the token is kept for that account
49
+ * only, no agent is restarted, and the runtime fallback is told the account
50
+ * is usable ({@link HarnessReloginService.setAccountLoginHandler}).
51
+ *
46
52
  * Secrets: Claude's code is passed to the broker and never stored, logged
47
53
  * or echoed; DMs are built from {@link LoginSession} snapshots, which never
48
54
  * contain a token, and the screen text is redacted again.
@@ -110,13 +116,17 @@ export interface OwnerLoginOptions {
110
116
  /** Conversation to answer in (null = this machine's DM with the owner) */
111
117
  replyTarget?: ReloginReplyTarget | null;
112
118
  /** Who relayed the request, for logs */
113
- requestedBy: 'owner_dm' | 'orchestrator';
119
+ requestedBy: 'owner_dm' | 'orchestrator' | 'dashboard';
120
+ /** One of the owner's other Claude Code accounts to sign in (issue #942); absent = the default login */
121
+ account?: string;
114
122
  }
115
123
  /** An owner-requested login that was started. */
116
124
  export interface OwnerLoginStarted {
117
125
  /** `restarted`: a flow for the harness was running and was started over */
118
126
  status: 'started' | 'restarted';
119
127
  harnessId: HarnessId;
128
+ /** The other Claude Code account being signed in, when it is one */
129
+ account?: string;
120
130
  /** Whether the owner can be DM'd right now (false = Slack is down) */
121
131
  dmAvailable: boolean;
122
132
  }
@@ -183,6 +193,10 @@ export interface HarnessReloginDeps {
183
193
  * waited for them (owner-message watchdog). Returns how many messages.
184
194
  */
185
195
  onLoginRestored?: (harnessId: HarnessId, resumed: readonly string[]) => Promise<number> | number;
196
+ /** After one of the owner's other Claude Code accounts was signed in (the runtime fallback) */
197
+ onAccountLogin?: (account: string) => Promise<void> | void;
198
+ /** The owner's existing other Claude Code accounts (default: claude-accounts.ts) */
199
+ listClaudeAccounts?: () => string[];
186
200
  /** This machine's name, for the owner ("iriss-air.lan") */
187
201
  machineName?: () => string;
188
202
  /** Persisted notice / backoff state */
@@ -262,6 +276,8 @@ export interface LoginDmWording {
262
276
  switchAccount?: boolean;
263
277
  /** This machine's name */
264
278
  machine?: string;
279
+ /** One of the owner's other Claude Code accounts this login is for */
280
+ account?: string | null;
265
281
  }
266
282
  /**
267
283
  * The first "signed out" DM, a re-reminder, or the note after a link expired unused.
@@ -329,6 +345,22 @@ export declare function formatOwnerSuccessDm(harnessId: HarnessId, result: {
329
345
  resumed: string[];
330
346
  failed: string[];
331
347
  }, redelivered?: number): string;
348
+ /**
349
+ * DM after one of the owner's other Claude Code accounts was signed in.
350
+ *
351
+ * @param account - Account name
352
+ * @param machine - This machine's name
353
+ * @returns Slack mrkdwn text
354
+ */
355
+ export declare function formatAccountSuccessDm(account: string, machine: string): string;
356
+ /**
357
+ * DM after the link for one of the owner's other Claude Code accounts expired unused.
358
+ *
359
+ * @param account - Account name
360
+ * @param machine - This machine's name
361
+ * @returns Slack mrkdwn text
362
+ */
363
+ export declare function formatAccountLinkExpiredDm(account: string, machine: string): string;
332
364
  /**
333
365
  * Reply to a login request that named no harness Crewly can log in.
334
366
  *
@@ -371,12 +403,15 @@ export declare class HarnessReloginService {
371
403
  private listAgents;
372
404
  private sessionNeedsLogin;
373
405
  private onLoginRestored;
406
+ private onAccountLogin;
407
+ private readonly listClaudeAccounts;
374
408
  private readonly machineName;
375
409
  private readonly state;
376
410
  private notifier;
377
411
  private resumer;
378
412
  private readonly now;
379
413
  private readonly logger;
414
+ /** Flows by {@link flowKey} (harness, or harness@account) */
380
415
  private readonly flows;
381
416
  /** Harnesses whose expiry is being confirmed → sessions reported meanwhile */
382
417
  private readonly confirming;
@@ -419,6 +454,12 @@ export declare class HarnessReloginService {
419
454
  * @param handler - Handler, or null
420
455
  */
421
456
  setLoginRestoredHandler(handler: HarnessReloginDeps['onLoginRestored'] | null): void;
457
+ /**
458
+ * Set what learns that one of the owner's other Claude Code accounts was signed in.
459
+ *
460
+ * @param handler - Handler (the runtime fallback), or null
461
+ */
462
+ setAccountLoginHandler(handler: HarnessReloginDeps['onAccountLogin'] | null): void;
422
463
  /**
423
464
  * Set how the configured agents (running or not) are listed.
424
465
  *
@@ -459,6 +500,12 @@ export declare class HarnessReloginService {
459
500
  * @returns True when consumed; the caller must then NOT pass it on as a chat message
460
501
  */
461
502
  handleOwnerReply(text: string, target?: ReloginReplyTarget | null, scope?: OwnerReplyScope): boolean;
503
+ /**
504
+ * The owner's existing other Claude Code accounts (for "login claude work").
505
+ *
506
+ * @returns Names; empty when they cannot be read
507
+ */
508
+ private knownClaudeAccounts;
462
509
  /**
463
510
  * Start a login the owner asked for, through the broker: forced (runs
464
511
  * even when the harness is still logged in — the owner may be switching
@@ -654,6 +701,28 @@ export declare class HarnessReloginService {
654
701
  * @param notify - DM the owner (false for the silent API-key path)
655
702
  */
656
703
  private succeed;
704
+ /**
705
+ * One of the owner's other Claude Code accounts is signed in: no agent is
706
+ * restarted (none runs on it until the fallback moves one there); the
707
+ * runtime fallback is told, and the owner gets one line.
708
+ *
709
+ * @param flow - The account's flow
710
+ * @param account - Account name
711
+ */
712
+ private succeedAccount;
713
+ /**
714
+ * Tell the runtime fallback that an account was signed in.
715
+ *
716
+ * @param account - Account name
717
+ */
718
+ private tellAccountLogin;
719
+ /**
720
+ * A flow's key in the map.
721
+ *
722
+ * @param flow - The flow
723
+ * @returns {@link flowKey} of its harness and account
724
+ */
725
+ private keyOf;
657
726
  /**
658
727
  * Sessions to restart after a login: the ones whose output matched plus
659
728
  * every live session of the harness (they all hold the dead login).
@@ -1 +1 @@
1
- {"version":3,"file":"harness-relogin.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-relogin.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-relogin.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/harness/harness-relogin.service.ts"],"names":[],"mappings":"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"}