crewly 1.13.0 → 1.14.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/constants.ts +8 -0
- package/config/roles/orchestrator/prompt.md +23 -0
- package/config/skills/_common/complete-body-shape.test.sh +113 -0
- package/config/skills/_common/no-dangling-symlinks.test.sh +63 -0
- package/config/skills/_common/task-pool-body-shape.test.sh +471 -0
- package/config/skills/agent/core/accept-task/execute.sh +30 -5
- package/config/skills/agent/core/block-task/execute.sh +59 -6
- package/config/skills/agent/core/complete-task/SKILL.md +37 -5
- package/config/skills/agent/core/complete-task/execute.sh +40 -9
- package/config/skills/agent/core/complete-task/execute.test.sh +213 -0
- package/config/skills/agent/core/create-task/SKILL.md +33 -0
- package/config/skills/agent/core/create-task/execute.sh +82 -23
- package/config/skills/agent/core/delegate-task/execute.sh +46 -0
- package/config/skills/agent/core/get-team-norms/SKILL.md +1 -1
- package/config/skills/agent/core/get-team-norms/execute.sh +73 -2
- package/config/skills/agent/core/handoff-task/execute.sh +8 -1
- package/config/skills/agent/core/reply-channel/SKILL.md +6 -0
- package/config/skills/agent/core/reply-channel/execute.sh +14 -2
- package/config/skills/agent/core/report-status/SKILL.md +26 -0
- package/config/skills/agent/core/report-status/execute.sh +40 -5
- package/config/skills/agent/core/slack-post/SKILL.md +126 -0
- package/config/skills/agent/core/slack-post/execute.sh +127 -0
- package/config/skills/agent/remote-browser/SKILL.md +178 -0
- package/config/skills/agent/xiaoyuzhoufm-transcript/SKILL.md +46 -22
- package/config/skills/agent/xiaoyuzhoufm-transcript/execute.sh +82 -214
- package/config/skills/agent/xiaoyuzhoufm-transcript/skill.json +3 -3
- package/config/skills/orchestrator/delegate-task/SKILL.md +1 -1
- package/config/skills/orchestrator/delegate-task/execute.sh +45 -11
- package/config/skills/orchestrator/delegate-task/execute.test.sh +153 -1
- package/config/skills/orchestrator/get-team-status/SKILL.md +5 -1
- package/config/skills/orchestrator/get-team-status/execute.sh +28 -2
- package/config/skills/team-leader/aggregate-results/SKILL.md +1 -1
- package/config/skills/team-leader/decompose-goal/execute.sh +11 -16
- package/config/skills/team-leader/delegate-task/SKILL.md +14 -1
- package/config/skills/team-leader/delegate-task/execute.sh +132 -43
- package/config/skills/team-leader/delegate-task/execute.test.sh +180 -27
- package/config/slack-app-manifest.json +7 -1
- package/config/vitest-exclude.constants.ts +56 -0
- package/dist/backend/backend/src/config/oauth.config.d.ts +93 -19
- package/dist/backend/backend/src/config/oauth.config.d.ts.map +1 -1
- package/dist/backend/backend/src/config/oauth.config.js +121 -19
- package/dist/backend/backend/src/config/oauth.config.js.map +1 -1
- package/dist/backend/backend/src/constants.d.ts +60 -0
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +74 -0
- 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 +33 -4
- package/dist/backend/backend/src/controllers/chat/chat.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.js +27 -9
- package/dist/backend/backend/src/controllers/credentials/google-oauth.controller.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 +18 -3
- package/dist/backend/backend/src/controllers/monitoring/terminal.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 +360 -15
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts +6 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js +19 -10
- package/dist/backend/backend/src/controllers/task-pool/task-pool.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +43 -7
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/scripts/stamp-build.d.ts +25 -0
- package/dist/backend/backend/src/scripts/stamp-build.d.ts.map +1 -0
- package/dist/backend/backend/src/scripts/stamp-build.js +48 -0
- package/dist/backend/backend/src/scripts/stamp-build.js.map +1 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +25 -0
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +9 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts +42 -3
- package/dist/backend/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js +22 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/types.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +10 -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 +37 -0
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js +13 -11
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-proxy.service.d.ts +14 -0
- 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 +56 -0
- package/dist/backend/backend/src/services/browser/browser-proxy.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-services.registry.d.ts +63 -0
- package/dist/backend/backend/src/services/browser/browser-services.registry.d.ts.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-services.registry.js +74 -0
- package/dist/backend/backend/src/services/browser/browser-services.registry.js.map +1 -0
- package/dist/backend/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +25 -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 +19 -7
- 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 +57 -0
- 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 +110 -1
- package/dist/backend/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.d.ts +21 -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 +43 -0
- package/dist/backend/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.d.ts +6 -0
- package/dist/backend/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js +1 -1
- package/dist/backend/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts.map +1 -1
- package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js +6 -2
- package/dist/backend/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts +15 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +54 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +8 -0
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js +31 -3
- package/dist/backend/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts +28 -3
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js +65 -8
- package/dist/backend/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +214 -4
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +330 -48
- 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 +47 -1
- 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 +183 -15
- 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 +14 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +77 -3
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.d.ts +209 -0
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js +416 -0
- package/dist/backend/backend/src/services/slack/slack-agent-identity.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts +124 -0
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +243 -0
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts +11 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-initializer.js +56 -0
- package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts +103 -0
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.js +197 -0
- package/dist/backend/backend/src/services/slack/slack-mention-resolver.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +18 -0
- package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts +329 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +821 -0
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -0
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +116 -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 +297 -3
- 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 +152 -7
- 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 +268 -36
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/escalation-router.service.js +2 -2
- package/dist/backend/backend/src/services/v3/escalation-router.service.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 +39 -2
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts +22 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +71 -0
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts +20 -2
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js +27 -2
- package/dist/backend/backend/src/services/wiki/wiki-bookkeep-trigger.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts +15 -2
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js +33 -7
- package/dist/backend/backend/src/services/wiki/wiki-reflect-trigger.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts +37 -0
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js +74 -8
- package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/types/slack.types.d.ts +87 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts +1 -1
- package/dist/backend/backend/src/types/v2/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/index.js +1 -1
- package/dist/backend/backend/src/types/v2/index.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +181 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +104 -17
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/backend/src/utils/build-provenance.d.ts +150 -0
- package/dist/backend/backend/src/utils/build-provenance.d.ts.map +1 -0
- package/dist/backend/backend/src/utils/build-provenance.js +211 -0
- package/dist/backend/backend/src/utils/build-provenance.js.map +1 -0
- package/dist/backend/build-info.json +4 -0
- package/dist/backend/config/constants.d.ts +8 -0
- package/dist/backend/config/constants.d.ts.map +1 -1
- package/dist/backend/config/constants.js +8 -0
- package/dist/backend/config/constants.js.map +1 -1
- package/dist/backend/config/vitest-exclude.constants.d.ts +53 -0
- package/dist/backend/config/vitest-exclude.constants.d.ts.map +1 -0
- package/dist/backend/config/vitest-exclude.constants.js +55 -0
- package/dist/backend/config/vitest-exclude.constants.js.map +1 -0
- package/dist/cli/backend/src/config/oauth.config.d.ts +93 -19
- package/dist/cli/backend/src/config/oauth.config.d.ts.map +1 -1
- package/dist/cli/backend/src/config/oauth.config.js +121 -19
- package/dist/cli/backend/src/config/oauth.config.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +60 -0
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +74 -0
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts +538 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js +802 -0
- package/dist/cli/backend/src/services/agent/active-work-briefing.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts +240 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js +524 -0
- package/dist/cli/backend/src/services/agent/agent-heartbeat.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +629 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.js +4548 -0
- package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts +118 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js +304 -0
- package/dist/cli/backend/src/services/agent/agent-suspend.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts +196 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js +504 -0
- package/dist/cli/backend/src/services/agent/auditor-scheduler.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts +97 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js +334 -0
- package/dist/cli/backend/src/services/agent/claude-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +47 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js +112 -0
- package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts +323 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js +1056 -0
- package/dist/cli/backend/src/services/agent/context-window-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts +198 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js +816 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/crewly-agent-external-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +155 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +272 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts +91 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js +120 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/in-process-runtime-registry.js.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts +536 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js +282 -0
- package/dist/cli/backend/src/services/agent/crewly-agent/types.js.map +1 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts +100 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js +149 -0
- package/dist/cli/backend/src/services/agent/disk-cleanup.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts +130 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js +758 -0
- package/dist/cli/backend/src/services/agent/gemini-runtime.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +216 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +508 -0
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts +113 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js +161 -0
- package/dist/cli/backend/src/services/agent/pty-activity-tracker.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts +156 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +641 -0
- package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts +295 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js +1166 -0
- package/dist/cli/backend/src/services/agent/runtime-exit-monitor.service.js.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts +71 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.d.ts.map +1 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js +174 -0
- package/dist/cli/backend/src/services/agent/runtime-service.factory.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts +435 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js +1331 -0
- package/dist/cli/backend/src/services/ai/prompt-builder.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts +33 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js +70 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/capability-overlay.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts +100 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js +296 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/communication.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts +59 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js +87 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/decision-rights.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts +67 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js +84 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/default-execution-loop.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts +35 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/domain-sop.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts +41 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js +95 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/expert-profile.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js +47 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/identity.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts +65 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js +79 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lazy-anti-patterns.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js +55 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/learning-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js +120 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/lifecycle.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts +46 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js +44 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/markdown-file-module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts +28 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js +46 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/memory-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts +60 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js +104 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/mission-context.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts +29 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/project-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts +103 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +383 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts +34 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js +96 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/recovery.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts +106 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js +167 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/request-contract.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts +35 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js +50 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/risk-policy.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts +91 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js +411 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/role-boundary.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts +62 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +199 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts +102 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js +229 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/soul.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts +61 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js +197 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-norms.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts +54 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js +149 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/team-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts +32 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js +69 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/user-profile-reference.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts +91 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js +136 -0
- package/dist/cli/backend/src/services/ai/prompt-modules/working-memory.module.js.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts +81 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js +135 -0
- package/dist/cli/backend/src/services/ai/self-improvement/growth-areas.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts +292 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js +420 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.dispatcher.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts +134 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.js +232 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.mention-resolver.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts +794 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +1322 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts +27 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js +57 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.singleton.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/config.d.ts +100 -0
- package/dist/cli/backend/src/services/chat-v2/config.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/config.js +174 -0
- package/dist/cli/backend/src/services/chat-v2/config.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts +118 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js +171 -0
- package/dist/cli/backend/src/services/chat-v2/legacy-dto.utils.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts +188 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js +317 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/channel.store.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts +119 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js +551 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/chat-db.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +229 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +448 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts +341 -0
- package/dist/cli/backend/src/services/chat-v2/types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/chat-v2/types.js +61 -0
- package/dist/cli/backend/src/services/chat-v2/types.js.map +1 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts +37 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.d.ts.map +1 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js +63 -0
- package/dist/cli/backend/src/services/continuation/patterns/idle-patterns.js.map +1 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts +6 -0
- package/dist/cli/backend/src/services/core/storage.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js +1 -1
- package/dist/cli/backend/src/services/core/storage.service.js.map +1 -1
- package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.d.ts.map +1 -1
- package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js +6 -2
- package/dist/cli/backend/src/services/credential/helpers/gemini-cli-workspace.helper.js.map +1 -1
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts +335 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.d.ts.map +1 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js +421 -0
- package/dist/cli/backend/src/services/intent-task/intent-classifier.rules.js.map +1 -0
- package/dist/cli/backend/src/services/mcp-client.d.ts +233 -0
- package/dist/cli/backend/src/services/mcp-client.d.ts.map +1 -0
- package/dist/cli/backend/src/services/mcp-client.js +302 -0
- package/dist/cli/backend/src/services/mcp-client.js.map +1 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.d.ts +168 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.js +365 -0
- package/dist/cli/backend/src/services/memory/mission-context.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.d.ts +197 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.js +369 -0
- package/dist/cli/backend/src/services/memory/session-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.d.ts +77 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.js +171 -0
- package/dist/cli/backend/src/services/memory/user-profile.service.js.map +1 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.d.ts +232 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.js +417 -0
- package/dist/cli/backend/src/services/memory/working-memory.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts +84 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js +136 -0
- package/dist/cli/backend/src/services/messaging/sub-agent-message-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts +358 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js +755 -0
- package/dist/cli/backend/src/services/messaging/thread-status-queue.service.js.map +1 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts +269 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js +391 -0
- package/dist/cli/backend/src/services/monitoring/token-usage.service.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts +132 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js +284 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.service.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts +70 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js +121 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.singleton.js.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts +130 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js +48 -0
- package/dist/cli/backend/src/services/observability/agent-behavior-log.types.js.map +1 -0
- package/dist/cli/backend/src/services/observability/observability-db.d.ts +84 -0
- package/dist/cli/backend/src/services/observability/observability-db.d.ts.map +1 -0
- package/dist/cli/backend/src/services/observability/observability-db.js +165 -0
- package/dist/cli/backend/src/services/observability/observability-db.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts +124 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.js +256 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.service.js.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts +80 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.js +16 -0
- package/dist/cli/backend/src/services/onboarding/content-approval.types.js.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts +150 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +293 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts +231 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js +353 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-marker.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts +157 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js +483 -0
- package/dist/cli/backend/src/services/orchestrator/improvement-startup.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/index.d.ts +16 -0
- package/dist/cli/backend/src/services/orchestrator/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/index.js +16 -0
- package/dist/cli/backend/src/services/orchestrator/index.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts +117 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js +300 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-restart.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts +114 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js +195 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-setup.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts +94 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js +279 -0
- package/dist/cli/backend/src/services/orchestrator/orchestrator-status.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts +192 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js +395 -0
- package/dist/cli/backend/src/services/orchestrator/safe-restart.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts +201 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js +396 -0
- package/dist/cli/backend/src/services/orchestrator/self-improvement.service.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts +17 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js +30 -0
- package/dist/cli/backend/src/services/orchestrator/slack-bridge-lazy.js.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts +249 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js +569 -0
- package/dist/cli/backend/src/services/orchestrator/state-persistence.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/index.d.ts +47 -0
- package/dist/cli/backend/src/services/session/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/index.js +50 -0
- package/dist/cli/backend/src/services/session/index.js.map +1 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.d.ts +163 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.js +362 -0
- package/dist/cli/backend/src/services/session/log-rotation.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/index.d.ts +11 -0
- package/dist/cli/backend/src/services/session/pty/index.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/index.js +11 -0
- package/dist/cli/backend/src/services/session/pty/index.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +445 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +804 -0
- package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts +252 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.js +611 -0
- package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts +275 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js +403 -0
- package/dist/cli/backend/src/services/session/pty/pty-terminal-buffer.js.map +1 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js +214 -0
- package/dist/cli/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.d.ts +127 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.js +226 -0
- package/dist/cli/backend/src/services/session/session-backend.factory.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts +390 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.js +19 -0
- package/dist/cli/backend/src/services/session/session-backend.interface.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts +350 -0
- package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-command-helper.js +810 -0
- package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts +307 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.js +742 -0
- package/dist/cli/backend/src/services/session/session-handoff.service.js.map +1 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts +231 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.d.ts.map +1 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.js +407 -0
- package/dist/cli/backend/src/services/session/session-state-persistence.js.map +1 -0
- package/dist/cli/backend/src/services/settings/role.service.d.ts +277 -0
- package/dist/cli/backend/src/services/settings/role.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/settings/role.service.js +728 -0
- package/dist/cli/backend/src/services/settings/role.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts +152 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.js +354 -0
- package/dist/cli/backend/src/services/slack/cross-machine-message.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.d.ts +209 -0
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js +416 -0
- package/dist/cli/backend/src/services/slack/slack-agent-identity.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.d.ts +114 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.js +331 -0
- package/dist/cli/backend/src/services/slack/slack-image.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts +103 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.js +197 -0
- package/dist/cli/backend/src/services/slack/slack-mention-resolver.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +499 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +1946 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +329 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +821 -0
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -0
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +430 -0
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/slack/slack.service.js +1388 -0
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -0
- package/dist/cli/backend/src/services/sop/sop.service.d.ts +364 -0
- package/dist/cli/backend/src/services/sop/sop.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/sop/sop.service.js +734 -0
- package/dist/cli/backend/src/services/sop/sop.service.js.map +1 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +152 -7
- 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 +268 -36
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts +178 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.js +692 -0
- package/dist/cli/backend/src/services/v3/escalation-router.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts +200 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js +482 -0
- package/dist/cli/backend/src/services/v3/kr-tracking.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts +117 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.js +321 -0
- package/dist/cli/backend/src/services/v3/mission-executor.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts +610 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js +1529 -0
- package/dist/cli/backend/src/services/v3/request-sla.subscriber.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts +78 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.js +108 -0
- package/dist/cli/backend/src/services/v3/request-tracker.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts +295 -0
- package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/request.service.js +534 -0
- package/dist/cli/backend/src/services/v3/request.service.js.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts +340 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.js +1113 -0
- package/dist/cli/backend/src/services/v3/v3-data.service.js.map +1 -0
- package/dist/cli/backend/src/types/cross-machine.types.d.ts +103 -0
- package/dist/cli/backend/src/types/cross-machine.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/cross-machine.types.js +47 -0
- package/dist/cli/backend/src/types/cross-machine.types.js.map +1 -0
- package/dist/cli/backend/src/types/intent-task.types.d.ts +402 -0
- package/dist/cli/backend/src/types/intent-task.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/intent-task.types.js +403 -0
- package/dist/cli/backend/src/types/intent-task.types.js.map +1 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.d.ts +531 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.js +110 -0
- package/dist/cli/backend/src/types/orchestrator-state.types.js.map +1 -0
- package/dist/cli/backend/src/types/slack.types.d.ts +87 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/index.d.ts +30 -0
- package/dist/cli/backend/src/types/v2/index.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/index.js +22 -0
- package/dist/cli/backend/src/types/v2/index.js.map +1 -0
- package/dist/cli/backend/src/types/v2/key-result.types.d.ts +279 -0
- package/dist/cli/backend/src/types/v2/key-result.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/key-result.types.js +264 -0
- package/dist/cli/backend/src/types/v2/key-result.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts +661 -0
- package/dist/cli/backend/src/types/v2/mission.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/mission.types.js +713 -0
- package/dist/cli/backend/src/types/v2/mission.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts +204 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.js +121 -0
- package/dist/cli/backend/src/types/v2/reconcile.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts +192 -0
- package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/request.types.js +179 -0
- package/dist/cli/backend/src/types/v2/request.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +181 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +104 -17
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/workspace.types.d.ts +157 -0
- package/dist/cli/backend/src/types/v2/workspace.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/v2/workspace.types.js +173 -0
- package/dist/cli/backend/src/types/v2/workspace.types.js.map +1 -0
- package/dist/cli/backend/src/utils/async.utils.d.ts +68 -0
- package/dist/cli/backend/src/utils/async.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/async.utils.js +80 -0
- package/dist/cli/backend/src/utils/async.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/native-binding.utils.d.ts +128 -0
- package/dist/cli/backend/src/utils/native-binding.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/native-binding.utils.js +206 -0
- package/dist/cli/backend/src/utils/native-binding.utils.js.map +1 -0
- package/dist/cli/backend/src/utils/team.utils.d.ts +40 -0
- package/dist/cli/backend/src/utils/team.utils.d.ts.map +1 -0
- package/dist/cli/backend/src/utils/team.utils.js +66 -0
- package/dist/cli/backend/src/utils/team.utils.js.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts +142 -0
- package/dist/cli/backend/src/websocket/chat.gateway.d.ts.map +1 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js +327 -0
- package/dist/cli/backend/src/websocket/chat.gateway.js.map +1 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.d.ts +341 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.d.ts.map +1 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.js +933 -0
- package/dist/cli/backend/src/websocket/terminal.gateway.js.map +1 -0
- package/dist/cli/cli/src/index.js +0 -0
- package/dist/cli/config/constants.d.ts +8 -0
- package/dist/cli/config/constants.d.ts.map +1 -1
- package/dist/cli/config/constants.js +8 -0
- package/dist/cli/config/constants.js.map +1 -1
- package/dist/cli/config/vitest-exclude.constants.d.ts +53 -0
- package/dist/cli/config/vitest-exclude.constants.d.ts.map +1 -0
- package/dist/cli/config/vitest-exclude.constants.js +55 -0
- package/dist/cli/config/vitest-exclude.constants.js.map +1 -0
- package/frontend/dist/assets/index-190a957f.js +4961 -0
- package/frontend/dist/assets/{index-8205ea5e.css → index-88feb412.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +2 -2
- package/packages/crewly-agent/src/runtime/agent-runner.service.test.ts +174 -30
- package/packages/crewly-agent/src/runtime/agent-runner.service.ts +121 -6
- package/packages/crewly-agent/src/runtime/types.ts +56 -5
- package/dist/backend/backend/src/controllers/knowledge/index.d.ts +0 -7
- package/dist/backend/backend/src/controllers/knowledge/index.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge/index.js +0 -7
- package/dist/backend/backend/src/controllers/knowledge/index.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.d.ts +0 -71
- package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.js +0 -237
- package/dist/backend/backend/src/controllers/knowledge/knowledge.controller.js.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.d.ts +0 -24
- package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.js +0 -34
- package/dist/backend/backend/src/controllers/knowledge/knowledge.routes.js.map +0 -1
- package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.d.ts +0 -91
- package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.js +0 -290
- package/dist/backend/backend/src/controllers/scheduler/unified-scheduler.controller.js.map +0 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts +0 -169
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.d.ts.map +0 -1
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js +0 -1779
- package/dist/backend/backend/src/controllers/task-management/task-management.controller.js.map +0 -1
- package/dist/backend/backend/src/index.js.orc-bak-20260529 +0 -3130
- package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.d.ts +0 -27
- package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.d.ts.map +0 -1
- package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.js +0 -40
- package/dist/backend/backend/src/routes/modules/unified-scheduler.routes.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts +0 -513
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js +0 -1568
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-runner.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts +0 -86
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js +0 -147
- package/dist/backend/backend/src/services/agent/crewly-agent/agent-worker.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts +0 -68
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js +0 -131
- package/dist/backend/backend/src/services/agent/crewly-agent/api-client.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts +0 -130
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js +0 -263
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-log.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts +0 -74
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js +0 -140
- package/dist/backend/backend/src/services/agent/crewly-agent/audit-trail.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts +0 -29
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js +0 -279
- package/dist/backend/backend/src/services/agent/crewly-agent/auditor-tools.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts +0 -340
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js +0 -1176
- package/dist/backend/backend/src/services/agent/crewly-agent/crewly-agent-runtime.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts +0 -79
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js +0 -145
- package/dist/backend/backend/src/services/agent/crewly-agent/deepseek-sse-transform.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts +0 -79
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js +0 -218
- package/dist/backend/backend/src/services/agent/crewly-agent/env-isolation.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts +0 -16
- package/dist/backend/backend/src/services/agent/crewly-agent/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js +0 -16
- package/dist/backend/backend/src/services/agent/crewly-agent/index.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts +0 -135
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js +0 -185
- package/dist/backend/backend/src/services/agent/crewly-agent/mcp-tool-bridge.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts +0 -141
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js +0 -310
- package/dist/backend/backend/src/services/agent/crewly-agent/model-manager.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts +0 -91
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js +0 -143
- package/dist/backend/backend/src/services/agent/crewly-agent/output-filter.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts +0 -103
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js +0 -256
- package/dist/backend/backend/src/services/agent/crewly-agent/prompt-guard.service.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts +0 -143
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js +0 -264
- package/dist/backend/backend/src/services/agent/crewly-agent/rate-limiter.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts +0 -13
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js +0 -91
- package/dist/backend/backend/src/services/agent/crewly-agent/smoke-test.js.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts +0 -135
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.d.ts.map +0 -1
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js +0 -1937
- package/dist/backend/backend/src/services/agent/crewly-agent/tool-registry.js.map +0 -1
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts +0 -429
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js +0 -852
- package/dist/backend/backend/src/services/autonomous/auto-assign.service.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts +0 -78
- package/dist/backend/backend/src/services/knowledge/embedding-provider.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/embedding-provider.js +0 -179
- package/dist/backend/backend/src/services/knowledge/embedding-provider.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts +0 -118
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js +0 -241
- package/dist/backend/backend/src/services/knowledge/fts5-index.service.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +0 -102
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js +0 -118
- package/dist/backend/backend/src/services/knowledge/fts5-query-sanitizer.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/index.d.ts +0 -8
- package/dist/backend/backend/src/services/knowledge/index.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/index.js +0 -8
- package/dist/backend/backend/src/services/knowledge/index.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts +0 -241
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js +0 -590
- package/dist/backend/backend/src/services/knowledge/knowledge-search.service.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/knowledge.service.d.ts +0 -153
- package/dist/backend/backend/src/services/knowledge/knowledge.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/knowledge.service.js +0 -409
- package/dist/backend/backend/src/services/knowledge/knowledge.service.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts +0 -331
- package/dist/backend/backend/src/services/knowledge/vector-store.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js +0 -830
- package/dist/backend/backend/src/services/knowledge/vector-store.service.js.map +0 -1
- package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.d.ts +0 -115
- package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.js +0 -215
- package/dist/backend/backend/src/services/knowledge/wiki-compiler.service.js.map +0 -1
- package/dist/backend/backend/src/services/memory/embedding-provider.d.ts +0 -78
- package/dist/backend/backend/src/services/memory/embedding-provider.d.ts.map +0 -1
- package/dist/backend/backend/src/services/memory/embedding-provider.js +0 -185
- package/dist/backend/backend/src/services/memory/embedding-provider.js.map +0 -1
- package/dist/backend/backend/src/services/memory/vector-store.service.d.ts +0 -331
- package/dist/backend/backend/src/services/memory/vector-store.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/memory/vector-store.service.js +0 -825
- package/dist/backend/backend/src/services/memory/vector-store.service.js.map +0 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts +0 -171
- package/dist/backend/backend/src/services/project/task-tracking.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/project/task-tracking.service.js +0 -725
- package/dist/backend/backend/src/services/project/task-tracking.service.js.map +0 -1
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts +0 -118
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js +0 -326
- package/dist/backend/backend/src/services/v3/project-task-watcher.service.js.map +0 -1
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts +0 -74
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js +0 -154
- package/dist/backend/backend/src/services/wiki/wiki-chat-subscriber.service.js.map +0 -1
- package/dist/backend/backend/src/services/workflow/unified-scheduler.service.d.ts +0 -234
- package/dist/backend/backend/src/services/workflow/unified-scheduler.service.d.ts.map +0 -1
- package/dist/backend/backend/src/services/workflow/unified-scheduler.service.js +0 -636
- package/dist/backend/backend/src/services/workflow/unified-scheduler.service.js.map +0 -1
- package/dist/backend/backend/src/services/workflow/unified-scheduler.types.d.ts +0 -156
- package/dist/backend/backend/src/services/workflow/unified-scheduler.types.d.ts.map +0 -1
- package/dist/backend/backend/src/services/workflow/unified-scheduler.types.js +0 -81
- package/dist/backend/backend/src/services/workflow/unified-scheduler.types.js.map +0 -1
- package/dist/backend/backend/src/types/auto-assign.types.d.ts +0 -271
- package/dist/backend/backend/src/types/auto-assign.types.d.ts.map +0 -1
- package/dist/backend/backend/src/types/auto-assign.types.js +0 -136
- package/dist/backend/backend/src/types/auto-assign.types.js.map +0 -1
- package/dist/backend/backend/src/types/knowledge.types.d.ts +0 -195
- package/dist/backend/backend/src/types/knowledge.types.d.ts.map +0 -1
- package/dist/backend/backend/src/types/knowledge.types.js +0 -38
- package/dist/backend/backend/src/types/knowledge.types.js.map +0 -1
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts +0 -111
- package/dist/backend/backend/src/utils/esm-require.utils.d.ts.map +0 -1
- package/dist/backend/backend/src/utils/esm-require.utils.js +0 -124
- package/dist/backend/backend/src/utils/esm-require.utils.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts +0 -78
- package/dist/cli/backend/src/services/knowledge/embedding-provider.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/embedding-provider.js +0 -179
- package/dist/cli/backend/src/services/knowledge/embedding-provider.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts +0 -118
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js +0 -241
- package/dist/cli/backend/src/services/knowledge/fts5-index.service.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts +0 -102
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js +0 -118
- package/dist/cli/backend/src/services/knowledge/fts5-query-sanitizer.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts +0 -56
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js +0 -91
- package/dist/cli/backend/src/services/knowledge/fts5-search-strategy.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts +0 -241
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js +0 -590
- package/dist/cli/backend/src/services/knowledge/knowledge-search.service.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts +0 -153
- package/dist/cli/backend/src/services/knowledge/knowledge.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/knowledge.service.js +0 -409
- package/dist/cli/backend/src/services/knowledge/knowledge.service.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts +0 -159
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js +0 -304
- package/dist/cli/backend/src/services/knowledge/learnings-index.service.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts +0 -331
- package/dist/cli/backend/src/services/knowledge/vector-store.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js +0 -830
- package/dist/cli/backend/src/services/knowledge/vector-store.service.js.map +0 -1
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts +0 -115
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js +0 -215
- package/dist/cli/backend/src/services/knowledge/wiki-compiler.service.js.map +0 -1
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts +0 -78
- package/dist/cli/backend/src/services/memory/embedding-provider.d.ts.map +0 -1
- package/dist/cli/backend/src/services/memory/embedding-provider.js +0 -179
- package/dist/cli/backend/src/services/memory/embedding-provider.js.map +0 -1
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts +0 -331
- package/dist/cli/backend/src/services/memory/vector-store.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/memory/vector-store.service.js +0 -814
- package/dist/cli/backend/src/services/memory/vector-store.service.js.map +0 -1
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts +0 -171
- package/dist/cli/backend/src/services/project/task-tracking.service.d.ts.map +0 -1
- package/dist/cli/backend/src/services/project/task-tracking.service.js +0 -725
- package/dist/cli/backend/src/services/project/task-tracking.service.js.map +0 -1
- package/dist/cli/backend/src/types/auto-assign.types.d.ts +0 -271
- package/dist/cli/backend/src/types/auto-assign.types.d.ts.map +0 -1
- package/dist/cli/backend/src/types/auto-assign.types.js +0 -136
- package/dist/cli/backend/src/types/auto-assign.types.js.map +0 -1
- package/dist/cli/backend/src/types/knowledge.types.d.ts +0 -195
- package/dist/cli/backend/src/types/knowledge.types.d.ts.map +0 -1
- package/dist/cli/backend/src/types/knowledge.types.js +0 -38
- package/dist/cli/backend/src/types/knowledge.types.js.map +0 -1
- package/frontend/dist/assets/index-aa737fd3.js +0 -5254
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MessageStore — CRUD for `chat_messages` plus the server-side
|
|
3
|
+
* sequence assigner described in tech-spec §4.
|
|
4
|
+
*
|
|
5
|
+
* Key properties:
|
|
6
|
+
* - Every insert assigns `seq = MAX(seq)+1` for the channel inside a
|
|
7
|
+
* transaction that also bumps `chat_channels.last_message_at`.
|
|
8
|
+
* - Concurrent writes serialize through the SQLite write lock; the
|
|
9
|
+
* `UNIQUE(channel_id, seq)` constraint is a belt-and-braces guard.
|
|
10
|
+
* - `clientMessageId` is an optional idempotency key stored in
|
|
11
|
+
* `metadata.clientMessageId`; duplicate inserts surface the
|
|
12
|
+
* persisted row instead of erroring.
|
|
13
|
+
*
|
|
14
|
+
* @module services/chat-v2/sqlite/message.store
|
|
15
|
+
*/
|
|
16
|
+
import { type ChatContentType, type ChatMessageCursorPayload, type ChatMessageRow, type ChatSenderType } from '../types.js';
|
|
17
|
+
import type { ChatDatabase } from './chat-db.js';
|
|
18
|
+
/**
|
|
19
|
+
* Encode a pagination cursor to an opaque base64url string.
|
|
20
|
+
*
|
|
21
|
+
* @param payload - Cursor fields
|
|
22
|
+
* @returns Opaque base64url-encoded JSON string
|
|
23
|
+
*/
|
|
24
|
+
export declare function encodeCursor(payload: ChatMessageCursorPayload): string;
|
|
25
|
+
/**
|
|
26
|
+
* Decode an opaque pagination cursor.
|
|
27
|
+
*
|
|
28
|
+
* @param cursor - The cursor string (or null/undefined)
|
|
29
|
+
* @returns The decoded payload, or null if input is missing
|
|
30
|
+
* @throws {ChatError} `invalid_cursor` (400) if the cursor fails to parse or
|
|
31
|
+
* doesn't contain the expected fields.
|
|
32
|
+
*/
|
|
33
|
+
export declare function decodeCursor(cursor: string | null | undefined): ChatMessageCursorPayload | null;
|
|
34
|
+
/** Options for inserting a message. */
|
|
35
|
+
export interface MessageInsertInput {
|
|
36
|
+
channelId: string;
|
|
37
|
+
senderType: ChatSenderType;
|
|
38
|
+
senderId: string;
|
|
39
|
+
content: string;
|
|
40
|
+
contentType?: ChatContentType;
|
|
41
|
+
/** Optional metadata object. Will be JSON-stringified. */
|
|
42
|
+
metadata?: Record<string, unknown>;
|
|
43
|
+
/** Stable client id for idempotent retries; folded into metadata. */
|
|
44
|
+
clientMessageId?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Phase A (SEALED §3.2) — array of mention IDs (member or team)
|
|
47
|
+
* referenced inline in `content`. Stored as a JSON-encoded string in
|
|
48
|
+
* the `mentions` column. Empty array or omitted → null in storage.
|
|
49
|
+
*/
|
|
50
|
+
mentions?: string[];
|
|
51
|
+
/**
|
|
52
|
+
* Phase A (SEALED §3.2) — Slack-style thread root. When set, this
|
|
53
|
+
* message is a reply within the thread rooted at `threadId`. Omitted
|
|
54
|
+
* for top-level channel messages.
|
|
55
|
+
*/
|
|
56
|
+
threadId?: string;
|
|
57
|
+
/** Override the insert clock (tests). */
|
|
58
|
+
nowMs?: number;
|
|
59
|
+
/** Override the generated id (tests / deterministic callers). */
|
|
60
|
+
id?: string;
|
|
61
|
+
}
|
|
62
|
+
/** Result of inserting a message — includes whether this was a dedupe hit. */
|
|
63
|
+
export interface MessageInsertResult {
|
|
64
|
+
row: ChatMessageRow;
|
|
65
|
+
/** True when the returned row pre-existed under the given clientMessageId. */
|
|
66
|
+
deduped: boolean;
|
|
67
|
+
}
|
|
68
|
+
/** Options for listing messages with cursor pagination. */
|
|
69
|
+
export interface MessageListOptions {
|
|
70
|
+
cursor?: string | null;
|
|
71
|
+
/** 1..100, default 50. */
|
|
72
|
+
limit?: number;
|
|
73
|
+
/** `backward` (default) loads older; `forward` loads newer. */
|
|
74
|
+
direction?: 'backward' | 'forward';
|
|
75
|
+
}
|
|
76
|
+
/** SQLite-backed store for chat messages. */
|
|
77
|
+
export declare class MessageStore {
|
|
78
|
+
private readonly db;
|
|
79
|
+
/** Cap on a single page size. */
|
|
80
|
+
static readonly MAX_LIMIT = 100;
|
|
81
|
+
/** Default page size when caller didn't specify. */
|
|
82
|
+
static readonly DEFAULT_LIMIT = 50;
|
|
83
|
+
constructor(db: ChatDatabase);
|
|
84
|
+
/**
|
|
85
|
+
* Insert a message into the channel.
|
|
86
|
+
*
|
|
87
|
+
* Performs sequence assignment (`MAX(seq)+1`) and idempotency dedupe in a
|
|
88
|
+
* single transaction. If a row with the same `(channel_id, clientMessageId)`
|
|
89
|
+
* already exists, returns it with `deduped=true` instead of inserting.
|
|
90
|
+
*
|
|
91
|
+
* Also updates the parent channel's `last_message_at`.
|
|
92
|
+
*
|
|
93
|
+
* @param input - Insert payload
|
|
94
|
+
* @returns The persisted row plus a dedupe flag
|
|
95
|
+
* @throws {ChatError} `channel_not_found` (404) if the channel is missing
|
|
96
|
+
* (or archived and we want to refuse).
|
|
97
|
+
*/
|
|
98
|
+
insert(input: MessageInsertInput): MessageInsertResult;
|
|
99
|
+
/**
|
|
100
|
+
* Look up a message by its id.
|
|
101
|
+
*
|
|
102
|
+
* @param id - The message id
|
|
103
|
+
* @returns The row, or null
|
|
104
|
+
*/
|
|
105
|
+
getById(id: string): ChatMessageRow | null;
|
|
106
|
+
/**
|
|
107
|
+
* List messages for a channel with cursor pagination.
|
|
108
|
+
*
|
|
109
|
+
* @param channelId - The channel id to read
|
|
110
|
+
* @param options - Listing options (cursor, limit, direction)
|
|
111
|
+
* @returns An ordered array of rows and cursors for next/prev pages
|
|
112
|
+
*/
|
|
113
|
+
listByChannel(channelId: string, options?: MessageListOptions): {
|
|
114
|
+
rows: ChatMessageRow[];
|
|
115
|
+
nextCursor: string | null;
|
|
116
|
+
prevCursor: string | null;
|
|
117
|
+
};
|
|
118
|
+
/** Execute the paginated SELECT for one page of messages. */
|
|
119
|
+
private queryPage;
|
|
120
|
+
/** Compute next/prev cursors based on the page result. */
|
|
121
|
+
private buildCursors;
|
|
122
|
+
/**
|
|
123
|
+
* Aggregate Slack-style thread reply counts for a channel in a single
|
|
124
|
+
* query.
|
|
125
|
+
*
|
|
126
|
+
* Replies carry `thread_id = <root message id>`; root messages have
|
|
127
|
+
* `thread_id IS NULL`. This groups every reply by its root and returns
|
|
128
|
+
* one entry per thread with the reply count and the timestamp (ms) of
|
|
129
|
+
* the most recent reply. The caller attaches these to the matching
|
|
130
|
+
* root-message DTOs.
|
|
131
|
+
*
|
|
132
|
+
* Kept as ONE aggregate query per page (O(rows-with-threads)) rather
|
|
133
|
+
* than a per-message lookup, so a page render stays a fixed two-query
|
|
134
|
+
* cost regardless of page size.
|
|
135
|
+
*
|
|
136
|
+
* @param channelId - The channel id to aggregate over
|
|
137
|
+
* @returns Map of `rootMessageId` to `{ replyCount, lastReplyAtMs }`
|
|
138
|
+
*/
|
|
139
|
+
threadReplySummary(channelId: string): Map<string, {
|
|
140
|
+
replyCount: number;
|
|
141
|
+
lastReplyAtMs: number;
|
|
142
|
+
}>;
|
|
143
|
+
/**
|
|
144
|
+
* Return the current `MAX(seq)` for a channel, or 0 when empty.
|
|
145
|
+
*
|
|
146
|
+
* @param channelId - The channel id
|
|
147
|
+
* @returns The largest seq, or 0
|
|
148
|
+
*/
|
|
149
|
+
getLastSeq(channelId: string): number;
|
|
150
|
+
/** Count messages for a channel. Used by tests and metrics. */
|
|
151
|
+
count(channelId: string): number;
|
|
152
|
+
/**
|
|
153
|
+
* Count all messages across every channel in the database.
|
|
154
|
+
*
|
|
155
|
+
* Onboarding v3 (B1) — used by the cold-start detector to decide whether
|
|
156
|
+
* a fresh OSS install should auto-launch onboarding. The "any chat at all
|
|
157
|
+
* means user has been here before" semantics is intentional: the detector
|
|
158
|
+
* combines this with the per-project `firstLaunchedAt` marker to defend
|
|
159
|
+
* against the case where chat-v2 is wiped accidentally on an existing
|
|
160
|
+
* install (a non-zero count short-circuits onboarding before the marker
|
|
161
|
+
* is even consulted).
|
|
162
|
+
*
|
|
163
|
+
* Single COUNT(*) over the index — O(rows) in the worst case but
|
|
164
|
+
* negligible at install time when the table is empty (the only time the
|
|
165
|
+
* caller actually cares about the result).
|
|
166
|
+
*
|
|
167
|
+
* @returns Total number of persisted chat messages
|
|
168
|
+
*/
|
|
169
|
+
countAll(): number;
|
|
170
|
+
/**
|
|
171
|
+
* Phase 6.0b — delete every message in a channel while leaving the
|
|
172
|
+
* channel row in place. Used by the legacy `clearConversation`
|
|
173
|
+
* controller route. Not transactional with channel state; callers
|
|
174
|
+
* that need atomicity should wrap in their own transaction.
|
|
175
|
+
*
|
|
176
|
+
* @param channelId - The channel whose messages to remove
|
|
177
|
+
* @returns Number of rows deleted
|
|
178
|
+
*/
|
|
179
|
+
deleteAllByChannel(channelId: string): number;
|
|
180
|
+
/**
|
|
181
|
+
* Merge a JSON patch into an existing message's metadata column.
|
|
182
|
+
* Implementation of Phase 6.0 of the unified-chat-message-store spec
|
|
183
|
+
* — replaces the legacy `ChatService.updateMessageMetadata` so all
|
|
184
|
+
* mutation flows through the canonical store. SQLite's `json_patch`
|
|
185
|
+
* built-in handles the merge atomically.
|
|
186
|
+
*
|
|
187
|
+
* @param id - Message id to update
|
|
188
|
+
* @param patch - Partial metadata object to merge in (shallow merge)
|
|
189
|
+
* @returns The post-update row, or null if the message doesn't exist
|
|
190
|
+
*/
|
|
191
|
+
updateMetadata(id: string, patch: Record<string, unknown>): ChatMessageRow | null;
|
|
192
|
+
/**
|
|
193
|
+
* Find messages with `metadata.slackDeliveryStatus = 'pending'` AND a
|
|
194
|
+
* non-empty `metadata.slackChannelId`, created within the past
|
|
195
|
+
* `maxAgeMs`. Used by `NotifyReconciliationService` to retry Slack
|
|
196
|
+
* deliveries that failed mid-flight.
|
|
197
|
+
*
|
|
198
|
+
* The `slackDeliveryStatus` field is set by callers (legacy code and
|
|
199
|
+
* Phase 3 Slack writes) — this method is the canonical replacement
|
|
200
|
+
* for `ChatService.getMessagesWithPendingSlackDelivery`.
|
|
201
|
+
*
|
|
202
|
+
* @param maxAgeMs - Lookback window in milliseconds
|
|
203
|
+
* @param nowMs - Optional clock override for tests
|
|
204
|
+
* @returns Up to `MAX_LIMIT` matching rows, newest first
|
|
205
|
+
*/
|
|
206
|
+
/**
|
|
207
|
+
* Find the thread-root message a Slack thread maps to. Slack team channels
|
|
208
|
+
* persist every inbound root with `metadata.slackThreadTs = <its own ts>`;
|
|
209
|
+
* a Slack reply carries that ts as `thread_ts`, so this lookup recovers
|
|
210
|
+
* the chat-v2 root the reply belongs under.
|
|
211
|
+
*
|
|
212
|
+
* @param channelId - The chat-v2 channel (huddle) id
|
|
213
|
+
* @param slackThreadTs - Slack thread timestamp (`1712345678.000100`)
|
|
214
|
+
* @returns The root row, or null when no message carries that ts
|
|
215
|
+
*/
|
|
216
|
+
findThreadRootBySlackTs(channelId: string, slackThreadTs: string): ChatMessageRow | null;
|
|
217
|
+
/**
|
|
218
|
+
* The most recent thread-root in a channel that originated from Slack.
|
|
219
|
+
* Used as the outbound fallback when an agent reply carries no thread id:
|
|
220
|
+
* "reply into the latest Slack thread" beats dropping the reply at the
|
|
221
|
+
* channel top level.
|
|
222
|
+
*
|
|
223
|
+
* @param channelId - The chat-v2 channel (huddle) id
|
|
224
|
+
* @returns The latest Slack-origin root row, or null
|
|
225
|
+
*/
|
|
226
|
+
findLatestSlackRoot(channelId: string): ChatMessageRow | null;
|
|
227
|
+
findPendingSlackDelivery(maxAgeMs: number, nowMs?: number): ChatMessageRow[];
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=message.store.d.ts.map
|
|
@@ -0,0 +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;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,CAChB,SAAS,EAAE,MAAM,GAChB,GAAG,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAgB7D;;;;;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;IAOlB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAO7C;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc,GAAG,IAAI;IAmBjF;;;;;;;;;;;;;OAaG;IACH;;;;;;;;;OASG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAexF;;;;;;;;OAQG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAe7D,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,cAAc,EAAE;CAe7E"}
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MessageStore — CRUD for `chat_messages` plus the server-side
|
|
3
|
+
* sequence assigner described in tech-spec §4.
|
|
4
|
+
*
|
|
5
|
+
* Key properties:
|
|
6
|
+
* - Every insert assigns `seq = MAX(seq)+1` for the channel inside a
|
|
7
|
+
* transaction that also bumps `chat_channels.last_message_at`.
|
|
8
|
+
* - Concurrent writes serialize through the SQLite write lock; the
|
|
9
|
+
* `UNIQUE(channel_id, seq)` constraint is a belt-and-braces guard.
|
|
10
|
+
* - `clientMessageId` is an optional idempotency key stored in
|
|
11
|
+
* `metadata.clientMessageId`; duplicate inserts surface the
|
|
12
|
+
* persisted row instead of erroring.
|
|
13
|
+
*
|
|
14
|
+
* @module services/chat-v2/sqlite/message.store
|
|
15
|
+
*/
|
|
16
|
+
import { randomUUID } from 'crypto';
|
|
17
|
+
import { CHAT_ERROR_CODES, ChatError, } from '../types.js';
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
// Constants — shared SELECT column list, single source of truth
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
/**
|
|
22
|
+
* Canonical column list for `chat_messages` SELECTs. Including all Phase A
|
|
23
|
+
* columns (mentions / thread_id) here keeps every read path in this store
|
|
24
|
+
* mapping to a fully-populated `ChatMessageRow`.
|
|
25
|
+
*/
|
|
26
|
+
const MESSAGE_SELECT_COLUMNS = `
|
|
27
|
+
id, channel_id, seq, sender_type, sender_id, content, content_type,
|
|
28
|
+
created_at, metadata, mentions, thread_id
|
|
29
|
+
`;
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Cursor helpers
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
/**
|
|
34
|
+
* Encode a pagination cursor to an opaque base64url string.
|
|
35
|
+
*
|
|
36
|
+
* @param payload - Cursor fields
|
|
37
|
+
* @returns Opaque base64url-encoded JSON string
|
|
38
|
+
*/
|
|
39
|
+
export function encodeCursor(payload) {
|
|
40
|
+
const json = JSON.stringify(payload);
|
|
41
|
+
return Buffer.from(json, 'utf-8').toString('base64url');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Decode an opaque pagination cursor.
|
|
45
|
+
*
|
|
46
|
+
* @param cursor - The cursor string (or null/undefined)
|
|
47
|
+
* @returns The decoded payload, or null if input is missing
|
|
48
|
+
* @throws {ChatError} `invalid_cursor` (400) if the cursor fails to parse or
|
|
49
|
+
* doesn't contain the expected fields.
|
|
50
|
+
*/
|
|
51
|
+
export function decodeCursor(cursor) {
|
|
52
|
+
if (!cursor)
|
|
53
|
+
return null;
|
|
54
|
+
try {
|
|
55
|
+
const json = Buffer.from(cursor, 'base64url').toString('utf-8');
|
|
56
|
+
const parsed = JSON.parse(json);
|
|
57
|
+
if (typeof parsed.seq !== 'number' ||
|
|
58
|
+
!Number.isFinite(parsed.seq) ||
|
|
59
|
+
typeof parsed.channelId !== 'string' ||
|
|
60
|
+
parsed.channelId.length === 0) {
|
|
61
|
+
throw new Error('missing required fields');
|
|
62
|
+
}
|
|
63
|
+
return { seq: parsed.seq, channelId: parsed.channelId };
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
throw new ChatError(CHAT_ERROR_CODES.INVALID_CURSOR, 400, `Cursor failed to parse: ${err instanceof Error ? err.message : String(err)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// ---------------------------------------------------------------------------
|
|
70
|
+
// Store
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
/** SQLite-backed store for chat messages. */
|
|
73
|
+
export class MessageStore {
|
|
74
|
+
db;
|
|
75
|
+
/** Cap on a single page size. */
|
|
76
|
+
static MAX_LIMIT = 100;
|
|
77
|
+
/** Default page size when caller didn't specify. */
|
|
78
|
+
static DEFAULT_LIMIT = 50;
|
|
79
|
+
constructor(db) {
|
|
80
|
+
this.db = db;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Insert a message into the channel.
|
|
84
|
+
*
|
|
85
|
+
* Performs sequence assignment (`MAX(seq)+1`) and idempotency dedupe in a
|
|
86
|
+
* single transaction. If a row with the same `(channel_id, clientMessageId)`
|
|
87
|
+
* already exists, returns it with `deduped=true` instead of inserting.
|
|
88
|
+
*
|
|
89
|
+
* Also updates the parent channel's `last_message_at`.
|
|
90
|
+
*
|
|
91
|
+
* @param input - Insert payload
|
|
92
|
+
* @returns The persisted row plus a dedupe flag
|
|
93
|
+
* @throws {ChatError} `channel_not_found` (404) if the channel is missing
|
|
94
|
+
* (or archived and we want to refuse).
|
|
95
|
+
*/
|
|
96
|
+
insert(input) {
|
|
97
|
+
const id = input.id ?? randomUUID();
|
|
98
|
+
const createdAt = input.nowMs ?? Date.now();
|
|
99
|
+
const contentType = input.contentType ?? 'markdown';
|
|
100
|
+
const metadataObj = {
|
|
101
|
+
...(input.metadata ?? {}),
|
|
102
|
+
...(input.clientMessageId ? { clientMessageId: input.clientMessageId } : {}),
|
|
103
|
+
};
|
|
104
|
+
const metadataHasKeys = Object.keys(metadataObj).length > 0;
|
|
105
|
+
const metadataJson = metadataHasKeys ? JSON.stringify(metadataObj) : null;
|
|
106
|
+
// Phase A: serialize mentions to JSON. Treat null/empty as DB-null so
|
|
107
|
+
// legacy rows and "no mentions" share a representation; the read-side
|
|
108
|
+
// mapper translates DB-null back to [].
|
|
109
|
+
const mentionsJson = input.mentions && input.mentions.length > 0 ? JSON.stringify(input.mentions) : null;
|
|
110
|
+
const threadId = input.threadId ?? null;
|
|
111
|
+
const txn = this.db.transaction(() => {
|
|
112
|
+
// Dedupe check — same clientMessageId + channel → return existing row.
|
|
113
|
+
if (input.clientMessageId) {
|
|
114
|
+
const existing = this.db
|
|
115
|
+
.prepare(`SELECT ${MESSAGE_SELECT_COLUMNS}
|
|
116
|
+
FROM chat_messages
|
|
117
|
+
WHERE channel_id = ?
|
|
118
|
+
AND json_extract(metadata, '$.clientMessageId') = ?
|
|
119
|
+
LIMIT 1`)
|
|
120
|
+
.get(input.channelId, input.clientMessageId);
|
|
121
|
+
if (existing) {
|
|
122
|
+
return { row: existing, deduped: true };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// Channel existence check — FK catches it too but we want a typed error
|
|
126
|
+
// with a sensible status code.
|
|
127
|
+
const channel = this.db
|
|
128
|
+
.prepare('SELECT id, archived_at FROM chat_channels WHERE id = ?')
|
|
129
|
+
.get(input.channelId);
|
|
130
|
+
if (!channel) {
|
|
131
|
+
throw new ChatError(CHAT_ERROR_CODES.CHANNEL_NOT_FOUND, 404, `Channel ${input.channelId} not found`);
|
|
132
|
+
}
|
|
133
|
+
if (channel.archived_at) {
|
|
134
|
+
throw new ChatError(CHAT_ERROR_CODES.CHANNEL_ARCHIVED, 404, `Channel ${input.channelId} is archived`);
|
|
135
|
+
}
|
|
136
|
+
// Sequence assignment + insert.
|
|
137
|
+
const seqRow = this.db
|
|
138
|
+
.prepare(`SELECT COALESCE(MAX(seq), 0) + 1 AS next_seq
|
|
139
|
+
FROM chat_messages
|
|
140
|
+
WHERE channel_id = ?`)
|
|
141
|
+
.get(input.channelId);
|
|
142
|
+
this.db
|
|
143
|
+
.prepare(`INSERT INTO chat_messages
|
|
144
|
+
(id, channel_id, seq, sender_type, sender_id, content, content_type,
|
|
145
|
+
created_at, metadata, mentions, thread_id)
|
|
146
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
147
|
+
.run(id, input.channelId, seqRow.next_seq, input.senderType, input.senderId, input.content, contentType, createdAt, metadataJson, mentionsJson, threadId);
|
|
148
|
+
// Touch last_message_at on the parent channel.
|
|
149
|
+
this.db
|
|
150
|
+
.prepare(`UPDATE chat_channels
|
|
151
|
+
SET last_message_at = ?
|
|
152
|
+
WHERE id = ?
|
|
153
|
+
AND (last_message_at IS NULL OR last_message_at < ?)`)
|
|
154
|
+
.run(createdAt, input.channelId, createdAt);
|
|
155
|
+
const row = this.db
|
|
156
|
+
.prepare(`SELECT ${MESSAGE_SELECT_COLUMNS}
|
|
157
|
+
FROM chat_messages
|
|
158
|
+
WHERE id = ?`)
|
|
159
|
+
.get(id);
|
|
160
|
+
return { row, deduped: false };
|
|
161
|
+
});
|
|
162
|
+
return txn();
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Look up a message by its id.
|
|
166
|
+
*
|
|
167
|
+
* @param id - The message id
|
|
168
|
+
* @returns The row, or null
|
|
169
|
+
*/
|
|
170
|
+
getById(id) {
|
|
171
|
+
const row = this.db
|
|
172
|
+
.prepare(`SELECT ${MESSAGE_SELECT_COLUMNS}
|
|
173
|
+
FROM chat_messages
|
|
174
|
+
WHERE id = ?`)
|
|
175
|
+
.get(id);
|
|
176
|
+
return row ?? null;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* List messages for a channel with cursor pagination.
|
|
180
|
+
*
|
|
181
|
+
* @param channelId - The channel id to read
|
|
182
|
+
* @param options - Listing options (cursor, limit, direction)
|
|
183
|
+
* @returns An ordered array of rows and cursors for next/prev pages
|
|
184
|
+
*/
|
|
185
|
+
listByChannel(channelId, options) {
|
|
186
|
+
const direction = options?.direction ?? 'backward';
|
|
187
|
+
const rawLimit = options?.limit ?? MessageStore.DEFAULT_LIMIT;
|
|
188
|
+
const limit = Math.max(1, Math.min(rawLimit, MessageStore.MAX_LIMIT));
|
|
189
|
+
const decoded = decodeCursor(options?.cursor);
|
|
190
|
+
if (decoded && decoded.channelId !== channelId) {
|
|
191
|
+
throw new ChatError(CHAT_ERROR_CODES.INVALID_CURSOR, 400, 'Cursor belongs to a different channel');
|
|
192
|
+
}
|
|
193
|
+
const rows = this.queryPage(channelId, decoded?.seq ?? null, direction, limit);
|
|
194
|
+
const cursors = this.buildCursors(channelId, rows, direction, limit);
|
|
195
|
+
return { rows, ...cursors };
|
|
196
|
+
}
|
|
197
|
+
/** Execute the paginated SELECT for one page of messages. */
|
|
198
|
+
queryPage(channelId, fromSeq, direction, limit) {
|
|
199
|
+
const cols = MESSAGE_SELECT_COLUMNS;
|
|
200
|
+
if (direction === 'backward') {
|
|
201
|
+
// Loading older: newest-first, seq < cursor.
|
|
202
|
+
if (fromSeq === null) {
|
|
203
|
+
return this.db
|
|
204
|
+
.prepare(`SELECT ${cols} FROM chat_messages
|
|
205
|
+
WHERE channel_id = ?
|
|
206
|
+
ORDER BY seq DESC
|
|
207
|
+
LIMIT ?`)
|
|
208
|
+
.all(channelId, limit);
|
|
209
|
+
}
|
|
210
|
+
return this.db
|
|
211
|
+
.prepare(`SELECT ${cols} FROM chat_messages
|
|
212
|
+
WHERE channel_id = ? AND seq < ?
|
|
213
|
+
ORDER BY seq DESC
|
|
214
|
+
LIMIT ?`)
|
|
215
|
+
.all(channelId, fromSeq, limit);
|
|
216
|
+
}
|
|
217
|
+
// Forward: oldest-first, seq > cursor.
|
|
218
|
+
if (fromSeq === null) {
|
|
219
|
+
return this.db
|
|
220
|
+
.prepare(`SELECT ${cols} FROM chat_messages
|
|
221
|
+
WHERE channel_id = ?
|
|
222
|
+
ORDER BY seq ASC
|
|
223
|
+
LIMIT ?`)
|
|
224
|
+
.all(channelId, limit);
|
|
225
|
+
}
|
|
226
|
+
return this.db
|
|
227
|
+
.prepare(`SELECT ${cols} FROM chat_messages
|
|
228
|
+
WHERE channel_id = ? AND seq > ?
|
|
229
|
+
ORDER BY seq ASC
|
|
230
|
+
LIMIT ?`)
|
|
231
|
+
.all(channelId, fromSeq, limit);
|
|
232
|
+
}
|
|
233
|
+
/** Compute next/prev cursors based on the page result. */
|
|
234
|
+
buildCursors(channelId, rows, direction, limit) {
|
|
235
|
+
// `nextCursor` continues in the current direction; `prevCursor` goes back.
|
|
236
|
+
if (rows.length === 0) {
|
|
237
|
+
return { nextCursor: null, prevCursor: null };
|
|
238
|
+
}
|
|
239
|
+
const isLastPage = rows.length < limit;
|
|
240
|
+
if (direction === 'backward') {
|
|
241
|
+
// rows ordered newest → oldest; the last element has the smallest seq.
|
|
242
|
+
const oldest = rows[rows.length - 1];
|
|
243
|
+
const newest = rows[0];
|
|
244
|
+
return {
|
|
245
|
+
nextCursor: isLastPage
|
|
246
|
+
? null
|
|
247
|
+
: encodeCursor({ seq: oldest.seq, channelId }),
|
|
248
|
+
prevCursor: encodeCursor({ seq: newest.seq, channelId }),
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
// forward: rows ordered oldest → newest; the last element has the largest seq.
|
|
252
|
+
const newest = rows[rows.length - 1];
|
|
253
|
+
const oldest = rows[0];
|
|
254
|
+
return {
|
|
255
|
+
nextCursor: isLastPage ? null : encodeCursor({ seq: newest.seq, channelId }),
|
|
256
|
+
prevCursor: encodeCursor({ seq: oldest.seq, channelId }),
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Aggregate Slack-style thread reply counts for a channel in a single
|
|
261
|
+
* query.
|
|
262
|
+
*
|
|
263
|
+
* Replies carry `thread_id = <root message id>`; root messages have
|
|
264
|
+
* `thread_id IS NULL`. This groups every reply by its root and returns
|
|
265
|
+
* one entry per thread with the reply count and the timestamp (ms) of
|
|
266
|
+
* the most recent reply. The caller attaches these to the matching
|
|
267
|
+
* root-message DTOs.
|
|
268
|
+
*
|
|
269
|
+
* Kept as ONE aggregate query per page (O(rows-with-threads)) rather
|
|
270
|
+
* than a per-message lookup, so a page render stays a fixed two-query
|
|
271
|
+
* cost regardless of page size.
|
|
272
|
+
*
|
|
273
|
+
* @param channelId - The channel id to aggregate over
|
|
274
|
+
* @returns Map of `rootMessageId` to `{ replyCount, lastReplyAtMs }`
|
|
275
|
+
*/
|
|
276
|
+
threadReplySummary(channelId) {
|
|
277
|
+
const rows = this.db
|
|
278
|
+
.prepare(`SELECT thread_id AS rootId, COUNT(*) AS cnt, MAX(created_at) AS last
|
|
279
|
+
FROM chat_messages
|
|
280
|
+
WHERE channel_id = ? AND thread_id IS NOT NULL
|
|
281
|
+
GROUP BY thread_id`)
|
|
282
|
+
.all(channelId);
|
|
283
|
+
const out = new Map();
|
|
284
|
+
for (const r of rows) {
|
|
285
|
+
out.set(r.rootId, { replyCount: r.cnt, lastReplyAtMs: r.last });
|
|
286
|
+
}
|
|
287
|
+
return out;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Return the current `MAX(seq)` for a channel, or 0 when empty.
|
|
291
|
+
*
|
|
292
|
+
* @param channelId - The channel id
|
|
293
|
+
* @returns The largest seq, or 0
|
|
294
|
+
*/
|
|
295
|
+
getLastSeq(channelId) {
|
|
296
|
+
const row = this.db
|
|
297
|
+
.prepare(`SELECT COALESCE(MAX(seq), 0) AS last_seq
|
|
298
|
+
FROM chat_messages
|
|
299
|
+
WHERE channel_id = ?`)
|
|
300
|
+
.get(channelId);
|
|
301
|
+
return row.last_seq;
|
|
302
|
+
}
|
|
303
|
+
/** Count messages for a channel. Used by tests and metrics. */
|
|
304
|
+
count(channelId) {
|
|
305
|
+
const row = this.db
|
|
306
|
+
.prepare('SELECT COUNT(*) AS n FROM chat_messages WHERE channel_id = ?')
|
|
307
|
+
.get(channelId);
|
|
308
|
+
return row.n;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Count all messages across every channel in the database.
|
|
312
|
+
*
|
|
313
|
+
* Onboarding v3 (B1) — used by the cold-start detector to decide whether
|
|
314
|
+
* a fresh OSS install should auto-launch onboarding. The "any chat at all
|
|
315
|
+
* means user has been here before" semantics is intentional: the detector
|
|
316
|
+
* combines this with the per-project `firstLaunchedAt` marker to defend
|
|
317
|
+
* against the case where chat-v2 is wiped accidentally on an existing
|
|
318
|
+
* install (a non-zero count short-circuits onboarding before the marker
|
|
319
|
+
* is even consulted).
|
|
320
|
+
*
|
|
321
|
+
* Single COUNT(*) over the index — O(rows) in the worst case but
|
|
322
|
+
* negligible at install time when the table is empty (the only time the
|
|
323
|
+
* caller actually cares about the result).
|
|
324
|
+
*
|
|
325
|
+
* @returns Total number of persisted chat messages
|
|
326
|
+
*/
|
|
327
|
+
countAll() {
|
|
328
|
+
const row = this.db
|
|
329
|
+
.prepare('SELECT COUNT(*) AS n FROM chat_messages')
|
|
330
|
+
.get();
|
|
331
|
+
return row.n;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Phase 6.0b — delete every message in a channel while leaving the
|
|
335
|
+
* channel row in place. Used by the legacy `clearConversation`
|
|
336
|
+
* controller route. Not transactional with channel state; callers
|
|
337
|
+
* that need atomicity should wrap in their own transaction.
|
|
338
|
+
*
|
|
339
|
+
* @param channelId - The channel whose messages to remove
|
|
340
|
+
* @returns Number of rows deleted
|
|
341
|
+
*/
|
|
342
|
+
deleteAllByChannel(channelId) {
|
|
343
|
+
const result = this.db
|
|
344
|
+
.prepare(`DELETE FROM chat_messages WHERE channel_id = ?`)
|
|
345
|
+
.run(channelId);
|
|
346
|
+
return result.changes;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Merge a JSON patch into an existing message's metadata column.
|
|
350
|
+
* Implementation of Phase 6.0 of the unified-chat-message-store spec
|
|
351
|
+
* — replaces the legacy `ChatService.updateMessageMetadata` so all
|
|
352
|
+
* mutation flows through the canonical store. SQLite's `json_patch`
|
|
353
|
+
* built-in handles the merge atomically.
|
|
354
|
+
*
|
|
355
|
+
* @param id - Message id to update
|
|
356
|
+
* @param patch - Partial metadata object to merge in (shallow merge)
|
|
357
|
+
* @returns The post-update row, or null if the message doesn't exist
|
|
358
|
+
*/
|
|
359
|
+
updateMetadata(id, patch) {
|
|
360
|
+
const patchJson = JSON.stringify(patch);
|
|
361
|
+
const existing = this.db
|
|
362
|
+
.prepare('SELECT metadata FROM chat_messages WHERE id = ?')
|
|
363
|
+
.get(id);
|
|
364
|
+
if (!existing) {
|
|
365
|
+
return null;
|
|
366
|
+
}
|
|
367
|
+
// SQLite's json_patch merges the right operand into the left,
|
|
368
|
+
// adding missing keys and overwriting existing ones. NULL-safe:
|
|
369
|
+
// when the current metadata is NULL we feed an empty object so
|
|
370
|
+
// the patch becomes the final state.
|
|
371
|
+
const baseExpr = existing.metadata ?? '{}';
|
|
372
|
+
this.db
|
|
373
|
+
.prepare(`UPDATE chat_messages SET metadata = json_patch(?, ?) WHERE id = ?`)
|
|
374
|
+
.run(baseExpr, patchJson, id);
|
|
375
|
+
return this.getById(id);
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Find messages with `metadata.slackDeliveryStatus = 'pending'` AND a
|
|
379
|
+
* non-empty `metadata.slackChannelId`, created within the past
|
|
380
|
+
* `maxAgeMs`. Used by `NotifyReconciliationService` to retry Slack
|
|
381
|
+
* deliveries that failed mid-flight.
|
|
382
|
+
*
|
|
383
|
+
* The `slackDeliveryStatus` field is set by callers (legacy code and
|
|
384
|
+
* Phase 3 Slack writes) — this method is the canonical replacement
|
|
385
|
+
* for `ChatService.getMessagesWithPendingSlackDelivery`.
|
|
386
|
+
*
|
|
387
|
+
* @param maxAgeMs - Lookback window in milliseconds
|
|
388
|
+
* @param nowMs - Optional clock override for tests
|
|
389
|
+
* @returns Up to `MAX_LIMIT` matching rows, newest first
|
|
390
|
+
*/
|
|
391
|
+
/**
|
|
392
|
+
* Find the thread-root message a Slack thread maps to. Slack team channels
|
|
393
|
+
* persist every inbound root with `metadata.slackThreadTs = <its own ts>`;
|
|
394
|
+
* a Slack reply carries that ts as `thread_ts`, so this lookup recovers
|
|
395
|
+
* the chat-v2 root the reply belongs under.
|
|
396
|
+
*
|
|
397
|
+
* @param channelId - The chat-v2 channel (huddle) id
|
|
398
|
+
* @param slackThreadTs - Slack thread timestamp (`1712345678.000100`)
|
|
399
|
+
* @returns The root row, or null when no message carries that ts
|
|
400
|
+
*/
|
|
401
|
+
findThreadRootBySlackTs(channelId, slackThreadTs) {
|
|
402
|
+
const row = this.db
|
|
403
|
+
.prepare(`SELECT ${MESSAGE_SELECT_COLUMNS}
|
|
404
|
+
FROM chat_messages
|
|
405
|
+
WHERE channel_id = ?
|
|
406
|
+
AND thread_id IS NULL
|
|
407
|
+
AND json_extract(metadata, '$.slackThreadTs') = ?
|
|
408
|
+
ORDER BY seq DESC
|
|
409
|
+
LIMIT 1`)
|
|
410
|
+
.get(channelId, slackThreadTs);
|
|
411
|
+
return row ?? null;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* The most recent thread-root in a channel that originated from Slack.
|
|
415
|
+
* Used as the outbound fallback when an agent reply carries no thread id:
|
|
416
|
+
* "reply into the latest Slack thread" beats dropping the reply at the
|
|
417
|
+
* channel top level.
|
|
418
|
+
*
|
|
419
|
+
* @param channelId - The chat-v2 channel (huddle) id
|
|
420
|
+
* @returns The latest Slack-origin root row, or null
|
|
421
|
+
*/
|
|
422
|
+
findLatestSlackRoot(channelId) {
|
|
423
|
+
const row = this.db
|
|
424
|
+
.prepare(`SELECT ${MESSAGE_SELECT_COLUMNS}
|
|
425
|
+
FROM chat_messages
|
|
426
|
+
WHERE channel_id = ?
|
|
427
|
+
AND thread_id IS NULL
|
|
428
|
+
AND json_extract(metadata, '$.slackThreadTs') IS NOT NULL
|
|
429
|
+
ORDER BY seq DESC
|
|
430
|
+
LIMIT 1`)
|
|
431
|
+
.get(channelId);
|
|
432
|
+
return row ?? null;
|
|
433
|
+
}
|
|
434
|
+
findPendingSlackDelivery(maxAgeMs, nowMs) {
|
|
435
|
+
const cutoff = (nowMs ?? Date.now()) - maxAgeMs;
|
|
436
|
+
const rows = this.db
|
|
437
|
+
.prepare(`SELECT ${MESSAGE_SELECT_COLUMNS}
|
|
438
|
+
FROM chat_messages
|
|
439
|
+
WHERE json_extract(metadata, '$.slackDeliveryStatus') = 'pending'
|
|
440
|
+
AND json_extract(metadata, '$.slackChannelId') IS NOT NULL
|
|
441
|
+
AND created_at >= ?
|
|
442
|
+
ORDER BY created_at DESC
|
|
443
|
+
LIMIT ${MessageStore.MAX_LIMIT}`)
|
|
444
|
+
.all(cutoff);
|
|
445
|
+
return rows;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
//# sourceMappingURL=message.store.js.map
|