@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
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Default byte budget per summarization chunk. Sits well below the
|
|
4
|
+
* 8 MB auto-capture threshold so the Codex CLI input never hits the
|
|
5
|
+
* same wall that caused the quarantine in the first place. 512 KB
|
|
6
|
+
* fits comfortably in stdin and leaves room for the prompt.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_RECOVERY_CHUNK_BYTES: number;
|
|
9
|
+
/** Minimum chunk size we allow — anything smaller risks turn-truncation. */
|
|
10
|
+
export declare const MIN_RECOVERY_CHUNK_BYTES: number;
|
|
11
|
+
export declare const PROVENANCE_TOPIC = "recovered_oversized_quarantine";
|
|
12
|
+
declare const QuarantineRecordSchema: z.ZodObject<{
|
|
13
|
+
source: z.ZodLiteral<"codex_cli">;
|
|
14
|
+
session_id: z.ZodString;
|
|
15
|
+
session_path: z.ZodString;
|
|
16
|
+
size_bytes: z.ZodNumber;
|
|
17
|
+
threshold_bytes: z.ZodNumber;
|
|
18
|
+
fingerprint: z.ZodString;
|
|
19
|
+
reason: z.ZodString;
|
|
20
|
+
quarantined_at: z.ZodString;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
source: "codex_cli";
|
|
23
|
+
size_bytes: number;
|
|
24
|
+
quarantined_at: string;
|
|
25
|
+
reason: string;
|
|
26
|
+
fingerprint: string;
|
|
27
|
+
session_id: string;
|
|
28
|
+
session_path: string;
|
|
29
|
+
threshold_bytes: number;
|
|
30
|
+
}, {
|
|
31
|
+
source: "codex_cli";
|
|
32
|
+
size_bytes: number;
|
|
33
|
+
quarantined_at: string;
|
|
34
|
+
reason: string;
|
|
35
|
+
fingerprint: string;
|
|
36
|
+
session_id: string;
|
|
37
|
+
session_path: string;
|
|
38
|
+
threshold_bytes: number;
|
|
39
|
+
}>;
|
|
40
|
+
export type QuarantineRecord = z.infer<typeof QuarantineRecordSchema> & {
|
|
41
|
+
/** Path to the quarantine record file itself. */
|
|
42
|
+
record_path: string;
|
|
43
|
+
};
|
|
44
|
+
declare const RecoveredEntrySchema: z.ZodObject<{
|
|
45
|
+
recovered_at: z.ZodString;
|
|
46
|
+
fingerprint: z.ZodString;
|
|
47
|
+
idempotency_key: z.ZodString;
|
|
48
|
+
chunks: z.ZodNumber;
|
|
49
|
+
session_path: z.ZodString;
|
|
50
|
+
size_bytes: z.ZodNumber;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
idempotency_key: string;
|
|
53
|
+
size_bytes: number;
|
|
54
|
+
fingerprint: string;
|
|
55
|
+
session_path: string;
|
|
56
|
+
recovered_at: string;
|
|
57
|
+
chunks: number;
|
|
58
|
+
}, {
|
|
59
|
+
idempotency_key: string;
|
|
60
|
+
size_bytes: number;
|
|
61
|
+
fingerprint: string;
|
|
62
|
+
session_path: string;
|
|
63
|
+
recovered_at: string;
|
|
64
|
+
chunks: number;
|
|
65
|
+
}>;
|
|
66
|
+
export type RecoveredEntry = z.infer<typeof RecoveredEntrySchema>;
|
|
67
|
+
declare const RecoveryStateSchema: z.ZodObject<{
|
|
68
|
+
recovered: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
69
|
+
recovered_at: z.ZodString;
|
|
70
|
+
fingerprint: z.ZodString;
|
|
71
|
+
idempotency_key: z.ZodString;
|
|
72
|
+
chunks: z.ZodNumber;
|
|
73
|
+
session_path: z.ZodString;
|
|
74
|
+
size_bytes: z.ZodNumber;
|
|
75
|
+
}, "strip", z.ZodTypeAny, {
|
|
76
|
+
idempotency_key: string;
|
|
77
|
+
size_bytes: number;
|
|
78
|
+
fingerprint: string;
|
|
79
|
+
session_path: string;
|
|
80
|
+
recovered_at: string;
|
|
81
|
+
chunks: number;
|
|
82
|
+
}, {
|
|
83
|
+
idempotency_key: string;
|
|
84
|
+
size_bytes: number;
|
|
85
|
+
fingerprint: string;
|
|
86
|
+
session_path: string;
|
|
87
|
+
recovered_at: string;
|
|
88
|
+
chunks: number;
|
|
89
|
+
}>>>;
|
|
90
|
+
}, "strip", z.ZodTypeAny, {
|
|
91
|
+
recovered: Record<string, {
|
|
92
|
+
idempotency_key: string;
|
|
93
|
+
size_bytes: number;
|
|
94
|
+
fingerprint: string;
|
|
95
|
+
session_path: string;
|
|
96
|
+
recovered_at: string;
|
|
97
|
+
chunks: number;
|
|
98
|
+
}>;
|
|
99
|
+
}, {
|
|
100
|
+
recovered?: Record<string, {
|
|
101
|
+
idempotency_key: string;
|
|
102
|
+
size_bytes: number;
|
|
103
|
+
fingerprint: string;
|
|
104
|
+
session_path: string;
|
|
105
|
+
recovered_at: string;
|
|
106
|
+
chunks: number;
|
|
107
|
+
}> | undefined;
|
|
108
|
+
}>;
|
|
109
|
+
export type RecoveryState = z.infer<typeof RecoveryStateSchema>;
|
|
110
|
+
export type SkipReason = "already_recovered" | "missing_source" | "empty_session" | "summarize_failed" | "save_failed";
|
|
111
|
+
export interface RecoveryResult {
|
|
112
|
+
session_id: string;
|
|
113
|
+
fingerprint: string;
|
|
114
|
+
outcome: "recovered" | "skipped" | "failed";
|
|
115
|
+
reason?: SkipReason;
|
|
116
|
+
chunks?: number;
|
|
117
|
+
idempotency_key?: string;
|
|
118
|
+
error?: string;
|
|
119
|
+
}
|
|
120
|
+
export interface RecoveryReport {
|
|
121
|
+
total_records: number;
|
|
122
|
+
total_sessions: number;
|
|
123
|
+
recovered: number;
|
|
124
|
+
skipped: number;
|
|
125
|
+
missing_source: number;
|
|
126
|
+
failed: number;
|
|
127
|
+
results: RecoveryResult[];
|
|
128
|
+
}
|
|
129
|
+
export interface ChunkSummary {
|
|
130
|
+
summary: string;
|
|
131
|
+
topics: string[];
|
|
132
|
+
}
|
|
133
|
+
export interface ChunkSummarizer {
|
|
134
|
+
summarize(opts: {
|
|
135
|
+
chunk: string;
|
|
136
|
+
index: number;
|
|
137
|
+
total: number;
|
|
138
|
+
sessionId: string;
|
|
139
|
+
}): Promise<ChunkSummary>;
|
|
140
|
+
}
|
|
141
|
+
export interface RecoverQuarantineSaveInput {
|
|
142
|
+
sessionId: string;
|
|
143
|
+
fingerprint: string;
|
|
144
|
+
sessionPath: string;
|
|
145
|
+
sizeBytes: number;
|
|
146
|
+
thresholdBytes: number;
|
|
147
|
+
chunks: ChunkSummary[];
|
|
148
|
+
content: string;
|
|
149
|
+
summary: string;
|
|
150
|
+
topics: string[];
|
|
151
|
+
idempotencyKey: string;
|
|
152
|
+
/**
|
|
153
|
+
* Set only when this session was already recovered under a *different*
|
|
154
|
+
* fingerprint (it grew since the last recovery). The save must replace
|
|
155
|
+
* the prior recovered memory rather than sit beside it, or search returns
|
|
156
|
+
* both the stale and the current recovery. Maps to `/save`'s
|
|
157
|
+
* `replace_idempotency_key`.
|
|
158
|
+
*/
|
|
159
|
+
replaceIdempotencyKey?: string;
|
|
160
|
+
}
|
|
161
|
+
export interface RecoverQuarantineDeps {
|
|
162
|
+
dataDir: string;
|
|
163
|
+
/** Override quarantine directory (defaults to `<dataDir>/quarantine`). */
|
|
164
|
+
quarantineDir?: string;
|
|
165
|
+
/**
|
|
166
|
+
* Chunk byte budget. Clamped to at least `MIN_RECOVERY_CHUNK_BYTES`.
|
|
167
|
+
* Defaults to `DEFAULT_RECOVERY_CHUNK_BYTES`.
|
|
168
|
+
*/
|
|
169
|
+
chunkBytes?: number;
|
|
170
|
+
summarizer: ChunkSummarizer;
|
|
171
|
+
/**
|
|
172
|
+
* Save the recovered artifact through the daemon. Implementations
|
|
173
|
+
* should be idempotent w.r.t. `idempotencyKey` so a partial failure
|
|
174
|
+
* mid-batch doesn't double-insert when the recovery state write
|
|
175
|
+
* happened after a successful save (it doesn't here — state is
|
|
176
|
+
* persisted on success only — but the contract still holds).
|
|
177
|
+
*/
|
|
178
|
+
saveFn: (input: RecoverQuarantineSaveInput) => Promise<void>;
|
|
179
|
+
/**
|
|
180
|
+
* Dry-run: discover, parse, and chunk only. The Codex CLI summarizer
|
|
181
|
+
* is NOT invoked (each chunk call costs real time/quota on real data),
|
|
182
|
+
* and saving + state persistence are skipped. Use this to plan a real
|
|
183
|
+
* run cheaply; the report's `chunks` count reflects what a real run
|
|
184
|
+
* would summarize.
|
|
185
|
+
*/
|
|
186
|
+
dryRun?: boolean;
|
|
187
|
+
/** Optional clock for deterministic tests. */
|
|
188
|
+
now?: () => Date;
|
|
189
|
+
/**
|
|
190
|
+
* Optional per-session gate. When it returns true for a grouped record,
|
|
191
|
+
* that session is skipped entirely — not attempted, not summarized, not
|
|
192
|
+
* added to the report. The background auto-repair caller uses this to
|
|
193
|
+
* exclude sessions whose bounded retry budget is exhausted, so a
|
|
194
|
+
* permanently-failing session cannot be retried forever. The manual
|
|
195
|
+
* `rift doctor repair capture-large-sessions` path passes no gate, so its
|
|
196
|
+
* behavior (including regrown-session replacement) is unchanged.
|
|
197
|
+
*/
|
|
198
|
+
skipSession?: (record: QuarantineRecord) => boolean;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Read all Codex-CLI quarantine records under the configured directory.
|
|
202
|
+
* Malformed JSON / schema mismatches are skipped silently with a stderr
|
|
203
|
+
* note so one corrupt record can never block the rest of the batch.
|
|
204
|
+
*/
|
|
205
|
+
export declare function loadQuarantineRecords(deps: Pick<RecoverQuarantineDeps, "dataDir" | "quarantineDir">): QuarantineRecord[];
|
|
206
|
+
/**
|
|
207
|
+
* Collapse multiple quarantine records that point at the same session
|
|
208
|
+
* (the same jsonl that hit the threshold at different sizes as it grew)
|
|
209
|
+
* down to one: the latest `quarantined_at`. The collapsed record still
|
|
210
|
+
* carries the recovery key, so reruns can mark every related record as
|
|
211
|
+
* already-recovered for that session.
|
|
212
|
+
*/
|
|
213
|
+
export declare function groupBySession(records: QuarantineRecord[]): QuarantineRecord[];
|
|
214
|
+
export declare function loadRecoveryState(deps: Pick<RecoverQuarantineDeps, "dataDir">): RecoveryState;
|
|
215
|
+
export declare function saveRecoveryState(deps: Pick<RecoverQuarantineDeps, "dataDir">, state: RecoveryState): Promise<void>;
|
|
216
|
+
/**
|
|
217
|
+
* Count distinct oversized Codex sessions that are still parked — i.e. whose
|
|
218
|
+
* LATEST quarantine fingerprint has not yet been recovered. This is the
|
|
219
|
+
* honest "state of the world" the status surface should report, NOT the
|
|
220
|
+
* per-run `quarantined` count from the most recent capture run: that count
|
|
221
|
+
* flickers on/off as a stable oversized file dedups on one run and
|
|
222
|
+
* re-quarantines on the next, which teaches users to distrust the warning.
|
|
223
|
+
*
|
|
224
|
+
* Fingerprint-aware by design (mirrors the skip logic in
|
|
225
|
+
* `runRecoverQuarantine`): a session recovered at an earlier size is NOT
|
|
226
|
+
* counted as covered once the file grows to a new fingerprint, because the
|
|
227
|
+
* old recovery doesn't include the new turns. Counting by bare session id
|
|
228
|
+
* would under-report exactly those grown-since-recovery sessions.
|
|
229
|
+
*
|
|
230
|
+
* Sessions whose source jsonl no longer exists are excluded: recovery skips
|
|
231
|
+
* them as `missing_source` (it has nothing to read), so counting them would
|
|
232
|
+
* surface a "run recovery" advisory that can never clear — recovery cannot
|
|
233
|
+
* recover a file that's gone.
|
|
234
|
+
*/
|
|
235
|
+
export declare function listParkedOversizedSessions(deps: Pick<RecoverQuarantineDeps, "dataDir" | "quarantineDir">): QuarantineRecord[];
|
|
236
|
+
export declare function countParkedOversizedSessions(deps: Pick<RecoverQuarantineDeps, "dataDir" | "quarantineDir">): number;
|
|
237
|
+
/**
|
|
238
|
+
* Split parser-emitted Codex content into byte-budgeted chunks at turn
|
|
239
|
+
* boundaries. The parser format is `User: …\n\nAssistant: …\n\n…`, so
|
|
240
|
+
* we split on `\n\n` immediately preceding a `User:` or `Assistant:`
|
|
241
|
+
* marker. A single turn larger than `maxBytes` becomes its own chunk
|
|
242
|
+
* (oversized but preserved — better than dropping signal).
|
|
243
|
+
*/
|
|
244
|
+
export declare function chunkByTurns(content: string, maxBytes: number): string[];
|
|
245
|
+
export declare function runRecoverQuarantine(deps: RecoverQuarantineDeps): Promise<RecoveryReport>;
|
|
246
|
+
export declare class CodexCliChunkSummarizer implements ChunkSummarizer {
|
|
247
|
+
private readonly options;
|
|
248
|
+
constructor(options?: {
|
|
249
|
+
cwd?: string;
|
|
250
|
+
timeoutMs?: number;
|
|
251
|
+
});
|
|
252
|
+
summarize(opts: {
|
|
253
|
+
chunk: string;
|
|
254
|
+
index: number;
|
|
255
|
+
total: number;
|
|
256
|
+
sessionId: string;
|
|
257
|
+
}): Promise<ChunkSummary>;
|
|
258
|
+
}
|
|
259
|
+
export {};
|
|
260
|
+
//# sourceMappingURL=recover-quarantine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recover-quarantine.d.ts","sourceRoot":"","sources":["../../../src/capture/recover-quarantine.ts"],"names":[],"mappings":"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"}
|