crewly 1.20.191 → 1.20.193
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/config/constants.ts +11 -0
- package/config/hooks/subagent-guard/subagent.sh +113 -0
- package/config/roles/architect/prompt.md +1 -1
- package/config/roles/auditor/prompt.md +1 -1
- package/config/roles/backend-developer/prompt.md +1 -1
- package/config/roles/content-strategist/prompt.md +2 -2
- package/config/roles/designer/prompt.md +1 -1
- package/config/roles/developer/prompt.md +2 -2
- package/config/roles/frontend-developer/prompt.md +1 -1
- package/config/roles/fullstack-dev/prompt.md +1 -1
- package/config/roles/generalist/prompt.md +1 -1
- package/config/roles/ops/prompt.md +1 -1
- package/config/roles/orchestrator/prompt.md +2 -2
- package/config/roles/product-manager/prompt.md +1 -1
- package/config/roles/qa/prompt.md +1 -1
- package/config/roles/qa-engineer/prompt.md +1 -1
- package/config/roles/researcher/prompt.md +1 -1
- package/config/roles/sales/prompt.md +1 -1
- package/config/roles/support/prompt.md +1 -1
- package/config/roles/team-leader/prompt.md +1 -1
- package/config/roles/tpm/prompt.md +1 -1
- package/config/roles/ux-designer/prompt.md +1 -1
- package/config/skills/_common/complete-body-shape.test.sh +17 -0
- package/config/skills/agent/core/complete-task/SKILL.md +27 -4
- package/config/skills/agent/core/complete-task/execute.sh +23 -3
- package/config/skills/agent/core/complete-task/execute.test.sh +34 -0
- package/config/skills/agent/core/handoff-task/execute.sh +1 -1
- package/config/skills/agent/core/report-status/SKILL.md +27 -4
- package/config/skills/agent/core/report-status/execute.sh +104 -4
- package/config/skills/agent/core/send-message/SKILL.md +6 -0
- package/config/skills/agent/core/send-message/execute.sh +17 -1
- package/config/skills/agent/core/send-message/execute.test.sh +81 -0
- package/config/skills/agent/core/todo-add/SKILL.md +16 -2
- package/config/skills/agent/core/todo-add/execute.sh +21 -5
- package/config/skills/agent/core/todo-add/execute.test.sh +14 -0
- package/config/skills/agent/core/todo-tasks/SKILL.md +4 -3
- package/config/skills/agent/core/todo-update/SKILL.md +13 -2
- package/config/skills/agent/core/todo-update/execute.sh +41 -3
- package/config/skills/agent/core/todo-update/execute.test.sh +7 -0
- package/config/skills/marketplace-registry.ts +4 -4
- package/config/skills/orchestrator/complete-task/SKILL.md +13 -6
- package/config/skills/orchestrator/complete-task/execute.sh +22 -3
- package/config/skills/orchestrator/delegate-task/execute.sh +2 -2
- package/config/skills/orchestrator/harness-login/SKILL.md +9 -1
- package/config/skills/orchestrator/harness-login/execute.sh +12 -4
- package/config/skills/orchestrator/harness-login/execute.test.sh +7 -0
- package/config/skills/team-leader/delegate-task/execute.sh +1 -1
- package/config/skills/team-leader/verify-output/SKILL.md +18 -1
- package/config/skills/team-leader/verify-output/execute.sh +28 -0
- package/config/skills/team-leader/verify-output/execute.test.sh +27 -0
- package/dist/backend/backend/src/constants.d.ts +181 -2
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +183 -2
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts +6 -0
- package/dist/backend/backend/src/controllers/canva/canva.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.controller.js +15 -4
- package/dist/backend/backend/src/controllers/canva/canva.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/canva/canva.routes.js +3 -1
- package/dist/backend/backend/src/controllers/canva/canva.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.d.ts +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.js +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js +4 -1
- package/dist/backend/backend/src/controllers/cloud/cloud.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts +4 -0
- package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/connector/connector.controller.js +32 -3
- package/dist/backend/backend/src/controllers/connector/connector.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts +41 -0
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js +75 -0
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js.map +1 -0
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts +6 -0
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.controller.js +21 -2
- package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.routes.js +3 -1
- package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js +22 -3
- package/dist/backend/backend/src/controllers/harness/owner-login.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts +19 -2
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js +39 -6
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js +3 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts +9 -0
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +71 -2
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/people/people.routes.d.ts +25 -0
- package/dist/backend/backend/src/controllers/people/people.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/people/people.routes.js +90 -0
- package/dist/backend/backend/src/controllers/people/people.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts +2 -0
- package/dist/backend/backend/src/controllers/request-types.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/security/approvals.controller.d.ts +26 -0
- package/dist/backend/backend/src/controllers/security/approvals.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/security/approvals.controller.js +73 -0
- package/dist/backend/backend/src/controllers/security/approvals.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.js +9 -0
- package/dist/backend/backend/src/controllers/session/session.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts +22 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +143 -3
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/usage.controller.d.ts +3 -3
- package/dist/backend/backend/src/controllers/system/usage.controller.js +3 -3
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +25 -3
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +125 -19
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/team/team.controller.js +14 -0
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +44 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +3 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
- package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +13 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +28 -3
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js +14 -3
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
- package/dist/backend/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +49 -5
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts +8 -0
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-approval.service.js +10 -0
- package/dist/backend/backend/src/services/browser/browser-approval.service.js.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.d.ts +17 -4
- package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.js +49 -17
- package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +55 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +80 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.client.d.ts +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.client.js +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.service.d.ts +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-device-pairing.service.js +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +17 -2
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +30 -6
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +38 -2
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +63 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +204 -56
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +9 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +11 -0
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +3 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts +25 -2
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js +48 -7
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/claude-accounts.d.ts +207 -0
- package/dist/backend/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
- package/dist/backend/backend/src/services/harness/claude-accounts.js +306 -0
- package/dist/backend/backend/src/services/harness/claude-accounts.js.map +1 -0
- package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
- package/dist/backend/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-credentials.store.js +48 -0
- package/dist/backend/backend/src/services/harness/harness-credentials.store.js.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js +156 -19
- package/dist/backend/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/harness.types.d.ts +2 -0
- package/dist/backend/backend/src/services/harness/harness.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/harness.types.js.map +1 -1
- package/dist/backend/backend/src/services/harness/login-broker.service.d.ts +19 -4
- package/dist/backend/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/login-broker.service.js +46 -7
- package/dist/backend/backend/src/services/harness/login-broker.service.js.map +1 -1
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts +18 -2
- package/dist/backend/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
- package/dist/backend/backend/src/services/harness/owner-login-request.js +31 -7
- package/dist/backend/backend/src/services/harness/owner-login-request.js.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
- package/dist/backend/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js +29 -0
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.d.ts +54 -0
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.d.ts.map +1 -0
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.js +65 -0
- package/dist/backend/backend/src/services/messaging/spend-capped-delivery.js.map +1 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
- package/dist/backend/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts +87 -5
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js +151 -12
- package/dist/backend/backend/src/services/microsoft/microsoft-todo.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts +17 -4
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +45 -17
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts +118 -2
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js +213 -45
- package/dist/backend/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +53 -1
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js +137 -60
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/model-pricing.d.ts +2 -1
- package/dist/backend/backend/src/services/monitoring/model-pricing.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/model-pricing.js +13 -0
- package/dist/backend/backend/src/services/monitoring/model-pricing.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +9 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +32 -3
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts +151 -0
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/acting-for.service.js +224 -0
- package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.d.ts +89 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.js +113 -0
- package/dist/backend/backend/src/services/people/dedicated-agent.js.map +1 -0
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts +79 -0
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/grant-sharing.js +135 -0
- package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -0
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts +181 -0
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/people/people-directory.service.js +317 -0
- package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
- package/dist/backend/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts +8 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js +16 -2
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +60 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +140 -8
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.store.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +12 -2
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts +7 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js +18 -3
- package/dist/backend/backend/src/services/runtime-fallback/runtime-usage-probe.js.map +1 -1
- package/dist/backend/backend/src/services/security/approval-activity.service.d.ts +203 -0
- package/dist/backend/backend/src/services/security/approval-activity.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/security/approval-activity.service.js +279 -0
- package/dist/backend/backend/src/services/security/approval-activity.service.js.map +1 -0
- package/dist/backend/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill.service.js +14 -3
- package/dist/backend/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js +3 -0
- package/dist/backend/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts +22 -0
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.js +50 -0
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +54 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +260 -20
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap-command.js +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap-command.js.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts +48 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/spend/spend-cap.service.js +85 -2
- package/dist/backend/backend/src/services/spend/spend-cap.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts +105 -0
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js +238 -0
- package/dist/backend/backend/src/services/task-pool/completion-evidence.service.js.map +1 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +4 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts +101 -14
- package/dist/backend/backend/src/services/usage/usage-stats.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/usage/usage-stats.service.js +183 -61
- package/dist/backend/backend/src/services/usage/usage-stats.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +2 -0
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +9 -0
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +10 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +45 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +12 -1
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.d.ts +5 -0
- package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts +77 -0
- package/dist/backend/backend/src/types/v2/completion-evidence.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/v2/completion-evidence.types.js +119 -0
- package/dist/backend/backend/src/types/v2/completion-evidence.types.js.map +1 -0
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +13 -0
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +11 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +11 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +181 -2
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +183 -2
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +13 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +28 -3
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts +3 -2
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js +14 -3
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts +28 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js +48 -4
- package/dist/cli/backend/src/services/agent/fresh-task-conversation.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +2 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +17 -4
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +14 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +38 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +34 -0
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +49 -5
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +8 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +55 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +80 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-device-pairing.client.d.ts +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-device-pairing.client.js +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts +74 -4
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +204 -56
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts +19 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +9 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision.service.js +11 -0
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/claude-accounts.d.ts +207 -0
- package/dist/cli/backend/src/services/harness/claude-accounts.d.ts.map +1 -0
- package/dist/cli/backend/src/services/harness/claude-accounts.js +306 -0
- package/dist/cli/backend/src/services/harness/claude-accounts.js.map +1 -0
- package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts +35 -0
- package/dist/cli/backend/src/services/harness/harness-credentials.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-credentials.store.js +48 -0
- package/dist/cli/backend/src/services/harness/harness-credentials.store.js.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts +70 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js +156 -19
- package/dist/cli/backend/src/services/harness/harness-relogin.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/harness.types.d.ts +2 -0
- package/dist/cli/backend/src/services/harness/harness.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/harness.types.js.map +1 -1
- package/dist/cli/backend/src/services/harness/login-broker.service.d.ts +19 -4
- package/dist/cli/backend/src/services/harness/login-broker.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/login-broker.service.js +46 -7
- package/dist/cli/backend/src/services/harness/login-broker.service.js.map +1 -1
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts +18 -2
- package/dist/cli/backend/src/services/harness/owner-login-request.d.ts.map +1 -1
- package/dist/cli/backend/src/services/harness/owner-login-request.js +31 -7
- package/dist/cli/backend/src/services/harness/owner-login-request.js.map +1 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts +21 -0
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js +39 -1
- package/dist/cli/backend/src/services/marketplace/marketplace-installer.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +11 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +29 -0
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +5 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +13 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts +197 -0
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js +455 -0
- package/dist/cli/backend/src/services/monitoring/claude-session-tokens.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts +2 -1
- package/dist/cli/backend/src/services/monitoring/model-pricing.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/model-pricing.js +13 -0
- package/dist/cli/backend/src/services/monitoring/model-pricing.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +9 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +32 -3
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts +151 -0
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/people/acting-for.service.js +224 -0
- package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.d.ts +89 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.d.ts.map +1 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.js +113 -0
- package/dist/cli/backend/src/services/people/dedicated-agent.js.map +1 -0
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts +181 -0
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/people/people-directory.service.js +317 -0
- package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts +29 -1
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.d.ts.map +1 -1
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js +40 -0
- package/dist/cli/backend/src/services/runtime-fallback/effective-runtime.js.map +1 -1
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +20 -7
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js +24 -7
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
- package/dist/cli/backend/src/services/skill/skill.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/skill/skill.service.js +14 -3
- package/dist/cli/backend/src/services/skill/skill.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js +3 -0
- package/dist/cli/backend/src/services/slack/slack-agent-dm.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts +22 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.js +50 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +10 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +51 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +54 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +260 -20
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +4 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +12 -1
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.d.ts +5 -0
- package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +13 -0
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.d.ts +21 -0
- package/dist/cli/cli/src/utils/marketplace.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/marketplace.js +35 -1
- package/dist/cli/cli/src/utils/marketplace.js.map +1 -1
- package/dist/cli/config/constants.d.ts +11 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +11 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/skills/marketplace-registry.d.ts +4 -4
- package/dist/cli/config/skills/marketplace-registry.js +4 -4
- package/frontend/dist/assets/index-465d1f8f.js +4955 -0
- package/frontend/dist/assets/index-5e967795.css +42 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/packages/crewly-agent/src/runtime/tool-registry.test.ts +45 -0
- package/packages/crewly-agent/src/runtime/tool-registry.ts +40 -5
- package/packages/crewly-agent/src/test/isolated-home.test.ts +24 -0
- package/frontend/dist/assets/index-20a67829.css +0 -42
- package/frontend/dist/assets/index-49f50b45.js +0 -4952
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* Reads per-turn token usage from Claude Code's session JSONL files.
|
|
5
5
|
* Claude Code stores conversations at:
|
|
6
6
|
* ~/.claude/projects/{path-slug}/{sessionId}.jsonl
|
|
7
|
+
* or, for a session that runs on another of the owner's Claude Code accounts
|
|
8
|
+
* (issue #942, `CLAUDE_CONFIG_DIR` set to the account's config dir):
|
|
9
|
+
* <account config dir>/projects/{path-slug}/{sessionId}.jsonl
|
|
7
10
|
*
|
|
8
11
|
* Each assistant message includes an API `usage` object with exact
|
|
9
12
|
* token counts (input_tokens, output_tokens, cache tokens).
|
|
@@ -13,7 +16,7 @@
|
|
|
13
16
|
*
|
|
14
17
|
* @module services/monitoring/claude-session-tokens
|
|
15
18
|
*/
|
|
16
|
-
import { promises as fs } from 'fs';
|
|
19
|
+
import { promises as fs, realpathSync } from 'fs';
|
|
17
20
|
import * as path from 'path';
|
|
18
21
|
import * as os from 'os';
|
|
19
22
|
import { LoggerService } from '../core/logger.service.js';
|
|
@@ -39,6 +42,12 @@ function calculateClaudeCost(inputTokens, outputTokens, cacheReadTokens, cacheCr
|
|
|
39
42
|
cacheReadTokens * rates.cacheRead +
|
|
40
43
|
cacheCreateTokens * rates.cacheWrite);
|
|
41
44
|
}
|
|
45
|
+
/** Claude Code's per-user state directory, under the home directory. */
|
|
46
|
+
const CLAUDE_DIR_NAME = '.claude';
|
|
47
|
+
/** Subdirectory of {@link CLAUDE_DIR_NAME} holding one directory per project slug. */
|
|
48
|
+
const CLAUDE_PROJECTS_DIR_NAME = 'projects';
|
|
49
|
+
/** File extension of Claude Code conversation transcripts. */
|
|
50
|
+
const JSONL_EXTENSION = '.jsonl';
|
|
42
51
|
const logger = LoggerService.getInstance().createComponentLogger('ClaudeSessionTokens');
|
|
43
52
|
/**
|
|
44
53
|
* Encodes an absolute path into the slug format used by Claude Code
|
|
@@ -52,44 +61,182 @@ export function encodeProjectSlug(projectPath) {
|
|
|
52
61
|
return projectPath.replace(/[/.]/g, '-');
|
|
53
62
|
}
|
|
54
63
|
/**
|
|
55
|
-
*
|
|
64
|
+
* Builds the ordered, de-duplicated list of Claude Code project slugs that may
|
|
65
|
+
* hold transcripts for a working directory.
|
|
56
66
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
67
|
+
* Claude Code names its project directory after the *resolved* cwd (it sees
|
|
68
|
+
* `process.cwd()`, which the OS has already run through any symlinks). On
|
|
69
|
+
* macOS `/tmp` and `/var` are symlinks into `/private`, so an agent launched
|
|
70
|
+
* in `/tmp/proj` writes to `-private-tmp-proj`, not `-tmp-proj` (#938).
|
|
71
|
+
*
|
|
72
|
+
* The realpath slug comes first because that is where Claude Code writes. The
|
|
73
|
+
* raw slug is kept as a fallback for a cwd that cannot be resolved (deleted,
|
|
74
|
+
* permission denied) and for transcripts written before a directory was moved
|
|
75
|
+
* behind a symlink. Resolution failures never throw.
|
|
76
|
+
*
|
|
77
|
+
* @param projectPath - The agent's working directory, as Crewly recorded it
|
|
78
|
+
* @returns Slugs to try, most likely first; never empty
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* await resolveProjectSlugCandidates('/tmp/proj');
|
|
83
|
+
* // macOS: ['-private-tmp-proj', '-tmp-proj']; Linux: ['-tmp-proj']
|
|
84
|
+
* ```
|
|
60
85
|
*/
|
|
61
|
-
export function
|
|
62
|
-
const
|
|
63
|
-
|
|
86
|
+
export async function resolveProjectSlugCandidates(projectPath) {
|
|
87
|
+
const rawSlug = encodeProjectSlug(projectPath);
|
|
88
|
+
let resolvedSlug = null;
|
|
89
|
+
try {
|
|
90
|
+
resolvedSlug = encodeProjectSlug(await fs.realpath(projectPath));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Nonexistent or unreadable cwd — the raw slug is the only guess left.
|
|
94
|
+
}
|
|
95
|
+
return resolvedSlug && resolvedSlug !== rawSlug ? [resolvedSlug, rawSlug] : [rawSlug];
|
|
64
96
|
}
|
|
65
97
|
/**
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
98
|
+
* Synchronous {@link resolveProjectSlugCandidates}, for callers that cannot
|
|
99
|
+
* await (launch-time resume checks).
|
|
100
|
+
*
|
|
101
|
+
* The raw slug is taken from the absolute (`path.resolve`d) cwd.
|
|
69
102
|
*
|
|
70
103
|
* @param projectPath - The agent's working directory
|
|
71
|
-
* @returns
|
|
104
|
+
* @returns Slugs to try, realpath slug first; never empty
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* resolveProjectSlugCandidatesSync('/tmp/proj');
|
|
109
|
+
* // macOS: ['-private-tmp-proj', '-tmp-proj']
|
|
110
|
+
* ```
|
|
72
111
|
*/
|
|
73
|
-
export
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
let
|
|
112
|
+
export function resolveProjectSlugCandidatesSync(projectPath) {
|
|
113
|
+
const absolute = path.resolve(projectPath);
|
|
114
|
+
const rawSlug = encodeProjectSlug(absolute);
|
|
115
|
+
let resolvedSlug = null;
|
|
77
116
|
try {
|
|
78
|
-
|
|
117
|
+
resolvedSlug = encodeProjectSlug(realpathSync(absolute));
|
|
79
118
|
}
|
|
80
119
|
catch {
|
|
81
|
-
|
|
120
|
+
// Nonexistent or unreadable cwd — the raw slug is the only guess left.
|
|
82
121
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
122
|
+
return resolvedSlug && resolvedSlug !== rawSlug ? [resolvedSlug, rawSlug] : [rawSlug];
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* The `projects/` directories Claude Code may have written a session's
|
|
126
|
+
* transcripts to, most likely first.
|
|
127
|
+
*
|
|
128
|
+
* A session on another of the owner's Claude Code accounts (issue #942) runs
|
|
129
|
+
* with `CLAUDE_CONFIG_DIR` set to that account's config dir, so its
|
|
130
|
+
* transcripts land in `<config dir>/projects/`. The default login's
|
|
131
|
+
* `~/.claude/projects/` is always included last: a session that switched
|
|
132
|
+
* accounts during the day has transcripts in both.
|
|
133
|
+
*
|
|
134
|
+
* @param homeDir - Home directory that contains `.claude/`
|
|
135
|
+
* @param configDirs - Claude config dirs of the session's accounts (current account first)
|
|
136
|
+
* @returns Absolute `projects/` directory paths, de-duplicated
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* claudeProjectsRoots('/Users/a', ['/Users/a/.crewly/claude-accounts/work']);
|
|
141
|
+
* // ['/Users/a/.crewly/claude-accounts/work/projects', '/Users/a/.claude/projects']
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export function claudeProjectsRoots(homeDir, configDirs = []) {
|
|
145
|
+
const roots = [
|
|
146
|
+
...configDirs.map((dir) => path.join(dir, CLAUDE_PROJECTS_DIR_NAME)),
|
|
147
|
+
path.join(homeDir, CLAUDE_DIR_NAME, CLAUDE_PROJECTS_DIR_NAME),
|
|
148
|
+
];
|
|
149
|
+
return [...new Set(roots)];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Lists the Claude Code project directories that may hold transcripts for a
|
|
153
|
+
* working directory: every root of {@link claudeProjectsRoots}, each with the
|
|
154
|
+
* slugs of {@link resolveProjectSlugCandidates}. The directories are not
|
|
155
|
+
* required to exist.
|
|
156
|
+
*
|
|
157
|
+
* @param projectPath - The agent's working directory
|
|
158
|
+
* @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
|
|
159
|
+
* @param configDirs - Config dirs of the owner's other Claude Code accounts the session runs on (searched first)
|
|
160
|
+
* @returns Absolute candidate directory paths, most likely first
|
|
161
|
+
*/
|
|
162
|
+
export async function resolveProjectDirCandidates(projectPath, homeDir = os.homedir(), configDirs = []) {
|
|
163
|
+
const slugs = await resolveProjectSlugCandidates(projectPath);
|
|
164
|
+
return claudeProjectsRoots(homeDir, configDirs).flatMap((root) => slugs.map((slug) => path.join(root, slug)));
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Locates a known conversation's transcript across all candidate project
|
|
168
|
+
* directories, returning the first one that exists.
|
|
169
|
+
*
|
|
170
|
+
* @param projectPath - The agent's working directory
|
|
171
|
+
* @param sessionId - Claude Code conversation UUID
|
|
172
|
+
* @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
|
|
173
|
+
* @param configDirs - Config dirs of the owner's other Claude Code accounts (searched first)
|
|
174
|
+
* @returns Absolute path to the existing .jsonl file, or null if none exists
|
|
175
|
+
*/
|
|
176
|
+
export async function findSessionJsonlPath(projectPath, sessionId, homeDir = os.homedir(), configDirs = []) {
|
|
177
|
+
for (const dir of await resolveProjectDirCandidates(projectPath, homeDir, configDirs)) {
|
|
178
|
+
const candidate = path.join(dir, `${sessionId}${JSONL_EXTENSION}`);
|
|
89
179
|
try {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
180
|
+
await fs.access(candidate);
|
|
181
|
+
return candidate;
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Lists every transcript file across all candidate project directories.
|
|
191
|
+
*
|
|
192
|
+
* Merges rather than stopping at the first existing directory: if both the
|
|
193
|
+
* resolved and the raw slug directories exist, the live conversation may be in
|
|
194
|
+
* either, and picking a directory by existence alone could lock onto a stale
|
|
195
|
+
* one. A file name seen in an earlier (more likely) directory shadows the same
|
|
196
|
+
* name in a later one, so a conversation is never listed twice.
|
|
197
|
+
*
|
|
198
|
+
* @param projectPath - The agent's working directory
|
|
199
|
+
* @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
|
|
200
|
+
* @param configDirs - Config dirs of the owner's other Claude Code accounts (searched first)
|
|
201
|
+
* @returns Absolute paths of all .jsonl files found, grouped by candidate directory order
|
|
202
|
+
*/
|
|
203
|
+
export async function listProjectTranscripts(projectPath, homeDir = os.homedir(), configDirs = []) {
|
|
204
|
+
const seen = new Set();
|
|
205
|
+
const result = [];
|
|
206
|
+
for (const dir of await resolveProjectDirCandidates(projectPath, homeDir, configDirs)) {
|
|
207
|
+
let files;
|
|
208
|
+
try {
|
|
209
|
+
files = await fs.readdir(dir);
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
for (const file of files) {
|
|
215
|
+
if (!file.endsWith(JSONL_EXTENSION) || seen.has(file))
|
|
216
|
+
continue;
|
|
217
|
+
seen.add(file);
|
|
218
|
+
result.push(path.join(dir, file));
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Finds the most recently modified transcript across all candidate project
|
|
225
|
+
* directories for a working directory.
|
|
226
|
+
*
|
|
227
|
+
* @param projectPath - The agent's working directory
|
|
228
|
+
* @param homeDir - Home directory that contains `.claude/` (defaults to the OS home)
|
|
229
|
+
* @param configDirs - Config dirs of the owner's other Claude Code accounts (searched too)
|
|
230
|
+
* @returns Absolute path of the newest .jsonl file, or null if there is none
|
|
231
|
+
*/
|
|
232
|
+
export async function findLatestSessionFile(projectPath, homeDir = os.homedir(), configDirs = []) {
|
|
233
|
+
let latestFile = null;
|
|
234
|
+
let latestMtime = -1;
|
|
235
|
+
for (const file of await listProjectTranscripts(projectPath, homeDir, configDirs)) {
|
|
236
|
+
try {
|
|
237
|
+
const { mtimeMs } = await fs.stat(file);
|
|
238
|
+
if (mtimeMs > latestMtime) {
|
|
239
|
+
latestMtime = mtimeMs;
|
|
93
240
|
latestFile = file;
|
|
94
241
|
}
|
|
95
242
|
}
|
|
@@ -97,7 +244,33 @@ export async function findLatestSessionId(projectPath) {
|
|
|
97
244
|
continue;
|
|
98
245
|
}
|
|
99
246
|
}
|
|
100
|
-
return latestFile
|
|
247
|
+
return latestFile;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Returns the path to a Claude Code session JSONL file under the *raw* cwd
|
|
251
|
+
* slug. Does not resolve symlinks — prefer {@link findSessionJsonlPath},
|
|
252
|
+
* which also checks the realpath slug Claude Code actually writes to.
|
|
253
|
+
*
|
|
254
|
+
* @param projectPath - The agent's working directory
|
|
255
|
+
* @param sessionId - Claude Code conversation UUID
|
|
256
|
+
* @returns Absolute path to the .jsonl file
|
|
257
|
+
*/
|
|
258
|
+
export function getSessionJsonlPath(projectPath, sessionId) {
|
|
259
|
+
const slug = encodeProjectSlug(projectPath);
|
|
260
|
+
return path.join(os.homedir(), CLAUDE_DIR_NAME, CLAUDE_PROJECTS_DIR_NAME, slug, `${sessionId}${JSONL_EXTENSION}`);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Finds the most recently modified .jsonl session file in a Claude Code
|
|
264
|
+
* project directory. Used as a fallback when the session ID is not known
|
|
265
|
+
* (e.g. the orchestrator session, which may not have been persisted yet).
|
|
266
|
+
* Checks both the realpath and the raw cwd slug directories.
|
|
267
|
+
*
|
|
268
|
+
* @param projectPath - The agent's working directory
|
|
269
|
+
* @returns The session UUID, or null if no JSONL files found
|
|
270
|
+
*/
|
|
271
|
+
export async function findLatestSessionId(projectPath) {
|
|
272
|
+
const latest = await findLatestSessionFile(projectPath);
|
|
273
|
+
return latest ? path.basename(latest, JSONL_EXTENSION) : null;
|
|
101
274
|
}
|
|
102
275
|
/**
|
|
103
276
|
* Reads token usage from a Claude Code session JSONL, summing all
|
|
@@ -110,16 +283,18 @@ export async function findLatestSessionId(projectPath) {
|
|
|
110
283
|
* @param sessionId - Claude Code conversation UUID (if null, auto-detects latest)
|
|
111
284
|
* @param since - Only count turns at or after this time
|
|
112
285
|
* @param until - Only count turns before this time (defaults to now)
|
|
286
|
+
* @param configDirs - Config dirs of the owner's other Claude Code accounts the session runs on
|
|
113
287
|
* @returns Aggregated token summary, or null if the file doesn't exist
|
|
114
288
|
*/
|
|
115
|
-
export async function getTokensSince(projectPath, sessionId, since, until) {
|
|
289
|
+
export async function getTokensSince(projectPath, sessionId, since, until, configDirs = []) {
|
|
116
290
|
// Auto-detect session if not provided
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
291
|
+
const filePath = sessionId
|
|
292
|
+
? await findSessionJsonlPath(projectPath, sessionId, os.homedir(), configDirs)
|
|
293
|
+
: await findLatestSessionFile(projectPath, os.homedir(), configDirs);
|
|
294
|
+
if (!filePath) {
|
|
295
|
+
logger.debug('No Claude session JSONL found', { projectPath, sessionId });
|
|
120
296
|
return null;
|
|
121
297
|
}
|
|
122
|
-
const filePath = getSessionJsonlPath(projectPath, resolvedId);
|
|
123
298
|
let content;
|
|
124
299
|
try {
|
|
125
300
|
content = await fs.readFile(filePath, 'utf-8');
|
|
@@ -208,21 +383,14 @@ export async function getTokensSince(projectPath, sessionId, since, until) {
|
|
|
208
383
|
export async function syncSessionsToTokenUsageService(projectPath, maxAgeDays = 7) {
|
|
209
384
|
const { TokenUsageService } = await import('./token-usage.service.js');
|
|
210
385
|
const tokenSvc = TokenUsageService.getInstance();
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
try {
|
|
215
|
-
files = await fs.readdir(dir);
|
|
216
|
-
}
|
|
217
|
-
catch {
|
|
218
|
-
logger.debug('No Claude projects directory found', { dir });
|
|
386
|
+
const jsonlFiles = await listProjectTranscripts(projectPath);
|
|
387
|
+
if (jsonlFiles.length === 0) {
|
|
388
|
+
logger.debug('No Claude transcripts found for project', { projectPath });
|
|
219
389
|
return 0;
|
|
220
390
|
}
|
|
221
|
-
const jsonlFiles = files.filter(f => f.endsWith('.jsonl'));
|
|
222
391
|
const cutoffMs = Date.now() - maxAgeDays * 24 * 60 * 60 * 1000;
|
|
223
392
|
let loaded = 0;
|
|
224
|
-
for (const
|
|
225
|
-
const filePath = path.join(dir, file);
|
|
393
|
+
for (const filePath of jsonlFiles) {
|
|
226
394
|
try {
|
|
227
395
|
const stat = await fs.stat(filePath);
|
|
228
396
|
if (stat.mtimeMs < cutoffMs)
|
|
@@ -259,7 +427,7 @@ export async function syncSessionsToTokenUsageService(projectPath, maxAgeDays =
|
|
|
259
427
|
}
|
|
260
428
|
}
|
|
261
429
|
if (turnCount > 0) {
|
|
262
|
-
const sessionId =
|
|
430
|
+
const sessionId = path.basename(filePath, JSONL_EXTENSION);
|
|
263
431
|
const resolvedModel = model || 'claude-sonnet-4-6';
|
|
264
432
|
// Calculate cost with proper cache-aware pricing
|
|
265
433
|
const cost = calculateClaudeCost(sessionInput, sessionOutput, sessionCacheRead, sessionCacheCreate, resolvedModel);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-session-tokens.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/claude-session-tokens.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-session-tokens.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/claude-session-tokens.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
@@ -42,6 +50,15 @@ export interface TranscriptCursor {
|
|
|
42
50
|
filePath: string;
|
|
43
51
|
/** Byte offset already consumed */
|
|
44
52
|
offset: number;
|
|
53
|
+
/**
|
|
54
|
+
* Offsets reached in this session's earlier transcripts, by path.
|
|
55
|
+
*
|
|
56
|
+
* A session that switches between the owner's Claude Code accounts (or
|
|
57
|
+
* between conversations) can come back to a transcript it already read.
|
|
58
|
+
* Resuming at the remembered offset, instead of 0, keeps every turn
|
|
59
|
+
* counted once. Bounded to `MAX_REMEMBERED_TRANSCRIPTS` entries.
|
|
60
|
+
*/
|
|
61
|
+
fileOffsets?: Record<string, number>;
|
|
45
62
|
/**
|
|
46
63
|
* Ids of the most recently counted assistant messages.
|
|
47
64
|
*
|
|
@@ -117,6 +134,8 @@ export declare class ClaudeTranscriptSyncService {
|
|
|
117
134
|
* untestable against a temp tree.
|
|
118
135
|
*/
|
|
119
136
|
private readonly homeDir;
|
|
137
|
+
/** Config dir of one of the owner's other Claude Code accounts (issue #942) */
|
|
138
|
+
private readonly accountConfigDir;
|
|
120
139
|
private cursors;
|
|
121
140
|
private timer;
|
|
122
141
|
private observers;
|
|
@@ -126,8 +145,9 @@ export declare class ClaudeTranscriptSyncService {
|
|
|
126
145
|
/**
|
|
127
146
|
* @param cursorFile - Override the cursor persistence path (tests)
|
|
128
147
|
* @param homeDir - Override the home directory transcripts live under (tests)
|
|
148
|
+
* @param accountConfigDir - Override where an account's config dir is (tests)
|
|
129
149
|
*/
|
|
130
|
-
constructor(cursorFile?: string, homeDir?: string);
|
|
150
|
+
constructor(cursorFile?: string, homeDir?: string, accountConfigDir?: (account: string) => string);
|
|
131
151
|
/**
|
|
132
152
|
* Get the shared instance.
|
|
133
153
|
*
|
|
@@ -160,6 +180,14 @@ export declare class ClaudeTranscriptSyncService {
|
|
|
160
180
|
* @returns What the pass counted
|
|
161
181
|
*/
|
|
162
182
|
sync(): Promise<SyncResult>;
|
|
183
|
+
/**
|
|
184
|
+
* Claude config dirs to search for a session besides `~/.claude`: the
|
|
185
|
+
* config dir of the owner's other Claude Code account it runs on, if any.
|
|
186
|
+
*
|
|
187
|
+
* @param sessionName - Crewly session name
|
|
188
|
+
* @returns `[accountConfigDir]` while on `claude-code@<name>`, else `[]`
|
|
189
|
+
*/
|
|
190
|
+
private accountConfigDirsOf;
|
|
163
191
|
/**
|
|
164
192
|
* Locate a session's transcript file.
|
|
165
193
|
*
|
|
@@ -171,17 +199,41 @@ export declare class ClaudeTranscriptSyncService {
|
|
|
171
199
|
* @param claudeSessionId - Conversation id, when known
|
|
172
200
|
* @param cwdIsShared - Whether another registered session works in the
|
|
173
201
|
* same directory, which makes newest-wins unsafe
|
|
202
|
+
* @param configDirs - Config dirs of the owner's other Claude Code account
|
|
203
|
+
* the session runs on (searched before `~/.claude`)
|
|
174
204
|
* @returns Absolute path, or null when nothing readable exists
|
|
175
205
|
*/
|
|
176
206
|
private resolveTranscript;
|
|
177
207
|
/**
|
|
178
208
|
* Consume the unread tail of one transcript and record what it holds.
|
|
179
209
|
*
|
|
210
|
+
* When the session's transcript changed since the last pass (a new
|
|
211
|
+
* conversation, or a move to another of the owner's Claude Code accounts,
|
|
212
|
+
* whose transcripts live in that account's config dir), the transcript it
|
|
213
|
+
* leaves is read to its end first — turns written there just before the
|
|
214
|
+
* move would otherwise never be counted — unless another session now owns
|
|
215
|
+
* that conversation. Its offset is remembered, and the new transcript
|
|
216
|
+
* resumes at its own remembered offset (0 when new). Message ids seen are
|
|
217
|
+
* kept across transcripts, so a turn is counted once whichever file it is
|
|
218
|
+
* read from.
|
|
219
|
+
*
|
|
180
220
|
* @param sessionName - Crewly session name, used as the usage key
|
|
181
221
|
* @param filePath - Transcript to read
|
|
222
|
+
* @param ownedByOther - Whether a conversation id belongs to another session
|
|
182
223
|
* @returns Turns counted and cost added for this session
|
|
183
224
|
*/
|
|
184
225
|
private syncOne;
|
|
226
|
+
/**
|
|
227
|
+
* Read `cursor.filePath` from `cursor.offset` to its last whole line,
|
|
228
|
+
* record each new turn in the token ledger and advance the cursor.
|
|
229
|
+
*
|
|
230
|
+
* Does not touch `cursor.cost`; the caller adds the returned cost.
|
|
231
|
+
*
|
|
232
|
+
* @param sessionName - Crewly session name, used as the usage key
|
|
233
|
+
* @param cursor - The session's cursor (mutated: offset, seen ids)
|
|
234
|
+
* @returns Turns recorded, their cost and the newest of them
|
|
235
|
+
*/
|
|
236
|
+
private consume;
|
|
185
237
|
/**
|
|
186
238
|
* Read a byte range of a file as UTF-8.
|
|
187
239
|
*
|
package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-transcript-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/claude-transcript-sync.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"claude-transcript-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/claude-transcript-sync.service.ts"],"names":[],"mappings":"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"}
|