crewly 1.20.195 → 1.20.196
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 +68 -0
- package/config/hooks/agent-status/report.sh +31 -12
- package/config/hooks/subagent-guard/subagent.sh +25 -1
- package/config/roles/orchestrator/fragments/lifecycle.md +1 -1
- package/config/roles/orchestrator/prompt.md +3 -3
- package/config/skills/_common/lib.sh +28 -5
- package/config/skills/_common/lib.test.sh +32 -1
- package/config/skills/agent/core/create-intent-tasks/execute.sh +2 -0
- package/config/skills/agent/core/decompose-intent/execute.sh +2 -0
- package/config/skills/agent/core/experiment-card/SKILL.md +29 -1
- package/config/skills/agent/core/experiment-card/execute.sh +35 -1
- package/config/skills/agent/core/experiment-card/execute.test.sh +11 -0
- package/config/skills/agent/core/project-tickets/SKILL.md +35 -2
- package/config/skills/agent/core/project-tickets/execute.sh +59 -6
- package/config/skills/agent/core/project-tickets/execute.test.sh +24 -0
- package/config/skills/agent/core/send-message/execute.sh +16 -0
- package/config/skills/agent/core/send-message/execute.test.sh +10 -0
- package/config/skills/agent/core/trace-read/SKILL.md +117 -0
- package/config/skills/agent/core/trace-read/execute.sh +116 -0
- package/config/skills/agent/core/update-intent-task/execute.sh +2 -0
- package/config/skills/agent/marketing/submit-for-approval/execute.sh +3 -2
- package/config/skills/orchestrator/decompose-mission/execute.sh +2 -0
- package/config/skills/orchestrator/decompose-okr/execute.sh +1 -0
- package/config/skills/orchestrator/design-team/execute.sh +2 -0
- package/config/skills/orchestrator/measure-kr/execute.sh +2 -0
- package/config/skills/orchestrator/review-mission/execute.sh +2 -0
- package/config/skills/orchestrator/send-message/execute.sh +10 -2
- package/config/skills/orchestrator/send-message/execute.test.sh +9 -0
- package/config/skills/team-leader/design-checklist/execute.sh +2 -0
- package/dist/backend/backend/src/constants.d.ts +223 -5
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +206 -6
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts +9 -3
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js +38 -5
- package/dist/backend/backend/src/controllers/agent-hooks/agent-hooks.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts +4 -9
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js +6 -14
- package/dist/backend/backend/src/controllers/approvals/approvals.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/auth/owner-session.controller.d.ts +64 -0
- package/dist/backend/backend/src/controllers/auth/owner-session.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/auth/owner-session.controller.js +164 -0
- package/dist/backend/backend/src/controllers/auth/owner-session.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js +18 -5
- package/dist/backend/backend/src/controllers/browser/browser.routes.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 +8 -1
- package/dist/backend/backend/src/controllers/canva/canva.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js +10 -1
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.js +3 -5
- package/dist/backend/backend/src/controllers/cloud/cloud-device-pairing.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts +4 -2
- package/dist/backend/backend/src/controllers/connector/connector.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/connector/connector.controller.js +17 -2
- 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.map +1 -1
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js +2 -3
- package/dist/backend/backend/src/controllers/connector/grant-sharing.handler.js.map +1 -1
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts +4 -2
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.js +31 -20
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/desktop/desktop.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/desktop/desktop.controller.js +16 -0
- package/dist/backend/backend/src/controllers/desktop/desktop.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/google/google.controller.js +9 -5
- 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 +16 -3
- package/dist/backend/backend/src/controllers/google/google.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/harness/harness.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/harness/harness.controller.js +3 -5
- package/dist/backend/backend/src/controllers/harness/harness.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 +8 -1
- package/dist/backend/backend/src/controllers/microsoft/microsoft-todo.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js +1 -1
- package/dist/backend/backend/src/controllers/mission/mission-policy.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +3 -5
- package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/people/people.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/people/people.routes.js +3 -5
- package/dist/backend/backend/src/controllers/people/people.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +35 -2
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +138 -4
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +2 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +7 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/request/open-items.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/request/open-items.controller.js +2 -4
- package/dist/backend/backend/src/controllers/request/open-items.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js +1 -1
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +9 -0
- 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.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +11 -0
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts +6 -4
- package/dist/backend/backend/src/controllers/system/system-control.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system-control.controller.js +20 -13
- package/dist/backend/backend/src/controllers/system/system-control.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 -7
- package/dist/backend/backend/src/controllers/team/team.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +5 -7
- package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts +30 -4
- package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/trace/trace.controller.js +278 -10
- package/dist/backend/backend/src/controllers/trace/trace.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.d.ts +3 -3
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.js +4 -2
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp-inbox.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.js +10 -2
- package/dist/backend/backend/src/controllers/whatsapp/whatsapp.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +34 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +313 -42
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/middleware/agent-origin-correction.d.ts +31 -0
- package/dist/backend/backend/src/middleware/agent-origin-correction.d.ts.map +1 -0
- package/dist/backend/backend/src/middleware/agent-origin-correction.js +31 -0
- package/dist/backend/backend/src/middleware/agent-origin-correction.js.map +1 -0
- package/dist/backend/backend/src/middleware/agent-origin.middleware.d.ts +6 -0
- package/dist/backend/backend/src/middleware/agent-origin.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/agent-origin.middleware.js +4 -1
- package/dist/backend/backend/src/middleware/agent-origin.middleware.js.map +1 -1
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts +20 -17
- package/dist/backend/backend/src/middleware/api-token.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/middleware/api-token.middleware.js +27 -37
- package/dist/backend/backend/src/middleware/api-token.middleware.js.map +1 -1
- package/dist/backend/backend/src/middleware/caller-identity.middleware.d.ts +213 -0
- package/dist/backend/backend/src/middleware/caller-identity.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/middleware/caller-identity.middleware.js +481 -0
- package/dist/backend/backend/src/middleware/caller-identity.middleware.js.map +1 -0
- package/dist/backend/backend/src/middleware/caller-identity.testing.d.ts +67 -0
- package/dist/backend/backend/src/middleware/caller-identity.testing.d.ts.map +1 -0
- package/dist/backend/backend/src/middleware/caller-identity.testing.js +108 -0
- package/dist/backend/backend/src/middleware/caller-identity.testing.js.map +1 -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 +12 -2
- 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 +7 -5
- 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 +19 -10
- package/dist/backend/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +10 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/restore-filter.d.ts +5 -2
- package/dist/backend/backend/src/services/agent/restore-filter.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/restore-filter.js +5 -2
- package/dist/backend/backend/src/services/agent/restore-filter.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +4 -0
- package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.d.ts +29 -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 +77 -1
- package/dist/backend/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +99 -2
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +265 -40
- package/dist/backend/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -5
- 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 +34 -4
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +18 -11
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js +19 -25
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +7 -4
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js +8 -4
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/types.d.ts +0 -1
- package/dist/backend/backend/src/services/chat-v2/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/types.js +0 -1
- package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +5 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/api-token.service.d.ts +28 -0
- package/dist/backend/backend/src/services/core/api-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/api-token.service.js +46 -0
- package/dist/backend/backend/src/services/core/api-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/dashboard-build.d.ts +49 -0
- package/dist/backend/backend/src/services/core/dashboard-build.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/dashboard-build.js +68 -0
- package/dist/backend/backend/src/services/core/dashboard-build.js.map +1 -0
- package/dist/backend/backend/src/services/core/owner-auth.service.d.ts +127 -0
- package/dist/backend/backend/src/services/core/owner-auth.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/owner-auth.service.js +205 -0
- package/dist/backend/backend/src/services/core/owner-auth.service.js.map +1 -0
- package/dist/backend/backend/src/services/core/peer-process.service.d.ts +168 -0
- package/dist/backend/backend/src/services/core/peer-process.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/core/peer-process.service.js +352 -0
- package/dist/backend/backend/src/services/core/peer-process.service.js.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +97 -1
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment.service.js +372 -1
- package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js +19 -2
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js +2 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts +0 -8
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js +0 -18
- package/dist/backend/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts +19 -0
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js +41 -5
- package/dist/backend/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/agent-turn-state.d.ts +184 -0
- package/dist/backend/backend/src/services/monitoring/agent-turn-state.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/agent-turn-state.js +391 -0
- package/dist/backend/backend/src/services/monitoring/agent-turn-state.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.d.ts +35 -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 +138 -2
- package/dist/backend/backend/src/services/monitoring/claude-transcript-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.d.ts +73 -0
- package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.js +258 -0
- package/dist/backend/backend/src/services/monitoring/claude-transcript-turn.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.d.ts +82 -0
- package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.js +141 -0
- package/dist/backend/backend/src/services/monitoring/deferred-idle-settle.js.map +1 -0
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts +51 -1
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js +118 -2
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.d.ts +103 -0
- package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.d.ts.map +1 -0
- package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.js +86 -0
- package/dist/backend/backend/src/services/monitoring/transcript-cost-repair.js.map +1 -0
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +57 -0
- package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/open-items/open-items.service.js +100 -4
- package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +13 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts +36 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js +42 -3
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.js +2 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-assignee-waker.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js +3 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.d.ts +156 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.js +308 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-retro.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.d.ts +212 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.js +515 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-stats.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.d.ts +186 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.js +341 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-trace.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts +309 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +726 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -1
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +34 -3
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js +57 -2
- package/dist/backend/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -1
- package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts +61 -3
- package/dist/backend/backend/src/services/restart/interrupted-turns.d.ts.map +1 -1
- package/dist/backend/backend/src/services/restart/interrupted-turns.js +106 -9
- package/dist/backend/backend/src/services/restart/interrupted-turns.js.map +1 -1
- package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts +22 -0
- package/dist/backend/backend/src/services/restart/restart-drain.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/restart/restart-drain.service.js +37 -5
- package/dist/backend/backend/src/services/restart/restart-drain.service.js.map +1 -1
- package/dist/backend/backend/src/services/restart/supervisor-stop-budget.d.ts +62 -0
- package/dist/backend/backend/src/services/restart/supervisor-stop-budget.d.ts.map +1 -0
- package/dist/backend/backend/src/services/restart/supervisor-stop-budget.js +126 -0
- package/dist/backend/backend/src/services/restart/supervisor-stop-budget.js.map +1 -0
- package/dist/backend/backend/src/services/restart/turn-probe.d.ts +17 -2
- package/dist/backend/backend/src/services/restart/turn-probe.d.ts.map +1 -1
- package/dist/backend/backend/src/services/restart/turn-probe.js +29 -4
- package/dist/backend/backend/src/services/restart/turn-probe.js.map +1 -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 +4 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-auto-working.service.d.ts +29 -0
- package/dist/backend/backend/src/services/slack/slack-auto-working.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-auto-working.service.js +66 -3
- package/dist/backend/backend/src/services/slack/slack-auto-working.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +79 -15
- 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 +200 -41
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +18 -0
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +32 -0
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-analysis.service.d.ts +99 -0
- package/dist/backend/backend/src/services/trace/trace-analysis.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-analysis.service.js +148 -0
- package/dist/backend/backend/src/services/trace/trace-analysis.service.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.d.ts +17 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-context.service.js +58 -1
- package/dist/backend/backend/src/services/trace/trace-context.service.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts +4 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-http.middleware.js +32 -2
- package/dist/backend/backend/src/services/trace/trace-http.middleware.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-metrics.d.ts +262 -0
- package/dist/backend/backend/src/services/trace/trace-metrics.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-metrics.js +810 -0
- package/dist/backend/backend/src/services/trace/trace-metrics.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.d.ts +48 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.d.ts.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-recorder.js +121 -1
- package/dist/backend/backend/src/services/trace/trace-recorder.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-store.d.ts +40 -1
- package/dist/backend/backend/src/services/trace/trace-store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-store.js +126 -14
- package/dist/backend/backend/src/services/trace/trace-store.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-summary.d.ts +77 -0
- package/dist/backend/backend/src/services/trace/trace-summary.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-summary.js +239 -0
- package/dist/backend/backend/src/services/trace/trace-summary.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-timeline.d.ts +74 -0
- package/dist/backend/backend/src/services/trace/trace-timeline.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-timeline.js +162 -0
- package/dist/backend/backend/src/services/trace/trace-timeline.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace.types.d.ts +22 -3
- package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/trace/trace.types.js +20 -1
- package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.d.ts +80 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.d.ts.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.js +184 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-format-ask.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +7 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +16 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +16 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js +2 -1
- package/dist/backend/backend/src/services/v3/tl-auto-verify.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +8 -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 +24 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.d.ts +4 -3
- package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.d.ts.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.js +3 -2
- package/dist/backend/backend/src/services/whatsapp/whatsapp-draft-gate.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js +3 -0
- package/dist/backend/backend/src/services/workflow/message-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/scheduler.service.js +3 -0
- package/dist/backend/backend/src/services/workflow/scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js +2 -1
- package/dist/backend/backend/src/services/worktree/workitem-worktree.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/decision.types.d.ts +3 -1
- package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/experiment.types.d.ts +57 -0
- package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/experiment.types.js.map +1 -1
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts +9 -0
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/ticket-autopilot.types.js +14 -0
- package/dist/backend/backend/src/types/ticket-autopilot.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/open-item.types.d.ts +4 -0
- package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +1 -1
- 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 +1 -0
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts +44 -37
- package/dist/backend/backend/src/utils/agent-caller.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/agent-caller.utils.js +48 -42
- package/dist/backend/backend/src/utils/agent-caller.utils.js.map +1 -1
- package/dist/backend/backend/src/utils/secret-env.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/secret-env.js +8 -1
- package/dist/backend/backend/src/utils/secret-env.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/backend/config/constants.d.ts +67 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +67 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +223 -5
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +206 -6
- package/dist/cli/backend/src/constants.js.map +1 -1
- 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 +12 -2
- 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 +7 -5
- 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 +19 -10
- package/dist/cli/backend/src/services/agent/control-plane-guard.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +10 -1
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +4 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +29 -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 +77 -1
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
- package/dist/cli/backend/src/services/chat/chat.service.d.ts +99 -2
- package/dist/cli/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat/chat.service.js +265 -40
- package/dist/cli/backend/src/services/chat/chat.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +30 -5
- 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 +34 -4
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +18 -11
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +19 -25
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +7 -4
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +8 -4
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/types.d.ts +0 -1
- package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/types.js +0 -1
- package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -1
- package/dist/cli/backend/src/services/core/api-token.service.d.ts +28 -0
- package/dist/cli/backend/src/services/core/api-token.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/api-token.service.js +46 -0
- package/dist/cli/backend/src/services/core/api-token.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/owner-auth.service.d.ts +127 -0
- package/dist/cli/backend/src/services/core/owner-auth.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/core/owner-auth.service.js +205 -0
- package/dist/cli/backend/src/services/core/owner-auth.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +0 -8
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +0 -18
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts +19 -0
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js +41 -5
- package/dist/cli/backend/src/services/monitoring/activity-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/agent-turn-state.d.ts +184 -0
- package/dist/cli/backend/src/services/monitoring/agent-turn-state.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/agent-turn-state.js +391 -0
- package/dist/cli/backend/src/services/monitoring/agent-turn-state.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.d.ts +73 -0
- package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.js +258 -0
- package/dist/cli/backend/src/services/monitoring/claude-transcript-turn.js.map +1 -0
- package/dist/cli/backend/src/services/open-items/open-items.service.d.ts +57 -0
- package/dist/cli/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/open-items/open-items.service.js +100 -4
- package/dist/cli/backend/src/services/open-items/open-items.service.js.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts +36 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js +42 -3
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts +34 -3
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js +57 -2
- package/dist/cli/backend/src/services/restart/in-flight-turn-tracker.service.js.map +1 -1
- package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts +22 -0
- package/dist/cli/backend/src/services/restart/restart-drain.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/restart/restart-drain.service.js +37 -5
- package/dist/cli/backend/src/services/restart/restart-drain.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-auto-working.service.d.ts +29 -0
- package/dist/cli/backend/src/services/slack/slack-auto-working.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-auto-working.service.js +66 -3
- package/dist/cli/backend/src/services/slack/slack-auto-working.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +79 -15
- 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 +200 -41
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +18 -0
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.js +32 -0
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-context.service.d.ts +17 -0
- package/dist/cli/backend/src/services/trace/trace-context.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-context.service.js +58 -1
- package/dist/cli/backend/src/services/trace/trace-context.service.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-recorder.d.ts +48 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.d.ts.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-recorder.js +121 -1
- package/dist/cli/backend/src/services/trace/trace-recorder.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-store.d.ts +40 -1
- package/dist/cli/backend/src/services/trace/trace-store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-store.js +126 -14
- package/dist/cli/backend/src/services/trace/trace-store.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace.types.d.ts +22 -3
- package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -1
- package/dist/cli/backend/src/services/trace/trace.types.js +20 -1
- package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
- package/dist/cli/backend/src/types/decision.types.d.ts +3 -1
- package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts +9 -0
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/ticket-autopilot.types.js +14 -0
- package/dist/cli/backend/src/types/ticket-autopilot.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/open-item.types.d.ts +4 -0
- package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +1 -1
- 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 +1 -0
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/utils/secret-env.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/secret-env.js +8 -1
- package/dist/cli/backend/src/utils/secret-env.js.map +1 -1
- package/dist/cli/cli/src/commands/service.d.ts +12 -0
- package/dist/cli/cli/src/commands/service.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/service.js +36 -2
- package/dist/cli/cli/src/commands/service.js.map +1 -1
- package/dist/cli/cli/src/index.js +4 -0
- package/dist/cli/cli/src/index.js.map +1 -1
- package/dist/cli/cli/src/utils/owner-token-fetch.d.ts +41 -0
- package/dist/cli/cli/src/utils/owner-token-fetch.d.ts.map +1 -0
- package/dist/cli/cli/src/utils/owner-token-fetch.js +83 -0
- package/dist/cli/cli/src/utils/owner-token-fetch.js.map +1 -0
- package/dist/cli/cli/src/utils/safe-shutdown.d.ts +13 -3
- package/dist/cli/cli/src/utils/safe-shutdown.d.ts.map +1 -1
- package/dist/cli/cli/src/utils/safe-shutdown.js +26 -4
- package/dist/cli/cli/src/utils/safe-shutdown.js.map +1 -1
- package/dist/cli/config/constants.d.ts +67 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +67 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/frontend/dist/assets/index-bfa0e2e8.css +42 -0
- package/frontend/dist/assets/{index-800118ca.js → index-edfa8e04.js} +285 -285
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/packages/crewly-agent/src/runtime/api-client.test.ts +42 -0
- package/packages/crewly-agent/src/runtime/api-client.ts +6 -0
- package/dist/backend/backend/src/services/v3/request-notification.service.d.ts +0 -52
- package/dist/backend/backend/src/services/v3/request-notification.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/v3/request-notification.service.js +0 -161
- package/dist/backend/backend/src/services/v3/request-notification.service.js.map +0 -1
- package/frontend/dist/assets/index-5e967795.css +0 -42
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Turn State
|
|
3
|
+
*
|
|
4
|
+
* Whether an agent is mid-turn according to its runtime, not according to
|
|
5
|
+
* its screen. Long tool calls, a model writing a long tool input and
|
|
6
|
+
* background subagents are all silent on the PTY. Reading silence as "idle"
|
|
7
|
+
* let a restart kill Eve mid-work (2026-10-02, TKT-194). See
|
|
8
|
+
* specs/2026-10-02-restart-busy-and-resume.md.
|
|
9
|
+
*
|
|
10
|
+
* Sources:
|
|
11
|
+
* - Claude Code hooks (POST /api/agent-hooks): SessionStart, UserPromptSubmit,
|
|
12
|
+
* PreToolUse, PostToolUse, SubagentStart, SubagentStop, Stop. Only
|
|
13
|
+
* identifiers are kept (event names, tool-use ids, subagent ids), never
|
|
14
|
+
* payload content.
|
|
15
|
+
* - The Claude Code transcript (see claude-transcript-turn.ts).
|
|
16
|
+
*
|
|
17
|
+
* How they combine:
|
|
18
|
+
* - The hooks lead. A transcript turn end (end_turn, interrupt, API or
|
|
19
|
+
* usage-limit error) newer than the last hook event ends a hook `turn`:
|
|
20
|
+
* Esc and API errors fire no Stop hook.
|
|
21
|
+
* - `Stop` clears open tool calls and holds the turn's subagents. Held
|
|
22
|
+
* subagents count as `background` only while the transcript (Claude Code's
|
|
23
|
+
* own pending-background count) agrees; a transcript turn end with nothing
|
|
24
|
+
* pending drops them.
|
|
25
|
+
* - A transcript-only `background` (no hook saw a subagent) is reported as
|
|
26
|
+
* `idle`: on its own it never blocks the drain or settling.
|
|
27
|
+
* - A transcript `turn` newer than the last hook event (a lost hook) is a turn.
|
|
28
|
+
*
|
|
29
|
+
* Verdicts:
|
|
30
|
+
* - `turn`: a turn is in progress;
|
|
31
|
+
* - `background`: the turn ended, but a subagent is still running and will
|
|
32
|
+
* start a new turn when it finishes;
|
|
33
|
+
* - `idle`: the runtime said the turn ended and nothing is pending;
|
|
34
|
+
* - `unknown`: no trustworthy signal; callers fall back to the screen.
|
|
35
|
+
*
|
|
36
|
+
* @module services/monitoring/agent-turn-state
|
|
37
|
+
*/
|
|
38
|
+
import { TURN_STATE_CONSTANTS } from '../../constants.js';
|
|
39
|
+
import { claudeTranscriptTurnState } from './claude-transcript-turn.js';
|
|
40
|
+
/** Hook events this service reads. */
|
|
41
|
+
const TURN_EVENTS = new Set(['SessionStart', 'UserPromptSubmit', 'PreToolUse', 'PostToolUse', 'SubagentStart', 'SubagentStop', 'Stop']);
|
|
42
|
+
/** SessionStart sources that mean a new runtime process. */
|
|
43
|
+
const RUNTIME_START_SOURCES = new Set(['startup', 'resume']);
|
|
44
|
+
/** Prefix of synthetic ids for subagents that reported none. */
|
|
45
|
+
const ANON = '\u0000anon-';
|
|
46
|
+
const UNKNOWN = { state: 'unknown', longRunning: false, since: null, source: 'none' };
|
|
47
|
+
/**
|
|
48
|
+
* Oldest value, or null.
|
|
49
|
+
*
|
|
50
|
+
* @param values - Timestamps
|
|
51
|
+
* @returns Smallest, or null when empty
|
|
52
|
+
*/
|
|
53
|
+
function oldest(values) {
|
|
54
|
+
let min = null;
|
|
55
|
+
for (const v of values)
|
|
56
|
+
if (min === null || v < min)
|
|
57
|
+
min = v;
|
|
58
|
+
return min;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Process-wide runtime turn state. Singleton; in memory only (a backend
|
|
62
|
+
* restart kills the agents too, so nothing needs to survive one).
|
|
63
|
+
*/
|
|
64
|
+
export class AgentTurnStateService {
|
|
65
|
+
static instance = null;
|
|
66
|
+
records = new Map();
|
|
67
|
+
transcriptLocator = null;
|
|
68
|
+
/** Located transcript per session, re-resolved after LOCATOR_CACHE_MS */
|
|
69
|
+
located = new Map();
|
|
70
|
+
/**
|
|
71
|
+
* @returns The singleton
|
|
72
|
+
*/
|
|
73
|
+
static getInstance() {
|
|
74
|
+
if (!AgentTurnStateService.instance)
|
|
75
|
+
AgentTurnStateService.instance = new AgentTurnStateService();
|
|
76
|
+
return AgentTurnStateService.instance;
|
|
77
|
+
}
|
|
78
|
+
/** Reset the singleton (tests only). */
|
|
79
|
+
static resetInstance() {
|
|
80
|
+
AgentTurnStateService.instance = null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Install the transcript locator.
|
|
84
|
+
*
|
|
85
|
+
* @param locator - Locator, or null to disable the transcript
|
|
86
|
+
*/
|
|
87
|
+
setTranscriptLocator(locator) {
|
|
88
|
+
this.transcriptLocator = locator;
|
|
89
|
+
this.located.clear();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* A runtime process was (re)started for the session: forget its old turn
|
|
93
|
+
* state, and ignore transcript background launches from before now.
|
|
94
|
+
*
|
|
95
|
+
* @param sessionName - Session
|
|
96
|
+
* @param now - Start time
|
|
97
|
+
*/
|
|
98
|
+
noteRuntimeStart(sessionName, now = Date.now()) {
|
|
99
|
+
this.records.delete(sessionName);
|
|
100
|
+
this.located.delete(sessionName);
|
|
101
|
+
const r = this.recordFor(sessionName, now);
|
|
102
|
+
r.runtimeStartedAt = now;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Record a Claude Code hook event.
|
|
106
|
+
*
|
|
107
|
+
* @param sessionName - Reporting session
|
|
108
|
+
* @param event - Hook event name (validated by the caller)
|
|
109
|
+
* @param ids - Tool-use / subagent ids and SessionStart source, already validated
|
|
110
|
+
* @param now - Clock
|
|
111
|
+
* @returns True when the event changed the turn state model
|
|
112
|
+
*/
|
|
113
|
+
recordHook(sessionName, event, ids = {}, now = Date.now()) {
|
|
114
|
+
if (!TURN_EVENTS.has(event))
|
|
115
|
+
return false;
|
|
116
|
+
if (event === 'SessionStart') {
|
|
117
|
+
if (ids.source && RUNTIME_START_SOURCES.has(ids.source)) {
|
|
118
|
+
this.noteRuntimeStart(sessionName, now);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// /clear or compaction: same process, maybe another transcript file.
|
|
122
|
+
this.located.delete(sessionName);
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
const r = this.recordFor(sessionName, now);
|
|
127
|
+
r.lastEventAt = now;
|
|
128
|
+
const markActive = () => {
|
|
129
|
+
if (!r.active) {
|
|
130
|
+
r.active = true;
|
|
131
|
+
r.activeSince = now;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const max = TURN_STATE_CONSTANTS.MAX_OPEN_PER_SESSION;
|
|
135
|
+
switch (event) {
|
|
136
|
+
case 'UserPromptSubmit':
|
|
137
|
+
markActive();
|
|
138
|
+
break;
|
|
139
|
+
case 'PreToolUse':
|
|
140
|
+
markActive();
|
|
141
|
+
if (ids.toolUseId && r.openTools.size < max)
|
|
142
|
+
r.openTools.set(ids.toolUseId, now);
|
|
143
|
+
break;
|
|
144
|
+
case 'PostToolUse':
|
|
145
|
+
markActive();
|
|
146
|
+
if (ids.toolUseId)
|
|
147
|
+
r.openTools.delete(ids.toolUseId);
|
|
148
|
+
break;
|
|
149
|
+
case 'SubagentStart':
|
|
150
|
+
if (r.subagents.size < max)
|
|
151
|
+
r.subagents.set(ids.agentId ?? `${ANON}${r.anonSeq++}`, now);
|
|
152
|
+
break;
|
|
153
|
+
case 'SubagentStop': {
|
|
154
|
+
const removeFrom = (m) => {
|
|
155
|
+
if (ids.agentId && m.delete(ids.agentId))
|
|
156
|
+
return true;
|
|
157
|
+
if (!ids.agentId) {
|
|
158
|
+
const anon = [...m.keys()].find((k) => k.startsWith(ANON)) ?? m.keys().next().value;
|
|
159
|
+
if (anon !== undefined)
|
|
160
|
+
return m.delete(anon);
|
|
161
|
+
}
|
|
162
|
+
return false;
|
|
163
|
+
};
|
|
164
|
+
if (!removeFrom(r.subagents))
|
|
165
|
+
removeFrom(r.heldSubagents);
|
|
166
|
+
// The parent is notified and resumes: its turn is active again
|
|
167
|
+
// until the next Stop (2026-10-02, Eve's 04:41:11 turn).
|
|
168
|
+
markActive();
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case 'Stop':
|
|
172
|
+
this.endTurn(r, now);
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Forget a session (its runtime exited).
|
|
179
|
+
*
|
|
180
|
+
* @param sessionName - Session
|
|
181
|
+
*/
|
|
182
|
+
forget(sessionName) {
|
|
183
|
+
this.records.delete(sessionName);
|
|
184
|
+
this.located.delete(sessionName);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Sessions that reported a hook event (still remembered).
|
|
188
|
+
*
|
|
189
|
+
* @returns Session names
|
|
190
|
+
*/
|
|
191
|
+
knownSessions() {
|
|
192
|
+
return [...this.records.keys()];
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Epoch ms of the session's last hook event, or null when it never sent one.
|
|
196
|
+
*
|
|
197
|
+
* @param sessionName - Session
|
|
198
|
+
* @returns Time or null
|
|
199
|
+
*/
|
|
200
|
+
lastHookEventAt(sessionName) {
|
|
201
|
+
const r = this.records.get(sessionName);
|
|
202
|
+
return r && r.lastEventAt > 0 ? r.lastEventAt : null;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* What the hooks alone say (held subagents count as background here).
|
|
206
|
+
*
|
|
207
|
+
* @param sessionName - Session
|
|
208
|
+
* @param now - Clock
|
|
209
|
+
* @returns Verdict (`unknown` without hooks or after a long silence)
|
|
210
|
+
*/
|
|
211
|
+
hookVerdict(sessionName, now = Date.now()) {
|
|
212
|
+
const r = this.records.get(sessionName);
|
|
213
|
+
if (!r || r.lastEventAt === 0)
|
|
214
|
+
return UNKNOWN;
|
|
215
|
+
this.expire(r, now);
|
|
216
|
+
const subs = r.subagents.size + r.heldSubagents.size;
|
|
217
|
+
if (r.active) {
|
|
218
|
+
const open = r.openTools.size > 0 || subs > 0;
|
|
219
|
+
if (open || now - r.lastEventAt <= TURN_STATE_CONSTANTS.HOOK_SILENCE_MS) {
|
|
220
|
+
return { state: 'turn', longRunning: open, since: r.activeSince, source: 'hooks' };
|
|
221
|
+
}
|
|
222
|
+
// A lost Stop must not pin the agent as busy forever.
|
|
223
|
+
return UNKNOWN;
|
|
224
|
+
}
|
|
225
|
+
if (subs > 0) {
|
|
226
|
+
return { state: 'background', longRunning: true, since: oldest([...r.subagents.values(), ...r.heldSubagents.values()]), source: 'hooks' };
|
|
227
|
+
}
|
|
228
|
+
return { state: 'idle', longRunning: false, since: null, source: 'hooks' };
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Combined verdict (see the module doc for the rules).
|
|
232
|
+
*
|
|
233
|
+
* @param sessionName - Session
|
|
234
|
+
* @param now - Clock
|
|
235
|
+
* @returns Verdict
|
|
236
|
+
*
|
|
237
|
+
* @example
|
|
238
|
+
* ```typescript
|
|
239
|
+
* const v = AgentTurnStateService.getInstance().getVerdict('eve-1');
|
|
240
|
+
* if (v.state === 'turn' || v.state === 'background') // do not call it idle
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
getVerdict(sessionName, now = Date.now()) {
|
|
244
|
+
const r = this.records.get(sessionName);
|
|
245
|
+
const t = this.readTranscript(sessionName, now, r?.runtimeStartedAt ?? undefined);
|
|
246
|
+
const transcriptTurn = t !== null && t.verdict === 'turn' && now - t.mtimeMs <= TURN_STATE_CONSTANTS.TRANSCRIPT_FRESH_MS;
|
|
247
|
+
const asTranscriptTurn = () => ({
|
|
248
|
+
state: 'turn',
|
|
249
|
+
longRunning: false,
|
|
250
|
+
since: t && Number.isFinite(t.lastEntryAt) ? t.lastEntryAt : null,
|
|
251
|
+
source: 'transcript',
|
|
252
|
+
});
|
|
253
|
+
if (!r || r.lastEventAt === 0) {
|
|
254
|
+
if (transcriptTurn)
|
|
255
|
+
return asTranscriptTurn();
|
|
256
|
+
// A transcript-only "background" never blocks on its own.
|
|
257
|
+
if (t && (t.verdict === 'idle' || t.verdict === 'background'))
|
|
258
|
+
return { state: 'idle', longRunning: false, since: null, source: 'transcript' };
|
|
259
|
+
return UNKNOWN;
|
|
260
|
+
}
|
|
261
|
+
// Esc, API errors and usage limits end the turn with no Stop hook: a
|
|
262
|
+
// transcript turn end newer than the last hook event ends it here too.
|
|
263
|
+
if (r.active && t && Number.isFinite(t.turnEndedAt) && t.turnEndedAt > r.lastEventAt) {
|
|
264
|
+
this.endTurn(r, t.turnEndedAt);
|
|
265
|
+
}
|
|
266
|
+
const hooks = this.hookVerdict(sessionName, now);
|
|
267
|
+
if (hooks.state === 'turn')
|
|
268
|
+
return hooks;
|
|
269
|
+
if (hooks.state === 'background') {
|
|
270
|
+
// Held subagents need Claude Code's own word that they still run.
|
|
271
|
+
// (A transcript still mid-flush — its last entry the turn's tool
|
|
272
|
+
// result — agrees too when it lists the launch as pending.)
|
|
273
|
+
const agrees = t !== null && t.pendingBackground > 0 && (t.verdict === 'background' || transcriptTurn);
|
|
274
|
+
const liveSince = oldest(r.subagents.values());
|
|
275
|
+
if (r.subagents.size > 0 || agrees) {
|
|
276
|
+
return { ...hooks, ...(agrees ? {} : { since: liveSince }) };
|
|
277
|
+
}
|
|
278
|
+
if (t !== null && t.verdict === 'idle' && r.stoppedAt !== null && Number.isFinite(t.turnEndedAt) && t.turnEndedAt >= r.stoppedAt - TURN_STATE_CONSTANTS.TRANSCRIPT_LAG_MS) {
|
|
279
|
+
r.heldSubagents.clear(); // the transcript says nothing is pending: they were stale
|
|
280
|
+
}
|
|
281
|
+
if (!t)
|
|
282
|
+
r.heldSubagents.clear(); // no second opinion: Stop clears them
|
|
283
|
+
return { state: 'idle', longRunning: false, since: null, source: 'hooks' };
|
|
284
|
+
}
|
|
285
|
+
// A turn the hooks missed (a failed POST) but the transcript shows.
|
|
286
|
+
if (transcriptTurn && t && t.lastEntryAt > r.lastEventAt)
|
|
287
|
+
return asTranscriptTurn();
|
|
288
|
+
return hooks;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Whether the agent still has background work after its turn ended: the
|
|
292
|
+
* work it is answering for is not finished yet.
|
|
293
|
+
*
|
|
294
|
+
* @param sessionName - Session
|
|
295
|
+
* @param now - Clock
|
|
296
|
+
* @returns True for a `background` verdict
|
|
297
|
+
*/
|
|
298
|
+
hasBackgroundWork(sessionName, now = Date.now()) {
|
|
299
|
+
return this.getVerdict(sessionName, now).state === 'background';
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* End a record's turn: open tools are cleared, the turn's subagents are held.
|
|
303
|
+
*
|
|
304
|
+
* @param r - Record
|
|
305
|
+
* @param at - When the turn ended
|
|
306
|
+
*/
|
|
307
|
+
endTurn(r, at) {
|
|
308
|
+
r.active = false;
|
|
309
|
+
r.stoppedAt = at;
|
|
310
|
+
r.openTools.clear();
|
|
311
|
+
for (const [id, startedAt] of r.subagents)
|
|
312
|
+
r.heldSubagents.set(id, startedAt);
|
|
313
|
+
r.subagents.clear();
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Drop open tool calls and subagents older than OPEN_WORK_MAX_MS.
|
|
317
|
+
*
|
|
318
|
+
* @param r - Record
|
|
319
|
+
* @param now - Clock
|
|
320
|
+
*/
|
|
321
|
+
expire(r, now) {
|
|
322
|
+
const maxAge = TURN_STATE_CONSTANTS.OPEN_WORK_MAX_MS;
|
|
323
|
+
for (const m of [r.openTools, r.subagents, r.heldSubagents]) {
|
|
324
|
+
for (const [id, at] of m)
|
|
325
|
+
if (now - at > maxAge)
|
|
326
|
+
m.delete(id);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Read the session's transcript, if a locator finds one.
|
|
331
|
+
*
|
|
332
|
+
* @param sessionName - Session
|
|
333
|
+
* @param now - Clock
|
|
334
|
+
* @param launchedAfter - Runtime start (older launches ignored)
|
|
335
|
+
* @returns The transcript state, or null
|
|
336
|
+
*/
|
|
337
|
+
readTranscript(sessionName, now, launchedAfter) {
|
|
338
|
+
if (!this.transcriptLocator)
|
|
339
|
+
return null;
|
|
340
|
+
const cached = this.located.get(sessionName);
|
|
341
|
+
let file;
|
|
342
|
+
if (cached && now - cached.at < TURN_STATE_CONSTANTS.LOCATOR_CACHE_MS) {
|
|
343
|
+
file = cached.file;
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
try {
|
|
347
|
+
file = this.transcriptLocator(sessionName);
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
file = null;
|
|
351
|
+
}
|
|
352
|
+
if (this.located.size >= TURN_STATE_CONSTANTS.MAX_TRACKED_SESSIONS)
|
|
353
|
+
this.located.clear();
|
|
354
|
+
this.located.set(sessionName, { file, at: now });
|
|
355
|
+
}
|
|
356
|
+
if (!file)
|
|
357
|
+
return null;
|
|
358
|
+
return claudeTranscriptTurnState(file, launchedAfter !== undefined ? { launchedAfter } : {});
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Get or create a session's record (bounded).
|
|
362
|
+
*
|
|
363
|
+
* @param sessionName - Session
|
|
364
|
+
* @param now - Clock
|
|
365
|
+
* @returns The record
|
|
366
|
+
*/
|
|
367
|
+
recordFor(sessionName, now) {
|
|
368
|
+
let r = this.records.get(sessionName);
|
|
369
|
+
if (r)
|
|
370
|
+
return r;
|
|
371
|
+
if (this.records.size >= TURN_STATE_CONSTANTS.MAX_TRACKED_SESSIONS) {
|
|
372
|
+
const first = this.records.keys().next().value;
|
|
373
|
+
if (first !== undefined)
|
|
374
|
+
this.records.delete(first);
|
|
375
|
+
}
|
|
376
|
+
r = {
|
|
377
|
+
active: false,
|
|
378
|
+
activeSince: now,
|
|
379
|
+
lastEventAt: 0,
|
|
380
|
+
stoppedAt: null,
|
|
381
|
+
runtimeStartedAt: null,
|
|
382
|
+
openTools: new Map(),
|
|
383
|
+
subagents: new Map(),
|
|
384
|
+
heldSubagents: new Map(),
|
|
385
|
+
anonSeq: 0,
|
|
386
|
+
};
|
|
387
|
+
this.records.set(sessionName, r);
|
|
388
|
+
return r;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=agent-turn-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-turn-state.js","sourceRoot":"","sources":["../../../../../../backend/src/services/monitoring/agent-turn-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAA4B,MAAM,6BAA6B,CAAC;AA+ClG,sCAAsC;AACtC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;AACxI,4DAA4D;AAC5D,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7D,gEAAgE;AAChE,MAAM,IAAI,GAAG,aAAa,CAAC;AAE3B,MAAM,OAAO,GAAgB,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAEnG;;;;;GAKG;AACH,SAAS,MAAM,CAAC,MAAwB;IACvC,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG;YAAE,GAAG,GAAG,CAAC,CAAC;IAC7D,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IACzB,MAAM,CAAC,QAAQ,GAAiC,IAAI,CAAC;IAC5C,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IACjD,iBAAiB,GAA6B,IAAI,CAAC;IAC3D,yEAAyE;IACxD,OAAO,GAAG,IAAI,GAAG,EAA+C,CAAC;IAElF;;OAEG;IACH,MAAM,CAAC,WAAW;QACjB,IAAI,CAAC,qBAAqB,CAAC,QAAQ;YAAE,qBAAqB,CAAC,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAClG,OAAO,qBAAqB,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,wCAAwC;IACxC,MAAM,CAAC,aAAa;QACnB,qBAAqB,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,OAAiC;QACrD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,WAAmB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;QAC7D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,WAAmB,EAAE,KAAa,EAAE,MAAmB,EAAE,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;QAC7F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1C,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACP,qEAAqE;gBACrE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClC,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;QACpB,MAAM,UAAU,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBACf,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;YACrB,CAAC;QACF,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,oBAAoB,CAAC,oBAAoB,CAAC;QACtD,QAAQ,KAAK,EAAE,CAAC;YACf,KAAK,kBAAkB;gBACtB,UAAU,EAAE,CAAC;gBACb,MAAM;YACP,KAAK,YAAY;gBAChB,UAAU,EAAE,CAAC;gBACb,IAAI,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG;oBAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACjF,MAAM;YACP,KAAK,aAAa;gBACjB,UAAU,EAAE,CAAC;gBACb,IAAI,GAAG,CAAC,SAAS;oBAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACrD,MAAM;YACP,KAAK,eAAe;gBACnB,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG;oBAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBACzF,MAAM;YACP,KAAK,cAAc,CAAC,CAAC,CAAC;gBACrB,MAAM,UAAU,GAAG,CAAC,CAAsB,EAAW,EAAE;oBACtD,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;wBAAE,OAAO,IAAI,CAAC;oBACtD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;wBAClB,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;wBACpF,IAAI,IAAI,KAAK,SAAS;4BAAE,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC/C,CAAC;oBACD,OAAO,KAAK,CAAC;gBACd,CAAC,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;oBAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBAC1D,+DAA+D;gBAC/D,yDAAyD;gBACzD,UAAU,EAAE,CAAC;gBACb,MAAM;YACP,CAAC;YACD,KAAK,MAAM;gBACV,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACrB,MAAM;QACR,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAmB;QACzB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,aAAa;QACZ,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,WAAmB;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,WAAmB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;QACxD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;YAC9C,IAAI,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,WAAW,IAAI,oBAAoB,CAAC,eAAe,EAAE,CAAC;gBACzE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACpF,CAAC;YACD,sDAAsD;YACtD,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC3I,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC5E,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,WAAmB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,gBAAgB,IAAI,SAAS,CAAC,CAAC;QAClF,MAAM,cAAc,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,IAAI,oBAAoB,CAAC,mBAAmB,CAAC;QACzH,MAAM,gBAAgB,GAAG,GAAgB,EAAE,CAAC,CAAC;YAC5C,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;YACjE,MAAM,EAAE,YAAY;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,cAAc;gBAAE,OAAO,gBAAgB,EAAE,CAAC;YAC9C,0DAA0D;YAC1D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC;gBAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YAC/I,OAAO,OAAO,CAAC;QAChB,CAAC;QAED,qEAAqE;QACrE,uEAAuE;QACvE,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YACtF,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,KAAK,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,KAAK,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAClC,kEAAkE;YAClE,iEAAiE;YACjE,4DAA4D;YAC5D,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,IAAI,cAAc,CAAC,CAAC;YACvG,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;gBACpC,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;YAC9D,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;gBAC3K,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,0DAA0D;YACpF,CAAC;YACD,IAAI,CAAC,CAAC;gBAAE,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,sCAAsC;YACvE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC5E,CAAC;QACD,oEAAoE;QACpE,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW;YAAE,OAAO,gBAAgB,EAAE,CAAC;QACpF,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,WAAmB,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;QAC9D,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACK,OAAO,CAAC,CAAa,EAAE,EAAU;QACxC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS;YAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,CAAa,EAAE,GAAW;QACxC,MAAM,MAAM,GAAG,oBAAoB,CAAC,gBAAgB,CAAC;QACrD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7D,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;gBAAE,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM;oBAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;IACF,CAAC;IAED;;;;;;;OAOG;IACK,cAAc,CAAC,WAAmB,EAAE,GAAW,EAAE,aAAiC;QACzF,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,IAAmB,CAAC;QACxB,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;YACvE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACpB,CAAC;aAAM,CAAC;YACP,IAAI,CAAC;gBACJ,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC5C,CAAC;YAAC,MAAM,CAAC;gBACR,IAAI,GAAG,IAAI,CAAC;YACb,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,oBAAoB,CAAC,oBAAoB;gBAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,yBAAyB,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAED;;;;;;OAMG;IACK,SAAS,CAAC,WAAmB,EAAE,GAAW;QACjD,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,CAAC;YACpE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC/C,IAAI,KAAK,KAAK,SAAS;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;QACD,CAAC,GAAG;YACH,MAAM,EAAE,KAAK;YACb,WAAW,EAAE,GAAG;YAChB,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,IAAI;YACtB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,SAAS,EAAE,IAAI,GAAG,EAAE;YACpB,aAAa,EAAE,IAAI,GAAG,EAAE;YACxB,OAAO,EAAE,CAAC;SACV,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC;IACV,CAAC"}
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
*
|
|
40
40
|
* @module services/monitoring/claude-transcript-sync
|
|
41
41
|
*/
|
|
42
|
+
import { type CostRepairPlan } from './transcript-cost-repair.js';
|
|
42
43
|
/**
|
|
43
44
|
* How far a single session's transcript has been consumed.
|
|
44
45
|
*
|
|
@@ -87,8 +88,12 @@ export interface TranscriptCursor {
|
|
|
87
88
|
* pointed at one foreign transcript and each accumulated its whole cost —
|
|
88
89
|
* Atlas and Max each showed ~$300. Cursors without this mark are recounted
|
|
89
90
|
* once on load.
|
|
91
|
+
*
|
|
92
|
+
* `3` once `cost` has been checked against the token ledger and, if it was
|
|
93
|
+
* double-counted by the recount bug (#972, v1.20.89–v1.20.192), lowered to
|
|
94
|
+
* the ledger cost (#990). New cursors start at `3`.
|
|
90
95
|
*/
|
|
91
|
-
costBasis?: 2;
|
|
96
|
+
costBasis?: 2 | 3;
|
|
92
97
|
}
|
|
93
98
|
/** One agent's context size, as measured from its latest transcript turn. */
|
|
94
99
|
export interface ContextReading {
|
|
@@ -263,6 +268,35 @@ export declare class ClaudeTranscriptSyncService {
|
|
|
263
268
|
private emitContext;
|
|
264
269
|
/** Reads persisted cursors; a missing or corrupt file starts fresh. */
|
|
265
270
|
private loadCursors;
|
|
271
|
+
/**
|
|
272
|
+
* #990: one-time repair of cursors whose `cost` was double-counted by the
|
|
273
|
+
* recount bug (#972). Each cursor not yet at `costBasis: 3` is checked
|
|
274
|
+
* against its session's token-ledger cost: one clearly above the ledger is
|
|
275
|
+
* lowered to it, one that is not is left alone. Either way it is marked
|
|
276
|
+
* `costBasis: 3` so it is never checked again. A cursor whose ledger cannot
|
|
277
|
+
* be trusted yet (no events, or the newest transcript turn is missing from
|
|
278
|
+
* the ledger) is left unmarked and checked again on the next start.
|
|
279
|
+
*
|
|
280
|
+
* Every change is logged with the before and after figures. With `dryRun`
|
|
281
|
+
* nothing is changed or marked; the plan is only logged and returned.
|
|
282
|
+
*
|
|
283
|
+
* Expects the token ledger to be loaded already (the server loads it before
|
|
284
|
+
* starting this service).
|
|
285
|
+
*
|
|
286
|
+
* @param options.dryRun - Log what would change, change nothing
|
|
287
|
+
* @returns The plan that was applied (or would be, in a dry run)
|
|
288
|
+
*/
|
|
289
|
+
repairDoubleCountedCosts(options?: {
|
|
290
|
+
dryRun?: boolean;
|
|
291
|
+
}): Promise<CostRepairPlan>;
|
|
292
|
+
/**
|
|
293
|
+
* The newest assistant turn this cursor has counted in its current
|
|
294
|
+
* transcript, as a ledger match key.
|
|
295
|
+
*
|
|
296
|
+
* @param cursor - The cursor
|
|
297
|
+
* @returns The key; null when nothing has been counted there yet; undefined when the transcript cannot be read
|
|
298
|
+
*/
|
|
299
|
+
private newestCountedTurn;
|
|
266
300
|
/**
|
|
267
301
|
* Recount, once, the cost of every cursor written before the shared-cwd
|
|
268
302
|
* guard, from its own transcript alone.
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;
|
|
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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"}
|
|
@@ -50,6 +50,7 @@ import { CLAUDE_TRANSCRIPT_SYNC_CONSTANTS } from '../../constants.js';
|
|
|
50
50
|
import { findLatestSessionFile, findSessionJsonlPath } from './claude-session-tokens.service.js';
|
|
51
51
|
import { effectiveClaudeAccount } from '../runtime-fallback/effective-runtime.js';
|
|
52
52
|
import { claudeAccountConfigDir } from '../harness/claude-accounts.js';
|
|
53
|
+
import { planCostRepair, ledgerEventCost } from './transcript-cost-repair.js';
|
|
53
54
|
/**
|
|
54
55
|
* Reads Claude Code transcripts on an interval and records exact token usage.
|
|
55
56
|
*
|
|
@@ -315,7 +316,7 @@ export class ClaudeTranscriptSyncService {
|
|
|
315
316
|
async syncOne(sessionName, filePath, ownedByOther = () => false) {
|
|
316
317
|
let cursor = this.cursors.get(sessionName);
|
|
317
318
|
if (!cursor) {
|
|
318
|
-
cursor = { filePath, offset: 0, seenMessageIds: [], cost: 0, costBasis:
|
|
319
|
+
cursor = { filePath, offset: 0, seenMessageIds: [], cost: 0, costBasis: 3 };
|
|
319
320
|
this.cursors.set(sessionName, cursor);
|
|
320
321
|
}
|
|
321
322
|
let turns = 0;
|
|
@@ -521,7 +522,131 @@ export class ClaudeTranscriptSyncService {
|
|
|
521
522
|
}
|
|
522
523
|
catch {
|
|
523
524
|
this.cursors = new Map();
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
try {
|
|
528
|
+
await this.repairDoubleCountedCosts({
|
|
529
|
+
dryRun: process.env[CLAUDE_TRANSCRIPT_SYNC_CONSTANTS.COST_REPAIR_DRY_RUN_ENV] === '1',
|
|
530
|
+
});
|
|
531
|
+
}
|
|
532
|
+
catch (err) {
|
|
533
|
+
this.logger.warn('Transcript cost repair failed; cursors left as they were', {
|
|
534
|
+
error: err instanceof Error ? err.message : String(err),
|
|
535
|
+
});
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* #990: one-time repair of cursors whose `cost` was double-counted by the
|
|
540
|
+
* recount bug (#972). Each cursor not yet at `costBasis: 3` is checked
|
|
541
|
+
* against its session's token-ledger cost: one clearly above the ledger is
|
|
542
|
+
* lowered to it, one that is not is left alone. Either way it is marked
|
|
543
|
+
* `costBasis: 3` so it is never checked again. A cursor whose ledger cannot
|
|
544
|
+
* be trusted yet (no events, or the newest transcript turn is missing from
|
|
545
|
+
* the ledger) is left unmarked and checked again on the next start.
|
|
546
|
+
*
|
|
547
|
+
* Every change is logged with the before and after figures. With `dryRun`
|
|
548
|
+
* nothing is changed or marked; the plan is only logged and returned.
|
|
549
|
+
*
|
|
550
|
+
* Expects the token ledger to be loaded already (the server loads it before
|
|
551
|
+
* starting this service).
|
|
552
|
+
*
|
|
553
|
+
* @param options.dryRun - Log what would change, change nothing
|
|
554
|
+
* @returns The plan that was applied (or would be, in a dry run)
|
|
555
|
+
*/
|
|
556
|
+
async repairDoubleCountedCosts(options = {}) {
|
|
557
|
+
const pending = [...this.cursors].filter(([, cursor]) => cursor.costBasis !== 3);
|
|
558
|
+
if (pending.length === 0)
|
|
559
|
+
return { changes: [], verified: [], skipped: [] };
|
|
560
|
+
const pendingNames = new Set(pending.map(([name]) => name));
|
|
561
|
+
const ledgerCost = new Map();
|
|
562
|
+
const ledgerTurns = new Map();
|
|
563
|
+
TokenUsageService.getInstance().forEachEvent((sessionName, event) => {
|
|
564
|
+
if (!pendingNames.has(sessionName))
|
|
565
|
+
return;
|
|
566
|
+
ledgerCost.set(sessionName, (ledgerCost.get(sessionName) ?? 0) + ledgerEventCost(event));
|
|
567
|
+
const turns = ledgerTurns.get(sessionName) ?? new Set();
|
|
568
|
+
turns.add(turnKey(event.timestamp, event.input, event.output));
|
|
569
|
+
ledgerTurns.set(sessionName, turns);
|
|
570
|
+
});
|
|
571
|
+
// Is the ledger current for a session? Its newest counted transcript turn must be in it.
|
|
572
|
+
const current = new Map();
|
|
573
|
+
for (const [sessionName, cursor] of pending) {
|
|
574
|
+
if (!ledgerCost.has(sessionName))
|
|
575
|
+
continue;
|
|
576
|
+
const newest = await this.newestCountedTurn(cursor);
|
|
577
|
+
current.set(sessionName, newest === undefined ? undefined : newest === null ? true : ledgerTurns.get(sessionName)?.has(newest) === true);
|
|
578
|
+
}
|
|
579
|
+
const plan = planCostRepair(Object.fromEntries(pending), (sessionName) => {
|
|
580
|
+
const cost = ledgerCost.get(sessionName);
|
|
581
|
+
return cost === undefined ? undefined : { cost, current: current.get(sessionName) };
|
|
582
|
+
});
|
|
583
|
+
const round = (usd) => Math.round(usd * 100) / 100;
|
|
584
|
+
for (const change of plan.changes) {
|
|
585
|
+
this.logger.info(options.dryRun
|
|
586
|
+
? 'Cost repair (dry run): would lower a double-counted session cost to its ledger cost'
|
|
587
|
+
: 'Cost repair: lowered a double-counted session cost to its ledger cost', {
|
|
588
|
+
sessionName: change.sessionName,
|
|
589
|
+
was: round(change.was),
|
|
590
|
+
now: round(change.now),
|
|
591
|
+
removed: round(change.excess),
|
|
592
|
+
});
|
|
593
|
+
}
|
|
594
|
+
this.logger.info(options.dryRun ? 'Cost repair dry run finished; nothing changed' : 'Cost repair finished', {
|
|
595
|
+
lowered: plan.changes.length,
|
|
596
|
+
removedUsd: round(plan.changes.reduce((n, c) => n + c.excess, 0)),
|
|
597
|
+
alreadyCorrect: plan.verified.length,
|
|
598
|
+
skipped: plan.skipped,
|
|
599
|
+
});
|
|
600
|
+
if (options.dryRun)
|
|
601
|
+
return plan;
|
|
602
|
+
for (const change of plan.changes) {
|
|
603
|
+
const cursor = this.cursors.get(change.sessionName);
|
|
604
|
+
if (!cursor)
|
|
605
|
+
continue;
|
|
606
|
+
cursor.cost = change.now;
|
|
607
|
+
cursor.costBasis = 3;
|
|
608
|
+
TokenUsageService.getInstance().overrideSessionCost(change.sessionName, cursor.cost);
|
|
609
|
+
}
|
|
610
|
+
for (const sessionName of plan.verified) {
|
|
611
|
+
const cursor = this.cursors.get(sessionName);
|
|
612
|
+
if (cursor)
|
|
613
|
+
cursor.costBasis = 3;
|
|
524
614
|
}
|
|
615
|
+
if (plan.changes.length > 0 || plan.verified.length > 0)
|
|
616
|
+
await this.saveCursors();
|
|
617
|
+
return plan;
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* The newest assistant turn this cursor has counted in its current
|
|
621
|
+
* transcript, as a ledger match key.
|
|
622
|
+
*
|
|
623
|
+
* @param cursor - The cursor
|
|
624
|
+
* @returns The key; null when nothing has been counted there yet; undefined when the transcript cannot be read
|
|
625
|
+
*/
|
|
626
|
+
async newestCountedTurn(cursor) {
|
|
627
|
+
let text;
|
|
628
|
+
try {
|
|
629
|
+
const handle = await fs.open(cursor.filePath, 'r');
|
|
630
|
+
try {
|
|
631
|
+
const size = (await handle.stat()).size;
|
|
632
|
+
const length = Math.min(cursor.offset, size);
|
|
633
|
+
const buf = Buffer.alloc(length);
|
|
634
|
+
await handle.read(buf, 0, length, 0);
|
|
635
|
+
text = buf.toString('utf-8');
|
|
636
|
+
}
|
|
637
|
+
finally {
|
|
638
|
+
await handle.close();
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
catch {
|
|
642
|
+
return undefined;
|
|
643
|
+
}
|
|
644
|
+
const lastNewline = text.lastIndexOf('\n');
|
|
645
|
+
if (lastNewline < 0)
|
|
646
|
+
return null;
|
|
647
|
+
const turns = this.parseTurns(text.slice(0, lastNewline), new Set());
|
|
648
|
+
const newest = turns[turns.length - 1];
|
|
649
|
+
return newest ? turnKey(newest.timestamp, newest.input, newest.output) : null;
|
|
525
650
|
}
|
|
526
651
|
/**
|
|
527
652
|
* Recount, once, the cost of every cursor written before the shared-cwd
|
|
@@ -535,7 +660,7 @@ export class ClaudeTranscriptSyncService {
|
|
|
535
660
|
async recountLegacyCosts() {
|
|
536
661
|
let changed = false;
|
|
537
662
|
for (const [sessionName, cursor] of this.cursors) {
|
|
538
|
-
if (cursor.costBasis === 2)
|
|
663
|
+
if (cursor.costBasis === 2 || cursor.costBasis === 3)
|
|
539
664
|
continue;
|
|
540
665
|
let text;
|
|
541
666
|
try {
|
|
@@ -600,6 +725,17 @@ export class ClaudeTranscriptSyncService {
|
|
|
600
725
|
return this.cursors.get(sessionName);
|
|
601
726
|
}
|
|
602
727
|
}
|
|
728
|
+
/**
|
|
729
|
+
* Key that matches a transcript turn to its token-ledger event.
|
|
730
|
+
*
|
|
731
|
+
* @param timestamp - Turn timestamp (the ledger keeps the turn's own)
|
|
732
|
+
* @param input - Fresh input tokens
|
|
733
|
+
* @param output - Output tokens
|
|
734
|
+
* @returns Match key
|
|
735
|
+
*/
|
|
736
|
+
function turnKey(timestamp, input, output) {
|
|
737
|
+
return `${timestamp}|${input}|${output}`;
|
|
738
|
+
}
|
|
603
739
|
/**
|
|
604
740
|
* Convenience accessor for the shared sync service.
|
|
605
741
|
*
|