@getrift/rift 0.1.0-beta.2 → 0.1.0-beta.20
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 +30 -0
- package/dist/src/cli/commands/menubar.d.ts.map +1 -0
- package/dist/src/cli/commands/menubar.js +180 -0
- package/dist/src/cli/commands/menubar.js.map +1 -0
- package/dist/src/cli/commands/onboard.d.ts +129 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -1
- package/dist/src/cli/commands/onboard.js +752 -171
- 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 +113 -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 +378 -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 +39 -0
- package/dist/src/cli/postinstall-menubar.js.map +1 -0
- package/dist/src/cli/status/friend-header.d.ts +8 -1
- package/dist/src/cli/status/friend-header.d.ts.map +1 -1
- package/dist/src/cli/status/friend-header.js +334 -26
- package/dist/src/cli/status/friend-header.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 +106 -0
- package/dist/src/diagnostics/doctor.d.ts.map +1 -0
- package/dist/src/diagnostics/doctor.js +334 -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,3 +1,4 @@
|
|
|
1
|
+
import { formatOnboardingDuration } from "../../observability/onboarding-metric.js";
|
|
1
2
|
export function renderFriendHeader(input) {
|
|
2
3
|
const { status } = input;
|
|
3
4
|
const now = input.now ? input.now() : Date.now();
|
|
@@ -7,30 +8,125 @@ export function renderFriendHeader(input) {
|
|
|
7
8
|
lines.push("Next: run: launchctl kickstart -k gui/$UID/com.getrift.daemon");
|
|
8
9
|
return lines;
|
|
9
10
|
}
|
|
11
|
+
// Derive when the current daemon process started so we can tell
|
|
12
|
+
// "happened during this uptime" from "historical error from a prior
|
|
13
|
+
// run." Without this, a 20h-old schema_mismatch keeps advertising
|
|
14
|
+
// "broken" in the Next: line for a full 24h after a perfectly
|
|
15
|
+
// healthy respawn.
|
|
16
|
+
const daemonStartMs = now - status.daemon.uptime_seconds * 1000;
|
|
10
17
|
// 1. version + daemon
|
|
11
|
-
lines.push(`Rift v${status.build.version} · daemon: running (uptime ${formatDuration(status.daemon.uptime_seconds)}) · port ${status.daemon.port}
|
|
18
|
+
lines.push(`Rift v${status.build.version} · daemon: running (uptime ${formatDuration(status.daemon.uptime_seconds)}) · port ${status.daemon.port}${status.daemon.voyage_key_present ? " ✓" : status.daemon.capture_enabled ? " ✗" : ""}`);
|
|
12
19
|
// 2. voyage
|
|
13
20
|
lines.push(renderVoyageLine(input, now));
|
|
14
|
-
// 3.
|
|
21
|
+
// 3. index — distinct from voyage: an embed can succeed but the
|
|
22
|
+
// downstream LanceDB write can still fail (schema, lock, IO).
|
|
23
|
+
// Without this line the user has no signal that "embedded" does not
|
|
24
|
+
// imply "searchable yet".
|
|
25
|
+
lines.push(renderIndexLine(status.index, now));
|
|
26
|
+
// 4. inbox — surfaces drop-folder freshness. Distinct from index:
|
|
27
|
+
// a watcher-fed write can succeed at the index lane without ever
|
|
28
|
+
// having processed an inbox file. This line is the user-visible
|
|
29
|
+
// confirmation that the inbox path itself is wired up and current.
|
|
30
|
+
lines.push(renderInboxLine(status.inbox, now));
|
|
31
|
+
// 5. codex
|
|
15
32
|
lines.push(renderCodexLine(status.codex, now));
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
//
|
|
33
|
+
// 6. capture — when the daemon's own scheduled loop is failing but a
|
|
34
|
+
// manual run is working, split into "what works now" (the manual run)
|
|
35
|
+
// plus an honest "Automatic:" advisory, so a manual success never
|
|
36
|
+
// paints the scheduled loop green. Collapses back to one line once the
|
|
37
|
+
// daemon records a healthy run.
|
|
38
|
+
const daemonCaptureStale = isDaemonCaptureStale(status.capture, daemonStartMs);
|
|
39
|
+
lines.push(renderCaptureLine(status.capture, now, daemonCaptureStale));
|
|
40
|
+
const automaticCaptureLine = renderAutomaticCaptureLine(status.capture, now, daemonCaptureStale);
|
|
41
|
+
if (automaticCaptureLine)
|
|
42
|
+
lines.push(automaticCaptureLine);
|
|
43
|
+
// 7. MCP
|
|
19
44
|
lines.push(renderMcpLine(input.mcpClients));
|
|
20
|
-
//
|
|
21
|
-
lines.push(`Feedback: ${status.feedback
|
|
22
|
-
|
|
23
|
-
|
|
45
|
+
// 8. feedback
|
|
46
|
+
lines.push(`Feedback: ${renderFeedbackLine(status.feedback)}`);
|
|
47
|
+
// 9. update — surfaced only when the daemon's last probe found a
|
|
48
|
+
// newer beta. Probe failures and up-to-date installs print nothing
|
|
49
|
+
// so npm reachability cannot make Rift look broken.
|
|
50
|
+
const updateLine = renderUpdateLine(status.update);
|
|
51
|
+
if (updateLine)
|
|
52
|
+
lines.push(updateLine);
|
|
53
|
+
// 10. onboarding — `time_to_first_useful_recall`. Hidden state prints
|
|
54
|
+
// nothing so a fresh post-onboard install never shows a stale
|
|
55
|
+
// placeholder. Pending shows the in-flight wait; completed shows
|
|
56
|
+
// the captured duration + the MCP tool that closed it.
|
|
57
|
+
const onboardingLine = renderOnboardingLine(status.onboarding, now);
|
|
58
|
+
if (onboardingLine)
|
|
59
|
+
lines.push(onboardingLine);
|
|
24
60
|
lines.push("");
|
|
25
|
-
lines.push(`Next: ${decideNextLine({ status, mcpClients: input.mcpClients })}`);
|
|
61
|
+
lines.push(`Next: ${decideNextLine({ status, mcpClients: input.mcpClients, daemonStartMs })}`);
|
|
26
62
|
return lines;
|
|
27
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* True only when `iso` parses to a timestamp after the daemon's current
|
|
66
|
+
* start. Historical errors that predate the running process are not
|
|
67
|
+
* current and must not drive the Next: nudge — a friend with a healthy
|
|
68
|
+
* respawned daemon would otherwise see "broken, file feedback" for the
|
|
69
|
+
* full 24h window every error class keeps.
|
|
70
|
+
*/
|
|
71
|
+
function isCurrentUptime(iso, daemonStartMs) {
|
|
72
|
+
if (!iso)
|
|
73
|
+
return false;
|
|
74
|
+
const ts = Date.parse(iso);
|
|
75
|
+
if (Number.isNaN(ts))
|
|
76
|
+
return false;
|
|
77
|
+
return ts >= daemonStartMs;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Translate internal error class names into copy a friend can act on.
|
|
81
|
+
* Falls back to the raw class so new/unknown values still surface
|
|
82
|
+
* (better an unfamiliar word than a missing one).
|
|
83
|
+
*/
|
|
84
|
+
function humanizeErrorClass(reason) {
|
|
85
|
+
if (!reason)
|
|
86
|
+
return "unknown";
|
|
87
|
+
switch (reason) {
|
|
88
|
+
case "schema_mismatch":
|
|
89
|
+
return "index format changed by update";
|
|
90
|
+
case "lock_conflict":
|
|
91
|
+
return "index busy (concurrent write)";
|
|
92
|
+
case "provider_400":
|
|
93
|
+
return "embedding rejected by Voyage";
|
|
94
|
+
case "network":
|
|
95
|
+
return "network error";
|
|
96
|
+
default:
|
|
97
|
+
return reason;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function renderFeedbackLine(feedback) {
|
|
101
|
+
if (feedback.relay_enabled) {
|
|
102
|
+
return "relay on (local JSONL + Clem-side relay)";
|
|
103
|
+
}
|
|
104
|
+
if (feedback.contact_opted_in) {
|
|
105
|
+
// Opted in for updates, but no relay endpoint is wired yet — be honest
|
|
106
|
+
// that nothing is transmitting, without telling them to "opt in" again.
|
|
107
|
+
return "opted in — stays local until the beta relay is live";
|
|
108
|
+
}
|
|
109
|
+
return "relay off (local JSONL only) — opt in via rift onboard";
|
|
110
|
+
}
|
|
111
|
+
function renderUpdateLine(update) {
|
|
112
|
+
if (!update.available)
|
|
113
|
+
return null;
|
|
114
|
+
if (!update.latest_beta)
|
|
115
|
+
return null;
|
|
116
|
+
return `Update: available ${update.installed} → ${update.latest_beta} — run: rift update`;
|
|
117
|
+
}
|
|
28
118
|
function renderVoyageLine(input, now) {
|
|
29
119
|
const { status, voyageLast4 } = input;
|
|
30
120
|
if (!status)
|
|
31
121
|
return "Voyage: unknown";
|
|
32
122
|
if (!status.daemon.voyage_key_present) {
|
|
33
|
-
|
|
123
|
+
// No key is an intentional local mode, not a fault: keyword (lexical)
|
|
124
|
+
// search is fully on; only semantic search is off. We only nudge toward a
|
|
125
|
+
// Voyage key when a feature that actually needs one (auto-capture) is
|
|
126
|
+
// enabled — otherwise the line must read as "working as configured."
|
|
127
|
+
return status.daemon.capture_enabled
|
|
128
|
+
? "Search: keyword on, semantic off — auto-capture needs a Voyage key: rift onboard --reconfigure-voyage"
|
|
129
|
+
: "Search: keyword on · semantic off (no Voyage key — local mode)";
|
|
34
130
|
}
|
|
35
131
|
const last4 = voyageLast4 ? `last 4 …${voyageLast4}` : "key valid";
|
|
36
132
|
const labelSuffix = status.voyage.project_label
|
|
@@ -39,26 +135,151 @@ function renderVoyageLine(input, now) {
|
|
|
39
135
|
const embedSuffix = status.voyage.last_embed_at
|
|
40
136
|
? `, last embed ${formatAge(status.voyage.last_embed_at, now)}`
|
|
41
137
|
: "";
|
|
42
|
-
|
|
138
|
+
const errorSuffix = status.voyage.last_error_at
|
|
139
|
+
? ` · last error ${formatAge(status.voyage.last_error_at, now)} (${status.voyage.last_error_reason ?? "unknown"})`
|
|
140
|
+
: "";
|
|
141
|
+
return `Voyage: key valid (${last4}${embedSuffix})${labelSuffix}${errorSuffix}`;
|
|
142
|
+
}
|
|
143
|
+
function renderIndexLine(index, now) {
|
|
144
|
+
if (index.last_update_at === null && index.last_error_at === null) {
|
|
145
|
+
return "Index: no writes yet";
|
|
146
|
+
}
|
|
147
|
+
const updateSuffix = index.last_update_at
|
|
148
|
+
? `last update ${formatAge(index.last_update_at, now)}`
|
|
149
|
+
: "no writes yet";
|
|
150
|
+
const errorSuffix = index.last_error_at
|
|
151
|
+
? ` · last error ${formatAge(index.last_error_at, now)} (${index.last_error_reason ?? "unknown"})`
|
|
152
|
+
: "";
|
|
153
|
+
return `Index: ${updateSuffix}${errorSuffix}`;
|
|
154
|
+
}
|
|
155
|
+
function renderInboxLine(inbox, now) {
|
|
156
|
+
// Older daemons (pre-this-slice) don't ship an `inbox` block. Treat
|
|
157
|
+
// the missing block exactly as "idle" — the line stays present and
|
|
158
|
+
// the CLI never crashes on a cross-version mismatch.
|
|
159
|
+
if (!inbox ||
|
|
160
|
+
(inbox.last_import_at === null &&
|
|
161
|
+
inbox.last_error_at === null &&
|
|
162
|
+
inbox.pending === 0)) {
|
|
163
|
+
return "Inbox: nothing dropped yet — drop a web export under data/inbox/";
|
|
164
|
+
}
|
|
165
|
+
const parts = [];
|
|
166
|
+
if (inbox.last_import_at) {
|
|
167
|
+
parts.push(`last import ${formatAge(inbox.last_import_at, now)}`);
|
|
168
|
+
}
|
|
169
|
+
if (inbox.pending > 0) {
|
|
170
|
+
parts.push(`${inbox.pending} pending`);
|
|
171
|
+
}
|
|
172
|
+
const head = parts.length > 0 ? parts.join(" · ") : "idle";
|
|
173
|
+
const errorSuffix = inbox.last_error_at
|
|
174
|
+
? ` · last error ${formatAge(inbox.last_error_at, now)} (${inbox.last_error_reason ?? "unknown"})`
|
|
175
|
+
: "";
|
|
176
|
+
return `Inbox: ${head}${errorSuffix}`;
|
|
43
177
|
}
|
|
44
178
|
function renderCodexLine(codex, now) {
|
|
45
179
|
if (codex.last_preflight_at === null) {
|
|
46
|
-
return "Codex CLI:
|
|
180
|
+
return "Codex CLI: not checked yet — auto-capture has not run";
|
|
47
181
|
}
|
|
48
182
|
if (codex.last_preflight_ok === true) {
|
|
49
|
-
return `Codex CLI: authed ✓ (last
|
|
183
|
+
return `Codex CLI: authed ✓ (last checked: ${formatAge(codex.last_preflight_at, now)})`;
|
|
184
|
+
}
|
|
185
|
+
const checked = `last checked: ${formatAge(codex.last_preflight_at, now)}`;
|
|
186
|
+
if (codex.last_preflight_error_class === "auth") {
|
|
187
|
+
return `Codex CLI: auth expired ✗ (${checked}) — run: codex login`;
|
|
50
188
|
}
|
|
51
|
-
|
|
189
|
+
// Not auth — say what actually failed and don't nag about login.
|
|
190
|
+
const summary = codex.last_preflight_error_summary ?? "Codex preflight failed.";
|
|
191
|
+
return `Codex CLI: probe failing ✗ (${checked}) — ${summary}`;
|
|
52
192
|
}
|
|
53
|
-
|
|
193
|
+
/**
|
|
194
|
+
* True when the daemon's own scheduled loop last failed (during this
|
|
195
|
+
* uptime) but the newest run is a healthy ad-hoc run (a manual `rift
|
|
196
|
+
* capture` or the onboard first-capture pass). This is the "capture works
|
|
197
|
+
* now, but automation is still failing" split — kept in sync with the
|
|
198
|
+
* `capture_daemon_stale` check in diagnostics/doctor.ts.
|
|
199
|
+
*
|
|
200
|
+
* `last_daemon_failed` carries the full failure verdict (a `run_ok`-only
|
|
201
|
+
* check would miss the common expired-Codex case, which completes with
|
|
202
|
+
* `run_ok: true, preflight_ok: false`). The newest run must be a non-daemon
|
|
203
|
+
* trigger — legacy untagged rows report as `daemon`, so `!== "daemon"`
|
|
204
|
+
* cleanly means manual or onboard.
|
|
205
|
+
*/
|
|
206
|
+
function isDaemonCaptureStale(capture, daemonStartMs) {
|
|
207
|
+
return (capture.last_daemon_failed === true &&
|
|
208
|
+
isCurrentUptime(capture.last_daemon_run_at ?? null, daemonStartMs) &&
|
|
209
|
+
capture.last_run_trigger != null &&
|
|
210
|
+
capture.last_run_trigger !== "daemon" &&
|
|
211
|
+
capture.last_run_ok === true &&
|
|
212
|
+
capture.last_errors === 0);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Split the parked-oversized count into "still self-repairing" vs. "exhausted
|
|
216
|
+
* retries, needs a manual save". The daemon ships explicit `oversized_repairing`
|
|
217
|
+
* / `oversized_repair_failed`; an older daemon omits them, so we fall back to
|
|
218
|
+
* treating every parked session as still-repairing (`parked - failed`, with
|
|
219
|
+
* failed defaulting to 0) — the calm, accurate read for a daemon that simply
|
|
220
|
+
* hasn't reported a budget yet.
|
|
221
|
+
*/
|
|
222
|
+
function deriveParkedState(capture) {
|
|
223
|
+
const parked = capture.oversized_parked ?? 0;
|
|
224
|
+
const failed = capture.oversized_repair_failed ?? 0;
|
|
225
|
+
const repairing = capture.oversized_repairing ?? Math.max(parked - failed, 0);
|
|
226
|
+
return { parked, repairing, failed };
|
|
227
|
+
}
|
|
228
|
+
function renderCaptureLine(capture, now, daemonStale) {
|
|
54
229
|
if (capture.last_run_at === null) {
|
|
55
|
-
|
|
230
|
+
const nextOnly = formatNextRunSuffix(capture.next_run_at, now);
|
|
231
|
+
return nextOnly
|
|
232
|
+
? `Capture: no runs yet · ${nextOnly}`
|
|
233
|
+
: "Capture: no runs yet";
|
|
56
234
|
}
|
|
57
235
|
const age = formatAge(capture.last_run_at, now);
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
236
|
+
const runLabel = capture.last_run_trigger === "manual" ? "last manual run" : "last run";
|
|
237
|
+
// Driven by the parked-session count (state of the world), NOT
|
|
238
|
+
// `last_quarantined` (the last run's count) — otherwise this visible line
|
|
239
|
+
// flickers between showing and hiding as a stable oversized file dedups on
|
|
240
|
+
// one run and re-quarantines on the next. Large sessions now self-repair in
|
|
241
|
+
// the background, so the suffix reports honest state: "saving …" while Rift
|
|
242
|
+
// is still recovering them, "need a manual save" only once retries are
|
|
243
|
+
// exhausted — never a bare "run the repair command" on a self-healing path.
|
|
244
|
+
const { repairing, failed } = deriveParkedState(capture);
|
|
245
|
+
const parkedSuffix = failed > 0
|
|
246
|
+
? ` · ${failed} large session${failed === 1 ? "" : "s"} need a manual save`
|
|
247
|
+
: repairing > 0
|
|
248
|
+
? ` · saving ${repairing} large session${repairing === 1 ? "" : "s"} to memory`
|
|
249
|
+
: "";
|
|
250
|
+
// When the split "Automatic:" line is shown it carries the daemon's next
|
|
251
|
+
// tick, so keep it off this line — otherwise a manual run would look
|
|
252
|
+
// scheduled. With no split, this line keeps the next-tick hint.
|
|
253
|
+
const nextSuffix = daemonStale
|
|
254
|
+
? null
|
|
255
|
+
: formatNextRunSuffix(capture.next_run_at, now);
|
|
256
|
+
const nextPart = nextSuffix ? ` · ${nextSuffix}` : "";
|
|
257
|
+
return `Capture: ${runLabel} ${age} — ${capture.last_saved} saved · ${capture.last_review} review · ${capture.last_errors} failed${parkedSuffix}${nextPart}`;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* The "Automatic:" advisory line — shown only when `isDaemonCaptureStale`
|
|
261
|
+
* holds (the scheduled loop's last run failed while a manual run is
|
|
262
|
+
* working). Returns null otherwise; a healthy or not-yet-run daemon needs
|
|
263
|
+
* no second capture line.
|
|
264
|
+
*/
|
|
265
|
+
function renderAutomaticCaptureLine(capture, now, daemonStale) {
|
|
266
|
+
if (!daemonStale || !capture.last_daemon_run_at)
|
|
267
|
+
return null;
|
|
268
|
+
const age = formatAge(capture.last_daemon_run_at, now);
|
|
269
|
+
const nextSuffix = formatNextRunSuffix(capture.next_run_at, now);
|
|
270
|
+
const nextPart = nextSuffix ? ` · ${nextSuffix}` : "";
|
|
271
|
+
return `Automatic: last daemon run ${age} failed${nextPart}`;
|
|
272
|
+
}
|
|
273
|
+
function formatNextRunSuffix(iso, now) {
|
|
274
|
+
if (!iso)
|
|
275
|
+
return null;
|
|
276
|
+
const then = Date.parse(iso);
|
|
277
|
+
if (Number.isNaN(then))
|
|
278
|
+
return null;
|
|
279
|
+
const deltaSeconds = Math.round((then - now) / 1000);
|
|
280
|
+
if (deltaSeconds <= 0)
|
|
281
|
+
return "next tick due";
|
|
282
|
+
return `next in ${formatDuration(deltaSeconds)}`;
|
|
62
283
|
}
|
|
63
284
|
function renderMcpLine(clients) {
|
|
64
285
|
if (clients.length === 0)
|
|
@@ -69,20 +290,84 @@ function renderMcpLine(clients) {
|
|
|
69
290
|
return `MCP: ${parts.join(" · ")}`;
|
|
70
291
|
}
|
|
71
292
|
function decideNextLine(input) {
|
|
72
|
-
const { status, mcpClients } = input;
|
|
73
|
-
|
|
74
|
-
|
|
293
|
+
const { status, mcpClients, daemonStartMs } = input;
|
|
294
|
+
// A missing key is only an action item when something needs it. With
|
|
295
|
+
// auto-capture off, no-key is the intended local mode, so it must not claim
|
|
296
|
+
// the Next: line — that would read as "broken" on a healthy local install.
|
|
297
|
+
if (!status.daemon.voyage_key_present && status.daemon.capture_enabled) {
|
|
298
|
+
return "Auto-capture is on but has no Voyage key to embed with → run: rift onboard --reconfigure-voyage";
|
|
75
299
|
}
|
|
76
300
|
if (status.codex.last_preflight_ok === false) {
|
|
77
|
-
|
|
301
|
+
if (status.codex.last_preflight_error_class === "auth") {
|
|
302
|
+
return "Codex auth expired → run: codex login";
|
|
303
|
+
}
|
|
304
|
+
if (status.codex.last_preflight_error_class === "model") {
|
|
305
|
+
return "Codex rejected the model → set codex_cli.model, then: rift capture";
|
|
306
|
+
}
|
|
307
|
+
if (status.codex.last_preflight_error_class === "binary") {
|
|
308
|
+
return "Codex CLI missing or moved → reinstall/upgrade codex, then: rift capture";
|
|
309
|
+
}
|
|
310
|
+
return "Codex capture probe failing → re-run: rift capture";
|
|
311
|
+
}
|
|
312
|
+
// Recency gating: only errors stamped *after* the current daemon
|
|
313
|
+
// start can drive the Next: action. A 20h-old schema_mismatch from a
|
|
314
|
+
// prior process should not advertise "broken, file feedback" on a
|
|
315
|
+
// healthy respawn.
|
|
316
|
+
if (isCurrentUptime(status.voyage.last_error_at, daemonStartMs)) {
|
|
317
|
+
return `Voyage embedding errors since daemon start (${humanizeErrorClass(status.voyage.last_error_reason)}) → run: rift feedback --kind=broke --with-status`;
|
|
78
318
|
}
|
|
79
|
-
if (status.
|
|
319
|
+
if (isCurrentUptime(status.index.last_error_at, daemonStartMs)) {
|
|
320
|
+
return `Index write errors since daemon start (${humanizeErrorClass(status.index.last_error_reason)}) → run: rift feedback --kind=broke --with-status`;
|
|
321
|
+
}
|
|
322
|
+
// Inbox import failures are usually the user's own drop being rejected
|
|
323
|
+
// (malformed export, corrupted ZIP, unsupported source). The fix is on
|
|
324
|
+
// their side — re-drop a fresh export — not in the feedback flow.
|
|
325
|
+
// We deliberately do NOT name `data/quarantine/`: pre-parse failures
|
|
326
|
+
// (e.g. corrupted ZIPs that throw inside extractArchive) never write
|
|
327
|
+
// a quarantine record, so the path would point at an empty folder.
|
|
328
|
+
// Only the parser-level per-conversation failures land there, and
|
|
329
|
+
// the user doesn't need to disambiguate before re-dropping.
|
|
330
|
+
if (status.inbox && isCurrentUptime(status.inbox.last_error_at, daemonStartMs)) {
|
|
331
|
+
return `Inbox import errors since daemon start (${humanizeErrorClass(status.inbox.last_error_reason)}) → re-drop a fresh export under data/inbox/`;
|
|
332
|
+
}
|
|
333
|
+
// Capture errors only count when the failing run happened during the
|
|
334
|
+
// current daemon uptime — a prior process's failure shouldn't keep
|
|
335
|
+
// nudging the friend post-respawn.
|
|
336
|
+
if (status.capture.last_errors > 0 &&
|
|
337
|
+
isCurrentUptime(status.capture.last_run_at, daemonStartMs)) {
|
|
80
338
|
return "Capture errors detected → run: rift feedback --kind=broke --with-status";
|
|
81
339
|
}
|
|
340
|
+
// Scheduled loop failing while the newest run is a healthy manual one:
|
|
341
|
+
// capture works now, so surface the honest "will re-check" advisory
|
|
342
|
+
// rather than a broken-capture action or "nothing broken."
|
|
343
|
+
if (isDaemonCaptureStale(status.capture, daemonStartMs)) {
|
|
344
|
+
return "capture works now; automatic capture will re-check on the next scheduled run";
|
|
345
|
+
}
|
|
82
346
|
const missing = mcpClients.filter((c) => !c.installed).map((c) => c.client);
|
|
83
347
|
if (missing.length > 0) {
|
|
84
348
|
return `MCP not installed for ${missing.join(", ")} → run: rift mcp install --client=${missing[0]}`;
|
|
85
349
|
}
|
|
350
|
+
// Oversized Codex sessions parked in quarantine are a graceful skip, not an
|
|
351
|
+
// error — and they now SELF-REPAIR in the background. So the default copy is
|
|
352
|
+
// the honest in-progress state ("Rift is saving N … to memory"), with NO
|
|
353
|
+
// command for the friend to run. The manual `rift doctor repair
|
|
354
|
+
// capture-large-sessions` is surfaced only once a session has exhausted its
|
|
355
|
+
// bounded retry budget — the genuine "Rift couldn't, you take over" case.
|
|
356
|
+
const { repairing, failed } = deriveParkedState(status.capture);
|
|
357
|
+
if (failed > 0) {
|
|
358
|
+
return `${failed} large Codex session${failed === 1 ? "" : "s"} could not be saved automatically → run: rift doctor repair capture-large-sessions`;
|
|
359
|
+
}
|
|
360
|
+
if (repairing > 0) {
|
|
361
|
+
return `Rift is saving ${repairing} large Codex session${repairing === 1 ? "" : "s"} to memory — no action needed`;
|
|
362
|
+
}
|
|
363
|
+
// Update available wins over "nothing broken" — a friend who runs
|
|
364
|
+
// status precisely to find out what to do next should see the update
|
|
365
|
+
// hint surfaced as the action, not buried under "all green." It is
|
|
366
|
+
// still strictly below every real error branch above, so a broken
|
|
367
|
+
// daemon never prefers an update suggestion over a Voyage/Index fix.
|
|
368
|
+
if (status.update.available && status.update.latest_beta) {
|
|
369
|
+
return `Update available (${status.update.installed} → ${status.update.latest_beta}) → run: rift update`;
|
|
370
|
+
}
|
|
86
371
|
return 'nothing broken. Try rift search "<topic>".';
|
|
87
372
|
}
|
|
88
373
|
export function formatAge(iso, now) {
|
|
@@ -91,6 +376,29 @@ export function formatAge(iso, now) {
|
|
|
91
376
|
return "unknown";
|
|
92
377
|
return formatDuration(Math.max(0, Math.round((now - then) / 1000))) + " ago";
|
|
93
378
|
}
|
|
379
|
+
/**
|
|
380
|
+
* Render the `time_to_first_useful_recall` line. Returns null when the
|
|
381
|
+
* state is `hidden` so the caller can drop the line entirely — a fresh
|
|
382
|
+
* post-onboard install should not advertise a metric it has not yet
|
|
383
|
+
* earned the right to display.
|
|
384
|
+
*/
|
|
385
|
+
export function renderOnboardingLine(onboarding, now) {
|
|
386
|
+
if (!onboarding)
|
|
387
|
+
return null;
|
|
388
|
+
if (onboarding.state === "hidden")
|
|
389
|
+
return null;
|
|
390
|
+
if (onboarding.state === "pending") {
|
|
391
|
+
const since = onboarding.useful_state_reached_at
|
|
392
|
+
? ` (waiting ${formatAge(onboarding.useful_state_reached_at, now)})`
|
|
393
|
+
: "";
|
|
394
|
+
return `First recall: pending — index ready, awaiting your first useful AI-client query${since}`;
|
|
395
|
+
}
|
|
396
|
+
const duration = onboarding.duration_seconds !== null
|
|
397
|
+
? formatOnboardingDuration(onboarding.duration_seconds)
|
|
398
|
+
: "?";
|
|
399
|
+
const tool = onboarding.first_useful_recall_tool ?? "?";
|
|
400
|
+
return `First recall: ${duration} after first useful state · via ${tool}`;
|
|
401
|
+
}
|
|
94
402
|
export function formatDuration(seconds) {
|
|
95
403
|
if (seconds < 60)
|
|
96
404
|
return `${seconds}s`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"friend-header.js","sourceRoot":"","sources":["../../../../src/cli/status/friend-header.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"friend-header.js","sourceRoot":"","sources":["../../../../src/cli/status/friend-header.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
declare const colorEnabled: boolean;
|
|
2
|
+
declare const pc: import("picocolors/types.js").Colors;
|
|
3
|
+
export type StepStatus = "ok" | "warn" | "fail" | "info" | "skip";
|
|
4
|
+
/**
|
|
5
|
+
* Print the first-run banner. On a TTY this is the full ANSI-Shadow `RIFT`
|
|
6
|
+
* wordmark; off a TTY (pipe/CI) it collapses to a one-line `◆ RIFT` lockup so
|
|
7
|
+
* logs stay clean. The tagline and a rule follow in both modes.
|
|
8
|
+
*/
|
|
9
|
+
export declare function banner(): void;
|
|
10
|
+
/** Print a resolved status row: ` ✓ Label detail`. The label is
|
|
11
|
+
* the bold human-readable headline; the detail tail is dimmed so the
|
|
12
|
+
* technical bits (paths, daemon/Voyage state, counts) stay secondary. */
|
|
13
|
+
export declare function step(status: StepStatus, label: string, detail?: string): void;
|
|
14
|
+
/** Print a dimmed, indented secondary line under a step. */
|
|
15
|
+
export declare function note(text: string): void;
|
|
16
|
+
/**
|
|
17
|
+
* Print indented, full-readability body text under a step. Unlike `note`,
|
|
18
|
+
* this is NOT dimmed — for trust-critical copy (e.g. the privacy contract)
|
|
19
|
+
* that must stay legible.
|
|
20
|
+
*/
|
|
21
|
+
export declare function detail(text: string): void;
|
|
22
|
+
/** Print a plain (unstyled-content) line — escape hatch for raw output. */
|
|
23
|
+
export declare function line(text?: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* A single-line spinner for an in-flight async step. On a TTY it animates
|
|
26
|
+
* in place and resolves to a status row; on a non-TTY it stays silent until
|
|
27
|
+
* resolved, then prints exactly one status row (stable for assertions).
|
|
28
|
+
*/
|
|
29
|
+
export declare class Spinner {
|
|
30
|
+
private label;
|
|
31
|
+
private timer;
|
|
32
|
+
private frame;
|
|
33
|
+
constructor(label: string);
|
|
34
|
+
start(): this;
|
|
35
|
+
private render;
|
|
36
|
+
private clearLine;
|
|
37
|
+
succeed(label?: string, detail?: string): void;
|
|
38
|
+
warn(label?: string, detail?: string): void;
|
|
39
|
+
fail(label?: string, detail?: string): void;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Render a rounded box around the given lines. Width adapts to the widest
|
|
43
|
+
* line (ANSI-aware). Used for the final next-action card.
|
|
44
|
+
*/
|
|
45
|
+
export declare function box(lines: string[]): void;
|
|
46
|
+
export { pc, colorEnabled };
|
|
47
|
+
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../src/cli/ui.ts"],"names":[],"mappings":"AA0BA,QAAA,MAAM,YAAY,SAA4D,CAAC;AAE/E,QAAA,MAAM,EAAE,sCAA6B,CAAC;AAgBtC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAqBlE;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,IAAI,CAS7B;AAED;;0EAE0E;AAC1E,wBAAgB,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,IAAI,CAIzE;AAED,4DAA4D;AAC5D,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIvC;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIzC;AAED,2EAA2E;AAC3E,wBAAgB,IAAI,CAAC,IAAI,SAAK,GAAG,IAAI,CAEpC;AAID;;;;GAIG;AACH,qBAAa,OAAO;IAIN,OAAO,CAAC,KAAK;IAHzB,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,KAAK,CAAK;gBAEE,KAAK,EAAE,MAAM;IAEjC,KAAK,IAAI,IAAI;IAYb,OAAO,CAAC,MAAM;IAKd,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,KAAK,SAAa,EAAE,MAAM,SAAK,GAAG,IAAI;IAK9C,IAAI,CAAC,KAAK,SAAa,EAAE,MAAM,SAAK,GAAG,IAAI;IAK3C,IAAI,CAAC,KAAK,SAAa,EAAE,MAAM,SAAK,GAAG,IAAI;CAI5C;AAED;;;GAGG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAazC;AAED,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC"}
|