@getrift/rift 0.0.0 → 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.dev.md +110 -0
- package/README.md +130 -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/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 +742 -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/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 +66 -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
package/dist/src/main.js
ADDED
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { loadConfig } from "./config/loader.js";
|
|
4
|
+
import { buildApp } from "./server/app.js";
|
|
5
|
+
import { registerShutdownHandlers } from "./server/lifecycle.js";
|
|
6
|
+
import { macKeychain } from "./auth/keychain.js";
|
|
7
|
+
import { TokenManager } from "./auth/rotation.js";
|
|
8
|
+
import { JobQueue } from "./jobs/queue.js";
|
|
9
|
+
import { WorkerPool, createWorkerHandler } from "./jobs/worker-process.js";
|
|
10
|
+
import { createCodexOverrideAwareHandler } from "./jobs/codex-override-handler.js";
|
|
11
|
+
import { createIngestHandler } from "./jobs/handlers/ingest.js";
|
|
12
|
+
import { createTriageHandler } from "./jobs/handlers/triage.js";
|
|
13
|
+
import { initTables, closeTables } from "./storage/tables.js";
|
|
14
|
+
import { checkIntegrity } from "./storage/integrity.js";
|
|
15
|
+
import { Watcher } from "./ingestion/watcher.js";
|
|
16
|
+
import { Indexer } from "./ingestion/indexer.js";
|
|
17
|
+
import { Scanner } from "./ingestion/scanner.js";
|
|
18
|
+
import { buildIgnoredPaths } from "./ingestion/ignored-paths.js";
|
|
19
|
+
import { createInboxWatcher } from "./ingestion/inbox-watcher.js";
|
|
20
|
+
import { watcherStartupDisabled as watcherStartupDisabledFromEnv } from "./runtime/watcher-startup.js";
|
|
21
|
+
import { loadRiftEnv } from "./runtime/rift-env.js";
|
|
22
|
+
import { runLegacyMigration } from "./runtime/legacy-migration.js";
|
|
23
|
+
import { VoyageEmbeddingProvider } from "./providers/voyage.js";
|
|
24
|
+
import { OllamaEmbeddingProvider } from "./providers/ollama-embed.js";
|
|
25
|
+
import { checkOllamaHealth } from "./providers/ollama.js";
|
|
26
|
+
import { createDaemonConversationGenerationProviders } from "./providers/conversation-generation.js";
|
|
27
|
+
import { setDefaultTriageProvider } from "./capture/triage.js";
|
|
28
|
+
import { CodexCliTriageProvider } from "./capture/codex-cli-triage-provider.js";
|
|
29
|
+
import { generateCapabilityMap, getCapabilityCounts, writeRiftContext, } from "./observability/rift-context.js";
|
|
30
|
+
import { getBuildInfo } from "./server/build-info.js";
|
|
31
|
+
const configPath = process.argv[2];
|
|
32
|
+
if (!configPath) {
|
|
33
|
+
process.stderr.write("Usage: rift <config-path>\n");
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const absoluteConfigPath = path.resolve(configPath);
|
|
37
|
+
const config = loadConfig(absoluteConfigPath);
|
|
38
|
+
// Run hidden legacy migration BEFORE loadRiftEnv so the env loader never
|
|
39
|
+
// resolves to the legacy path on a machine carrying pre-rename state.
|
|
40
|
+
// Idempotent — no-op on a clean Mac, and on second boot.
|
|
41
|
+
try {
|
|
42
|
+
await runLegacyMigration({ dataDir: config.data_paths.data_dir });
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
process.stderr.write(`Legacy migration failed (non-fatal): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
46
|
+
}
|
|
47
|
+
const envLoadResult = loadRiftEnv();
|
|
48
|
+
if (envLoadResult.loadedKeys.length > 0) {
|
|
49
|
+
process.stderr.write(`Loaded ${envLoadResult.loadedKeys.length} runtime secret(s).\n`);
|
|
50
|
+
}
|
|
51
|
+
const tokenManager = new TokenManager(macKeychain);
|
|
52
|
+
await tokenManager.load();
|
|
53
|
+
const queuePath = path.join(config.data_paths.jobs_dir, "queue.json");
|
|
54
|
+
const jobQueue = new JobQueue(queuePath);
|
|
55
|
+
await jobQueue.load();
|
|
56
|
+
// Hold processing so recovered jobs don't execute before the startup
|
|
57
|
+
// integrity check completes. Released after initTables + rebuild enqueue.
|
|
58
|
+
jobQueue.hold();
|
|
59
|
+
// --- Cloud embedding provider (needed for search + cloud watchers) ---
|
|
60
|
+
const hasCloudSources = config.sources.some((s) => s.extraction !== "local");
|
|
61
|
+
const voyageApiKey = process.env["VOYAGE_API_KEY"];
|
|
62
|
+
if (hasCloudSources && !voyageApiKey) {
|
|
63
|
+
process.stderr.write("VOYAGE_API_KEY environment variable required (cloud sources configured)\n");
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
let embeddingProvider;
|
|
67
|
+
if (voyageApiKey) {
|
|
68
|
+
const cachePath = path.join(config.data_paths.data_dir, "embeddings");
|
|
69
|
+
embeddingProvider = new VoyageEmbeddingProvider({
|
|
70
|
+
apiKey: voyageApiKey,
|
|
71
|
+
model: config.embedding.model,
|
|
72
|
+
cachePath,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
process.stderr.write("Running in local-only mode (no VOYAGE_API_KEY — cloud features disabled)\n");
|
|
77
|
+
}
|
|
78
|
+
// --- Ollama providers (for extraction: "local" sources) ---
|
|
79
|
+
const localSources = config.sources.filter((s) => s.extraction === "local");
|
|
80
|
+
let ollamaEmbedding;
|
|
81
|
+
if (localSources.length > 0) {
|
|
82
|
+
await checkOllamaHealth();
|
|
83
|
+
ollamaEmbedding = new OllamaEmbeddingProvider({
|
|
84
|
+
cachePath: path.join(config.data_paths.data_dir, "embeddings-local"),
|
|
85
|
+
});
|
|
86
|
+
process.stderr.write(`Ollama providers initialized for ${localSources.length} local source(s)\n`);
|
|
87
|
+
}
|
|
88
|
+
const conversationProviders = await createDaemonConversationGenerationProviders(config);
|
|
89
|
+
const metadataExtractor = conversationProviders.metadataExtractor;
|
|
90
|
+
const digestSummarizer = conversationProviders.digestSummarizer;
|
|
91
|
+
process.stderr.write(conversationProviders.usingLocalGeneration
|
|
92
|
+
? "Local generation enabled for conversation metadata extraction and digests\n"
|
|
93
|
+
: "Cloud generation routed through Codex CLI for metadata extraction and digests\n");
|
|
94
|
+
// --- Worker pool (heavy jobs run in child processes) ---
|
|
95
|
+
const workerEntryPoint = path.resolve(path.dirname(new URL(import.meta.url).pathname), "jobs", "worker-entry.js");
|
|
96
|
+
const workerPool = new WorkerPool(workerEntryPoint, absoluteConfigPath);
|
|
97
|
+
// Declare watchers + scanner early so buildApp can capture the reference.
|
|
98
|
+
const watchers = [];
|
|
99
|
+
const scanSources = config.sources.filter((s) => s.mode === "scheduled_scan");
|
|
100
|
+
const scanner = scanSources.length > 0
|
|
101
|
+
? new Scanner(config.data_paths.data_dir)
|
|
102
|
+
: null;
|
|
103
|
+
const watcherStartupDisabled = watcherStartupDisabledFromEnv();
|
|
104
|
+
// --- Register worker-wrapped handlers BEFORE buildApp ---
|
|
105
|
+
// Heavy jobs run in child processes; parent handles queue + watcher
|
|
106
|
+
// coordination. Registering before buildApp ensures:
|
|
107
|
+
// 1. buildApp's hasHandler() checks see worker handlers, skip fallbacks
|
|
108
|
+
// 2. Recovered jobs from queue.load() don't execute in-process
|
|
109
|
+
jobQueue.registerHandler("save", createWorkerHandler(workerPool, "save", absoluteConfigPath, watchers, scanner, jobQueue));
|
|
110
|
+
// Ingest is always available in the queue. Worker-side provider selection is
|
|
111
|
+
// config-driven, and VOYAGE_API_KEY is still validated at job execution time.
|
|
112
|
+
const workerIngestHandler = createWorkerHandler(workerPool, "ingest", absoluteConfigPath, watchers, scanner, jobQueue);
|
|
113
|
+
const codexOverrideIngestHandler = embeddingProvider
|
|
114
|
+
? createIngestHandler({
|
|
115
|
+
embeddingProvider,
|
|
116
|
+
metadataExtractor,
|
|
117
|
+
dataDir: config.data_paths.data_dir,
|
|
118
|
+
queue: jobQueue,
|
|
119
|
+
})
|
|
120
|
+
: null;
|
|
121
|
+
jobQueue.registerHandler("ingest", codexOverrideIngestHandler
|
|
122
|
+
? createCodexOverrideAwareHandler(workerIngestHandler, codexOverrideIngestHandler)
|
|
123
|
+
: workerIngestHandler);
|
|
124
|
+
if (digestSummarizer) {
|
|
125
|
+
jobQueue.registerHandler("compact", createWorkerHandler(workerPool, "compact", absoluteConfigPath, watchers, scanner, jobQueue));
|
|
126
|
+
}
|
|
127
|
+
jobQueue.registerHandler("reindex", createWorkerHandler(workerPool, "reindex", absoluteConfigPath, watchers, scanner, jobQueue));
|
|
128
|
+
jobQueue.registerHandler("reconcile", createWorkerHandler(workerPool, "reconcile", absoluteConfigPath, watchers, scanner, jobQueue));
|
|
129
|
+
const workerTriageHandler = createWorkerHandler(workerPool, "triage", absoluteConfigPath, watchers, scanner, jobQueue);
|
|
130
|
+
jobQueue.registerHandler("triage", createCodexOverrideAwareHandler(workerTriageHandler, createTriageHandler({
|
|
131
|
+
dataDir: config.data_paths.data_dir,
|
|
132
|
+
openai: config.openai,
|
|
133
|
+
})));
|
|
134
|
+
// Auto-capture (in-process) calls triageConversation() directly. Use the
|
|
135
|
+
// operator's authenticated Codex CLI runtime instead of a separate OpenAI
|
|
136
|
+
// Keychain secret.
|
|
137
|
+
setDefaultTriageProvider(new CodexCliTriageProvider());
|
|
138
|
+
const { server, markReady } = await buildApp(config, tokenManager, jobQueue, embeddingProvider, watchers, scanner, digestSummarizer, metadataExtractor, ollamaEmbedding);
|
|
139
|
+
registerShutdownHandlers(server, {
|
|
140
|
+
onShutdown: () => workerPool.shutdown(),
|
|
141
|
+
});
|
|
142
|
+
// SIGHUP reloads tokens from Keychain so CLI-issued tokens become
|
|
143
|
+
// usable without a full daemon restart. noGrace ensures the new token
|
|
144
|
+
// is the sole active credential (PRD: no grace overlap on token issue).
|
|
145
|
+
process.on("SIGHUP", () => {
|
|
146
|
+
tokenManager
|
|
147
|
+
.reload({ noGrace: true })
|
|
148
|
+
.then(() => {
|
|
149
|
+
process.stderr.write("Reloaded auth tokens from Keychain\n");
|
|
150
|
+
})
|
|
151
|
+
.catch((err) => {
|
|
152
|
+
process.stderr.write(`Failed to reload tokens: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
await server.listen({ host: config.server.host, port: config.server.port });
|
|
156
|
+
// --- Startup integrity check (runs BEFORE initTables to detect corruption) ---
|
|
157
|
+
const integrity = await checkIntegrity(config.data_paths.data_dir);
|
|
158
|
+
// Close the connection used by integrity check so initTables gets a fresh state.
|
|
159
|
+
const { closeConnection: closeConn, resetConnectionRef: resetConn } = await import("./storage/db.js");
|
|
160
|
+
closeConn();
|
|
161
|
+
resetConn();
|
|
162
|
+
// --- Initialize storage and ingestion pipeline ---
|
|
163
|
+
await initTables(config.data_paths.data_dir);
|
|
164
|
+
if (!integrity.healthy) {
|
|
165
|
+
process.stderr.write(`Startup integrity check: corruption detected in [${integrity.corruptTables.join(", ")}]. Auto-triggering rebuild.\n`);
|
|
166
|
+
// Use createUrgent to bypass the exclusivity gate and insert at
|
|
167
|
+
// the front of the queue. Other queued exclusive jobs (recovered or
|
|
168
|
+
// legitimate) naturally wait — one-at-a-time processing means they
|
|
169
|
+
// run after the rebuild against healthy storage.
|
|
170
|
+
const rebuildResult = await jobQueue.createUrgent("reindex", {
|
|
171
|
+
payload: { scope: "all", rebuild: true },
|
|
172
|
+
});
|
|
173
|
+
process.stderr.write(`Startup rebuild enqueued as job ${rebuildResult.job.id}\n`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
process.stderr.write("Startup integrity check: all tables healthy\n");
|
|
177
|
+
}
|
|
178
|
+
// Integrity check done + tables initialized — safe to process jobs.
|
|
179
|
+
jobQueue.releaseHold();
|
|
180
|
+
// --- Source ownership helper (longest-prefix match) ---
|
|
181
|
+
// Used by watcher + scan loops to route files to the correct provider
|
|
182
|
+
// when source roots overlap or nest (e.g., cloud=/docs + local=/docs/private).
|
|
183
|
+
function findOwningSource(filePath) {
|
|
184
|
+
let best;
|
|
185
|
+
let bestLen = 0;
|
|
186
|
+
for (const s of config.sources) {
|
|
187
|
+
if (filePath.startsWith(s.path) && s.path.length > bestLen) {
|
|
188
|
+
best = s;
|
|
189
|
+
bestLen = s.path.length;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return best;
|
|
193
|
+
}
|
|
194
|
+
function buildWatcherIgnoredPaths(source) {
|
|
195
|
+
return buildIgnoredPaths(source, config.data_paths);
|
|
196
|
+
}
|
|
197
|
+
// --- File watchers (mode: "watch") ---
|
|
198
|
+
const watchSources = config.sources.filter((s) => s.mode === "watch");
|
|
199
|
+
if (watcherStartupDisabled) {
|
|
200
|
+
process.stderr.write("Watcher startup disabled by RIFT_DISABLE_WATCHERS=1\n");
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
for (const source of watchSources) {
|
|
204
|
+
// Select embedding provider based on extraction mode.
|
|
205
|
+
const embedding = source.extraction === "local" && ollamaEmbedding
|
|
206
|
+
? ollamaEmbedding
|
|
207
|
+
: embeddingProvider;
|
|
208
|
+
if (!embedding) {
|
|
209
|
+
process.stderr.write(`Skipping watcher for ${source.path}: no embedding provider available\n`);
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const indexer = new Indexer(embedding, {
|
|
213
|
+
sourceType: "filesystem_watched",
|
|
214
|
+
sourceScope: source.scope,
|
|
215
|
+
clientName: source.client_name ?? "",
|
|
216
|
+
allowedRoots: [source.path],
|
|
217
|
+
...(source.extraction === "local" ? { tableName: "structured_docs_local" } : {}),
|
|
218
|
+
});
|
|
219
|
+
// Wrap handler to skip files owned by a more-specific source root.
|
|
220
|
+
// Without this, a cloud watcher on /docs would also index files under
|
|
221
|
+
// /docs/private (a nested local source), leaking local content to cloud.
|
|
222
|
+
const handler = (event) => {
|
|
223
|
+
const owner = findOwningSource(event.path);
|
|
224
|
+
if (owner && owner.path !== source.path)
|
|
225
|
+
return Promise.resolve();
|
|
226
|
+
return indexer.handleEvent(event);
|
|
227
|
+
};
|
|
228
|
+
const watcher = new Watcher([source.path], handler, {
|
|
229
|
+
ignoredPaths: buildWatcherIgnoredPaths(source),
|
|
230
|
+
});
|
|
231
|
+
await watcher.start();
|
|
232
|
+
watchers.push(watcher);
|
|
233
|
+
}
|
|
234
|
+
if (watchers.length > 0) {
|
|
235
|
+
process.stderr.write(`Started ${watchers.length} file watcher(s)\n`);
|
|
236
|
+
}
|
|
237
|
+
// --- Inbox watcher ---
|
|
238
|
+
if (jobQueue.hasHandler("ingest")) {
|
|
239
|
+
const inboxWatcher = createInboxWatcher({
|
|
240
|
+
dataDir: config.data_paths.data_dir,
|
|
241
|
+
queue: jobQueue,
|
|
242
|
+
});
|
|
243
|
+
await inboxWatcher.start();
|
|
244
|
+
watchers.push(inboxWatcher);
|
|
245
|
+
process.stderr.write("Inbox watcher started\n");
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// --- Scheduled scan (mode: "scheduled_scan") ---
|
|
249
|
+
let scanInterval = null;
|
|
250
|
+
const scanIntervalSeconds = config.scan.interval_seconds;
|
|
251
|
+
const scanIntervalMs = scanIntervalSeconds * 1000;
|
|
252
|
+
if (config.cron.cron_enabled && scanSources.length > 0 && scanner) {
|
|
253
|
+
const scanDirs = scanSources.map((s) => s.path);
|
|
254
|
+
// Union ignored paths across all scheduled_scan sources. `walkDirectory`
|
|
255
|
+
// uses prefix matching, so paths outside a given root are no-ops for
|
|
256
|
+
// that root — the flat list is safe across sources.
|
|
257
|
+
const scanIgnoredPaths = Array.from(new Set(scanSources.flatMap((s) => buildIgnoredPaths(s, config.data_paths))));
|
|
258
|
+
const runScan = async () => {
|
|
259
|
+
if (scanner.isPaused)
|
|
260
|
+
return;
|
|
261
|
+
try {
|
|
262
|
+
const result = await scanner.scan(scanDirs, { ignoredPaths: scanIgnoredPaths });
|
|
263
|
+
for (const event of result.events) {
|
|
264
|
+
// Use longest-prefix match across ALL sources so files under a
|
|
265
|
+
// nested source root (e.g., local=/docs/private under cloud=/docs)
|
|
266
|
+
// are attributed to the most-specific owner.
|
|
267
|
+
const owner = findOwningSource(event.path);
|
|
268
|
+
if (!owner || owner.mode !== "scheduled_scan")
|
|
269
|
+
continue;
|
|
270
|
+
const embedding = owner.extraction === "local" && ollamaEmbedding
|
|
271
|
+
? ollamaEmbedding
|
|
272
|
+
: embeddingProvider;
|
|
273
|
+
if (!embedding)
|
|
274
|
+
continue;
|
|
275
|
+
const indexer = new Indexer(embedding, {
|
|
276
|
+
sourceType: "filesystem_scheduled_scan",
|
|
277
|
+
sourceScope: owner.scope,
|
|
278
|
+
clientName: owner.client_name ?? "",
|
|
279
|
+
allowedRoots: [owner.path],
|
|
280
|
+
...(owner.extraction === "local" ? { tableName: "structured_docs_local" } : {}),
|
|
281
|
+
});
|
|
282
|
+
await indexer.handleEvent(event);
|
|
283
|
+
}
|
|
284
|
+
scanner.setNextScan(new Date(Date.now() + scanIntervalMs).toISOString());
|
|
285
|
+
}
|
|
286
|
+
catch (err) {
|
|
287
|
+
process.stderr.write(`Scan error: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
if (scanner.isDue(scanIntervalSeconds)) {
|
|
291
|
+
process.stderr.write("Scheduled scan overdue — running catch-up scan\n");
|
|
292
|
+
void runScan();
|
|
293
|
+
}
|
|
294
|
+
scanInterval = setInterval(() => void runScan(), scanIntervalMs);
|
|
295
|
+
scanner.setNextScan(new Date(Date.now() + scanIntervalMs).toISOString());
|
|
296
|
+
process.stderr.write(`Scheduled scan enabled for ${scanSources.length} source(s) (interval: ${scanIntervalSeconds}s)\n`);
|
|
297
|
+
}
|
|
298
|
+
// --- Automatic capture (local CLI conversations) ---
|
|
299
|
+
let captureInterval = null;
|
|
300
|
+
if (config.capture.enabled) {
|
|
301
|
+
const { runAutoCapture, zeroCounts, buildDaemonAutoCaptureDeps } = await import("./capture/auto-capture.js");
|
|
302
|
+
const { appendAutoCaptureRunRecord, buildAutoCaptureRunRecord, } = await import("./capture/observability.js");
|
|
303
|
+
const captureIntervalMs = config.capture.interval_seconds * 1000;
|
|
304
|
+
const runCapture = async () => {
|
|
305
|
+
const startedAt = new Date();
|
|
306
|
+
try {
|
|
307
|
+
const report = await runAutoCapture(buildDaemonAutoCaptureDeps({
|
|
308
|
+
config,
|
|
309
|
+
saveFn: async (opts) => {
|
|
310
|
+
const result = await jobQueue.create("save", {
|
|
311
|
+
idempotency_key: opts.idempotency_key,
|
|
312
|
+
payload: {
|
|
313
|
+
source: opts.source,
|
|
314
|
+
summary: opts.summary,
|
|
315
|
+
content: opts.content,
|
|
316
|
+
topics: opts.topics,
|
|
317
|
+
domain: opts.domain,
|
|
318
|
+
idempotency_key: opts.idempotency_key,
|
|
319
|
+
replace_idempotency_key: opts.replace_idempotency_key,
|
|
320
|
+
},
|
|
321
|
+
});
|
|
322
|
+
if ("conflict" in result) {
|
|
323
|
+
throw new Error("Job queue conflict during auto-capture save");
|
|
324
|
+
}
|
|
325
|
+
// Wait for job to reach a terminal state so auto-capture only
|
|
326
|
+
// marks the conversation as processed after a confirmed save.
|
|
327
|
+
// If the job fails, this throws, and auto-capture's per-session
|
|
328
|
+
// error handler skips persisting state — the conversation will
|
|
329
|
+
// be retried on the next capture run.
|
|
330
|
+
const jobId = result.job.id;
|
|
331
|
+
const maxWaitMs = 120_000;
|
|
332
|
+
const pollMs = 250;
|
|
333
|
+
const start = Date.now();
|
|
334
|
+
while (Date.now() - start < maxWaitMs) {
|
|
335
|
+
const j = jobQueue.get(jobId);
|
|
336
|
+
if (!j)
|
|
337
|
+
return; // Pruned — treat as success
|
|
338
|
+
if (j.status === "completed")
|
|
339
|
+
return;
|
|
340
|
+
if (j.status === "failed") {
|
|
341
|
+
throw new Error(`Save job failed: ${j.error ?? "unknown"}`);
|
|
342
|
+
}
|
|
343
|
+
await new Promise((r) => setTimeout(r, pollMs));
|
|
344
|
+
}
|
|
345
|
+
throw new Error("Save job timed out");
|
|
346
|
+
},
|
|
347
|
+
}));
|
|
348
|
+
const durationMs = Date.now() - startedAt.getTime();
|
|
349
|
+
await appendAutoCaptureRunRecord(config.data_paths.data_dir, buildAutoCaptureRunRecord({
|
|
350
|
+
timestamp: startedAt.toISOString(),
|
|
351
|
+
enabledSources: config.capture.sources,
|
|
352
|
+
durationMs,
|
|
353
|
+
report,
|
|
354
|
+
}));
|
|
355
|
+
process.stderr.write(`Auto-capture: ${report.saved} saved, ${report.review} review, ${report.discarded} discarded, ${report.errors} errors, ${report.new_conversations} new, ${durationMs}ms\n`);
|
|
356
|
+
}
|
|
357
|
+
catch (err) {
|
|
358
|
+
const error = err instanceof Error ? err.message : String(err);
|
|
359
|
+
try {
|
|
360
|
+
await appendAutoCaptureRunRecord(config.data_paths.data_dir, {
|
|
361
|
+
timestamp: startedAt.toISOString(),
|
|
362
|
+
enabled_sources: config.capture.sources,
|
|
363
|
+
run_ok: false,
|
|
364
|
+
preflight_ok: true,
|
|
365
|
+
duration_ms: Date.now() - startedAt.getTime(),
|
|
366
|
+
counts_by_source: Object.fromEntries(config.capture.sources.map((source) => [source, zeroCounts()])),
|
|
367
|
+
errors: [{
|
|
368
|
+
sessionId: "run",
|
|
369
|
+
error,
|
|
370
|
+
}],
|
|
371
|
+
run_error: error,
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
catch (observabilityErr) {
|
|
375
|
+
process.stderr.write(`Auto-capture observability append failed: ${observabilityErr instanceof Error ? observabilityErr.message : String(observabilityErr)}\n`);
|
|
376
|
+
}
|
|
377
|
+
process.stderr.write(`Auto-capture error: ${error}\n`);
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
// Run once at startup (after tables are ready)
|
|
381
|
+
void runCapture();
|
|
382
|
+
captureInterval = setInterval(() => void runCapture(), captureIntervalMs);
|
|
383
|
+
process.stderr.write(`Auto-capture enabled for ${config.capture.sources.join(", ")} (interval: ${config.capture.interval_seconds}s)\n`);
|
|
384
|
+
}
|
|
385
|
+
// Write PID file so the CLI can find and signal this process.
|
|
386
|
+
const pidPath = path.join(config.data_paths.data_dir, "rift.pid");
|
|
387
|
+
fs.writeFileSync(pidPath, String(process.pid));
|
|
388
|
+
// Clean up PID file, auth timers, watchers, scan interval, and tables on exit.
|
|
389
|
+
// Worker pool is shut down via registerShutdownHandlers' onShutdown hook
|
|
390
|
+
// (runs before process.exit, so the 3s SIGKILL escalation works).
|
|
391
|
+
process.on("exit", () => {
|
|
392
|
+
if (scanInterval)
|
|
393
|
+
clearInterval(scanInterval);
|
|
394
|
+
if (captureInterval)
|
|
395
|
+
clearInterval(captureInterval);
|
|
396
|
+
tokenManager.shutdown();
|
|
397
|
+
for (const w of watchers) {
|
|
398
|
+
void w.stop();
|
|
399
|
+
}
|
|
400
|
+
closeTables();
|
|
401
|
+
try {
|
|
402
|
+
fs.unlinkSync(pidPath);
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
// Best-effort — process is exiting.
|
|
406
|
+
}
|
|
407
|
+
});
|
|
408
|
+
const buildInfo = getBuildInfo();
|
|
409
|
+
process.stderr.write(`rift ${buildInfo.version} (commit ${buildInfo.commit.slice(0, 12)}, node ${buildInfo.node}) listening on ${config.server.host}:${config.server.port}\n`);
|
|
410
|
+
// Regenerate the on-disk capability map at boot so a fresh daemon always
|
|
411
|
+
// advertises the current tool surface, independent of whether /status is
|
|
412
|
+
// ever hit. Before this, `data/rift-context.md` only refreshed as a side
|
|
413
|
+
// effect of GET /status, leaving newly-shipped tools (e.g. rift_context_pack)
|
|
414
|
+
// missing from the map right after a deploy. Best-effort: writeRiftContext
|
|
415
|
+
// already swallows and logs its own failures.
|
|
416
|
+
try {
|
|
417
|
+
const counts = await getCapabilityCounts();
|
|
418
|
+
const capabilityMap = generateCapabilityMap(counts);
|
|
419
|
+
await writeRiftContext(config.data_paths.data_dir, capabilityMap);
|
|
420
|
+
}
|
|
421
|
+
catch (err) {
|
|
422
|
+
process.stderr.write(`Boot capability-map regeneration failed (non-fatal): ${err instanceof Error ? err.message : String(err)}\n`);
|
|
423
|
+
}
|
|
424
|
+
markReady();
|
|
425
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,kCAAkC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,sBAAsB,IAAI,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,2CAA2C,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,CAAC,UAAU,EAAE,CAAC;IAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACpD,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC,CAAC;AAE9C,yEAAyE;AACzE,sEAAsE;AACtE,yDAAyD;AACzD,IAAI,CAAC;IACH,MAAM,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpE,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7F,CAAC;AACJ,CAAC;AAED,MAAM,aAAa,GAAG,WAAW,EAAE,CAAC;AACpC,IAAI,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,aAAa,CAAC,UAAU,CAAC,MAAM,uBAAuB,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;AACnD,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;AAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtE,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;AACzC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;AAEtB,qEAAqE;AACrE,0EAA0E;AAC1E,QAAQ,CAAC,IAAI,EAAE,CAAC;AAEhB,wEAAwE;AACxE,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CACzC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAC3C,CAAC;AACF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEnD,IAAI,eAAe,IAAI,CAAC,YAAY,EAAE,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2EAA2E,CAC5E,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,iBAAgD,CAAC;AACrD,IAAI,YAAY,EAAE,CAAC;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtE,iBAAiB,GAAG,IAAI,uBAAuB,CAAC;QAC9C,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;QAC7B,SAAS;KACV,CAAC,CAAC;AACL,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4EAA4E,CAC7E,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACxC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAC3C,CAAC;AACF,IAAI,eAA8C,CAAC;AAEnD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;IAC5B,MAAM,iBAAiB,EAAE,CAAC;IAC1B,eAAe,GAAG,IAAI,uBAAuB,CAAC;QAC5C,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,CAAC;KACrE,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oCAAoC,YAAY,CAAC,MAAM,oBAAoB,CAC5E,CAAC;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAG,MAAM,2CAA2C,CAC7E,MAAM,CACP,CAAC;AACF,MAAM,iBAAiB,GAAsB,qBAAqB,CAAC,iBAAiB,CAAC;AACrF,MAAM,gBAAgB,GAAiC,qBAAqB,CAAC,gBAAgB,CAAC;AAE9F,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,CAAC,oBAAoB;IACxC,CAAC,CAAC,6EAA6E;IAC/E,CAAC,CAAC,iFAAiF,CACtF,CAAC;AAEF,0DAA0D;AAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CACnC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAC/C,MAAM,EACN,iBAAiB,CAClB,CAAC;AACF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;AAExE,0EAA0E;AAC1E,MAAM,QAAQ,GAAc,EAAE,CAAC;AAE/B,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACvC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAC9C,CAAC;AACF,MAAM,OAAO,GACX,WAAW,CAAC,MAAM,GAAG,CAAC;IACpB,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;IACzC,CAAC,CAAC,IAAI,CAAC;AACX,MAAM,sBAAsB,GAAG,6BAA6B,EAAE,CAAC;AAE/D,2DAA2D;AAC3D,oEAAoE;AACpE,qDAAqD;AACrD,wEAAwE;AACxE,+DAA+D;AAC/D,QAAQ,CAAC,eAAe,CACtB,MAAM,EACN,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CACzF,CAAC;AAEF,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,mBAAmB,GAAG,mBAAmB,CAC7C,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,QAAQ,CACT,CAAC;AACF,MAAM,0BAA0B,GAAG,iBAAiB;IAClD,CAAC,CAAC,mBAAmB,CAAC;QAClB,iBAAiB;QACjB,iBAAiB;QACjB,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;QACnC,KAAK,EAAE,QAAQ;KAChB,CAAC;IACJ,CAAC,CAAC,IAAI,CAAC;AACT,QAAQ,CAAC,eAAe,CACtB,QAAQ,EACR,0BAA0B;IACxB,CAAC,CAAC,+BAA+B,CAC7B,mBAAmB,EACnB,0BAA0B,CAC3B;IACH,CAAC,CAAC,mBAAmB,CACxB,CAAC;AAEF,IAAI,gBAAgB,EAAE,CAAC;IACrB,QAAQ,CAAC,eAAe,CACtB,SAAS,EACT,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC5F,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,eAAe,CACtB,SAAS,EACT,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC5F,CAAC;AAEF,QAAQ,CAAC,eAAe,CACtB,WAAW,EACX,mBAAmB,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAC9F,CAAC;AAEF,MAAM,mBAAmB,GAAG,mBAAmB,CAC7C,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,QAAQ,CACT,CAAC;AACF,QAAQ,CAAC,eAAe,CACtB,QAAQ,EACR,+BAA+B,CAC7B,mBAAmB,EACnB,mBAAmB,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC,CACH,CACF,CAAC;AAEF,yEAAyE;AACzE,0EAA0E;AAC1E,mBAAmB;AACnB,wBAAwB,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;AAEvD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAC1C,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EACpE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,CACrD,CAAC;AAEF,wBAAwB,CAAC,MAAM,EAAE;IAC/B,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,kEAAkE;AAClE,sEAAsE;AACtE,wEAAwE;AACxE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,YAAY;SACT,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;SACzB,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC/D,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACjF,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAE5E,gFAAgF;AAChF,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEnE,iFAAiF;AACjF,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;AACtG,SAAS,EAAE,CAAC;AACZ,SAAS,EAAE,CAAC;AAEZ,oDAAoD;AACpD,MAAM,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE7C,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oDAAoD,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CACtH,CAAC;IACF,gEAAgE;IAChE,oEAAoE;IACpE,mEAAmE;IACnE,iDAAiD;IACjD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE;QAC3D,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;KACzC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,aAAa,CAAC,GAAG,CAAC,EAAE,IAAI,CAC5D,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;AACxE,CAAC;AAED,oEAAoE;AACpE,QAAQ,CAAC,WAAW,EAAE,CAAC;AAEvB,yDAAyD;AACzD,sEAAsE;AACtE,+EAA+E;AAC/E,SAAS,gBAAgB,CAAC,QAAgB;IACxC,IAAI,IAA2B,CAAC;IAChC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAC3D,IAAI,GAAG,CAAC,CAAC;YACT,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAiB;IACjD,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;AACtD,CAAC;AAED,wCAAwC;AACxC,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CACxC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CACrC,CAAC;AAEF,IAAI,sBAAsB,EAAE,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uDAAuD,CACxD,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,sDAAsD;QACtD,MAAM,SAAS,GACb,MAAM,CAAC,UAAU,KAAK,OAAO,IAAI,eAAe;YAC9C,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,iBAAiB,CAAC;QAExB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,MAAM,CAAC,IAAI,qCAAqC,CACzE,CAAC;YACF,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE;YACrC,UAAU,EAAE,oBAAoB;YAChC,WAAW,EAAE,MAAM,CAAC,KAAK;YACzB,UAAU,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACpC,YAAY,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,uBAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1F,CAAC,CAAC;QAEH,mEAAmE;QACnE,sEAAsE;QACtE,yEAAyE;QACzE,MAAM,OAAO,GAAG,CAAC,KAAqC,EAAE,EAAE;YACxD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;gBAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAClE,OAAO,OAAO,CAAC,WAAW,CAAC,KAAkD,CAAC,CAAC;QACjF,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;YAClD,YAAY,EAAE,wBAAwB,CAAC,MAAM,CAAC;SAC/C,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,QAAQ,CAAC,MAAM,oBAAoB,CAC/C,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ;YACnC,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,IAAI,YAAY,GAA0C,IAAI,CAAC;AAC/D,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACzD,MAAM,cAAc,GAAG,mBAAmB,GAAG,IAAI,CAAC;AAElD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3D,yEAAyE;IACzE,qEAAqE;IACrE,oDAAoD;IACpD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,IAAI,GAAG,CACL,WAAW,CAAC,OAAO,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAC/E,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACxC,IAAI,OAAO,CAAC,QAAQ;YAAE,OAAO;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAChF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,+DAA+D;gBAC/D,mEAAmE;gBACnE,6CAA6C;gBAC7C,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;oBAAE,SAAS;gBACxD,MAAM,SAAS,GACb,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,eAAe;oBAC7C,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAC,iBAAiB,CAAC;gBACxB,IAAI,CAAC,SAAS;oBAAE,SAAS;gBACzB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE;oBACrC,UAAU,EAAE,2BAA2B;oBACvC,WAAW,EAAE,KAAK,CAAC,KAAK;oBACxB,UAAU,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;oBACnC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC1B,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,uBAAgC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzF,CAAC,CAAC;gBACH,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,CAAC,WAAW,CACjB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC,WAAW,EAAE,CACpD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,eAAe,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACpE,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACzE,KAAK,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IACjE,OAAO,CAAC,WAAW,CACjB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,CAAC,WAAW,EAAE,CACpD,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,WAAW,CAAC,MAAM,yBAAyB,mBAAmB,MAAM,CACnG,CAAC;AACJ,CAAC;AAED,sDAAsD;AACtD,IAAI,eAAe,GAA0C,IAAI,CAAC;AAElE,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC7G,MAAM,EACJ,0BAA0B,EAC1B,yBAAyB,GAC1B,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAEjE,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,0BAA0B,CAAC;gBAC7D,MAAM;gBACN,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACrB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;wBAC3C,eAAe,EAAE,IAAI,CAAC,eAAe;wBACrC,OAAO,EAAE;4BACP,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,OAAO,EAAE,IAAI,CAAC,OAAO;4BACrB,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,eAAe,EAAE,IAAI,CAAC,eAAe;4BACrC,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;yBACtD;qBACF,CAAC,CAAC;oBACH,IAAI,UAAU,IAAI,MAAM,EAAE,CAAC;wBACzB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;oBACjE,CAAC;oBACD,8DAA8D;oBAC9D,8DAA8D;oBAC9D,gEAAgE;oBAChE,+DAA+D;oBAC/D,sCAAsC;oBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC;oBAC1B,MAAM,MAAM,GAAG,GAAG,CAAC;oBACnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;wBACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC9B,IAAI,CAAC,CAAC;4BAAE,OAAO,CAAC,4BAA4B;wBAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;4BAAE,OAAO;wBACrC,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;4BAC1B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;wBAC9D,CAAC;wBACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBAClD,CAAC;oBACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;gBACxC,CAAC;aACF,CAAC,CAAC,CAAC;YAEJ,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YACpD,MAAM,0BAA0B,CAC9B,MAAM,CAAC,UAAU,CAAC,QAAQ,EAC1B,yBAAyB,CAAC;gBACxB,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;gBAClC,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;gBACtC,UAAU;gBACV,MAAM;aACP,CAAC,CACH,CAAC;YACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iBAAiB,MAAM,CAAC,KAAK,WAAW,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,SAAS,eAAe,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,iBAAiB,SAAS,UAAU,MAAM,CAC3K,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACH,MAAM,0BAA0B,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE;oBAC3D,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;oBAClC,eAAe,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;oBACvC,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,IAAI;oBAClB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;oBAC7C,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAC/D;oBACD,MAAM,EAAE,CAAC;4BACP,SAAS,EAAE,KAAK;4BAChB,KAAK;yBACN,CAAC;oBACF,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,gBAAgB,EAAE,CAAC;gBAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6CAA6C,gBAAgB,YAAY,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CACzI,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uBAAuB,KAAK,IAAI,CACjC,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,+CAA+C;IAC/C,KAAK,UAAU,EAAE,CAAC;IAElB,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,UAAU,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4BAA4B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,OAAO,CAAC,gBAAgB,MAAM,CAClH,CAAC;AACJ,CAAC;AAED,8DAA8D;AAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAClE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/C,+EAA+E;AAC/E,yEAAyE;AACzE,kEAAkE;AAClE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,IAAI,YAAY;QAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAC9C,IAAI,eAAe;QAAE,aAAa,CAAC,eAAe,CAAC,CAAC;IACpD,YAAY,CAAC,QAAQ,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC;IACD,WAAW,EAAE,CAAC;IACd,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,oCAAoC;IACtC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;AACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,QAAQ,SAAS,CAAC,OAAO,YAAY,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,SAAS,CAAC,IAAI,kBAAkB,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CACzJ,CAAC;AAEF,yEAAyE;AACzE,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAC9E,2EAA2E;AAC3E,8CAA8C;AAC9C,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AACpE,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wDAAwD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7G,CAAC;AACJ,CAAC;AAED,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/mcp/errors.ts"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO;;;;;;EAqCvC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared error formatting for MCP tool handlers.
|
|
3
|
+
* Translates CliError codes into human-readable MCP error content.
|
|
4
|
+
*/
|
|
5
|
+
import { CliError } from "../cli/http-client.js";
|
|
6
|
+
export function formatError(err) {
|
|
7
|
+
if (err instanceof CliError) {
|
|
8
|
+
let message;
|
|
9
|
+
switch (err.code) {
|
|
10
|
+
case "connection_refused":
|
|
11
|
+
message = "Rift daemon is not running. Start it first.";
|
|
12
|
+
break;
|
|
13
|
+
case "unauthorized":
|
|
14
|
+
message =
|
|
15
|
+
"Authentication failed. Run: rift token issue <config-path>";
|
|
16
|
+
break;
|
|
17
|
+
case "validation":
|
|
18
|
+
message = `Validation error: ${formatBody(err.body)}`;
|
|
19
|
+
break;
|
|
20
|
+
case "conflict":
|
|
21
|
+
message = "Another exclusive operation is running. Try again later.";
|
|
22
|
+
break;
|
|
23
|
+
case "rate_limited":
|
|
24
|
+
message = "Rate limited. Retry later.";
|
|
25
|
+
break;
|
|
26
|
+
case "server_error":
|
|
27
|
+
message = `Server error: ${formatBody(err.body)}`;
|
|
28
|
+
break;
|
|
29
|
+
default:
|
|
30
|
+
message = err.message;
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: "text", text: message }],
|
|
34
|
+
isError: true,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const text = err instanceof Error ? err.message : String(err);
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: "text", text: `Error: ${text}` }],
|
|
40
|
+
isError: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function formatBody(body) {
|
|
44
|
+
if (body === undefined || body === null)
|
|
45
|
+
return "(no details)";
|
|
46
|
+
if (typeof body === "string")
|
|
47
|
+
return body;
|
|
48
|
+
return JSON.stringify(body, null, 2);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,IAAI,OAAe,CAAC;QACpB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,oBAAoB;gBACvB,OAAO,GAAG,6CAA6C,CAAC;gBACxD,MAAM;YACR,KAAK,cAAc;gBACjB,OAAO;oBACL,4DAA4D,CAAC;gBAC/D,MAAM;YACR,KAAK,YAAY;gBACf,OAAO,GAAG,qBAAqB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,MAAM;YACR,KAAK,UAAU;gBACb,OAAO,GAAG,0DAA0D,CAAC;gBACrE,MAAM;YACR,KAAK,cAAc;gBACjB,OAAO,GAAG,4BAA4B,CAAC;gBACvC,MAAM;YACR,KAAK,cAAc;gBACjB,OAAO,GAAG,iBAAiB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,MAAM;YACR;gBACE,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC1B,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACnD,OAAO,EAAE,IAAa;SACvB,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC;QAC5D,OAAO,EAAE,IAAa;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAa;IAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,cAAc,CAAC;IAC/D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
export interface CreateServerOpts {
|
|
4
|
+
configPath: string;
|
|
5
|
+
tokenOverride?: string | null;
|
|
6
|
+
/** Test-only: inject a custom fetch implementation. */
|
|
7
|
+
fetchFn?: typeof fetch;
|
|
8
|
+
}
|
|
9
|
+
export declare function createMcpServer(opts: CreateServerOpts): Promise<McpServer>;
|
|
10
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":";AAYA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBpE,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,CA+GhF"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Rift MCP server.
|
|
4
|
+
*
|
|
5
|
+
* Stdio-based MCP server that exposes Rift tools to LLM agents.
|
|
6
|
+
* Delegates all calls to the localhost HTTP daemon via the shared CLI
|
|
7
|
+
* HTTP client.
|
|
8
|
+
*
|
|
9
|
+
* Usage: node dist/src/mcp/server.js <config-path>
|
|
10
|
+
*/
|
|
11
|
+
import fs from "node:fs";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
14
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
15
|
+
import { loadConfig } from "../config/loader.js";
|
|
16
|
+
import { createHttpClient, readToken, resolveBaseUrl, } from "../cli/http-client.js";
|
|
17
|
+
import { saveSchema, handleRiftSave } from "./tools/save.js";
|
|
18
|
+
import { searchSchema, handleRiftSearch } from "./tools/search.js";
|
|
19
|
+
import { conversationsSearchSchema, handleRiftConversationsSearch, } from "./tools/conversations-search.js";
|
|
20
|
+
import { contextPackSchema, handleRiftContextPack, } from "./tools/context-pack.js";
|
|
21
|
+
import { handleRiftStatus } from "./tools/status.js";
|
|
22
|
+
import { ToolUsageLogger } from "../observability/tool-usage.js";
|
|
23
|
+
import { getBuildInfo } from "../server/build-info.js";
|
|
24
|
+
export async function createMcpServer(opts) {
|
|
25
|
+
const config = loadConfig(opts.configPath);
|
|
26
|
+
const baseUrl = resolveBaseUrl(opts.configPath);
|
|
27
|
+
const dataDir = config.data_paths.data_dir;
|
|
28
|
+
const token = opts.tokenOverride ?? (await readToken());
|
|
29
|
+
if (!token) {
|
|
30
|
+
throw new Error("No auth token found. Run: rift token issue <config-path>");
|
|
31
|
+
}
|
|
32
|
+
const client = createHttpClient({
|
|
33
|
+
baseUrl,
|
|
34
|
+
token,
|
|
35
|
+
...(opts.fetchFn ? { fetchFn: opts.fetchFn } : {}),
|
|
36
|
+
});
|
|
37
|
+
const logger = new ToolUsageLogger(dataDir);
|
|
38
|
+
const server = new McpServer({
|
|
39
|
+
name: "rift",
|
|
40
|
+
version: getBuildInfo().version,
|
|
41
|
+
});
|
|
42
|
+
// --- Tools ---
|
|
43
|
+
server.tool("rift_save", 'Save an LLM agent session to Rift. Provide source and summary (required). Optionally include domain, decisions made, key outputs, topics, and an idempotency_key to prevent duplicates. Returns a job_id (processed async).', saveSchema, async (args) => logger.wrap("rift_save", args, () => handleRiftSave(args, client)));
|
|
44
|
+
server.tool("rift_search", 'Search across all Rift memory: watched files, project docs, conversations, and digests. Use scope to narrow: "documents" for files, "conversations" for chat history, "clients" for client work, "projects" for project files. Use cwd to scope file results to the current project directory (conversations are not filtered by cwd). If cwd doesn\'t match a configured source directory, search runs across all data. Returns ranked results with relevance scores.', searchSchema, async (args) => logger.wrap("rift_search", args, () => handleRiftSearch(args, client)));
|
|
45
|
+
server.tool("rift_conversations_search", 'Search conversation history with structured filters. Use detail="summary" for recent conversations (last 30 days + digests), detail="full" for older conversations. Filter by source, domain, intent, quality (enum values). Narrow further by topic or decision (free-text, matches against conversation metadata). More precise than rift_search for conversation-specific queries.', conversationsSearchSchema, async (args) => logger.wrap("rift_conversations_search", args, () => handleRiftConversationsSearch(args, client)));
|
|
46
|
+
server.tool("rift_context_pack", 'Build a compact, bucketed context pack for an active task. Returns prior decisions, project constraints (MUST/NEVER-style rules), example conversations, and rule documents — all summarized, never raw transcripts. Response is strictly bounded by max_bytes (default 4096, ceiling 16384). Use cwd to narrow document/rule results to the current project. Prefer this over rift_search when you need durable context to steer an agent, not a ranked hit list.', contextPackSchema, async (args) => logger.wrap("rift_context_pack", args, () => handleRiftContextPack(args, client)));
|
|
47
|
+
server.tool("rift_status", "Capability map for Rift: lists the memory classes available (conversations, digests, structured documents), names the tools for each job (rift_search, rift_conversations_search, rift_context_pack, rift_status), and states default behavior. Call this before deciding whether to search. Not for content retrieval — use rift_search for that.", {}, async () => logger.wrap("rift_status", {}, () => handleRiftStatus({}, client)));
|
|
48
|
+
// --- Resource ---
|
|
49
|
+
server.resource("rift-context.md", "rift://rift-context.md", { description: "Current Rift system status as markdown", mimeType: "text/markdown" }, async (uri) => {
|
|
50
|
+
const filePath = path.join(dataDir, "rift-context.md");
|
|
51
|
+
try {
|
|
52
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
53
|
+
return {
|
|
54
|
+
contents: [
|
|
55
|
+
{ uri: uri.href, text: content, mimeType: "text/markdown" },
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
const code = err.code;
|
|
61
|
+
const message = code === "ENOENT"
|
|
62
|
+
? "rift-context.md not found. Call rift_status to generate it."
|
|
63
|
+
: `Failed to read rift-context.md: ${err instanceof Error ? err.message : String(err)}`;
|
|
64
|
+
return {
|
|
65
|
+
contents: [
|
|
66
|
+
{ uri: uri.href, text: message, mimeType: "text/markdown" },
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
return server;
|
|
72
|
+
}
|
|
73
|
+
// --- Standalone execution ---
|
|
74
|
+
const isMain = process.argv[1] &&
|
|
75
|
+
(process.argv[1].endsWith("/mcp/server.js") ||
|
|
76
|
+
process.argv[1].endsWith("/mcp/server.ts"));
|
|
77
|
+
if (isMain) {
|
|
78
|
+
const configPath = process.argv[2];
|
|
79
|
+
if (!configPath) {
|
|
80
|
+
process.stderr.write("Usage: rift-mcp <config-path>\n");
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
createMcpServer({ configPath })
|
|
84
|
+
.then(async (server) => {
|
|
85
|
+
const transport = new StdioServerTransport();
|
|
86
|
+
await server.connect(transport);
|
|
87
|
+
process.stderr.write("Rift MCP server running on stdio\n");
|
|
88
|
+
})
|
|
89
|
+
.catch((err) => {
|
|
90
|
+
process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|