onadit 0.0.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.dev.md +124 -0
- package/README.md +194 -2
- package/dist/src/auth/keychain.d.ts +42 -0
- package/dist/src/auth/keychain.d.ts.map +1 -0
- package/dist/src/auth/keychain.js +177 -0
- package/dist/src/auth/keychain.js.map +1 -0
- package/dist/src/auth/middleware.d.ts +21 -0
- package/dist/src/auth/middleware.d.ts.map +1 -0
- package/dist/src/auth/middleware.js +93 -0
- package/dist/src/auth/middleware.js.map +1 -0
- package/dist/src/auth/rate-limit.d.ts +16 -0
- package/dist/src/auth/rate-limit.d.ts.map +1 -0
- package/dist/src/auth/rate-limit.js +38 -0
- package/dist/src/auth/rate-limit.js.map +1 -0
- package/dist/src/auth/rotation.d.ts +67 -0
- package/dist/src/auth/rotation.d.ts.map +1 -0
- package/dist/src/auth/rotation.js +190 -0
- package/dist/src/auth/rotation.js.map +1 -0
- package/dist/src/backfill/project-context-batch-constructor.d.ts +127 -0
- package/dist/src/backfill/project-context-batch-constructor.d.ts.map +1 -0
- package/dist/src/backfill/project-context-batch-constructor.js +210 -0
- package/dist/src/backfill/project-context-batch-constructor.js.map +1 -0
- package/dist/src/capture/assistant-text-lookup.d.ts +31 -0
- package/dist/src/capture/assistant-text-lookup.d.ts.map +1 -0
- package/dist/src/capture/assistant-text-lookup.js +222 -0
- package/dist/src/capture/assistant-text-lookup.js.map +1 -0
- package/dist/src/capture/auto-capture.d.ts +322 -0
- package/dist/src/capture/auto-capture.d.ts.map +1 -0
- package/dist/src/capture/auto-capture.js +1167 -0
- package/dist/src/capture/auto-capture.js.map +1 -0
- package/dist/src/capture/auto-repair.d.ts +125 -0
- package/dist/src/capture/auto-repair.d.ts.map +1 -0
- package/dist/src/capture/auto-repair.js +280 -0
- package/dist/src/capture/auto-repair.js.map +1 -0
- package/dist/src/capture/batch-budget.d.ts +90 -0
- package/dist/src/capture/batch-budget.d.ts.map +1 -0
- package/dist/src/capture/batch-budget.js +148 -0
- package/dist/src/capture/batch-budget.js.map +1 -0
- package/dist/src/capture/claude-cli-triage-provider.d.ts +28 -0
- package/dist/src/capture/claude-cli-triage-provider.d.ts.map +1 -0
- package/dist/src/capture/claude-cli-triage-provider.js +101 -0
- package/dist/src/capture/claude-cli-triage-provider.js.map +1 -0
- package/dist/src/capture/codex-cli-triage-provider.d.ts +17 -0
- package/dist/src/capture/codex-cli-triage-provider.d.ts.map +1 -0
- package/dist/src/capture/codex-cli-triage-provider.js +91 -0
- package/dist/src/capture/codex-cli-triage-provider.js.map +1 -0
- package/dist/src/capture/cursor-capture.d.ts +89 -0
- package/dist/src/capture/cursor-capture.d.ts.map +1 -0
- package/dist/src/capture/cursor-capture.js +121 -0
- package/dist/src/capture/cursor-capture.js.map +1 -0
- package/dist/src/capture/observability.d.ts +131 -0
- package/dist/src/capture/observability.d.ts.map +1 -0
- package/dist/src/capture/observability.js +181 -0
- package/dist/src/capture/observability.js.map +1 -0
- package/dist/src/capture/openai-triage-provider.d.ts +92 -0
- package/dist/src/capture/openai-triage-provider.d.ts.map +1 -0
- package/dist/src/capture/openai-triage-provider.js +267 -0
- package/dist/src/capture/openai-triage-provider.js.map +1 -0
- package/dist/src/capture/recover-quarantine.d.ts +273 -0
- package/dist/src/capture/recover-quarantine.d.ts.map +1 -0
- package/dist/src/capture/recover-quarantine.js +581 -0
- package/dist/src/capture/recover-quarantine.js.map +1 -0
- package/dist/src/capture/review-queue-index.d.ts +51 -0
- package/dist/src/capture/review-queue-index.d.ts.map +1 -0
- package/dist/src/capture/review-queue-index.js +204 -0
- package/dist/src/capture/review-queue-index.js.map +1 -0
- package/dist/src/capture/review-queue.d.ts +47 -0
- package/dist/src/capture/review-queue.d.ts.map +1 -0
- package/dist/src/capture/review-queue.js +116 -0
- package/dist/src/capture/review-queue.js.map +1 -0
- package/dist/src/capture/sources.d.ts +53 -0
- package/dist/src/capture/sources.d.ts.map +1 -0
- package/dist/src/capture/sources.js +55 -0
- package/dist/src/capture/sources.js.map +1 -0
- package/dist/src/capture/stored-statements.d.ts +9 -0
- package/dist/src/capture/stored-statements.d.ts.map +1 -0
- package/dist/src/capture/stored-statements.js +63 -0
- package/dist/src/capture/stored-statements.js.map +1 -0
- package/dist/src/capture/triage-classification.d.ts +92 -0
- package/dist/src/capture/triage-classification.d.ts.map +1 -0
- package/dist/src/capture/triage-classification.js +94 -0
- package/dist/src/capture/triage-classification.js.map +1 -0
- package/dist/src/capture/triage-lane.d.ts +39 -0
- package/dist/src/capture/triage-lane.d.ts.map +1 -0
- package/dist/src/capture/triage-lane.js +217 -0
- package/dist/src/capture/triage-lane.js.map +1 -0
- package/dist/src/capture/triage-provider-factory.d.ts +36 -0
- package/dist/src/capture/triage-provider-factory.d.ts.map +1 -0
- package/dist/src/capture/triage-provider-factory.js +55 -0
- package/dist/src/capture/triage-provider-factory.js.map +1 -0
- package/dist/src/capture/triage-provider.d.ts +82 -0
- package/dist/src/capture/triage-provider.d.ts.map +1 -0
- package/dist/src/capture/triage-provider.js +126 -0
- package/dist/src/capture/triage-provider.js.map +1 -0
- package/dist/src/capture/triage.d.ts +30 -0
- package/dist/src/capture/triage.d.ts.map +1 -0
- package/dist/src/capture/triage.js +50 -0
- package/dist/src/capture/triage.js.map +1 -0
- package/dist/src/capture/user-statements-recheck.d.ts +22 -0
- package/dist/src/capture/user-statements-recheck.d.ts.map +1 -0
- package/dist/src/capture/user-statements-recheck.js +181 -0
- package/dist/src/capture/user-statements-recheck.js.map +1 -0
- package/dist/src/capture/user-statements.d.ts +84 -0
- package/dist/src/capture/user-statements.d.ts.map +1 -0
- package/dist/src/capture/user-statements.js +617 -0
- package/dist/src/capture/user-statements.js.map +1 -0
- package/dist/src/cli/agent-homes.d.ts +15 -0
- package/dist/src/cli/agent-homes.d.ts.map +1 -0
- package/dist/src/cli/agent-homes.js +45 -0
- package/dist/src/cli/agent-homes.js.map +1 -0
- package/dist/src/cli/commands/backfill.d.ts +3 -0
- package/dist/src/cli/commands/backfill.d.ts.map +1 -0
- package/dist/src/cli/commands/backfill.js +1379 -0
- package/dist/src/cli/commands/backfill.js.map +1 -0
- package/dist/src/cli/commands/brief.d.ts +12 -0
- package/dist/src/cli/commands/brief.d.ts.map +1 -0
- package/dist/src/cli/commands/brief.js +131 -0
- package/dist/src/cli/commands/brief.js.map +1 -0
- package/dist/src/cli/commands/bulk-ingest.d.ts +3 -0
- package/dist/src/cli/commands/bulk-ingest.d.ts.map +1 -0
- package/dist/src/cli/commands/bulk-ingest.js +126 -0
- package/dist/src/cli/commands/bulk-ingest.js.map +1 -0
- package/dist/src/cli/commands/capture-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 +194 -0
- package/dist/src/cli/commands/capture-recover.js.map +1 -0
- package/dist/src/cli/commands/capture.d.ts +12 -0
- package/dist/src/cli/commands/capture.d.ts.map +1 -0
- package/dist/src/cli/commands/capture.js +304 -0
- package/dist/src/cli/commands/capture.js.map +1 -0
- package/dist/src/cli/commands/chunk-backfill.d.ts +13 -0
- package/dist/src/cli/commands/chunk-backfill.d.ts.map +1 -0
- package/dist/src/cli/commands/chunk-backfill.js +157 -0
- package/dist/src/cli/commands/chunk-backfill.js.map +1 -0
- package/dist/src/cli/commands/compact.d.ts +3 -0
- package/dist/src/cli/commands/compact.d.ts.map +1 -0
- package/dist/src/cli/commands/compact.js +70 -0
- package/dist/src/cli/commands/compact.js.map +1 -0
- package/dist/src/cli/commands/cursor-probe.d.ts +20 -0
- package/dist/src/cli/commands/cursor-probe.d.ts.map +1 -0
- package/dist/src/cli/commands/cursor-probe.js +162 -0
- package/dist/src/cli/commands/cursor-probe.js.map +1 -0
- 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 +259 -0
- package/dist/src/cli/commands/doctor.js.map +1 -0
- package/dist/src/cli/commands/feedback.d.ts +34 -0
- package/dist/src/cli/commands/feedback.d.ts.map +1 -0
- package/dist/src/cli/commands/feedback.js +214 -0
- package/dist/src/cli/commands/feedback.js.map +1 -0
- package/dist/src/cli/commands/hooks-install.d.ts +66 -0
- package/dist/src/cli/commands/hooks-install.d.ts.map +1 -0
- package/dist/src/cli/commands/hooks-install.js +228 -0
- package/dist/src/cli/commands/hooks-install.js.map +1 -0
- package/dist/src/cli/commands/import.d.ts +19 -0
- package/dist/src/cli/commands/import.d.ts.map +1 -0
- package/dist/src/cli/commands/import.js +258 -0
- package/dist/src/cli/commands/import.js.map +1 -0
- package/dist/src/cli/commands/ingest.d.ts +3 -0
- package/dist/src/cli/commands/ingest.d.ts.map +1 -0
- package/dist/src/cli/commands/ingest.js +80 -0
- package/dist/src/cli/commands/ingest.js.map +1 -0
- package/dist/src/cli/commands/mcp-install.d.ts +65 -0
- package/dist/src/cli/commands/mcp-install.d.ts.map +1 -0
- package/dist/src/cli/commands/mcp-install.js +306 -0
- package/dist/src/cli/commands/mcp-install.js.map +1 -0
- package/dist/src/cli/commands/menubar.d.ts +127 -0
- package/dist/src/cli/commands/menubar.d.ts.map +1 -0
- package/dist/src/cli/commands/menubar.js +585 -0
- package/dist/src/cli/commands/menubar.js.map +1 -0
- package/dist/src/cli/commands/onboard-first-run.d.ts +5 -0
- package/dist/src/cli/commands/onboard-first-run.d.ts.map +1 -0
- package/dist/src/cli/commands/onboard-first-run.js +156 -0
- package/dist/src/cli/commands/onboard-first-run.js.map +1 -0
- package/dist/src/cli/commands/onboard.d.ts +336 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -0
- package/dist/src/cli/commands/onboard.js +1873 -0
- package/dist/src/cli/commands/onboard.js.map +1 -0
- package/dist/src/cli/commands/rebuild.d.ts +12 -0
- package/dist/src/cli/commands/rebuild.d.ts.map +1 -0
- package/dist/src/cli/commands/rebuild.js +167 -0
- package/dist/src/cli/commands/rebuild.js.map +1 -0
- package/dist/src/cli/commands/reconcile.d.ts +3 -0
- package/dist/src/cli/commands/reconcile.d.ts.map +1 -0
- package/dist/src/cli/commands/reconcile.js +68 -0
- package/dist/src/cli/commands/reconcile.js.map +1 -0
- package/dist/src/cli/commands/reindex.d.ts +3 -0
- package/dist/src/cli/commands/reindex.d.ts.map +1 -0
- package/dist/src/cli/commands/reindex.js +66 -0
- package/dist/src/cli/commands/reindex.js.map +1 -0
- package/dist/src/cli/commands/review.d.ts +13 -0
- package/dist/src/cli/commands/review.d.ts.map +1 -0
- package/dist/src/cli/commands/review.js +401 -0
- package/dist/src/cli/commands/review.js.map +1 -0
- package/dist/src/cli/commands/save.d.ts +3 -0
- package/dist/src/cli/commands/save.d.ts.map +1 -0
- package/dist/src/cli/commands/save.js +111 -0
- package/dist/src/cli/commands/save.js.map +1 -0
- package/dist/src/cli/commands/search.d.ts +37 -0
- package/dist/src/cli/commands/search.d.ts.map +1 -0
- package/dist/src/cli/commands/search.js +118 -0
- package/dist/src/cli/commands/search.js.map +1 -0
- package/dist/src/cli/commands/setup.d.ts +30 -0
- package/dist/src/cli/commands/setup.d.ts.map +1 -0
- package/dist/src/cli/commands/setup.js +122 -0
- package/dist/src/cli/commands/setup.js.map +1 -0
- package/dist/src/cli/commands/stats.d.ts +3 -0
- package/dist/src/cli/commands/stats.d.ts.map +1 -0
- package/dist/src/cli/commands/stats.js +42 -0
- package/dist/src/cli/commands/stats.js.map +1 -0
- package/dist/src/cli/commands/status.d.ts +17 -0
- package/dist/src/cli/commands/status.d.ts.map +1 -0
- package/dist/src/cli/commands/status.js +206 -0
- package/dist/src/cli/commands/status.js.map +1 -0
- package/dist/src/cli/commands/token-issue.d.ts +3 -0
- package/dist/src/cli/commands/token-issue.d.ts.map +1 -0
- package/dist/src/cli/commands/token-issue.js +33 -0
- package/dist/src/cli/commands/token-issue.js.map +1 -0
- package/dist/src/cli/commands/triage.d.ts +3 -0
- package/dist/src/cli/commands/triage.d.ts.map +1 -0
- package/dist/src/cli/commands/triage.js +127 -0
- package/dist/src/cli/commands/triage.js.map +1 -0
- package/dist/src/cli/commands/uninstall.d.ts +85 -0
- package/dist/src/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/src/cli/commands/uninstall.js +512 -0
- package/dist/src/cli/commands/uninstall.js.map +1 -0
- package/dist/src/cli/commands/update.d.ts +105 -0
- package/dist/src/cli/commands/update.d.ts.map +1 -0
- package/dist/src/cli/commands/update.js +559 -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 +28 -0
- package/dist/src/cli/default-config-path.js.map +1 -0
- package/dist/src/cli/feedback/feedback-config.d.ts +67 -0
- package/dist/src/cli/feedback/feedback-config.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-config.js +169 -0
- package/dist/src/cli/feedback/feedback-config.js.map +1 -0
- package/dist/src/cli/feedback/feedback-history.d.ts +11 -0
- package/dist/src/cli/feedback/feedback-history.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-history.js +145 -0
- package/dist/src/cli/feedback/feedback-history.js.map +1 -0
- package/dist/src/cli/feedback/feedback-payload.d.ts +74 -0
- package/dist/src/cli/feedback/feedback-payload.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-payload.js +10 -0
- package/dist/src/cli/feedback/feedback-payload.js.map +1 -0
- package/dist/src/cli/feedback/feedback-relay.d.ts +15 -0
- package/dist/src/cli/feedback/feedback-relay.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-relay.js +47 -0
- package/dist/src/cli/feedback/feedback-relay.js.map +1 -0
- package/dist/src/cli/feedback/feedback-status.d.ts +11 -0
- package/dist/src/cli/feedback/feedback-status.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-status.js +122 -0
- package/dist/src/cli/feedback/feedback-status.js.map +1 -0
- package/dist/src/cli/feedback/invite.d.ts +17 -0
- package/dist/src/cli/feedback/invite.d.ts.map +1 -0
- package/dist/src/cli/feedback/invite.js +73 -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/hooks-writers/claude-code-policy-script.d.ts +35 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.js +122 -0
- package/dist/src/cli/hooks-writers/claude-code-policy-script.js.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code.d.ts +63 -0
- package/dist/src/cli/hooks-writers/claude-code.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/claude-code.js +289 -0
- package/dist/src/cli/hooks-writers/claude-code.js.map +1 -0
- package/dist/src/cli/hooks-writers/codex.d.ts +16 -0
- package/dist/src/cli/hooks-writers/codex.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/codex.js +17 -0
- package/dist/src/cli/hooks-writers/codex.js.map +1 -0
- package/dist/src/cli/hooks-writers/errors.d.ts +16 -0
- package/dist/src/cli/hooks-writers/errors.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/errors.js +24 -0
- package/dist/src/cli/hooks-writers/errors.js.map +1 -0
- package/dist/src/cli/hooks-writers/index.d.ts +23 -0
- package/dist/src/cli/hooks-writers/index.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/index.js +34 -0
- package/dist/src/cli/hooks-writers/index.js.map +1 -0
- package/dist/src/cli/hooks-writers/state.d.ts +43 -0
- package/dist/src/cli/hooks-writers/state.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/state.js +225 -0
- package/dist/src/cli/hooks-writers/state.js.map +1 -0
- package/dist/src/cli/hooks-writers/types.d.ts +28 -0
- package/dist/src/cli/hooks-writers/types.d.ts.map +1 -0
- package/dist/src/cli/hooks-writers/types.js +8 -0
- package/dist/src/cli/hooks-writers/types.js.map +1 -0
- package/dist/src/cli/http-client.d.ts +128 -0
- package/dist/src/cli/http-client.d.ts.map +1 -0
- package/dist/src/cli/http-client.js +401 -0
- package/dist/src/cli/http-client.js.map +1 -0
- package/dist/src/cli/index.d.ts +4 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +99 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/job-poller.d.ts +13 -0
- package/dist/src/cli/job-poller.d.ts.map +1 -0
- package/dist/src/cli/job-poller.js +29 -0
- package/dist/src/cli/job-poller.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.d.ts +20 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.js +918 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/earlier-name-restrictions.d.ts +11 -0
- package/dist/src/cli/mcp-config-writers/earlier-name-restrictions.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/earlier-name-restrictions.js +152 -0
- package/dist/src/cli/mcp-config-writers/earlier-name-restrictions.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/errors.d.ts +17 -0
- package/dist/src/cli/mcp-config-writers/errors.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/errors.js +13 -0
- package/dist/src/cli/mcp-config-writers/errors.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/index.d.ts +28 -0
- package/dist/src/cli/mcp-config-writers/index.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/index.js +70 -0
- package/dist/src/cli/mcp-config-writers/index.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/json-config.d.ts +20 -0
- package/dist/src/cli/mcp-config-writers/json-config.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/json-config.js +301 -0
- package/dist/src/cli/mcp-config-writers/json-config.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/left-in-folder.d.ts +18 -0
- package/dist/src/cli/mcp-config-writers/left-in-folder.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/left-in-folder.js +140 -0
- package/dist/src/cli/mcp-config-writers/left-in-folder.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/redact.d.ts +28 -0
- package/dist/src/cli/mcp-config-writers/redact.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/redact.js +48 -0
- package/dist/src/cli/mcp-config-writers/redact.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/types.d.ts +46 -0
- package/dist/src/cli/mcp-config-writers/types.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/types.js +5 -0
- package/dist/src/cli/mcp-config-writers/types.js.map +1 -0
- package/dist/src/cli/output.d.ts +8 -0
- package/dist/src/cli/output.d.ts.map +1 -0
- package/dist/src/cli/output.js +34 -0
- package/dist/src/cli/output.js.map +1 -0
- package/dist/src/cli/postinstall-menubar.d.ts +38 -0
- package/dist/src/cli/postinstall-menubar.d.ts.map +1 -0
- package/dist/src/cli/postinstall-menubar.js +139 -0
- package/dist/src/cli/postinstall-menubar.js.map +1 -0
- package/dist/src/cli/status/friend-header.d.ts +61 -0
- package/dist/src/cli/status/friend-header.d.ts.map +1 -0
- package/dist/src/cli/status/friend-header.js +727 -0
- package/dist/src/cli/status/friend-header.js.map +1 -0
- package/dist/src/cli/status/local-signals.d.ts +89 -0
- package/dist/src/cli/status/local-signals.d.ts.map +1 -0
- package/dist/src/cli/status/local-signals.js +194 -0
- package/dist/src/cli/status/local-signals.js.map +1 -0
- package/dist/src/cli/token.d.ts +37 -0
- package/dist/src/cli/token.d.ts.map +1 -0
- package/dist/src/cli/token.js +105 -0
- package/dist/src/cli/token.js.map +1 -0
- package/dist/src/cli/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/cli/uninstall/mcp-uninstall.d.ts +33 -0
- package/dist/src/cli/uninstall/mcp-uninstall.d.ts.map +1 -0
- package/dist/src/cli/uninstall/mcp-uninstall.js +116 -0
- package/dist/src/cli/uninstall/mcp-uninstall.js.map +1 -0
- package/dist/src/config/loader.d.ts +9 -0
- package/dist/src/config/loader.d.ts.map +1 -0
- package/dist/src/config/loader.js +73 -0
- package/dist/src/config/loader.js.map +1 -0
- package/dist/src/config/schema.d.ts +956 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +339 -0
- package/dist/src/config/schema.js.map +1 -0
- package/dist/src/diagnostics/claude-preflight.d.ts +35 -0
- package/dist/src/diagnostics/claude-preflight.d.ts.map +1 -0
- package/dist/src/diagnostics/claude-preflight.js +90 -0
- package/dist/src/diagnostics/claude-preflight.js.map +1 -0
- package/dist/src/diagnostics/codex-preflight.d.ts +43 -0
- package/dist/src/diagnostics/codex-preflight.d.ts.map +1 -0
- package/dist/src/diagnostics/codex-preflight.js +128 -0
- package/dist/src/diagnostics/codex-preflight.js.map +1 -0
- package/dist/src/diagnostics/doctor.d.ts +125 -0
- package/dist/src/diagnostics/doctor.d.ts.map +1 -0
- package/dist/src/diagnostics/doctor.js +450 -0
- package/dist/src/diagnostics/doctor.js.map +1 -0
- package/dist/src/diagnostics/install-layout.d.ts +40 -0
- package/dist/src/diagnostics/install-layout.d.ts.map +1 -0
- package/dist/src/diagnostics/install-layout.js +55 -0
- package/dist/src/diagnostics/install-layout.js.map +1 -0
- package/dist/src/diagnostics/memory-coverage.d.ts +54 -0
- package/dist/src/diagnostics/memory-coverage.d.ts.map +1 -0
- package/dist/src/diagnostics/memory-coverage.js +272 -0
- package/dist/src/diagnostics/memory-coverage.js.map +1 -0
- package/dist/src/diagnostics/notify.d.ts +107 -0
- package/dist/src/diagnostics/notify.d.ts.map +1 -0
- package/dist/src/diagnostics/notify.js +217 -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/bulk-ingest.d.ts +11 -0
- package/dist/src/ingestion/bulk-ingest.d.ts.map +1 -0
- package/dist/src/ingestion/bulk-ingest.js +11 -0
- package/dist/src/ingestion/bulk-ingest.js.map +1 -0
- package/dist/src/ingestion/chunk-meta.d.ts +85 -0
- package/dist/src/ingestion/chunk-meta.d.ts.map +1 -0
- package/dist/src/ingestion/chunk-meta.js +167 -0
- package/dist/src/ingestion/chunk-meta.js.map +1 -0
- package/dist/src/ingestion/chunk-text.d.ts +39 -0
- package/dist/src/ingestion/chunk-text.d.ts.map +1 -0
- package/dist/src/ingestion/chunk-text.js +114 -0
- package/dist/src/ingestion/chunk-text.js.map +1 -0
- package/dist/src/ingestion/cursor/cursor-store.d.ts +177 -0
- package/dist/src/ingestion/cursor/cursor-store.d.ts.map +1 -0
- package/dist/src/ingestion/cursor/cursor-store.js +242 -0
- package/dist/src/ingestion/cursor/cursor-store.js.map +1 -0
- package/dist/src/ingestion/cursor/enrich-roots.d.ts +16 -0
- package/dist/src/ingestion/cursor/enrich-roots.d.ts.map +1 -0
- package/dist/src/ingestion/cursor/enrich-roots.js +22 -0
- package/dist/src/ingestion/cursor/enrich-roots.js.map +1 -0
- package/dist/src/ingestion/cursor/vscdb-reader.d.ts +32 -0
- package/dist/src/ingestion/cursor/vscdb-reader.d.ts.map +1 -0
- package/dist/src/ingestion/cursor/vscdb-reader.js +113 -0
- package/dist/src/ingestion/cursor/vscdb-reader.js.map +1 -0
- package/dist/src/ingestion/cursor/workspace-root.d.ts +96 -0
- package/dist/src/ingestion/cursor/workspace-root.d.ts.map +1 -0
- package/dist/src/ingestion/cursor/workspace-root.js +187 -0
- package/dist/src/ingestion/cursor/workspace-root.js.map +1 -0
- package/dist/src/ingestion/extractor.d.ts +16 -0
- package/dist/src/ingestion/extractor.d.ts.map +1 -0
- package/dist/src/ingestion/extractor.js +85 -0
- package/dist/src/ingestion/extractor.js.map +1 -0
- package/dist/src/ingestion/extractors/docx.d.ts +3 -0
- package/dist/src/ingestion/extractors/docx.d.ts.map +1 -0
- package/dist/src/ingestion/extractors/docx.js +20 -0
- package/dist/src/ingestion/extractors/docx.js.map +1 -0
- package/dist/src/ingestion/extractors/pdf.d.ts +3 -0
- package/dist/src/ingestion/extractors/pdf.d.ts.map +1 -0
- package/dist/src/ingestion/extractors/pdf.js +32 -0
- package/dist/src/ingestion/extractors/pdf.js.map +1 -0
- package/dist/src/ingestion/historical-campaign.d.ts +340 -0
- package/dist/src/ingestion/historical-campaign.d.ts.map +1 -0
- package/dist/src/ingestion/historical-campaign.js +1010 -0
- package/dist/src/ingestion/historical-campaign.js.map +1 -0
- package/dist/src/ingestion/ignored-paths.d.ts +20 -0
- package/dist/src/ingestion/ignored-paths.d.ts.map +1 -0
- package/dist/src/ingestion/ignored-paths.js +45 -0
- package/dist/src/ingestion/ignored-paths.js.map +1 -0
- package/dist/src/ingestion/inbox-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 +12 -0
- package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-watcher.js +83 -0
- package/dist/src/ingestion/inbox-watcher.js.map +1 -0
- package/dist/src/ingestion/indexer.d.ts +39 -0
- package/dist/src/ingestion/indexer.d.ts.map +1 -0
- package/dist/src/ingestion/indexer.js +111 -0
- package/dist/src/ingestion/indexer.js.map +1 -0
- package/dist/src/ingestion/metadata-extraction.d.ts +56 -0
- package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -0
- package/dist/src/ingestion/metadata-extraction.js +151 -0
- package/dist/src/ingestion/metadata-extraction.js.map +1 -0
- package/dist/src/ingestion/parsers/chatgpt-web.d.ts +29 -0
- package/dist/src/ingestion/parsers/chatgpt-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/chatgpt-web.js +100 -0
- package/dist/src/ingestion/parsers/chatgpt-web.js.map +1 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.d.ts +26 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.js +125 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.js.map +1 -0
- package/dist/src/ingestion/parsers/claude-desktop-sessions.d.ts +17 -0
- package/dist/src/ingestion/parsers/claude-desktop-sessions.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/claude-desktop-sessions.js +112 -0
- package/dist/src/ingestion/parsers/claude-desktop-sessions.js.map +1 -0
- package/dist/src/ingestion/parsers/claude-web.d.ts +24 -0
- package/dist/src/ingestion/parsers/claude-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/claude-web.js +75 -0
- package/dist/src/ingestion/parsers/claude-web.js.map +1 -0
- package/dist/src/ingestion/parsers/codex-jsonl.d.ts +18 -0
- package/dist/src/ingestion/parsers/codex-jsonl.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/codex-jsonl.js +150 -0
- package/dist/src/ingestion/parsers/codex-jsonl.js.map +1 -0
- package/dist/src/ingestion/parsers/gemini-web.d.ts +16 -0
- package/dist/src/ingestion/parsers/gemini-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/gemini-web.js +170 -0
- package/dist/src/ingestion/parsers/gemini-web.js.map +1 -0
- package/dist/src/ingestion/parsers/grok-cli.d.ts +19 -0
- package/dist/src/ingestion/parsers/grok-cli.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/grok-cli.js +126 -0
- package/dist/src/ingestion/parsers/grok-cli.js.map +1 -0
- package/dist/src/ingestion/parsers/grok-web.d.ts +40 -0
- package/dist/src/ingestion/parsers/grok-web.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/grok-web.js +67 -0
- package/dist/src/ingestion/parsers/grok-web.js.map +1 -0
- package/dist/src/ingestion/parsers/turns.d.ts +36 -0
- package/dist/src/ingestion/parsers/turns.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/turns.js +25 -0
- package/dist/src/ingestion/parsers/turns.js.map +1 -0
- package/dist/src/ingestion/parsers/types.d.ts +47 -0
- package/dist/src/ingestion/parsers/types.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/types.js +26 -0
- package/dist/src/ingestion/parsers/types.js.map +1 -0
- package/dist/src/ingestion/report-cards.d.ts +75 -0
- package/dist/src/ingestion/report-cards.d.ts.map +1 -0
- package/dist/src/ingestion/report-cards.js +224 -0
- package/dist/src/ingestion/report-cards.js.map +1 -0
- package/dist/src/ingestion/scanner.d.ts +48 -0
- package/dist/src/ingestion/scanner.d.ts.map +1 -0
- package/dist/src/ingestion/scanner.js +131 -0
- package/dist/src/ingestion/scanner.js.map +1 -0
- package/dist/src/ingestion/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/ingestion/staging.d.ts +109 -0
- package/dist/src/ingestion/staging.d.ts.map +1 -0
- package/dist/src/ingestion/staging.js +411 -0
- package/dist/src/ingestion/staging.js.map +1 -0
- package/dist/src/ingestion/watcher.d.ts +65 -0
- package/dist/src/ingestion/watcher.d.ts.map +1 -0
- package/dist/src/ingestion/watcher.js +182 -0
- package/dist/src/ingestion/watcher.js.map +1 -0
- package/dist/src/jobs/codex-override-handler.d.ts +3 -0
- package/dist/src/jobs/codex-override-handler.d.ts.map +1 -0
- package/dist/src/jobs/codex-override-handler.js +16 -0
- package/dist/src/jobs/codex-override-handler.js.map +1 -0
- package/dist/src/jobs/handlers/compact.d.ts +30 -0
- package/dist/src/jobs/handlers/compact.d.ts.map +1 -0
- package/dist/src/jobs/handlers/compact.js +360 -0
- package/dist/src/jobs/handlers/compact.js.map +1 -0
- 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 +13 -0
- package/dist/src/jobs/handlers/ingest.d.ts.map +1 -0
- package/dist/src/jobs/handlers/ingest.js +557 -0
- package/dist/src/jobs/handlers/ingest.js.map +1 -0
- package/dist/src/jobs/handlers/optimize.d.ts +11 -0
- package/dist/src/jobs/handlers/optimize.d.ts.map +1 -0
- package/dist/src/jobs/handlers/optimize.js +12 -0
- package/dist/src/jobs/handlers/optimize.js.map +1 -0
- package/dist/src/jobs/handlers/reconcile.d.ts +57 -0
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -0
- package/dist/src/jobs/handlers/reconcile.js +685 -0
- package/dist/src/jobs/handlers/reconcile.js.map +1 -0
- package/dist/src/jobs/handlers/reindex.d.ts +38 -0
- package/dist/src/jobs/handlers/reindex.d.ts.map +1 -0
- package/dist/src/jobs/handlers/reindex.js +63 -0
- package/dist/src/jobs/handlers/reindex.js.map +1 -0
- package/dist/src/jobs/handlers/save.d.ts +10 -0
- package/dist/src/jobs/handlers/save.d.ts.map +1 -0
- package/dist/src/jobs/handlers/save.js +316 -0
- package/dist/src/jobs/handlers/save.js.map +1 -0
- package/dist/src/jobs/handlers/triage.d.ts +47 -0
- package/dist/src/jobs/handlers/triage.d.ts.map +1 -0
- package/dist/src/jobs/handlers/triage.js +95 -0
- package/dist/src/jobs/handlers/triage.js.map +1 -0
- package/dist/src/jobs/maintenance-scheduler.d.ts +30 -0
- package/dist/src/jobs/maintenance-scheduler.d.ts.map +1 -0
- package/dist/src/jobs/maintenance-scheduler.js +41 -0
- package/dist/src/jobs/maintenance-scheduler.js.map +1 -0
- package/dist/src/jobs/queue.d.ts +157 -0
- package/dist/src/jobs/queue.d.ts.map +1 -0
- package/dist/src/jobs/queue.js +759 -0
- package/dist/src/jobs/queue.js.map +1 -0
- package/dist/src/jobs/types.d.ts +53 -0
- package/dist/src/jobs/types.d.ts.map +1 -0
- package/dist/src/jobs/types.js +33 -0
- package/dist/src/jobs/types.js.map +1 -0
- package/dist/src/jobs/worker-entry.d.ts +10 -0
- package/dist/src/jobs/worker-entry.d.ts.map +1 -0
- package/dist/src/jobs/worker-entry.js +252 -0
- package/dist/src/jobs/worker-entry.js.map +1 -0
- package/dist/src/jobs/worker-process.d.ts +67 -0
- package/dist/src/jobs/worker-process.d.ts.map +1 -0
- package/dist/src/jobs/worker-process.js +227 -0
- package/dist/src/jobs/worker-process.js.map +1 -0
- package/dist/src/jobs/worker.d.ts +11 -0
- package/dist/src/jobs/worker.d.ts.map +1 -0
- package/dist/src/jobs/worker.js +14 -0
- package/dist/src/jobs/worker.js.map +1 -0
- package/dist/src/main.d.ts +2 -0
- package/dist/src/main.d.ts.map +1 -0
- package/dist/src/main.js +683 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/mcp/capture-diagnostics.d.ts +51 -0
- package/dist/src/mcp/capture-diagnostics.d.ts.map +1 -0
- package/dist/src/mcp/capture-diagnostics.js +127 -0
- package/dist/src/mcp/capture-diagnostics.js.map +1 -0
- package/dist/src/mcp/errors.d.ts +8 -0
- package/dist/src/mcp/errors.d.ts.map +1 -0
- package/dist/src/mcp/errors.js +69 -0
- package/dist/src/mcp/errors.js.map +1 -0
- package/dist/src/mcp/memory-diagnostics.d.ts +6 -0
- package/dist/src/mcp/memory-diagnostics.d.ts.map +1 -0
- package/dist/src/mcp/memory-diagnostics.js +51 -0
- package/dist/src/mcp/memory-diagnostics.js.map +1 -0
- package/dist/src/mcp/names.d.ts +48 -0
- package/dist/src/mcp/names.d.ts.map +1 -0
- package/dist/src/mcp/names.js +77 -0
- package/dist/src/mcp/names.js.map +1 -0
- package/dist/src/mcp/server.d.ts +19 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +184 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/stdio.d.ts +2 -0
- package/dist/src/mcp/stdio.d.ts.map +1 -0
- package/dist/src/mcp/stdio.js +8 -0
- package/dist/src/mcp/stdio.js.map +1 -0
- package/dist/src/mcp/tools/context-pack.d.ts +35 -0
- package/dist/src/mcp/tools/context-pack.d.ts.map +1 -0
- package/dist/src/mcp/tools/context-pack.js +279 -0
- package/dist/src/mcp/tools/context-pack.js.map +1 -0
- package/dist/src/mcp/tools/conversations-search.d.ts +38 -0
- package/dist/src/mcp/tools/conversations-search.d.ts.map +1 -0
- package/dist/src/mcp/tools/conversations-search.js +79 -0
- package/dist/src/mcp/tools/conversations-search.js.map +1 -0
- package/dist/src/mcp/tools/evidence-feedback.d.ts +60 -0
- package/dist/src/mcp/tools/evidence-feedback.d.ts.map +1 -0
- package/dist/src/mcp/tools/evidence-feedback.js +62 -0
- package/dist/src/mcp/tools/evidence-feedback.js.map +1 -0
- package/dist/src/mcp/tools/log-outcome.d.ts +72 -0
- package/dist/src/mcp/tools/log-outcome.d.ts.map +1 -0
- package/dist/src/mcp/tools/log-outcome.js +59 -0
- package/dist/src/mcp/tools/log-outcome.js.map +1 -0
- package/dist/src/mcp/tools/open-evidence.d.ts +37 -0
- package/dist/src/mcp/tools/open-evidence.d.ts.map +1 -0
- package/dist/src/mcp/tools/open-evidence.js +72 -0
- package/dist/src/mcp/tools/open-evidence.js.map +1 -0
- package/dist/src/mcp/tools/save.d.ts +37 -0
- package/dist/src/mcp/tools/save.d.ts.map +1 -0
- package/dist/src/mcp/tools/save.js +65 -0
- package/dist/src/mcp/tools/save.js.map +1 -0
- package/dist/src/mcp/tools/search.d.ts +37 -0
- package/dist/src/mcp/tools/search.d.ts.map +1 -0
- package/dist/src/mcp/tools/search.js +95 -0
- package/dist/src/mcp/tools/search.js.map +1 -0
- package/dist/src/mcp/tools/status.d.ts +31 -0
- package/dist/src/mcp/tools/status.d.ts.map +1 -0
- package/dist/src/mcp/tools/status.js +63 -0
- package/dist/src/mcp/tools/status.js.map +1 -0
- package/dist/src/observability/coverage.d.ts +100 -0
- package/dist/src/observability/coverage.d.ts.map +1 -0
- package/dist/src/observability/coverage.js +178 -0
- package/dist/src/observability/coverage.js.map +1 -0
- 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 +352 -0
- package/dist/src/observability/onboarding-metric.js.map +1 -0
- package/dist/src/observability/retrieval-feedback.d.ts +82 -0
- package/dist/src/observability/retrieval-feedback.d.ts.map +1 -0
- package/dist/src/observability/retrieval-feedback.js +231 -0
- package/dist/src/observability/retrieval-feedback.js.map +1 -0
- package/dist/src/observability/rift-context.d.ts +53 -0
- package/dist/src/observability/rift-context.d.ts.map +1 -0
- package/dist/src/observability/rift-context.js +141 -0
- package/dist/src/observability/rift-context.js.map +1 -0
- package/dist/src/observability/staleness.d.ts +43 -0
- package/dist/src/observability/staleness.d.ts.map +1 -0
- package/dist/src/observability/staleness.js +74 -0
- package/dist/src/observability/staleness.js.map +1 -0
- package/dist/src/observability/tool-usage-stats.d.ts +139 -0
- package/dist/src/observability/tool-usage-stats.d.ts.map +1 -0
- package/dist/src/observability/tool-usage-stats.js +245 -0
- package/dist/src/observability/tool-usage-stats.js.map +1 -0
- package/dist/src/observability/tool-usage.d.ts +231 -0
- package/dist/src/observability/tool-usage.d.ts.map +1 -0
- package/dist/src/observability/tool-usage.js +489 -0
- package/dist/src/observability/tool-usage.js.map +1 -0
- package/dist/src/observability/version-check.d.ts +75 -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/onboarding/capture-switch.d.ts +20 -0
- package/dist/src/onboarding/capture-switch.d.ts.map +1 -0
- package/dist/src/onboarding/capture-switch.js +52 -0
- package/dist/src/onboarding/capture-switch.js.map +1 -0
- package/dist/src/onboarding/daemon-control.d.ts +33 -0
- package/dist/src/onboarding/daemon-control.d.ts.map +1 -0
- package/dist/src/onboarding/daemon-control.js +92 -0
- package/dist/src/onboarding/daemon-control.js.map +1 -0
- package/dist/src/onboarding/env-file.d.ts +18 -0
- package/dist/src/onboarding/env-file.d.ts.map +1 -0
- package/dist/src/onboarding/env-file.js +89 -0
- package/dist/src/onboarding/env-file.js.map +1 -0
- package/dist/src/onboarding/search-by-meaning.d.ts +35 -0
- package/dist/src/onboarding/search-by-meaning.d.ts.map +1 -0
- package/dist/src/onboarding/search-by-meaning.js +163 -0
- package/dist/src/onboarding/search-by-meaning.js.map +1 -0
- package/dist/src/onboarding/setup-page.d.ts +7 -0
- package/dist/src/onboarding/setup-page.d.ts.map +1 -0
- package/dist/src/onboarding/setup-page.js +823 -0
- package/dist/src/onboarding/setup-page.js.map +1 -0
- package/dist/src/onboarding/setup-session.d.ts +22 -0
- package/dist/src/onboarding/setup-session.d.ts.map +1 -0
- package/dist/src/onboarding/setup-session.js +80 -0
- package/dist/src/onboarding/setup-session.js.map +1 -0
- package/dist/src/onboarding/setup-state.d.ts +117 -0
- package/dist/src/onboarding/setup-state.d.ts.map +1 -0
- package/dist/src/onboarding/setup-state.js +267 -0
- package/dist/src/onboarding/setup-state.js.map +1 -0
- package/dist/src/onboarding/voyage-validate.d.ts +22 -0
- package/dist/src/onboarding/voyage-validate.d.ts.map +1 -0
- package/dist/src/onboarding/voyage-validate.js +96 -0
- package/dist/src/onboarding/voyage-validate.js.map +1 -0
- package/dist/src/providers/anthropic-digest.d.ts +23 -0
- package/dist/src/providers/anthropic-digest.d.ts.map +1 -0
- package/dist/src/providers/anthropic-digest.js +91 -0
- package/dist/src/providers/anthropic-digest.js.map +1 -0
- package/dist/src/providers/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/claude-cli-metadata-extraction.d.ts +47 -0
- package/dist/src/providers/claude-cli-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/claude-cli-metadata-extraction.js +130 -0
- package/dist/src/providers/claude-cli-metadata-extraction.js.map +1 -0
- package/dist/src/providers/claude-cli-runner.d.ts +92 -0
- package/dist/src/providers/claude-cli-runner.d.ts.map +1 -0
- package/dist/src/providers/claude-cli-runner.js +598 -0
- package/dist/src/providers/claude-cli-runner.js.map +1 -0
- package/dist/src/providers/claude-input-limit.d.ts +32 -0
- package/dist/src/providers/claude-input-limit.d.ts.map +1 -0
- package/dist/src/providers/claude-input-limit.js +32 -0
- package/dist/src/providers/claude-input-limit.js.map +1 -0
- package/dist/src/providers/codex-cli-digest.d.ts +12 -0
- package/dist/src/providers/codex-cli-digest.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-digest.js +70 -0
- package/dist/src/providers/codex-cli-digest.js.map +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts +15 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.js +78 -0
- package/dist/src/providers/codex-cli-metadata-extraction.js.map +1 -0
- package/dist/src/providers/codex-cli-model.d.ts +110 -0
- package/dist/src/providers/codex-cli-model.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-model.js +338 -0
- package/dist/src/providers/codex-cli-model.js.map +1 -0
- package/dist/src/providers/codex-cli-runner.d.ts +70 -0
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-runner.js +745 -0
- package/dist/src/providers/codex-cli-runner.js.map +1 -0
- package/dist/src/providers/codex-input-limit.d.ts +43 -0
- package/dist/src/providers/codex-input-limit.d.ts.map +1 -0
- package/dist/src/providers/codex-input-limit.js +70 -0
- package/dist/src/providers/codex-input-limit.js.map +1 -0
- package/dist/src/providers/conversation-generation.d.ts +21 -0
- package/dist/src/providers/conversation-generation.d.ts.map +1 -0
- package/dist/src/providers/conversation-generation.js +132 -0
- package/dist/src/providers/conversation-generation.js.map +1 -0
- package/dist/src/providers/ollama-embed.d.ts +23 -0
- package/dist/src/providers/ollama-embed.d.ts.map +1 -0
- package/dist/src/providers/ollama-embed.js +137 -0
- package/dist/src/providers/ollama-embed.js.map +1 -0
- package/dist/src/providers/ollama.d.ts +42 -0
- package/dist/src/providers/ollama.d.ts.map +1 -0
- package/dist/src/providers/ollama.js +169 -0
- package/dist/src/providers/ollama.js.map +1 -0
- package/dist/src/providers/openai-metadata-extraction.d.ts +120 -0
- package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/openai-metadata-extraction.js +225 -0
- package/dist/src/providers/openai-metadata-extraction.js.map +1 -0
- package/dist/src/providers/operator-overrides.d.ts +24 -0
- package/dist/src/providers/operator-overrides.d.ts.map +1 -0
- package/dist/src/providers/operator-overrides.js +84 -0
- package/dist/src/providers/operator-overrides.js.map +1 -0
- package/dist/src/providers/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/shared-request.d.ts +22 -0
- package/dist/src/providers/shared-request.d.ts.map +1 -0
- package/dist/src/providers/shared-request.js +63 -0
- package/dist/src/providers/shared-request.js.map +1 -0
- package/dist/src/providers/stub.d.ts +19 -0
- package/dist/src/providers/stub.d.ts.map +1 -0
- package/dist/src/providers/stub.js +74 -0
- package/dist/src/providers/stub.js.map +1 -0
- package/dist/src/providers/types.d.ts +100 -0
- package/dist/src/providers/types.d.ts.map +1 -0
- package/dist/src/providers/types.js +63 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/providers/voyage.d.ts +55 -0
- package/dist/src/providers/voyage.d.ts.map +1 -0
- package/dist/src/providers/voyage.js +179 -0
- package/dist/src/providers/voyage.js.map +1 -0
- package/dist/src/retrieval/brief.d.ts +26 -0
- package/dist/src/retrieval/brief.d.ts.map +1 -0
- package/dist/src/retrieval/brief.js +268 -0
- package/dist/src/retrieval/brief.js.map +1 -0
- package/dist/src/retrieval/canonical-files.d.ts +79 -0
- package/dist/src/retrieval/canonical-files.d.ts.map +1 -0
- package/dist/src/retrieval/canonical-files.js +432 -0
- package/dist/src/retrieval/canonical-files.js.map +1 -0
- package/dist/src/retrieval/compact.d.ts +306 -0
- package/dist/src/retrieval/compact.d.ts.map +1 -0
- package/dist/src/retrieval/compact.js +810 -0
- package/dist/src/retrieval/compact.js.map +1 -0
- package/dist/src/retrieval/context-pack.d.ts +344 -0
- package/dist/src/retrieval/context-pack.d.ts.map +1 -0
- package/dist/src/retrieval/context-pack.js +1483 -0
- package/dist/src/retrieval/context-pack.js.map +1 -0
- package/dist/src/retrieval/conversation-dedup.d.ts +54 -0
- package/dist/src/retrieval/conversation-dedup.d.ts.map +1 -0
- package/dist/src/retrieval/conversation-dedup.js +162 -0
- package/dist/src/retrieval/conversation-dedup.js.map +1 -0
- 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/cwd.d.ts +25 -0
- package/dist/src/retrieval/cwd.d.ts.map +1 -0
- package/dist/src/retrieval/cwd.js +48 -0
- package/dist/src/retrieval/cwd.js.map +1 -0
- package/dist/src/retrieval/degraded.d.ts +20 -0
- package/dist/src/retrieval/degraded.d.ts.map +1 -0
- package/dist/src/retrieval/degraded.js +43 -0
- package/dist/src/retrieval/degraded.js.map +1 -0
- package/dist/src/retrieval/evidence-key.d.ts +48 -0
- package/dist/src/retrieval/evidence-key.d.ts.map +1 -0
- package/dist/src/retrieval/evidence-key.js +131 -0
- package/dist/src/retrieval/evidence-key.js.map +1 -0
- package/dist/src/retrieval/feedback-ranking.d.ts +49 -0
- package/dist/src/retrieval/feedback-ranking.d.ts.map +1 -0
- package/dist/src/retrieval/feedback-ranking.js +138 -0
- package/dist/src/retrieval/feedback-ranking.js.map +1 -0
- package/dist/src/retrieval/git-state.d.ts +62 -0
- package/dist/src/retrieval/git-state.d.ts.map +1 -0
- package/dist/src/retrieval/git-state.js +192 -0
- package/dist/src/retrieval/git-state.js.map +1 -0
- package/dist/src/retrieval/group-by-parent.d.ts +38 -0
- package/dist/src/retrieval/group-by-parent.d.ts.map +1 -0
- package/dist/src/retrieval/group-by-parent.js +40 -0
- package/dist/src/retrieval/group-by-parent.js.map +1 -0
- package/dist/src/retrieval/hybrid.d.ts +75 -0
- package/dist/src/retrieval/hybrid.d.ts.map +1 -0
- package/dist/src/retrieval/hybrid.js +151 -0
- package/dist/src/retrieval/hybrid.js.map +1 -0
- package/dist/src/retrieval/lexical.d.ts +33 -0
- package/dist/src/retrieval/lexical.d.ts.map +1 -0
- package/dist/src/retrieval/lexical.js +379 -0
- package/dist/src/retrieval/lexical.js.map +1 -0
- 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/passages.d.ts +24 -0
- package/dist/src/retrieval/passages.d.ts.map +1 -0
- package/dist/src/retrieval/passages.js +160 -0
- package/dist/src/retrieval/passages.js.map +1 -0
- package/dist/src/retrieval/post-filter.d.ts +32 -0
- package/dist/src/retrieval/post-filter.d.ts.map +1 -0
- package/dist/src/retrieval/post-filter.js +57 -0
- package/dist/src/retrieval/post-filter.js.map +1 -0
- package/dist/src/retrieval/project-index.d.ts +71 -0
- package/dist/src/retrieval/project-index.d.ts.map +1 -0
- package/dist/src/retrieval/project-index.js +348 -0
- package/dist/src/retrieval/project-index.js.map +1 -0
- package/dist/src/retrieval/recall-hint.d.ts +22 -0
- package/dist/src/retrieval/recall-hint.d.ts.map +1 -0
- package/dist/src/retrieval/recall-hint.js +33 -0
- package/dist/src/retrieval/recall-hint.js.map +1 -0
- package/dist/src/retrieval/receipt.d.ts +57 -0
- package/dist/src/retrieval/receipt.d.ts.map +1 -0
- package/dist/src/retrieval/receipt.js +122 -0
- package/dist/src/retrieval/receipt.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/reranker.d.ts +119 -0
- package/dist/src/retrieval/reranker.d.ts.map +1 -0
- package/dist/src/retrieval/reranker.js +220 -0
- package/dist/src/retrieval/reranker.js.map +1 -0
- package/dist/src/retrieval/stitch-chunks.d.ts +76 -0
- package/dist/src/retrieval/stitch-chunks.d.ts.map +1 -0
- package/dist/src/retrieval/stitch-chunks.js +113 -0
- package/dist/src/retrieval/stitch-chunks.js.map +1 -0
- package/dist/src/retrieval/vector.d.ts +71 -0
- package/dist/src/retrieval/vector.d.ts.map +1 -0
- package/dist/src/retrieval/vector.js +147 -0
- package/dist/src/retrieval/vector.js.map +1 -0
- package/dist/src/runtime/legacy-migration.d.ts +27 -0
- package/dist/src/runtime/legacy-migration.d.ts.map +1 -0
- package/dist/src/runtime/legacy-migration.js +140 -0
- package/dist/src/runtime/legacy-migration.js.map +1 -0
- package/dist/src/runtime/legacy-name-guard.d.ts +35 -0
- package/dist/src/runtime/legacy-name-guard.d.ts.map +1 -0
- package/dist/src/runtime/legacy-name-guard.js +58 -0
- package/dist/src/runtime/legacy-name-guard.js.map +1 -0
- package/dist/src/runtime/rift-env.d.ts +14 -0
- package/dist/src/runtime/rift-env.d.ts.map +1 -0
- package/dist/src/runtime/rift-env.js +79 -0
- package/dist/src/runtime/rift-env.js.map +1 -0
- package/dist/src/runtime/voyage-key-source.d.ts +46 -0
- package/dist/src/runtime/voyage-key-source.d.ts.map +1 -0
- package/dist/src/runtime/voyage-key-source.js +97 -0
- package/dist/src/runtime/voyage-key-source.js.map +1 -0
- package/dist/src/runtime/watcher-startup.d.ts +2 -0
- package/dist/src/runtime/watcher-startup.d.ts.map +1 -0
- package/dist/src/runtime/watcher-startup.js +4 -0
- package/dist/src/runtime/watcher-startup.js.map +1 -0
- package/dist/src/security/archive.d.ts +23 -0
- package/dist/src/security/archive.d.ts.map +1 -0
- package/dist/src/security/archive.js +163 -0
- package/dist/src/security/archive.js.map +1 -0
- package/dist/src/security/paths.d.ts +21 -0
- package/dist/src/security/paths.d.ts.map +1 -0
- package/dist/src/security/paths.js +67 -0
- package/dist/src/security/paths.js.map +1 -0
- package/dist/src/server/app.d.ts +29 -0
- package/dist/src/server/app.d.ts.map +1 -0
- package/dist/src/server/app.js +356 -0
- package/dist/src/server/app.js.map +1 -0
- package/dist/src/server/build-info.d.ts +8 -0
- package/dist/src/server/build-info.d.ts.map +1 -0
- package/dist/src/server/build-info.js +61 -0
- package/dist/src/server/build-info.js.map +1 -0
- package/dist/src/server/lifecycle.d.ts +30 -0
- package/dist/src/server/lifecycle.d.ts.map +1 -0
- package/dist/src/server/lifecycle.js +59 -0
- package/dist/src/server/lifecycle.js.map +1 -0
- package/dist/src/server/middleware/multipart.d.ts +51 -0
- package/dist/src/server/middleware/multipart.d.ts.map +1 -0
- package/dist/src/server/middleware/multipart.js +86 -0
- package/dist/src/server/middleware/multipart.js.map +1 -0
- package/dist/src/server/routes/compact.d.ts +37 -0
- package/dist/src/server/routes/compact.d.ts.map +1 -0
- package/dist/src/server/routes/compact.js +80 -0
- package/dist/src/server/routes/compact.js.map +1 -0
- package/dist/src/server/routes/context.d.ts +12 -0
- package/dist/src/server/routes/context.d.ts.map +1 -0
- package/dist/src/server/routes/context.js +73 -0
- package/dist/src/server/routes/context.js.map +1 -0
- package/dist/src/server/routes/conversations-search.d.ts +4 -0
- package/dist/src/server/routes/conversations-search.d.ts.map +1 -0
- package/dist/src/server/routes/conversations-search.js +287 -0
- package/dist/src/server/routes/conversations-search.js.map +1 -0
- 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 +481 -0
- package/dist/src/server/routes/friend-status.d.ts.map +1 -0
- package/dist/src/server/routes/friend-status.js +675 -0
- package/dist/src/server/routes/friend-status.js.map +1 -0
- package/dist/src/server/routes/ingest.d.ts +15 -0
- package/dist/src/server/routes/ingest.d.ts.map +1 -0
- package/dist/src/server/routes/ingest.js +142 -0
- package/dist/src/server/routes/ingest.js.map +1 -0
- package/dist/src/server/routes/jobs.d.ts +10 -0
- package/dist/src/server/routes/jobs.d.ts.map +1 -0
- package/dist/src/server/routes/jobs.js +29 -0
- package/dist/src/server/routes/jobs.js.map +1 -0
- package/dist/src/server/routes/mcp-usage.d.ts +17 -0
- package/dist/src/server/routes/mcp-usage.d.ts.map +1 -0
- package/dist/src/server/routes/mcp-usage.js +17 -0
- package/dist/src/server/routes/mcp-usage.js.map +1 -0
- package/dist/src/server/routes/reconcile.d.ts +4 -0
- package/dist/src/server/routes/reconcile.d.ts.map +1 -0
- package/dist/src/server/routes/reconcile.js +62 -0
- package/dist/src/server/routes/reconcile.js.map +1 -0
- package/dist/src/server/routes/reindex.d.ts +4 -0
- package/dist/src/server/routes/reindex.d.ts.map +1 -0
- package/dist/src/server/routes/reindex.js +77 -0
- package/dist/src/server/routes/reindex.js.map +1 -0
- package/dist/src/server/routes/retrieval-feedback.d.ts +3 -0
- package/dist/src/server/routes/retrieval-feedback.d.ts.map +1 -0
- package/dist/src/server/routes/retrieval-feedback.js +290 -0
- package/dist/src/server/routes/retrieval-feedback.js.map +1 -0
- package/dist/src/server/routes/save.d.ts +52 -0
- package/dist/src/server/routes/save.d.ts.map +1 -0
- package/dist/src/server/routes/save.js +127 -0
- package/dist/src/server/routes/save.js.map +1 -0
- package/dist/src/server/routes/search.d.ts +5 -0
- package/dist/src/server/routes/search.d.ts.map +1 -0
- package/dist/src/server/routes/search.js +689 -0
- package/dist/src/server/routes/search.js.map +1 -0
- package/dist/src/server/routes/setup.d.ts +46 -0
- package/dist/src/server/routes/setup.d.ts.map +1 -0
- package/dist/src/server/routes/setup.js +322 -0
- package/dist/src/server/routes/setup.js.map +1 -0
- package/dist/src/server/routes/stats.d.ts +10 -0
- package/dist/src/server/routes/stats.d.ts.map +1 -0
- package/dist/src/server/routes/stats.js +15 -0
- package/dist/src/server/routes/stats.js.map +1 -0
- package/dist/src/server/routes/status.d.ts +20 -0
- package/dist/src/server/routes/status.d.ts.map +1 -0
- package/dist/src/server/routes/status.js +31 -0
- package/dist/src/server/routes/status.js.map +1 -0
- package/dist/src/server/routes/triage.d.ts +4 -0
- package/dist/src/server/routes/triage.d.ts.map +1 -0
- package/dist/src/server/routes/triage.js +97 -0
- package/dist/src/server/routes/triage.js.map +1 -0
- package/dist/src/server/save-quality.d.ts +21 -0
- package/dist/src/server/save-quality.d.ts.map +1 -0
- package/dist/src/server/save-quality.js +51 -0
- package/dist/src/server/save-quality.js.map +1 -0
- package/dist/src/server/serving-marker.d.ts +85 -0
- package/dist/src/server/serving-marker.d.ts.map +1 -0
- package/dist/src/server/serving-marker.js +226 -0
- package/dist/src/server/serving-marker.js.map +1 -0
- package/dist/src/storage/atomic.d.ts +8 -0
- package/dist/src/storage/atomic.d.ts.map +1 -0
- package/dist/src/storage/atomic.js +22 -0
- package/dist/src/storage/atomic.js.map +1 -0
- package/dist/src/storage/chunk-backfill.d.ts +39 -0
- package/dist/src/storage/chunk-backfill.d.ts.map +1 -0
- package/dist/src/storage/chunk-backfill.js +295 -0
- package/dist/src/storage/chunk-backfill.js.map +1 -0
- package/dist/src/storage/db.d.ts +15 -0
- package/dist/src/storage/db.d.ts.map +1 -0
- package/dist/src/storage/db.js +47 -0
- package/dist/src/storage/db.js.map +1 -0
- package/dist/src/storage/filter.d.ts +42 -0
- package/dist/src/storage/filter.d.ts.map +1 -0
- package/dist/src/storage/filter.js +70 -0
- package/dist/src/storage/filter.js.map +1 -0
- package/dist/src/storage/fts.d.ts +47 -0
- package/dist/src/storage/fts.d.ts.map +1 -0
- package/dist/src/storage/fts.js +86 -0
- package/dist/src/storage/fts.js.map +1 -0
- package/dist/src/storage/integrity.d.ts +11 -0
- package/dist/src/storage/integrity.d.ts.map +1 -0
- package/dist/src/storage/integrity.js +66 -0
- package/dist/src/storage/integrity.js.map +1 -0
- package/dist/src/storage/maintenance.d.ts +27 -0
- package/dist/src/storage/maintenance.d.ts.map +1 -0
- package/dist/src/storage/maintenance.js +66 -0
- package/dist/src/storage/maintenance.js.map +1 -0
- package/dist/src/storage/rebuild.d.ts +71 -0
- package/dist/src/storage/rebuild.d.ts.map +1 -0
- package/dist/src/storage/rebuild.js +605 -0
- package/dist/src/storage/rebuild.js.map +1 -0
- package/dist/src/storage/report-card-backfill.d.ts +20 -0
- package/dist/src/storage/report-card-backfill.d.ts.map +1 -0
- package/dist/src/storage/report-card-backfill.js +114 -0
- package/dist/src/storage/report-card-backfill.js.map +1 -0
- package/dist/src/storage/shadow-swap.d.ts +20 -0
- package/dist/src/storage/shadow-swap.d.ts.map +1 -0
- package/dist/src/storage/shadow-swap.js +163 -0
- package/dist/src/storage/shadow-swap.js.map +1 -0
- package/dist/src/storage/tables.d.ts +147 -0
- package/dist/src/storage/tables.d.ts.map +1 -0
- package/dist/src/storage/tables.js +290 -0
- package/dist/src/storage/tables.js.map +1 -0
- package/operator/swiftbar/render-menu.py +475 -0
- package/operator/swiftbar/rift.10s.sh +201 -0
- package/package.json +57 -3
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Render the friend-facing Onadit SwiftBar menu.
|
|
3
|
+
|
|
4
|
+
Pure formatting: reads structured state from the environment and prints a
|
|
5
|
+
SwiftBar menu to stdout. No network, no clock except `now`, no CLI calls
|
|
6
|
+
of its own. The shell wrapper (`rift.10s.sh`) gathers the inputs and the
|
|
7
|
+
repair prompt always comes from `onadit doctor --copy-prompt` — this script
|
|
8
|
+
never invents diagnosis or hardcodes a prompt.
|
|
9
|
+
|
|
10
|
+
The menu answers one question: "Is Onadit working?" Its one standing action
|
|
11
|
+
is Open Onadit; any other row appears only when it needs action. Operator
|
|
12
|
+
detail (launchd labels, kickstart commands, Node versions, MCP counters)
|
|
13
|
+
is deliberately absent.
|
|
14
|
+
|
|
15
|
+
Inputs (all via env, all optional — missing inputs degrade gracefully):
|
|
16
|
+
RIFT_DOCTOR_JSON `onadit doctor --json` output (the verdict + issues).
|
|
17
|
+
RIFT_STATUS_JSON `onadit status --json` output (capture time, update layout).
|
|
18
|
+
RIFT_MCP_JSON `/stats/mcp-usage` body (today's recall count).
|
|
19
|
+
RIFT_HEALTH "up" | "down" — coarse /health probe, used only when
|
|
20
|
+
the doctor report is unavailable (CLI not resolvable).
|
|
21
|
+
RIFT_NODE_BIN absolute node binary, for menu actions.
|
|
22
|
+
RIFT_JS absolute path to the rift JS entrypoint.
|
|
23
|
+
RIFT_BIN absolute rift launcher, fallback when RIFT_JS is unset.
|
|
24
|
+
RIFT_CODEX_BIN absolute codex binary, for "Sign In to Codex…".
|
|
25
|
+
RIFT_NOW_MS injected clock for tests (epoch ms); defaults to now.
|
|
26
|
+
"""
|
|
27
|
+
import json
|
|
28
|
+
import os
|
|
29
|
+
import re
|
|
30
|
+
|
|
31
|
+
# Where a packaged (.pkg) install sends friends to upgrade — `onadit update`
|
|
32
|
+
# can't self-upgrade that layout, so the menu links here instead.
|
|
33
|
+
RIFT_DOWNLOAD_URL = "https://onadit.com/download"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def env(key, default=""):
|
|
37
|
+
return os.environ.get(key, default)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def parse_json(raw):
|
|
41
|
+
raw = (raw or "").strip()
|
|
42
|
+
if not raw:
|
|
43
|
+
return None
|
|
44
|
+
try:
|
|
45
|
+
return json.loads(raw)
|
|
46
|
+
except Exception:
|
|
47
|
+
return None
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def now_ms():
|
|
51
|
+
raw = env("RIFT_NOW_MS")
|
|
52
|
+
if raw:
|
|
53
|
+
try:
|
|
54
|
+
return int(raw)
|
|
55
|
+
except ValueError:
|
|
56
|
+
pass
|
|
57
|
+
import time
|
|
58
|
+
|
|
59
|
+
return int(time.time() * 1000)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def parse_iso_ms(iso):
|
|
63
|
+
"""Parse an ISO-8601 timestamp to epoch ms, or None."""
|
|
64
|
+
if not isinstance(iso, str) or not iso:
|
|
65
|
+
return None
|
|
66
|
+
s = iso.strip()
|
|
67
|
+
if s.endswith("Z"):
|
|
68
|
+
s = s[:-1] + "+00:00"
|
|
69
|
+
try:
|
|
70
|
+
from datetime import datetime
|
|
71
|
+
|
|
72
|
+
return int(datetime.fromisoformat(s).timestamp() * 1000)
|
|
73
|
+
except Exception:
|
|
74
|
+
return None
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def plural(n, word):
|
|
78
|
+
return f"{n:,} {word}" + ("" if n == 1 else "s")
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def age_ago(iso, now):
|
|
82
|
+
"""'just now', '16 min ago', '3 hours ago', '2 days ago' — or None."""
|
|
83
|
+
ms = parse_iso_ms(iso)
|
|
84
|
+
if ms is None:
|
|
85
|
+
return None
|
|
86
|
+
seconds = max(0, (now - ms) // 1000)
|
|
87
|
+
if seconds < 60:
|
|
88
|
+
return "just now"
|
|
89
|
+
minutes = seconds // 60
|
|
90
|
+
if minutes < 60:
|
|
91
|
+
return f"{minutes} min ago"
|
|
92
|
+
hours = minutes // 60
|
|
93
|
+
if hours < 24:
|
|
94
|
+
return plural(hours, "hour") + " ago"
|
|
95
|
+
return plural(hours // 24, "day") + " ago"
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def menu_text(text):
|
|
99
|
+
"""Make free text (doctor copy) safe for one SwiftBar title.
|
|
100
|
+
|
|
101
|
+
`|` would split the title from its params, a newline would start a new
|
|
102
|
+
menu row, a leading `--` would turn the row into a submenu item, and the
|
|
103
|
+
middle dot is banned from menu copy (owner rule).
|
|
104
|
+
"""
|
|
105
|
+
s = " ".join(str(text or "").split())
|
|
106
|
+
s = s.replace("|", "/").replace(" · ", ", ").replace("·", ",")
|
|
107
|
+
return s.lstrip("-").strip()
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
# --- Menu-action line builders -------------------------------------------
|
|
111
|
+
#
|
|
112
|
+
# SwiftBar runs an item's `shell=` command with a stripped PATH, so every
|
|
113
|
+
# action uses absolute binaries. rift subcommands run through node + the
|
|
114
|
+
# resolved JS entrypoint (the npm `rift` symlink's `#!/usr/bin/env node`
|
|
115
|
+
# shebang can't resolve `node` under a stripped PATH); when only RIFT_BIN
|
|
116
|
+
# resolved we fall back to it directly.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def sb_param(value):
|
|
120
|
+
"""Quote a SwiftBar parameter value so paths with spaces or SwiftBar
|
|
121
|
+
separators survive parsing.
|
|
122
|
+
|
|
123
|
+
SwiftBar splits an item's parameters on whitespace and uses `|` to
|
|
124
|
+
separate the title from its params, so any value carrying a space, tab,
|
|
125
|
+
`|`, or a quote must be wrapped to stay one token. We only quote when
|
|
126
|
+
needed, leaving simple values (and flag args like `--target=claude`)
|
|
127
|
+
untouched.
|
|
128
|
+
"""
|
|
129
|
+
s = str(value)
|
|
130
|
+
if s == "" or any(ch in s for ch in " \t|\"'"):
|
|
131
|
+
return '"' + s.replace('"', '\\"') + '"'
|
|
132
|
+
return s
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def rift_runnable():
|
|
136
|
+
node = env("RIFT_NODE_BIN")
|
|
137
|
+
js = env("RIFT_JS")
|
|
138
|
+
rift = env("RIFT_BIN")
|
|
139
|
+
# SwiftBar's terminal-mode command builder quotes only the shell binary
|
|
140
|
+
# (argv0) and joins paramN raw, so a space anywhere past argv0 fractures
|
|
141
|
+
# the action — and packaged installs live under "Application Support".
|
|
142
|
+
# Prefer the space-free shim (a self-contained launcher: it execs an
|
|
143
|
+
# absolute node + JS) whenever the node/JS paths carry a space; fall back
|
|
144
|
+
# to node+js only when they're space-free or no shim resolved.
|
|
145
|
+
spaced = bool(node and js) and (" " in node or " " in js)
|
|
146
|
+
if node and js and not spaced:
|
|
147
|
+
return [node, js]
|
|
148
|
+
if rift:
|
|
149
|
+
return [rift]
|
|
150
|
+
if node and js:
|
|
151
|
+
return [node, js]
|
|
152
|
+
return None
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def shell_action(label, argv, terminal, refresh=False, extra=""):
|
|
156
|
+
"""A menu line that runs `argv` (argv[0] absolute)."""
|
|
157
|
+
line = f"{label} | shell={sb_param(argv[0])}"
|
|
158
|
+
for i, p in enumerate(argv[1:], start=1):
|
|
159
|
+
line += f" param{i}={sb_param(p)}"
|
|
160
|
+
line += f" terminal={'true' if terminal else 'false'}"
|
|
161
|
+
if refresh:
|
|
162
|
+
line += " refresh=true"
|
|
163
|
+
if extra:
|
|
164
|
+
line += f" {extra}"
|
|
165
|
+
return line
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def rift_action(label, args, terminal, refresh=False, extra=""):
|
|
169
|
+
"""A menu line that runs a rift subcommand, or None if rift is unresolved."""
|
|
170
|
+
base = rift_runnable()
|
|
171
|
+
if base is None:
|
|
172
|
+
return None
|
|
173
|
+
return shell_action(label, base + args, terminal, refresh, extra)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
def open_rift_row():
|
|
177
|
+
# `onadit setup` opens or focuses Onadit.app (the browser page is its
|
|
178
|
+
# fallback). No `shortcut=`: SwiftBar 2.1.1 registers an item shortcut as
|
|
179
|
+
# a GLOBAL hotkey while the menu is closed, so ⌘O would hijack every
|
|
180
|
+
# app's Open command.
|
|
181
|
+
return rift_action("Open Onadit", ["setup"], terminal=False)
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
def copy_prompt_row():
|
|
185
|
+
"""The one 'Copy Fix Prompt' row. The prompt itself comes from the CLI."""
|
|
186
|
+
return rift_action(
|
|
187
|
+
"Copy Fix Prompt",
|
|
188
|
+
["doctor", "--copy-prompt", "--target=claude"],
|
|
189
|
+
terminal=False,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
# --- Status rows ----------------------------------------------------------
|
|
194
|
+
#
|
|
195
|
+
# SwiftBar 2.1.1 always draws an `sfimage=` as a monochrome template and
|
|
196
|
+
# ignores `sfcolor` on it; `sfcolor` (a CSS name or hex, never "systemGreen")
|
|
197
|
+
# only tints SF Symbols written inline as `:name:` in the title. So colored
|
|
198
|
+
# glyphs are inline symbols. A row without an action renders disabled grey,
|
|
199
|
+
# which is what the secondary lines want; `color=` keeps the headline at full
|
|
200
|
+
# label color (SwiftBar enables a colored row so the color shows) without
|
|
201
|
+
# giving it an action.
|
|
202
|
+
|
|
203
|
+
GREEN = "#34C759,#30D158" # Apple systemGreen, light/dark
|
|
204
|
+
RED = "#FF3B30,#FF453A" # Apple systemRed, light/dark
|
|
205
|
+
GREY = "#8E8E93,#98989D" # Apple systemGray, light/dark
|
|
206
|
+
LABEL = "#000000,#FFFFFF"
|
|
207
|
+
|
|
208
|
+
CHECK = "checkmark.circle.fill"
|
|
209
|
+
TRIANGLE = "exclamationmark.triangle.fill"
|
|
210
|
+
QUESTION = "questionmark.circle.fill"
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
def headline(symbol, text, color):
|
|
214
|
+
return f":{symbol}: {menu_text(text)} | sfcolor={color} color={LABEL}"
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
# --- Verdict --------------------------------------------------------------
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
def verdict_of(doctor, health):
|
|
221
|
+
"""healthy | warning | broken | unknown."""
|
|
222
|
+
if isinstance(doctor, dict) and "healthy" in doctor:
|
|
223
|
+
if not doctor.get("healthy"):
|
|
224
|
+
return "broken"
|
|
225
|
+
issues = doctor.get("issues") or []
|
|
226
|
+
if any(i.get("severity") == "warning" for i in issues):
|
|
227
|
+
return "warning"
|
|
228
|
+
return "healthy"
|
|
229
|
+
# No diagnosis available — fall back to the coarse health probe.
|
|
230
|
+
if health == "up":
|
|
231
|
+
return "healthy"
|
|
232
|
+
if health == "down":
|
|
233
|
+
return "broken"
|
|
234
|
+
return "unknown"
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
def has_doctor_report(doctor):
|
|
238
|
+
"""True only when RIFT_DOCTOR_JSON parsed into a real doctor report.
|
|
239
|
+
|
|
240
|
+
The doctor-powered "Copy Fix Prompt" row is gated on this, never on the
|
|
241
|
+
rift binary merely resolving: if `onadit doctor --json` emitted nothing or
|
|
242
|
+
failed, re-running doctor from the menu would fail the same way.
|
|
243
|
+
"""
|
|
244
|
+
return isinstance(doctor, dict) and "healthy" in doctor
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
# The Onadit brand mark ("glass": a block cut by one slanted rift, left half
|
|
248
|
+
# solid, right half an outline), rendered to a 144px PNG and base64-embedded so
|
|
249
|
+
# render-menu.py stays a single self-contained file — it is symlinked/copied
|
|
250
|
+
# standalone into SwiftBar's plugins dir, so an external asset would add a
|
|
251
|
+
# path-resolution surface. Shipped as a `templateImage`: macOS ignores RGB and
|
|
252
|
+
# tints the ALPHA mask to the menu-bar color (adapting to light/dark), with no
|
|
253
|
+
# background container. DO NOT hand-edit this constant — regenerate from the
|
|
254
|
+
# logo: `python3 generate-icon.py` (source of truth: assets/rift-mark.svg).
|
|
255
|
+
RIFT_ICON_B64 = "iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAD9ElEQVR42u2dUZHqQBBFRwISIgEJkYCESIiEOEBCJCAhEpCAhEjg8QFV1H69Bnqm+845Vfc/Gc4mzcwtthQAAAAAAAAAAAAAAAAAAAAAAAAAgCwMj8yPbI/sj9xFcjCug/e97881np9rLiHOKiTMe24frEXta1wzizSJPW3+5mJcj1Oj69yfn0U6ee7iWYxrsjS+3gl5YmU0rssW4JrDSzSIv7beYyXCNe/RZ6K1E3muxnU5Brr2NfLT595J1uSv9ZBPobkjgWbj2pyTX38Vto4EOhrX5hrs+reIAu0dCZRxgP47TIejF3msf72jyB8BAv0oZ+fZ8Fpp/REoyWacdWtjRSDtWL8C3yrtFiNQgliHz0OFb3gIxAD9kw8WgRJkMa7JUnF/BoESZHTeXD0jkHa8K6wnBNJNjQrrgEBUWF9YK6x75fVHoMrxPoHfEIgB+psBekEgTuC/WY8RgaiwvvikwnpAICqsLybnb3gIlCyTcS2sJ/AXBKLC+o61wjojEAN0ywEagQIn8gk8AiVI1AorAiWJ9YDz4vwND4GSZTCuQ60KKwIlSOQKKwIxQP/0g0SggFmMa7A4C4pAyWLdn6lZYUWgBIlcYUWg4IleYUWg4PE+gd8brz8COce7wnpBIG2BvAfoBYG0BfK+/xGBdAXKUGFFoMDxPoG/BVh/BHLMZLz3Wj8ihUBJkqHCikAM0AikKFCmE3gEChjr/szi/A0PgZLFu8J6RiBtgQbjfbeqsCJQwGSqsCJQwNT4P6gFgXQF8h6gNwTSFsi6P9P6BB6BgiVThRWBgiVbhRWBgiVbhRWBgiVbhRWBGKARSEkg7/sdEUhXoBon8AcE0hUoY4UVgQJlMt5rhAorAgVKxgorApV+TuBHBNIVKGuFFYFKHyfwVwTSFihrhRWBgmQw3meUCisClT5O4I8IpCtQ5gorAnUwQG8IpC2QdX8m2gk8AjVO5gorAjVOjR+RGhBIV6DsFVYEapzsFVYEYoBGoMwCed/fiEC6AilUWBGoYRQqrAjUMJPx3iJWWBGo6J7AzwikK5BKhRWBhAfogkC6Aln3Z5bie0SCQMkEUqmwIlDRPIGfEEhXIKUKKwI1iFKFFYEEB+gNgbQFsu7PRD+BR6CidQJ/QiBdgWpUWJXrLO7swRfMu8Kq/IskVdiCL5p3hVW5D1WFOfiief+IlHIfvApD6XuAVq6zVGMVeWSPwvKsJTBD0GH6LPY6/mZ4HkpwIn57mUSepLXXAYk+fOffkCeGRHvJt+dxEHxtpZPnfSZq/TroeYBeM8w8/yvS/Pwwaz+VrAecS/KnzfZcawlxAAAAAAAAAAAAAAAAAAAAAAAAAKAH/gGsx7MBalRJ3QAAAABJRU5ErkJggg=="
|
|
256
|
+
# width/height are required: SwiftBar renders a custom image at its decoded
|
|
257
|
+
# pixel size (144px here) unless both are set, which would oversize the icon
|
|
258
|
+
# and distort menu-bar spacing. 18pt matches the menu-bar glyph height; the
|
|
259
|
+
# 144px source downscales crisply on retina. The title text is empty on
|
|
260
|
+
# purpose: the menu bar shows the icon alone, like every other status item.
|
|
261
|
+
_RIFT_TITLE = f" | templateImage={RIFT_ICON_B64} width=18 height=18"
|
|
262
|
+
|
|
263
|
+
# Menu-bar title per verdict. Onadit still works with warnings, so they keep the
|
|
264
|
+
# calm brand mark; the rows inside carry the action. Only a broken Onadit turns
|
|
265
|
+
# the title red — an inline symbol, the one SwiftBar path that takes a color.
|
|
266
|
+
TITLES = {
|
|
267
|
+
"healthy": _RIFT_TITLE,
|
|
268
|
+
"warning": _RIFT_TITLE,
|
|
269
|
+
"broken": f":{TRIANGLE}: | sfcolor={RED}",
|
|
270
|
+
"unknown": f" | sfimage={QUESTION}",
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
# --- Working (healthy / warning) -----------------------------------------
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def capture_part(friend, now):
|
|
278
|
+
"""'Captured 16 min ago', 'Not captured yet', or None."""
|
|
279
|
+
if not isinstance(friend, dict):
|
|
280
|
+
return None
|
|
281
|
+
capture = friend.get("capture")
|
|
282
|
+
if not isinstance(capture, dict):
|
|
283
|
+
return None
|
|
284
|
+
last = capture.get("last_run_at")
|
|
285
|
+
if last:
|
|
286
|
+
age = age_ago(last, now)
|
|
287
|
+
return f"Captured {age}" if age else None
|
|
288
|
+
daemon = friend.get("daemon")
|
|
289
|
+
# An older daemon omits capture_enabled; it means capture-off there.
|
|
290
|
+
if isinstance(daemon, dict) and daemon.get("capture_enabled") is True:
|
|
291
|
+
return "Not captured yet"
|
|
292
|
+
return None
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def recalls_part(mcp):
|
|
296
|
+
"""'9 recalls today', '1 recall today', 'no recalls today', or None."""
|
|
297
|
+
today = mcp.get("today") if isinstance(mcp, dict) else None
|
|
298
|
+
hits = today.get("context_hits") if isinstance(today, dict) else None
|
|
299
|
+
if not isinstance(hits, int) or isinstance(hits, bool) or hits < 0:
|
|
300
|
+
return None
|
|
301
|
+
if hits == 0:
|
|
302
|
+
return "no recalls today"
|
|
303
|
+
return plural(hits, "recall") + " today"
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
def proof_line(friend, mcp, now):
|
|
307
|
+
parts = [p for p in (capture_part(friend, now), recalls_part(mcp)) if p]
|
|
308
|
+
if not parts:
|
|
309
|
+
return None
|
|
310
|
+
line = ", ".join(parts)
|
|
311
|
+
return line[0].upper() + line[1:]
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
def self_update_supported(friend):
|
|
315
|
+
update = friend.get("update") if isinstance(friend, dict) else None
|
|
316
|
+
return not (
|
|
317
|
+
isinstance(update, dict) and update.get("self_update_supported") is False
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
def update_row(self_update):
|
|
322
|
+
# Derive the action from the install layout, NEVER doctor's copy: a stale
|
|
323
|
+
# doctor payload could still say "onadit update" while a packaged install
|
|
324
|
+
# can't run it. `self_update_supported` rides the live status payload.
|
|
325
|
+
icon = "sfimage=arrow.down.circle"
|
|
326
|
+
if self_update:
|
|
327
|
+
return rift_action(
|
|
328
|
+
"Update Onadit…", ["update"], terminal=True, refresh=True, extra=icon
|
|
329
|
+
)
|
|
330
|
+
return f"Update Onadit… | href={sb_param(RIFT_DOWNLOAD_URL)} {icon}"
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
# Warning kinds whose repair a non-technical user may want an AI to walk them
|
|
334
|
+
# through. An explicit allowlist: most warnings either have their own row
|
|
335
|
+
# (update_available), are managed in the app (mcp_not_installed — installed
|
|
336
|
+
# software alone must not create a permanent reminder), or have no action at
|
|
337
|
+
# all (capture_daemon_stale's nextAction is literally "Nothing to do"). Add a
|
|
338
|
+
# kind here only once `onadit doctor --copy-prompt` produces a genuinely useful
|
|
339
|
+
# repair prompt for it.
|
|
340
|
+
REPAIRABLE_WARNINGS = {"capture_quarantined"}
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
def warning_rows(doctor, self_update):
|
|
344
|
+
"""One row per warning that needs action; warnings without one are hidden."""
|
|
345
|
+
rows = []
|
|
346
|
+
seen = set()
|
|
347
|
+
issues = doctor.get("issues") if isinstance(doctor, dict) else None
|
|
348
|
+
for issue in issues or []:
|
|
349
|
+
if issue.get("severity") != "warning":
|
|
350
|
+
continue
|
|
351
|
+
kind = issue.get("kind")
|
|
352
|
+
if kind == "update_available":
|
|
353
|
+
key, row = "update", update_row(self_update)
|
|
354
|
+
elif kind in REPAIRABLE_WARNINGS:
|
|
355
|
+
key, row = "copy", copy_prompt_row()
|
|
356
|
+
else:
|
|
357
|
+
continue
|
|
358
|
+
if row and key not in seen:
|
|
359
|
+
seen.add(key)
|
|
360
|
+
rows.append(row)
|
|
361
|
+
return rows
|
|
362
|
+
|
|
363
|
+
|
|
364
|
+
def render_working(doctor, friend, mcp, now):
|
|
365
|
+
rows = [headline(CHECK, "Onadit is working", GREEN)]
|
|
366
|
+
proof = proof_line(friend, mcp, now)
|
|
367
|
+
if proof:
|
|
368
|
+
rows.append(menu_text(proof))
|
|
369
|
+
actions = warning_rows(doctor, self_update_supported(friend))
|
|
370
|
+
if actions:
|
|
371
|
+
rows += ["---"] + actions
|
|
372
|
+
return rows
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
# --- Needs attention ------------------------------------------------------
|
|
376
|
+
|
|
377
|
+
# Operator internals a friend must never see, even when the doctor's copy
|
|
378
|
+
# carries them (daemon_unreachable's nextAction is a launchctl kickstart).
|
|
379
|
+
OPERATOR_INTERNALS = re.compile(
|
|
380
|
+
r"launchctl|kickstart|systemctl|gui/|com\.getrift|\$UID", re.IGNORECASE
|
|
381
|
+
)
|
|
382
|
+
|
|
383
|
+
# Friend copy that replaces the doctor's text for specific kinds. Onadit.app
|
|
384
|
+
# restarts a stopped engine when it opens, so Open Onadit is the fix.
|
|
385
|
+
SECONDARY_OVERRIDES = {
|
|
386
|
+
"daemon_unreachable": "Open Onadit to restart it.",
|
|
387
|
+
"voyage_key_missing": "Turn on Search by Meaning in Onadit’s Privacy settings.",
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
def primary_broken_issue(doctor):
|
|
392
|
+
primary = doctor.get("primary")
|
|
393
|
+
if isinstance(primary, dict) and primary.get("severity") == "broken":
|
|
394
|
+
return primary
|
|
395
|
+
for issue in doctor.get("issues") or []:
|
|
396
|
+
if issue.get("severity") == "broken":
|
|
397
|
+
return issue
|
|
398
|
+
return primary if isinstance(primary, dict) else None
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
def secondary_text(issue):
|
|
402
|
+
"""The issue's nextAction, else its detail — friend-safe, or None."""
|
|
403
|
+
if not isinstance(issue, dict):
|
|
404
|
+
return None
|
|
405
|
+
override = SECONDARY_OVERRIDES.get(issue.get("kind"))
|
|
406
|
+
if override:
|
|
407
|
+
return override
|
|
408
|
+
for key in ("nextAction", "detail"):
|
|
409
|
+
text = menu_text(issue.get(key))
|
|
410
|
+
if text and not OPERATOR_INTERNALS.search(text):
|
|
411
|
+
return text
|
|
412
|
+
return None
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
def fix_row(issue):
|
|
416
|
+
"""A one-click fix for issue kinds that have one, else None."""
|
|
417
|
+
if not isinstance(issue, dict):
|
|
418
|
+
return None
|
|
419
|
+
if issue.get("kind") == "codex_auth_expired":
|
|
420
|
+
codex = env("RIFT_CODEX_BIN")
|
|
421
|
+
if codex.startswith("/"):
|
|
422
|
+
return shell_action("Sign In to Codex…", [codex, "login"], terminal=True)
|
|
423
|
+
return None
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
def render_broken(doctor):
|
|
427
|
+
if not has_doctor_report(doctor):
|
|
428
|
+
# Verdict came from the /health probe alone: the engine is down and
|
|
429
|
+
# the CLI couldn't report, so there is no prompt to copy.
|
|
430
|
+
return [headline(TRIANGLE, "Onadit isn't running", RED), "Open Onadit to restart it."]
|
|
431
|
+
issue = primary_broken_issue(doctor)
|
|
432
|
+
title = menu_text(issue.get("title")) if isinstance(issue, dict) else ""
|
|
433
|
+
rows = [headline(TRIANGLE, title or "Onadit needs attention", RED)]
|
|
434
|
+
secondary = secondary_text(issue)
|
|
435
|
+
if secondary:
|
|
436
|
+
rows.append(secondary)
|
|
437
|
+
fixes = [r for r in (fix_row(issue), copy_prompt_row()) if r]
|
|
438
|
+
if fixes:
|
|
439
|
+
rows += ["---"] + fixes
|
|
440
|
+
return rows
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
# --- Top-level render -----------------------------------------------------
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
def render(doctor, status, mcp, health, now):
|
|
447
|
+
friend = status.get("friend") if isinstance(status, dict) else None
|
|
448
|
+
verdict = verdict_of(doctor, health)
|
|
449
|
+
lines = [TITLES[verdict], "---"]
|
|
450
|
+
if verdict == "broken":
|
|
451
|
+
lines += render_broken(doctor)
|
|
452
|
+
elif verdict == "unknown":
|
|
453
|
+
lines += [
|
|
454
|
+
headline(QUESTION, "Onadit status unavailable", GREY),
|
|
455
|
+
"Onadit couldn't check itself.",
|
|
456
|
+
]
|
|
457
|
+
else:
|
|
458
|
+
lines += render_working(doctor, friend, mcp, now)
|
|
459
|
+
open_rift = open_rift_row()
|
|
460
|
+
if open_rift:
|
|
461
|
+
lines += ["---", open_rift]
|
|
462
|
+
return lines
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
def main():
|
|
466
|
+
doctor = parse_json(env("RIFT_DOCTOR_JSON"))
|
|
467
|
+
status = parse_json(env("RIFT_STATUS_JSON"))
|
|
468
|
+
mcp = parse_json(env("RIFT_MCP_JSON"))
|
|
469
|
+
health = env("RIFT_HEALTH")
|
|
470
|
+
for line in render(doctor, status, mcp, health, now_ms()):
|
|
471
|
+
print(line)
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
if __name__ == "__main__":
|
|
475
|
+
main()
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# SwiftBar plugin — Onadit friend-facing heartbeat.
|
|
4
|
+
#
|
|
5
|
+
# Answers one question at a glance: "Is Onadit working?" Its one standing
|
|
6
|
+
# action is Open Onadit; other rows appear only when they need action.
|
|
7
|
+
# Operator telemetry (MCP counters, launchd labels, Node versions, commits)
|
|
8
|
+
# is intentionally absent — run `onadit status` / `onadit doctor` for that. The
|
|
9
|
+
# verdict comes from `onadit doctor`; the repair PROMPT is generated by
|
|
10
|
+
# `onadit doctor --copy-prompt` (never hardcoded here), so redaction and
|
|
11
|
+
# diagnosis stay centralized in the CLI.
|
|
12
|
+
#
|
|
13
|
+
# Install:
|
|
14
|
+
# onadit menubar install
|
|
15
|
+
#
|
|
16
|
+
# Overrides:
|
|
17
|
+
# RIFT_BASE_URL default http://127.0.0.1:3577
|
|
18
|
+
# RIFT_LOG_DIR default ~/Library/Application Support/Rift/logs
|
|
19
|
+
# RIFT_CODEX_BIN default: codex on PATH, then Homebrew
|
|
20
|
+
#
|
|
21
|
+
# Reads live daemon state on every tick. Never caches.
|
|
22
|
+
#
|
|
23
|
+
# Hide SwiftBar's own items (About, Run in Terminal, Last Updated, Disable
|
|
24
|
+
# Plugin, the SwiftBar submenu) so the menu is Onadit's alone. Option-click on
|
|
25
|
+
# the icon still shows them.
|
|
26
|
+
# <swiftbar.hideAbout>true</swiftbar.hideAbout>
|
|
27
|
+
# <swiftbar.hideRunInTerminal>true</swiftbar.hideRunInTerminal>
|
|
28
|
+
# <swiftbar.hideLastUpdated>true</swiftbar.hideLastUpdated>
|
|
29
|
+
# <swiftbar.hideDisablePlugin>true</swiftbar.hideDisablePlugin>
|
|
30
|
+
# <swiftbar.hideSwiftBar>true</swiftbar.hideSwiftBar>
|
|
31
|
+
|
|
32
|
+
set -u
|
|
33
|
+
|
|
34
|
+
BASE_URL="${RIFT_BASE_URL:-http://127.0.0.1:3577}"
|
|
35
|
+
|
|
36
|
+
# Resolve script path even when invoked via symlink, so the plugin can
|
|
37
|
+
# sit in SwiftBar's plugins dir and still find render-menu.py next to itself.
|
|
38
|
+
SOURCE="${BASH_SOURCE[0]}"
|
|
39
|
+
while [[ -L "$SOURCE" ]]; do
|
|
40
|
+
DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
|
|
41
|
+
SOURCE="$(readlink "$SOURCE")"
|
|
42
|
+
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
|
|
43
|
+
done
|
|
44
|
+
SCRIPT_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
|
|
45
|
+
RIFT_HOME_DEFAULT="${HOME}/Library/Application Support/Rift"
|
|
46
|
+
|
|
47
|
+
# Packaged (.pkg) install layout — bundled Node + app tree under Onadit home,
|
|
48
|
+
# a bash CLI shim at ~/.rift/bin/rift, daemon logs under ~/Library/Logs/Rift.
|
|
49
|
+
# Detect it so the menu bar works on a BARE Mac with NO env injection: the
|
|
50
|
+
# `onadit menubar install` env (RIFT_BIN/NODE_BIN) does NOT persist into the
|
|
51
|
+
# installed plugin, so the plugin must self-resolve these paths every tick.
|
|
52
|
+
PACKAGED_NODE="${RIFT_HOME_DEFAULT}/node/bin/node"
|
|
53
|
+
PACKAGED_JS="${RIFT_HOME_DEFAULT}/app/dist/src/cli/index.js"
|
|
54
|
+
PACKAGED_SHIM="${HOME}/.rift/bin/rift"
|
|
55
|
+
if [[ -f "$PACKAGED_JS" && -x "$PACKAGED_NODE" ]]; then
|
|
56
|
+
PACKAGED_LOG_DIR="${HOME}/Library/Logs/Rift"
|
|
57
|
+
else
|
|
58
|
+
PACKAGED_LOG_DIR=""
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
# Only the renderer-missing fallback below opens the logs folder.
|
|
62
|
+
LOG_DIR="${RIFT_LOG_DIR:-${PACKAGED_LOG_DIR:-${RIFT_HOME_DEFAULT}/logs}}"
|
|
63
|
+
# `onadit menubar install` copies the renderer into a private `.rift-menu/`
|
|
64
|
+
# subdir of the plugin folder — SwiftBar ignores subdirs/dotfiles, so the
|
|
65
|
+
# helper never loads as a phantom (off-screen) menu-bar item. Dev/symlink runs
|
|
66
|
+
# resolve SCRIPT_DIR to operator/swiftbar, where it sits beside this script.
|
|
67
|
+
RENDERER="$SCRIPT_DIR/.rift-menu/render-menu.py"
|
|
68
|
+
[[ -f "$RENDERER" ]] || RENDERER="$SCRIPT_DIR/render-menu.py"
|
|
69
|
+
|
|
70
|
+
# Resolve the rift CLI. SwiftBar invokes shell commands with a stripped
|
|
71
|
+
# PATH, so menu actions need absolute paths end-to-end. We resolve:
|
|
72
|
+
# - NODE_BIN: an absolute node binary (bundled Node preferred), so actions
|
|
73
|
+
# don't depend on PATH and work on a Mac with no system Node.
|
|
74
|
+
# - RIFT_JS: the real JS entrypoint to pass as node's first arg. NEVER the
|
|
75
|
+
# bash shim — `node <bash-file>` fails — so we accept only a *.js target
|
|
76
|
+
# and prefer the packaged app entrypoint directly.
|
|
77
|
+
# - RIFT_BIN: an executable `rift` launcher (diagnostics + fallback). The
|
|
78
|
+
# packaged shim is a valid launcher when run DIRECTLY (it is not JS).
|
|
79
|
+
# REPO_ROOT only resolves to anything in a dev checkout; default it to empty
|
|
80
|
+
# so the dev-only candidate below is a harmless no-op under `set -u` on
|
|
81
|
+
# packaged/npm installs, where it is never set.
|
|
82
|
+
REPO_ROOT="${REPO_ROOT:-}"
|
|
83
|
+
|
|
84
|
+
NODE_BIN="${NODE_BIN:-}"
|
|
85
|
+
if [[ -z "$NODE_BIN" ]]; then
|
|
86
|
+
for candidate in \
|
|
87
|
+
"$PACKAGED_NODE" \
|
|
88
|
+
"/opt/homebrew/bin/node" \
|
|
89
|
+
"/usr/local/bin/node" \
|
|
90
|
+
"/usr/bin/node"; do
|
|
91
|
+
if [[ -x "$candidate" ]]; then
|
|
92
|
+
NODE_BIN="$candidate"
|
|
93
|
+
break
|
|
94
|
+
fi
|
|
95
|
+
done
|
|
96
|
+
fi
|
|
97
|
+
|
|
98
|
+
RIFT_BIN="${RIFT_BIN:-}"
|
|
99
|
+
if [[ -z "$RIFT_BIN" ]]; then
|
|
100
|
+
for candidate in \
|
|
101
|
+
"$PACKAGED_SHIM" \
|
|
102
|
+
"/opt/homebrew/bin/rift" \
|
|
103
|
+
"/usr/local/bin/rift" \
|
|
104
|
+
"$HOME/.npm-global/bin/rift" \
|
|
105
|
+
"$HOME/.local/bin/rift" \
|
|
106
|
+
"$REPO_ROOT/node_modules/.bin/rift"; do
|
|
107
|
+
if [[ -x "$candidate" ]]; then
|
|
108
|
+
RIFT_BIN="$candidate"
|
|
109
|
+
break
|
|
110
|
+
fi
|
|
111
|
+
done
|
|
112
|
+
fi
|
|
113
|
+
|
|
114
|
+
RIFT_JS="${RIFT_JS:-}"
|
|
115
|
+
# Packaged app entrypoint is authoritative when present.
|
|
116
|
+
if [[ -z "$RIFT_JS" && -f "$PACKAGED_JS" ]]; then
|
|
117
|
+
RIFT_JS="$PACKAGED_JS"
|
|
118
|
+
fi
|
|
119
|
+
# Otherwise follow RIFT_BIN's symlink chain to the real entrypoint — but
|
|
120
|
+
# only accept a *.js target, so a bash launcher (the packaged shim, or an
|
|
121
|
+
# on-PATH wrapper) is never handed to `node` as a script.
|
|
122
|
+
if [[ -z "$RIFT_JS" && -n "$RIFT_BIN" ]]; then
|
|
123
|
+
target="$RIFT_BIN"
|
|
124
|
+
while [[ -L "$target" ]]; do
|
|
125
|
+
link_dir="$(cd -P "$(dirname "$target")" && pwd)"
|
|
126
|
+
link_target="$(readlink "$target")"
|
|
127
|
+
if [[ "$link_target" = /* ]]; then
|
|
128
|
+
target="$link_target"
|
|
129
|
+
else
|
|
130
|
+
target="$link_dir/$link_target"
|
|
131
|
+
fi
|
|
132
|
+
done
|
|
133
|
+
if [[ -f "$target" && "$target" == *.js ]]; then
|
|
134
|
+
RIFT_JS="$target"
|
|
135
|
+
fi
|
|
136
|
+
fi
|
|
137
|
+
|
|
138
|
+
# The codex CLI, for the "Sign In to Codex…" row (`codex login`) shown when
|
|
139
|
+
# capture can't authenticate to Codex. Same search order as the daemon's Codex
|
|
140
|
+
# runner: PATH, then the Homebrew dirs. Absolute paths only: SwiftBar runs
|
|
141
|
+
# actions with a stripped PATH.
|
|
142
|
+
RIFT_CODEX_BIN="${RIFT_CODEX_BIN:-}"
|
|
143
|
+
if [[ -z "$RIFT_CODEX_BIN" ]]; then
|
|
144
|
+
candidate="$(command -v codex 2>/dev/null || true)"
|
|
145
|
+
if [[ "$candidate" == /* && -x "$candidate" ]]; then
|
|
146
|
+
RIFT_CODEX_BIN="$candidate"
|
|
147
|
+
fi
|
|
148
|
+
fi
|
|
149
|
+
if [[ -z "$RIFT_CODEX_BIN" ]]; then
|
|
150
|
+
for candidate in "/opt/homebrew/bin/codex" "/usr/local/bin/codex"; do
|
|
151
|
+
if [[ -x "$candidate" ]]; then
|
|
152
|
+
RIFT_CODEX_BIN="$candidate"
|
|
153
|
+
break
|
|
154
|
+
fi
|
|
155
|
+
done
|
|
156
|
+
fi
|
|
157
|
+
|
|
158
|
+
# Run a rift subcommand, preferring node + JS entrypoint (PATH-independent),
|
|
159
|
+
# falling back to the launcher. Prints stdout; swallows stderr. Returns the
|
|
160
|
+
# command's exit code, or 127 when rift can't be resolved at all.
|
|
161
|
+
run_rift() {
|
|
162
|
+
if [[ -n "$RIFT_JS" && -n "$NODE_BIN" ]]; then
|
|
163
|
+
"$NODE_BIN" "$RIFT_JS" "$@" 2>/dev/null
|
|
164
|
+
return $?
|
|
165
|
+
fi
|
|
166
|
+
if [[ -n "$RIFT_BIN" ]]; then
|
|
167
|
+
"$RIFT_BIN" "$@" 2>/dev/null
|
|
168
|
+
return $?
|
|
169
|
+
fi
|
|
170
|
+
return 127
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
# --- Gather state ---
|
|
174
|
+
# doctor --json is the canonical verdict + one fix (exits non-zero when
|
|
175
|
+
# broken, but still prints a valid report on stdout — capture regardless).
|
|
176
|
+
RIFT_DOCTOR_JSON="$(run_rift doctor --json || true)"
|
|
177
|
+
RIFT_STATUS_JSON="$(run_rift status --json --no-capability-map || true)"
|
|
178
|
+
# Today's recall count, from an unauthenticated endpoint.
|
|
179
|
+
RIFT_MCP_JSON="$(curl -fsS -m 2 "$BASE_URL/stats/mcp-usage" 2>/dev/null || true)"
|
|
180
|
+
# Coarse health probe — only consulted by the renderer when the doctor
|
|
181
|
+
# report is unavailable (rift CLI not resolvable on this machine).
|
|
182
|
+
if curl -fsS -m 2 "$BASE_URL/health" >/dev/null 2>&1; then
|
|
183
|
+
RIFT_HEALTH="up"
|
|
184
|
+
else
|
|
185
|
+
RIFT_HEALTH="down"
|
|
186
|
+
fi
|
|
187
|
+
|
|
188
|
+
export RIFT_DOCTOR_JSON RIFT_STATUS_JSON RIFT_MCP_JSON RIFT_HEALTH
|
|
189
|
+
export RIFT_NODE_BIN="$NODE_BIN" RIFT_JS RIFT_BIN RIFT_CODEX_BIN
|
|
190
|
+
|
|
191
|
+
# --- Render ---
|
|
192
|
+
if [[ -f "$RENDERER" ]]; then
|
|
193
|
+
/usr/bin/python3 "$RENDERER"
|
|
194
|
+
else
|
|
195
|
+
# Renderer missing (broken install). Degrade to a minimal, honest menu
|
|
196
|
+
# rather than a blank one.
|
|
197
|
+
echo ":exclamationmark.triangle.fill: | sfcolor=#FF3B30,#FF453A"
|
|
198
|
+
echo "---"
|
|
199
|
+
echo "Menu renderer missing, reinstall the Onadit menu bar"
|
|
200
|
+
echo "Open logs | shell=/usr/bin/open param1=\"$LOG_DIR\" terminal=false"
|
|
201
|
+
fi
|