crewly 1.6.5 → 1.7.0
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/roles/auditor/prompt.md +24 -0
- package/config/roles/developer/prompt.md +2 -1
- package/config/roles/orchestrator/prompt.md +74 -2
- package/config/roles/team-leader/prompt.md +6 -0
- package/config/skills/agent/core/create-request/SKILL.md +1 -1
- package/config/skills/agent/core/create-request/execute.sh +29 -2
- package/config/skills/agent/core/create-request/execute.test.sh +168 -0
- package/config/skills/agent/core/report-status/SKILL.md +8 -1
- package/config/skills/agent/core/report-status/execute.sh +23 -1
- package/config/skills/orchestrator/heartbeat/execute.sh +48 -6
- package/config/sops/common/mid-flight-milestone-surface.md +128 -0
- package/config/sops/common/owner-facing-communication.md +46 -2
- package/config/sops/developer/git-workflow.md +33 -0
- package/dist/backend/backend/src/constants.d.ts +12 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +12 -0
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +2 -2
- package/dist/backend/backend/src/controllers/browser/browser.controller.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 +6 -0
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts +73 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +128 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts +3 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js +8 -0
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/session/session.controller.js +50 -8
- package/dist/backend/backend/src/controllers/session/session.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 +215 -94
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +185 -36
- 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 +11 -1
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +42 -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 +218 -6
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +61 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +117 -9
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +33 -0
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +108 -4
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js +40 -2
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +48 -331
- package/dist/backend/backend/src/services/chat/chat.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.js +261 -712
- 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 +82 -1
- 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 +120 -2
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts +114 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js +182 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.providers.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts +188 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js +434 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.relay-adapter.service.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts +401 -5
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js +619 -3
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts +93 -0
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js +138 -0
- package/dist/backend/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.d.ts +46 -0
- 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 +75 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts +10 -2
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js +178 -10
- package/dist/backend/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +37 -0
- 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 +71 -0
- 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 +33 -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 +1 -1
- package/dist/backend/backend/src/services/chat-v2/types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts +22 -0
- 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 +71 -1
- 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 +102 -1
- 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 +61 -0
- package/dist/backend/backend/src/services/cloud/cloud-sync.types.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts +21 -3
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js +47 -13
- package/dist/backend/backend/src/services/cloud/device-auto-discovery.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/system-health.util.d.ts +25 -4
- package/dist/backend/backend/src/services/core/system-health.util.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/system-health.util.js +30 -5
- package/dist/backend/backend/src/services/core/system-health.util.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js +22 -11
- package/dist/backend/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +35 -3
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts +2 -4
- package/dist/backend/backend/src/services/messaging/message-replay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/message-replay.service.js +22 -12
- package/dist/backend/backend/src/services/messaging/message-replay.service.js.map +1 -1
- 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 +25 -5
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -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 +13 -3
- package/dist/backend/backend/src/services/monitoring/system-resource-alert.service.js.map +1 -1
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts +99 -0
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.d.ts.map +1 -0
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js +225 -0
- package/dist/backend/backend/src/services/notification/milestone-notification.subscriber.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +39 -18
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +60 -32
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +134 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +416 -13
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +73 -7
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/session-handoff.service.js +30 -4
- package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/skill/skill-executor.service.js +13 -1
- package/dist/backend/backend/src/services/skill/skill-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js +9 -6
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +21 -2
- 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 +120 -46
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +49 -0
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +33 -2
- 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 +160 -8
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/cascade-request-status.js +55 -2
- package/dist/backend/backend/src/services/v3/cascade-request-status.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.js +9 -1
- package/dist/backend/backend/src/services/v3/mission-executor.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js +28 -3
- package/dist/backend/backend/src/services/v3/request-decompose.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +5 -2
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js +57 -15
- package/dist/backend/backend/src/services/v3/request-status-update.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts +39 -0
- package/dist/backend/backend/src/services/v3/trigger-engine.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js +81 -0
- package/dist/backend/backend/src/services/v3/trigger-engine.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +17 -1
- 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 +22 -3
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js +26 -10
- package/dist/backend/backend/src/services/whatsapp/whatsapp-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/workflow/cron-task.service.js +68 -5
- package/dist/backend/backend/src/services/workflow/cron-task.service.js.map +1 -1
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts +44 -0
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js +57 -0
- package/dist/backend/backend/src/services/workflow/team-identifier-resolver.js.map +1 -0
- package/dist/backend/backend/src/types/credential.types.d.ts +17 -1
- package/dist/backend/backend/src/types/credential.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/credential.types.js +15 -5
- package/dist/backend/backend/src/types/credential.types.js.map +1 -1
- package/dist/backend/backend/src/types/cron-task.types.d.ts +17 -0
- package/dist/backend/backend/src/types/cron-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts +1 -1
- package/dist/backend/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/event-bus.types.js +12 -0
- package/dist/backend/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.d.ts +10 -13
- package/dist/backend/backend/src/types/intent-task.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/intent-task.types.js +4 -1
- package/dist/backend/backend/src/types/intent-task.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +23 -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/backend/src/utils/team.utils.d.ts +3 -1
- package/dist/backend/backend/src/utils/team.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/team.utils.js +26 -5
- package/dist/backend/backend/src/utils/team.utils.js.map +1 -1
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts +23 -0
- package/dist/backend/backend/src/websocket/chat-v2.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js +56 -7
- package/dist/backend/backend/src/websocket/chat-v2.gateway.js.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts +19 -4
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.js +78 -63
- package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/terminal.gateway.js +10 -2
- package/dist/backend/backend/src/websocket/terminal.gateway.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +12 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +12 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/event-bus/event-bus.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js +22 -11
- package/dist/cli/backend/src/services/event-bus/event-bus.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +35 -3
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/skill/skill-executor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/skill/skill-executor.service.js +13 -1
- package/dist/cli/backend/src/services/skill/skill-executor.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +33 -2
- 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 +160 -8
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/types/credential.types.d.ts +17 -1
- package/dist/cli/backend/src/types/credential.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/credential.types.js +15 -5
- package/dist/cli/backend/src/types/credential.types.js.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts +1 -1
- package/dist/cli/backend/src/types/event-bus.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/event-bus.types.js +12 -0
- package/dist/cli/backend/src/types/event-bus.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +23 -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/commands/start.js +73 -12
- package/dist/cli/cli/src/commands/start.js.map +1 -1
- package/frontend/dist/assets/index-b279da34.js +4926 -0
- package/frontend/dist/assets/{index-b7e59b2b.css → index-c07e04c0.css} +2 -2
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/index-698305f3.js +0 -5228
|
@@ -116,8 +116,10 @@ CREATE TABLE IF NOT EXISTS chat_channels (
|
|
|
116
116
|
last_message_at INTEGER,
|
|
117
117
|
-- Phase A (SEALED §3.1): channel-type discriminator. 'dm' preserves the
|
|
118
118
|
-- Phase 1 1:1 user↔agent contract; 'channel' is the Slack-like team
|
|
119
|
-
-- surface.
|
|
120
|
-
|
|
119
|
+
-- surface. 'huddle' (Phase B-2, 2026-05-17) is ad-hoc multi-agent
|
|
120
|
+
-- groups with explicit membership in chat_channel_members.
|
|
121
|
+
-- Existing rows backfill to 'dm' via applyPhaseAColumnUpgrades.
|
|
122
|
+
type TEXT NOT NULL DEFAULT 'dm' CHECK(type IN ('dm','channel','huddle')),
|
|
121
123
|
-- Phase A (SEALED §3.1): team workspace link. Required at the service
|
|
122
124
|
-- layer when type='channel'; null for type='dm'.
|
|
123
125
|
team_id TEXT,
|
|
@@ -193,6 +195,23 @@ CREATE TABLE IF NOT EXISTS chat_offline_queue (
|
|
|
193
195
|
CREATE INDEX IF NOT EXISTS ix_queue_pending
|
|
194
196
|
ON chat_offline_queue(agent_session, delivered_at)
|
|
195
197
|
WHERE delivered_at IS NULL;
|
|
198
|
+
|
|
199
|
+
-- Phase B-2 (2026-05-17): huddle membership roster. One row per
|
|
200
|
+
-- (huddle_channel, agent_session_name). For type='huddle' channels
|
|
201
|
+
-- only; 'dm' and 'channel' rows have no entries here.
|
|
202
|
+
--
|
|
203
|
+
-- Dispatcher uses this list to fan a user message out to every
|
|
204
|
+
-- huddle member; the @-mention subset gets a "must respond" prompt
|
|
205
|
+
-- variant while the rest get an "optional" one.
|
|
206
|
+
CREATE TABLE IF NOT EXISTS chat_channel_members (
|
|
207
|
+
channel_id TEXT NOT NULL REFERENCES chat_channels(id) ON DELETE CASCADE,
|
|
208
|
+
member_session TEXT NOT NULL,
|
|
209
|
+
joined_at INTEGER NOT NULL,
|
|
210
|
+
PRIMARY KEY (channel_id, member_session)
|
|
211
|
+
);
|
|
212
|
+
|
|
213
|
+
CREATE INDEX IF NOT EXISTS ix_channel_members_session
|
|
214
|
+
ON chat_channel_members(member_session);
|
|
196
215
|
`;
|
|
197
216
|
/**
|
|
198
217
|
* Phase A indexes that reference Phase A columns. Must run AFTER
|
|
@@ -204,13 +223,15 @@ CREATE INDEX IF NOT EXISTS ix_queue_pending
|
|
|
204
223
|
* harmless no-op (`CREATE INDEX IF NOT EXISTS`).
|
|
205
224
|
*/
|
|
206
225
|
export const CHAT_V2_PHASE_A_INDEX_SQL = `
|
|
207
|
-
-- Phase A (SEALED §3.1)
|
|
208
|
-
--
|
|
209
|
-
--
|
|
210
|
-
--
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
226
|
+
-- Phase A (SEALED §3.1) used to define uq_channel_agent_dm_active
|
|
227
|
+
-- enforcing 1:1 agent<->DM-channel binding. That constraint was dropped
|
|
228
|
+
-- per the unified-chat-message-store spec (2026-05-14 §"Phase 2 design
|
|
229
|
+
-- discovery" → Option B): legacy ChatService models "one conversation
|
|
230
|
+
-- per Slack thread or web chat session", so an agent participates in
|
|
231
|
+
-- N concurrent DM-style channels. Dropping the index removes the
|
|
232
|
+
-- agent_already_bound (409) failure that would otherwise block
|
|
233
|
+
-- migration of the legacy multi-thread model. Existing databases get
|
|
234
|
+
-- the drop applied in applyPhaseAColumnUpgrades.
|
|
214
235
|
|
|
215
236
|
-- Phase A (SEALED §3.1): scoped lookup for "all channels in team T" and
|
|
216
237
|
-- "project P channels". Indexes by team first because team-scoped reads
|
|
@@ -312,11 +333,158 @@ export function applyPhaseAColumnUpgrades(db) {
|
|
|
312
333
|
db.exec('DROP INDEX IF EXISTS uq_channel_agent_active');
|
|
313
334
|
legacyIndexDropped = true;
|
|
314
335
|
}
|
|
336
|
+
// Unified-chat-message-store spec (2026-05-14 §"Phase 2 design
|
|
337
|
+
// discovery" → Option B): drop the post-Phase-A
|
|
338
|
+
// `uq_channel_agent_dm_active` partial index. The legacy ChatService
|
|
339
|
+
// models "one conversation per Slack thread or web chat session"
|
|
340
|
+
// — N concurrent channels per agent. The 1:1 DM-binding the index
|
|
341
|
+
// enforced would block migration. Existing fresh installs since
|
|
342
|
+
// the spec was merged no longer create it (see CHAT_V2_PHASE_A_INDEX_SQL).
|
|
343
|
+
const phaseADmIdx = db
|
|
344
|
+
.prepare(`SELECT name FROM sqlite_master
|
|
345
|
+
WHERE type = 'index' AND name = 'uq_channel_agent_dm_active'`)
|
|
346
|
+
.get();
|
|
347
|
+
let phaseADmIndexDropped = false;
|
|
348
|
+
if (phaseADmIdx) {
|
|
349
|
+
db.exec('DROP INDEX IF EXISTS uq_channel_agent_dm_active');
|
|
350
|
+
phaseADmIndexDropped = true;
|
|
351
|
+
}
|
|
315
352
|
// Now that all Phase A columns are guaranteed to exist, create the
|
|
316
353
|
// Phase A indexes that reference them. Idempotent — `CREATE INDEX IF NOT
|
|
317
354
|
// EXISTS` makes this a no-op on subsequent boots.
|
|
318
355
|
db.exec(CHAT_V2_PHASE_A_INDEX_SQL);
|
|
319
|
-
|
|
356
|
+
// Phase B-2 (2026-05-17): relax the chat_channels.type CHECK so
|
|
357
|
+
// `'huddle'` is accepted. Older DBs were built with
|
|
358
|
+
// `CHECK(type IN ('dm','channel'))`; SQLite can't ALTER a CHECK in
|
|
359
|
+
// place, so we rebuild the table when the legacy constraint is
|
|
360
|
+
// detected. Skipped on fresh installs (the new CHECK is already in
|
|
361
|
+
// CHAT_V2_MIGRATION_SQL).
|
|
362
|
+
const channelsCheckRebuilt = rebuildChatChannelsForHuddleIfNeeded(db);
|
|
363
|
+
// Phase B-2: chat_channel_members may be missing on databases
|
|
364
|
+
// created before this migration. `CREATE TABLE IF NOT EXISTS` is
|
|
365
|
+
// idempotent — no-op on fresh installs since the table is also in
|
|
366
|
+
// CHAT_V2_MIGRATION_SQL.
|
|
367
|
+
db.exec(`
|
|
368
|
+
CREATE TABLE IF NOT EXISTS chat_channel_members (
|
|
369
|
+
channel_id TEXT NOT NULL REFERENCES chat_channels(id) ON DELETE CASCADE,
|
|
370
|
+
member_session TEXT NOT NULL,
|
|
371
|
+
joined_at INTEGER NOT NULL,
|
|
372
|
+
PRIMARY KEY (channel_id, member_session)
|
|
373
|
+
);
|
|
374
|
+
CREATE INDEX IF NOT EXISTS ix_channel_members_session
|
|
375
|
+
ON chat_channel_members(member_session);
|
|
376
|
+
`);
|
|
377
|
+
return {
|
|
378
|
+
channelsAdded,
|
|
379
|
+
messagesAdded,
|
|
380
|
+
legacyIndexDropped,
|
|
381
|
+
phaseADmIndexDropped,
|
|
382
|
+
channelsCheckRebuilt,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Phase B-2: rebuild `chat_channels` if its `type` CHECK constraint
|
|
387
|
+
* doesn't list `'huddle'`. SQLite has no `ALTER ... DROP CHECK`, so the
|
|
388
|
+
* only path is the standard "create new table, INSERT...SELECT, drop
|
|
389
|
+
* old, rename new" dance.
|
|
390
|
+
*
|
|
391
|
+
* Idempotent: returns `false` (and does nothing) when the table
|
|
392
|
+
* already accepts `'huddle'`, which is the case on fresh installs and
|
|
393
|
+
* on subsequent boots after the first rebuild.
|
|
394
|
+
*
|
|
395
|
+
* @param db - The chat database handle
|
|
396
|
+
* @returns true when a rebuild happened, false when no-op
|
|
397
|
+
*/
|
|
398
|
+
function rebuildChatChannelsForHuddleIfNeeded(db) {
|
|
399
|
+
const row = db
|
|
400
|
+
.prepare(`SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'chat_channels'`)
|
|
401
|
+
.get();
|
|
402
|
+
if (!row || !row.sql)
|
|
403
|
+
return false;
|
|
404
|
+
if (row.sql.includes("'huddle'")) {
|
|
405
|
+
// Constraint already permits 'huddle' — fresh install or
|
|
406
|
+
// already-migrated. No rebuild needed.
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
// Snapshot what indexes existed on the old table so we can re-create
|
|
410
|
+
// them after the rename. SQLite drops indexes attached to a renamed
|
|
411
|
+
// table when the original table is dropped.
|
|
412
|
+
const indexRows = db
|
|
413
|
+
.prepare(`SELECT name, sql FROM sqlite_master
|
|
414
|
+
WHERE type = 'index'
|
|
415
|
+
AND tbl_name = 'chat_channels'
|
|
416
|
+
AND sql IS NOT NULL`)
|
|
417
|
+
.all();
|
|
418
|
+
// CRITICAL: `chat_messages.channel_id` is `REFERENCES chat_channels(id)
|
|
419
|
+
// ON DELETE CASCADE`. With `PRAGMA foreign_keys = ON` (set in
|
|
420
|
+
// openChatDatabase), `DROP TABLE chat_channels` would cascade-delete
|
|
421
|
+
// EVERY message in the database — wiping chat history on a real
|
|
422
|
+
// user's OSS install. SQLite's recommended 12-step ALTER TABLE
|
|
423
|
+
// procedure (https://www.sqlite.org/lang_altertable.html#otheralter)
|
|
424
|
+
// requires `foreign_keys = OFF` for the duration of the rebuild and a
|
|
425
|
+
// `foreign_key_check` afterward to assert no orphans remain.
|
|
426
|
+
//
|
|
427
|
+
// We capture the prior pragma state and restore it on exit so this
|
|
428
|
+
// function is safe to call against either a FK-enforcing or
|
|
429
|
+
// FK-disabled database.
|
|
430
|
+
const prevForeignKeys = db.prepare('PRAGMA foreign_keys').get().foreign_keys;
|
|
431
|
+
db.exec('PRAGMA foreign_keys = OFF');
|
|
432
|
+
// Wrap in a transaction so a crash mid-rebuild rolls back cleanly.
|
|
433
|
+
db.exec('BEGIN');
|
|
434
|
+
try {
|
|
435
|
+
db.exec(`
|
|
436
|
+
CREATE TABLE chat_channels_new (
|
|
437
|
+
id TEXT PRIMARY KEY,
|
|
438
|
+
agent_session TEXT NOT NULL,
|
|
439
|
+
owner_user_id TEXT NOT NULL,
|
|
440
|
+
name TEXT NOT NULL,
|
|
441
|
+
purpose TEXT,
|
|
442
|
+
created_at INTEGER NOT NULL,
|
|
443
|
+
archived_at INTEGER,
|
|
444
|
+
last_message_at INTEGER,
|
|
445
|
+
type TEXT NOT NULL DEFAULT 'dm'
|
|
446
|
+
CHECK(type IN ('dm','channel','huddle')),
|
|
447
|
+
team_id TEXT,
|
|
448
|
+
project_id TEXT,
|
|
449
|
+
target_member_id TEXT
|
|
450
|
+
);
|
|
451
|
+
`);
|
|
452
|
+
db.exec(`
|
|
453
|
+
INSERT INTO chat_channels_new (
|
|
454
|
+
id, agent_session, owner_user_id, name, purpose,
|
|
455
|
+
created_at, archived_at, last_message_at,
|
|
456
|
+
type, team_id, project_id, target_member_id
|
|
457
|
+
)
|
|
458
|
+
SELECT
|
|
459
|
+
id, agent_session, owner_user_id, name, purpose,
|
|
460
|
+
created_at, archived_at, last_message_at,
|
|
461
|
+
type, team_id, project_id, target_member_id
|
|
462
|
+
FROM chat_channels;
|
|
463
|
+
`);
|
|
464
|
+
db.exec(`DROP TABLE chat_channels;`);
|
|
465
|
+
db.exec(`ALTER TABLE chat_channels_new RENAME TO chat_channels;`);
|
|
466
|
+
// Re-create the pre-existing indexes against the new table.
|
|
467
|
+
for (const idx of indexRows) {
|
|
468
|
+
db.exec(idx.sql);
|
|
469
|
+
}
|
|
470
|
+
db.exec('COMMIT');
|
|
471
|
+
}
|
|
472
|
+
catch (err) {
|
|
473
|
+
db.exec('ROLLBACK');
|
|
474
|
+
db.exec(`PRAGMA foreign_keys = ${prevForeignKeys ? 'ON' : 'OFF'}`);
|
|
475
|
+
throw err;
|
|
476
|
+
}
|
|
477
|
+
// Sanity check: no orphaned FK references after the rebuild. If any
|
|
478
|
+
// chat_messages.channel_id no longer points at a valid row we surface
|
|
479
|
+
// it as an error so the caller knows the DB needs operator attention
|
|
480
|
+
// — better than silently re-enabling FK enforcement and getting
|
|
481
|
+
// surprised at the next write.
|
|
482
|
+
const orphans = db.prepare(`PRAGMA foreign_key_check`).all();
|
|
483
|
+
db.exec(`PRAGMA foreign_keys = ${prevForeignKeys ? 'ON' : 'OFF'}`);
|
|
484
|
+
if (orphans.length > 0) {
|
|
485
|
+
throw new Error(`chat-v2 migration: foreign_key_check found ${orphans.length} orphaned rows after chat_channels rebuild`);
|
|
486
|
+
}
|
|
487
|
+
return true;
|
|
320
488
|
}
|
|
321
489
|
/**
|
|
322
490
|
* Open (or create) the chat database, apply PRAGMAs, run the Phase 1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-db.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/chat-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,aAAa,EAAwB,MAAM,8BAA8B,CAAC;AAEnF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,GAAG,uBAAuB,CACzC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC/C,CAAC;AAEF,iFAAiF;AACjF,IAAI,cAAc,GAA2C,IAAI,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,IAAI,oBAAoB,GAAuC,IAAI,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,UAAU,gCAAgC,CAC9C,EAAsC;IAEtC,oBAAoB,GAAG,EAAE,CAAC;IAC1B,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB;IACvB,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,oBAAoB,EAAE,CAAC;YACzB,gEAAgE;YAChE,2DAA2D;YAC3D,MAAM,WAAW,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CACpC,oBAAqB,CAAC,IAAI,CAAC,CAA2B,CAAC;YACzD,cAAc,GAAG,sBAAsB,CACrC,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,sBAAsB,CACrC,gBAAgB,EAChB,WAAW,CACZ,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,cAAe,CAAC;AACzB,CAAC;AAKD,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG
|
|
1
|
+
{"version":3,"file":"chat-db.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/chat-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -146,5 +146,42 @@ export declare class MessageStore {
|
|
|
146
146
|
* @returns Total number of persisted chat messages
|
|
147
147
|
*/
|
|
148
148
|
countAll(): number;
|
|
149
|
+
/**
|
|
150
|
+
* Phase 6.0b — delete every message in a channel while leaving the
|
|
151
|
+
* channel row in place. Used by the legacy `clearConversation`
|
|
152
|
+
* controller route. Not transactional with channel state; callers
|
|
153
|
+
* that need atomicity should wrap in their own transaction.
|
|
154
|
+
*
|
|
155
|
+
* @param channelId - The channel whose messages to remove
|
|
156
|
+
* @returns Number of rows deleted
|
|
157
|
+
*/
|
|
158
|
+
deleteAllByChannel(channelId: string): number;
|
|
159
|
+
/**
|
|
160
|
+
* Merge a JSON patch into an existing message's metadata column.
|
|
161
|
+
* Implementation of Phase 6.0 of the unified-chat-message-store spec
|
|
162
|
+
* — replaces the legacy `ChatService.updateMessageMetadata` so all
|
|
163
|
+
* mutation flows through the canonical store. SQLite's `json_patch`
|
|
164
|
+
* built-in handles the merge atomically.
|
|
165
|
+
*
|
|
166
|
+
* @param id - Message id to update
|
|
167
|
+
* @param patch - Partial metadata object to merge in (shallow merge)
|
|
168
|
+
* @returns The post-update row, or null if the message doesn't exist
|
|
169
|
+
*/
|
|
170
|
+
updateMetadata(id: string, patch: Record<string, unknown>): ChatMessageRow | null;
|
|
171
|
+
/**
|
|
172
|
+
* Find messages with `metadata.slackDeliveryStatus = 'pending'` AND a
|
|
173
|
+
* non-empty `metadata.slackChannelId`, created within the past
|
|
174
|
+
* `maxAgeMs`. Used by `NotifyReconciliationService` to retry Slack
|
|
175
|
+
* deliveries that failed mid-flight.
|
|
176
|
+
*
|
|
177
|
+
* The `slackDeliveryStatus` field is set by callers (legacy code and
|
|
178
|
+
* Phase 3 Slack writes) — this method is the canonical replacement
|
|
179
|
+
* for `ChatService.getMessagesWithPendingSlackDelivery`.
|
|
180
|
+
*
|
|
181
|
+
* @param maxAgeMs - Lookback window in milliseconds
|
|
182
|
+
* @param nowMs - Optional clock override for tests
|
|
183
|
+
* @returns Up to `MAX_LIMIT` matching rows, newest first
|
|
184
|
+
*/
|
|
185
|
+
findPendingSlackDelivery(maxAgeMs: number, nowMs?: number): ChatMessageRow[];
|
|
149
186
|
}
|
|
150
187
|
//# sourceMappingURL=message.store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.store.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAoBjD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAGtE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,wBAAwB,GAAG,IAAI,CAqB/F;AAMD,uCAAuC;AACvC,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,8EAA8E;AAC9E,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,cAAc,CAAC;IACpB,8EAA8E;IAC9E,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,SAAS,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACpC;AAMD,6CAA6C;AAC7C,qBAAa,YAAY;IAMX,OAAO,CAAC,QAAQ,CAAC,EAAE;IAL/B,iCAAiC;IACjC,MAAM,CAAC,QAAQ,CAAC,SAAS,OAAO;IAChC,oDAAoD;IACpD,MAAM,CAAC,QAAQ,CAAC,aAAa,MAAM;gBAEN,EAAE,EAAE,YAAY;IAE7C;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB;IA4GtD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAW1C;;;;;;OAMG;IACH,aAAa,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,kBAAkB,GAC3B;QACD,IAAI,EAAE,cAAc,EAAE,CAAC;QACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B;IAoBD,6DAA6D;IAC7D,OAAO,CAAC,SAAS;IAmDjB,0DAA0D;IAC1D,OAAO,CAAC,YAAY;IAiCpB;;;;;OAKG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAWrC,+DAA+D;IAC/D,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOhC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,IAAI,MAAM;
|
|
1
|
+
{"version":3,"file":"message.store.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"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"}
|
|
@@ -300,5 +300,76 @@ export class MessageStore {
|
|
|
300
300
|
.get();
|
|
301
301
|
return row.n;
|
|
302
302
|
}
|
|
303
|
+
/**
|
|
304
|
+
* Phase 6.0b — delete every message in a channel while leaving the
|
|
305
|
+
* channel row in place. Used by the legacy `clearConversation`
|
|
306
|
+
* controller route. Not transactional with channel state; callers
|
|
307
|
+
* that need atomicity should wrap in their own transaction.
|
|
308
|
+
*
|
|
309
|
+
* @param channelId - The channel whose messages to remove
|
|
310
|
+
* @returns Number of rows deleted
|
|
311
|
+
*/
|
|
312
|
+
deleteAllByChannel(channelId) {
|
|
313
|
+
const result = this.db
|
|
314
|
+
.prepare(`DELETE FROM chat_messages WHERE channel_id = ?`)
|
|
315
|
+
.run(channelId);
|
|
316
|
+
return result.changes;
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Merge a JSON patch into an existing message's metadata column.
|
|
320
|
+
* Implementation of Phase 6.0 of the unified-chat-message-store spec
|
|
321
|
+
* — replaces the legacy `ChatService.updateMessageMetadata` so all
|
|
322
|
+
* mutation flows through the canonical store. SQLite's `json_patch`
|
|
323
|
+
* built-in handles the merge atomically.
|
|
324
|
+
*
|
|
325
|
+
* @param id - Message id to update
|
|
326
|
+
* @param patch - Partial metadata object to merge in (shallow merge)
|
|
327
|
+
* @returns The post-update row, or null if the message doesn't exist
|
|
328
|
+
*/
|
|
329
|
+
updateMetadata(id, patch) {
|
|
330
|
+
const patchJson = JSON.stringify(patch);
|
|
331
|
+
const existing = this.db
|
|
332
|
+
.prepare('SELECT metadata FROM chat_messages WHERE id = ?')
|
|
333
|
+
.get(id);
|
|
334
|
+
if (!existing) {
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
// SQLite's json_patch merges the right operand into the left,
|
|
338
|
+
// adding missing keys and overwriting existing ones. NULL-safe:
|
|
339
|
+
// when the current metadata is NULL we feed an empty object so
|
|
340
|
+
// the patch becomes the final state.
|
|
341
|
+
const baseExpr = existing.metadata ?? '{}';
|
|
342
|
+
this.db
|
|
343
|
+
.prepare(`UPDATE chat_messages SET metadata = json_patch(?, ?) WHERE id = ?`)
|
|
344
|
+
.run(baseExpr, patchJson, id);
|
|
345
|
+
return this.getById(id);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Find messages with `metadata.slackDeliveryStatus = 'pending'` AND a
|
|
349
|
+
* non-empty `metadata.slackChannelId`, created within the past
|
|
350
|
+
* `maxAgeMs`. Used by `NotifyReconciliationService` to retry Slack
|
|
351
|
+
* deliveries that failed mid-flight.
|
|
352
|
+
*
|
|
353
|
+
* The `slackDeliveryStatus` field is set by callers (legacy code and
|
|
354
|
+
* Phase 3 Slack writes) — this method is the canonical replacement
|
|
355
|
+
* for `ChatService.getMessagesWithPendingSlackDelivery`.
|
|
356
|
+
*
|
|
357
|
+
* @param maxAgeMs - Lookback window in milliseconds
|
|
358
|
+
* @param nowMs - Optional clock override for tests
|
|
359
|
+
* @returns Up to `MAX_LIMIT` matching rows, newest first
|
|
360
|
+
*/
|
|
361
|
+
findPendingSlackDelivery(maxAgeMs, nowMs) {
|
|
362
|
+
const cutoff = (nowMs ?? Date.now()) - maxAgeMs;
|
|
363
|
+
const rows = this.db
|
|
364
|
+
.prepare(`SELECT ${MESSAGE_SELECT_COLUMNS}
|
|
365
|
+
FROM chat_messages
|
|
366
|
+
WHERE json_extract(metadata, '$.slackDeliveryStatus') = 'pending'
|
|
367
|
+
AND json_extract(metadata, '$.slackChannelId') IS NOT NULL
|
|
368
|
+
AND created_at >= ?
|
|
369
|
+
ORDER BY created_at DESC
|
|
370
|
+
LIMIT ${MessageStore.MAX_LIMIT}`)
|
|
371
|
+
.all(cutoff);
|
|
372
|
+
return rows;
|
|
373
|
+
}
|
|
303
374
|
}
|
|
304
375
|
//# sourceMappingURL=message.store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.store.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message.store.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/chat-v2/sqlite/message.store.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,21 @@ export type ChatAgentPresenceStatus = 'online' | 'busy' | 'offline' | 'starting'
|
|
|
28
28
|
* `idle` / `inactive` UI states via `@crewly/chat-ui`'s `ChatPresenceStatus`
|
|
29
29
|
* union (the translation lives at the boundary, not here).
|
|
30
30
|
*/
|
|
31
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Channel kind discriminator.
|
|
33
|
+
*
|
|
34
|
+
* - `'dm'`: legacy 1:1 user↔agent surface. `agent_session` is the wire
|
|
35
|
+
* binding; `team_id` is null.
|
|
36
|
+
* - `'channel'`: Slack-like team-scoped surface. `team_id` is required;
|
|
37
|
+
* membership is implicitly "everyone in the team".
|
|
38
|
+
* - `'huddle'` (Phase B-2 / 2026-05-17): ad-hoc multi-agent group.
|
|
39
|
+
* Members are NOT derived from a team — they're stored explicitly in
|
|
40
|
+
* `chat_channel_members`. Dispatcher fans the user's message out to
|
|
41
|
+
* every member; agents decide whether to respond, but a member named
|
|
42
|
+
* in `mentions[]` is told it MUST respond. See
|
|
43
|
+
* `chat-v2.dispatcher.service.ts` for the prompt construction.
|
|
44
|
+
*/
|
|
45
|
+
export type ChatChannelType = 'dm' | 'channel' | 'huddle';
|
|
32
46
|
/** Mention target kind — Phase B addition (SEALED design §7.1 chip pattern). */
|
|
33
47
|
export type ChatMentionKind = 'team' | 'agent';
|
|
34
48
|
/** Enum values exposed as readonly tuples for runtime validation. */
|
|
@@ -160,6 +174,24 @@ export interface ChatChannelDTO {
|
|
|
160
174
|
* (`@Sam`) rather than the session ID.
|
|
161
175
|
*/
|
|
162
176
|
targetMemberId?: string;
|
|
177
|
+
/**
|
|
178
|
+
* Phase B-2 (2026-05-17) — for `type='huddle'` channels, the explicit
|
|
179
|
+
* member roster (agent session names). Populated by
|
|
180
|
+
* `ChatV2Service.listChannel` from `chat_channel_members`. Undefined
|
|
181
|
+
* for `'dm'` and `'channel'` rows.
|
|
182
|
+
*/
|
|
183
|
+
members?: ChatHuddleMember[];
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* A single member of a huddle channel. Wire shape kept minimal — the
|
|
187
|
+
* frontend cross-references `sessionName` against the agent directory
|
|
188
|
+
* for human-readable name, role, presence, etc.
|
|
189
|
+
*/
|
|
190
|
+
export interface ChatHuddleMember {
|
|
191
|
+
/** Agent session name (matches `DirectoryAgent.agentSession`). */
|
|
192
|
+
sessionName: string;
|
|
193
|
+
/** ISO ms timestamp when this member was added to the huddle. */
|
|
194
|
+
joinedAt: number;
|
|
163
195
|
}
|
|
164
196
|
/** Outbound message shape for `GET /messages` / `POST /messages` / WS `message` frame. */
|
|
165
197
|
export interface ChatMessageDTO {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEzD,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;AAEhF,0CAA0C;AAC1C,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ export const CHAT_CONTENT_TYPES = [
|
|
|
17
17
|
'system_note',
|
|
18
18
|
];
|
|
19
19
|
/** Phase B — channel-type tuple for runtime validation in CreateChannelInput. */
|
|
20
|
-
export const CHAT_CHANNEL_TYPES = ['dm', 'channel'];
|
|
20
|
+
export const CHAT_CHANNEL_TYPES = ['dm', 'channel', 'huddle'];
|
|
21
21
|
/** Phase B — mention-kind tuple for runtime validation in mention parsing. */
|
|
22
22
|
export const CHAT_MENTION_KINDS = ['team', 'agent'];
|
|
23
23
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgDH,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAA8B,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACxF,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,MAAM;IACN,UAAU;IACV,WAAW;IACX,aAAa;CACd,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE1F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAA+B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA8QhF,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,SAAS,EAAE,WAAW;IACtB;;;;;OAKG;IACH,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,sBAAsB;IAC5C,QAAQ,EAAE,gBAAgB;CAClB,CAAC;AAIX,0EAA0E;AAC1E,MAAM,OAAO,SAAU,SAAQ,KAAK;IAEhB;IACA;IAEA;IAJlB,YACkB,IAAmB,EACnB,UAAkB,EAClC,OAAe,EACC,OAAiC;QAEjD,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAe;QACnB,eAAU,GAAV,UAAU,CAAQ;QAElB,YAAO,GAAP,OAAO,CAA0B;QAGjD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -54,6 +54,8 @@ export declare class CloudSyncService extends EventEmitter {
|
|
|
54
54
|
private devicePollTimer;
|
|
55
55
|
/** Message poll timer handle */
|
|
56
56
|
private messagePollTimer;
|
|
57
|
+
/** Queue re-register timer handle (lets relay evict stale Portal pairs). */
|
|
58
|
+
private registerTimer;
|
|
57
59
|
/** Consecutive heartbeat failure count */
|
|
58
60
|
private heartbeatFailures;
|
|
59
61
|
/** Consecutive device poll failure count */
|
|
@@ -149,6 +151,26 @@ export declare class CloudSyncService extends EventEmitter {
|
|
|
149
151
|
* ```
|
|
150
152
|
*/
|
|
151
153
|
sendMessage(toDeviceId: string, type: MessageType, payload: unknown): Promise<void>;
|
|
154
|
+
/**
|
|
155
|
+
* Send a message directly to a peer queueId, bypassing the device cache.
|
|
156
|
+
*
|
|
157
|
+
* Used by `ChatV2RelayAdapter` for routing `chat_response` back to a
|
|
158
|
+
* Portal browser whose deviceId may not yet have propagated to the
|
|
159
|
+
* 30s-interval device poll. The production relay's `/queue/send`
|
|
160
|
+
* endpoint accepts a raw `peerQueueId`, so when the target identifier
|
|
161
|
+
* IS already a queueId (which Portal's wrapper.fromDeviceName field
|
|
162
|
+
* carries — see `chat-v2.relay-adapter.service.ts:handleRequest`),
|
|
163
|
+
* we can skip the cache lookup entirely and avoid the race.
|
|
164
|
+
*
|
|
165
|
+
* Falls back to `sendMessage(...)` semantics on the wire (same JSON
|
|
166
|
+
* wrapper) so the receiver's CloudSyncService normalizes it identically.
|
|
167
|
+
*
|
|
168
|
+
* @param peerQueueId - The relay queueId to route to (no cache lookup)
|
|
169
|
+
* @param type - MessageType for the wrapper
|
|
170
|
+
* @param payload - JSON-serializable inner data
|
|
171
|
+
* @throws Error when not started or the HTTP send fails
|
|
172
|
+
*/
|
|
173
|
+
sendToPeerQueueId(peerQueueId: string, type: MessageType, payload: unknown): Promise<void>;
|
|
152
174
|
/**
|
|
153
175
|
* Register with the Cloud relay message queue.
|
|
154
176
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EAKV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AA8D/B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,4BAA4B;IAC5B,OAAO,CAAC,KAAK,CAA6B;IAC1C,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,4BAA4B;IAC5B,OAAO,CAAC,OAAO,CAAa;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,cAAc,CAA+C;IACrE,+BAA+B;IAC/B,OAAO,CAAC,eAAe,CAA+C;IACtE,gCAAgC;IAChC,OAAO,CAAC,gBAAgB,CAA+C;
|
|
1
|
+
{"version":3,"file":"cloud-sync.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/cloud-sync.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EAKV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AA8D/B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC,4BAA4B;IAC5B,OAAO,CAAC,KAAK,CAA6B;IAC1C,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,wCAAwC;IACxC,OAAO,CAAC,OAAO,CAAoB;IACnC,4BAA4B;IAC5B,OAAO,CAAC,OAAO,CAAa;IAE5B,6BAA6B;IAC7B,OAAO,CAAC,cAAc,CAA+C;IACrE,+BAA+B;IAC/B,OAAO,CAAC,eAAe,CAA+C;IACtE,gCAAgC;IAChC,OAAO,CAAC,gBAAgB,CAA+C;IACvE,4EAA4E;IAC5E,OAAO,CAAC,aAAa,CAA+C;IAEpE,0CAA0C;IAC1C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,4CAA4C;IAC5C,OAAO,CAAC,kBAAkB,CAAK;IAC/B,6CAA6C;IAC7C,OAAO,CAAC,mBAAmB,CAAK;IAChC,kCAAkC;IAClC,OAAO,CAAC,kBAAkB,CAA+C;IACzE,qEAAqE;IACrE,OAAO,CAAC,qBAAqB,CAAK;IAClC,sFAAsF;IACtF,OAAO,CAAC,OAAO,CAAuB;IAEtC;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAqB;IAChD,wDAAwD;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAO;IAE5C,OAAO;IAKP;;;;OAIG;IACH,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAW5B;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IA8DpC;;;;OAIG;IACH,IAAI,IAAI,IAAI;IAqBZ;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,QAAQ,IAAI,cAAc;IAI1B;;;;OAIG;IACH,UAAU,IAAI,UAAU,EAAE;IAI1B;;;;;;;OAOG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC;;;;OAIG;IACH,gBAAgB,IAAI,UAAU,EAAE;IAIhC;;;;;;;;;;;;;;;OAeG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2CzF;;;;;;;;;;;;;;;;;;OAkBG;IACG,iBAAiB,CACrB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EACjB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC;IA+BhB;;;;;;;;;OASG;YACW,aAAa;IAwC3B;;;OAGG;YACW,iBAAiB;IAiB/B;;;OAGG;IACH,UAAU,IAAI,MAAM,GAAG,IAAI;IAQ3B;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAqDpC;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAsJlC;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAkHnC;;;;;;OAMG;YACW,WAAW;IA2BzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAoF7B;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAgB7B,yDAAyD;IACzD,OAAO,CAAC,sBAAsB,CAAS;IAEvC;;;;;;;OAOG;YACW,eAAe;IAmC7B;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAMpB"}
|