@getrift/rift 0.1.0-beta.2 → 0.1.0-beta.21
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/README.md +35 -9
- package/dist/src/auth/keychain.d.ts +9 -0
- package/dist/src/auth/keychain.d.ts.map +1 -1
- package/dist/src/auth/keychain.js +37 -0
- package/dist/src/auth/keychain.js.map +1 -1
- package/dist/src/capture/auto-capture.d.ts +7 -0
- package/dist/src/capture/auto-capture.d.ts.map +1 -1
- package/dist/src/capture/auto-capture.js +82 -15
- package/dist/src/capture/auto-capture.js.map +1 -1
- package/dist/src/capture/auto-repair.d.ts +110 -0
- package/dist/src/capture/auto-repair.d.ts.map +1 -0
- package/dist/src/capture/auto-repair.js +269 -0
- package/dist/src/capture/auto-repair.js.map +1 -0
- package/dist/src/capture/codex-cli-triage-provider.d.ts.map +1 -1
- package/dist/src/capture/codex-cli-triage-provider.js +4 -3
- package/dist/src/capture/codex-cli-triage-provider.js.map +1 -1
- package/dist/src/capture/observability.d.ts +42 -0
- package/dist/src/capture/observability.d.ts.map +1 -1
- package/dist/src/capture/observability.js +45 -4
- package/dist/src/capture/observability.js.map +1 -1
- package/dist/src/capture/recover-quarantine.d.ts +260 -0
- package/dist/src/capture/recover-quarantine.d.ts.map +1 -0
- package/dist/src/capture/recover-quarantine.js +522 -0
- package/dist/src/capture/recover-quarantine.js.map +1 -0
- package/dist/src/cli/commands/backfill.d.ts.map +1 -1
- package/dist/src/cli/commands/backfill.js +5 -2
- package/dist/src/cli/commands/backfill.js.map +1 -1
- package/dist/src/cli/commands/capture-recover.d.ts +40 -0
- package/dist/src/cli/commands/capture-recover.d.ts.map +1 -0
- package/dist/src/cli/commands/capture-recover.js +184 -0
- package/dist/src/cli/commands/capture-recover.js.map +1 -0
- package/dist/src/cli/commands/capture.d.ts.map +1 -1
- package/dist/src/cli/commands/capture.js +96 -5
- package/dist/src/cli/commands/capture.js.map +1 -1
- package/dist/src/cli/commands/doctor.d.ts +6 -0
- package/dist/src/cli/commands/doctor.d.ts.map +1 -0
- package/dist/src/cli/commands/doctor.js +242 -0
- package/dist/src/cli/commands/doctor.js.map +1 -0
- package/dist/src/cli/commands/feedback.d.ts +12 -0
- package/dist/src/cli/commands/feedback.d.ts.map +1 -1
- package/dist/src/cli/commands/feedback.js +93 -4
- package/dist/src/cli/commands/feedback.js.map +1 -1
- package/dist/src/cli/commands/mcp-install.js +5 -2
- package/dist/src/cli/commands/mcp-install.js.map +1 -1
- package/dist/src/cli/commands/menubar.d.ts +80 -0
- package/dist/src/cli/commands/menubar.d.ts.map +1 -0
- package/dist/src/cli/commands/menubar.js +388 -0
- package/dist/src/cli/commands/menubar.js.map +1 -0
- package/dist/src/cli/commands/onboard.d.ts +143 -5
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +844 -188
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -1
- package/dist/src/cli/commands/rebuild.js +6 -3
- package/dist/src/cli/commands/rebuild.js.map +1 -1
- package/dist/src/cli/commands/reconcile.d.ts.map +1 -1
- package/dist/src/cli/commands/reconcile.js +12 -0
- package/dist/src/cli/commands/reconcile.js.map +1 -1
- package/dist/src/cli/commands/review.d.ts.map +1 -1
- package/dist/src/cli/commands/review.js +22 -7
- package/dist/src/cli/commands/review.js.map +1 -1
- package/dist/src/cli/commands/search.d.ts +2 -0
- package/dist/src/cli/commands/search.d.ts.map +1 -1
- package/dist/src/cli/commands/search.js +34 -4
- package/dist/src/cli/commands/search.js.map +1 -1
- package/dist/src/cli/commands/status.d.ts +9 -7
- package/dist/src/cli/commands/status.d.ts.map +1 -1
- package/dist/src/cli/commands/status.js +117 -12
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/commands/token-issue.d.ts.map +1 -1
- package/dist/src/cli/commands/token-issue.js +9 -1
- package/dist/src/cli/commands/token-issue.js.map +1 -1
- package/dist/src/cli/commands/triage.d.ts.map +1 -1
- package/dist/src/cli/commands/triage.js +7 -5
- package/dist/src/cli/commands/triage.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts +80 -0
- package/dist/src/cli/commands/update.d.ts.map +1 -0
- package/dist/src/cli/commands/update.js +390 -0
- package/dist/src/cli/commands/update.js.map +1 -0
- package/dist/src/cli/default-config-path.d.ts +15 -0
- package/dist/src/cli/default-config-path.d.ts.map +1 -0
- package/dist/src/cli/default-config-path.js +27 -0
- package/dist/src/cli/default-config-path.js.map +1 -0
- package/dist/src/cli/feedback/feedback-config.d.ts +46 -0
- package/dist/src/cli/feedback/feedback-config.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-config.js +130 -4
- package/dist/src/cli/feedback/feedback-config.js.map +1 -1
- package/dist/src/cli/feedback/feedback-history.d.ts +7 -0
- package/dist/src/cli/feedback/feedback-history.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-history.js +39 -9
- package/dist/src/cli/feedback/feedback-history.js.map +1 -1
- package/dist/src/cli/feedback/feedback-payload.d.ts +22 -1
- package/dist/src/cli/feedback/feedback-payload.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-payload.js.map +1 -1
- package/dist/src/cli/feedback/feedback-relay.d.ts +2 -2
- package/dist/src/cli/feedback/feedback-relay.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-relay.js.map +1 -1
- package/dist/src/cli/feedback/invite.d.ts +17 -0
- package/dist/src/cli/feedback/invite.d.ts.map +1 -0
- package/dist/src/cli/feedback/invite.js +67 -0
- package/dist/src/cli/feedback/invite.js.map +1 -0
- package/dist/src/cli/feedback/relay-secret-store.d.ts +32 -0
- package/dist/src/cli/feedback/relay-secret-store.d.ts.map +1 -0
- package/dist/src/cli/feedback/relay-secret-store.js +137 -0
- package/dist/src/cli/feedback/relay-secret-store.js.map +1 -0
- package/dist/src/cli/http-client.d.ts +93 -1
- package/dist/src/cli/http-client.d.ts.map +1 -1
- package/dist/src/cli/http-client.js +254 -6
- package/dist/src/cli/http-client.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +29 -6
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/postinstall-menubar.d.ts +22 -0
- package/dist/src/cli/postinstall-menubar.d.ts.map +1 -0
- package/dist/src/cli/postinstall-menubar.js +53 -0
- package/dist/src/cli/postinstall-menubar.js.map +1 -0
- package/dist/src/cli/status/friend-header.d.ts +16 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +354 -26
- package/dist/src/cli/status/friend-header.js.map +1 -1
- package/dist/src/cli/status/local-signals.d.ts +18 -0
- package/dist/src/cli/status/local-signals.d.ts.map +1 -1
- package/dist/src/cli/status/local-signals.js +29 -0
- package/dist/src/cli/status/local-signals.js.map +1 -1
- package/dist/src/cli/ui.d.ts +47 -0
- package/dist/src/cli/ui.d.ts.map +1 -0
- package/dist/src/cli/ui.js +166 -0
- package/dist/src/cli/ui.js.map +1 -0
- package/dist/src/config/schema.d.ts +79 -0
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +44 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/diagnostics/codex-preflight.d.ts +33 -0
- package/dist/src/diagnostics/codex-preflight.d.ts.map +1 -0
- package/dist/src/diagnostics/codex-preflight.js +75 -0
- package/dist/src/diagnostics/codex-preflight.js.map +1 -0
- package/dist/src/diagnostics/doctor.d.ts +114 -0
- package/dist/src/diagnostics/doctor.d.ts.map +1 -0
- package/dist/src/diagnostics/doctor.js +352 -0
- package/dist/src/diagnostics/doctor.js.map +1 -0
- package/dist/src/diagnostics/notify.d.ts +90 -0
- package/dist/src/diagnostics/notify.d.ts.map +1 -0
- package/dist/src/diagnostics/notify.js +177 -0
- package/dist/src/diagnostics/notify.js.map +1 -0
- package/dist/src/diagnostics/repair-prompt.d.ts +49 -0
- package/dist/src/diagnostics/repair-prompt.d.ts.map +1 -0
- package/dist/src/diagnostics/repair-prompt.js +223 -0
- package/dist/src/diagnostics/repair-prompt.js.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.js +27 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.js.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js +31 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts +3 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.js +16 -0
- package/dist/src/ingestion/inbox-core/extensions.js.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.js +22 -0
- package/dist/src/ingestion/inbox-core/idempotency.js.map +1 -0
- package/dist/src/ingestion/inbox-core/index.d.ts +20 -0
- package/dist/src/ingestion/inbox-core/index.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/index.js +20 -0
- package/dist/src/ingestion/inbox-core/index.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.js +23 -0
- package/dist/src/ingestion/inbox-core/source-detection.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts +11 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js +69 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts +70 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js +161 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -1
- package/dist/src/ingestion/inbox-watcher.js +34 -50
- package/dist/src/ingestion/inbox-watcher.js.map +1 -1
- package/dist/src/ingestion/indexer.d.ts +7 -0
- package/dist/src/ingestion/indexer.d.ts.map +1 -1
- package/dist/src/ingestion/indexer.js +36 -2
- package/dist/src/ingestion/indexer.js.map +1 -1
- package/dist/src/ingestion/metadata-extraction.d.ts +8 -5
- package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -1
- package/dist/src/ingestion/metadata-extraction.js +24 -5
- package/dist/src/ingestion/metadata-extraction.js.map +1 -1
- package/dist/src/ingestion/skip-quarantine.d.ts +10 -0
- package/dist/src/ingestion/skip-quarantine.d.ts.map +1 -0
- package/dist/src/ingestion/skip-quarantine.js +35 -0
- package/dist/src/ingestion/skip-quarantine.js.map +1 -0
- package/dist/src/jobs/handlers/compact.d.ts.map +1 -1
- package/dist/src/jobs/handlers/compact.js +30 -4
- package/dist/src/jobs/handlers/compact.js.map +1 -1
- package/dist/src/jobs/handlers/dedupe-conversations.d.ts +134 -0
- package/dist/src/jobs/handlers/dedupe-conversations.d.ts.map +1 -0
- package/dist/src/jobs/handlers/dedupe-conversations.js +371 -0
- package/dist/src/jobs/handlers/dedupe-conversations.js.map +1 -0
- package/dist/src/jobs/handlers/ingest.d.ts.map +1 -1
- package/dist/src/jobs/handlers/ingest.js +295 -41
- package/dist/src/jobs/handlers/ingest.js.map +1 -1
- package/dist/src/jobs/handlers/reconcile.d.ts +28 -0
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reconcile.js +145 -19
- package/dist/src/jobs/handlers/reconcile.js.map +1 -1
- package/dist/src/jobs/handlers/reindex.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reindex.js +13 -2
- package/dist/src/jobs/handlers/reindex.js.map +1 -1
- package/dist/src/jobs/handlers/save.d.ts.map +1 -1
- package/dist/src/jobs/handlers/save.js +57 -3
- package/dist/src/jobs/handlers/save.js.map +1 -1
- package/dist/src/jobs/queue.d.ts +51 -1
- package/dist/src/jobs/queue.d.ts.map +1 -1
- package/dist/src/jobs/queue.js +466 -26
- package/dist/src/jobs/queue.js.map +1 -1
- package/dist/src/jobs/worker-entry.d.ts.map +1 -1
- package/dist/src/jobs/worker-entry.js +35 -7
- package/dist/src/jobs/worker-entry.js.map +1 -1
- package/dist/src/jobs/worker-process.d.ts +11 -0
- package/dist/src/jobs/worker-process.d.ts.map +1 -1
- package/dist/src/jobs/worker-process.js +37 -4
- package/dist/src/jobs/worker-process.js.map +1 -1
- package/dist/src/main.js +199 -46
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp/errors.d.ts.map +1 -1
- package/dist/src/mcp/errors.js +20 -1
- package/dist/src/mcp/errors.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +43 -3
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/context-pack.d.ts.map +1 -1
- package/dist/src/mcp/tools/context-pack.js +164 -23
- package/dist/src/mcp/tools/context-pack.js.map +1 -1
- package/dist/src/mcp/tools/search.d.ts +6 -2
- package/dist/src/mcp/tools/search.d.ts.map +1 -1
- package/dist/src/mcp/tools/search.js +35 -4
- package/dist/src/mcp/tools/search.js.map +1 -1
- package/dist/src/observability/embedding-events.d.ts +52 -0
- package/dist/src/observability/embedding-events.d.ts.map +1 -0
- package/dist/src/observability/embedding-events.js +149 -0
- package/dist/src/observability/embedding-events.js.map +1 -0
- package/dist/src/observability/index-events.d.ts +70 -0
- package/dist/src/observability/index-events.d.ts.map +1 -0
- package/dist/src/observability/index-events.js +148 -0
- package/dist/src/observability/index-events.js.map +1 -0
- package/dist/src/observability/onboarding-metric.d.ts +131 -0
- package/dist/src/observability/onboarding-metric.d.ts.map +1 -0
- package/dist/src/observability/onboarding-metric.js +351 -0
- package/dist/src/observability/onboarding-metric.js.map +1 -0
- package/dist/src/observability/tool-usage-stats.d.ts +77 -4
- package/dist/src/observability/tool-usage-stats.d.ts.map +1 -1
- package/dist/src/observability/tool-usage-stats.js +112 -32
- package/dist/src/observability/tool-usage-stats.js.map +1 -1
- package/dist/src/observability/tool-usage.d.ts +100 -7
- package/dist/src/observability/tool-usage.d.ts.map +1 -1
- package/dist/src/observability/tool-usage.js +196 -33
- package/dist/src/observability/tool-usage.js.map +1 -1
- package/dist/src/observability/version-check.d.ts +71 -0
- package/dist/src/observability/version-check.d.ts.map +1 -0
- package/dist/src/observability/version-check.js +198 -0
- package/dist/src/observability/version-check.js.map +1 -0
- package/dist/src/providers/basic-metadata-extraction.d.ts +60 -0
- package/dist/src/providers/basic-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/basic-metadata-extraction.js +114 -0
- package/dist/src/providers/basic-metadata-extraction.js.map +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-metadata-extraction.js +6 -2
- package/dist/src/providers/codex-cli-metadata-extraction.js.map +1 -1
- package/dist/src/providers/codex-cli-model.d.ts +61 -0
- package/dist/src/providers/codex-cli-model.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-model.js +194 -0
- package/dist/src/providers/codex-cli-model.js.map +1 -0
- package/dist/src/providers/codex-cli-runner.d.ts +39 -0
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-runner.js +234 -48
- package/dist/src/providers/codex-cli-runner.js.map +1 -1
- package/dist/src/providers/conversation-generation.d.ts.map +1 -1
- package/dist/src/providers/conversation-generation.js +43 -6
- package/dist/src/providers/conversation-generation.js.map +1 -1
- package/dist/src/providers/ollama-embed.d.ts +2 -1
- package/dist/src/providers/ollama-embed.d.ts.map +1 -1
- package/dist/src/providers/ollama-embed.js +1 -0
- package/dist/src/providers/ollama-embed.js.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.d.ts +3 -3
- package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.js +18 -3
- package/dist/src/providers/openai-metadata-extraction.js.map +1 -1
- package/dist/src/providers/placeholder-embed.d.ts +56 -0
- package/dist/src/providers/placeholder-embed.d.ts.map +1 -0
- package/dist/src/providers/placeholder-embed.js +64 -0
- package/dist/src/providers/placeholder-embed.js.map +1 -0
- package/dist/src/providers/stub.d.ts +2 -0
- package/dist/src/providers/stub.d.ts.map +1 -1
- package/dist/src/providers/stub.js +2 -0
- package/dist/src/providers/stub.js.map +1 -1
- package/dist/src/providers/types.d.ts +11 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/providers/voyage.d.ts +2 -1
- package/dist/src/providers/voyage.d.ts.map +1 -1
- package/dist/src/providers/voyage.js +1 -0
- package/dist/src/providers/voyage.js.map +1 -1
- package/dist/src/retrieval/compact.d.ts +116 -2
- package/dist/src/retrieval/compact.d.ts.map +1 -1
- package/dist/src/retrieval/compact.js +158 -5
- package/dist/src/retrieval/compact.js.map +1 -1
- package/dist/src/retrieval/context-pack.d.ts +114 -0
- package/dist/src/retrieval/context-pack.d.ts.map +1 -1
- package/dist/src/retrieval/context-pack.js +292 -8
- package/dist/src/retrieval/context-pack.js.map +1 -1
- package/dist/src/retrieval/current-truth.d.ts +360 -0
- package/dist/src/retrieval/current-truth.d.ts.map +1 -0
- package/dist/src/retrieval/current-truth.js +766 -0
- package/dist/src/retrieval/current-truth.js.map +1 -0
- package/dist/src/retrieval/git-state.d.ts +53 -0
- package/dist/src/retrieval/git-state.d.ts.map +1 -0
- package/dist/src/retrieval/git-state.js +174 -0
- package/dist/src/retrieval/git-state.js.map +1 -0
- package/dist/src/retrieval/lexical.d.ts.map +1 -1
- package/dist/src/retrieval/lexical.js +19 -3
- package/dist/src/retrieval/lexical.js.map +1 -1
- package/dist/src/retrieval/locator-boost.d.ts +37 -0
- package/dist/src/retrieval/locator-boost.d.ts.map +1 -0
- package/dist/src/retrieval/locator-boost.js +129 -0
- package/dist/src/retrieval/locator-boost.js.map +1 -0
- package/dist/src/retrieval/report-demotion.d.ts +46 -0
- package/dist/src/retrieval/report-demotion.d.ts.map +1 -0
- package/dist/src/retrieval/report-demotion.js +169 -0
- package/dist/src/retrieval/report-demotion.js.map +1 -0
- package/dist/src/retrieval/vector.d.ts.map +1 -1
- package/dist/src/retrieval/vector.js +11 -2
- package/dist/src/retrieval/vector.js.map +1 -1
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +92 -11
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/routes/compact.d.ts.map +1 -1
- package/dist/src/server/routes/compact.js +4 -1
- package/dist/src/server/routes/compact.js.map +1 -1
- package/dist/src/server/routes/context.d.ts +1 -1
- package/dist/src/server/routes/context.d.ts.map +1 -1
- package/dist/src/server/routes/context.js +2 -1
- package/dist/src/server/routes/context.js.map +1 -1
- package/dist/src/server/routes/conversations-search.d.ts.map +1 -1
- package/dist/src/server/routes/conversations-search.js +28 -3
- package/dist/src/server/routes/conversations-search.js.map +1 -1
- package/dist/src/server/routes/enqueue.d.ts +11 -0
- package/dist/src/server/routes/enqueue.d.ts.map +1 -0
- package/dist/src/server/routes/enqueue.js +17 -0
- package/dist/src/server/routes/enqueue.js.map +1 -0
- package/dist/src/server/routes/friend-status.d.ts +339 -3
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +447 -13
- package/dist/src/server/routes/friend-status.js.map +1 -1
- package/dist/src/server/routes/ingest.d.ts.map +1 -1
- package/dist/src/server/routes/ingest.js +5 -2
- package/dist/src/server/routes/ingest.js.map +1 -1
- package/dist/src/server/routes/mcp-usage.d.ts +5 -4
- package/dist/src/server/routes/mcp-usage.d.ts.map +1 -1
- package/dist/src/server/routes/mcp-usage.js.map +1 -1
- package/dist/src/server/routes/reconcile.d.ts.map +1 -1
- package/dist/src/server/routes/reconcile.js +20 -1
- package/dist/src/server/routes/reconcile.js.map +1 -1
- package/dist/src/server/routes/reindex.d.ts.map +1 -1
- package/dist/src/server/routes/reindex.js +4 -1
- package/dist/src/server/routes/reindex.js.map +1 -1
- package/dist/src/server/routes/save.d.ts.map +1 -1
- package/dist/src/server/routes/save.js +4 -1
- package/dist/src/server/routes/save.js.map +1 -1
- package/dist/src/server/routes/search.d.ts +1 -1
- package/dist/src/server/routes/search.d.ts.map +1 -1
- package/dist/src/server/routes/search.js +253 -29
- package/dist/src/server/routes/search.js.map +1 -1
- package/dist/src/server/routes/triage.d.ts.map +1 -1
- package/dist/src/server/routes/triage.js +4 -1
- package/dist/src/server/routes/triage.js.map +1 -1
- package/dist/src/storage/rebuild.d.ts +35 -1
- package/dist/src/storage/rebuild.d.ts.map +1 -1
- package/dist/src/storage/rebuild.js +288 -64
- package/dist/src/storage/rebuild.js.map +1 -1
- package/dist/src/storage/tables.d.ts +29 -0
- package/dist/src/storage/tables.d.ts.map +1 -1
- package/dist/src/storage/tables.js +32 -1
- package/dist/src/storage/tables.js.map +1 -1
- package/operator/swiftbar/render-menu.py +524 -0
- package/operator/swiftbar/rift.10s.sh +176 -0
- package/package.json +9 -3
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report-as-memory demotion for flat `rift_search` (POST /search).
|
|
3
|
+
*
|
|
4
|
+
* The docs-vs-discussions retrieval eval showed generated reports/snapshots
|
|
5
|
+
* dominating default (`scope:"all"`) results — 42–62% of the top-10 on
|
|
6
|
+
* discussion-intent queries — burying conversations and trackers as if a
|
|
7
|
+
* frozen synthesis were current memory. This pushes report/snapshot docs
|
|
8
|
+
* BEHIND all non-report evidence in the default mixed surface.
|
|
9
|
+
*
|
|
10
|
+
* Deliberately narrow (the proven slice, not the whole experiment):
|
|
11
|
+
* - It is a STABLE REORDER. Scores are never changed — "all docs score
|
|
12
|
+
* worse" is explicitly NOT what this does. A report keeps its score and
|
|
13
|
+
* its relative order among other reports; it just sorts after non-report
|
|
14
|
+
* evidence of any score.
|
|
15
|
+
* - It reuses the EXISTING trust classifier ({@link isSnapshotPath}) — no
|
|
16
|
+
* second trust system. Generated-report detection is anchored there to
|
|
17
|
+
* Rift's own reports root (`selfReportsRoot`), so a client's `reports/`
|
|
18
|
+
* folder is never demoted by path shape alone.
|
|
19
|
+
* - It applies to `scope:"all"` ONLY — the mixed-memory default where
|
|
20
|
+
* reports compete with conversations, which is the only surface the eval
|
|
21
|
+
* validated. Every explicit doc-like scope (`documents`, `clients`,
|
|
22
|
+
* `projects`) is a no-op: those are deliberate document searches where a
|
|
23
|
+
* report (incl. a client's own `reports/` folder) may be exactly what the
|
|
24
|
+
* asker wants, and we have no eval signal that demoting there is correct.
|
|
25
|
+
* - No named-report exception and no discussion/doc tiebreak: those were
|
|
26
|
+
* unproven (or, for the tiebreak, actively wrong for locator queries) in
|
|
27
|
+
* the eval and are intentionally left out.
|
|
28
|
+
*
|
|
29
|
+
* PR2 add-on: {@link demoteReports} takes an optional `isExempt(id)` hook that
|
|
30
|
+
* exempts a single field-matched report TARGET from demotion when a locator
|
|
31
|
+
* query explicitly asked to find it. The hook is supplied only by the flag-
|
|
32
|
+
* gated locator path in the route ({@link ../server/routes/search.ts}); omitted
|
|
33
|
+
* (the default), demotion behaves exactly as the proven slice above.
|
|
34
|
+
*/
|
|
35
|
+
import { isSnapshotPath } from "./current-truth.js";
|
|
36
|
+
import { getTable } from "../storage/tables.js";
|
|
37
|
+
const DOC_TABLES = ["structured_docs", "structured_docs_local"];
|
|
38
|
+
function isDocTable(t) {
|
|
39
|
+
return DOC_TABLES.includes(t);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Whether a source table can ever hold a report (i.e. is a document table).
|
|
43
|
+
* Lets the route skip the source_path fetch entirely for conversation-only
|
|
44
|
+
* result sets.
|
|
45
|
+
*/
|
|
46
|
+
export function isReportCandidateTable(t) {
|
|
47
|
+
return isDocTable(t);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* A ranked hit is a report iff it's a document (conversations/digests never
|
|
51
|
+
* are) whose source_path matches the shared snapshot/report classifier. The
|
|
52
|
+
* classifier only treats a `reports/` doc as generated when it sits under
|
|
53
|
+
* Rift's own reports root (`selfReportsRoot`); see {@link isSnapshotPath}.
|
|
54
|
+
*/
|
|
55
|
+
export function isReportHit(sourceTable, sourcePath, selfReportsRoot) {
|
|
56
|
+
return isDocTable(sourceTable) && isSnapshotPath(sourcePath, selfReportsRoot);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Fetch `source_path` for the document-table rows in `ranked`. Conversations
|
|
60
|
+
* and digests are skipped — they can never be reports, so we don't pay for a
|
|
61
|
+
* lookup. Returns a map keyed by row id; ids with no row (or no path) are
|
|
62
|
+
* simply absent and treated as non-reports by the caller.
|
|
63
|
+
*/
|
|
64
|
+
export async function fetchDocSourcePaths(ranked) {
|
|
65
|
+
const byTable = new Map();
|
|
66
|
+
for (const r of ranked) {
|
|
67
|
+
if (!isDocTable(r.source_table))
|
|
68
|
+
continue;
|
|
69
|
+
const arr = byTable.get(r.source_table) ?? [];
|
|
70
|
+
arr.push(r.id);
|
|
71
|
+
byTable.set(r.source_table, arr);
|
|
72
|
+
}
|
|
73
|
+
const out = new Map();
|
|
74
|
+
for (const [table, ids] of byTable) {
|
|
75
|
+
if (ids.length === 0)
|
|
76
|
+
continue;
|
|
77
|
+
const quoted = ids.map((i) => `'${i.replace(/'/g, "''")}'`).join(",");
|
|
78
|
+
const rows = (await getTable(table)
|
|
79
|
+
.query()
|
|
80
|
+
.where(`id IN (${quoted})`)
|
|
81
|
+
.select(["id", "source_path"])
|
|
82
|
+
.limit(ids.length)
|
|
83
|
+
.toArray());
|
|
84
|
+
for (const row of rows) {
|
|
85
|
+
if (typeof row.id === "string" && typeof row.source_path === "string") {
|
|
86
|
+
out.set(row.id, row.source_path);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Like {@link fetchDocSourcePaths} but also pulls `metadata.title`. Used by the
|
|
94
|
+
* locator boost, which scores query overlap against path/slug/filename/title.
|
|
95
|
+
* Conversations and digests are skipped — a locator wants a file, not a
|
|
96
|
+
* conversation. Keep this projection narrow: the boost must never fetch or
|
|
97
|
+
* inspect document bodies.
|
|
98
|
+
*/
|
|
99
|
+
export async function fetchDocFields(ranked) {
|
|
100
|
+
const byTable = new Map();
|
|
101
|
+
for (const r of ranked) {
|
|
102
|
+
if (!isDocTable(r.source_table))
|
|
103
|
+
continue;
|
|
104
|
+
const arr = byTable.get(r.source_table) ?? [];
|
|
105
|
+
arr.push(r.id);
|
|
106
|
+
byTable.set(r.source_table, arr);
|
|
107
|
+
}
|
|
108
|
+
const out = new Map();
|
|
109
|
+
for (const [table, ids] of byTable) {
|
|
110
|
+
if (ids.length === 0)
|
|
111
|
+
continue;
|
|
112
|
+
const quoted = ids.map((i) => `'${i.replace(/'/g, "''")}'`).join(",");
|
|
113
|
+
const rows = (await getTable(table)
|
|
114
|
+
.query()
|
|
115
|
+
.where(`id IN (${quoted})`)
|
|
116
|
+
.select(["id", "source_path", "metadata"])
|
|
117
|
+
.limit(ids.length)
|
|
118
|
+
.toArray());
|
|
119
|
+
for (const row of rows) {
|
|
120
|
+
if (typeof row["id"] !== "string")
|
|
121
|
+
continue;
|
|
122
|
+
const entry = {};
|
|
123
|
+
if (typeof row["source_path"] === "string")
|
|
124
|
+
entry.source_path = row["source_path"];
|
|
125
|
+
let title;
|
|
126
|
+
const meta = row["metadata"];
|
|
127
|
+
if (typeof meta === "string") {
|
|
128
|
+
try {
|
|
129
|
+
title = JSON.parse(meta).title;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
/* ignore malformed metadata */
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (title !== undefined)
|
|
136
|
+
entry.title = title;
|
|
137
|
+
out.set(row["id"], entry);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return out;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Stable-reorder `ranked` so report/snapshot docs sort after all non-report
|
|
144
|
+
* hits, preserving relative order within each group. Applies to `scope:"all"`
|
|
145
|
+
* only; every other scope is a no-op. Scores are carried through unchanged.
|
|
146
|
+
*
|
|
147
|
+
* `isExempt` (optional) is the locator demotion-exception hook: a report for
|
|
148
|
+
* which `isExempt(id)` returns true is treated as kept (NOT demoted), because
|
|
149
|
+
* the query explicitly asked to locate that report. Omitting it preserves the
|
|
150
|
+
* exact prior behaviour — every report is demoted.
|
|
151
|
+
*/
|
|
152
|
+
export function demoteReports(ranked, sourcePathById, scope, selfReportsRoot, isExempt) {
|
|
153
|
+
if (scope !== "all")
|
|
154
|
+
return [...ranked];
|
|
155
|
+
const kept = [];
|
|
156
|
+
const demoted = [];
|
|
157
|
+
for (const r of ranked) {
|
|
158
|
+
if (isReportHit(r.source_table, sourcePathById.get(r.id), selfReportsRoot) &&
|
|
159
|
+
!isExempt?.(r.id))
|
|
160
|
+
demoted.push(r);
|
|
161
|
+
else
|
|
162
|
+
kept.push(r);
|
|
163
|
+
}
|
|
164
|
+
// Fast path: nothing to move — return the original reference's contents.
|
|
165
|
+
if (demoted.length === 0)
|
|
166
|
+
return [...ranked];
|
|
167
|
+
return [...kept, ...demoted];
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=report-demotion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-demotion.js","sourceRoot":"","sources":["../../../src/retrieval/report-demotion.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/retrieval/vector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"vector.d.ts","sourceRoot":"","sources":["../../../src/retrieval/vector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOtD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,WAAW,CAAC;AAEzF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IAClD,YAAY,EAAE,SAAS,CAAC;IACxB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AA4FD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,cAAc,CAAC,CAezB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { getTable } from "../storage/tables.js";
|
|
2
2
|
import { escapeLike } from "./cwd.js";
|
|
3
|
+
import { isRiftBasicMetadata } from "../providers/basic-metadata-extraction.js";
|
|
4
|
+
import { RIFT_NONE_VECTOR_EXCLUSION_CLAUSE } from "../providers/placeholder-embed.js";
|
|
3
5
|
/**
|
|
4
6
|
* Determine which tables and filters to apply for a given scope/client/since.
|
|
5
7
|
*/
|
|
@@ -39,7 +41,10 @@ function buildTableQueries(options) {
|
|
|
39
41
|
});
|
|
40
42
|
}
|
|
41
43
|
if (needsConversations) {
|
|
42
|
-
|
|
44
|
+
// Exclude no-key placeholder (`rift-none`) rows from vector search — see
|
|
45
|
+
// RIFT_NONE_VECTOR_EXCLUSION_CLAUSE. conversations_hot carries the column;
|
|
46
|
+
// digests (below) do not, so they get no such clause.
|
|
47
|
+
const hotClauses = [RIFT_NONE_VECTOR_EXCLUSION_CLAUSE];
|
|
43
48
|
if (options.since) {
|
|
44
49
|
hotClauses.push(`indexed_at >= '${escapeSql(options.since)}'`);
|
|
45
50
|
}
|
|
@@ -99,9 +104,13 @@ async function searchOneTable(tq, queryVec, limit) {
|
|
|
99
104
|
const ts = row.indexed_at || row.created_at;
|
|
100
105
|
if (ts)
|
|
101
106
|
result.indexed_at = ts;
|
|
107
|
+
// Skip the placeholder `quality` on no-AI basic rows so the reranker treats
|
|
108
|
+
// them as quality-neutral rather than ranking on a fake label. See the
|
|
109
|
+
// matching guard in lexical.ts.
|
|
102
110
|
const q = row.quality;
|
|
103
|
-
if (q)
|
|
111
|
+
if (q && !isRiftBasicMetadata(row.metadata_provider)) {
|
|
104
112
|
result.quality = q;
|
|
113
|
+
}
|
|
105
114
|
return result;
|
|
106
115
|
});
|
|
107
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../../src/retrieval/vector.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"vector.js","sourceRoot":"","sources":["../../../src/retrieval/vector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAwB/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKvD,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,YAAY,EAC3B,QAAQ,CAAC,EAAE,QAAQ,EACnB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,QAAQ,CAAC,EAAE,OAAO,EAAE,EACpB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,EACxB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,sBAAsB,CAAC,EAAE,iBAAiB,GACzC,OAAO,CAAC,GAAG,CAAC,CA2Ud"}
|
package/dist/src/server/app.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import path from "node:path";
|
|
1
2
|
import Fastify from "fastify";
|
|
2
3
|
import { registerAuth } from "../auth/middleware.js";
|
|
3
4
|
import { RateLimiter } from "../auth/rate-limit.js";
|
|
5
|
+
import { PlaceholderEmbeddingProvider } from "../providers/placeholder-embed.js";
|
|
4
6
|
import { registerJobRoutes } from "./routes/jobs.js";
|
|
5
7
|
import { registerSearchRoute } from "./routes/search.js";
|
|
6
8
|
import { registerConversationSearchRoute } from "./routes/conversations-search.js";
|
|
@@ -76,6 +78,30 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
76
78
|
}
|
|
77
79
|
return { status: "ready" };
|
|
78
80
|
});
|
|
81
|
+
// --- Friendly fallback for provider-unavailable routes ---
|
|
82
|
+
// When a route's required deps (queue / embedding provider / digest
|
|
83
|
+
// summarizer) are missing, register a stub at the same path that
|
|
84
|
+
// returns 503 with a structured `provider_unavailable` payload, so
|
|
85
|
+
// operators see a precise reason instead of Fastify's generic 404.
|
|
86
|
+
//
|
|
87
|
+
// The recovery hint is derived from `missing` per-dep, not from the
|
|
88
|
+
// route — saying "set ANTHROPIC_API_KEY" on /compact would be wrong
|
|
89
|
+
// (the live digest summarizer is Codex CLI by default, or Ollama
|
|
90
|
+
// when `local_generation.enabled = true`), and saying "set
|
|
91
|
+
// VOYAGE_API_KEY" when the queue itself is down is misdirection.
|
|
92
|
+
const MISSING_DEP_HINTS = {
|
|
93
|
+
job_queue: "daemon job queue is not initialized; restart the daemon",
|
|
94
|
+
embedding_provider: "set VOYAGE_API_KEY and re-run `rift onboard`",
|
|
95
|
+
digest_summarizer: "authenticate Codex CLI (`codex login`) or set `local_generation.enabled: true` for Ollama",
|
|
96
|
+
};
|
|
97
|
+
const registerUnavailable = (path, missing) => {
|
|
98
|
+
const hint = missing.map((m) => MISSING_DEP_HINTS[m]).join("; ");
|
|
99
|
+
server.post(path, async (_request, reply) => reply.code(503).send({
|
|
100
|
+
error: "provider_unavailable",
|
|
101
|
+
missing: [...missing],
|
|
102
|
+
message: `POST ${path} unavailable: ${missing.join(", ")} not configured (${hint})`,
|
|
103
|
+
}));
|
|
104
|
+
};
|
|
79
105
|
// --- Capability tracking for observability ---
|
|
80
106
|
const supportedSources = new Set();
|
|
81
107
|
if (jobQueue) {
|
|
@@ -85,14 +111,22 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
85
111
|
if (jobQueue) {
|
|
86
112
|
registerJobRoutes(server, jobQueue);
|
|
87
113
|
}
|
|
88
|
-
// --- Save route (authenticated, requires queue
|
|
114
|
+
// --- Save route (authenticated, requires queue; embedding optional) ---
|
|
89
115
|
// In production, main.ts pre-registers worker-wrapped handlers.
|
|
90
116
|
// Fallback in-process handlers are registered here for tests.
|
|
91
|
-
|
|
117
|
+
//
|
|
118
|
+
// A no-key install saves with the placeholder (`rift-none`) embedding so a
|
|
119
|
+
// manual `/save` (CLI/MCP `rift_save`) still lands a row that lexical search
|
|
120
|
+
// surfaces immediately. The row is excluded from vector/semantic search
|
|
121
|
+
// until a real embedding backfills it (reconcile/reindex relabels it). This
|
|
122
|
+
// mirrors the ingest path below — import and save must both work without
|
|
123
|
+
// Voyage. (Scheduled auto-capture is a separate, opt-in lane that still
|
|
124
|
+
// requires a key; see the `captureEnabled` gate in onboard.)
|
|
125
|
+
if (jobQueue) {
|
|
92
126
|
registerSaveRoute(server, jobQueue);
|
|
93
127
|
if (!jobQueue.hasHandler("save")) {
|
|
94
128
|
jobQueue.registerHandler("save", createSaveHandler({
|
|
95
|
-
embeddingProvider,
|
|
129
|
+
embeddingProvider: embeddingProvider ?? new PlaceholderEmbeddingProvider(),
|
|
96
130
|
dataDir: config.data_paths.data_dir,
|
|
97
131
|
queue: jobQueue,
|
|
98
132
|
}));
|
|
@@ -101,6 +135,9 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
101
135
|
supportedSources.add("gemini_cli");
|
|
102
136
|
supportedSources.add("codex_cli");
|
|
103
137
|
}
|
|
138
|
+
else {
|
|
139
|
+
registerUnavailable("/save", ["job_queue"]);
|
|
140
|
+
}
|
|
104
141
|
// --- Reconcile route (authenticated, requires queue + embedding + config) ---
|
|
105
142
|
if (jobQueue && embeddingProvider) {
|
|
106
143
|
registerReconcileRoute(server, jobQueue);
|
|
@@ -115,6 +152,13 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
115
152
|
}));
|
|
116
153
|
}
|
|
117
154
|
}
|
|
155
|
+
else {
|
|
156
|
+
const missing = [
|
|
157
|
+
...(jobQueue ? [] : ["job_queue"]),
|
|
158
|
+
...(embeddingProvider ? [] : ["embedding_provider"]),
|
|
159
|
+
];
|
|
160
|
+
registerUnavailable("/reconcile", missing);
|
|
161
|
+
}
|
|
118
162
|
// --- Compact route (authenticated, requires queue + embedding + digest summarizer) ---
|
|
119
163
|
if (jobQueue && embeddingProvider && digestSummarizer) {
|
|
120
164
|
registerCompactRoute(server, jobQueue, config.data_paths.data_dir);
|
|
@@ -129,6 +173,14 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
129
173
|
}));
|
|
130
174
|
}
|
|
131
175
|
}
|
|
176
|
+
else {
|
|
177
|
+
const missing = [
|
|
178
|
+
...(jobQueue ? [] : ["job_queue"]),
|
|
179
|
+
...(embeddingProvider ? [] : ["embedding_provider"]),
|
|
180
|
+
...(digestSummarizer ? [] : ["digest_summarizer"]),
|
|
181
|
+
];
|
|
182
|
+
registerUnavailable("/compact", missing);
|
|
183
|
+
}
|
|
132
184
|
// --- Reindex route (authenticated, requires queue + embedding + config) ---
|
|
133
185
|
if (jobQueue && embeddingProvider) {
|
|
134
186
|
registerReindexRoute(server, jobQueue);
|
|
@@ -143,13 +195,24 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
143
195
|
}));
|
|
144
196
|
}
|
|
145
197
|
}
|
|
198
|
+
else {
|
|
199
|
+
const missing = [
|
|
200
|
+
...(jobQueue ? [] : ["job_queue"]),
|
|
201
|
+
...(embeddingProvider ? [] : ["embedding_provider"]),
|
|
202
|
+
];
|
|
203
|
+
registerUnavailable("/reindex", missing);
|
|
204
|
+
}
|
|
146
205
|
// --- Ingest route (authenticated, requires queue for job creation) ---
|
|
206
|
+
// Import only needs a metadata extractor — the embedding may be the no-key
|
|
207
|
+
// placeholder (`rift-none` zero vectors), so a friend can import and search
|
|
208
|
+
// before connecting any embedding provider. main.ts always supplies a
|
|
209
|
+
// metadataExtractor (BasicMetadataExtractor when no AI worker is installed).
|
|
147
210
|
if (jobQueue) {
|
|
148
211
|
await registerMultipart(server, config);
|
|
149
|
-
registerIngestRoute(server, jobQueue, config.request_limits.multipart_limit_bytes, !!
|
|
150
|
-
if (
|
|
212
|
+
registerIngestRoute(server, jobQueue, config.request_limits.multipart_limit_bytes, !!metadataExtractor, config.data_paths.data_dir);
|
|
213
|
+
if (metadataExtractor && !jobQueue.hasHandler("ingest")) {
|
|
151
214
|
jobQueue.registerHandler("ingest", createIngestHandler({
|
|
152
|
-
embeddingProvider,
|
|
215
|
+
embeddingProvider: embeddingProvider ?? new PlaceholderEmbeddingProvider(),
|
|
153
216
|
metadataExtractor,
|
|
154
217
|
dataDir: config.data_paths.data_dir,
|
|
155
218
|
queue: jobQueue,
|
|
@@ -171,14 +234,28 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
171
234
|
}
|
|
172
235
|
}
|
|
173
236
|
// --- Search routes (authenticated) ---
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
237
|
+
// Rift's own generated-reports tree, anchored relative to the data dir the
|
|
238
|
+
// same way the reconcile handler writes reports (`<dataDir>/../reports`).
|
|
239
|
+
// Passed into report/snapshot classification so only Rift-authored reports
|
|
240
|
+
// are demoted/discounted — a client's `reports/` folder is left intact.
|
|
241
|
+
const selfReportsRoot = path.resolve(config.data_paths.data_dir, "..", "reports");
|
|
242
|
+
// /search is ALWAYS available. With an embedding provider it runs hybrid
|
|
243
|
+
// (vector + lexical) + rerank; with none it runs an INTENTIONAL lexical-only
|
|
244
|
+
// mode (mode:"lexical", degraded:false) so a no-key install can search its
|
|
245
|
+
// imported archive immediately. This is a first-class mode, not the degraded
|
|
246
|
+
// fallback that a mid-search vector failure produces.
|
|
247
|
+
registerSearchRoute(server, embeddingProvider, localEmbeddingProvider, config.sources, selfReportsRoot);
|
|
177
248
|
if (embeddingProvider) {
|
|
178
249
|
registerConversationSearchRoute(server, embeddingProvider);
|
|
179
250
|
}
|
|
251
|
+
else {
|
|
252
|
+
registerUnavailable("/conversations/search", ["embedding_provider"]);
|
|
253
|
+
}
|
|
180
254
|
if (embeddingProvider || localEmbeddingProvider) {
|
|
181
|
-
registerContextRoute(server, embeddingProvider ?? localEmbeddingProvider, config.sources);
|
|
255
|
+
registerContextRoute(server, embeddingProvider ?? localEmbeddingProvider, config.sources, selfReportsRoot);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
registerUnavailable("/context/pack", ["embedding_provider"]);
|
|
182
259
|
}
|
|
183
260
|
// --- Observability deps ---
|
|
184
261
|
const obsDeps = {
|
|
@@ -204,7 +281,11 @@ export async function buildApp(config, tokenManager, jobQueue, embeddingProvider
|
|
|
204
281
|
// --- Status route (authenticated) ---
|
|
205
282
|
registerStatusRoute(server, obsDeps);
|
|
206
283
|
// --- Friend-status route (authenticated, structured) ---
|
|
207
|
-
registerFriendStatusRoute(server, {
|
|
284
|
+
registerFriendStatusRoute(server, {
|
|
285
|
+
config,
|
|
286
|
+
startTime,
|
|
287
|
+
...(jobQueue ? { jobQueue } : {}),
|
|
288
|
+
});
|
|
208
289
|
// --- MCP usage telemetry (unauthenticated; SwiftBar polls every 10s) ---
|
|
209
290
|
registerMcpUsageRoute(server, obsDeps);
|
|
210
291
|
// --- Token revocation (authenticated) ---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"compact.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpD,QAAA,MAAM,oBAAoB;;;;;;;;;;;;EAMf,CAAC;AAEZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,GACd,IAAI,CAwDN"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
import { z } from "zod";
|
|
19
19
|
import { toJobStatusView } from "../../jobs/types.js";
|
|
20
20
|
import { hasEligibleRollback } from "../../jobs/handlers/compact.js";
|
|
21
|
+
import { enqueueJob } from "./enqueue.js";
|
|
21
22
|
const CompactRequestSchema = z
|
|
22
23
|
.object({
|
|
23
24
|
rollback: z.boolean().default(false),
|
|
@@ -60,7 +61,9 @@ export function registerCompactRoute(server, queue, dataDir) {
|
|
|
60
61
|
if (payload.idempotency_key !== undefined) {
|
|
61
62
|
opts.idempotency_key = payload.idempotency_key;
|
|
62
63
|
}
|
|
63
|
-
const result = await queue
|
|
64
|
+
const result = await enqueueJob(reply, queue, "compact", opts);
|
|
65
|
+
if (!result)
|
|
66
|
+
return;
|
|
64
67
|
if ("conflict" in result) {
|
|
65
68
|
return reply.code(409).send({ error: "conflict" });
|
|
66
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/server/routes/compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"compact.js","sourceRoot":"","sources":["../../../../src/server/routes/compact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FastifyInstance } from "fastify";
|
|
2
2
|
import type { EmbeddingProvider } from "../../providers/types.js";
|
|
3
3
|
import type { SourceDir } from "../../config/schema.js";
|
|
4
|
-
export declare function registerContextRoute(server: FastifyInstance, embedding: EmbeddingProvider, sources?: readonly SourceDir[]): void;
|
|
4
|
+
export declare function registerContextRoute(server: FastifyInstance, embedding: EmbeddingProvider, sources?: readonly SourceDir[], selfReportsRoot?: string): void;
|
|
5
5
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/context.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAyBxD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/context.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAyBxD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,EAC9B,eAAe,CAAC,EAAE,MAAM,GACvB,IAAI,CAyBN"}
|
|
@@ -25,7 +25,7 @@ const ContextPackRequestSchema = z.object({
|
|
|
25
25
|
.optional(),
|
|
26
26
|
max_bytes: z.number().int().positive().max(MAX_BYTES_CEILING).optional(),
|
|
27
27
|
});
|
|
28
|
-
export function registerContextRoute(server, embedding, sources) {
|
|
28
|
+
export function registerContextRoute(server, embedding, sources, selfReportsRoot) {
|
|
29
29
|
server.post("/context/pack", async (request, reply) => {
|
|
30
30
|
const parsed = ContextPackRequestSchema.safeParse(request.body);
|
|
31
31
|
if (!parsed.success) {
|
|
@@ -40,6 +40,7 @@ export function registerContextRoute(server, embedding, sources) {
|
|
|
40
40
|
embedding,
|
|
41
41
|
...(cwd ? { cwd } : {}),
|
|
42
42
|
...(sources ? { sources } : {}),
|
|
43
|
+
...(selfReportsRoot ? { selfReportsRoot } : {}),
|
|
43
44
|
...(since ? { since } : {}),
|
|
44
45
|
...(max_per_bucket !== undefined ? { maxPerBucket: max_per_bucket } : {}),
|
|
45
46
|
...(max_bytes !== undefined ? { maxBytes: max_bytes } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/server/routes/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,MAAM,iCAAiC,CAAC;AAEzC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,QAAQ,CAAC;SACb,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,GAAG,CAAC,sBAAsB,CAAC;SAC3B,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CACzE,CAAC,CAAC;AAEH,MAAM,UAAU,oBAAoB,CAClC,MAAuB,EACvB,SAA4B,EAC5B,OAA8B;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/server/routes/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,QAAQ,GACT,MAAM,iCAAiC,CAAC;AAEzC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,QAAQ,CAAC;SACb,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,GAAG,CAAC,sBAAsB,CAAC;SAC3B,QAAQ,EAAE;IACb,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CACzE,CAAC,CAAC;AAEH,MAAM,UAAU,oBAAoB,CAClC,MAAuB,EACvB,SAA4B,EAC5B,OAA8B,EAC9B,eAAwB;IAExB,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,KAAK,EAAE,kBAAkB;gBACzB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAEpE,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;YAClC,IAAI;YACJ,SAAS;YACT,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversations-search.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/conversations-search.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"conversations-search.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/conversations-search.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAoFlE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,iBAAiB,GAC3B,IAAI,CAuNN"}
|
|
@@ -14,6 +14,8 @@ import { z } from "zod";
|
|
|
14
14
|
import { CONVERSATION_SOURCES, DOMAINS, INTENTS, QUALITY_LEVELS, } from "../../providers/types.js";
|
|
15
15
|
import { rerank } from "../../retrieval/reranker.js";
|
|
16
16
|
import { lexicalSearchTables } from "../../retrieval/lexical.js";
|
|
17
|
+
import { isRiftBasicMetadata, RIFT_BASIC_METADATA_EXCLUSION_CLAUSE, } from "../../providers/basic-metadata-extraction.js";
|
|
18
|
+
import { RIFT_NONE_VECTOR_EXCLUSION_CLAUSE } from "../../providers/placeholder-embed.js";
|
|
17
19
|
import { applyPostFilters } from "../../retrieval/post-filter.js";
|
|
18
20
|
import { getTable } from "../../storage/tables.js";
|
|
19
21
|
import { buildCompactHit, fetchRawRowsForRanked, } from "../../retrieval/compact.js";
|
|
@@ -39,6 +41,11 @@ function escapeSql(value) {
|
|
|
39
41
|
* Build WHERE clause parts from non-"all" metadata filter values.
|
|
40
42
|
* These apply to conversation tables (hot/cold) only — digests lack
|
|
41
43
|
* source/domain/intent/quality fields.
|
|
44
|
+
*
|
|
45
|
+
* When any facet filter (domain/intent/quality) is active, also excludes no-AI
|
|
46
|
+
* `rift-basic` rows: their facets are generic placeholder defaults, not real
|
|
47
|
+
* classifications, so they must not satisfy an explicit facet filter. `source`
|
|
48
|
+
* is real provenance even on basic rows, so source-only filtering keeps them.
|
|
42
49
|
*/
|
|
43
50
|
function buildMetadataWhere(filters) {
|
|
44
51
|
const clauses = [];
|
|
@@ -50,6 +57,17 @@ function buildMetadataWhere(filters) {
|
|
|
50
57
|
clauses.push(`intent = '${escapeSql(filters.intent)}'`);
|
|
51
58
|
if (filters.quality !== "all")
|
|
52
59
|
clauses.push(`quality = '${escapeSql(filters.quality)}'`);
|
|
60
|
+
// Placeholder facets: a rift-basic row carries generic default
|
|
61
|
+
// domain/intent/quality (tech/research/medium) that were never really
|
|
62
|
+
// classified. Whenever one of those three facets is explicitly filtered,
|
|
63
|
+
// exclude basic rows so an un-enriched import can't match a facet it was
|
|
64
|
+
// never classified into. Applies to both the vector path (convClauses) and
|
|
65
|
+
// the lexical path (convLexOpts.extraClauses), which share this output.
|
|
66
|
+
if (filters.domain !== "all" ||
|
|
67
|
+
filters.intent !== "all" ||
|
|
68
|
+
filters.quality !== "all") {
|
|
69
|
+
clauses.push(RIFT_BASIC_METADATA_EXCLUSION_CLAUSE);
|
|
70
|
+
}
|
|
53
71
|
return clauses;
|
|
54
72
|
}
|
|
55
73
|
// --- Route registration ---
|
|
@@ -81,8 +99,12 @@ export function registerConversationSearchRoute(server, embedding) {
|
|
|
81
99
|
const vectorResults = [];
|
|
82
100
|
try {
|
|
83
101
|
const queryVec = await embedding.embed(query);
|
|
84
|
-
// Vector search on conversation table (with metadata + since filters)
|
|
85
|
-
|
|
102
|
+
// Vector search on conversation table (with metadata + since filters).
|
|
103
|
+
// Exclude no-key placeholder rows — this custom query covers BOTH the hot
|
|
104
|
+
// (detail:"summary") and cold (detail:"full") conversation tables and
|
|
105
|
+
// bypasses the shared vector.ts helper, so it needs its own `rift-none`
|
|
106
|
+
// guard or stale zero-vectors pollute semantic results after a key lands.
|
|
107
|
+
const convClauses = [RIFT_NONE_VECTOR_EXCLUSION_CLAUSE, ...metadataClauses];
|
|
86
108
|
if (since)
|
|
87
109
|
convClauses.push(`indexed_at >= '${escapeSql(since)}'`);
|
|
88
110
|
let convQuery = getTable(conversationTable)
|
|
@@ -104,9 +126,12 @@ export function registerConversationSearchRoute(server, embedding) {
|
|
|
104
126
|
const ts = row.indexed_at;
|
|
105
127
|
if (ts)
|
|
106
128
|
entry.indexed_at = ts;
|
|
129
|
+
// Drop placeholder `quality` on no-AI basic rows so the reranker treats
|
|
130
|
+
// them as quality-neutral rather than ranking on a fake label.
|
|
107
131
|
const q = row.quality;
|
|
108
|
-
if (q)
|
|
132
|
+
if (q && !isRiftBasicMetadata(row.metadata_provider)) {
|
|
109
133
|
entry.quality = q;
|
|
134
|
+
}
|
|
110
135
|
const t = row.topics;
|
|
111
136
|
if (t)
|
|
112
137
|
entry.topics = t;
|