crewly 1.20.193 → 1.20.195
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 +2 -2
- package/config/roles/orchestrator/fragments/communication.md +1 -1
- package/config/roles/orchestrator/prompt.md +15 -505
- package/config/skills/agent/computer-use/SKILL.md +6 -0
- package/config/skills/agent/core/experiment-card/SKILL.md +101 -0
- package/config/skills/agent/core/experiment-card/execute.sh +149 -0
- package/config/skills/agent/core/experiment-card/execute.test.sh +97 -0
- package/config/skills/agent/desktop-app-control/execute.sh +5 -2
- package/config/skills/orchestrator/send-message/execute.sh +19 -2
- package/config/skills/orchestrator/send-message/execute.test.sh +80 -0
- package/config/skills/registry.json +7 -5
- package/config/skills/team-leader/signal-digest/SKILL.md +110 -0
- package/config/skills/team-leader/signal-digest/execute.sh +173 -0
- package/config/skills/team-leader/signal-digest/execute.test.sh +123 -0
- package/config/skills/team-leader/signal-digest/signal-digest.config.example.json +23 -0
- package/config/skills/team-leader/signal-digest/signal_digest.py +572 -0
- package/config/skills/team-leader/signal-digest/signal_digest.test.py +319 -0
- package/dist/backend/backend/src/constants.d.ts +191 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +194 -1
- package/dist/backend/backend/src/constants.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.map +1 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js +3 -1
- package/dist/backend/backend/src/controllers/chat-v2/chat-v2.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts +27 -0
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.js +96 -0
- package/dist/backend/backend/src/controllers/experiments/experiments.routes.js.map +1 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts +1 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js +1 -0
- package/dist/backend/backend/src/controllers/marketplace/marketplace.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js +5 -2
- package/dist/backend/backend/src/controllers/monitoring/terminal.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/request/request.controller.js +5 -1
- package/dist/backend/backend/src/controllers/request/request.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/settings/settings.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/settings/settings.controller.js +18 -2
- package/dist/backend/backend/src/controllers/settings/settings.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts +26 -0
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js +100 -0
- package/dist/backend/backend/src/controllers/signal-digest/signal-digest.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts +47 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.js +169 -0
- package/dist/backend/backend/src/controllers/trace/trace.controller.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +66 -20
- 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 +14 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- 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 +6 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js +3 -0
- package/dist/backend/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js +22 -6
- package/dist/backend/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
- package/dist/backend/backend/src/services/ai/prompt-modules/communication.module.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/backup/backup-archive.service.d.ts +6 -0
- package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.js +7 -1
- package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts +1 -1
- package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/canva/canva-token.service.js +5 -0
- package/dist/backend/backend/src/services/canva/canva-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat/chat.service.d.ts +78 -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 +210 -26
- 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 +14 -3
- 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 +28 -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/chat-v2.service.d.ts +4 -3
- 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 +7 -4
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-store.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-store.js +5 -1
- package/dist/backend/backend/src/services/decisions/decision-store.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts +10 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.js +20 -9
- package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts +88 -0
- package/dist/backend/backend/src/services/experiments/experiment-verdict.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment-verdict.js +226 -0
- package/dist/backend/backend/src/services/experiments/experiment-verdict.js.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts +350 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.js +908 -0
- package/dist/backend/backend/src/services/experiments/experiment.service.js.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts +88 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js +162 -0
- package/dist/backend/backend/src/services/experiments/experiment.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts +67 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.d.ts.map +1 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js +133 -0
- package/dist/backend/backend/src/services/experiments/seo-ops-metric.fetcher.js.map +1 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js +5 -0
- package/dist/backend/backend/src/services/google/google-workspace-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
- package/dist/backend/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/queue-processor.service.d.ts +11 -3
- 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 +24 -7
- package/dist/backend/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js +5 -0
- package/dist/backend/backend/src/services/microsoft/microsoft-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js +4 -0
- package/dist/backend/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-status-router.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-status-router.service.js +12 -3
- package/dist/backend/backend/src/services/orc/orc-status-router.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js +16 -0
- package/dist/backend/backend/src/services/orc/reply-destination.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts +42 -5
- package/dist/backend/backend/src/services/people/acting-for.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/people/acting-for.service.js +80 -5
- package/dist/backend/backend/src/services/people/acting-for.service.js.map +1 -1
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts +5 -4
- package/dist/backend/backend/src/services/people/grant-sharing.d.ts.map +1 -1
- package/dist/backend/backend/src/services/people/grant-sharing.js +12 -4
- package/dist/backend/backend/src/services/people/grant-sharing.js.map +1 -1
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts +71 -13
- package/dist/backend/backend/src/services/people/people-directory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/people/people-directory.service.js +164 -27
- package/dist/backend/backend/src/services/people/people-directory.service.js.map +1 -1
- 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 +2 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket.service.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 +15 -0
- 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 +8 -5
- package/dist/backend/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts +75 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js +187 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-card.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts +86 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js +307 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-contract.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts +85 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js +185 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest-store.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts +272 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js +570 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.service.js.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts +51 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js +116 -0
- package/dist/backend/backend/src/services/signal-digest/signal-digest.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.d.ts +5 -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 +6 -2
- package/dist/backend/backend/src/services/slack/notify-reconciliation.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts +33 -0
- package/dist/backend/backend/src/services/slack/slack-bot-ids.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-bot-ids.js +56 -0
- package/dist/backend/backend/src/services/slack/slack-bot-ids.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
- 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 +30 -10
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts +1 -1
- package/dist/backend/backend/src/services/slack/slack-relogin-dm.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +31 -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 +52 -7
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts +2 -2
- package/dist/backend/backend/src/services/system/auto-update.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/pool-storage.js +4 -0
- package/dist/backend/backend/src/services/task-pool/pool-storage.js.map +1 -1
- 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 +2 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/trace/trace-context.service.d.ts +195 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.js +432 -0
- package/dist/backend/backend/src/services/trace/trace-context.service.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts +42 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.js +146 -0
- package/dist/backend/backend/src/services/trace/trace-http.middleware.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-markers.d.ts +93 -0
- package/dist/backend/backend/src/services/trace/trace-markers.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-markers.js +162 -0
- package/dist/backend/backend/src/services/trace/trace-markers.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.d.ts +290 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.js +669 -0
- package/dist/backend/backend/src/services/trace/trace-recorder.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-store.d.ts +269 -0
- package/dist/backend/backend/src/services/trace/trace-store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace-store.js +602 -0
- package/dist/backend/backend/src/services/trace/trace-store.js.map +1 -0
- package/dist/backend/backend/src/services/trace/trace.types.d.ts +118 -0
- package/dist/backend/backend/src/services/trace/trace.types.d.ts.map +1 -0
- package/dist/backend/backend/src/services/trace/trace.types.js +85 -0
- package/dist/backend/backend/src/services/trace/trace.types.js.map +1 -0
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +1 -1
- package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request.service.js +4 -0
- package/dist/backend/backend/src/services/v3/request.service.js.map +1 -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 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.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/worktree-janitor.service.d.ts +3 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js +7 -0
- package/dist/backend/backend/src/services/worktree/worktree-janitor.service.js.map +1 -1
- package/dist/backend/backend/src/types/experiment.types.d.ts +155 -0
- package/dist/backend/backend/src/types/experiment.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/experiment.types.js +32 -0
- package/dist/backend/backend/src/types/experiment.types.js.map +1 -0
- package/dist/backend/backend/src/types/messaging.types.d.ts +6 -0
- package/dist/backend/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/messaging.types.js.map +1 -1
- package/dist/backend/backend/src/types/signal-digest.types.d.ts +185 -0
- package/dist/backend/backend/src/types/signal-digest.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/signal-digest.types.js +21 -0
- package/dist/backend/backend/src/types/signal-digest.types.js.map +1 -0
- package/dist/backend/backend/src/types/v2/request.types.d.ts +4 -0
- package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +4 -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 +1 -0
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/security.d.ts +2 -0
- package/dist/backend/backend/src/utils/security.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/security.js +3 -1
- package/dist/backend/backend/src/utils/security.js.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts +9 -0
- package/dist/backend/backend/src/websocket/chat.gateway.d.ts.map +1 -1
- package/dist/backend/backend/src/websocket/chat.gateway.js +26 -0
- package/dist/backend/backend/src/websocket/chat.gateway.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +191 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +194 -1
- 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 +6 -1
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +3 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts +4 -2
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js +22 -6
- package/dist/cli/backend/src/services/agent/runtime-session-recovery.js.map +1 -1
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +2 -2
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.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/backup/backup-archive.service.d.ts +6 -0
- package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.js +7 -1
- package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat/chat.service.d.ts +185 -0
- package/dist/cli/backend/src/services/chat/chat.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat/chat.service.js +558 -0
- package/dist/cli/backend/src/services/chat/chat.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +14 -3
- 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 +28 -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/chat-v2.service.d.ts +4 -3
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +7 -4
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision-store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision-store.js +5 -1
- package/dist/cli/backend/src/services/decisions/decision-store.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js +7 -0
- package/dist/cli/backend/src/services/messaging/owner-message-watchdog.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts +11 -3
- package/dist/cli/backend/src/services/messaging/queue-processor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js +24 -7
- package/dist/cli/backend/src/services/messaging/queue-processor.service.js.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +7 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +4 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -1
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts +42 -5
- package/dist/cli/backend/src/services/people/acting-for.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/people/acting-for.service.js +80 -5
- package/dist/cli/backend/src/services/people/acting-for.service.js.map +1 -1
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts +71 -13
- package/dist/cli/backend/src/services/people/people-directory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/people/people-directory.service.js +164 -27
- package/dist/cli/backend/src/services/people/people-directory.service.js.map +1 -1
- 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 +2 -0
- package/dist/cli/backend/src/services/project-tickets/project-ticket.service.js.map +1 -1
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/session/session-handoff.service.js +8 -5
- package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +14 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +30 -10
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +31 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.js +52 -7
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/pool-storage.js +4 -0
- package/dist/cli/backend/src/services/task-pool/pool-storage.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +2 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/trace/trace-context.service.d.ts +195 -0
- package/dist/cli/backend/src/services/trace/trace-context.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-context.service.js +432 -0
- package/dist/cli/backend/src/services/trace/trace-context.service.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-markers.d.ts +93 -0
- package/dist/cli/backend/src/services/trace/trace-markers.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-markers.js +162 -0
- package/dist/cli/backend/src/services/trace/trace-markers.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.d.ts +290 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.js +669 -0
- package/dist/cli/backend/src/services/trace/trace-recorder.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-store.d.ts +269 -0
- package/dist/cli/backend/src/services/trace/trace-store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace-store.js +602 -0
- package/dist/cli/backend/src/services/trace/trace-store.js.map +1 -0
- package/dist/cli/backend/src/services/trace/trace.types.d.ts +118 -0
- package/dist/cli/backend/src/services/trace/trace.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/trace/trace.types.js +85 -0
- package/dist/cli/backend/src/services/trace/trace.types.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/v3/request.service.js +4 -0
- package/dist/cli/backend/src/services/v3/request.service.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/messaging.types.d.ts +6 -0
- package/dist/cli/backend/src/types/messaging.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/messaging.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.d.ts +4 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +4 -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 +1 -0
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/utils/security.d.ts +196 -0
- package/dist/cli/backend/src/utils/security.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/security.js +538 -0
- package/dist/cli/backend/src/utils/security.js.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts +9 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -1
- package/dist/cli/backend/src/websocket/chat.gateway.js +26 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -1
- package/frontend/dist/assets/{index-465d1f8f.js → index-800118ca.js} +274 -274
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chat Service — facade over ChatV2Service.
|
|
3
|
+
*
|
|
4
|
+
* Phase 6 of the unified-chat-message-store spec
|
|
5
|
+
* (`specs/2026-05-14-unified-chat-message-store.md`):
|
|
6
|
+
* the legacy JSON-file storage at `~/.crewly/chat/` is retired.
|
|
7
|
+
* All chat persistence and read paths now flow through the canonical
|
|
8
|
+
* `ChatV2Service` (SQLite at `~/.crewly/chat.db`). This file remains
|
|
9
|
+
* temporarily as a deprecation shim so the many legacy callers
|
|
10
|
+
* (`chat.controller.ts`, `chat.gateway.ts`, `slack-orchestrator-bridge.ts`,
|
|
11
|
+
* `notify-reconciliation.service.ts`, `message-replay.service.ts`,
|
|
12
|
+
* `index.ts`) continue to compile and run while they are migrated to
|
|
13
|
+
* call ChatV2Service directly. Each facade method translates between
|
|
14
|
+
* the legacy `ChatMessage` / `ChatConversation` DTOs and chat-v2's
|
|
15
|
+
* `ChatMessageDTO` / `ChatChannelDTO` so existing event subscribers
|
|
16
|
+
* (chat.gateway.ts) see the same shapes they always have.
|
|
17
|
+
*
|
|
18
|
+
* @module services/chat/chat.service
|
|
19
|
+
*/
|
|
20
|
+
import { EventEmitter } from 'events';
|
|
21
|
+
import { LoggerService } from '../core/logger.service.js';
|
|
22
|
+
/**
|
|
23
|
+
* Default page size for legacy `getMessages` calls without an explicit
|
|
24
|
+
* `filter.limit`. Matches the historical hardcoded value so the change
|
|
25
|
+
* to honor `filter.limit` is a strict superset of the prior behavior.
|
|
26
|
+
*/
|
|
27
|
+
const LEGACY_DEFAULT_PAGE_SIZE = 200;
|
|
28
|
+
/**
|
|
29
|
+
* Hard cap on `getMessages` limit, applied after the caller-supplied
|
|
30
|
+
* value. Keeps a buggy/malicious caller from asking chat-v2 to load
|
|
31
|
+
* the entire channel history into a single response.
|
|
32
|
+
*/
|
|
33
|
+
const LEGACY_MAX_PAGE_SIZE = 1000;
|
|
34
|
+
/**
|
|
35
|
+
* Pick the chat-v2 `metadata.source` for a legacy `addAgentMessage`
|
|
36
|
+
* /`addDirectMessage` call. Returns the caller-provided
|
|
37
|
+
* `metadata.source` when it is one of the closed chat-v2 source enum
|
|
38
|
+
* values, otherwise falls back to `defaultSource` (the historical
|
|
39
|
+
* hardcoded value for the call site).
|
|
40
|
+
*
|
|
41
|
+
* @param metadata - Legacy metadata blob (possibly undefined)
|
|
42
|
+
* @param defaultSource - Source to use when metadata has no valid source
|
|
43
|
+
* @returns A chat-v2 `RecordTurnSource` value
|
|
44
|
+
*/
|
|
45
|
+
function resolveLegacyRecordSource(metadata, defaultSource) {
|
|
46
|
+
const raw = metadata?.source;
|
|
47
|
+
if (raw === 'web' ||
|
|
48
|
+
raw === 'slack' ||
|
|
49
|
+
raw === 'pty-runtime' ||
|
|
50
|
+
raw === 'in-process-runtime' ||
|
|
51
|
+
raw === 'reply-tool' ||
|
|
52
|
+
raw === 'system') {
|
|
53
|
+
return raw;
|
|
54
|
+
}
|
|
55
|
+
return defaultSource;
|
|
56
|
+
}
|
|
57
|
+
import { getChatV2Service } from '../chat-v2/chat-v2.singleton.js';
|
|
58
|
+
import { ChatError, CHAT_ERROR_CODES } from '../chat-v2/types.js';
|
|
59
|
+
import { SYSTEM_PRINCIPAL, senderToV2, v2MessageToLegacy, v2ChannelToLegacy, inferSourceFromLegacyMetadata, synthesizeSlackConversationId, } from '../chat-v2/legacy-dto.utils.js';
|
|
60
|
+
/**
|
|
61
|
+
* Whether an error is chat-v2's "channel not found" (404) error.
|
|
62
|
+
*
|
|
63
|
+
* The legacy façade contract maps a missing conversation to either a
|
|
64
|
+
* `ConversationNotFoundError` (mutations) or an empty result (reads);
|
|
65
|
+
* this predicate lets each method translate chat-v2's typed error.
|
|
66
|
+
*
|
|
67
|
+
* @param err - Any thrown value
|
|
68
|
+
* @returns True when `err` is a `ChatError` with code `channel_not_found`
|
|
69
|
+
*/
|
|
70
|
+
function isChannelNotFound(err) {
|
|
71
|
+
return err instanceof ChatError && err.code === CHAT_ERROR_CODES.CHANNEL_NOT_FOUND;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Apply the legacy per-message filters (`senderType`, `contentType`,
|
|
75
|
+
* `after`, `before`) that the original JSON-backed ChatService honored.
|
|
76
|
+
* Timestamps compare as ISO-8601 strings, exactly like the legacy code.
|
|
77
|
+
*
|
|
78
|
+
* @param messages - Legacy messages to filter
|
|
79
|
+
* @param filter - Legacy message filter
|
|
80
|
+
* @returns The messages matching every supplied filter
|
|
81
|
+
*/
|
|
82
|
+
function applyLegacyMessageFilters(messages, filter) {
|
|
83
|
+
return messages.filter((m) => (!filter.senderType || m.from.type === filter.senderType) &&
|
|
84
|
+
(!filter.contentType || m.contentType === filter.contentType) &&
|
|
85
|
+
(!filter.after || m.timestamp > filter.after) &&
|
|
86
|
+
(!filter.before || m.timestamp < filter.before));
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Whether a legacy message filter narrows beyond the conversation id.
|
|
90
|
+
*
|
|
91
|
+
* @param filter - Legacy message filter
|
|
92
|
+
* @returns True when any of senderType/contentType/after/before is set
|
|
93
|
+
*/
|
|
94
|
+
function hasLegacyMessageFilters(filter) {
|
|
95
|
+
return Boolean(filter.senderType || filter.contentType || filter.after || filter.before);
|
|
96
|
+
}
|
|
97
|
+
// =============================================================================
|
|
98
|
+
// Error classes — preserved for callers that catch them by name
|
|
99
|
+
// =============================================================================
|
|
100
|
+
export class ConversationNotFoundError extends Error {
|
|
101
|
+
conversationId;
|
|
102
|
+
constructor(conversationId) {
|
|
103
|
+
super(`Conversation not found: ${conversationId}`);
|
|
104
|
+
this.conversationId = conversationId;
|
|
105
|
+
this.name = 'ConversationNotFoundError';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export class MessageValidationError extends Error {
|
|
109
|
+
constructor(message) {
|
|
110
|
+
super(message);
|
|
111
|
+
this.name = 'MessageValidationError';
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// =============================================================================
|
|
115
|
+
// ChatService facade
|
|
116
|
+
// =============================================================================
|
|
117
|
+
/**
|
|
118
|
+
* Deprecated façade over ChatV2Service.
|
|
119
|
+
*
|
|
120
|
+
* Preserves the public surface of the original `ChatService` so the
|
|
121
|
+
* remaining legacy callers compile unchanged. Internally every method
|
|
122
|
+
* delegates to `ChatV2Service`. The original ~/.crewly/chat/*.json
|
|
123
|
+
* storage layer has been removed.
|
|
124
|
+
*
|
|
125
|
+
* New code MUST NOT depend on this class; call `getChatV2Service()`
|
|
126
|
+
* directly. Phase 6c of the spec deletes this file once all callers
|
|
127
|
+
* are migrated.
|
|
128
|
+
*/
|
|
129
|
+
export class ChatService extends EventEmitter {
|
|
130
|
+
logger;
|
|
131
|
+
chatV2;
|
|
132
|
+
constructor(_options) {
|
|
133
|
+
super();
|
|
134
|
+
this.logger = LoggerService.getInstance().createComponentLogger('ChatService');
|
|
135
|
+
this.chatV2 = getChatV2Service();
|
|
136
|
+
}
|
|
137
|
+
// ---------------------------------------------------------------------------
|
|
138
|
+
// Lifecycle (no-ops — chat-v2 manages its own DB lifecycle)
|
|
139
|
+
// ---------------------------------------------------------------------------
|
|
140
|
+
async initialize() {
|
|
141
|
+
// chat-v2 lazy-initializes on first access; nothing to do.
|
|
142
|
+
}
|
|
143
|
+
isInitialized() {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
// ---------------------------------------------------------------------------
|
|
147
|
+
// Writes
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
/**
|
|
150
|
+
* Send a user message. Idempotency via legacy callers' own
|
|
151
|
+
* metadata.clientMessageId when present.
|
|
152
|
+
*/
|
|
153
|
+
async sendMessage(input) {
|
|
154
|
+
const conversationId = input.conversationId ?? this.synthesizeConversationId(input);
|
|
155
|
+
const channel = this.chatV2.ensureChannelForLegacyConversation({
|
|
156
|
+
conversationId,
|
|
157
|
+
agentSession: 'crewly-orc',
|
|
158
|
+
});
|
|
159
|
+
const senderId = (typeof input.metadata?.userId === 'string' && input.metadata.userId) || 'user';
|
|
160
|
+
const { message } = this.chatV2.recordTurn({
|
|
161
|
+
channelId: channel.id,
|
|
162
|
+
senderType: 'user',
|
|
163
|
+
senderId,
|
|
164
|
+
content: input.content,
|
|
165
|
+
clientMessageId: typeof input.metadata?.clientMessageId === 'string'
|
|
166
|
+
? input.metadata.clientMessageId
|
|
167
|
+
: undefined,
|
|
168
|
+
// Source resolution here is intentionally STRICTER than
|
|
169
|
+
// `recordViaFacade` (which uses `resolveLegacyRecordSource`).
|
|
170
|
+
// `sendMessage` always writes `senderType: 'user'`, so the only
|
|
171
|
+
// legitimate sources are 'web' or 'slack'. Caller-supplied values
|
|
172
|
+
// like 'reply-tool' or 'pty-runtime' are agent-reply tags and
|
|
173
|
+
// would be nonsensical on a user-authored row — `inferSource…`
|
|
174
|
+
// downgrades them to 'system' on purpose. Phase 6α follow-up #5.
|
|
175
|
+
metadata: {
|
|
176
|
+
...(input.metadata ?? {}),
|
|
177
|
+
source: inferSourceFromLegacyMetadata(input.metadata),
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
const conversation = v2ChannelToLegacy(channel, this.chatV2.countChannelMessages(channel.id, SYSTEM_PRINCIPAL));
|
|
181
|
+
const legacyMessage = v2MessageToLegacy(message);
|
|
182
|
+
// Phase 6α follow-up #6: chat-v2 already emits 'chat_message' for
|
|
183
|
+
// every fresh recordTurn write (chat-v2.service.ts:936/1063). The
|
|
184
|
+
// chat.gateway WebSocket subscriber listens on the chat-v2
|
|
185
|
+
// EventEmitter directly, so a second emit here would double-broadcast
|
|
186
|
+
// to every connected client. The 'conversation_updated' event has no
|
|
187
|
+
// chat-v2 equivalent yet, so we keep emitting that one until chat-v2
|
|
188
|
+
// grows a channel-touched event.
|
|
189
|
+
this.emitConversationUpdated(conversation);
|
|
190
|
+
return { conversation, message: legacyMessage };
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Add an agent reply extracted from raw terminal output. The legacy
|
|
194
|
+
* regex extraction (`[RESPONSE]` / `[CHAT_RESPONSE]` markers) is gone
|
|
195
|
+
* — callers should pass already-clean content. Kept for source
|
|
196
|
+
* compatibility with `chat.gateway.processTerminalOutput`, which has
|
|
197
|
+
* no production callers post Phase 4 discovery.
|
|
198
|
+
*/
|
|
199
|
+
async addAgentMessage(conversationId, rawOutput, sender, metadata) {
|
|
200
|
+
// Phase 6α follow-up #5: source defaults to 'pty-runtime' (the
|
|
201
|
+
// historical caller) but the caller can override via
|
|
202
|
+
// `metadata.source` — e.g. an in-process runtime route should tag
|
|
203
|
+
// its replies 'in-process-runtime', not 'pty-runtime'. Falling back
|
|
204
|
+
// through inferSourceFromLegacyMetadata preserves the previous
|
|
205
|
+
// default for callers that don't tag.
|
|
206
|
+
const source = resolveLegacyRecordSource(metadata, 'pty-runtime');
|
|
207
|
+
return this.recordViaFacade(conversationId, rawOutput, sender, metadata, source);
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Persist a pre-extracted markdown reply. Primary call site is the
|
|
211
|
+
* PTY `[NOTIFY]` path in `chat.gateway.processNotifyMessage`.
|
|
212
|
+
*/
|
|
213
|
+
async addDirectMessage(conversationId, content, sender, metadata) {
|
|
214
|
+
// Phase 6α follow-up #5: see addAgentMessage. Same default + override.
|
|
215
|
+
const source = resolveLegacyRecordSource(metadata, 'pty-runtime');
|
|
216
|
+
return this.recordViaFacade(conversationId, content, sender, metadata, source);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Add a server-side system note (progress markers, errors, etc.).
|
|
220
|
+
*/
|
|
221
|
+
async addSystemMessage(conversationId, content, metadata) {
|
|
222
|
+
return this.recordViaFacade(conversationId, content, { type: 'system', id: 'system', name: 'System' }, metadata, 'system');
|
|
223
|
+
}
|
|
224
|
+
async recordViaFacade(conversationId, content, sender, metadata, source) {
|
|
225
|
+
const channel = this.chatV2.ensureChannelForLegacyConversation({
|
|
226
|
+
conversationId,
|
|
227
|
+
agentSession: 'crewly-orc',
|
|
228
|
+
});
|
|
229
|
+
const { type: senderType, id: senderId } = senderToV2(sender);
|
|
230
|
+
const { message } = this.chatV2.recordTurn({
|
|
231
|
+
channelId: channel.id,
|
|
232
|
+
senderType,
|
|
233
|
+
senderId,
|
|
234
|
+
content,
|
|
235
|
+
clientMessageId: typeof metadata?.clientMessageId === 'string' ? metadata.clientMessageId : undefined,
|
|
236
|
+
// `source` AFTER the spread: the resolved source from
|
|
237
|
+
// resolveLegacyRecordSource already incorporated metadata.source
|
|
238
|
+
// (if valid) or fell back to the default. Putting it last
|
|
239
|
+
// guarantees a value from the closed enum lands in the row
|
|
240
|
+
// regardless of what the legacy caller passed.
|
|
241
|
+
metadata: { ...(metadata ?? {}), source },
|
|
242
|
+
});
|
|
243
|
+
const legacyMessage = v2MessageToLegacy(message);
|
|
244
|
+
// Phase 6α follow-up #6: chat-v2 already emits 'chat_message';
|
|
245
|
+
// chat.gateway subscribes to chat-v2 directly. No re-emit here to
|
|
246
|
+
// avoid double-broadcasting to WebSocket clients.
|
|
247
|
+
return legacyMessage;
|
|
248
|
+
}
|
|
249
|
+
// ---------------------------------------------------------------------------
|
|
250
|
+
// Reads
|
|
251
|
+
// ---------------------------------------------------------------------------
|
|
252
|
+
async getMessages(filter) {
|
|
253
|
+
if (!filter.conversationId) {
|
|
254
|
+
// Legacy callers occasionally call with no conversationId to get
|
|
255
|
+
// everything. chat-v2 has no global query — return [] and let
|
|
256
|
+
// the migration of those call sites surface explicit filters.
|
|
257
|
+
return [];
|
|
258
|
+
}
|
|
259
|
+
// Phase 6α follow-up #4: honor filter.limit. Defaults to the
|
|
260
|
+
// previous hardcoded 200, capped at 1000 so a malicious or buggy
|
|
261
|
+
// caller can't ask for an unbounded slice. Sub-1 values fall back
|
|
262
|
+
// to the default.
|
|
263
|
+
const requested = typeof filter.limit === 'number' && Number.isFinite(filter.limit) && filter.limit > 0
|
|
264
|
+
? Math.floor(filter.limit)
|
|
265
|
+
: LEGACY_DEFAULT_PAGE_SIZE;
|
|
266
|
+
const limit = Math.min(requested, LEGACY_MAX_PAGE_SIZE);
|
|
267
|
+
let page;
|
|
268
|
+
try {
|
|
269
|
+
page = this.chatV2.listMessages({
|
|
270
|
+
channelId: filter.conversationId,
|
|
271
|
+
principal: SYSTEM_PRINCIPAL,
|
|
272
|
+
limit,
|
|
273
|
+
direction: 'forward',
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
// Legacy contract: an unknown conversation reads as empty.
|
|
278
|
+
if (isChannelNotFound(err))
|
|
279
|
+
return [];
|
|
280
|
+
throw err;
|
|
281
|
+
}
|
|
282
|
+
// Legacy contract: senderType / contentType / after / before narrow
|
|
283
|
+
// the result (GET /api/chat/messages?senderType=user).
|
|
284
|
+
return applyLegacyMessageFilters(page.messages.map(v2MessageToLegacy), filter);
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Count messages in a conversation, honoring the same filters as
|
|
288
|
+
* {@link getMessages}. Returns 0 for an unknown conversation (legacy
|
|
289
|
+
* contract) instead of surfacing chat-v2's 404.
|
|
290
|
+
*
|
|
291
|
+
* @param filter - Legacy message filter (`conversationId` required for a non-zero count)
|
|
292
|
+
* @returns Number of matching messages
|
|
293
|
+
*/
|
|
294
|
+
async getMessageCount(filter) {
|
|
295
|
+
if (!filter.conversationId)
|
|
296
|
+
return 0;
|
|
297
|
+
if (hasLegacyMessageFilters(filter)) {
|
|
298
|
+
const matching = await this.getMessages({
|
|
299
|
+
...filter,
|
|
300
|
+
limit: LEGACY_MAX_PAGE_SIZE,
|
|
301
|
+
offset: undefined,
|
|
302
|
+
});
|
|
303
|
+
return matching.length;
|
|
304
|
+
}
|
|
305
|
+
try {
|
|
306
|
+
return this.chatV2.countChannelMessages(filter.conversationId, SYSTEM_PRINCIPAL);
|
|
307
|
+
}
|
|
308
|
+
catch (err) {
|
|
309
|
+
if (isChannelNotFound(err))
|
|
310
|
+
return 0;
|
|
311
|
+
throw err;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Look up a single message by id within a conversation.
|
|
316
|
+
*
|
|
317
|
+
* @param conversationId - Conversation the message must belong to
|
|
318
|
+
* @param messageId - The message id
|
|
319
|
+
* @returns The legacy message, or null when absent or in another conversation
|
|
320
|
+
*/
|
|
321
|
+
async getMessage(conversationId, messageId) {
|
|
322
|
+
const dto = this.chatV2.getMessageForBridge(messageId);
|
|
323
|
+
if (!dto || dto.channelId !== conversationId)
|
|
324
|
+
return null;
|
|
325
|
+
return v2MessageToLegacy(dto);
|
|
326
|
+
}
|
|
327
|
+
async updateMessageMetadata(_conversationId, messageId, metadataPatch) {
|
|
328
|
+
const dto = this.chatV2.updateMessageMetadata(messageId, metadataPatch);
|
|
329
|
+
return dto ? v2MessageToLegacy(dto) : null;
|
|
330
|
+
}
|
|
331
|
+
async getMessagesWithPendingSlackDelivery(maxAgeMs) {
|
|
332
|
+
return this.chatV2.findMessagesWithPendingSlackDelivery(maxAgeMs).map(v2MessageToLegacy);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* List conversations in the legacy shape, honoring the legacy filters:
|
|
336
|
+
* `includeArchived` (archived rows are hidden by default), `channelType`,
|
|
337
|
+
* a case-insensitive title `search`, and `offset` / `limit` pagination.
|
|
338
|
+
*
|
|
339
|
+
* @param filter - Optional legacy conversation filter
|
|
340
|
+
* @returns Matching conversations
|
|
341
|
+
*/
|
|
342
|
+
async getConversations(filter) {
|
|
343
|
+
const channels = this.chatV2.listChannels({
|
|
344
|
+
principal: SYSTEM_PRINCIPAL,
|
|
345
|
+
includeArchived: filter?.includeArchived === true,
|
|
346
|
+
});
|
|
347
|
+
let conversations = channels.map((c) => v2ChannelToLegacy(c, this.chatV2.countChannelMessages(c.id, SYSTEM_PRINCIPAL)));
|
|
348
|
+
if (filter?.channelType) {
|
|
349
|
+
conversations = conversations.filter((c) => c.channelType === filter.channelType);
|
|
350
|
+
}
|
|
351
|
+
if (filter?.search) {
|
|
352
|
+
const needle = filter.search.toLowerCase();
|
|
353
|
+
conversations = conversations.filter((c) => c.title?.toLowerCase().includes(needle));
|
|
354
|
+
}
|
|
355
|
+
if (filter?.offset !== undefined || filter?.limit !== undefined) {
|
|
356
|
+
const offset = filter.offset ?? 0;
|
|
357
|
+
conversations = conversations.slice(offset, filter.limit !== undefined ? offset + filter.limit : undefined);
|
|
358
|
+
}
|
|
359
|
+
return conversations;
|
|
360
|
+
}
|
|
361
|
+
async getConversation(id) {
|
|
362
|
+
try {
|
|
363
|
+
const channel = this.chatV2.getChannel(id, SYSTEM_PRINCIPAL);
|
|
364
|
+
return v2ChannelToLegacy(channel, this.chatV2.countChannelMessages(id, SYSTEM_PRINCIPAL));
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
async createNewConversation(title, idOverride, _channelType) {
|
|
371
|
+
const conversationId = idOverride ?? `web-conv-${Date.now()}`;
|
|
372
|
+
const channel = this.chatV2.ensureChannelForLegacyConversation({
|
|
373
|
+
conversationId,
|
|
374
|
+
agentSession: 'crewly-orc',
|
|
375
|
+
name: title ?? conversationId,
|
|
376
|
+
});
|
|
377
|
+
const conversation = v2ChannelToLegacy(channel, 0);
|
|
378
|
+
this.emitConversationUpdated(conversation);
|
|
379
|
+
return conversation;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Rename a conversation.
|
|
383
|
+
*
|
|
384
|
+
* @param id - Conversation id
|
|
385
|
+
* @param title - New title
|
|
386
|
+
* @returns The updated conversation
|
|
387
|
+
* @throws {ConversationNotFoundError} when the conversation does not exist
|
|
388
|
+
*/
|
|
389
|
+
async updateConversationTitle(id, title) {
|
|
390
|
+
const conversation = this.withConversation(id, () => {
|
|
391
|
+
const channel = this.chatV2.renameChannel(id, title, SYSTEM_PRINCIPAL);
|
|
392
|
+
return v2ChannelToLegacy(channel, this.chatV2.countChannelMessages(id, SYSTEM_PRINCIPAL));
|
|
393
|
+
});
|
|
394
|
+
this.emitConversationUpdated(conversation);
|
|
395
|
+
return conversation;
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Archive a conversation.
|
|
399
|
+
*
|
|
400
|
+
* @param id - Conversation id
|
|
401
|
+
* @throws {ConversationNotFoundError} when the conversation does not exist
|
|
402
|
+
*/
|
|
403
|
+
async archiveConversation(id) {
|
|
404
|
+
this.withConversation(id, () => this.chatV2.archiveChannel(id, SYSTEM_PRINCIPAL));
|
|
405
|
+
await this.emitConversationUpdatedById(id);
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Unarchive a conversation.
|
|
409
|
+
*
|
|
410
|
+
* @param id - Conversation id
|
|
411
|
+
* @throws {ConversationNotFoundError} when the conversation does not exist
|
|
412
|
+
*/
|
|
413
|
+
async unarchiveConversation(id) {
|
|
414
|
+
this.withConversation(id, () => this.chatV2.unarchiveChannel(id, SYSTEM_PRINCIPAL));
|
|
415
|
+
await this.emitConversationUpdatedById(id);
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Delete a conversation and its messages. Idempotent: deleting an
|
|
419
|
+
* unknown conversation is a no-op (legacy contract).
|
|
420
|
+
*
|
|
421
|
+
* @param id - Conversation id
|
|
422
|
+
*/
|
|
423
|
+
async deleteConversation(id) {
|
|
424
|
+
try {
|
|
425
|
+
this.chatV2.deleteChannel(id, SYSTEM_PRINCIPAL);
|
|
426
|
+
}
|
|
427
|
+
catch (err) {
|
|
428
|
+
if (!isChannelNotFound(err))
|
|
429
|
+
throw err;
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
async clearConversation(id) {
|
|
433
|
+
this.chatV2.clearChannel(id, SYSTEM_PRINCIPAL);
|
|
434
|
+
}
|
|
435
|
+
async getCurrentConversation() {
|
|
436
|
+
// Frontend should adopt "latest channel" via listChannels;
|
|
437
|
+
// here we approximate by returning the most recently touched channel.
|
|
438
|
+
const channels = this.chatV2.listChannels({ principal: SYSTEM_PRINCIPAL });
|
|
439
|
+
if (channels.length === 0)
|
|
440
|
+
return null;
|
|
441
|
+
const newest = channels.reduce((a, b) => (a.lastMessageAt ?? a.createdAt) > (b.lastMessageAt ?? b.createdAt) ? a : b);
|
|
442
|
+
return v2ChannelToLegacy(newest, this.chatV2.countChannelMessages(newest.id, SYSTEM_PRINCIPAL));
|
|
443
|
+
}
|
|
444
|
+
emitTypingIndicator(conversationId, sender, isTyping) {
|
|
445
|
+
this.emit('chat_typing', {
|
|
446
|
+
type: 'chat_typing',
|
|
447
|
+
data: { conversationId, sender, isTyping },
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
emitProgress(conversationId, text) {
|
|
451
|
+
// Transient — emit but don't persist. Frontend renders progress
|
|
452
|
+
// ephemerally. Legacy behaviour preserved.
|
|
453
|
+
this.emit('chat_message', {
|
|
454
|
+
type: 'chat_message',
|
|
455
|
+
data: {
|
|
456
|
+
id: `progress-${Date.now()}`,
|
|
457
|
+
conversationId,
|
|
458
|
+
from: { type: 'system', id: 'system', name: 'System' },
|
|
459
|
+
content: text,
|
|
460
|
+
contentType: 'system',
|
|
461
|
+
status: 'sent',
|
|
462
|
+
timestamp: new Date().toISOString(),
|
|
463
|
+
metadata: { ephemeral: true },
|
|
464
|
+
},
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
async getStatistics() {
|
|
468
|
+
const s = this.chatV2.getStatistics();
|
|
469
|
+
return {
|
|
470
|
+
totalConversations: s.totalChannels,
|
|
471
|
+
activeConversations: s.activeChannels,
|
|
472
|
+
archivedConversations: s.archivedChannels,
|
|
473
|
+
totalMessages: s.totalMessages,
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
// ---------------------------------------------------------------------------
|
|
477
|
+
// Helpers
|
|
478
|
+
// ---------------------------------------------------------------------------
|
|
479
|
+
/**
|
|
480
|
+
* Generate a conversationId for a brand-new sendMessage call that
|
|
481
|
+
* didn't supply one. Web-chat-style id; Slack callers always pass
|
|
482
|
+
* their own slack-CHANNEL-TS identifier.
|
|
483
|
+
*/
|
|
484
|
+
synthesizeConversationId(input) {
|
|
485
|
+
if (typeof input.metadata?.channelId === 'string') {
|
|
486
|
+
// Slack source — derive from channel + timestamp pattern.
|
|
487
|
+
const channel = input.metadata.channelId;
|
|
488
|
+
const ts = typeof input.metadata.threadTs === 'string' ? input.metadata.threadTs : `${Date.now()}`;
|
|
489
|
+
return synthesizeSlackConversationId(channel, ts);
|
|
490
|
+
}
|
|
491
|
+
return `web-conv-${Date.now()}`;
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Emit the legacy `conversation_updated` event. chat-v2 has no
|
|
495
|
+
* channel-touched event yet, so the façade remains its source and
|
|
496
|
+
* `ChatGateway` forwards it to WebSocket clients (the chat sidebar
|
|
497
|
+
* listens for it).
|
|
498
|
+
*
|
|
499
|
+
* @param conversation - The conversation in its new state
|
|
500
|
+
*/
|
|
501
|
+
emitConversationUpdated(conversation) {
|
|
502
|
+
this.emit('conversation_updated', {
|
|
503
|
+
type: 'conversation_updated',
|
|
504
|
+
data: conversation,
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Re-read a conversation and emit `conversation_updated` for it.
|
|
509
|
+
* No-op when the conversation no longer exists.
|
|
510
|
+
*
|
|
511
|
+
* @param id - Conversation id
|
|
512
|
+
*/
|
|
513
|
+
async emitConversationUpdatedById(id) {
|
|
514
|
+
const conversation = await this.getConversation(id);
|
|
515
|
+
if (conversation)
|
|
516
|
+
this.emitConversationUpdated(conversation);
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Run a chat-v2 mutation on a conversation, translating chat-v2's
|
|
520
|
+
* `channel_not_found` error into the legacy `ConversationNotFoundError`
|
|
521
|
+
* that callers (chat.controller → 404) catch by type.
|
|
522
|
+
*
|
|
523
|
+
* @param id - Conversation id
|
|
524
|
+
* @param fn - The chat-v2 operation
|
|
525
|
+
* @returns Whatever `fn` returns
|
|
526
|
+
* @throws {ConversationNotFoundError} when the conversation does not exist
|
|
527
|
+
*/
|
|
528
|
+
withConversation(id, fn) {
|
|
529
|
+
try {
|
|
530
|
+
return fn();
|
|
531
|
+
}
|
|
532
|
+
catch (err) {
|
|
533
|
+
if (isChannelNotFound(err))
|
|
534
|
+
throw new ConversationNotFoundError(id);
|
|
535
|
+
throw err;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* @deprecated Will be removed when the façade is retired.
|
|
540
|
+
*/
|
|
541
|
+
async ensureInitialized() {
|
|
542
|
+
/* no-op */
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
// =============================================================================
|
|
546
|
+
// Singleton accessors — preserved for source compatibility
|
|
547
|
+
// =============================================================================
|
|
548
|
+
let _instance = null;
|
|
549
|
+
export function getChatService(options) {
|
|
550
|
+
if (!_instance) {
|
|
551
|
+
_instance = new ChatService(options);
|
|
552
|
+
}
|
|
553
|
+
return _instance;
|
|
554
|
+
}
|
|
555
|
+
export function resetChatService() {
|
|
556
|
+
_instance = null;
|
|
557
|
+
}
|
|
558
|
+
//# sourceMappingURL=chat.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/chat/chat.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -454,11 +454,13 @@ export declare class ChatV2DispatcherService {
|
|
|
454
454
|
private isRefused;
|
|
455
455
|
/**
|
|
456
456
|
* Record whom the agent now acts for (issue #968): the Slack sender, or the
|
|
457
|
-
* owner for a dashboard message.
|
|
458
|
-
*
|
|
457
|
+
* owner for a dashboard message. A row an agent wrote (`authorAgentSession`
|
|
458
|
+
* / `remoteAgentSession`) carries that agent's person instead — its
|
|
459
|
+
* `slackUserId` is the agent's bot, never a person. Done before delivery,
|
|
460
|
+
* so the agent's first connector call already carries the right person.
|
|
459
461
|
*
|
|
460
462
|
* @param sessionName - Recipient
|
|
461
|
-
* @param message - The
|
|
463
|
+
* @param message - The message being delivered
|
|
462
464
|
*/
|
|
463
465
|
private noteActingFor;
|
|
464
466
|
/**
|
|
@@ -573,4 +575,13 @@ export declare class ChatV2DispatcherService {
|
|
|
573
575
|
*/
|
|
574
576
|
dispatchToAgent(channel: ChatChannelDTO, message: ChatMessageDTO, options?: Pick<DispatchMessageOptions, 'slackContextFor'>): Promise<DispatchResult>;
|
|
575
577
|
}
|
|
578
|
+
/**
|
|
579
|
+
* The agent that wrote a chat row, when an agent did: a local agent posting
|
|
580
|
+
* as a user turn (`authorAgentSession`) or a colleague's Slack post
|
|
581
|
+
* (`remoteAgentSession`).
|
|
582
|
+
*
|
|
583
|
+
* @param message - Chat row
|
|
584
|
+
* @returns Agent session, or null for a human's message
|
|
585
|
+
*/
|
|
586
|
+
export declare function agentAuthorOf(message: Pick<ChatMessageDTO, 'metadata'>): string | null;
|
|
576
587
|
//# sourceMappingURL=chat-v2.dispatcher.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-v2.dispatcher.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/chat-v2.dispatcher.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-v2.dispatcher.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/chat-v2/chat-v2.dispatcher.service.ts"],"names":[],"mappings":"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"}
|