@getrift/rift 0.1.0-beta.2 → 0.1.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -9
- package/dist/src/auth/keychain.d.ts +9 -0
- package/dist/src/auth/keychain.d.ts.map +1 -1
- package/dist/src/auth/keychain.js +37 -0
- package/dist/src/auth/keychain.js.map +1 -1
- package/dist/src/capture/auto-capture.d.ts +7 -0
- package/dist/src/capture/auto-capture.d.ts.map +1 -1
- package/dist/src/capture/auto-capture.js +82 -15
- package/dist/src/capture/auto-capture.js.map +1 -1
- package/dist/src/capture/auto-repair.d.ts +110 -0
- package/dist/src/capture/auto-repair.d.ts.map +1 -0
- package/dist/src/capture/auto-repair.js +269 -0
- package/dist/src/capture/auto-repair.js.map +1 -0
- package/dist/src/capture/codex-cli-triage-provider.d.ts.map +1 -1
- package/dist/src/capture/codex-cli-triage-provider.js +4 -3
- package/dist/src/capture/codex-cli-triage-provider.js.map +1 -1
- package/dist/src/capture/observability.d.ts +42 -0
- package/dist/src/capture/observability.d.ts.map +1 -1
- package/dist/src/capture/observability.js +45 -4
- package/dist/src/capture/observability.js.map +1 -1
- package/dist/src/capture/recover-quarantine.d.ts +260 -0
- package/dist/src/capture/recover-quarantine.d.ts.map +1 -0
- package/dist/src/capture/recover-quarantine.js +522 -0
- package/dist/src/capture/recover-quarantine.js.map +1 -0
- package/dist/src/cli/commands/backfill.d.ts.map +1 -1
- package/dist/src/cli/commands/backfill.js +5 -2
- package/dist/src/cli/commands/backfill.js.map +1 -1
- package/dist/src/cli/commands/capture-recover.d.ts +40 -0
- package/dist/src/cli/commands/capture-recover.d.ts.map +1 -0
- package/dist/src/cli/commands/capture-recover.js +184 -0
- package/dist/src/cli/commands/capture-recover.js.map +1 -0
- package/dist/src/cli/commands/capture.d.ts.map +1 -1
- package/dist/src/cli/commands/capture.js +96 -5
- package/dist/src/cli/commands/capture.js.map +1 -1
- package/dist/src/cli/commands/doctor.d.ts +6 -0
- package/dist/src/cli/commands/doctor.d.ts.map +1 -0
- package/dist/src/cli/commands/doctor.js +242 -0
- package/dist/src/cli/commands/doctor.js.map +1 -0
- package/dist/src/cli/commands/feedback.d.ts +12 -0
- package/dist/src/cli/commands/feedback.d.ts.map +1 -1
- package/dist/src/cli/commands/feedback.js +93 -4
- package/dist/src/cli/commands/feedback.js.map +1 -1
- package/dist/src/cli/commands/mcp-install.js +5 -2
- package/dist/src/cli/commands/mcp-install.js.map +1 -1
- package/dist/src/cli/commands/menubar.d.ts +80 -0
- package/dist/src/cli/commands/menubar.d.ts.map +1 -0
- package/dist/src/cli/commands/menubar.js +388 -0
- package/dist/src/cli/commands/menubar.js.map +1 -0
- package/dist/src/cli/commands/onboard.d.ts +143 -5
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +844 -188
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -1
- package/dist/src/cli/commands/rebuild.js +6 -3
- package/dist/src/cli/commands/rebuild.js.map +1 -1
- package/dist/src/cli/commands/reconcile.d.ts.map +1 -1
- package/dist/src/cli/commands/reconcile.js +12 -0
- package/dist/src/cli/commands/reconcile.js.map +1 -1
- package/dist/src/cli/commands/review.d.ts.map +1 -1
- package/dist/src/cli/commands/review.js +22 -7
- package/dist/src/cli/commands/review.js.map +1 -1
- package/dist/src/cli/commands/search.d.ts +2 -0
- package/dist/src/cli/commands/search.d.ts.map +1 -1
- package/dist/src/cli/commands/search.js +34 -4
- package/dist/src/cli/commands/search.js.map +1 -1
- package/dist/src/cli/commands/status.d.ts +9 -7
- package/dist/src/cli/commands/status.d.ts.map +1 -1
- package/dist/src/cli/commands/status.js +117 -12
- package/dist/src/cli/commands/status.js.map +1 -1
- package/dist/src/cli/commands/token-issue.d.ts.map +1 -1
- package/dist/src/cli/commands/token-issue.js +9 -1
- package/dist/src/cli/commands/token-issue.js.map +1 -1
- package/dist/src/cli/commands/triage.d.ts.map +1 -1
- package/dist/src/cli/commands/triage.js +7 -5
- package/dist/src/cli/commands/triage.js.map +1 -1
- package/dist/src/cli/commands/update.d.ts +80 -0
- package/dist/src/cli/commands/update.d.ts.map +1 -0
- package/dist/src/cli/commands/update.js +390 -0
- package/dist/src/cli/commands/update.js.map +1 -0
- package/dist/src/cli/default-config-path.d.ts +15 -0
- package/dist/src/cli/default-config-path.d.ts.map +1 -0
- package/dist/src/cli/default-config-path.js +27 -0
- package/dist/src/cli/default-config-path.js.map +1 -0
- package/dist/src/cli/feedback/feedback-config.d.ts +46 -0
- package/dist/src/cli/feedback/feedback-config.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-config.js +130 -4
- package/dist/src/cli/feedback/feedback-config.js.map +1 -1
- package/dist/src/cli/feedback/feedback-history.d.ts +7 -0
- package/dist/src/cli/feedback/feedback-history.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-history.js +39 -9
- package/dist/src/cli/feedback/feedback-history.js.map +1 -1
- package/dist/src/cli/feedback/feedback-payload.d.ts +22 -1
- package/dist/src/cli/feedback/feedback-payload.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-payload.js.map +1 -1
- package/dist/src/cli/feedback/feedback-relay.d.ts +2 -2
- package/dist/src/cli/feedback/feedback-relay.d.ts.map +1 -1
- package/dist/src/cli/feedback/feedback-relay.js.map +1 -1
- package/dist/src/cli/feedback/invite.d.ts +17 -0
- package/dist/src/cli/feedback/invite.d.ts.map +1 -0
- package/dist/src/cli/feedback/invite.js +67 -0
- package/dist/src/cli/feedback/invite.js.map +1 -0
- package/dist/src/cli/feedback/relay-secret-store.d.ts +32 -0
- package/dist/src/cli/feedback/relay-secret-store.d.ts.map +1 -0
- package/dist/src/cli/feedback/relay-secret-store.js +137 -0
- package/dist/src/cli/feedback/relay-secret-store.js.map +1 -0
- package/dist/src/cli/http-client.d.ts +93 -1
- package/dist/src/cli/http-client.d.ts.map +1 -1
- package/dist/src/cli/http-client.js +254 -6
- package/dist/src/cli/http-client.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +29 -6
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/postinstall-menubar.d.ts +22 -0
- package/dist/src/cli/postinstall-menubar.d.ts.map +1 -0
- package/dist/src/cli/postinstall-menubar.js +53 -0
- package/dist/src/cli/postinstall-menubar.js.map +1 -0
- package/dist/src/cli/status/friend-header.d.ts +16 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +354 -26
- package/dist/src/cli/status/friend-header.js.map +1 -1
- package/dist/src/cli/status/local-signals.d.ts +18 -0
- package/dist/src/cli/status/local-signals.d.ts.map +1 -1
- package/dist/src/cli/status/local-signals.js +29 -0
- package/dist/src/cli/status/local-signals.js.map +1 -1
- package/dist/src/cli/ui.d.ts +47 -0
- package/dist/src/cli/ui.d.ts.map +1 -0
- package/dist/src/cli/ui.js +166 -0
- package/dist/src/cli/ui.js.map +1 -0
- package/dist/src/config/schema.d.ts +79 -0
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +44 -0
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/diagnostics/codex-preflight.d.ts +33 -0
- package/dist/src/diagnostics/codex-preflight.d.ts.map +1 -0
- package/dist/src/diagnostics/codex-preflight.js +75 -0
- package/dist/src/diagnostics/codex-preflight.js.map +1 -0
- package/dist/src/diagnostics/doctor.d.ts +114 -0
- package/dist/src/diagnostics/doctor.d.ts.map +1 -0
- package/dist/src/diagnostics/doctor.js +352 -0
- package/dist/src/diagnostics/doctor.js.map +1 -0
- package/dist/src/diagnostics/notify.d.ts +90 -0
- package/dist/src/diagnostics/notify.d.ts.map +1 -0
- package/dist/src/diagnostics/notify.js +177 -0
- package/dist/src/diagnostics/notify.js.map +1 -0
- package/dist/src/diagnostics/repair-prompt.d.ts +49 -0
- package/dist/src/diagnostics/repair-prompt.d.ts.map +1 -0
- package/dist/src/diagnostics/repair-prompt.js +223 -0
- package/dist/src/diagnostics/repair-prompt.js.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.js +27 -0
- package/dist/src/ingestion/inbox-core/conversation-fingerprint.js.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/conversation-key.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js +31 -0
- package/dist/src/ingestion/inbox-core/conversation-key.js.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts +3 -0
- package/dist/src/ingestion/inbox-core/extensions.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/extensions.js +16 -0
- package/dist/src/ingestion/inbox-core/extensions.js.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/idempotency.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/idempotency.js +22 -0
- package/dist/src/ingestion/inbox-core/idempotency.js.map +1 -0
- package/dist/src/ingestion/inbox-core/index.d.ts +20 -0
- package/dist/src/ingestion/inbox-core/index.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/index.js +20 -0
- package/dist/src/ingestion/inbox-core/index.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts +2 -0
- package/dist/src/ingestion/inbox-core/source-detection.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-detection.js +23 -0
- package/dist/src/ingestion/inbox-core/source-detection.js.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts +11 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js +69 -0
- package/dist/src/ingestion/inbox-core/source-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts +70 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js +161 -0
- package/dist/src/ingestion/inbox-core/zip-sniffer.js.map +1 -0
- package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -1
- package/dist/src/ingestion/inbox-watcher.js +34 -50
- package/dist/src/ingestion/inbox-watcher.js.map +1 -1
- package/dist/src/ingestion/indexer.d.ts +7 -0
- package/dist/src/ingestion/indexer.d.ts.map +1 -1
- package/dist/src/ingestion/indexer.js +36 -2
- package/dist/src/ingestion/indexer.js.map +1 -1
- package/dist/src/ingestion/metadata-extraction.d.ts +8 -5
- package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -1
- package/dist/src/ingestion/metadata-extraction.js +24 -5
- package/dist/src/ingestion/metadata-extraction.js.map +1 -1
- package/dist/src/ingestion/skip-quarantine.d.ts +10 -0
- package/dist/src/ingestion/skip-quarantine.d.ts.map +1 -0
- package/dist/src/ingestion/skip-quarantine.js +35 -0
- package/dist/src/ingestion/skip-quarantine.js.map +1 -0
- package/dist/src/jobs/handlers/compact.d.ts.map +1 -1
- package/dist/src/jobs/handlers/compact.js +30 -4
- package/dist/src/jobs/handlers/compact.js.map +1 -1
- package/dist/src/jobs/handlers/dedupe-conversations.d.ts +134 -0
- package/dist/src/jobs/handlers/dedupe-conversations.d.ts.map +1 -0
- package/dist/src/jobs/handlers/dedupe-conversations.js +371 -0
- package/dist/src/jobs/handlers/dedupe-conversations.js.map +1 -0
- package/dist/src/jobs/handlers/ingest.d.ts.map +1 -1
- package/dist/src/jobs/handlers/ingest.js +295 -41
- package/dist/src/jobs/handlers/ingest.js.map +1 -1
- package/dist/src/jobs/handlers/reconcile.d.ts +28 -0
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reconcile.js +145 -19
- package/dist/src/jobs/handlers/reconcile.js.map +1 -1
- package/dist/src/jobs/handlers/reindex.d.ts.map +1 -1
- package/dist/src/jobs/handlers/reindex.js +13 -2
- package/dist/src/jobs/handlers/reindex.js.map +1 -1
- package/dist/src/jobs/handlers/save.d.ts.map +1 -1
- package/dist/src/jobs/handlers/save.js +57 -3
- package/dist/src/jobs/handlers/save.js.map +1 -1
- package/dist/src/jobs/queue.d.ts +51 -1
- package/dist/src/jobs/queue.d.ts.map +1 -1
- package/dist/src/jobs/queue.js +466 -26
- package/dist/src/jobs/queue.js.map +1 -1
- package/dist/src/jobs/worker-entry.d.ts.map +1 -1
- package/dist/src/jobs/worker-entry.js +35 -7
- package/dist/src/jobs/worker-entry.js.map +1 -1
- package/dist/src/jobs/worker-process.d.ts +11 -0
- package/dist/src/jobs/worker-process.d.ts.map +1 -1
- package/dist/src/jobs/worker-process.js +37 -4
- package/dist/src/jobs/worker-process.js.map +1 -1
- package/dist/src/main.js +199 -46
- package/dist/src/main.js.map +1 -1
- package/dist/src/mcp/errors.d.ts.map +1 -1
- package/dist/src/mcp/errors.js +20 -1
- package/dist/src/mcp/errors.js.map +1 -1
- package/dist/src/mcp/server.d.ts.map +1 -1
- package/dist/src/mcp/server.js +43 -3
- package/dist/src/mcp/server.js.map +1 -1
- package/dist/src/mcp/tools/context-pack.d.ts.map +1 -1
- package/dist/src/mcp/tools/context-pack.js +164 -23
- package/dist/src/mcp/tools/context-pack.js.map +1 -1
- package/dist/src/mcp/tools/search.d.ts +6 -2
- package/dist/src/mcp/tools/search.d.ts.map +1 -1
- package/dist/src/mcp/tools/search.js +35 -4
- package/dist/src/mcp/tools/search.js.map +1 -1
- package/dist/src/observability/embedding-events.d.ts +52 -0
- package/dist/src/observability/embedding-events.d.ts.map +1 -0
- package/dist/src/observability/embedding-events.js +149 -0
- package/dist/src/observability/embedding-events.js.map +1 -0
- package/dist/src/observability/index-events.d.ts +70 -0
- package/dist/src/observability/index-events.d.ts.map +1 -0
- package/dist/src/observability/index-events.js +148 -0
- package/dist/src/observability/index-events.js.map +1 -0
- package/dist/src/observability/onboarding-metric.d.ts +131 -0
- package/dist/src/observability/onboarding-metric.d.ts.map +1 -0
- package/dist/src/observability/onboarding-metric.js +351 -0
- package/dist/src/observability/onboarding-metric.js.map +1 -0
- package/dist/src/observability/tool-usage-stats.d.ts +77 -4
- package/dist/src/observability/tool-usage-stats.d.ts.map +1 -1
- package/dist/src/observability/tool-usage-stats.js +112 -32
- package/dist/src/observability/tool-usage-stats.js.map +1 -1
- package/dist/src/observability/tool-usage.d.ts +100 -7
- package/dist/src/observability/tool-usage.d.ts.map +1 -1
- package/dist/src/observability/tool-usage.js +196 -33
- package/dist/src/observability/tool-usage.js.map +1 -1
- package/dist/src/observability/version-check.d.ts +71 -0
- package/dist/src/observability/version-check.d.ts.map +1 -0
- package/dist/src/observability/version-check.js +198 -0
- package/dist/src/observability/version-check.js.map +1 -0
- package/dist/src/providers/basic-metadata-extraction.d.ts +60 -0
- package/dist/src/providers/basic-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/basic-metadata-extraction.js +114 -0
- package/dist/src/providers/basic-metadata-extraction.js.map +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-metadata-extraction.js +6 -2
- package/dist/src/providers/codex-cli-metadata-extraction.js.map +1 -1
- package/dist/src/providers/codex-cli-model.d.ts +61 -0
- package/dist/src/providers/codex-cli-model.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-model.js +194 -0
- package/dist/src/providers/codex-cli-model.js.map +1 -0
- package/dist/src/providers/codex-cli-runner.d.ts +39 -0
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -1
- package/dist/src/providers/codex-cli-runner.js +234 -48
- package/dist/src/providers/codex-cli-runner.js.map +1 -1
- package/dist/src/providers/conversation-generation.d.ts.map +1 -1
- package/dist/src/providers/conversation-generation.js +43 -6
- package/dist/src/providers/conversation-generation.js.map +1 -1
- package/dist/src/providers/ollama-embed.d.ts +2 -1
- package/dist/src/providers/ollama-embed.d.ts.map +1 -1
- package/dist/src/providers/ollama-embed.js +1 -0
- package/dist/src/providers/ollama-embed.js.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.d.ts +3 -3
- package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -1
- package/dist/src/providers/openai-metadata-extraction.js +18 -3
- package/dist/src/providers/openai-metadata-extraction.js.map +1 -1
- package/dist/src/providers/placeholder-embed.d.ts +56 -0
- package/dist/src/providers/placeholder-embed.d.ts.map +1 -0
- package/dist/src/providers/placeholder-embed.js +64 -0
- package/dist/src/providers/placeholder-embed.js.map +1 -0
- package/dist/src/providers/stub.d.ts +2 -0
- package/dist/src/providers/stub.d.ts.map +1 -1
- package/dist/src/providers/stub.js +2 -0
- package/dist/src/providers/stub.js.map +1 -1
- package/dist/src/providers/types.d.ts +11 -0
- package/dist/src/providers/types.d.ts.map +1 -1
- package/dist/src/providers/voyage.d.ts +2 -1
- package/dist/src/providers/voyage.d.ts.map +1 -1
- package/dist/src/providers/voyage.js +1 -0
- package/dist/src/providers/voyage.js.map +1 -1
- package/dist/src/retrieval/compact.d.ts +116 -2
- package/dist/src/retrieval/compact.d.ts.map +1 -1
- package/dist/src/retrieval/compact.js +158 -5
- package/dist/src/retrieval/compact.js.map +1 -1
- package/dist/src/retrieval/context-pack.d.ts +114 -0
- package/dist/src/retrieval/context-pack.d.ts.map +1 -1
- package/dist/src/retrieval/context-pack.js +292 -8
- package/dist/src/retrieval/context-pack.js.map +1 -1
- package/dist/src/retrieval/current-truth.d.ts +360 -0
- package/dist/src/retrieval/current-truth.d.ts.map +1 -0
- package/dist/src/retrieval/current-truth.js +766 -0
- package/dist/src/retrieval/current-truth.js.map +1 -0
- package/dist/src/retrieval/git-state.d.ts +53 -0
- package/dist/src/retrieval/git-state.d.ts.map +1 -0
- package/dist/src/retrieval/git-state.js +174 -0
- package/dist/src/retrieval/git-state.js.map +1 -0
- package/dist/src/retrieval/lexical.d.ts.map +1 -1
- package/dist/src/retrieval/lexical.js +19 -3
- package/dist/src/retrieval/lexical.js.map +1 -1
- package/dist/src/retrieval/locator-boost.d.ts +37 -0
- package/dist/src/retrieval/locator-boost.d.ts.map +1 -0
- package/dist/src/retrieval/locator-boost.js +129 -0
- package/dist/src/retrieval/locator-boost.js.map +1 -0
- package/dist/src/retrieval/report-demotion.d.ts +46 -0
- package/dist/src/retrieval/report-demotion.d.ts.map +1 -0
- package/dist/src/retrieval/report-demotion.js +169 -0
- package/dist/src/retrieval/report-demotion.js.map +1 -0
- package/dist/src/retrieval/vector.d.ts.map +1 -1
- package/dist/src/retrieval/vector.js +11 -2
- package/dist/src/retrieval/vector.js.map +1 -1
- package/dist/src/server/app.d.ts.map +1 -1
- package/dist/src/server/app.js +92 -11
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/routes/compact.d.ts.map +1 -1
- package/dist/src/server/routes/compact.js +4 -1
- package/dist/src/server/routes/compact.js.map +1 -1
- package/dist/src/server/routes/context.d.ts +1 -1
- package/dist/src/server/routes/context.d.ts.map +1 -1
- package/dist/src/server/routes/context.js +2 -1
- package/dist/src/server/routes/context.js.map +1 -1
- package/dist/src/server/routes/conversations-search.d.ts.map +1 -1
- package/dist/src/server/routes/conversations-search.js +28 -3
- package/dist/src/server/routes/conversations-search.js.map +1 -1
- package/dist/src/server/routes/enqueue.d.ts +11 -0
- package/dist/src/server/routes/enqueue.d.ts.map +1 -0
- package/dist/src/server/routes/enqueue.js +17 -0
- package/dist/src/server/routes/enqueue.js.map +1 -0
- package/dist/src/server/routes/friend-status.d.ts +339 -3
- package/dist/src/server/routes/friend-status.d.ts.map +1 -1
- package/dist/src/server/routes/friend-status.js +447 -13
- package/dist/src/server/routes/friend-status.js.map +1 -1
- package/dist/src/server/routes/ingest.d.ts.map +1 -1
- package/dist/src/server/routes/ingest.js +5 -2
- package/dist/src/server/routes/ingest.js.map +1 -1
- package/dist/src/server/routes/mcp-usage.d.ts +5 -4
- package/dist/src/server/routes/mcp-usage.d.ts.map +1 -1
- package/dist/src/server/routes/mcp-usage.js.map +1 -1
- package/dist/src/server/routes/reconcile.d.ts.map +1 -1
- package/dist/src/server/routes/reconcile.js +20 -1
- package/dist/src/server/routes/reconcile.js.map +1 -1
- package/dist/src/server/routes/reindex.d.ts.map +1 -1
- package/dist/src/server/routes/reindex.js +4 -1
- package/dist/src/server/routes/reindex.js.map +1 -1
- package/dist/src/server/routes/save.d.ts.map +1 -1
- package/dist/src/server/routes/save.js +4 -1
- package/dist/src/server/routes/save.js.map +1 -1
- package/dist/src/server/routes/search.d.ts +1 -1
- package/dist/src/server/routes/search.d.ts.map +1 -1
- package/dist/src/server/routes/search.js +253 -29
- package/dist/src/server/routes/search.js.map +1 -1
- package/dist/src/server/routes/triage.d.ts.map +1 -1
- package/dist/src/server/routes/triage.js +4 -1
- package/dist/src/server/routes/triage.js.map +1 -1
- package/dist/src/storage/rebuild.d.ts +35 -1
- package/dist/src/storage/rebuild.d.ts.map +1 -1
- package/dist/src/storage/rebuild.js +288 -64
- package/dist/src/storage/rebuild.js.map +1 -1
- package/dist/src/storage/tables.d.ts +29 -0
- package/dist/src/storage/tables.d.ts.map +1 -1
- package/dist/src/storage/tables.js +32 -1
- package/dist/src/storage/tables.js.map +1 -1
- package/operator/swiftbar/render-menu.py +524 -0
- package/operator/swiftbar/rift.10s.sh +176 -0
- package/package.json +9 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type KeychainOps } from "../auth/keychain.js";
|
|
2
|
-
export type CliErrorCode = "connection_refused" | "unauthorized" | "not_found" | "conflict" | "rate_limited" | "validation" | "server_error" | "unknown";
|
|
2
|
+
export type CliErrorCode = "connection_refused" | "unauthorized" | "not_found" | "invalid" | "config_too_new" | "conflict" | "rate_limited" | "validation" | "server_error" | "unknown";
|
|
3
3
|
export declare class CliError extends Error {
|
|
4
4
|
readonly code: CliErrorCode;
|
|
5
5
|
readonly statusCode?: number | undefined;
|
|
@@ -31,6 +31,98 @@ export interface HttpClient {
|
|
|
31
31
|
}>;
|
|
32
32
|
}
|
|
33
33
|
export declare function createHttpClient(opts: HttpClientOpts): HttpClient;
|
|
34
|
+
/**
|
|
35
|
+
* Single source of truth for "where is the config file?" — pure path
|
|
36
|
+
* resolution, no I/O. Per A-2.1 / A-2.2:
|
|
37
|
+
* --config wins over RIFT_CONFIG wins over default
|
|
38
|
+
* Empty / whitespace-only RIFT_CONFIG falls through to the default
|
|
39
|
+
* Relative paths are resolved with path.resolve at call time
|
|
40
|
+
*
|
|
41
|
+
* Callers that need the file to actually exist should use
|
|
42
|
+
* `requireExistingConfigPath` instead, which also classifies missing
|
|
43
|
+
* vs invalid distinctly.
|
|
44
|
+
*/
|
|
45
|
+
export declare function resolveConfigPath(globalOpts: {
|
|
46
|
+
config?: string;
|
|
47
|
+
}): string;
|
|
48
|
+
/**
|
|
49
|
+
* For commands that need an existing, valid config (search, save,
|
|
50
|
+
* import, ingest, mcp install, feedback, capture, etc.). Throws a
|
|
51
|
+
* `CliError` with code "not_found" or "invalid", whose messages are
|
|
52
|
+
* distinct per A-2.3a / A-2.3c. Caller should let the exception
|
|
53
|
+
* propagate so the top-level CLI handler renders it.
|
|
54
|
+
*/
|
|
55
|
+
export declare function requireExistingConfigPath(globalOpts: {
|
|
56
|
+
config?: string;
|
|
57
|
+
}): string;
|
|
58
|
+
/**
|
|
59
|
+
* Status-only lenient base-URL resolver. `rift status` is a diagnostic and
|
|
60
|
+
* must stay useful even when the config carries a top-level key this (older)
|
|
61
|
+
* CLI doesn't recognize yet — e.g. a newer beta wrote `codex_cli` and strict
|
|
62
|
+
* Zod parsing rejects the whole file. It reads ONLY `server.port` leniently
|
|
63
|
+
* so status can still probe the daemon and tell the friend to update.
|
|
64
|
+
*
|
|
65
|
+
* SECURITY: the host is hard-pinned to `127.0.0.1` — never read from the
|
|
66
|
+
* config. `rift status` reads the auth token and sends it to this URL, so if
|
|
67
|
+
* lenient mode honoured an arbitrary `server.host`, a malformed config could
|
|
68
|
+
* redirect Rift's secret token to a non-loopback address. The strict schema
|
|
69
|
+
* already constrains host to the `127.0.0.1` literal, so no valid config ever
|
|
70
|
+
* carries another host — there is nothing legitimate to read, and reading it
|
|
71
|
+
* would only open an exfiltration path. We pin the daemon address and vary
|
|
72
|
+
* only the port (the one field a real config legitimately changes).
|
|
73
|
+
*
|
|
74
|
+
* NEVER use this for daemon startup or any write path — strict validation
|
|
75
|
+
* (`resolveBaseUrl` / `requireExistingConfigPath`) stays the only gate there.
|
|
76
|
+
* This is a read-only, loopback-only diagnostic fallback, nothing more.
|
|
77
|
+
*
|
|
78
|
+
* Returns null when the file is missing/unreadable or not valid JSON — those
|
|
79
|
+
* are real errors the caller should surface, not "the config is just newer".
|
|
80
|
+
*/
|
|
81
|
+
export declare function resolveBaseUrlLenient(configPath: string): string | null;
|
|
82
|
+
/**
|
|
83
|
+
* No-auth probe of a daemon's /health endpoint at an explicit base URL.
|
|
84
|
+
* `/health` is unauthenticated by design, so this needs neither a token nor
|
|
85
|
+
* a round-trip through the authenticated client. Returns the daemon's own
|
|
86
|
+
* ground truth for `voyage_key_present` — the only correct source for any
|
|
87
|
+
* "is a Voyage key loaded?" gate, since the daemon (not the calling shell)
|
|
88
|
+
* is the process that saves and embeds.
|
|
89
|
+
*/
|
|
90
|
+
export declare function probeDaemonHealth(baseUrl: string): Promise<{
|
|
91
|
+
up: boolean;
|
|
92
|
+
uptimeSeconds?: number;
|
|
93
|
+
voyageKeyPresent?: boolean;
|
|
94
|
+
}>;
|
|
95
|
+
/**
|
|
96
|
+
* No-config, no-auth direct probe of the daemon's /health endpoint at the
|
|
97
|
+
* default loopback URL. Used by `rift status` only — every other command
|
|
98
|
+
* needs config and auth. Per A-2.3a/A-2.3b: `rift status` MUST NOT hard-fail
|
|
99
|
+
* when the config is absent; it renders "config missing" instead, with the
|
|
100
|
+
* daemon's actual up/down state taken from this probe.
|
|
101
|
+
*/
|
|
102
|
+
export declare function probeDefaultDaemonHealth(): Promise<{
|
|
103
|
+
up: boolean;
|
|
104
|
+
uptimeSeconds?: number;
|
|
105
|
+
voyageKeyPresent?: boolean;
|
|
106
|
+
}>;
|
|
107
|
+
/**
|
|
108
|
+
* resolveBaseUrl stays strict — only commands that actually need the
|
|
109
|
+
* daemon URL call it, and they all need a real config. Per A-2.3a:
|
|
110
|
+
* status's no-config branch MUST NOT route through here; it uses
|
|
111
|
+
* `probeDefaultDaemonHealth()` instead.
|
|
112
|
+
*/
|
|
34
113
|
export declare function resolveBaseUrl(configPath: string): string;
|
|
114
|
+
/**
|
|
115
|
+
* Read the current auth token. Checks `~/.rift/token` first, then the
|
|
116
|
+
* macOS Keychain. Returns `null` only when no token has been issued —
|
|
117
|
+
* a real "not yet onboarded" state. A locked Keychain (typical over
|
|
118
|
+
* SSH or in CI without a GUI session) is a recoverable *failure*, not
|
|
119
|
+
* a missing token, so it surfaces as a typed `CliError` with the exact
|
|
120
|
+
* `security unlock-keychain` recovery command.
|
|
121
|
+
*
|
|
122
|
+
* Without this conversion, CLI commands that call `readToken()` would
|
|
123
|
+
* leak the raw `security find-generic-password` failure to the user.
|
|
124
|
+
* Confirmed live on `0.1.0-beta.6` against an SSH'd test user, post-
|
|
125
|
+
* publish, before this fix landed.
|
|
126
|
+
*/
|
|
35
127
|
export declare function readToken(keychain?: KeychainOps): Promise<string | null>;
|
|
36
128
|
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/cli/http-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/cli/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
+
import { ZodError } from "zod";
|
|
4
5
|
import { loadConfig } from "../config/loader.js";
|
|
5
|
-
import { macKeychain } from "../auth/keychain.js";
|
|
6
|
+
import { macKeychain, LockedKeychainError, } from "../auth/keychain.js";
|
|
7
|
+
import { defaultConfigPath } from "./default-config-path.js";
|
|
6
8
|
export class CliError extends Error {
|
|
7
9
|
code;
|
|
8
10
|
statusCode;
|
|
@@ -26,14 +28,33 @@ function isConnectionRefused(err) {
|
|
|
26
28
|
}
|
|
27
29
|
return false;
|
|
28
30
|
}
|
|
31
|
+
function hasTypedError(body) {
|
|
32
|
+
return (typeof body === "object" &&
|
|
33
|
+
body !== null &&
|
|
34
|
+
typeof body.error === "string");
|
|
35
|
+
}
|
|
36
|
+
function formatTypedBody(body) {
|
|
37
|
+
if (typeof body === "string")
|
|
38
|
+
return body;
|
|
39
|
+
return JSON.stringify(body);
|
|
40
|
+
}
|
|
29
41
|
function mapStatusToError(status, body) {
|
|
30
42
|
switch (status) {
|
|
31
43
|
case 401:
|
|
32
44
|
return new CliError("Authentication failed. Run: rift token issue", "unauthorized", status, body);
|
|
33
45
|
case 404:
|
|
34
|
-
|
|
46
|
+
// Daemon-level 404 (no such endpoint) vs. response-level 404 with a
|
|
47
|
+
// typed `error` field (e.g. id_not_found). Surface the typed body so
|
|
48
|
+
// callers don't read "Endpoint not available" and route around us.
|
|
49
|
+
return new CliError(hasTypedError(body)
|
|
50
|
+
? `Not found: ${formatTypedBody(body)}`
|
|
51
|
+
: "Endpoint not available", "not_found", status, body);
|
|
35
52
|
case 409:
|
|
36
|
-
|
|
53
|
+
// Same idea: prefer the typed body (e.g. ambiguous_id) over the
|
|
54
|
+
// generic exclusive-operation message that only applies to jobs.
|
|
55
|
+
return new CliError(hasTypedError(body)
|
|
56
|
+
? `Conflict: ${formatTypedBody(body)}`
|
|
57
|
+
: "Another exclusive operation is running", "conflict", status, body);
|
|
37
58
|
case 429:
|
|
38
59
|
return new CliError("Rate limited. Retry later.", "rate_limited", status, body);
|
|
39
60
|
default:
|
|
@@ -116,18 +137,245 @@ export function createHttpClient(opts) {
|
|
|
116
137
|
},
|
|
117
138
|
};
|
|
118
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Single source of truth for "where is the config file?" — pure path
|
|
142
|
+
* resolution, no I/O. Per A-2.1 / A-2.2:
|
|
143
|
+
* --config wins over RIFT_CONFIG wins over default
|
|
144
|
+
* Empty / whitespace-only RIFT_CONFIG falls through to the default
|
|
145
|
+
* Relative paths are resolved with path.resolve at call time
|
|
146
|
+
*
|
|
147
|
+
* Callers that need the file to actually exist should use
|
|
148
|
+
* `requireExistingConfigPath` instead, which also classifies missing
|
|
149
|
+
* vs invalid distinctly.
|
|
150
|
+
*/
|
|
151
|
+
export function resolveConfigPath(globalOpts) {
|
|
152
|
+
// When `--config` is explicitly provided, Commander stores it in
|
|
153
|
+
// globalOpts.config. When the user did not pass `--config`, Commander
|
|
154
|
+
// populates globalOpts.config with the default we registered in
|
|
155
|
+
// src/cli/index.ts (i.e. defaultConfigPath()), so the env-var
|
|
156
|
+
// precedence already happened. We still re-resolve for safety: relative
|
|
157
|
+
// values from --config or env are normalized here.
|
|
158
|
+
const fromOpts = globalOpts.config;
|
|
159
|
+
if (typeof fromOpts === "string" && fromOpts.trim().length > 0) {
|
|
160
|
+
return path.resolve(fromOpts);
|
|
161
|
+
}
|
|
162
|
+
// Fallback path that should be unreachable in practice (Commander
|
|
163
|
+
// always supplies the default), kept as a defensive belt for tests
|
|
164
|
+
// that construct GlobalOpts by hand.
|
|
165
|
+
return defaultConfigPath();
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* For commands that need an existing, valid config (search, save,
|
|
169
|
+
* import, ingest, mcp install, feedback, capture, etc.). Throws a
|
|
170
|
+
* `CliError` with code "not_found" or "invalid", whose messages are
|
|
171
|
+
* distinct per A-2.3a / A-2.3c. Caller should let the exception
|
|
172
|
+
* propagate so the top-level CLI handler renders it.
|
|
173
|
+
*/
|
|
174
|
+
export function requireExistingConfigPath(globalOpts) {
|
|
175
|
+
const resolved = resolveConfigPath(globalOpts);
|
|
176
|
+
try {
|
|
177
|
+
loadConfig(resolved);
|
|
178
|
+
}
|
|
179
|
+
catch (err) {
|
|
180
|
+
if (err instanceof Error &&
|
|
181
|
+
err.code === "ENOENT") {
|
|
182
|
+
throw new CliError(`Config not found at ${resolved}. Run \`rift onboard\` to set it up, or set RIFT_CONFIG to a valid path.`, "not_found");
|
|
183
|
+
}
|
|
184
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
185
|
+
throw new CliError(`Config invalid at ${resolved}: ${reason}.`, "invalid");
|
|
186
|
+
}
|
|
187
|
+
return resolved;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Status-only lenient base-URL resolver. `rift status` is a diagnostic and
|
|
191
|
+
* must stay useful even when the config carries a top-level key this (older)
|
|
192
|
+
* CLI doesn't recognize yet — e.g. a newer beta wrote `codex_cli` and strict
|
|
193
|
+
* Zod parsing rejects the whole file. It reads ONLY `server.port` leniently
|
|
194
|
+
* so status can still probe the daemon and tell the friend to update.
|
|
195
|
+
*
|
|
196
|
+
* SECURITY: the host is hard-pinned to `127.0.0.1` — never read from the
|
|
197
|
+
* config. `rift status` reads the auth token and sends it to this URL, so if
|
|
198
|
+
* lenient mode honoured an arbitrary `server.host`, a malformed config could
|
|
199
|
+
* redirect Rift's secret token to a non-loopback address. The strict schema
|
|
200
|
+
* already constrains host to the `127.0.0.1` literal, so no valid config ever
|
|
201
|
+
* carries another host — there is nothing legitimate to read, and reading it
|
|
202
|
+
* would only open an exfiltration path. We pin the daemon address and vary
|
|
203
|
+
* only the port (the one field a real config legitimately changes).
|
|
204
|
+
*
|
|
205
|
+
* NEVER use this for daemon startup or any write path — strict validation
|
|
206
|
+
* (`resolveBaseUrl` / `requireExistingConfigPath`) stays the only gate there.
|
|
207
|
+
* This is a read-only, loopback-only diagnostic fallback, nothing more.
|
|
208
|
+
*
|
|
209
|
+
* Returns null when the file is missing/unreadable or not valid JSON — those
|
|
210
|
+
* are real errors the caller should surface, not "the config is just newer".
|
|
211
|
+
*/
|
|
212
|
+
export function resolveBaseUrlLenient(configPath) {
|
|
213
|
+
let raw;
|
|
214
|
+
try {
|
|
215
|
+
raw = fs.readFileSync(path.resolve(configPath), "utf-8");
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
let parsed;
|
|
221
|
+
try {
|
|
222
|
+
parsed = JSON.parse(raw);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
// Host is intentionally NOT read from config — always loopback (see above).
|
|
228
|
+
let port = 3577;
|
|
229
|
+
if (parsed && typeof parsed === "object") {
|
|
230
|
+
const server = parsed.server;
|
|
231
|
+
if (server && typeof server === "object") {
|
|
232
|
+
const p = server.port;
|
|
233
|
+
if (typeof p === "number" && Number.isInteger(p) && p >= 1 && p <= 65535) {
|
|
234
|
+
port = p;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return `http://127.0.0.1:${port}`;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* No-auth probe of a daemon's /health endpoint at an explicit base URL.
|
|
242
|
+
* `/health` is unauthenticated by design, so this needs neither a token nor
|
|
243
|
+
* a round-trip through the authenticated client. Returns the daemon's own
|
|
244
|
+
* ground truth for `voyage_key_present` — the only correct source for any
|
|
245
|
+
* "is a Voyage key loaded?" gate, since the daemon (not the calling shell)
|
|
246
|
+
* is the process that saves and embeds.
|
|
247
|
+
*/
|
|
248
|
+
export async function probeDaemonHealth(baseUrl) {
|
|
249
|
+
const controller = new AbortController();
|
|
250
|
+
const timer = setTimeout(() => controller.abort(), 2000);
|
|
251
|
+
try {
|
|
252
|
+
const res = await fetch(`${baseUrl.replace(/\/$/, "")}/health`, {
|
|
253
|
+
signal: controller.signal,
|
|
254
|
+
});
|
|
255
|
+
if (!res.ok)
|
|
256
|
+
return { up: false };
|
|
257
|
+
const json = (await res.json());
|
|
258
|
+
if (json.status !== "ok")
|
|
259
|
+
return { up: false };
|
|
260
|
+
const result = { up: true };
|
|
261
|
+
if (typeof json.uptime_seconds === "number")
|
|
262
|
+
result.uptimeSeconds = json.uptime_seconds;
|
|
263
|
+
if (typeof json.voyage_key_present === "boolean")
|
|
264
|
+
result.voyageKeyPresent = json.voyage_key_present;
|
|
265
|
+
return result;
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
return { up: false };
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
clearTimeout(timer);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* No-config, no-auth direct probe of the daemon's /health endpoint at the
|
|
276
|
+
* default loopback URL. Used by `rift status` only — every other command
|
|
277
|
+
* needs config and auth. Per A-2.3a/A-2.3b: `rift status` MUST NOT hard-fail
|
|
278
|
+
* when the config is absent; it renders "config missing" instead, with the
|
|
279
|
+
* daemon's actual up/down state taken from this probe.
|
|
280
|
+
*/
|
|
281
|
+
export async function probeDefaultDaemonHealth() {
|
|
282
|
+
return probeDaemonHealth("http://127.0.0.1:3577");
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* resolveBaseUrl stays strict — only commands that actually need the
|
|
286
|
+
* daemon URL call it, and they all need a real config. Per A-2.3a:
|
|
287
|
+
* status's no-config branch MUST NOT route through here; it uses
|
|
288
|
+
* `probeDefaultDaemonHealth()` instead.
|
|
289
|
+
*/
|
|
119
290
|
export function resolveBaseUrl(configPath) {
|
|
120
|
-
|
|
291
|
+
let config;
|
|
292
|
+
try {
|
|
293
|
+
config = loadConfig(configPath);
|
|
294
|
+
}
|
|
295
|
+
catch (err) {
|
|
296
|
+
if (err instanceof Error &&
|
|
297
|
+
err.code === "ENOENT") {
|
|
298
|
+
throw new CliError(`Config not found at ${configPath}. Run \`rift onboard\` to set it up, or set RIFT_CONFIG to a valid path.`, "not_found");
|
|
299
|
+
}
|
|
300
|
+
// Distinguish a forward-compatible config (newer Rift wrote keys this
|
|
301
|
+
// CLI doesn't recognize) from a genuinely broken one (a known field with
|
|
302
|
+
// a bad value, wrong type, etc.). Only the former earns the lenient
|
|
303
|
+
// "your CLI is older than your config" path in `rift status`; a real
|
|
304
|
+
// break must still surface as "config invalid" so diagnostics don't lie.
|
|
305
|
+
if (isForwardCompatConfigError(err)) {
|
|
306
|
+
throw new CliError(`Config at ${configPath} has keys this CLI does not recognize — it was written by a newer Rift.`, "config_too_new");
|
|
307
|
+
}
|
|
308
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
309
|
+
throw new CliError(`Config invalid at ${configPath}: ${reason}.`, "invalid");
|
|
310
|
+
}
|
|
121
311
|
return `http://${config.server.host}:${config.server.port}`;
|
|
122
312
|
}
|
|
313
|
+
/**
|
|
314
|
+
* True only when a config-load failure is caused EXCLUSIVELY by unrecognized
|
|
315
|
+
* TOP-LEVEL keys — i.e. a strict-schema rejection of whole sections a newer
|
|
316
|
+
* Rift added that this CLI doesn't know yet (the beta.19 `codex_cli` case).
|
|
317
|
+
*
|
|
318
|
+
* The `path.length === 0` guard is load-bearing: every nested schema is also
|
|
319
|
+
* `.strict()`, so a typo like `server: { poort: 4000 }` ALSO surfaces as an
|
|
320
|
+
* `unrecognized_keys` issue — but with a non-empty path (`["server"]`). A
|
|
321
|
+
* nested unknown key is overwhelmingly a typo, not a future feature, so it
|
|
322
|
+
* must fail closed as "invalid" and let `rift status` say "config invalid"
|
|
323
|
+
* rather than the misleading "your CLI is older than your config". Likewise a
|
|
324
|
+
* ZodError mixing `unrecognized_keys` with any other issue (bad type,
|
|
325
|
+
* out-of-range value) is broken, not forward-compatible. Forward-compat here
|
|
326
|
+
* is deliberately narrow: only brand-new top-level sections.
|
|
327
|
+
*/
|
|
328
|
+
function isForwardCompatConfigError(err) {
|
|
329
|
+
if (!(err instanceof ZodError))
|
|
330
|
+
return false;
|
|
331
|
+
if (err.issues.length === 0)
|
|
332
|
+
return false;
|
|
333
|
+
return err.issues.every((issue) => issue.code === "unrecognized_keys" && issue.path.length === 0);
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Read the current auth token. Checks `~/.rift/token` first, then the
|
|
337
|
+
* macOS Keychain. Returns `null` only when no token has been issued —
|
|
338
|
+
* a real "not yet onboarded" state. A locked Keychain (typical over
|
|
339
|
+
* SSH or in CI without a GUI session) is a recoverable *failure*, not
|
|
340
|
+
* a missing token, so it surfaces as a typed `CliError` with the exact
|
|
341
|
+
* `security unlock-keychain` recovery command.
|
|
342
|
+
*
|
|
343
|
+
* Without this conversion, CLI commands that call `readToken()` would
|
|
344
|
+
* leak the raw `security find-generic-password` failure to the user.
|
|
345
|
+
* Confirmed live on `0.1.0-beta.6` against an SSH'd test user, post-
|
|
346
|
+
* publish, before this fix landed.
|
|
347
|
+
*/
|
|
123
348
|
export async function readToken(keychain = macKeychain) {
|
|
124
349
|
const fileToken = readTokenFromFile();
|
|
125
350
|
if (fileToken !== null)
|
|
126
351
|
return fileToken;
|
|
127
|
-
|
|
352
|
+
let version;
|
|
353
|
+
try {
|
|
354
|
+
version = await keychain.findLatestVersion();
|
|
355
|
+
}
|
|
356
|
+
catch (err) {
|
|
357
|
+
if (err instanceof LockedKeychainError) {
|
|
358
|
+
throw lockedKeychainCliError();
|
|
359
|
+
}
|
|
360
|
+
throw err;
|
|
361
|
+
}
|
|
128
362
|
if (version === 0)
|
|
129
363
|
return null;
|
|
130
|
-
|
|
364
|
+
try {
|
|
365
|
+
return await keychain.read(version);
|
|
366
|
+
}
|
|
367
|
+
catch (err) {
|
|
368
|
+
if (err instanceof LockedKeychainError) {
|
|
369
|
+
throw lockedKeychainCliError();
|
|
370
|
+
}
|
|
371
|
+
throw err;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
function lockedKeychainCliError() {
|
|
375
|
+
return new CliError("Login Keychain is locked (typical over SSH). Run: " +
|
|
376
|
+
"`security unlock-keychain ~/Library/Keychains/login.keychain-db` " +
|
|
377
|
+
"(it will prompt for your Mac login password), then re-run the command. " +
|
|
378
|
+
"For local Terminal sessions this should not happen — please file feedback if it does.", "unauthorized");
|
|
131
379
|
}
|
|
132
380
|
function readTokenFromFile() {
|
|
133
381
|
const home = os.homedir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/cli/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/cli/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,wBAAgB,aAAa,IAAI,OAAO,CAqCvC"}
|
package/dist/src/cli/index.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from "commander";
|
|
3
|
+
import { realpathSync } from "node:fs";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
3
5
|
import { getBuildInfo } from "../server/build-info.js";
|
|
6
|
+
import { defaultConfigPath } from "./default-config-path.js";
|
|
4
7
|
import { makeTokenIssueCommand } from "./commands/token-issue.js";
|
|
5
8
|
import { makeStatusCommand } from "./commands/status.js";
|
|
9
|
+
import { makeDoctorCommand } from "./commands/doctor.js";
|
|
6
10
|
import { makeStatsCommand } from "./commands/stats.js";
|
|
7
11
|
import { makeSearchCommand } from "./commands/search.js";
|
|
8
12
|
import { makeSaveCommand } from "./commands/save.js";
|
|
@@ -22,17 +26,20 @@ import { makeMcpCommand } from "./commands/mcp-install.js";
|
|
|
22
26
|
import { makeHooksCommand } from "./commands/hooks-install.js";
|
|
23
27
|
import { makeFeedbackCommand } from "./commands/feedback.js";
|
|
24
28
|
import { makeUninstallCommand } from "./commands/uninstall.js";
|
|
29
|
+
import { makeUpdateCommand } from "./commands/update.js";
|
|
30
|
+
import { makeMenuBarCommand } from "./commands/menubar.js";
|
|
25
31
|
export function createProgram() {
|
|
26
32
|
const program = new Command()
|
|
27
33
|
.name("rift")
|
|
28
34
|
.description("CLI for the Rift daemon")
|
|
29
35
|
.version(getBuildInfo().version)
|
|
30
|
-
.option("--config <path>", "Path to config.json",
|
|
36
|
+
.option("--config <path>", "Path to config.json", defaultConfigPath())
|
|
31
37
|
.option("--json", "Output as JSON", false);
|
|
32
38
|
const tokenCmd = new Command("token").description("Token management");
|
|
33
39
|
tokenCmd.addCommand(makeTokenIssueCommand());
|
|
34
40
|
program.addCommand(tokenCmd);
|
|
35
41
|
program.addCommand(makeStatusCommand());
|
|
42
|
+
program.addCommand(makeDoctorCommand());
|
|
36
43
|
program.addCommand(makeStatsCommand());
|
|
37
44
|
program.addCommand(makeSearchCommand());
|
|
38
45
|
program.addCommand(makeSaveCommand());
|
|
@@ -52,14 +59,30 @@ export function createProgram() {
|
|
|
52
59
|
program.addCommand(makeHooksCommand());
|
|
53
60
|
program.addCommand(makeFeedbackCommand());
|
|
54
61
|
program.addCommand(makeUninstallCommand());
|
|
62
|
+
program.addCommand(makeUpdateCommand());
|
|
63
|
+
program.addCommand(makeMenuBarCommand());
|
|
55
64
|
return program;
|
|
56
65
|
}
|
|
57
66
|
// Only run when executed directly (not when imported for testing).
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
// Compare the realpath of the running script against the realpath of
|
|
68
|
+
// process.argv[1]. This handles the npm-global `bin/rift` symlink case:
|
|
69
|
+
// when invoked as `~/.npm-global/bin/rift`, argv[1] is the symlink path
|
|
70
|
+
// (does not end in `/cli/index.js`), but its realpath resolves to the
|
|
71
|
+
// actual cli/index.js file. Without this realpath compare, every
|
|
72
|
+
// fresh-install CLI invocation silently no-ops.
|
|
73
|
+
function isDirectExecution() {
|
|
74
|
+
if (typeof process === "undefined" || !process.argv[1])
|
|
75
|
+
return false;
|
|
76
|
+
try {
|
|
77
|
+
const me = realpathSync(fileURLToPath(import.meta.url));
|
|
78
|
+
const invoked = realpathSync(process.argv[1]);
|
|
79
|
+
return me === invoked;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (isDirectExecution()) {
|
|
63
86
|
createProgram().parseAsync().catch((err) => {
|
|
64
87
|
process.stderr.write(`Fatal: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
65
88
|
process.exitCode = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort global-install hook for the SwiftBar menu plugin.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists in addition to `scripts/install.sh` and `rift update`:
|
|
5
|
+
* friends already on beta.13 will run the beta.13 `rift update` command.
|
|
6
|
+
* That old command can install the beta.14 tarball, but it cannot call the
|
|
7
|
+
* new beta.14 menu-refresh code after npm finishes. npm's postinstall hook
|
|
8
|
+
* runs from the newly-installed package, so it bridges that first update.
|
|
9
|
+
*
|
|
10
|
+
* Local developer installs skip this by default; only global npm installs
|
|
11
|
+
* run it. Failures are non-fatal because the CLI/daemon install is more
|
|
12
|
+
* important than the ambient menu surface.
|
|
13
|
+
*/
|
|
14
|
+
import { installMenuBar } from "./commands/menubar.js";
|
|
15
|
+
type PostinstallMenuBarInstaller = () => ReturnType<typeof installMenuBar>;
|
|
16
|
+
type PostinstallOutput = {
|
|
17
|
+
write(chunk: string): unknown;
|
|
18
|
+
};
|
|
19
|
+
export declare function shouldRunPostinstallMenuBar(env?: NodeJS.ProcessEnv): boolean;
|
|
20
|
+
export declare function runPostinstallMenuBar(install?: PostinstallMenuBarInstaller, output?: PostinstallOutput): void;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=postinstall-menubar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall-menubar.d.ts","sourceRoot":"","sources":["../../../src/cli/postinstall-menubar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,KAAK,2BAA2B,GAAG,MAAM,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC3E,KAAK,iBAAiB,GAAG;IAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAE3D,wBAAgB,2BAA2B,CACzC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAIT;AAED,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,2BAA4C,EACrD,MAAM,GAAE,iBAAkC,GACzC,IAAI,CA4BN"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Best-effort global-install hook for the SwiftBar menu plugin.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists in addition to `scripts/install.sh` and `rift update`:
|
|
5
|
+
* friends already on beta.13 will run the beta.13 `rift update` command.
|
|
6
|
+
* That old command can install the beta.14 tarball, but it cannot call the
|
|
7
|
+
* new beta.14 menu-refresh code after npm finishes. npm's postinstall hook
|
|
8
|
+
* runs from the newly-installed package, so it bridges that first update.
|
|
9
|
+
*
|
|
10
|
+
* Local developer installs skip this by default; only global npm installs
|
|
11
|
+
* run it. Failures are non-fatal because the CLI/daemon install is more
|
|
12
|
+
* important than the ambient menu surface.
|
|
13
|
+
*/
|
|
14
|
+
import { installMenuBar } from "./commands/menubar.js";
|
|
15
|
+
export function shouldRunPostinstallMenuBar(env = process.env) {
|
|
16
|
+
if (env.RIFT_SKIP_POSTINSTALL_MENUBAR === "1")
|
|
17
|
+
return false;
|
|
18
|
+
if (env.RIFT_POSTINSTALL_MENUBAR === "1")
|
|
19
|
+
return true;
|
|
20
|
+
return env.npm_config_global === "true" || env.npm_config_location === "global";
|
|
21
|
+
}
|
|
22
|
+
export function runPostinstallMenuBar(install = installMenuBar, output = process.stdout) {
|
|
23
|
+
try {
|
|
24
|
+
const result = install();
|
|
25
|
+
if (result.skipped) {
|
|
26
|
+
output.write(`Rift menu bar skipped: ${result.reason ?? "not available"}\n`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (result.menuVisible) {
|
|
30
|
+
output.write("Rift menu bar installed — the Rift icon is in your menu bar.\n");
|
|
31
|
+
}
|
|
32
|
+
else if (result.recovery) {
|
|
33
|
+
// The plugin is installed but the icon is not showing yet — SwiftBar is
|
|
34
|
+
// missing, or present-but-unlaunchable, or we could not point it at the
|
|
35
|
+
// plugin folder. Make that visible (never a silent "installed") and lead
|
|
36
|
+
// with the case-accurate headline, then the one next step.
|
|
37
|
+
output.write(result.swiftBarDetected
|
|
38
|
+
? "Rift menu bar installed, but the icon isn't showing yet.\n"
|
|
39
|
+
: "Rift menu bar installed, but SwiftBar is not present to show it.\n");
|
|
40
|
+
output.write(` ${result.recovery}\n`);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
output.write("Rift menu bar installed.\n");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
output.write(`Rift menu bar install skipped: ${err instanceof Error ? err.message : String(err)}\n`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (shouldRunPostinstallMenuBar()) {
|
|
51
|
+
runPostinstallMenuBar();
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=postinstall-menubar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postinstall-menubar.js","sourceRoot":"","sources":["../../../src/cli/postinstall-menubar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAKvD,MAAM,UAAU,2BAA2B,CACzC,MAAyB,OAAO,CAAC,GAAG;IAEpC,IAAI,GAAG,CAAC,6BAA6B,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAC5D,IAAI,GAAG,CAAC,wBAAwB,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,GAAG,CAAC,iBAAiB,KAAK,MAAM,IAAI,GAAG,CAAC,mBAAmB,KAAK,QAAQ,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAuC,cAAc,EACrD,SAA4B,OAAO,CAAC,MAAM;IAE1C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,0BAA0B,MAAM,CAAC,MAAM,IAAI,eAAe,IAAI,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACjF,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3B,wEAAwE;YACxE,wEAAwE;YACxE,yEAAyE;YACzE,2DAA2D;YAC3D,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,gBAAgB;gBACrB,CAAC,CAAC,4DAA4D;gBAC9D,CAAC,CAAC,oEAAoE,CACzE,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACV,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,2BAA2B,EAAE,EAAE,CAAC;IAClC,qBAAqB,EAAE,CAAC;AAC1B,CAAC"}
|