@getrift/rift 0.0.0 → 0.1.0-beta.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 +110 -0
- package/README.md +130 -0
- package/dist/src/auth/keychain.d.ts +25 -0
- package/dist/src/auth/keychain.d.ts.map +1 -0
- package/dist/src/auth/keychain.js +113 -0
- package/dist/src/auth/keychain.js.map +1 -0
- package/dist/src/auth/middleware.d.ts +20 -0
- package/dist/src/auth/middleware.d.ts.map +1 -0
- package/dist/src/auth/middleware.js +49 -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/auto-capture.d.ts +162 -0
- package/dist/src/capture/auto-capture.d.ts.map +1 -0
- package/dist/src/capture/auto-capture.js +601 -0
- package/dist/src/capture/auto-capture.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/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 +109 -0
- package/dist/src/capture/codex-cli-triage-provider.js.map +1 -0
- package/dist/src/capture/observability.d.ts +42 -0
- package/dist/src/capture/observability.d.ts.map +1 -0
- package/dist/src/capture/observability.js +87 -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/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 +43 -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 +7 -0
- package/dist/src/capture/sources.d.ts.map +1 -0
- package/dist/src/capture/sources.js +3 -0
- package/dist/src/capture/sources.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.d.ts +75 -0
- package/dist/src/capture/triage-provider.d.ts.map +1 -0
- package/dist/src/capture/triage-provider.js +120 -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 +48 -0
- package/dist/src/capture/triage.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 +1376 -0
- package/dist/src/cli/commands/backfill.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.d.ts +12 -0
- package/dist/src/cli/commands/capture.d.ts.map +1 -0
- package/dist/src/cli/commands/capture.js +123 -0
- package/dist/src/cli/commands/capture.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/feedback.d.ts +22 -0
- package/dist/src/cli/commands/feedback.d.ts.map +1 -0
- package/dist/src/cli/commands/feedback.js +125 -0
- package/dist/src/cli/commands/feedback.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 +25 -0
- package/dist/src/cli/commands/mcp-install.d.ts.map +1 -0
- package/dist/src/cli/commands/mcp-install.js +134 -0
- package/dist/src/cli/commands/mcp-install.js.map +1 -0
- package/dist/src/cli/commands/onboard.d.ts +98 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -0
- package/dist/src/cli/commands/onboard.js +742 -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 +164 -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 +56 -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 +383 -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 +35 -0
- package/dist/src/cli/commands/search.d.ts.map +1 -0
- package/dist/src/cli/commands/search.js +88 -0
- package/dist/src/cli/commands/search.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 +15 -0
- package/dist/src/cli/commands/status.d.ts.map +1 -0
- package/dist/src/cli/commands/status.js +89 -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 +25 -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 +125 -0
- package/dist/src/cli/commands/triage.js.map +1 -0
- package/dist/src/cli/commands/uninstall.d.ts +3 -0
- package/dist/src/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/src/cli/commands/uninstall.js +238 -0
- package/dist/src/cli/commands/uninstall.js.map +1 -0
- package/dist/src/cli/feedback/feedback-config.d.ts +21 -0
- package/dist/src/cli/feedback/feedback-config.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-config.js +43 -0
- package/dist/src/cli/feedback/feedback-config.js.map +1 -0
- package/dist/src/cli/feedback/feedback-history.d.ts +4 -0
- package/dist/src/cli/feedback/feedback-history.d.ts.map +1 -0
- package/dist/src/cli/feedback/feedback-history.js +115 -0
- package/dist/src/cli/feedback/feedback-history.js.map +1 -0
- package/dist/src/cli/feedback/feedback-payload.d.ts +53 -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/http-client.d.ts +36 -0
- package/dist/src/cli/http-client.d.ts.map +1 -0
- package/dist/src/cli/http-client.js +153 -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 +66 -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 +10 -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 +410 -0
- package/dist/src/cli/mcp-config-writers/codex-toml.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 +18 -0
- package/dist/src/cli/mcp-config-writers/index.d.ts.map +1 -0
- package/dist/src/cli/mcp-config-writers/index.js +49 -0
- package/dist/src/cli/mcp-config-writers/index.js.map +1 -0
- package/dist/src/cli/mcp-config-writers/json-config.d.ts +12 -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 +177 -0
- package/dist/src/cli/mcp-config-writers/json-config.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 +32 -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/status/friend-header.d.ts +33 -0
- package/dist/src/cli/status/friend-header.d.ts.map +1 -0
- package/dist/src/cli/status/friend-header.js +108 -0
- package/dist/src/cli/status/friend-header.js.map +1 -0
- package/dist/src/cli/status/local-signals.d.ts +14 -0
- package/dist/src/cli/status/local-signals.d.ts.map +1 -0
- package/dist/src/cli/status/local-signals.js +73 -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/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 +181 -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 +635 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +208 -0
- package/dist/src/config/schema.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/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-watcher.d.ts +12 -0
- package/dist/src/ingestion/inbox-watcher.d.ts.map +1 -0
- package/dist/src/ingestion/inbox-watcher.js +99 -0
- package/dist/src/ingestion/inbox-watcher.js.map +1 -0
- package/dist/src/ingestion/indexer.d.ts +32 -0
- package/dist/src/ingestion/indexer.d.ts.map +1 -0
- package/dist/src/ingestion/indexer.js +68 -0
- package/dist/src/ingestion/indexer.js.map +1 -0
- package/dist/src/ingestion/metadata-extraction.d.ts +53 -0
- package/dist/src/ingestion/metadata-extraction.d.ts.map +1 -0
- package/dist/src/ingestion/metadata-extraction.js +132 -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 +16 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.d.ts.map +1 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.js +123 -0
- package/dist/src/ingestion/parsers/claude-code-jsonl.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 +78 -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 +125 -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-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/types.d.ts +34 -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/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/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 +329 -0
- package/dist/src/jobs/handlers/compact.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 +255 -0
- package/dist/src/jobs/handlers/ingest.js.map +1 -0
- package/dist/src/jobs/handlers/reconcile.d.ts +29 -0
- package/dist/src/jobs/handlers/reconcile.d.ts.map +1 -0
- package/dist/src/jobs/handlers/reconcile.js +476 -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 +52 -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 +206 -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/queue.d.ts +107 -0
- package/dist/src/jobs/queue.d.ts.map +1 -0
- package/dist/src/jobs/queue.js +319 -0
- package/dist/src/jobs/queue.js.map +1 -0
- package/dist/src/jobs/types.d.ts +39 -0
- package/dist/src/jobs/types.d.ts.map +1 -0
- package/dist/src/jobs/types.js +29 -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 +210 -0
- package/dist/src/jobs/worker-entry.js.map +1 -0
- package/dist/src/jobs/worker-process.d.ts +50 -0
- package/dist/src/jobs/worker-process.d.ts.map +1 -0
- package/dist/src/jobs/worker-process.js +186 -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 +425 -0
- package/dist/src/main.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 +50 -0
- package/dist/src/mcp/errors.js.map +1 -0
- package/dist/src/mcp/server.d.ts +10 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +94 -0
- package/dist/src/mcp/server.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 +97 -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 +73 -0
- package/dist/src/mcp/tools/conversations-search.js.map +1 -0
- package/dist/src/mcp/tools/save.d.ts +32 -0
- package/dist/src/mcp/tools/save.d.ts.map +1 -0
- package/dist/src/mcp/tools/save.js +60 -0
- package/dist/src/mcp/tools/save.js.map +1 -0
- package/dist/src/mcp/tools/search.d.ts +33 -0
- package/dist/src/mcp/tools/search.d.ts.map +1 -0
- package/dist/src/mcp/tools/search.js +58 -0
- package/dist/src/mcp/tools/search.js.map +1 -0
- package/dist/src/mcp/tools/status.d.ts +17 -0
- package/dist/src/mcp/tools/status.d.ts.map +1 -0
- package/dist/src/mcp/tools/status.js +12 -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 +180 -0
- package/dist/src/observability/coverage.js.map +1 -0
- package/dist/src/observability/rift-context.d.ts +47 -0
- package/dist/src/observability/rift-context.d.ts.map +1 -0
- package/dist/src/observability/rift-context.js +118 -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 +23 -0
- package/dist/src/observability/tool-usage-stats.d.ts.map +1 -0
- package/dist/src/observability/tool-usage-stats.js +83 -0
- package/dist/src/observability/tool-usage-stats.js.map +1 -0
- package/dist/src/observability/tool-usage.d.ts +68 -0
- package/dist/src/observability/tool-usage.d.ts.map +1 -0
- package/dist/src/observability/tool-usage.js +207 -0
- package/dist/src/observability/tool-usage.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/voyage-validate.d.ts +16 -0
- package/dist/src/onboarding/voyage-validate.d.ts.map +1 -0
- package/dist/src/onboarding/voyage-validate.js +85 -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/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 +14 -0
- package/dist/src/providers/codex-cli-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-metadata-extraction.js +101 -0
- package/dist/src/providers/codex-cli-metadata-extraction.js.map +1 -0
- package/dist/src/providers/codex-cli-runner.d.ts +14 -0
- package/dist/src/providers/codex-cli-runner.d.ts.map +1 -0
- package/dist/src/providers/codex-cli-runner.js +272 -0
- package/dist/src/providers/codex-cli-runner.js.map +1 -0
- package/dist/src/providers/conversation-generation.d.ts +10 -0
- package/dist/src/providers/conversation-generation.d.ts.map +1 -0
- package/dist/src/providers/conversation-generation.js +54 -0
- package/dist/src/providers/conversation-generation.js.map +1 -0
- package/dist/src/providers/ollama-embed.d.ts +22 -0
- package/dist/src/providers/ollama-embed.d.ts.map +1 -0
- package/dist/src/providers/ollama-embed.js +133 -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 +73 -0
- package/dist/src/providers/openai-metadata-extraction.d.ts.map +1 -0
- package/dist/src/providers/openai-metadata-extraction.js +161 -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/stub.d.ts +17 -0
- package/dist/src/providers/stub.d.ts.map +1 -0
- package/dist/src/providers/stub.js +72 -0
- package/dist/src/providers/stub.js.map +1 -0
- package/dist/src/providers/types.d.ts +82 -0
- package/dist/src/providers/types.d.ts.map +1 -0
- package/dist/src/providers/types.js +52 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/providers/voyage.d.ts +23 -0
- package/dist/src/providers/voyage.d.ts.map +1 -0
- package/dist/src/providers/voyage.js +135 -0
- package/dist/src/providers/voyage.js.map +1 -0
- package/dist/src/retrieval/compact.d.ts +89 -0
- package/dist/src/retrieval/compact.d.ts.map +1 -0
- package/dist/src/retrieval/compact.js +348 -0
- package/dist/src/retrieval/compact.js.map +1 -0
- package/dist/src/retrieval/context-pack.d.ts +123 -0
- package/dist/src/retrieval/context-pack.d.ts.map +1 -0
- package/dist/src/retrieval/context-pack.js +553 -0
- package/dist/src/retrieval/context-pack.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/hybrid.d.ts +38 -0
- package/dist/src/retrieval/hybrid.d.ts.map +1 -0
- package/dist/src/retrieval/hybrid.js +82 -0
- package/dist/src/retrieval/hybrid.js.map +1 -0
- package/dist/src/retrieval/lexical.d.ts +28 -0
- package/dist/src/retrieval/lexical.d.ts.map +1 -0
- package/dist/src/retrieval/lexical.js +301 -0
- package/dist/src/retrieval/lexical.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/reranker.d.ts +72 -0
- package/dist/src/retrieval/reranker.d.ts.map +1 -0
- package/dist/src/retrieval/reranker.js +129 -0
- package/dist/src/retrieval/reranker.js.map +1 -0
- package/dist/src/retrieval/vector.d.ts +47 -0
- package/dist/src/retrieval/vector.d.ts.map +1 -0
- package/dist/src/retrieval/vector.js +112 -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/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 +226 -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 +77 -0
- package/dist/src/server/routes/compact.js.map +1 -0
- package/dist/src/server/routes/context.d.ts +5 -0
- package/dist/src/server/routes/context.d.ts.map +1 -0
- package/dist/src/server/routes/context.js +50 -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 +243 -0
- package/dist/src/server/routes/conversations-search.js.map +1 -0
- package/dist/src/server/routes/friend-status.d.ts +72 -0
- package/dist/src/server/routes/friend-status.d.ts.map +1 -0
- package/dist/src/server/routes/friend-status.js +71 -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 +139 -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 +13 -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 +43 -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 +74 -0
- package/dist/src/server/routes/reindex.js.map +1 -0
- package/dist/src/server/routes/save.d.ts +40 -0
- package/dist/src/server/routes/save.d.ts.map +1 -0
- package/dist/src/server/routes/save.js +112 -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 +400 -0
- package/dist/src/server/routes/search.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 +94 -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/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/db.d.ts +15 -0
- package/dist/src/storage/db.d.ts.map +1 -0
- package/dist/src/storage/db.js +43 -0
- package/dist/src/storage/db.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/rebuild.d.ts +37 -0
- package/dist/src/storage/rebuild.d.ts.map +1 -0
- package/dist/src/storage/rebuild.js +353 -0
- package/dist/src/storage/rebuild.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 +77 -0
- package/dist/src/storage/tables.d.ts.map +1 -0
- package/dist/src/storage/tables.js +196 -0
- package/dist/src/storage/tables.js.map +1 -0
- package/package.json +45 -14
- package/index.js +0 -3
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-backed review queue for borderline conversations.
|
|
3
|
+
*
|
|
4
|
+
* Review items are stored as individual JSON files in data/review-queue/.
|
|
5
|
+
* They are NOT indexed in LanceDB and NOT searchable until promoted.
|
|
6
|
+
*
|
|
7
|
+
* Promotion routes the conversation through the existing save pipeline
|
|
8
|
+
* (POST /save or direct handler), making it searchable.
|
|
9
|
+
*
|
|
10
|
+
* Discarding removes the review file without any side effects.
|
|
11
|
+
*/
|
|
12
|
+
import crypto from "node:crypto";
|
|
13
|
+
import fs from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import { atomicWrite } from "../storage/atomic.js";
|
|
16
|
+
import { normalizeTriageResult, } from "./triage-provider.js";
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the review queue directory, ensuring it exists.
|
|
19
|
+
*/
|
|
20
|
+
function reviewDir(dataDir) {
|
|
21
|
+
const dir = path.join(dataDir, "review-queue");
|
|
22
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
23
|
+
return dir;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generate a stable review item ID from the conversation ID.
|
|
27
|
+
*/
|
|
28
|
+
function reviewItemId(conversationId) {
|
|
29
|
+
return crypto
|
|
30
|
+
.createHash("sha256")
|
|
31
|
+
.update(conversationId)
|
|
32
|
+
.digest("hex")
|
|
33
|
+
.slice(0, 24);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Add a conversation to the review queue.
|
|
37
|
+
* Idempotent — re-adding the same conversation overwrites the file.
|
|
38
|
+
*/
|
|
39
|
+
export async function addToReview(dataDir, item) {
|
|
40
|
+
const id = reviewItemId(item.conversationId);
|
|
41
|
+
const reviewItem = {
|
|
42
|
+
...item,
|
|
43
|
+
id,
|
|
44
|
+
queued_at: new Date().toISOString(),
|
|
45
|
+
};
|
|
46
|
+
const filePath = path.join(reviewDir(dataDir), `${id}.json`);
|
|
47
|
+
await atomicWrite(filePath, JSON.stringify(reviewItem, null, 2));
|
|
48
|
+
return reviewItem;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* List all items in the review queue.
|
|
52
|
+
* Returns items sorted by queued_at (newest first).
|
|
53
|
+
*/
|
|
54
|
+
export function listReview(dataDir) {
|
|
55
|
+
const dir = reviewDir(dataDir);
|
|
56
|
+
const files = fs
|
|
57
|
+
.readdirSync(dir)
|
|
58
|
+
.filter((f) => f.endsWith(".json"));
|
|
59
|
+
const items = [];
|
|
60
|
+
for (const file of files) {
|
|
61
|
+
try {
|
|
62
|
+
const data = fs.readFileSync(path.join(dir, file), "utf-8");
|
|
63
|
+
const parsed = JSON.parse(data);
|
|
64
|
+
parsed.triage = normalizeTriageResult(parsed.triage);
|
|
65
|
+
items.push(parsed);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Skip corrupt files
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return items.sort((a, b) => new Date(b.queued_at).getTime() - new Date(a.queued_at).getTime());
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get a single review item by ID.
|
|
75
|
+
*/
|
|
76
|
+
export function getReviewItem(dataDir, id) {
|
|
77
|
+
const filePath = path.join(reviewDir(dataDir), `${id}.json`);
|
|
78
|
+
if (!fs.existsSync(filePath))
|
|
79
|
+
return null;
|
|
80
|
+
try {
|
|
81
|
+
const parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
82
|
+
parsed.triage = normalizeTriageResult(parsed.triage);
|
|
83
|
+
return parsed;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Remove a review item (used for both promote and discard).
|
|
91
|
+
* Returns the item that was removed, or null if not found.
|
|
92
|
+
*/
|
|
93
|
+
export function removeReviewItem(dataDir, id) {
|
|
94
|
+
const filePath = path.join(reviewDir(dataDir), `${id}.json`);
|
|
95
|
+
if (!fs.existsSync(filePath))
|
|
96
|
+
return null;
|
|
97
|
+
try {
|
|
98
|
+
const item = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
99
|
+
item.triage = normalizeTriageResult(item.triage);
|
|
100
|
+
fs.unlinkSync(filePath);
|
|
101
|
+
return item;
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Count items in the review queue.
|
|
109
|
+
*/
|
|
110
|
+
export function reviewQueueSize(dataDir) {
|
|
111
|
+
const dir = reviewDir(dataDir);
|
|
112
|
+
if (!fs.existsSync(dir))
|
|
113
|
+
return 0;
|
|
114
|
+
return fs.readdirSync(dir).filter((f) => f.endsWith(".json")).length;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=review-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-queue.js","sourceRoot":"","sources":["../../../src/capture/review-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const AUTO_CAPTURE_SOURCE_VALUES: readonly ["claude_code", "codex_cli"];
|
|
2
|
+
export type AutoCaptureSource = (typeof AUTO_CAPTURE_SOURCE_VALUES)[number];
|
|
3
|
+
export declare const DEFAULT_AUTO_CAPTURE_SOURCES: [
|
|
4
|
+
AutoCaptureSource,
|
|
5
|
+
...AutoCaptureSource[]
|
|
6
|
+
];
|
|
7
|
+
//# sourceMappingURL=sources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../../src/capture/sources.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,uCAAwC,CAAC;AAEhF,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,eAAO,MAAM,4BAA4B,EAAE;IACzC,iBAAiB;IACjB,GAAG,iBAAiB,EAAE;CACQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/capture/sources.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,aAAa,EAAE,WAAW,CAAU,CAAC;AAIhF,MAAM,CAAC,MAAM,4BAA4B,GAGrC,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export type LegacyTriageDecision = "save" | "discard" | "review";
|
|
2
|
+
export type TriageLane = "archive_only" | "review" | "promote_to_extract";
|
|
3
|
+
export interface TriageScoreBreakdown {
|
|
4
|
+
heuristics: number;
|
|
5
|
+
source_quality: number;
|
|
6
|
+
conversation_density: number;
|
|
7
|
+
repo_file_references: number;
|
|
8
|
+
decision_language: number;
|
|
9
|
+
model_judgment: number;
|
|
10
|
+
total: number;
|
|
11
|
+
}
|
|
12
|
+
export interface TriageScoringDebug {
|
|
13
|
+
score_breakdown: TriageScoreBreakdown;
|
|
14
|
+
signals: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface LaneScoringInput {
|
|
17
|
+
content: string;
|
|
18
|
+
source?: string;
|
|
19
|
+
decision: LegacyTriageDecision;
|
|
20
|
+
confidence: number;
|
|
21
|
+
summary: string;
|
|
22
|
+
rationale: string;
|
|
23
|
+
topics: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare const ARCHIVE_ONLY_THRESHOLD = 0.45;
|
|
26
|
+
export declare const PROMOTE_TO_EXTRACT_THRESHOLD = 0.62;
|
|
27
|
+
export declare function decisionToLane(decision: LegacyTriageDecision): TriageLane;
|
|
28
|
+
export declare function laneToDecision(lane: TriageLane): LegacyTriageDecision;
|
|
29
|
+
export declare function resolveLane(params: {
|
|
30
|
+
lane?: unknown;
|
|
31
|
+
decision?: unknown;
|
|
32
|
+
}): TriageLane;
|
|
33
|
+
export declare function laneFromScore(score: number, decision?: LegacyTriageDecision): TriageLane;
|
|
34
|
+
export declare function scoreHistoricalTriage(input: LaneScoringInput): {
|
|
35
|
+
lane: TriageLane;
|
|
36
|
+
score: number;
|
|
37
|
+
debug: TriageScoringDebug;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=triage-lane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-lane.d.ts","sourceRoot":"","sources":["../../../src/capture/triage-lane.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEjE,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,QAAQ,GACR,oBAAoB,CAAC;AAEzB,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,oBAAoB,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAWjD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,UAAU,CASzE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,oBAAoB,CASrE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,UAAU,CAkBb;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,UAAU,CAsBZ;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,GACtB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,kBAAkB,CAAA;CAAE,CA4ChE"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
export const ARCHIVE_ONLY_THRESHOLD = 0.45;
|
|
2
|
+
export const PROMOTE_TO_EXTRACT_THRESHOLD = 0.62;
|
|
3
|
+
const SCORE_WEIGHTS = {
|
|
4
|
+
heuristics: 0.16,
|
|
5
|
+
source_quality: 0.1,
|
|
6
|
+
conversation_density: 0.16,
|
|
7
|
+
repo_file_references: 0.18,
|
|
8
|
+
decision_language: 0.15,
|
|
9
|
+
model_judgment: 0.25,
|
|
10
|
+
};
|
|
11
|
+
export function decisionToLane(decision) {
|
|
12
|
+
switch (decision) {
|
|
13
|
+
case "discard":
|
|
14
|
+
return "archive_only";
|
|
15
|
+
case "review":
|
|
16
|
+
return "review";
|
|
17
|
+
case "save":
|
|
18
|
+
return "promote_to_extract";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function laneToDecision(lane) {
|
|
22
|
+
switch (lane) {
|
|
23
|
+
case "archive_only":
|
|
24
|
+
return "discard";
|
|
25
|
+
case "review":
|
|
26
|
+
return "review";
|
|
27
|
+
case "promote_to_extract":
|
|
28
|
+
return "save";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function resolveLane(params) {
|
|
32
|
+
if (params.lane === "archive_only" ||
|
|
33
|
+
params.lane === "review" ||
|
|
34
|
+
params.lane === "promote_to_extract") {
|
|
35
|
+
return params.lane;
|
|
36
|
+
}
|
|
37
|
+
if (params.decision === "discard" ||
|
|
38
|
+
params.decision === "review" ||
|
|
39
|
+
params.decision === "save") {
|
|
40
|
+
return decisionToLane(params.decision);
|
|
41
|
+
}
|
|
42
|
+
return "review";
|
|
43
|
+
}
|
|
44
|
+
export function laneFromScore(score, decision) {
|
|
45
|
+
const normalizedScore = roundScore(clamp01(score));
|
|
46
|
+
if (decision === "review") {
|
|
47
|
+
return "review";
|
|
48
|
+
}
|
|
49
|
+
if (decision === "discard") {
|
|
50
|
+
return normalizedScore < ARCHIVE_ONLY_THRESHOLD
|
|
51
|
+
? "archive_only"
|
|
52
|
+
: "review";
|
|
53
|
+
}
|
|
54
|
+
if (decision === "save") {
|
|
55
|
+
return normalizedScore > PROMOTE_TO_EXTRACT_THRESHOLD
|
|
56
|
+
? "promote_to_extract"
|
|
57
|
+
: "review";
|
|
58
|
+
}
|
|
59
|
+
if (normalizedScore < ARCHIVE_ONLY_THRESHOLD)
|
|
60
|
+
return "archive_only";
|
|
61
|
+
if (normalizedScore > PROMOTE_TO_EXTRACT_THRESHOLD) {
|
|
62
|
+
return "promote_to_extract";
|
|
63
|
+
}
|
|
64
|
+
return "review";
|
|
65
|
+
}
|
|
66
|
+
export function scoreHistoricalTriage(input) {
|
|
67
|
+
const heuristics = scoreHeuristics(input.content, input.summary, input.topics);
|
|
68
|
+
const sourceQuality = scoreSourceQuality(input.source);
|
|
69
|
+
const conversationDensity = scoreConversationDensity(input.content);
|
|
70
|
+
const repoFileReferences = scoreRepoFileReferences(input.content);
|
|
71
|
+
const decisionLanguage = scoreDecisionLanguage(input.content, input.summary, input.rationale);
|
|
72
|
+
const modelJudgment = scoreModelJudgment(input.decision, input.confidence);
|
|
73
|
+
const total = heuristics * SCORE_WEIGHTS.heuristics +
|
|
74
|
+
sourceQuality * SCORE_WEIGHTS.source_quality +
|
|
75
|
+
conversationDensity * SCORE_WEIGHTS.conversation_density +
|
|
76
|
+
repoFileReferences * SCORE_WEIGHTS.repo_file_references +
|
|
77
|
+
decisionLanguage * SCORE_WEIGHTS.decision_language +
|
|
78
|
+
modelJudgment * SCORE_WEIGHTS.model_judgment;
|
|
79
|
+
const normalizedTotal = roundScore(total);
|
|
80
|
+
const lane = laneFromScore(normalizedTotal, input.decision);
|
|
81
|
+
return {
|
|
82
|
+
lane,
|
|
83
|
+
score: normalizedTotal,
|
|
84
|
+
debug: {
|
|
85
|
+
score_breakdown: {
|
|
86
|
+
heuristics: roundScore(heuristics),
|
|
87
|
+
source_quality: roundScore(sourceQuality),
|
|
88
|
+
conversation_density: roundScore(conversationDensity),
|
|
89
|
+
repo_file_references: roundScore(repoFileReferences),
|
|
90
|
+
decision_language: roundScore(decisionLanguage),
|
|
91
|
+
model_judgment: roundScore(modelJudgment),
|
|
92
|
+
total: normalizedTotal,
|
|
93
|
+
},
|
|
94
|
+
signals: collectSignals({
|
|
95
|
+
content: input.content,
|
|
96
|
+
summary: input.summary,
|
|
97
|
+
rationale: input.rationale,
|
|
98
|
+
...(input.source ? { source: input.source } : {}),
|
|
99
|
+
}),
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function scoreHeuristics(content, summary, topics) {
|
|
104
|
+
const contentLength = content.trim().length;
|
|
105
|
+
let score = 0.08;
|
|
106
|
+
if (contentLength > 8000)
|
|
107
|
+
score += 0.42;
|
|
108
|
+
else if (contentLength > 3000)
|
|
109
|
+
score += 0.34;
|
|
110
|
+
else if (contentLength > 1200)
|
|
111
|
+
score += 0.26;
|
|
112
|
+
else if (contentLength > 500)
|
|
113
|
+
score += 0.14;
|
|
114
|
+
else if (contentLength > 200)
|
|
115
|
+
score += 0.07;
|
|
116
|
+
if (summary.trim().length > 24)
|
|
117
|
+
score += 0.08;
|
|
118
|
+
if (topics.length >= 3)
|
|
119
|
+
score += 0.08;
|
|
120
|
+
if (topics.length >= 5)
|
|
121
|
+
score += 0.04;
|
|
122
|
+
return clamp01(score);
|
|
123
|
+
}
|
|
124
|
+
function scoreSourceQuality(source) {
|
|
125
|
+
switch (source) {
|
|
126
|
+
case "claude_code":
|
|
127
|
+
case "codex_cli":
|
|
128
|
+
case "gemini_cli":
|
|
129
|
+
return 0.85;
|
|
130
|
+
case "claude_web":
|
|
131
|
+
return 0.62;
|
|
132
|
+
case "chatgpt_web":
|
|
133
|
+
return 0.58;
|
|
134
|
+
default:
|
|
135
|
+
return 0.5;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function scoreConversationDensity(content) {
|
|
139
|
+
const turns = (content.match(/(?:^|\n)(User|Assistant):/g) ?? []).length;
|
|
140
|
+
const paragraphs = content
|
|
141
|
+
.split(/\n\s*\n/)
|
|
142
|
+
.map((part) => part.trim())
|
|
143
|
+
.filter(Boolean).length;
|
|
144
|
+
const signalUnits = Math.max(turns, Math.min(paragraphs, 12));
|
|
145
|
+
if (signalUnits >= 10)
|
|
146
|
+
return 0.92;
|
|
147
|
+
if (signalUnits >= 6)
|
|
148
|
+
return 0.74;
|
|
149
|
+
if (signalUnits >= 4)
|
|
150
|
+
return 0.56;
|
|
151
|
+
if (signalUnits >= 2)
|
|
152
|
+
return 0.34;
|
|
153
|
+
return 0.12;
|
|
154
|
+
}
|
|
155
|
+
function scoreRepoFileReferences(content) {
|
|
156
|
+
const matches = content.match(/\b(?:src|tests|docs|app|lib|packages|components|pages|server|client)\/[^\s"'`]+|\b[a-zA-Z0-9_.-]+\.(?:ts|tsx|js|jsx|py|rb|go|rs|java|md|json|yaml|yml|toml)\b|#[0-9]{1,6}\b/g) ?? [];
|
|
157
|
+
if (matches.length >= 4)
|
|
158
|
+
return 0.95;
|
|
159
|
+
if (matches.length >= 2)
|
|
160
|
+
return 0.72;
|
|
161
|
+
if (matches.length >= 1)
|
|
162
|
+
return 0.48;
|
|
163
|
+
return 0.08;
|
|
164
|
+
}
|
|
165
|
+
function scoreDecisionLanguage(content, summary, rationale) {
|
|
166
|
+
const haystack = `${summary}\n${rationale}\n${content}`.toLowerCase();
|
|
167
|
+
const matches = haystack.match(/\b(decide|decision|decided|recommend|recommended|plan|planned|ship|shipped|next step|approved|reject|rejected|choose|chosen|action item)\b/g) ?? [];
|
|
168
|
+
if (matches.length >= 5)
|
|
169
|
+
return 0.95;
|
|
170
|
+
if (matches.length >= 3)
|
|
171
|
+
return 0.76;
|
|
172
|
+
if (matches.length >= 1)
|
|
173
|
+
return 0.52;
|
|
174
|
+
return 0.12;
|
|
175
|
+
}
|
|
176
|
+
function scoreModelJudgment(decision, confidence) {
|
|
177
|
+
const safeConfidence = clamp01(confidence);
|
|
178
|
+
switch (decision) {
|
|
179
|
+
case "save":
|
|
180
|
+
return clamp01(0.62 + safeConfidence * 0.38);
|
|
181
|
+
case "review":
|
|
182
|
+
return clamp01(0.32 + safeConfidence * 0.24);
|
|
183
|
+
case "discard":
|
|
184
|
+
return clamp01(0.02 + (1 - safeConfidence) * 0.08);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function collectSignals(params) {
|
|
188
|
+
const signals = [];
|
|
189
|
+
const turns = (params.content.match(/(?:^|\n)(User|Assistant):/g) ?? []).length;
|
|
190
|
+
if (params.source)
|
|
191
|
+
signals.push(`source=${params.source}`);
|
|
192
|
+
signals.push(`turns=${turns}`);
|
|
193
|
+
if (params.content.length > 3000)
|
|
194
|
+
signals.push("long_conversation");
|
|
195
|
+
if (/\b(?:src|tests|docs|app|lib)\//.test(params.content)) {
|
|
196
|
+
signals.push("repo_refs");
|
|
197
|
+
}
|
|
198
|
+
if (/\b(?:decision|recommend|plan|ship|next step)\b/i.test(params.content)) {
|
|
199
|
+
signals.push("decision_language");
|
|
200
|
+
}
|
|
201
|
+
if (params.summary.trim().length > 0)
|
|
202
|
+
signals.push("has_summary");
|
|
203
|
+
if (params.rationale.trim().length > 0)
|
|
204
|
+
signals.push("has_rationale");
|
|
205
|
+
return signals;
|
|
206
|
+
}
|
|
207
|
+
function clamp01(value) {
|
|
208
|
+
if (value < 0)
|
|
209
|
+
return 0;
|
|
210
|
+
if (value > 1)
|
|
211
|
+
return 1;
|
|
212
|
+
return value;
|
|
213
|
+
}
|
|
214
|
+
function roundScore(value) {
|
|
215
|
+
return Math.round(value * 1000) / 1000;
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=triage-lane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-lane.js","sourceRoot":"","sources":["../../../src/capture/triage-lane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triage provider interface — Slice 5 contract.
|
|
3
|
+
*
|
|
4
|
+
* Locked shape: every triage result must carry decision + confidence +
|
|
5
|
+
* rationale + model + provider + version. summary and topics are kept
|
|
6
|
+
* additively for review-queue display.
|
|
7
|
+
*
|
|
8
|
+
* Providers are the only place model IDs and provider strings are minted.
|
|
9
|
+
* Callers consume TriageResult; they don't know whether the call hit
|
|
10
|
+
* OpenAI, a stub, or a legacy code path.
|
|
11
|
+
*/
|
|
12
|
+
import { type LegacyTriageDecision, type TriageLane, type TriageScoreBreakdown, type TriageScoringDebug } from "./triage-lane.js";
|
|
13
|
+
export type TriageDecision = LegacyTriageDecision;
|
|
14
|
+
/** Bumped whenever the prompt or scoring contract changes. */
|
|
15
|
+
export declare const TRIAGE_VERSION = "1";
|
|
16
|
+
export interface TriageResult {
|
|
17
|
+
decision: TriageDecision;
|
|
18
|
+
lane: TriageLane;
|
|
19
|
+
/** 0.0–1.0 confidence in the decision. */
|
|
20
|
+
confidence: number;
|
|
21
|
+
/** 0.0–1.0 total score used for lane routing. */
|
|
22
|
+
score: number;
|
|
23
|
+
/** Why this decision was made. */
|
|
24
|
+
rationale: string;
|
|
25
|
+
/** Model ID that produced the result (e.g. "gpt-5.4-nano"). */
|
|
26
|
+
model: string;
|
|
27
|
+
/** Provider tag (e.g. "openai", "claude_cli_legacy"). */
|
|
28
|
+
provider: string;
|
|
29
|
+
/** Triage contract version. */
|
|
30
|
+
version: string;
|
|
31
|
+
/** One-line summary for review-queue display. */
|
|
32
|
+
summary: string;
|
|
33
|
+
/** Lightweight topic tags. */
|
|
34
|
+
topics: string[];
|
|
35
|
+
/** Lightweight operator-visible score breakdown. */
|
|
36
|
+
score_breakdown: TriageScoreBreakdown;
|
|
37
|
+
/** Cheap operator/debug hints for why the item landed here. */
|
|
38
|
+
debug: TriageScoringDebug;
|
|
39
|
+
}
|
|
40
|
+
export interface TriageInput {
|
|
41
|
+
/** Conversation content to triage. Provider truncates as needed. */
|
|
42
|
+
content: string;
|
|
43
|
+
/** Optional source tag used by the lane scorer. */
|
|
44
|
+
source?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface TriageProvider {
|
|
47
|
+
triage(input: TriageInput): Promise<TriageResult>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Marker error: a batch hit its cost ceiling. The batch must stop
|
|
51
|
+
* admitting new triage calls; callers handle this fail-closed.
|
|
52
|
+
*/
|
|
53
|
+
export declare class BatchCostExceededError extends Error {
|
|
54
|
+
readonly spentUsd: number;
|
|
55
|
+
readonly capUsd: number;
|
|
56
|
+
constructor(message: string, spentUsd: number, capUsd: number);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Failure that carries the actual USD cost the upstream API already
|
|
60
|
+
* billed. Thrown when an HTTP 200 response with a token-usage block
|
|
61
|
+
* fails to parse — the API keeps the money even though we can't use
|
|
62
|
+
* the result, and the budget must reflect that.
|
|
63
|
+
*/
|
|
64
|
+
export declare class BilledOpenAIError extends Error {
|
|
65
|
+
readonly costUsd: number;
|
|
66
|
+
constructor(message: string, costUsd: number, options?: {
|
|
67
|
+
cause?: unknown;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Dual-read helper for persisted triage payloads while `lane` rolls out.
|
|
72
|
+
* Old rows may only carry `decision`; new rows must carry both.
|
|
73
|
+
*/
|
|
74
|
+
export declare function normalizeTriageResult(value: unknown): TriageResult;
|
|
75
|
+
//# sourceMappingURL=triage-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-provider.d.ts","sourceRoot":"","sources":["../../../src/capture/triage-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,8DAA8D;AAC9D,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,oDAAoD;IACpD,eAAe,EAAE,oBAAoB,CAAC;IACtC,+DAA+D;IAC/D,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACnD;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;aAG7B,QAAQ,EAAE,MAAM;aAChB,MAAM,EAAE,MAAM;gBAF9B,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM;CAKjC;AAED;;;;;GAKG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;aAGxB,OAAO,EAAE,MAAM;gBAD/B,OAAO,EAAE,MAAM,EACC,OAAO,EAAE,MAAM,EAC/B,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKhC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAmDlE"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triage provider interface — Slice 5 contract.
|
|
3
|
+
*
|
|
4
|
+
* Locked shape: every triage result must carry decision + confidence +
|
|
5
|
+
* rationale + model + provider + version. summary and topics are kept
|
|
6
|
+
* additively for review-queue display.
|
|
7
|
+
*
|
|
8
|
+
* Providers are the only place model IDs and provider strings are minted.
|
|
9
|
+
* Callers consume TriageResult; they don't know whether the call hit
|
|
10
|
+
* OpenAI, a stub, or a legacy code path.
|
|
11
|
+
*/
|
|
12
|
+
import { decisionToLane, resolveLane, } from "./triage-lane.js";
|
|
13
|
+
/** Bumped whenever the prompt or scoring contract changes. */
|
|
14
|
+
export const TRIAGE_VERSION = "1";
|
|
15
|
+
/**
|
|
16
|
+
* Marker error: a batch hit its cost ceiling. The batch must stop
|
|
17
|
+
* admitting new triage calls; callers handle this fail-closed.
|
|
18
|
+
*/
|
|
19
|
+
export class BatchCostExceededError extends Error {
|
|
20
|
+
spentUsd;
|
|
21
|
+
capUsd;
|
|
22
|
+
constructor(message, spentUsd, capUsd) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.spentUsd = spentUsd;
|
|
25
|
+
this.capUsd = capUsd;
|
|
26
|
+
this.name = "BatchCostExceededError";
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Failure that carries the actual USD cost the upstream API already
|
|
31
|
+
* billed. Thrown when an HTTP 200 response with a token-usage block
|
|
32
|
+
* fails to parse — the API keeps the money even though we can't use
|
|
33
|
+
* the result, and the budget must reflect that.
|
|
34
|
+
*/
|
|
35
|
+
export class BilledOpenAIError extends Error {
|
|
36
|
+
costUsd;
|
|
37
|
+
constructor(message, costUsd, options) {
|
|
38
|
+
super(message, options);
|
|
39
|
+
this.costUsd = costUsd;
|
|
40
|
+
this.name = "BilledOpenAIError";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Dual-read helper for persisted triage payloads while `lane` rolls out.
|
|
45
|
+
* Old rows may only carry `decision`; new rows must carry both.
|
|
46
|
+
*/
|
|
47
|
+
export function normalizeTriageResult(value) {
|
|
48
|
+
const t = (value ?? {});
|
|
49
|
+
const decision = t.decision === "save" || t.decision === "discard" || t.decision === "review"
|
|
50
|
+
? t.decision
|
|
51
|
+
: "review";
|
|
52
|
+
const lane = resolveLane({ lane: t.lane, decision });
|
|
53
|
+
const score = typeof t.score === "number"
|
|
54
|
+
? t.score
|
|
55
|
+
: lane === decisionToLane(decision)
|
|
56
|
+
? defaultScoreForLane(lane)
|
|
57
|
+
: defaultScoreForLane(decisionToLane(decision));
|
|
58
|
+
const scoreBreakdown = isScoreBreakdown(t.score_breakdown)
|
|
59
|
+
? t.score_breakdown
|
|
60
|
+
: {
|
|
61
|
+
heuristics: 0,
|
|
62
|
+
source_quality: 0,
|
|
63
|
+
conversation_density: 0,
|
|
64
|
+
repo_file_references: 0,
|
|
65
|
+
decision_language: 0,
|
|
66
|
+
model_judgment: 0,
|
|
67
|
+
total: score,
|
|
68
|
+
};
|
|
69
|
+
const debug = isScoringDebug(t.debug)
|
|
70
|
+
? t.debug
|
|
71
|
+
: {
|
|
72
|
+
score_breakdown: scoreBreakdown,
|
|
73
|
+
signals: [],
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
decision,
|
|
77
|
+
lane,
|
|
78
|
+
confidence: typeof t.confidence === "number" ? t.confidence : 0,
|
|
79
|
+
score,
|
|
80
|
+
rationale: typeof t.rationale === "string" ? t.rationale : "",
|
|
81
|
+
summary: typeof t.summary === "string" ? t.summary : "",
|
|
82
|
+
topics: Array.isArray(t.topics) ? t.topics.map(String) : [],
|
|
83
|
+
model: typeof t.model === "string" ? t.model : "unknown",
|
|
84
|
+
provider: typeof t.provider === "string" && t.provider.length > 0
|
|
85
|
+
? t.provider
|
|
86
|
+
: "claude_cli_legacy",
|
|
87
|
+
version: typeof t.version === "string" && t.version.length > 0 ? t.version : "0",
|
|
88
|
+
score_breakdown: scoreBreakdown,
|
|
89
|
+
debug,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function defaultScoreForLane(lane) {
|
|
93
|
+
switch (lane) {
|
|
94
|
+
case "archive_only":
|
|
95
|
+
return 0.15;
|
|
96
|
+
case "review":
|
|
97
|
+
return 0.5;
|
|
98
|
+
case "promote_to_extract":
|
|
99
|
+
return 0.85;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function isScoreBreakdown(value) {
|
|
103
|
+
if (!value || typeof value !== "object")
|
|
104
|
+
return false;
|
|
105
|
+
const v = value;
|
|
106
|
+
return (typeof v.heuristics === "number" &&
|
|
107
|
+
typeof v.source_quality === "number" &&
|
|
108
|
+
typeof v.conversation_density === "number" &&
|
|
109
|
+
typeof v.repo_file_references === "number" &&
|
|
110
|
+
typeof v.decision_language === "number" &&
|
|
111
|
+
typeof v.model_judgment === "number" &&
|
|
112
|
+
typeof v.total === "number");
|
|
113
|
+
}
|
|
114
|
+
function isScoringDebug(value) {
|
|
115
|
+
if (!value || typeof value !== "object")
|
|
116
|
+
return false;
|
|
117
|
+
const v = value;
|
|
118
|
+
return isScoreBreakdown(v.score_breakdown) && Array.isArray(v.signals);
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=triage-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-provider.js","sourceRoot":"","sources":["../../../src/capture/triage-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triage entry point. Re-exports the Slice 5 contract and provides
|
|
3
|
+
* a default Codex-CLI-backed `triageConversation()` for callers that
|
|
4
|
+
* don't manage their own provider lifecycle (e.g. auto-capture).
|
|
5
|
+
*
|
|
6
|
+
* Batch operators that explicitly need OpenAI should construct an
|
|
7
|
+
* OpenAITriageProvider directly, wrap it with withBatchGuards(), and
|
|
8
|
+
* reuse it across the batch so cost cap + parallelism are enforced at
|
|
9
|
+
* the batch boundary.
|
|
10
|
+
*/
|
|
11
|
+
import type { TriageInput, TriageProvider, TriageResult } from "./triage-provider.js";
|
|
12
|
+
export { TRIAGE_VERSION, BatchCostExceededError, normalizeTriageResult, } from "./triage-provider.js";
|
|
13
|
+
export type { TriageDecision, TriageInput, TriageProvider, TriageResult, } from "./triage-provider.js";
|
|
14
|
+
export { ARCHIVE_ONLY_THRESHOLD, PROMOTE_TO_EXTRACT_THRESHOLD, decisionToLane, laneFromScore, laneToDecision, resolveLane, scoreHistoricalTriage, } from "./triage-lane.js";
|
|
15
|
+
export type { TriageLane, TriageScoreBreakdown, TriageScoringDebug, } from "./triage-lane.js";
|
|
16
|
+
/**
|
|
17
|
+
* Test-only seam: install a custom provider as the module default.
|
|
18
|
+
* Call with `null` to reset to the Codex-CLI-backed provider.
|
|
19
|
+
*/
|
|
20
|
+
export declare function setDefaultTriageProvider(provider: TriageProvider | null): void;
|
|
21
|
+
/**
|
|
22
|
+
* Triage a conversation using the default Codex CLI provider.
|
|
23
|
+
*/
|
|
24
|
+
export declare function triageConversation(content: string): Promise<TriageResult>;
|
|
25
|
+
/**
|
|
26
|
+
* Triage with a caller-supplied provider. Used when the caller manages
|
|
27
|
+
* batch budget + parallelism, or wants to inject a stub.
|
|
28
|
+
*/
|
|
29
|
+
export declare function triageWith(provider: TriageProvider, input: TriageInput): Promise<TriageResult>;
|
|
30
|
+
//# sourceMappingURL=triage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage.d.ts","sourceRoot":"","sources":["../../../src/capture/triage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,cAAc,EACd,aAAa,EACb,cAAc,EACd,WAAW,EACX,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,UAAU,EACV,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAkB1B;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,GAAG,IAAI,CAE9E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,YAAY,CAAC,CAEvB"}
|