@getrift/rift 0.0.0 → 0.1.0-beta.1
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.dev.md +110 -0
- package/dist/src/auth/keychain.d.ts +25 -0
- package/dist/src/auth/keychain.d.ts.map +1 -0
- package/dist/src/auth/keychain.js +113 -0
- package/dist/src/auth/keychain.js.map +1 -0
- package/dist/src/auth/middleware.d.ts +20 -0
- package/dist/src/auth/middleware.d.ts.map +1 -0
- package/dist/src/auth/middleware.js +49 -0
- package/dist/src/auth/middleware.js.map +1 -0
- package/dist/src/auth/rate-limit.d.ts +16 -0
- package/dist/src/auth/rate-limit.d.ts.map +1 -0
- package/dist/src/auth/rate-limit.js +38 -0
- package/dist/src/auth/rate-limit.js.map +1 -0
- package/dist/src/auth/rotation.d.ts +67 -0
- package/dist/src/auth/rotation.d.ts.map +1 -0
- package/dist/src/auth/rotation.js +190 -0
- package/dist/src/auth/rotation.js.map +1 -0
- package/dist/src/backfill/project-context-batch-constructor.d.ts +127 -0
- package/dist/src/backfill/project-context-batch-constructor.d.ts.map +1 -0
- package/dist/src/backfill/project-context-batch-constructor.js +210 -0
- package/dist/src/backfill/project-context-batch-constructor.js.map +1 -0
- package/dist/src/capture/auto-capture.d.ts +162 -0
- package/dist/src/capture/auto-capture.d.ts.map +1 -0
- package/dist/src/capture/auto-capture.js +601 -0
- package/dist/src/capture/auto-capture.js.map +1 -0
- package/dist/src/capture/batch-budget.d.ts +90 -0
- package/dist/src/capture/batch-budget.d.ts.map +1 -0
- package/dist/src/capture/batch-budget.js +148 -0
- package/dist/src/capture/batch-budget.js.map +1 -0
- package/dist/src/capture/codex-cli-triage-provider.d.ts +17 -0
- package/dist/src/capture/codex-cli-triage-provider.d.ts.map +1 -0
- package/dist/src/capture/codex-cli-triage-provider.js +109 -0
- package/dist/src/capture/codex-cli-triage-provider.js.map +1 -0
- package/dist/src/capture/observability.d.ts +42 -0
- package/dist/src/capture/observability.d.ts.map +1 -0
- package/dist/src/capture/observability.js +87 -0
- package/dist/src/capture/observability.js.map +1 -0
- package/dist/src/capture/openai-triage-provider.d.ts +92 -0
- package/dist/src/capture/openai-triage-provider.d.ts.map +1 -0
- package/dist/src/capture/openai-triage-provider.js +267 -0
- package/dist/src/capture/openai-triage-provider.js.map +1 -0
- package/dist/src/capture/review-queue-index.d.ts +51 -0
- package/dist/src/capture/review-queue-index.d.ts.map +1 -0
- package/dist/src/capture/review-queue-index.js +204 -0
- package/dist/src/capture/review-queue-index.js.map +1 -0
- package/dist/src/capture/review-queue.d.ts +43 -0
- package/dist/src/capture/review-queue.d.ts.map +1 -0
- package/dist/src/capture/review-queue.js +116 -0
- package/dist/src/capture/review-queue.js.map +1 -0
- package/dist/src/capture/sources.d.ts +7 -0
- package/dist/src/capture/sources.d.ts.map +1 -0
- package/dist/src/capture/sources.js +3 -0
- package/dist/src/capture/sources.js.map +1 -0
- package/dist/src/capture/triage-lane.d.ts +39 -0
- package/dist/src/capture/triage-lane.d.ts.map +1 -0
- package/dist/src/capture/triage-lane.js +217 -0
- package/dist/src/capture/triage-lane.js.map +1 -0
- package/dist/src/capture/triage-provider.d.ts +75 -0
- package/dist/src/capture/triage-provider.d.ts.map +1 -0
- package/dist/src/capture/triage-provider.js +120 -0
- package/dist/src/capture/triage-provider.js.map +1 -0
- package/dist/src/capture/triage.d.ts +30 -0
- package/dist/src/capture/triage.d.ts.map +1 -0
- package/dist/src/capture/triage.js +48 -0
- package/dist/src/capture/triage.js.map +1 -0
- package/dist/src/cli/commands/backfill.d.ts +3 -0
- package/dist/src/cli/commands/backfill.d.ts.map +1 -0
- package/dist/src/cli/commands/backfill.js +1376 -0
- package/dist/src/cli/commands/backfill.js.map +1 -0
- package/dist/src/cli/commands/bulk-ingest.d.ts +3 -0
- package/dist/src/cli/commands/bulk-ingest.d.ts.map +1 -0
- package/dist/src/cli/commands/bulk-ingest.js +126 -0
- package/dist/src/cli/commands/bulk-ingest.js.map +1 -0
- package/dist/src/cli/commands/capture.d.ts +12 -0
- package/dist/src/cli/commands/capture.d.ts.map +1 -0
- package/dist/src/cli/commands/capture.js +123 -0
- package/dist/src/cli/commands/capture.js.map +1 -0
- package/dist/src/cli/commands/compact.d.ts +3 -0
- package/dist/src/cli/commands/compact.d.ts.map +1 -0
- package/dist/src/cli/commands/compact.js +70 -0
- package/dist/src/cli/commands/compact.js.map +1 -0
- package/dist/src/cli/commands/feedback.d.ts +22 -0
- package/dist/src/cli/commands/feedback.d.ts.map +1 -0
- package/dist/src/cli/commands/feedback.js +125 -0
- package/dist/src/cli/commands/feedback.js.map +1 -0
- package/dist/src/cli/commands/hooks-install.d.ts +19 -0
- package/dist/src/cli/commands/hooks-install.d.ts.map +1 -0
- package/dist/src/cli/commands/hooks-install.js +103 -0
- package/dist/src/cli/commands/hooks-install.js.map +1 -0
- package/dist/src/cli/commands/import.d.ts +19 -0
- package/dist/src/cli/commands/import.d.ts.map +1 -0
- package/dist/src/cli/commands/import.js +258 -0
- package/dist/src/cli/commands/import.js.map +1 -0
- package/dist/src/cli/commands/ingest.d.ts +3 -0
- package/dist/src/cli/commands/ingest.d.ts.map +1 -0
- package/dist/src/cli/commands/ingest.js +80 -0
- package/dist/src/cli/commands/ingest.js.map +1 -0
- package/dist/src/cli/commands/mcp-install.d.ts +25 -0
- package/dist/src/cli/commands/mcp-install.d.ts.map +1 -0
- package/dist/src/cli/commands/mcp-install.js +134 -0
- package/dist/src/cli/commands/mcp-install.js.map +1 -0
- package/dist/src/cli/commands/onboard.d.ts +98 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -0
- package/dist/src/cli/commands/onboard.js +823 -0
- package/dist/src/cli/commands/onboard.js.map +1 -0
- package/dist/src/cli/commands/rebuild.d.ts +12 -0
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -0
- package/dist/src/cli/commands/rebuild.js +164 -0
- package/dist/src/cli/commands/rebuild.js.map +1 -0
- package/dist/src/cli/commands/reconcile.d.ts +3 -0
- package/dist/src/cli/commands/reconcile.d.ts.map +1 -0
- package/dist/src/cli/commands/reconcile.js +56 -0
- package/dist/src/cli/commands/reconcile.js.map +1 -0
- package/dist/src/cli/commands/reindex.d.ts +3 -0
- package/dist/src/cli/commands/reindex.d.ts.map +1 -0
- package/dist/src/cli/commands/reindex.js +66 -0
- package/dist/src/cli/commands/reindex.js.map +1 -0
- package/dist/src/cli/commands/review.d.ts +13 -0
- package/dist/src/cli/commands/review.d.ts.map +1 -0
- package/dist/src/cli/commands/review.js +383 -0
- package/dist/src/cli/commands/review.js.map +1 -0
- package/dist/src/cli/commands/save.d.ts +3 -0
- package/dist/src/cli/commands/save.d.ts.map +1 -0
- package/dist/src/cli/commands/save.js +111 -0
- package/dist/src/cli/commands/save.js.map +1 -0
- package/dist/src/cli/commands/search.d.ts +35 -0
- package/dist/src/cli/commands/search.d.ts.map +1 -0
- package/dist/src/cli/commands/search.js +88 -0
- package/dist/src/cli/commands/search.js.map +1 -0
- package/dist/src/cli/commands/stats.d.ts +3 -0
- package/dist/src/cli/commands/stats.d.ts.map +1 -0
- package/dist/src/cli/commands/stats.js +42 -0
- package/dist/src/cli/commands/stats.js.map +1 -0
- package/dist/src/cli/commands/status.d.ts +15 -0
- package/dist/src/cli/commands/status.d.ts.map +1 -0
- package/dist/src/cli/commands/status.js +89 -0
- package/dist/src/cli/commands/status.js.map +1 -0
- package/dist/src/cli/commands/token-issue.d.ts +3 -0
- package/dist/src/cli/commands/token-issue.d.ts.map +1 -0
- package/dist/src/cli/commands/token-issue.js +25 -0
- package/dist/src/cli/commands/token-issue.js.map +1 -0
- package/dist/src/cli/commands/triage.d.ts +3 -0
- package/dist/src/cli/commands/triage.d.ts.map +1 -0
- package/dist/src/cli/commands/triage.js +125 -0
- package/dist/src/cli/commands/triage.js.map +1 -0
- package/dist/src/cli/commands/uninstall.d.ts +3 -0
- package/dist/src/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/src/cli/commands/uninstall.js +238 -0
- package/dist/src/cli/commands/uninstall.js.map +1 -0
- package/dist/src/cli/feedback/feedback-config.d.ts +21 -0
- package/dist/src/cli/feedback/feedback-config.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-config.js +43 -0
- package/dist/src/cli/feedback/feedback-config.js.map +1 -0
- package/dist/src/cli/feedback/feedback-history.d.ts +4 -0
- package/dist/src/cli/feedback/feedback-history.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-history.js +115 -0
- package/dist/src/cli/feedback/feedback-history.js.map +1 -0
- package/dist/src/cli/feedback/feedback-payload.d.ts +53 -0
- package/dist/src/cli/feedback/feedback-payload.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-payload.js +10 -0
- package/dist/src/cli/feedback/feedback-payload.js.map +1 -0
- package/dist/src/cli/feedback/feedback-relay.d.ts +15 -0
- package/dist/src/cli/feedback/feedback-relay.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-relay.js +47 -0
- package/dist/src/cli/feedback/feedback-relay.js.map +1 -0
- package/dist/src/cli/feedback/feedback-status.d.ts +11 -0
- package/dist/src/cli/feedback/feedback-status.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-status.js +122 -0
- package/dist/src/cli/feedback/feedback-status.js.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.d.ts +25 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.js +85 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.js.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code.d.ts +12 -0
- package/dist/src/cli/hooks-writers/claude-code.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code.js +228 -0
- package/dist/src/cli/hooks-writers/claude-code.js.map +1 -0
- package/dist/src/cli/hooks-writers/errors.d.ts +16 -0
- package/dist/src/cli/hooks-writers/errors.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/errors.js +24 -0
- package/dist/src/cli/hooks-writers/errors.js.map +1 -0
- package/dist/src/cli/hooks-writers/index.d.ts +13 -0
- package/dist/src/cli/hooks-writers/index.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/index.js +26 -0
- package/dist/src/cli/hooks-writers/index.js.map +1 -0
- package/dist/src/cli/hooks-writers/types.d.ts +27 -0
- package/dist/src/cli/hooks-writers/types.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/types.js +9 -0
- package/dist/src/cli/hooks-writers/types.js.map +1 -0
- package/dist/src/cli/http-client.d.ts +36 -0
- package/dist/src/cli/http-client.d.ts.map +1 -0
- package/dist/src/cli/http-client.js +153 -0
- package/dist/src/cli/http-client.js.map +1 -0
- package/dist/src/cli/index.d.ts +4 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +68 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/job-poller.d.ts +13 -0
- package/dist/src/cli/job-poller.d.ts.map +1 -0
- package/dist/src/cli/job-poller.js +29 -0
- package/dist/src/cli/job-poller.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.d.ts +10 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.js +410 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/errors.d.ts +17 -0
- package/dist/src/cli/mcp-config-writers/errors.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/errors.js +13 -0
- package/dist/src/cli/mcp-config-writers/errors.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/index.d.ts +18 -0
- package/dist/src/cli/mcp-config-writers/index.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/index.js +49 -0
- package/dist/src/cli/mcp-config-writers/index.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/json-config.d.ts +12 -0
- package/dist/src/cli/mcp-config-writers/json-config.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/json-config.js +177 -0
- package/dist/src/cli/mcp-config-writers/json-config.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/redact.d.ts +28 -0
- package/dist/src/cli/mcp-config-writers/redact.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/redact.js +48 -0
- package/dist/src/cli/mcp-config-writers/redact.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/types.d.ts +32 -0
- package/dist/src/cli/mcp-config-writers/types.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/types.js +5 -0
- package/dist/src/cli/mcp-config-writers/types.js.map +1 -0
- package/dist/src/cli/output.d.ts +8 -0
- package/dist/src/cli/output.d.ts.map +1 -0
- package/dist/src/cli/output.js +34 -0
- package/dist/src/cli/output.js.map +1 -0
- package/dist/src/cli/status/friend-header.d.ts +33 -0
- package/dist/src/cli/status/friend-header.d.ts.map +1 -0
- package/dist/src/cli/status/friend-header.js +108 -0
- package/dist/src/cli/status/friend-header.js.map +1 -0
- package/dist/src/cli/status/local-signals.d.ts +14 -0
- package/dist/src/cli/status/local-signals.d.ts.map +1 -0
- package/dist/src/cli/status/local-signals.js +73 -0
- package/dist/src/cli/status/local-signals.js.map +1 -0
- package/dist/src/cli/token.d.ts +37 -0
- package/dist/src/cli/token.d.ts.map +1 -0
- package/dist/src/cli/token.js +105 -0
- package/dist/src/cli/token.js.map +1 -0
- package/dist/src/cli/uninstall/mcp-uninstall.d.ts +33 -0
- package/dist/src/cli/uninstall/mcp-uninstall.d.ts.map +1 -0
- package/dist/src/cli/uninstall/mcp-uninstall.js +181 -0
- package/dist/src/cli/uninstall/mcp-uninstall.js.map +1 -0
- package/dist/src/config/loader.d.ts +9 -0
- package/dist/src/config/loader.d.ts.map +1 -0
- package/dist/src/config/loader.js +73 -0
- package/dist/src/config/loader.js.map +1 -0
- package/dist/src/config/schema.d.ts +635 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +208 -0
- package/dist/src/config/schema.js.map +1 -0
- package/dist/src/ingestion/bulk-ingest.d.ts +11 -0
- package/dist/src/ingestion/bulk-ingest.d.ts.map +1 -0
- package/dist/src/ingestion/bulk-ingest.js +11 -0
- package/dist/src/ingestion/bulk-ingest.js.map +1 -0
- package/dist/src/ingestion/extractor.d.ts +16 -0
- package/dist/src/ingestion/extractor.d.ts.map +1 -0
- package/dist/src/ingestion/extractor.js +85 -0
- package/dist/src/ingestion/extractor.js.map +1 -0
- package/dist/src/ingestion/extractors/docx.d.ts +3 -0
- package/dist/src/ingestion/extractors/docx.d.ts.map +1 -0
- package/dist/src/ingestion/extractors/docx.js +20 -0
- package/dist/src/ingestion/extractors/docx.js.map +1 -0
- package/dist/src/ingestion/extractors/pdf.d.ts +3 -0
- package/dist/src/ingestion/extractors/pdf.d.ts.map +1 -0
- package/dist/src/ingestion/extractors/pdf.js +32 -0
- package/dist/src/ingestion/extractors/pdf.js.map +1 -0
- package/dist/src/ingestion/historical-campaign.d.ts +340 -0
- package/dist/src/ingestion/historical-campaign.d.ts.map +1 -0
- package/dist/src/ingestion/historical-campaign.js +1010 -0
- package/dist/src/ingestion/historical-campaign.js.map +1 -0
- package/dist/src/ingestion/ignored-paths.d.ts +20 -0
- package/dist/src/ingestion/ignored-paths.d.ts.map +1 -0
- package/dist/src/ingestion/ignored-paths.js +45 -0
- package/dist/src/ingestion/ignored-paths.js.map +1 -0
- package/dist/src/ingestion/inbox-watcher.d.ts +12 -0
- package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-watcher.js +99 -0
- package/dist/src/ingestion/inbox-watcher.js.map +1 -0
- package/dist/src/ingestion/indexer.d.ts +32 -0
- package/dist/src/ingestion/indexer.d.ts.map +1 -0
- package/dist/src/ingestion/indexer.js +68 -0
- package/dist/src/ingestion/indexer.js.map +1 -0
- package/dist/src/ingestion/metadata-extraction.d.ts +53 -0
- package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -0
- package/dist/src/ingestion/metadata-extraction.js +132 -0
- package/dist/src/ingestion/metadata-extraction.js.map +1 -0
- package/dist/src/ingestion/parsers/chatgpt-web.d.ts +29 -0
- package/dist/src/ingestion/parsers/chatgpt-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/chatgpt-web.js +100 -0
- package/dist/src/ingestion/parsers/chatgpt-web.js.map +1 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.d.ts +16 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.js +123 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.js.map +1 -0
- package/dist/src/ingestion/parsers/claude-web.d.ts +24 -0
- package/dist/src/ingestion/parsers/claude-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/claude-web.js +78 -0
- package/dist/src/ingestion/parsers/claude-web.js.map +1 -0
- package/dist/src/ingestion/parsers/codex-jsonl.d.ts +18 -0
- package/dist/src/ingestion/parsers/codex-jsonl.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/codex-jsonl.js +125 -0
- package/dist/src/ingestion/parsers/codex-jsonl.js.map +1 -0
- package/dist/src/ingestion/parsers/gemini-web.d.ts +16 -0
- package/dist/src/ingestion/parsers/gemini-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/gemini-web.js +170 -0
- package/dist/src/ingestion/parsers/gemini-web.js.map +1 -0
- package/dist/src/ingestion/parsers/grok-web.d.ts +40 -0
- package/dist/src/ingestion/parsers/grok-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/grok-web.js +67 -0
- package/dist/src/ingestion/parsers/grok-web.js.map +1 -0
- package/dist/src/ingestion/parsers/types.d.ts +34 -0
- package/dist/src/ingestion/parsers/types.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/types.js +26 -0
- package/dist/src/ingestion/parsers/types.js.map +1 -0
- package/dist/src/ingestion/scanner.d.ts +48 -0
- package/dist/src/ingestion/scanner.d.ts.map +1 -0
- package/dist/src/ingestion/scanner.js +131 -0
- package/dist/src/ingestion/scanner.js.map +1 -0
- package/dist/src/ingestion/staging.d.ts +109 -0
- package/dist/src/ingestion/staging.d.ts.map +1 -0
- package/dist/src/ingestion/staging.js +411 -0
- package/dist/src/ingestion/staging.js.map +1 -0
- package/dist/src/ingestion/watcher.d.ts +65 -0
- package/dist/src/ingestion/watcher.d.ts.map +1 -0
- package/dist/src/ingestion/watcher.js +182 -0
- package/dist/src/ingestion/watcher.js.map +1 -0
- package/dist/src/jobs/codex-override-handler.d.ts +3 -0
- package/dist/src/jobs/codex-override-handler.d.ts.map +1 -0
- package/dist/src/jobs/codex-override-handler.js +16 -0
- package/dist/src/jobs/codex-override-handler.js.map +1 -0
- package/dist/src/jobs/handlers/compact.d.ts +30 -0
- package/dist/src/jobs/handlers/compact.d.ts.map +1 -0
- package/dist/src/jobs/handlers/compact.js +329 -0
- package/dist/src/jobs/handlers/compact.js.map +1 -0
- package/dist/src/jobs/handlers/ingest.d.ts +13 -0
- package/dist/src/jobs/handlers/ingest.d.ts.map +1 -0
- package/dist/src/jobs/handlers/ingest.js +255 -0
- package/dist/src/jobs/handlers/ingest.js.map +1 -0
- package/dist/src/jobs/handlers/reconcile.d.ts +29 -0
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -0
- package/dist/src/jobs/handlers/reconcile.js +476 -0
- package/dist/src/jobs/handlers/reconcile.js.map +1 -0
- package/dist/src/jobs/handlers/reindex.d.ts +38 -0
- package/dist/src/jobs/handlers/reindex.d.ts.map +1 -0
- package/dist/src/jobs/handlers/reindex.js +52 -0
- package/dist/src/jobs/handlers/reindex.js.map +1 -0
- package/dist/src/jobs/handlers/save.d.ts +10 -0
- package/dist/src/jobs/handlers/save.d.ts.map +1 -0
- package/dist/src/jobs/handlers/save.js +206 -0
- package/dist/src/jobs/handlers/save.js.map +1 -0
- package/dist/src/jobs/handlers/triage.d.ts +47 -0
- package/dist/src/jobs/handlers/triage.d.ts.map +1 -0
- package/dist/src/jobs/handlers/triage.js +95 -0
- package/dist/src/jobs/handlers/triage.js.map +1 -0
- package/dist/src/jobs/queue.d.ts +107 -0
- package/dist/src/jobs/queue.d.ts.map +1 -0
- package/dist/src/jobs/queue.js +319 -0
- package/dist/src/jobs/queue.js.map +1 -0
- package/dist/src/jobs/types.d.ts +39 -0
- package/dist/src/jobs/types.d.ts.map +1 -0
- package/dist/src/jobs/types.js +29 -0
- package/dist/src/jobs/types.js.map +1 -0
- package/dist/src/jobs/worker-entry.d.ts +10 -0
- package/dist/src/jobs/worker-entry.d.ts.map +1 -0
- package/dist/src/jobs/worker-entry.js +210 -0
- package/dist/src/jobs/worker-entry.js.map +1 -0
- package/dist/src/jobs/worker-process.d.ts +50 -0
- package/dist/src/jobs/worker-process.d.ts.map +1 -0
- package/dist/src/jobs/worker-process.js +186 -0
- package/dist/src/jobs/worker-process.js.map +1 -0
- package/dist/src/jobs/worker.d.ts +11 -0
- package/dist/src/jobs/worker.d.ts.map +1 -0
- package/dist/src/jobs/worker.js +14 -0
- package/dist/src/jobs/worker.js.map +1 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +425 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/mcp/errors.d.ts +8 -0
- package/dist/src/mcp/errors.d.ts.map +1 -0
- package/dist/src/mcp/errors.js +50 -0
- package/dist/src/mcp/errors.js.map +1 -0
- package/dist/src/mcp/server.d.ts +10 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +94 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/tools/context-pack.d.ts +35 -0
- package/dist/src/mcp/tools/context-pack.d.ts.map +1 -0
- package/dist/src/mcp/tools/context-pack.js +97 -0
- package/dist/src/mcp/tools/context-pack.js.map +1 -0
- package/dist/src/mcp/tools/conversations-search.d.ts +38 -0
- package/dist/src/mcp/tools/conversations-search.d.ts.map +1 -0
- package/dist/src/mcp/tools/conversations-search.js +73 -0
- package/dist/src/mcp/tools/conversations-search.js.map +1 -0
- package/dist/src/mcp/tools/save.d.ts +32 -0
- package/dist/src/mcp/tools/save.d.ts.map +1 -0
- package/dist/src/mcp/tools/save.js +60 -0
- package/dist/src/mcp/tools/save.js.map +1 -0
- package/dist/src/mcp/tools/search.d.ts +33 -0
- package/dist/src/mcp/tools/search.d.ts.map +1 -0
- package/dist/src/mcp/tools/search.js +58 -0
- package/dist/src/mcp/tools/search.js.map +1 -0
- package/dist/src/mcp/tools/status.d.ts +17 -0
- package/dist/src/mcp/tools/status.d.ts.map +1 -0
- package/dist/src/mcp/tools/status.js +12 -0
- package/dist/src/mcp/tools/status.js.map +1 -0
- package/dist/src/observability/coverage.d.ts +100 -0
- package/dist/src/observability/coverage.d.ts.map +1 -0
- package/dist/src/observability/coverage.js +180 -0
- package/dist/src/observability/coverage.js.map +1 -0
- package/dist/src/observability/rift-context.d.ts +47 -0
- package/dist/src/observability/rift-context.d.ts.map +1 -0
- package/dist/src/observability/rift-context.js +118 -0
- package/dist/src/observability/rift-context.js.map +1 -0
- package/dist/src/observability/staleness.d.ts +43 -0
- package/dist/src/observability/staleness.d.ts.map +1 -0
- package/dist/src/observability/staleness.js +74 -0
- package/dist/src/observability/staleness.js.map +1 -0
- package/dist/src/observability/tool-usage-stats.d.ts +23 -0
- package/dist/src/observability/tool-usage-stats.d.ts.map +1 -0
- package/dist/src/observability/tool-usage-stats.js +83 -0
- package/dist/src/observability/tool-usage-stats.js.map +1 -0
- package/dist/src/observability/tool-usage.d.ts +68 -0
- package/dist/src/observability/tool-usage.d.ts.map +1 -0
- package/dist/src/observability/tool-usage.js +207 -0
- package/dist/src/observability/tool-usage.js.map +1 -0
- package/dist/src/onboarding/daemon-control.d.ts +33 -0
- package/dist/src/onboarding/daemon-control.d.ts.map +1 -0
- package/dist/src/onboarding/daemon-control.js +92 -0
- package/dist/src/onboarding/daemon-control.js.map +1 -0
- package/dist/src/onboarding/env-file.d.ts +18 -0
- package/dist/src/onboarding/env-file.d.ts.map +1 -0
- package/dist/src/onboarding/env-file.js +89 -0
- package/dist/src/onboarding/env-file.js.map +1 -0
- package/dist/src/onboarding/voyage-validate.d.ts +16 -0
- package/dist/src/onboarding/voyage-validate.d.ts.map +1 -0
- package/dist/src/onboarding/voyage-validate.js +85 -0
- package/dist/src/onboarding/voyage-validate.js.map +1 -0
- package/dist/src/providers/anthropic-digest.d.ts +23 -0
- package/dist/src/providers/anthropic-digest.d.ts.map +1 -0
- package/dist/src/providers/anthropic-digest.js +91 -0
- package/dist/src/providers/anthropic-digest.js.map +1 -0
- package/dist/src/providers/codex-cli-digest.d.ts +12 -0
- package/dist/src/providers/codex-cli-digest.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-digest.js +70 -0
- package/dist/src/providers/codex-cli-digest.js.map +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts +14 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.js +101 -0
- package/dist/src/providers/codex-cli-metadata-extraction.js.map +1 -0
- package/dist/src/providers/codex-cli-runner.d.ts +14 -0
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-runner.js +272 -0
- package/dist/src/providers/codex-cli-runner.js.map +1 -0
- package/dist/src/providers/conversation-generation.d.ts +10 -0
- package/dist/src/providers/conversation-generation.d.ts.map +1 -0
- package/dist/src/providers/conversation-generation.js +54 -0
- package/dist/src/providers/conversation-generation.js.map +1 -0
- package/dist/src/providers/ollama-embed.d.ts +22 -0
- package/dist/src/providers/ollama-embed.d.ts.map +1 -0
- package/dist/src/providers/ollama-embed.js +133 -0
- package/dist/src/providers/ollama-embed.js.map +1 -0
- package/dist/src/providers/ollama.d.ts +42 -0
- package/dist/src/providers/ollama.d.ts.map +1 -0
- package/dist/src/providers/ollama.js +169 -0
- package/dist/src/providers/ollama.js.map +1 -0
- package/dist/src/providers/openai-metadata-extraction.d.ts +73 -0
- package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/openai-metadata-extraction.js +161 -0
- package/dist/src/providers/openai-metadata-extraction.js.map +1 -0
- package/dist/src/providers/operator-overrides.d.ts +24 -0
- package/dist/src/providers/operator-overrides.d.ts.map +1 -0
- package/dist/src/providers/operator-overrides.js +84 -0
- package/dist/src/providers/operator-overrides.js.map +1 -0
- package/dist/src/providers/stub.d.ts +17 -0
- package/dist/src/providers/stub.d.ts.map +1 -0
- package/dist/src/providers/stub.js +72 -0
- package/dist/src/providers/stub.js.map +1 -0
- package/dist/src/providers/types.d.ts +82 -0
- package/dist/src/providers/types.d.ts.map +1 -0
- package/dist/src/providers/types.js +52 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/providers/voyage.d.ts +23 -0
- package/dist/src/providers/voyage.d.ts.map +1 -0
- package/dist/src/providers/voyage.js +135 -0
- package/dist/src/providers/voyage.js.map +1 -0
- package/dist/src/retrieval/compact.d.ts +89 -0
- package/dist/src/retrieval/compact.d.ts.map +1 -0
- package/dist/src/retrieval/compact.js +348 -0
- package/dist/src/retrieval/compact.js.map +1 -0
- package/dist/src/retrieval/context-pack.d.ts +123 -0
- package/dist/src/retrieval/context-pack.d.ts.map +1 -0
- package/dist/src/retrieval/context-pack.js +553 -0
- package/dist/src/retrieval/context-pack.js.map +1 -0
- package/dist/src/retrieval/cwd.d.ts +25 -0
- package/dist/src/retrieval/cwd.d.ts.map +1 -0
- package/dist/src/retrieval/cwd.js +48 -0
- package/dist/src/retrieval/cwd.js.map +1 -0
- package/dist/src/retrieval/degraded.d.ts +20 -0
- package/dist/src/retrieval/degraded.d.ts.map +1 -0
- package/dist/src/retrieval/degraded.js +43 -0
- package/dist/src/retrieval/degraded.js.map +1 -0
- package/dist/src/retrieval/hybrid.d.ts +38 -0
- package/dist/src/retrieval/hybrid.d.ts.map +1 -0
- package/dist/src/retrieval/hybrid.js +82 -0
- package/dist/src/retrieval/hybrid.js.map +1 -0
- package/dist/src/retrieval/lexical.d.ts +28 -0
- package/dist/src/retrieval/lexical.d.ts.map +1 -0
- package/dist/src/retrieval/lexical.js +301 -0
- package/dist/src/retrieval/lexical.js.map +1 -0
- package/dist/src/retrieval/post-filter.d.ts +32 -0
- package/dist/src/retrieval/post-filter.d.ts.map +1 -0
- package/dist/src/retrieval/post-filter.js +57 -0
- package/dist/src/retrieval/post-filter.js.map +1 -0
- package/dist/src/retrieval/reranker.d.ts +72 -0
- package/dist/src/retrieval/reranker.d.ts.map +1 -0
- package/dist/src/retrieval/reranker.js +129 -0
- package/dist/src/retrieval/reranker.js.map +1 -0
- package/dist/src/retrieval/vector.d.ts +47 -0
- package/dist/src/retrieval/vector.d.ts.map +1 -0
- package/dist/src/retrieval/vector.js +112 -0
- package/dist/src/retrieval/vector.js.map +1 -0
- package/dist/src/runtime/legacy-migration.d.ts +27 -0
- package/dist/src/runtime/legacy-migration.d.ts.map +1 -0
- package/dist/src/runtime/legacy-migration.js +140 -0
- package/dist/src/runtime/legacy-migration.js.map +1 -0
- package/dist/src/runtime/legacy-name-guard.d.ts +35 -0
- package/dist/src/runtime/legacy-name-guard.d.ts.map +1 -0
- package/dist/src/runtime/legacy-name-guard.js +58 -0
- package/dist/src/runtime/legacy-name-guard.js.map +1 -0
- package/dist/src/runtime/rift-env.d.ts +14 -0
- package/dist/src/runtime/rift-env.d.ts.map +1 -0
- package/dist/src/runtime/rift-env.js +79 -0
- package/dist/src/runtime/rift-env.js.map +1 -0
- package/dist/src/runtime/watcher-startup.d.ts +2 -0
- package/dist/src/runtime/watcher-startup.d.ts.map +1 -0
- package/dist/src/runtime/watcher-startup.js +4 -0
- package/dist/src/runtime/watcher-startup.js.map +1 -0
- package/dist/src/security/archive.d.ts +23 -0
- package/dist/src/security/archive.d.ts.map +1 -0
- package/dist/src/security/archive.js +163 -0
- package/dist/src/security/archive.js.map +1 -0
- package/dist/src/security/paths.d.ts +21 -0
- package/dist/src/security/paths.d.ts.map +1 -0
- package/dist/src/security/paths.js +67 -0
- package/dist/src/security/paths.js.map +1 -0
- package/dist/src/server/app.d.ts +29 -0
- package/dist/src/server/app.d.ts.map +1 -0
- package/dist/src/server/app.js +226 -0
- package/dist/src/server/app.js.map +1 -0
- package/dist/src/server/build-info.d.ts +8 -0
- package/dist/src/server/build-info.d.ts.map +1 -0
- package/dist/src/server/build-info.js +61 -0
- package/dist/src/server/build-info.js.map +1 -0
- package/dist/src/server/lifecycle.d.ts +30 -0
- package/dist/src/server/lifecycle.d.ts.map +1 -0
- package/dist/src/server/lifecycle.js +59 -0
- package/dist/src/server/lifecycle.js.map +1 -0
- package/dist/src/server/middleware/multipart.d.ts +51 -0
- package/dist/src/server/middleware/multipart.d.ts.map +1 -0
- package/dist/src/server/middleware/multipart.js +86 -0
- package/dist/src/server/middleware/multipart.js.map +1 -0
- package/dist/src/server/routes/compact.d.ts +37 -0
- package/dist/src/server/routes/compact.d.ts.map +1 -0
- package/dist/src/server/routes/compact.js +77 -0
- package/dist/src/server/routes/compact.js.map +1 -0
- package/dist/src/server/routes/context.d.ts +5 -0
- package/dist/src/server/routes/context.d.ts.map +1 -0
- package/dist/src/server/routes/context.js +50 -0
- package/dist/src/server/routes/context.js.map +1 -0
- package/dist/src/server/routes/conversations-search.d.ts +4 -0
- package/dist/src/server/routes/conversations-search.d.ts.map +1 -0
- package/dist/src/server/routes/conversations-search.js +243 -0
- package/dist/src/server/routes/conversations-search.js.map +1 -0
- package/dist/src/server/routes/friend-status.d.ts +72 -0
- package/dist/src/server/routes/friend-status.d.ts.map +1 -0
- package/dist/src/server/routes/friend-status.js +71 -0
- package/dist/src/server/routes/friend-status.js.map +1 -0
- package/dist/src/server/routes/ingest.d.ts +15 -0
- package/dist/src/server/routes/ingest.d.ts.map +1 -0
- package/dist/src/server/routes/ingest.js +139 -0
- package/dist/src/server/routes/ingest.js.map +1 -0
- package/dist/src/server/routes/jobs.d.ts +10 -0
- package/dist/src/server/routes/jobs.d.ts.map +1 -0
- package/dist/src/server/routes/jobs.js +29 -0
- package/dist/src/server/routes/jobs.js.map +1 -0
- package/dist/src/server/routes/mcp-usage.d.ts +13 -0
- package/dist/src/server/routes/mcp-usage.d.ts.map +1 -0
- package/dist/src/server/routes/mcp-usage.js +17 -0
- package/dist/src/server/routes/mcp-usage.js.map +1 -0
- package/dist/src/server/routes/reconcile.d.ts +4 -0
- package/dist/src/server/routes/reconcile.d.ts.map +1 -0
- package/dist/src/server/routes/reconcile.js +43 -0
- package/dist/src/server/routes/reconcile.js.map +1 -0
- package/dist/src/server/routes/reindex.d.ts +4 -0
- package/dist/src/server/routes/reindex.d.ts.map +1 -0
- package/dist/src/server/routes/reindex.js +74 -0
- package/dist/src/server/routes/reindex.js.map +1 -0
- package/dist/src/server/routes/save.d.ts +40 -0
- package/dist/src/server/routes/save.d.ts.map +1 -0
- package/dist/src/server/routes/save.js +112 -0
- package/dist/src/server/routes/save.js.map +1 -0
- package/dist/src/server/routes/search.d.ts +5 -0
- package/dist/src/server/routes/search.d.ts.map +1 -0
- package/dist/src/server/routes/search.js +400 -0
- package/dist/src/server/routes/search.js.map +1 -0
- package/dist/src/server/routes/stats.d.ts +10 -0
- package/dist/src/server/routes/stats.d.ts.map +1 -0
- package/dist/src/server/routes/stats.js +15 -0
- package/dist/src/server/routes/stats.js.map +1 -0
- package/dist/src/server/routes/status.d.ts +20 -0
- package/dist/src/server/routes/status.d.ts.map +1 -0
- package/dist/src/server/routes/status.js +31 -0
- package/dist/src/server/routes/status.js.map +1 -0
- package/dist/src/server/routes/triage.d.ts +4 -0
- package/dist/src/server/routes/triage.d.ts.map +1 -0
- package/dist/src/server/routes/triage.js +94 -0
- package/dist/src/server/routes/triage.js.map +1 -0
- package/dist/src/server/save-quality.d.ts +21 -0
- package/dist/src/server/save-quality.d.ts.map +1 -0
- package/dist/src/server/save-quality.js +51 -0
- package/dist/src/server/save-quality.js.map +1 -0
- package/dist/src/storage/atomic.d.ts +8 -0
- package/dist/src/storage/atomic.d.ts.map +1 -0
- package/dist/src/storage/atomic.js +22 -0
- package/dist/src/storage/atomic.js.map +1 -0
- package/dist/src/storage/db.d.ts +15 -0
- package/dist/src/storage/db.d.ts.map +1 -0
- package/dist/src/storage/db.js +43 -0
- package/dist/src/storage/db.js.map +1 -0
- package/dist/src/storage/integrity.d.ts +11 -0
- package/dist/src/storage/integrity.d.ts.map +1 -0
- package/dist/src/storage/integrity.js +66 -0
- package/dist/src/storage/integrity.js.map +1 -0
- package/dist/src/storage/rebuild.d.ts +37 -0
- package/dist/src/storage/rebuild.d.ts.map +1 -0
- package/dist/src/storage/rebuild.js +353 -0
- package/dist/src/storage/rebuild.js.map +1 -0
- package/dist/src/storage/shadow-swap.d.ts +20 -0
- package/dist/src/storage/shadow-swap.d.ts.map +1 -0
- package/dist/src/storage/shadow-swap.js +163 -0
- package/dist/src/storage/shadow-swap.js.map +1 -0
- package/dist/src/storage/tables.d.ts +77 -0
- package/dist/src/storage/tables.d.ts.map +1 -0
- package/dist/src/storage/tables.js +196 -0
- package/dist/src/storage/tables.js.map +1 -0
- package/package.json +45 -14
- package/index.js +0 -3
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { getBuildInfo } from "../build-info.js";
|
|
2
|
+
import { readAutoCaptureRunSummary, } from "../../capture/observability.js";
|
|
3
|
+
import { loadFeedbackConfig } from "../../cli/feedback/feedback-config.js";
|
|
4
|
+
import { sanitizeProjectLabel } from "../../runtime/legacy-name-guard.js";
|
|
5
|
+
export function buildFriendStatusPayload(deps) {
|
|
6
|
+
const build = getBuildInfo();
|
|
7
|
+
const voyageKey = process.env["VOYAGE_API_KEY"];
|
|
8
|
+
const dataDir = deps.config.data_paths.data_dir;
|
|
9
|
+
let summary;
|
|
10
|
+
try {
|
|
11
|
+
summary = readAutoCaptureRunSummary(dataDir, deps.config.capture.sources);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
summary = { last_run: null, last_success_by_source: {} };
|
|
15
|
+
}
|
|
16
|
+
const last = summary.last_run;
|
|
17
|
+
let captureTotals = { saved: 0, review: 0, quarantined: 0 };
|
|
18
|
+
if (last) {
|
|
19
|
+
for (const counts of Object.values(last.counts_by_source)) {
|
|
20
|
+
if (!counts)
|
|
21
|
+
continue;
|
|
22
|
+
captureTotals.saved += counts.saved;
|
|
23
|
+
captureTotals.review += counts.review;
|
|
24
|
+
captureTotals.quarantined += counts.quarantined ?? 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
let lastEmbedAt = null;
|
|
28
|
+
for (const success of Object.values(summary.last_success_by_source)) {
|
|
29
|
+
if (success && (!lastEmbedAt || success.timestamp > lastEmbedAt)) {
|
|
30
|
+
lastEmbedAt = success.timestamp;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
let relayEnabled = false;
|
|
34
|
+
try {
|
|
35
|
+
relayEnabled = loadFeedbackConfig(dataDir).enabled === true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
relayEnabled = false;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
build,
|
|
42
|
+
daemon: {
|
|
43
|
+
uptime_seconds: Math.floor((Date.now() - deps.startTime) / 1000),
|
|
44
|
+
port: deps.config.server.port,
|
|
45
|
+
voyage_key_present: typeof voyageKey === "string" && voyageKey.length > 0,
|
|
46
|
+
},
|
|
47
|
+
voyage: {
|
|
48
|
+
project_label: sanitizeProjectLabel(deps.config.voyage?.project_label),
|
|
49
|
+
last_embed_at: lastEmbedAt,
|
|
50
|
+
},
|
|
51
|
+
codex: {
|
|
52
|
+
last_preflight_at: last?.timestamp ?? null,
|
|
53
|
+
last_preflight_ok: last ? last.preflight_ok : null,
|
|
54
|
+
},
|
|
55
|
+
capture: {
|
|
56
|
+
last_run_at: last?.timestamp ?? null,
|
|
57
|
+
last_run_ok: last ? last.run_ok : null,
|
|
58
|
+
last_saved: captureTotals.saved,
|
|
59
|
+
last_review: captureTotals.review,
|
|
60
|
+
last_errors: last?.errors.length ?? 0,
|
|
61
|
+
last_quarantined: captureTotals.quarantined,
|
|
62
|
+
},
|
|
63
|
+
feedback: { relay_enabled: relayEnabled },
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function registerFriendStatusRoute(server, deps) {
|
|
67
|
+
server.get("/status/friend", async (_request, reply) => {
|
|
68
|
+
return reply.send(buildFriendStatusPayload(deps));
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=friend-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"friend-status.js","sourceRoot":"","sources":["../../../../src/server/routes/friend-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FastifyInstance } from "fastify";
|
|
2
|
+
import type { JobQueue } from "../../jobs/queue.js";
|
|
3
|
+
import { INGEST_SOURCES } from "../../ingestion/parsers/types.js";
|
|
4
|
+
import { type OperatorOverrideProvider } from "../../providers/operator-overrides.js";
|
|
5
|
+
export interface IngestPayload {
|
|
6
|
+
source: (typeof INGEST_SOURCES)[number];
|
|
7
|
+
filename: string;
|
|
8
|
+
fileData: string;
|
|
9
|
+
idempotency_key?: string;
|
|
10
|
+
/** Override raw storage directory (e.g., "inbox" for inbox-dropped files). */
|
|
11
|
+
rawSource?: string;
|
|
12
|
+
extraction_provider_override?: OperatorOverrideProvider;
|
|
13
|
+
}
|
|
14
|
+
export declare function registerIngestRoute(server: FastifyInstance, queue: JobQueue, multipartLimitBytes: number, extractorAvailable: boolean, dataDir: string): void;
|
|
15
|
+
//# sourceMappingURL=ingest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/ingest.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,EACL,cAAc,EAEf,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAOL,KAAK,wBAAwB,EAC9B,MAAM,uCAAuC,CAAC;AAO/C,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4BAA4B,CAAC,EAAE,wBAAwB,CAAC;CACzD;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,EACf,mBAAmB,EAAE,MAAM,EAC3B,kBAAkB,EAAE,OAAO,EAC3B,OAAO,EAAE,MAAM,GACd,IAAI,CA8IN"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /ingest route — Slice 13: web conversation import.
|
|
3
|
+
*
|
|
4
|
+
* Accepts multipart/form-data with:
|
|
5
|
+
* - source: chatgpt_web | claude_web | grok_web | gemini_web
|
|
6
|
+
* - file: uploaded export (JSON for Gemini staged cards; JSON or zip for
|
|
7
|
+
* sources that support archive ingest)
|
|
8
|
+
* - idempotency_key: optional
|
|
9
|
+
*
|
|
10
|
+
* Creates an async job and returns 202 Accepted with { job_id }.
|
|
11
|
+
*
|
|
12
|
+
* Sources without implemented parsers (no fixtures) are rejected
|
|
13
|
+
* with 400 and an explicit "deferred" message.
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
import { toJobStatusView } from "../../jobs/types.js";
|
|
17
|
+
import { consumeMultipartUpload } from "../middleware/multipart.js";
|
|
18
|
+
import { INGEST_SOURCES, isSourceSupported, } from "../../ingestion/parsers/types.js";
|
|
19
|
+
import { SOURCE_EXTENSIONS } from "../../ingestion/staging.js";
|
|
20
|
+
import { HISTORICAL_BACKFILL_CAPABILITY_HEADER, HISTORICAL_BACKFILL_OVERRIDE_HEADER, INTERNAL_HISTORICAL_INGEST_CODEX_ROUTE, CODEX_CLI_OVERRIDE_PROVIDER, hasHistoricalBackfillCapability, isHistoricalIngestIdempotencyKey, } from "../../providers/operator-overrides.js";
|
|
21
|
+
const IngestFieldsSchema = z.object({
|
|
22
|
+
source: z.enum(INGEST_SOURCES),
|
|
23
|
+
idempotency_key: z.string().optional(),
|
|
24
|
+
});
|
|
25
|
+
export function registerIngestRoute(server, queue, multipartLimitBytes, extractorAvailable, dataDir) {
|
|
26
|
+
const submitIngest = async (request, reply, extractionProviderOverride, requireHistoricalCapability = false) => {
|
|
27
|
+
if (!extractorAvailable) {
|
|
28
|
+
return reply.code(501).send({
|
|
29
|
+
error: "not_configured",
|
|
30
|
+
message: "POST /ingest requires embedding provider (VOYAGE_API_KEY)",
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// --- Consume multipart upload (file + fields) ---
|
|
34
|
+
const upload = await consumeMultipartUpload(request, multipartLimitBytes);
|
|
35
|
+
// --- Validate fields ---
|
|
36
|
+
const parsed = IngestFieldsSchema.safeParse(upload.fields);
|
|
37
|
+
if (!parsed.success) {
|
|
38
|
+
return reply.code(400).send({
|
|
39
|
+
error: "validation_error",
|
|
40
|
+
details: parsed.error.issues,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (extractionProviderOverride === undefined &&
|
|
44
|
+
(request.headers[HISTORICAL_BACKFILL_OVERRIDE_HEADER] !== undefined ||
|
|
45
|
+
request.headers[HISTORICAL_BACKFILL_CAPABILITY_HEADER] !== undefined)) {
|
|
46
|
+
return reply.code(400).send({
|
|
47
|
+
error: "validation_error",
|
|
48
|
+
details: [
|
|
49
|
+
{
|
|
50
|
+
path: [
|
|
51
|
+
request.headers[HISTORICAL_BACKFILL_CAPABILITY_HEADER] !== undefined
|
|
52
|
+
? HISTORICAL_BACKFILL_CAPABILITY_HEADER
|
|
53
|
+
: HISTORICAL_BACKFILL_OVERRIDE_HEADER,
|
|
54
|
+
],
|
|
55
|
+
message: "Historical provider overrides are only allowed through the internal backfill route.",
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (requireHistoricalCapability &&
|
|
61
|
+
!hasHistoricalBackfillCapability(dataDir, request.headers[HISTORICAL_BACKFILL_CAPABILITY_HEADER])) {
|
|
62
|
+
return reply.code(403).send({ error: "forbidden" });
|
|
63
|
+
}
|
|
64
|
+
if (requireHistoricalCapability &&
|
|
65
|
+
!isHistoricalIngestIdempotencyKey(parsed.data.idempotency_key)) {
|
|
66
|
+
return reply.code(400).send({
|
|
67
|
+
error: "validation_error",
|
|
68
|
+
details: [
|
|
69
|
+
{
|
|
70
|
+
path: ["idempotency_key"],
|
|
71
|
+
message: "Historical Codex ingest requires a historical backfill idempotency key.",
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// --- Reject unsupported file formats up front ---
|
|
77
|
+
// The filename is operator-supplied, so detect the extension from it
|
|
78
|
+
// alone (zips with a misleading name are caught later by archive.ts
|
|
79
|
+
// magic-byte detection).
|
|
80
|
+
const ext = extractExtension(upload.file.filename);
|
|
81
|
+
const allowedExtensions = SOURCE_EXTENSIONS[parsed.data.source];
|
|
82
|
+
if (!allowedExtensions.includes(ext)) {
|
|
83
|
+
return reply.code(400).send({
|
|
84
|
+
error: "unsupported_file_format",
|
|
85
|
+
message: `File "${upload.file.filename}" has unsupported extension "${ext}". ` +
|
|
86
|
+
`Allowed for ${parsed.data.source}: ${allowedExtensions.join(", ")}.`,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// --- Check parser availability (fixture gate) ---
|
|
90
|
+
if (!isSourceSupported(parsed.data.source)) {
|
|
91
|
+
return reply.code(400).send({
|
|
92
|
+
error: "source_not_supported",
|
|
93
|
+
message: `Parser for "${parsed.data.source}" is deferred: no real fixture available. Export a real sample to tests/fixtures/exports/${parsed.data.source}/ first.`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
// --- Create job ---
|
|
97
|
+
const payload = {
|
|
98
|
+
source: parsed.data.source,
|
|
99
|
+
filename: upload.file.filename,
|
|
100
|
+
fileData: upload.file.data.toString("base64"),
|
|
101
|
+
...(parsed.data.idempotency_key !== undefined
|
|
102
|
+
? { idempotency_key: parsed.data.idempotency_key }
|
|
103
|
+
: {}),
|
|
104
|
+
...(extractionProviderOverride
|
|
105
|
+
? {
|
|
106
|
+
extraction_provider_override: extractionProviderOverride,
|
|
107
|
+
}
|
|
108
|
+
: {}),
|
|
109
|
+
};
|
|
110
|
+
const opts = {
|
|
111
|
+
payload,
|
|
112
|
+
};
|
|
113
|
+
if (parsed.data.idempotency_key !== undefined) {
|
|
114
|
+
opts.idempotency_key = parsed.data.idempotency_key;
|
|
115
|
+
}
|
|
116
|
+
const result = await queue.create("ingest", opts);
|
|
117
|
+
if ("conflict" in result) {
|
|
118
|
+
return reply.code(409).send({ error: "conflict" });
|
|
119
|
+
}
|
|
120
|
+
if (result.duplicate) {
|
|
121
|
+
return reply.code(200).send({
|
|
122
|
+
job_id: result.job.id,
|
|
123
|
+
duplicate: true,
|
|
124
|
+
...toJobStatusView(result.job),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return reply.code(202).send({ job_id: result.job.id });
|
|
128
|
+
};
|
|
129
|
+
server.post("/ingest", async (request, reply) => submitIngest(request, reply));
|
|
130
|
+
server.post(INTERNAL_HISTORICAL_INGEST_CODEX_ROUTE, async (request, reply) => submitIngest(request, reply, CODEX_CLI_OVERRIDE_PROVIDER, true));
|
|
131
|
+
}
|
|
132
|
+
/** Lower-cased file extension (including the leading dot), or "" if none. */
|
|
133
|
+
function extractExtension(filename) {
|
|
134
|
+
const idx = filename.lastIndexOf(".");
|
|
135
|
+
if (idx < 0 || idx === filename.length - 1)
|
|
136
|
+
return "";
|
|
137
|
+
return filename.slice(idx).toLowerCase();
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=ingest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../../../src/server/routes/ingest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FastifyInstance } from "fastify";
|
|
2
|
+
import type { JobQueue } from "../../jobs/queue.js";
|
|
3
|
+
/**
|
|
4
|
+
* Register job status and cancellation routes.
|
|
5
|
+
*
|
|
6
|
+
* `GET /jobs/:id` — returns job status view (public fields only).
|
|
7
|
+
* `DELETE /jobs/:id` — cancel a queued/interrupted job. 409 if running.
|
|
8
|
+
*/
|
|
9
|
+
export declare function registerJobRoutes(server: FastifyInstance, queue: JobQueue): void;
|
|
10
|
+
//# sourceMappingURL=jobs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,GACd,IAAI,CA2BN"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { toJobStatusView } from "../../jobs/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Register job status and cancellation routes.
|
|
4
|
+
*
|
|
5
|
+
* `GET /jobs/:id` — returns job status view (public fields only).
|
|
6
|
+
* `DELETE /jobs/:id` — cancel a queued/interrupted job. 409 if running.
|
|
7
|
+
*/
|
|
8
|
+
export function registerJobRoutes(server, queue) {
|
|
9
|
+
server.get("/jobs/:id", async (request, reply) => {
|
|
10
|
+
const job = queue.get(request.params.id);
|
|
11
|
+
if (!job) {
|
|
12
|
+
return reply.code(404).send({ error: "job_not_found" });
|
|
13
|
+
}
|
|
14
|
+
return toJobStatusView(job);
|
|
15
|
+
});
|
|
16
|
+
server.delete("/jobs/:id", async (request, reply) => {
|
|
17
|
+
const result = await queue.cancel(request.params.id);
|
|
18
|
+
if (result === undefined) {
|
|
19
|
+
return reply.code(404).send({ error: "job_not_found" });
|
|
20
|
+
}
|
|
21
|
+
if ("conflict" in result) {
|
|
22
|
+
return reply
|
|
23
|
+
.code(409)
|
|
24
|
+
.send({ error: "job_running", message: "Cannot cancel a running job" });
|
|
25
|
+
}
|
|
26
|
+
return toJobStatusView(result);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../../../src/server/routes/jobs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAuB,EACvB,KAAe;IAEf,MAAM,CAAC,GAAG,CACR,WAAW,EACX,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,MAAM,CACX,WAAW,EACX,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,KAAK;iBACT,IAAI,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GET /stats/mcp-usage — unauthenticated MCP tool-call telemetry.
|
|
3
|
+
*
|
|
4
|
+
* SwiftBar pulls this on each tick. Returns per-window call counts +
|
|
5
|
+
* a coarse `tokens_saved` estimate derived from a fixed per-tool table.
|
|
6
|
+
* Mirrors the auth posture of `/health` and `/version` (no token
|
|
7
|
+
* required) — the response carries only call counts and tool names,
|
|
8
|
+
* never user content.
|
|
9
|
+
*/
|
|
10
|
+
import type { FastifyInstance } from "fastify";
|
|
11
|
+
import type { ObservabilityDeps } from "../../observability/coverage.js";
|
|
12
|
+
export declare function registerMcpUsageRoute(server: FastifyInstance, deps: ObservabilityDeps): void;
|
|
13
|
+
//# sourceMappingURL=mcp-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-usage.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/mcp-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAM/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,iBAAiB,GACtB,IAAI,CAYN"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ToolUsageLogger, readToolUsageEntriesTolerant, } from "../../observability/tool-usage.js";
|
|
2
|
+
import { aggregateUsage } from "../../observability/tool-usage-stats.js";
|
|
3
|
+
export function registerMcpUsageRoute(server, deps) {
|
|
4
|
+
server.get("/stats/mcp-usage", async (_request, reply) => {
|
|
5
|
+
try {
|
|
6
|
+
const logger = new ToolUsageLogger(deps.config.data_paths.data_dir);
|
|
7
|
+
const entries = readToolUsageEntriesTolerant(logger.filePath);
|
|
8
|
+
const summary = aggregateUsage(entries, new Date());
|
|
9
|
+
return reply.send(summary);
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
server.log.error({ err }, "mcp-usage route failed");
|
|
13
|
+
return reply.code(500).send({ error: "mcp_usage_unavailable" });
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=mcp-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-usage.js","sourceRoot":"","sources":["../../../../src/server/routes/mcp-usage.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,eAAe,EACf,4BAA4B,GAC7B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGzE,MAAM,UAAU,qBAAqB,CACnC,MAAuB,EACvB,IAAuB;IAEvB,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACvD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/reconcile.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AASpD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,GACd,IAAI,CA+BN"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /reconcile route — Slice 10.
|
|
3
|
+
*
|
|
4
|
+
* Verify index completeness against raw disk files and repair gaps.
|
|
5
|
+
* Async: returns 202 Accepted with { job_id }.
|
|
6
|
+
* Mutually exclusive with compact and reindex -> 409 Conflict.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { toJobStatusView } from "../../jobs/types.js";
|
|
10
|
+
const ReconcileRequestSchema = z
|
|
11
|
+
.object({
|
|
12
|
+
idempotency_key: z.string().optional(),
|
|
13
|
+
})
|
|
14
|
+
.strict();
|
|
15
|
+
export function registerReconcileRoute(server, queue) {
|
|
16
|
+
server.post("/reconcile", async (request, reply) => {
|
|
17
|
+
// Body is entirely optional for reconcile.
|
|
18
|
+
const parsed = ReconcileRequestSchema.safeParse(request.body ?? {});
|
|
19
|
+
if (!parsed.success) {
|
|
20
|
+
return reply.code(400).send({
|
|
21
|
+
error: "validation_error",
|
|
22
|
+
details: parsed.error.issues,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const opts = {};
|
|
26
|
+
if (parsed.data.idempotency_key !== undefined) {
|
|
27
|
+
opts.idempotency_key = parsed.data.idempotency_key;
|
|
28
|
+
}
|
|
29
|
+
const result = await queue.create("reconcile", opts);
|
|
30
|
+
if ("conflict" in result) {
|
|
31
|
+
return reply.code(409).send({ error: "conflict" });
|
|
32
|
+
}
|
|
33
|
+
if (result.duplicate) {
|
|
34
|
+
return reply.code(200).send({
|
|
35
|
+
job_id: result.job.id,
|
|
36
|
+
duplicate: true,
|
|
37
|
+
...toJobStatusView(result.job),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return reply.code(202).send({ job_id: result.job.id });
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../../../src/server/routes/reconcile.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,sBAAsB,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,UAAU,sBAAsB,CACpC,MAAuB,EACvB,KAAe;IAEf,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACjD,2CAA2C;QAC3C,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACpE,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,IAAI,GAAiC,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;QACrD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAErD,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;gBACrB,SAAS,EAAE,IAAI;gBACf,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/reindex.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAYpD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,GACd,IAAI,CAwDN"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /reindex route — Slice 15.
|
|
3
|
+
*
|
|
4
|
+
* Rebuild vector indices from raw files. Async: returns 202 Accepted with { job_id }.
|
|
5
|
+
* Mutually exclusive with compact and reconcile -> 409 Conflict.
|
|
6
|
+
*
|
|
7
|
+
* - `rebuild: false` (default): regenerate embeddings in specified scope
|
|
8
|
+
* - `rebuild: true`: full rebuild via shadow-table swap (only valid with scope: "all")
|
|
9
|
+
*
|
|
10
|
+
* Ordering follows PRD 4.1:
|
|
11
|
+
* 1. Idempotency check (read-only, no job creation)
|
|
12
|
+
* 2. Business logic validation (rebuild + scope constraint)
|
|
13
|
+
* 3. Job creation via queue (handles mutual exclusion)
|
|
14
|
+
*/
|
|
15
|
+
import { z } from "zod";
|
|
16
|
+
import { toJobStatusView } from "../../jobs/types.js";
|
|
17
|
+
const ReindexRequestSchema = z
|
|
18
|
+
.object({
|
|
19
|
+
scope: z.enum(["all", "conversations", "documents", "structured_docs"]),
|
|
20
|
+
rebuild: z.boolean().default(false),
|
|
21
|
+
idempotency_key: z.string().optional(),
|
|
22
|
+
})
|
|
23
|
+
.strict();
|
|
24
|
+
export function registerReindexRoute(server, queue) {
|
|
25
|
+
server.post("/reindex", async (request, reply) => {
|
|
26
|
+
const parsed = ReindexRequestSchema.safeParse(request.body ?? {});
|
|
27
|
+
if (!parsed.success) {
|
|
28
|
+
return reply.code(400).send({
|
|
29
|
+
error: "validation_error",
|
|
30
|
+
details: parsed.error.issues,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
const { scope, rebuild, idempotency_key } = parsed.data;
|
|
34
|
+
// --- Step 1: Idempotency pre-check (PRD 4.1 — checked first) ---
|
|
35
|
+
if (idempotency_key) {
|
|
36
|
+
const existing = queue.findDuplicate(idempotency_key);
|
|
37
|
+
if (existing) {
|
|
38
|
+
return reply.code(200).send({
|
|
39
|
+
job_id: existing.id,
|
|
40
|
+
duplicate: true,
|
|
41
|
+
...toJobStatusView(existing),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// --- Step 2: Business logic validation ---
|
|
46
|
+
if (rebuild && scope !== "all") {
|
|
47
|
+
return reply.code(400).send({
|
|
48
|
+
error: "validation_error",
|
|
49
|
+
details: 'rebuild: true is only valid when scope is "all"',
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
// --- Step 3: Create job (handles mutual exclusion + persistence) ---
|
|
53
|
+
const payload = { scope, rebuild };
|
|
54
|
+
const opts = {
|
|
55
|
+
payload,
|
|
56
|
+
};
|
|
57
|
+
if (idempotency_key !== undefined) {
|
|
58
|
+
opts.idempotency_key = idempotency_key;
|
|
59
|
+
}
|
|
60
|
+
const result = await queue.create("reindex", opts);
|
|
61
|
+
if ("conflict" in result) {
|
|
62
|
+
return reply.code(409).send({ error: "conflict" });
|
|
63
|
+
}
|
|
64
|
+
if (result.duplicate) {
|
|
65
|
+
return reply.code(200).send({
|
|
66
|
+
job_id: result.job.id,
|
|
67
|
+
duplicate: true,
|
|
68
|
+
...toJobStatusView(result.job),
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
return reply.code(202).send({ job_id: result.job.id });
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=reindex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../../src/server/routes/reindex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { FastifyInstance } from "fastify";
|
|
3
|
+
import type { JobQueue } from "../../jobs/queue.js";
|
|
4
|
+
declare const SaveRequestSchema: z.ZodObject<{
|
|
5
|
+
source: z.ZodEnum<["claude_code", "gemini_cli", "codex_cli"]>;
|
|
6
|
+
summary: z.ZodString;
|
|
7
|
+
/** Full conversation text — used for embedding and search when provided. */
|
|
8
|
+
content: z.ZodOptional<z.ZodString>;
|
|
9
|
+
domain: z.ZodOptional<z.ZodEnum<["business", "tech", "personal", "travel", "health", "finance", "creative"]>>;
|
|
10
|
+
decisions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
|
+
key_outputs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
|
+
topics: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
|
+
idempotency_key: z.ZodOptional<z.ZodString>;
|
|
14
|
+
/** When re-saving an updated conversation, the old key whose row should be replaced. */
|
|
15
|
+
replace_idempotency_key: z.ZodOptional<z.ZodString>;
|
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
|
17
|
+
summary: string;
|
|
18
|
+
source: "claude_code" | "codex_cli" | "gemini_cli";
|
|
19
|
+
content?: string | undefined;
|
|
20
|
+
idempotency_key?: string | undefined;
|
|
21
|
+
domain?: "business" | "tech" | "personal" | "travel" | "health" | "finance" | "creative" | undefined;
|
|
22
|
+
topics?: string[] | undefined;
|
|
23
|
+
decisions?: string[] | undefined;
|
|
24
|
+
key_outputs?: string[] | undefined;
|
|
25
|
+
replace_idempotency_key?: string | undefined;
|
|
26
|
+
}, {
|
|
27
|
+
summary: string;
|
|
28
|
+
source: "claude_code" | "codex_cli" | "gemini_cli";
|
|
29
|
+
content?: string | undefined;
|
|
30
|
+
idempotency_key?: string | undefined;
|
|
31
|
+
domain?: "business" | "tech" | "personal" | "travel" | "health" | "finance" | "creative" | undefined;
|
|
32
|
+
topics?: string[] | undefined;
|
|
33
|
+
decisions?: string[] | undefined;
|
|
34
|
+
key_outputs?: string[] | undefined;
|
|
35
|
+
replace_idempotency_key?: string | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
export type SavePayload = z.infer<typeof SaveRequestSchema>;
|
|
38
|
+
export declare function registerSaveRoute(server: FastifyInstance, queue: JobQueue): void;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=save.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/save.ts"],"names":[],"mappings":"AAiBA,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;AAIpD,QAAA,MAAM,iBAAiB;;;IAGrB,4EAA4E;;;;;;;IAiB5E,wFAAwF;;;;;;;;;;;;;;;;;;;;;;EAExF,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAuB5D,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,QAAQ,GACd,IAAI,CAqDN"}
|