crewly 1.13.1 → 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/agent/core/reply-channel/SKILL.md +6 -0
- package/config/skills/agent/core/reply-channel/execute.sh +14 -2
- 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/get-team-status/SKILL.md +5 -1
- package/config/skills/orchestrator/get-team-status/execute.sh +28 -2
- package/config/slack-app-manifest.json +7 -1
- 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/slack/slack.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/slack/slack.controller.js +342 -0
- package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +23 -7
- package/dist/backend/backend/src/index.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.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +14 -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/reconciler/reconciler-data-provider.d.ts +34 -0
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +99 -10
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.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/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/build-info.json +2 -2
- 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/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/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 +57 -0
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js +110 -1
- package/dist/cli/backend/src/services/chat-v2/chat-v2.service.js.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts +21 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.d.ts.map +1 -1
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js +43 -0
- package/dist/cli/backend/src/services/chat-v2/sqlite/message.store.js.map +1 -1
- 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/orc/orc-delivery-enforcer.service.d.ts +8 -0
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js +31 -3
- package/dist/cli/backend/src/services/orc/orc-delivery-enforcer.service.js.map +1 -1
- 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-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.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +18 -0
- package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.d.ts +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 +116 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.js +297 -3
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
- 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/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/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/frontend/dist/assets/{index-890d3f9d.js → index-190a957f.js} +294 -294
- package/frontend/dist/assets/{index-8205ea5e.css → index-88feb412.css} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- 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
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FTS5 Query Sanitizer
|
|
3
|
-
*
|
|
4
|
-
* Pure helper that converts an arbitrary input string into a safe SQLite FTS5
|
|
5
|
-
* MATCH query via phrase-quote tokenization. Used by
|
|
6
|
-
* {@link Fts5IndexService.search} so that programmatically constructed
|
|
7
|
-
* agent-context strings never accidentally parse as FTS5 operators.
|
|
8
|
-
*
|
|
9
|
-
* **Why this helper exists.** SQLite FTS5 has a rich query grammar with
|
|
10
|
-
* column filters (`column:term`), set-column lists (`{c1, c2}: term`),
|
|
11
|
-
* phrase syntax (`"phrase"`), boolean operators (`AND`, `OR`, `NOT`),
|
|
12
|
-
* proximity (`NEAR(...)`), prefix (`term*`), and grouping (`(...)`). When
|
|
13
|
-
* arbitrary user / agent-context text is concatenated into a MATCH query,
|
|
14
|
-
* these operators trigger:
|
|
15
|
-
*
|
|
16
|
-
* - **commas** are parsed as column-list separators →
|
|
17
|
-
* `fts5: syntax error near ","` (e.g. `"foo, bar"` blows up)
|
|
18
|
-
* - **hyphens inside identifiers** like `team-leader` parse as `team`
|
|
19
|
-
* followed by column filter `-leader` → `no such column: leader`
|
|
20
|
-
* - **colons** parse as column filter operator → `no such column: ...`
|
|
21
|
-
* - **bare AND / OR / NOT** in mixed-case input parse as keywords
|
|
22
|
-
*
|
|
23
|
-
* The previous regex-strip sanitizer at `Fts5IndexService.search` only
|
|
24
|
-
* removed `' " * ( ) { } [ ] ^ ~ \\` — it left commas, hyphens, colons, and
|
|
25
|
-
* all FTS5 keywords intact. Result: 44 silent search failures per day
|
|
26
|
-
* (22 comma + 22 hyphen) for agent recall on 2026-05-07 alone.
|
|
27
|
-
*
|
|
28
|
-
* **Approach (Kai's WI-E F-FTS5 triage recommendation).** Split tokens on
|
|
29
|
-
* **whitespace + comma only** — NOT on word boundaries — then wrap each
|
|
30
|
-
* non-empty token in double quotes for FTS5 phrase syntax. Phrases are
|
|
31
|
-
* **literal** — no operator parsing happens inside the quotes — so any
|
|
32
|
-
* residual operator-like content (hyphens, colons, asterisks, AND/OR/NOT
|
|
33
|
-
* keywords) is neutralized. Tokens are joined with whitespace, which FTS5
|
|
34
|
-
* treats as implicit AND.
|
|
35
|
-
*
|
|
36
|
-
* **Why split on whitespace+comma instead of word boundaries.** A token like
|
|
37
|
-
* `team-leader` wrapped as the phrase `"team-leader"` is parsed by FTS5's
|
|
38
|
-
* MATCH parser as a single phrase node, then internally the
|
|
39
|
-
* `unicode61` tokenizer (used at index time) splits the phrase into
|
|
40
|
-
* adjacent tokens `team` + `leader`. The MATCH operation thus requires
|
|
41
|
-
* those tokens to appear adjacent in the document — which matches docs
|
|
42
|
-
* that were indexed with `team-leader` exactly. Splitting on word
|
|
43
|
-
* boundaries at query-time would produce `"team" "leader"` (loose AND),
|
|
44
|
-
* matching docs with `team` and `leader` anywhere — looser than the
|
|
45
|
-
* caller intended. **Kai's approach preserves precision for hyphenated
|
|
46
|
-
* identifiers without losing the comma/colon-safety win.**
|
|
47
|
-
*
|
|
48
|
-
* **Trade-off (intentional).** This sanitizer DROPS FTS5 operator support:
|
|
49
|
-
* `AND`, `OR`, `NOT`, `NEAR(...)`, column-filter prefixes, and prefix
|
|
50
|
-
* wildcards (`term*`) all become literal phrases. All callers on this
|
|
51
|
-
* path are auto-generated agent-context strings, not user-typed search
|
|
52
|
-
* queries — they don't need operator support. If a future caller needs
|
|
53
|
-
* the full FTS5 grammar, expose a separate `searchRaw()` API rather than
|
|
54
|
-
* loosening this sanitizer.
|
|
55
|
-
*
|
|
56
|
-
* @module services/knowledge/fts5-query-sanitizer
|
|
57
|
-
*/
|
|
58
|
-
/**
|
|
59
|
-
* Convert an arbitrary input string into a safe FTS5 MATCH query via
|
|
60
|
-
* phrase-quote tokenization.
|
|
61
|
-
*
|
|
62
|
-
* The result is one of:
|
|
63
|
-
* - `''` — when the input is empty / whitespace-only / only contains
|
|
64
|
-
* delimiter characters. Callers MUST check for empty and skip the
|
|
65
|
-
* MATCH query (return empty results).
|
|
66
|
-
* - `'"tok1" "tok2" ..."'` — a sequence of double-quoted phrases joined
|
|
67
|
-
* by whitespace (implicit AND in FTS5).
|
|
68
|
-
*
|
|
69
|
-
* Pre-existing double quotes inside a token are escaped per FTS5 phrase
|
|
70
|
-
* syntax (`"` → `""`). This is defensive — auto-generated context
|
|
71
|
-
* strings rarely contain quotes — but it makes the helper safely
|
|
72
|
-
* reusable beyond the current call site.
|
|
73
|
-
*
|
|
74
|
-
* @param input - Raw query string from user input or agent-context concat.
|
|
75
|
-
* @returns Safe FTS5 MATCH expression, or `''` if no tokens remain.
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* ```typescript
|
|
79
|
-
* toFts5Phrase('developer session startup');
|
|
80
|
-
* // → '"developer" "session" "startup"'
|
|
81
|
-
*
|
|
82
|
-
* toFts5Phrase('developer session startup, recent tasks, unfinished work');
|
|
83
|
-
* // → '"developer" "session" "startup" "recent" "tasks" "unfinished" "work"'
|
|
84
|
-
* // (comma fix — was: "syntax error near ',''")
|
|
85
|
-
*
|
|
86
|
-
* toFts5Phrase('team-leader session startup');
|
|
87
|
-
* // → '"team-leader" "session" "startup"'
|
|
88
|
-
* // (hyphen fix — was: "no such column: leader". The phrase `"team-leader"`
|
|
89
|
-
* // matches docs indexed with `team-leader` exactly, since the unicode61
|
|
90
|
-
* // tokenizer splits the phrase content the same way at both index and
|
|
91
|
-
* // query time.)
|
|
92
|
-
*
|
|
93
|
-
* toFts5Phrase('say "hello" world');
|
|
94
|
-
* // → '"say" """hello""" "world"' (quotes escaped as "")
|
|
95
|
-
*
|
|
96
|
-
* toFts5Phrase(' , '); // → ''
|
|
97
|
-
* toFts5Phrase('***'); // → '"***"' (literal phrase, FTS5 strips
|
|
98
|
-
* // non-word chars at tokenization → no match)
|
|
99
|
-
* ```
|
|
100
|
-
*/
|
|
101
|
-
export function toFts5Phrase(input) {
|
|
102
|
-
if (!input) {
|
|
103
|
-
return '';
|
|
104
|
-
}
|
|
105
|
-
return input
|
|
106
|
-
// Split on whitespace + comma only. NOT on word boundaries — see module
|
|
107
|
-
// doc above for why preserving hyphens/colons inside tokens is correct.
|
|
108
|
-
.split(/[\s,]+/)
|
|
109
|
-
.map((token) => token.trim())
|
|
110
|
-
.filter((token) => token.length > 0)
|
|
111
|
-
// Escape pre-existing double quotes per FTS5 phrase syntax (`"` → `""`),
|
|
112
|
-
// then wrap the whole token in double quotes. The result is always a
|
|
113
|
-
// valid FTS5 phrase even if the token contained operator-like
|
|
114
|
-
// punctuation (hyphens, colons, asterisks, parens, etc.).
|
|
115
|
-
.map((token) => `"${token.replace(/"/g, '""')}"`)
|
|
116
|
-
.join(' ');
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=fts5-query-sanitizer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fts5-query-sanitizer.js","sourceRoot":"","sources":["../../../../../../backend/src/services/knowledge/fts5-query-sanitizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK;QACV,wEAAwE;QACxE,wEAAwE;SACvE,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,yEAAyE;QACzE,qEAAqE;QACrE,8DAA8D;QAC9D,0DAA0D;SACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;SAChD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FTS5 Search Strategy
|
|
3
|
-
*
|
|
4
|
-
* Implements the KnowledgeSearchStrategy interface using the SQLite FTS5
|
|
5
|
-
* full-text search index. Maps FTS5 BM25-ranked results to the existing
|
|
6
|
-
* ScoredDocument format used by KnowledgeSearchService.
|
|
7
|
-
*
|
|
8
|
-
* @module services/knowledge/fts5-search-strategy
|
|
9
|
-
*/
|
|
10
|
-
import type { KnowledgeSearchStrategy, ScoredDocument } from './knowledge-search.service.js';
|
|
11
|
-
import type { KnowledgeDocumentSummary } from '../../types/knowledge.types.js';
|
|
12
|
-
import { WikiCompilerService } from './wiki-compiler.service.js';
|
|
13
|
-
/**
|
|
14
|
-
* FTS5-based search strategy for the Wiki-First Knowledge System.
|
|
15
|
-
*
|
|
16
|
-
* This strategy provides pure full-text search via SQLite FTS5 with BM25 ranking.
|
|
17
|
-
*
|
|
18
|
-
* Note on semantic fallback (design doc Section 10): The 10% semantic fallback
|
|
19
|
-
* weight is achieved at the MemoryService level, which runs both FTS5 knowledge
|
|
20
|
-
* search AND vector-based semantic search in parallel. This strategy intentionally
|
|
21
|
-
* does not mix semantic results — that composition happens upstream in the recall
|
|
22
|
-
* pipeline (MemoryService.recall -> searchKnowledgeDocuments + semanticSearch).
|
|
23
|
-
*
|
|
24
|
-
* Uses SQLite FTS5 MATCH with BM25 ranking for fast, zero-cost retrieval.
|
|
25
|
-
* Results are mapped back to the KnowledgeDocumentSummary objects provided
|
|
26
|
-
* by the caller, falling back to minimal summaries when a document is found
|
|
27
|
-
* in the FTS5 index but not in the provided documents array.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* const strategy = new Fts5SearchStrategy(wikiCompiler);
|
|
32
|
-
* const results = await strategy.search('deployment guide', documents);
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export declare class Fts5SearchStrategy implements KnowledgeSearchStrategy {
|
|
36
|
-
private readonly wikiCompiler;
|
|
37
|
-
private readonly logger;
|
|
38
|
-
/**
|
|
39
|
-
* Create an Fts5SearchStrategy.
|
|
40
|
-
*
|
|
41
|
-
* @param wikiCompiler - The WikiCompilerService instance providing FTS5 search
|
|
42
|
-
*/
|
|
43
|
-
constructor(wikiCompiler: WikiCompilerService);
|
|
44
|
-
/**
|
|
45
|
-
* Search for documents matching the query using FTS5 full-text search.
|
|
46
|
-
*
|
|
47
|
-
* FTS5 BM25 rank values are negative (more negative = more relevant),
|
|
48
|
-
* so scores are converted to positive values for the ScoredDocument interface.
|
|
49
|
-
*
|
|
50
|
-
* @param query - The search query text
|
|
51
|
-
* @param documents - Candidate document summaries to match against
|
|
52
|
-
* @returns Documents sorted by descending relevance score
|
|
53
|
-
*/
|
|
54
|
-
search(query: string, documents: KnowledgeDocumentSummary[]): Promise<ScoredDocument[]>;
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=fts5-search-strategy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fts5-search-strategy.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/knowledge/fts5-search-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC7F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,YAAW,uBAAuB;IAChE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IAEzC;;;;OAIG;gBACS,YAAY,EAAE,mBAAmB;IAK7C;;;;;;;;;OASG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAyC9F"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* FTS5 Search Strategy
|
|
3
|
-
*
|
|
4
|
-
* Implements the KnowledgeSearchStrategy interface using the SQLite FTS5
|
|
5
|
-
* full-text search index. Maps FTS5 BM25-ranked results to the existing
|
|
6
|
-
* ScoredDocument format used by KnowledgeSearchService.
|
|
7
|
-
*
|
|
8
|
-
* @module services/knowledge/fts5-search-strategy
|
|
9
|
-
*/
|
|
10
|
-
import { LoggerService } from '../core/logger.service.js';
|
|
11
|
-
/**
|
|
12
|
-
* FTS5-based search strategy for the Wiki-First Knowledge System.
|
|
13
|
-
*
|
|
14
|
-
* This strategy provides pure full-text search via SQLite FTS5 with BM25 ranking.
|
|
15
|
-
*
|
|
16
|
-
* Note on semantic fallback (design doc Section 10): The 10% semantic fallback
|
|
17
|
-
* weight is achieved at the MemoryService level, which runs both FTS5 knowledge
|
|
18
|
-
* search AND vector-based semantic search in parallel. This strategy intentionally
|
|
19
|
-
* does not mix semantic results — that composition happens upstream in the recall
|
|
20
|
-
* pipeline (MemoryService.recall -> searchKnowledgeDocuments + semanticSearch).
|
|
21
|
-
*
|
|
22
|
-
* Uses SQLite FTS5 MATCH with BM25 ranking for fast, zero-cost retrieval.
|
|
23
|
-
* Results are mapped back to the KnowledgeDocumentSummary objects provided
|
|
24
|
-
* by the caller, falling back to minimal summaries when a document is found
|
|
25
|
-
* in the FTS5 index but not in the provided documents array.
|
|
26
|
-
*
|
|
27
|
-
* @example
|
|
28
|
-
* ```typescript
|
|
29
|
-
* const strategy = new Fts5SearchStrategy(wikiCompiler);
|
|
30
|
-
* const results = await strategy.search('deployment guide', documents);
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export class Fts5SearchStrategy {
|
|
34
|
-
wikiCompiler;
|
|
35
|
-
logger;
|
|
36
|
-
/**
|
|
37
|
-
* Create an Fts5SearchStrategy.
|
|
38
|
-
*
|
|
39
|
-
* @param wikiCompiler - The WikiCompilerService instance providing FTS5 search
|
|
40
|
-
*/
|
|
41
|
-
constructor(wikiCompiler) {
|
|
42
|
-
this.wikiCompiler = wikiCompiler;
|
|
43
|
-
this.logger = LoggerService.getInstance().createComponentLogger('Fts5SearchStrategy');
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Search for documents matching the query using FTS5 full-text search.
|
|
47
|
-
*
|
|
48
|
-
* FTS5 BM25 rank values are negative (more negative = more relevant),
|
|
49
|
-
* so scores are converted to positive values for the ScoredDocument interface.
|
|
50
|
-
*
|
|
51
|
-
* @param query - The search query text
|
|
52
|
-
* @param documents - Candidate document summaries to match against
|
|
53
|
-
* @returns Documents sorted by descending relevance score
|
|
54
|
-
*/
|
|
55
|
-
async search(query, documents) {
|
|
56
|
-
const ftsResults = this.wikiCompiler.search(query, { limit: 10 });
|
|
57
|
-
if (ftsResults.length === 0) {
|
|
58
|
-
this.logger.debug('FTS5 search returned no results', { query });
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
|
-
// Build a lookup map from the provided documents array
|
|
62
|
-
const docById = new Map(documents.map((d) => [d.id, d]));
|
|
63
|
-
const scored = [];
|
|
64
|
-
for (const ftsResult of ftsResults) {
|
|
65
|
-
// FTS5 rank is negative; convert to positive score (higher = more relevant)
|
|
66
|
-
const score = Math.abs(ftsResult.rank);
|
|
67
|
-
const existingDoc = docById.get(ftsResult.id);
|
|
68
|
-
if (existingDoc) {
|
|
69
|
-
scored.push({ document: existingDoc, score });
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
// Create a minimal summary for documents in FTS5 but not in the provided list
|
|
73
|
-
const minimalDoc = {
|
|
74
|
-
id: ftsResult.id,
|
|
75
|
-
title: ftsResult.title,
|
|
76
|
-
category: ftsResult.category,
|
|
77
|
-
tags: ftsResult.tags ? ftsResult.tags.split(/,\s*/) : [],
|
|
78
|
-
preview: ftsResult.content.slice(0, 200),
|
|
79
|
-
scope: 'global',
|
|
80
|
-
createdBy: 'system',
|
|
81
|
-
updatedBy: 'system',
|
|
82
|
-
createdAt: new Date().toISOString(),
|
|
83
|
-
updatedAt: new Date().toISOString(),
|
|
84
|
-
};
|
|
85
|
-
scored.push({ document: minimalDoc, score });
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
return scored.sort((a, b) => b.score - a.score);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=fts5-search-strategy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fts5-search-strategy.js","sourceRoot":"","sources":["../../../../../../backend/src/services/knowledge/fts5-search-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,kBAAkB;IACZ,YAAY,CAAsB;IAClC,MAAM,CAAkB;IAEzC;;;;OAIG;IACH,YAAY,YAAiC;QAC3C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IACxF,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,SAAqC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAElE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,uDAAuD;QACvD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAqB,EAAE,CAAC;QAEpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,4EAA4E;YAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAE9C,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,8EAA8E;gBAC9E,MAAM,UAAU,GAA6B;oBAC3C,EAAE,EAAE,SAAS,CAAC,EAAE;oBAChB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,QAAQ,EAAE,SAAS,CAAC,QAAQ;oBAC5B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;oBACxD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;oBACxC,KAAK,EAAE,QAAQ;oBACf,SAAS,EAAE,QAAQ;oBACnB,SAAS,EAAE,QAAQ;oBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -1,241 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Knowledge Search Service
|
|
3
|
-
*
|
|
4
|
-
* Provides pluggable search strategies for knowledge documents.
|
|
5
|
-
* Defaults to `Fts5SearchStrategy` (SQLite FTS5 with native BM25
|
|
6
|
-
* ranking) and falls back to `KeywordSearchStrategy` for docs not
|
|
7
|
-
* yet indexed. The Gemini embedding and local-vector strategies
|
|
8
|
-
* remain available for callers that need semantic similarity but
|
|
9
|
-
* are no longer wired as the default.
|
|
10
|
-
*
|
|
11
|
-
* @module services/knowledge/knowledge-search.service
|
|
12
|
-
*/
|
|
13
|
-
import type { KnowledgeDocumentSummary, KnowledgeScope } from '../../types/knowledge.types.js';
|
|
14
|
-
/**
|
|
15
|
-
* Apply temporal decay to a search score (#154).
|
|
16
|
-
* Score decays by half every TEMPORAL_DECAY_HALF_LIFE_DAYS days.
|
|
17
|
-
* Documents tagged with evergreen/decision tags bypass decay entirely.
|
|
18
|
-
*
|
|
19
|
-
* @param score - Raw relevance score
|
|
20
|
-
* @param createdAt - ISO timestamp of document creation
|
|
21
|
-
* @param tags - Document tags
|
|
22
|
-
* @returns Decayed score
|
|
23
|
-
*/
|
|
24
|
-
export declare function applyTemporalDecay(score: number, createdAt: string, tags: string[]): number;
|
|
25
|
-
/**
|
|
26
|
-
* A document scored by a search strategy.
|
|
27
|
-
*/
|
|
28
|
-
export interface ScoredDocument {
|
|
29
|
-
/** The matched document summary */
|
|
30
|
-
document: KnowledgeDocumentSummary;
|
|
31
|
-
/** Relevance score (higher is more relevant) */
|
|
32
|
-
score: number;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Search options passed to strategies.
|
|
36
|
-
*/
|
|
37
|
-
export interface SearchOptions {
|
|
38
|
-
scope?: KnowledgeScope;
|
|
39
|
-
projectPath?: string;
|
|
40
|
-
category?: string;
|
|
41
|
-
limit?: number;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Strategy interface for scoring documents against a query.
|
|
45
|
-
*/
|
|
46
|
-
export interface KnowledgeSearchStrategy {
|
|
47
|
-
/**
|
|
48
|
-
* Score documents against a query. Returns documents sorted by relevance.
|
|
49
|
-
*
|
|
50
|
-
* @param query - The search query
|
|
51
|
-
* @param documents - Candidate documents to score (may be ignored by some strategies)
|
|
52
|
-
* @param options - Optional scope and filtering parameters
|
|
53
|
-
* @returns Documents sorted by descending score
|
|
54
|
-
*/
|
|
55
|
-
search(query: string, documents: KnowledgeDocumentSummary[], options?: SearchOptions): Promise<ScoredDocument[]>;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Keyword-based search strategy (default fallback, zero dependencies).
|
|
59
|
-
*
|
|
60
|
-
* Splits the query into words and scores documents by matching against
|
|
61
|
-
* title (3x weight), tags (2x weight), and preview (1x weight).
|
|
62
|
-
*/
|
|
63
|
-
export declare class KeywordSearchStrategy implements KnowledgeSearchStrategy {
|
|
64
|
-
/**
|
|
65
|
-
* Score documents using keyword matching.
|
|
66
|
-
*
|
|
67
|
-
* @param query - Search query text
|
|
68
|
-
* @param documents - Documents to score
|
|
69
|
-
* @param options - Optional search parameters (ignored)
|
|
70
|
-
* @returns Scored documents sorted by relevance
|
|
71
|
-
*/
|
|
72
|
-
search(query: string, documents: KnowledgeDocumentSummary[], options?: SearchOptions): Promise<ScoredDocument[]>;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* SQLite FTS5-based search strategy (V2 Default).
|
|
76
|
-
*
|
|
77
|
-
* Utilizes the FTS5 virtual table for lightning-fast full-text search
|
|
78
|
-
* with native BM25 ranking. Bypasses the memory-intensive candidate
|
|
79
|
-
* listing for large knowledge bases.
|
|
80
|
-
*/
|
|
81
|
-
export declare class Fts5SearchStrategy implements KnowledgeSearchStrategy {
|
|
82
|
-
private readonly logger;
|
|
83
|
-
private readonly fallback;
|
|
84
|
-
private readonly globalFts5;
|
|
85
|
-
private readonly projectFts5Cache;
|
|
86
|
-
constructor();
|
|
87
|
-
private getProjectFts5;
|
|
88
|
-
search(query: string, documents: KnowledgeDocumentSummary[], options?: SearchOptions): Promise<ScoredDocument[]>;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Gemini embedding-based semantic search strategy.
|
|
92
|
-
*
|
|
93
|
-
* @deprecated Use Fts5SearchStrategy for technical knowledge.
|
|
94
|
-
* Semantic search is now primarily for Agent Memory via MemoryService.
|
|
95
|
-
*
|
|
96
|
-
* Calls the Gemini Embedding API to embed query text, then computes
|
|
97
|
-
* cosine similarity against document embeddings. Falls back to
|
|
98
|
-
* KeywordSearchStrategy if the API call fails.
|
|
99
|
-
*/
|
|
100
|
-
export declare class GeminiEmbeddingStrategy implements KnowledgeSearchStrategy {
|
|
101
|
-
private readonly apiKey;
|
|
102
|
-
private readonly fallback;
|
|
103
|
-
private readonly logger;
|
|
104
|
-
/**
|
|
105
|
-
* Creates a GeminiEmbeddingStrategy instance.
|
|
106
|
-
*
|
|
107
|
-
* @param apiKey - Gemini API key for embedding requests
|
|
108
|
-
*/
|
|
109
|
-
constructor(apiKey: string);
|
|
110
|
-
/**
|
|
111
|
-
* Embed a single text string via the Gemini API.
|
|
112
|
-
*
|
|
113
|
-
* @param text - Text to embed
|
|
114
|
-
* @returns Embedding vector, or null on failure
|
|
115
|
-
*/
|
|
116
|
-
private embed;
|
|
117
|
-
/**
|
|
118
|
-
* Score documents using Gemini embeddings and cosine similarity.
|
|
119
|
-
* Falls back to keyword search if embedding fails.
|
|
120
|
-
*
|
|
121
|
-
* @param query - Search query text
|
|
122
|
-
* @param documents - Documents to score
|
|
123
|
-
* @param options - Optional search parameters
|
|
124
|
-
* @returns Scored documents sorted by relevance
|
|
125
|
-
*/
|
|
126
|
-
search(query: string, documents: KnowledgeDocumentSummary[], options?: SearchOptions): Promise<ScoredDocument[]>;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Local vector search strategy using SQLite-backed VectorStoreService.
|
|
130
|
-
*
|
|
131
|
-
* @deprecated Use Fts5SearchStrategy for primary knowledge retrieval.
|
|
132
|
-
*
|
|
133
|
-
* Stores embeddings locally on-device so that recall works offline.
|
|
134
|
-
* Uses the Gemini API to generate embeddings (when available) and
|
|
135
|
-
* persists them in the local vector store. Subsequent searches skip
|
|
136
|
-
* the embedding API for documents that already have stored vectors.
|
|
137
|
-
* Falls back to keyword search when no API key is configured or
|
|
138
|
-
* when embedding generation fails.
|
|
139
|
-
*/
|
|
140
|
-
export declare class LocalVectorSearchStrategy implements KnowledgeSearchStrategy {
|
|
141
|
-
private readonly vectorStore;
|
|
142
|
-
private readonly apiKey;
|
|
143
|
-
private readonly fallback;
|
|
144
|
-
private readonly logger;
|
|
145
|
-
/**
|
|
146
|
-
* Creates a LocalVectorSearchStrategy instance.
|
|
147
|
-
*
|
|
148
|
-
* @param apiKey - Optional Gemini API key for generating embeddings
|
|
149
|
-
*/
|
|
150
|
-
constructor(apiKey?: string);
|
|
151
|
-
/**
|
|
152
|
-
* Embed a single text string via the Gemini API.
|
|
153
|
-
*
|
|
154
|
-
* @param text - Text to embed
|
|
155
|
-
* @returns Embedding vector, or null on failure
|
|
156
|
-
*/
|
|
157
|
-
private embed;
|
|
158
|
-
/**
|
|
159
|
-
* Get or create an embedding for a document, persisting it locally.
|
|
160
|
-
*
|
|
161
|
-
* @param docId - Document identifier
|
|
162
|
-
* @param docText - Text to embed (used only if no stored embedding)
|
|
163
|
-
* @param scope - Storage scope
|
|
164
|
-
* @param projectPath - Project path for project scope
|
|
165
|
-
* @returns The embedding vector, or null if unavailable
|
|
166
|
-
*/
|
|
167
|
-
private getOrCreateEmbedding;
|
|
168
|
-
/**
|
|
169
|
-
* Score documents using local vector search with cosine similarity.
|
|
170
|
-
* Falls back to keyword search when embeddings are unavailable.
|
|
171
|
-
*
|
|
172
|
-
* @param query - Search query text
|
|
173
|
-
* @param documents - Documents to score
|
|
174
|
-
* @param options - Optional search parameters
|
|
175
|
-
* @returns Scored documents sorted by relevance
|
|
176
|
-
*/
|
|
177
|
-
search(query: string, documents: KnowledgeDocumentSummary[], options?: SearchOptions): Promise<ScoredDocument[]>;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* BM25-inspired keyword scoring for hybrid search (#152).
|
|
181
|
-
*
|
|
182
|
-
* Computes a simplified BM25-like score for a document against a query.
|
|
183
|
-
* Uses term frequency with diminishing returns (k1 saturation).
|
|
184
|
-
*
|
|
185
|
-
* @param query - Search query text
|
|
186
|
-
* @param docText - Document text to score
|
|
187
|
-
* @returns BM25-inspired score (higher is better)
|
|
188
|
-
*/
|
|
189
|
-
export declare function bm25Score(query: string, docText: string): number;
|
|
190
|
-
/**
|
|
191
|
-
* Hybrid search strategy: vector similarity (70%) + BM25 keywords (30%) (#152).
|
|
192
|
-
*
|
|
193
|
-
* Combines semantic vector search with BM25 keyword matching for more
|
|
194
|
-
* accurate retrieval. Proper nouns, technical terms, and IDs are caught
|
|
195
|
-
* by BM25 while conceptual matches come from vector similarity.
|
|
196
|
-
*/
|
|
197
|
-
export declare class HybridSearchStrategy implements KnowledgeSearchStrategy {
|
|
198
|
-
private readonly vectorStrategy;
|
|
199
|
-
private readonly keywordStrategy;
|
|
200
|
-
private readonly logger;
|
|
201
|
-
private readonly vectorWeight;
|
|
202
|
-
private readonly keywordWeight;
|
|
203
|
-
constructor(apiKey?: string, vectorWeight?: number, keywordWeight?: number);
|
|
204
|
-
search(query: string, documents: KnowledgeDocumentSummary[], options?: SearchOptions): Promise<ScoredDocument[]>;
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* Knowledge Search Service singleton.
|
|
208
|
-
*
|
|
209
|
-
* Strategy selection priority:
|
|
210
|
-
* 1. Fts5SearchStrategy (V2 Default — SQLite FTS5)
|
|
211
|
-
* 2. HybridSearchStrategy (when embedding API key is set — vector 70% + BM25 30%) (#152)
|
|
212
|
-
* 3. KeywordSearchStrategy (default, zero dependencies)
|
|
213
|
-
*/
|
|
214
|
-
export declare class KnowledgeSearchService {
|
|
215
|
-
private static instance;
|
|
216
|
-
private readonly strategy;
|
|
217
|
-
private readonly logger;
|
|
218
|
-
private constructor();
|
|
219
|
-
/**
|
|
220
|
-
* Get the singleton instance.
|
|
221
|
-
*
|
|
222
|
-
* @returns KnowledgeSearchService instance
|
|
223
|
-
*/
|
|
224
|
-
static getInstance(): KnowledgeSearchService;
|
|
225
|
-
/**
|
|
226
|
-
* Reset the singleton (for testing).
|
|
227
|
-
*/
|
|
228
|
-
static resetInstance(): void;
|
|
229
|
-
/**
|
|
230
|
-
* Search knowledge documents using the configured strategy.
|
|
231
|
-
*
|
|
232
|
-
* @param query - Search query text
|
|
233
|
-
* @param scope - Document scope ('global' or 'project')
|
|
234
|
-
* @param projectPath - Project path (required when scope is 'project')
|
|
235
|
-
* @param category - Optional category filter
|
|
236
|
-
* @param limit - Maximum number of results (default 5)
|
|
237
|
-
* @returns Matching document summaries sorted by relevance
|
|
238
|
-
*/
|
|
239
|
-
search(query: string, scope: KnowledgeScope, projectPath?: string, category?: string, limit?: number): Promise<KnowledgeDocumentSummary[]>;
|
|
240
|
-
}
|
|
241
|
-
//# sourceMappingURL=knowledge-search.service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-search.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/knowledge/knowledge-search.service.ts"],"names":[],"mappings":"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"}
|