@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
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { DEFAULT_RETRY_CONFIG } from "./types.js";
|
|
2
|
+
/** `metadata_provider` marker for deterministic basic metadata. */
|
|
3
|
+
export const RIFT_BASIC_METADATA_PROVIDER = "rift-basic";
|
|
4
|
+
/**
|
|
5
|
+
* True when a row's metadata was produced by the no-AI basic extractor.
|
|
6
|
+
* Centralized so retrieval read-boundaries share one definition rather than
|
|
7
|
+
* scattering string comparisons. Such rows carry intentionally generic
|
|
8
|
+
* placeholder `domain`/`intent`/`quality` (see the defaults below) that must
|
|
9
|
+
* NOT be surfaced as searchable facets or ranking signals — the retrieval
|
|
10
|
+
* layer drops them at read time and keeps only the real, text-derived fields
|
|
11
|
+
* (content, topics).
|
|
12
|
+
*/
|
|
13
|
+
export function isRiftBasicMetadata(provider) {
|
|
14
|
+
return provider === RIFT_BASIC_METADATA_PROVIDER;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* SQL `where` fragment that excludes no-AI basic rows from a metadata FACET
|
|
18
|
+
* filter (domain/intent/quality). `rift-basic` rows carry intentionally
|
|
19
|
+
* generic placeholder facets (tech/research/medium — see the defaults below)
|
|
20
|
+
* that are NOT real classifications, so an explicit facet filter must not match
|
|
21
|
+
* them: otherwise an un-enriched import surfaces as if it had been classified
|
|
22
|
+
* into a facet it never was. Single-sourced so every facet-filter path applies
|
|
23
|
+
* it identically. Deliberately NOT applied to `source`, which is real
|
|
24
|
+
* provenance even on basic rows. Only apply it to tables that carry the
|
|
25
|
+
* `metadata_provider` column (conversation tables — not digests). The provider
|
|
26
|
+
* name is a safe constant, so no SQL escaping is needed.
|
|
27
|
+
*/
|
|
28
|
+
export const RIFT_BASIC_METADATA_EXCLUSION_CLAUSE = `metadata_provider != '${RIFT_BASIC_METADATA_PROVIDER}'`;
|
|
29
|
+
/** Used when no topic can be derived from the conversation text. */
|
|
30
|
+
export const BASIC_TOPIC_FALLBACK = "imported conversation";
|
|
31
|
+
/**
|
|
32
|
+
* Safe defaults. Generic on purpose — these are placeholders pending real
|
|
33
|
+
* enrichment, not classifications. They match the `ConversationMetadataSchema`
|
|
34
|
+
* fallbacks so a basic row is shaped exactly like an enriched one.
|
|
35
|
+
*/
|
|
36
|
+
const DEFAULT_DOMAIN = "tech";
|
|
37
|
+
const DEFAULT_INTENT = "research";
|
|
38
|
+
const DEFAULT_QUALITY = "medium";
|
|
39
|
+
export class BasicMetadataExtractor {
|
|
40
|
+
retry = DEFAULT_RETRY_CONFIG;
|
|
41
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
42
|
+
async extractMetadata(text) {
|
|
43
|
+
return {
|
|
44
|
+
domain: DEFAULT_DOMAIN,
|
|
45
|
+
intent: DEFAULT_INTENT,
|
|
46
|
+
quality: DEFAULT_QUALITY,
|
|
47
|
+
topics: [deriveBasicTopic(text)],
|
|
48
|
+
decisions: [],
|
|
49
|
+
key_outputs: [],
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
getProvenance() {
|
|
53
|
+
return {
|
|
54
|
+
provider: RIFT_BASIC_METADATA_PROVIDER,
|
|
55
|
+
model: RIFT_BASIC_METADATA_PROVIDER,
|
|
56
|
+
version: "1",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Derive a single, non-empty topic string from conversation text without an
|
|
62
|
+
* LLM. Deterministic and cheap: prefer the first Markdown heading, else the
|
|
63
|
+
* first substantive line (role labels like "User:"/"Assistant:" stripped),
|
|
64
|
+
* trimmed to a handful of words. Always returns a non-empty string so the
|
|
65
|
+
* `topics.min(1)` contract holds even for empty/whitespace input.
|
|
66
|
+
*
|
|
67
|
+
* Exported for direct unit testing of the derivation rules.
|
|
68
|
+
*/
|
|
69
|
+
export function deriveBasicTopic(text) {
|
|
70
|
+
if (typeof text !== "string" || text.trim().length === 0) {
|
|
71
|
+
return BASIC_TOPIC_FALLBACK;
|
|
72
|
+
}
|
|
73
|
+
// Scan a bounded prefix — enough to find the opening heading/line without
|
|
74
|
+
// walking a multi-megabyte conversation.
|
|
75
|
+
const head = text.slice(0, 4000);
|
|
76
|
+
const lines = head.split(/\r?\n/);
|
|
77
|
+
// 1. First Markdown heading ("# Title", "## Title", …).
|
|
78
|
+
for (const line of lines) {
|
|
79
|
+
const heading = /^\s{0,3}#{1,6}\s+(.+?)\s*#*\s*$/.exec(line);
|
|
80
|
+
if (heading && heading[1]) {
|
|
81
|
+
const topic = condense(heading[1]);
|
|
82
|
+
if (topic)
|
|
83
|
+
return topic;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// 2. First substantive line, with a leading role label removed.
|
|
87
|
+
for (const raw of lines) {
|
|
88
|
+
const stripped = raw.replace(/^\s*(?:#{1,6}\s*)?(?:user|assistant|human|system|me|you)\s*[:>-]\s*/i, "");
|
|
89
|
+
const topic = condense(stripped);
|
|
90
|
+
if (topic)
|
|
91
|
+
return topic;
|
|
92
|
+
}
|
|
93
|
+
return BASIC_TOPIC_FALLBACK;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Normalize a candidate line into a compact topic: collapse whitespace, drop
|
|
97
|
+
* Markdown/code noise, keep the first few words, cap length. Returns "" when
|
|
98
|
+
* nothing meaningful remains so the caller can fall through.
|
|
99
|
+
*/
|
|
100
|
+
function condense(line) {
|
|
101
|
+
const cleaned = line
|
|
102
|
+
.replace(/[`*_>#~|]+/g, " ") // strip common Markdown markers
|
|
103
|
+
.replace(/\s+/g, " ")
|
|
104
|
+
.trim();
|
|
105
|
+
if (cleaned.length < 2)
|
|
106
|
+
return "";
|
|
107
|
+
// Require at least one letter/number so a line of pure punctuation/emoji
|
|
108
|
+
// doesn't become the topic.
|
|
109
|
+
if (!/[\p{L}\p{N}]/u.test(cleaned))
|
|
110
|
+
return "";
|
|
111
|
+
const words = cleaned.split(" ").slice(0, 8).join(" ");
|
|
112
|
+
return words.length > 80 ? words.slice(0, 80).trimEnd() : words;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=basic-metadata-extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"basic-metadata-extraction.js","sourceRoot":"","sources":["../../../src/providers/basic-metadata-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-metadata-extraction.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-metadata-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAoDpB,qBAAa,yBAA0B,YAAW,iBAAiB;
|
|
1
|
+
{"version":3,"file":"codex-cli-metadata-extraction.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-metadata-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACX,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAoDpB,qBAAa,yBAA0B,YAAW,iBAAiB;IAM/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,SAAS,CAAqB;gBAGnB,OAAO,GAAE;QACxB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;KACzB;IAKF,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmDlE,aAAa,IAAI,4BAA4B;CAU9C"}
|
|
@@ -45,6 +45,7 @@ export class CodexCliMetadataExtractor {
|
|
|
45
45
|
options;
|
|
46
46
|
retry;
|
|
47
47
|
lastCliTag;
|
|
48
|
+
lastModel;
|
|
48
49
|
constructor(options = {}) {
|
|
49
50
|
this.options = options;
|
|
50
51
|
this.retry = { ...DEFAULT_RETRY_CONFIG, ...options.retry };
|
|
@@ -59,7 +60,7 @@ export class CodexCliMetadataExtractor {
|
|
|
59
60
|
await sleep(delay);
|
|
60
61
|
}
|
|
61
62
|
try {
|
|
62
|
-
const { output, cliTag } = await runCodexCliJson({
|
|
63
|
+
const { output, cliTag, model } = await runCodexCliJson({
|
|
63
64
|
prompt,
|
|
64
65
|
schema: EXTRACTION_OUTPUT_SCHEMA,
|
|
65
66
|
...(this.options.cwd ? { cwd: this.options.cwd } : {}),
|
|
@@ -72,6 +73,7 @@ export class CodexCliMetadataExtractor {
|
|
|
72
73
|
throw new Error(`Extraction output failed validation: ${parsed.error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`).join("; ")}`);
|
|
73
74
|
}
|
|
74
75
|
this.lastCliTag = cliTag;
|
|
76
|
+
this.lastModel = model;
|
|
75
77
|
return parsed.data;
|
|
76
78
|
}
|
|
77
79
|
catch (error) {
|
|
@@ -89,7 +91,9 @@ export class CodexCliMetadataExtractor {
|
|
|
89
91
|
getProvenance() {
|
|
90
92
|
return {
|
|
91
93
|
provider: CODEX_CLI_OVERRIDE_PROVIDER,
|
|
92
|
-
|
|
94
|
+
// Honest provenance: the model codex actually ran under. Falls back to
|
|
95
|
+
// the sentinel only when provenance is read before any extraction ran.
|
|
96
|
+
model: this.lastModel ?? CODEX_CLI_OVERRIDE_MODEL,
|
|
93
97
|
version: "1",
|
|
94
98
|
...(this.lastCliTag ? { cli_tag: this.lastCliTag } : {}),
|
|
95
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-metadata-extraction.js","sourceRoot":"","sources":["../../../src/providers/codex-cli-metadata-extraction.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,MAAM,wBAAwB,GAAG;IAC/B,IAAI,EAAE,QAAQ;IACd,oBAAoB,EAAE,KAAK;IAC3B,QAAQ,EAAE;QACR,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,WAAW;QACX,aAAa;KACd;IACD,UAAU,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC;SAClF;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC;SAC/E;QACD,OAAO,EAAE;YACP,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;SAChC;QACD,MAAM,EAAE;YACN,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B;QACD,WAAW,EAAE;YACX,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC1B;KACF;CACO,CAAC;AAEX,MAAM,OAAO,yBAAyB;
|
|
1
|
+
{"version":3,"file":"codex-cli-metadata-extraction.js","sourceRoot":"","sources":["../../../src/providers/codex-cli-metadata-extraction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex model resolution for the isolated-CODEX_HOME preflight/exec path.
|
|
3
|
+
*
|
|
4
|
+
* Rift launches `codex exec` with an isolated CODEX_HOME that copies only
|
|
5
|
+
* `auth.json` (never the user's `config.toml`), so it does NOT inherit the
|
|
6
|
+
* user's `model = "..."`. Codex then falls back to its own built-in default,
|
|
7
|
+
* which changes between releases — 0.125.0 moved it to `gpt-5.3-codex`, a
|
|
8
|
+
* model ChatGPT-auth plans reject, silently breaking every preflight. The
|
|
9
|
+
* fix: Rift pins an explicit `--model` on every run and NEVER inherits codex's
|
|
10
|
+
* implicit default. Resolution order:
|
|
11
|
+
* 1. Rift config (`codex_cli.model`) — operator override, authoritative.
|
|
12
|
+
* 2. Top-level `model` in the source `~/.codex/config.toml` — the user's
|
|
13
|
+
* own proven choice, which the isolated home would otherwise drop.
|
|
14
|
+
* 3. A previously probe-verified model persisted under the data dir.
|
|
15
|
+
* 4. A live probe across known-good candidates; the first that actually
|
|
16
|
+
* runs is persisted (verified, not guessed). If none work, we throw a
|
|
17
|
+
* clear, actionable error instead of looping on codex's bad default.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Evidence-based known-good fallbacks. Codex 0.125.0's implicit default
|
|
21
|
+
* (`gpt-5.3-codex`) is rejected by ChatGPT-auth plans; `gpt-5.5` is verified
|
|
22
|
+
* working. This list is a last-resort safety net only — operators on a plan
|
|
23
|
+
* where these are unavailable should set `codex_cli.model` rather than extend
|
|
24
|
+
* it, which is exactly what the thrown error tells them to do.
|
|
25
|
+
*/
|
|
26
|
+
export declare const CODEX_MODEL_FALLBACK_CANDIDATES: readonly ["gpt-5.5"];
|
|
27
|
+
/**
|
|
28
|
+
* Thrown when no model could be resolved from config/source/persisted state
|
|
29
|
+
* and every fallback candidate failed to run. Carries the tried candidates so
|
|
30
|
+
* the preflight classifier can render an honest, actionable message.
|
|
31
|
+
*/
|
|
32
|
+
export declare class CodexModelUnavailableError extends Error {
|
|
33
|
+
readonly tried: string[];
|
|
34
|
+
constructor(tried: string[]);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Wire the Rift config's model override + data dir into the resolver. Called
|
|
38
|
+
* once at daemon/CLI bootstrap. Safe to omit: without it, resolution still
|
|
39
|
+
* works via the source `config.toml` → persisted → probe chain.
|
|
40
|
+
*/
|
|
41
|
+
export declare function configureCodexModel(opts: {
|
|
42
|
+
model?: string | undefined;
|
|
43
|
+
dataDir?: string | undefined;
|
|
44
|
+
}): void;
|
|
45
|
+
export declare function resetCodexModelCacheForTests(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the model to pin on `codex exec`. Memoized for the process so the
|
|
48
|
+
* source-config read / probe happens at most once. `probe` is injected by the
|
|
49
|
+
* runner (rather than imported) to avoid a module cycle; it returns true when
|
|
50
|
+
* a candidate model actually runs.
|
|
51
|
+
*/
|
|
52
|
+
export declare function resolveCodexModel(probe: (model: string) => Promise<boolean>): Promise<string>;
|
|
53
|
+
/**
|
|
54
|
+
* Extract the top-level `model = "..."` from a codex `config.toml`. Stops at
|
|
55
|
+
* the first table header (`[section]`) so a `model` key nested inside a table
|
|
56
|
+
* (e.g. a profile) is never mistaken for the top-level one. Deliberately tiny
|
|
57
|
+
* — codex's top-level `model` is always a simple quoted/bare scalar, so we do
|
|
58
|
+
* not pull in a full TOML parser.
|
|
59
|
+
*/
|
|
60
|
+
export declare function parseTopLevelTomlModel(text: string): string | undefined;
|
|
61
|
+
//# sourceMappingURL=codex-cli-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-cli-model.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-model.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,sBAAuB,CAAC;AAIpE;;;;GAIG;AACH,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBACb,KAAK,EAAE,MAAM,EAAE;CAQ5B;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,GAAG,IAAI,CASP;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAInD;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAyCjB;AAqBD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAwBvE"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* Codex model resolution for the isolated-CODEX_HOME preflight/exec path.
|
|
6
|
+
*
|
|
7
|
+
* Rift launches `codex exec` with an isolated CODEX_HOME that copies only
|
|
8
|
+
* `auth.json` (never the user's `config.toml`), so it does NOT inherit the
|
|
9
|
+
* user's `model = "..."`. Codex then falls back to its own built-in default,
|
|
10
|
+
* which changes between releases — 0.125.0 moved it to `gpt-5.3-codex`, a
|
|
11
|
+
* model ChatGPT-auth plans reject, silently breaking every preflight. The
|
|
12
|
+
* fix: Rift pins an explicit `--model` on every run and NEVER inherits codex's
|
|
13
|
+
* implicit default. Resolution order:
|
|
14
|
+
* 1. Rift config (`codex_cli.model`) — operator override, authoritative.
|
|
15
|
+
* 2. Top-level `model` in the source `~/.codex/config.toml` — the user's
|
|
16
|
+
* own proven choice, which the isolated home would otherwise drop.
|
|
17
|
+
* 3. A previously probe-verified model persisted under the data dir.
|
|
18
|
+
* 4. A live probe across known-good candidates; the first that actually
|
|
19
|
+
* runs is persisted (verified, not guessed). If none work, we throw a
|
|
20
|
+
* clear, actionable error instead of looping on codex's bad default.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Evidence-based known-good fallbacks. Codex 0.125.0's implicit default
|
|
24
|
+
* (`gpt-5.3-codex`) is rejected by ChatGPT-auth plans; `gpt-5.5` is verified
|
|
25
|
+
* working. This list is a last-resort safety net only — operators on a plan
|
|
26
|
+
* where these are unavailable should set `codex_cli.model` rather than extend
|
|
27
|
+
* it, which is exactly what the thrown error tells them to do.
|
|
28
|
+
*/
|
|
29
|
+
export const CODEX_MODEL_FALLBACK_CANDIDATES = ["gpt-5.5"];
|
|
30
|
+
const PERSISTED_MODEL_FILE = path.join(".internal", "codex-model");
|
|
31
|
+
/**
|
|
32
|
+
* Thrown when no model could be resolved from config/source/persisted state
|
|
33
|
+
* and every fallback candidate failed to run. Carries the tried candidates so
|
|
34
|
+
* the preflight classifier can render an honest, actionable message.
|
|
35
|
+
*/
|
|
36
|
+
export class CodexModelUnavailableError extends Error {
|
|
37
|
+
tried;
|
|
38
|
+
constructor(tried) {
|
|
39
|
+
super(`No working Codex model found (tried: ${tried.join(", ") || "none"}). ` +
|
|
40
|
+
`Set codex_cli.model in your Rift config to a model your Codex plan supports.`);
|
|
41
|
+
this.name = "CodexModelUnavailableError";
|
|
42
|
+
this.tried = tried;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
let configuredModel;
|
|
46
|
+
let configuredDataDir;
|
|
47
|
+
let resolvedModelPromise = null;
|
|
48
|
+
/**
|
|
49
|
+
* Wire the Rift config's model override + data dir into the resolver. Called
|
|
50
|
+
* once at daemon/CLI bootstrap. Safe to omit: without it, resolution still
|
|
51
|
+
* works via the source `config.toml` → persisted → probe chain.
|
|
52
|
+
*/
|
|
53
|
+
export function configureCodexModel(opts) {
|
|
54
|
+
if (typeof opts.model === "string" && opts.model.trim().length > 0) {
|
|
55
|
+
configuredModel = opts.model.trim();
|
|
56
|
+
}
|
|
57
|
+
if (typeof opts.dataDir === "string" && opts.dataDir.trim().length > 0) {
|
|
58
|
+
configuredDataDir = opts.dataDir.trim();
|
|
59
|
+
}
|
|
60
|
+
// Re-resolve after (re)configuration so a newly-supplied override wins.
|
|
61
|
+
resolvedModelPromise = null;
|
|
62
|
+
}
|
|
63
|
+
export function resetCodexModelCacheForTests() {
|
|
64
|
+
configuredModel = undefined;
|
|
65
|
+
configuredDataDir = undefined;
|
|
66
|
+
resolvedModelPromise = null;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve the model to pin on `codex exec`. Memoized for the process so the
|
|
70
|
+
* source-config read / probe happens at most once. `probe` is injected by the
|
|
71
|
+
* runner (rather than imported) to avoid a module cycle; it returns true when
|
|
72
|
+
* a candidate model actually runs.
|
|
73
|
+
*/
|
|
74
|
+
export async function resolveCodexModel(probe) {
|
|
75
|
+
if (resolvedModelPromise) {
|
|
76
|
+
return resolvedModelPromise;
|
|
77
|
+
}
|
|
78
|
+
const pending = (async () => {
|
|
79
|
+
if (configuredModel) {
|
|
80
|
+
return configuredModel;
|
|
81
|
+
}
|
|
82
|
+
const sourceModel = readSourceConfigModel();
|
|
83
|
+
if (sourceModel) {
|
|
84
|
+
return sourceModel;
|
|
85
|
+
}
|
|
86
|
+
const persisted = readPersistedModel(configuredDataDir);
|
|
87
|
+
if (persisted) {
|
|
88
|
+
return persisted;
|
|
89
|
+
}
|
|
90
|
+
// Nothing configured/known — actively verify a candidate before committing.
|
|
91
|
+
const tried = [];
|
|
92
|
+
for (const candidate of CODEX_MODEL_FALLBACK_CANDIDATES) {
|
|
93
|
+
tried.push(candidate);
|
|
94
|
+
if (await probe(candidate)) {
|
|
95
|
+
persistModel(configuredDataDir, candidate);
|
|
96
|
+
return candidate;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
throw new CodexModelUnavailableError(tried);
|
|
100
|
+
})();
|
|
101
|
+
resolvedModelPromise = pending;
|
|
102
|
+
// On failure, clear the cache so a later call (e.g. after the user sets a
|
|
103
|
+
// model or auth recovers) can retry instead of returning the stale rejection.
|
|
104
|
+
pending.catch(() => {
|
|
105
|
+
if (resolvedModelPromise === pending) {
|
|
106
|
+
resolvedModelPromise = null;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return pending;
|
|
110
|
+
}
|
|
111
|
+
/** The source CODEX_HOME the user actually authenticated, mirroring the runner. */
|
|
112
|
+
function resolveSourceCodexHome() {
|
|
113
|
+
if (typeof process.env["CODEX_HOME"] === "string") {
|
|
114
|
+
return process.env["CODEX_HOME"];
|
|
115
|
+
}
|
|
116
|
+
return path.join(os.homedir(), ".codex");
|
|
117
|
+
}
|
|
118
|
+
function readSourceConfigModel() {
|
|
119
|
+
const configPath = path.join(resolveSourceCodexHome(), "config.toml");
|
|
120
|
+
let text;
|
|
121
|
+
try {
|
|
122
|
+
text = fs.readFileSync(configPath, "utf-8");
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
return parseTopLevelTomlModel(text);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Extract the top-level `model = "..."` from a codex `config.toml`. Stops at
|
|
131
|
+
* the first table header (`[section]`) so a `model` key nested inside a table
|
|
132
|
+
* (e.g. a profile) is never mistaken for the top-level one. Deliberately tiny
|
|
133
|
+
* — codex's top-level `model` is always a simple quoted/bare scalar, so we do
|
|
134
|
+
* not pull in a full TOML parser.
|
|
135
|
+
*/
|
|
136
|
+
export function parseTopLevelTomlModel(text) {
|
|
137
|
+
for (const rawLine of text.split(/\r?\n/)) {
|
|
138
|
+
const line = rawLine.trim();
|
|
139
|
+
if (line.startsWith("[")) {
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
if (line.length === 0 || line.startsWith("#")) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const match = /^model\s*=\s*(.+)$/.exec(line);
|
|
146
|
+
if (!match) {
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const value = (match[1] ?? "").trim();
|
|
150
|
+
const quoted = /^"([^"]*)"|^'([^']*)'/.exec(value);
|
|
151
|
+
if (quoted) {
|
|
152
|
+
const inner = quoted[1] ?? quoted[2] ?? "";
|
|
153
|
+
return inner.length > 0 ? inner : undefined;
|
|
154
|
+
}
|
|
155
|
+
// Bare value: strip any trailing inline comment.
|
|
156
|
+
const bare = value.replace(/\s+#.*$/, "").trim();
|
|
157
|
+
return bare.length > 0 ? bare : undefined;
|
|
158
|
+
}
|
|
159
|
+
return undefined;
|
|
160
|
+
}
|
|
161
|
+
function persistedModelPath(dataDir) {
|
|
162
|
+
if (!dataDir) {
|
|
163
|
+
return undefined;
|
|
164
|
+
}
|
|
165
|
+
return path.join(dataDir, PERSISTED_MODEL_FILE);
|
|
166
|
+
}
|
|
167
|
+
function readPersistedModel(dataDir) {
|
|
168
|
+
const file = persistedModelPath(dataDir);
|
|
169
|
+
if (!file) {
|
|
170
|
+
return undefined;
|
|
171
|
+
}
|
|
172
|
+
try {
|
|
173
|
+
const value = fs.readFileSync(file, "utf-8").trim();
|
|
174
|
+
return value.length > 0 ? value : undefined;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return undefined;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function persistModel(dataDir, model) {
|
|
181
|
+
const file = persistedModelPath(dataDir);
|
|
182
|
+
if (!file) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
try {
|
|
186
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
187
|
+
fs.writeFileSync(file, `${model}\n`, "utf-8");
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// Persistence is a best-effort optimisation; a failure just means the
|
|
191
|
+
// probe re-runs next cold start. Never fail a capture over it.
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=codex-cli-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-cli-model.js","sourceRoot":"","sources":["../../../src/providers/codex-cli-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,51 @@ export interface CodexCliRunOptions {
|
|
|
3
3
|
schema: Record<string, unknown>;
|
|
4
4
|
cwd?: string;
|
|
5
5
|
timeoutMs?: number;
|
|
6
|
+
/**
|
|
7
|
+
* Explicit model to pin via `--model`. When omitted, the runner resolves
|
|
8
|
+
* one (config → source config.toml → persisted → probe) — see
|
|
9
|
+
* codex-cli-model.ts. Passing it skips resolution (used by the probe itself
|
|
10
|
+
* to avoid re-entrancy).
|
|
11
|
+
*/
|
|
12
|
+
model?: string;
|
|
6
13
|
}
|
|
7
14
|
export interface CodexCliRunResult<T> {
|
|
8
15
|
output: T;
|
|
9
16
|
cliTag: string;
|
|
17
|
+
/** The model actually pinned for this run — for honest provenance. */
|
|
18
|
+
model: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Thrown ONLY when the runner's own timeout timer fires and kills the Codex
|
|
22
|
+
* CLI process (`code === null`, signal SIGTERM) — i.e. the "took too long"
|
|
23
|
+
* case. A signal termination we did NOT initiate (external SIGKILL, OOM,
|
|
24
|
+
* manual interrupt) is deliberately NOT this error; see `runCodexCommand`.
|
|
25
|
+
* Typed (and carrying `timeoutMs`/`signal`) so callers can apply a bounded
|
|
26
|
+
* retry to it specifically, and so the recorded message is diagnosable
|
|
27
|
+
* instead of the opaque "exit null".
|
|
28
|
+
*/
|
|
29
|
+
export declare class CodexCliTimeoutError extends Error {
|
|
30
|
+
readonly timeoutMs: number;
|
|
31
|
+
readonly signal: NodeJS.Signals | null;
|
|
32
|
+
constructor(timeoutMs: number, signal: NodeJS.Signals | null, detail?: string);
|
|
10
33
|
}
|
|
11
34
|
export declare function runCodexCliJson<T>(options: CodexCliRunOptions): Promise<CodexCliRunResult<T>>;
|
|
35
|
+
/**
|
|
36
|
+
* Cheap, synchronous "is the Codex CLI installed?" probe — resolves the
|
|
37
|
+
* `codex` executable on PATH (plus the Homebrew/usr-local fallbacks the
|
|
38
|
+
* runner already searches). Used to decide, per import, whether AI metadata
|
|
39
|
+
* extraction is available or whether to fall back to BasicMetadataExtractor.
|
|
40
|
+
* Detects install only, NOT auth — an installed-but-unauthenticated Codex
|
|
41
|
+
* still passes here and fails later at extraction time.
|
|
42
|
+
*/
|
|
43
|
+
export declare function isCodexCliAvailable(): boolean;
|
|
12
44
|
export declare function resetCodexCliRunnerCacheForTests(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Summarise codex output for diagnosis. The old first-500-chars slice captured
|
|
47
|
+
* only the startup banner and hid the actual cause, which lands at the END of
|
|
48
|
+
* the stream (the failing model name, the exit reason). Instead keep the
|
|
49
|
+
* salient `ERROR` lines plus the tail. Short outputs are returned whole.
|
|
50
|
+
*/
|
|
51
|
+
export declare function summarizeCodexOutput(stderr: string, stdout: string): string;
|
|
13
52
|
export declare function resolveCodexExecutableForTests(name: string, pathEnv?: string | undefined, fallbackDirs?: readonly string[]): string | undefined;
|
|
14
53
|
//# sourceMappingURL=codex-cli-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli-runner.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-cli-runner.d.ts","sourceRoot":"","sources":["../../../src/providers/codex-cli-runner.ts"],"names":[],"mappings":"AAsBA,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AAmCD;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC3B,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,MAAM,SAAK;CAS1E;AAMD,wBAAsB,eAAe,CAAC,CAAC,EACrC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAyF/B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED,wBAAgB,gCAAgC,IAAI,IAAI,CAMvD;AAgLD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe3E;AAsGD,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,MAAM,GAAG,SAA+B,EACjD,YAAY,GAAE,SAAS,MAAM,EAAmC,GAC/D,MAAM,GAAG,SAAS,CAepB"}
|