@calliopelabs/cli 3.0.0 → 3.2.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.md +54 -7
- package/dist/acp.d.ts +1 -4
- package/dist/acp.d.ts.map +1 -1
- package/dist/acp.js +118 -217
- package/dist/acp.js.map +1 -1
- package/dist/approvals/commands.d.ts +35 -0
- package/dist/approvals/commands.d.ts.map +1 -0
- package/dist/approvals/commands.js +51 -0
- package/dist/approvals/commands.js.map +1 -0
- package/dist/approvals/index.d.ts +6 -0
- package/dist/approvals/index.d.ts.map +1 -0
- package/dist/approvals/index.js +6 -0
- package/dist/approvals/index.js.map +1 -0
- package/dist/approvals/queue.d.ts +18 -0
- package/dist/approvals/queue.d.ts.map +1 -0
- package/dist/approvals/queue.js +46 -0
- package/dist/approvals/queue.js.map +1 -0
- package/dist/approvals/request.d.ts +13 -0
- package/dist/approvals/request.d.ts.map +1 -0
- package/dist/approvals/request.js +102 -0
- package/dist/approvals/request.js.map +1 -0
- package/dist/approvals/store.d.ts +24 -0
- package/dist/approvals/store.d.ts.map +1 -0
- package/dist/approvals/store.js +229 -0
- package/dist/approvals/store.js.map +1 -0
- package/dist/approvals/types.d.ts +27 -0
- package/dist/approvals/types.d.ts.map +1 -0
- package/dist/approvals/types.js +4 -0
- package/dist/approvals/types.js.map +1 -0
- package/dist/auto-compressor.d.ts +3 -2
- package/dist/auto-compressor.d.ts.map +1 -1
- package/dist/auto-compressor.js +9 -9
- package/dist/auto-compressor.js.map +1 -1
- package/dist/bin.d.ts.map +1 -1
- package/dist/bin.js +125 -22
- package/dist/bin.js.map +1 -1
- package/dist/brain/access.d.ts +65 -0
- package/dist/brain/access.d.ts.map +1 -0
- package/dist/brain/access.js +216 -0
- package/dist/brain/access.js.map +1 -0
- package/dist/brain/actions.d.ts +120 -0
- package/dist/brain/actions.d.ts.map +1 -0
- package/dist/brain/actions.js +270 -0
- package/dist/brain/actions.js.map +1 -0
- package/dist/brain/cli.d.ts +17 -0
- package/dist/brain/cli.d.ts.map +1 -0
- package/dist/brain/cli.js +206 -0
- package/dist/brain/cli.js.map +1 -0
- package/dist/brain/index.d.ts +16 -0
- package/dist/brain/index.d.ts.map +1 -0
- package/dist/brain/index.js +16 -0
- package/dist/brain/index.js.map +1 -0
- package/dist/brain/journal.d.ts +17 -0
- package/dist/brain/journal.d.ts.map +1 -0
- package/dist/brain/journal.js +189 -0
- package/dist/brain/journal.js.map +1 -0
- package/dist/brain/kg.d.ts +23 -0
- package/dist/brain/kg.d.ts.map +1 -0
- package/dist/brain/kg.js +36 -0
- package/dist/brain/kg.js.map +1 -0
- package/dist/brain/presentation.d.ts +3 -0
- package/dist/brain/presentation.d.ts.map +1 -0
- package/dist/brain/presentation.js +48 -0
- package/dist/brain/presentation.js.map +1 -0
- package/dist/brain/queries.d.ts +179 -0
- package/dist/brain/queries.d.ts.map +1 -0
- package/dist/brain/queries.js +210 -0
- package/dist/brain/queries.js.map +1 -0
- package/dist/brain/run-ingest.d.ts +29 -0
- package/dist/brain/run-ingest.d.ts.map +1 -0
- package/dist/brain/run-ingest.js +200 -0
- package/dist/brain/run-ingest.js.map +1 -0
- package/dist/brain/sqlite.d.ts +19 -0
- package/dist/brain/sqlite.d.ts.map +1 -0
- package/dist/brain/sqlite.js +252 -0
- package/dist/brain/sqlite.js.map +1 -0
- package/dist/brain/store.d.ts +31 -0
- package/dist/brain/store.d.ts.map +1 -0
- package/dist/brain/store.js +324 -0
- package/dist/brain/store.js.map +1 -0
- package/dist/brain/tool-query.d.ts +6 -0
- package/dist/brain/tool-query.d.ts.map +1 -0
- package/dist/brain/tool-query.js +42 -0
- package/dist/brain/tool-query.js.map +1 -0
- package/dist/brain/tools.d.ts +13 -0
- package/dist/brain/tools.d.ts.map +1 -0
- package/dist/brain/tools.js +20 -0
- package/dist/brain/tools.js.map +1 -0
- package/dist/brain/transfer.d.ts +57 -0
- package/dist/brain/transfer.d.ts.map +1 -0
- package/dist/brain/transfer.js +266 -0
- package/dist/brain/transfer.js.map +1 -0
- package/dist/brain/types.d.ts +145 -0
- package/dist/brain/types.d.ts.map +1 -0
- package/dist/brain/types.js +38 -0
- package/dist/brain/types.js.map +1 -0
- package/dist/brain/validation.d.ts +15 -0
- package/dist/brain/validation.d.ts.map +1 -0
- package/dist/brain/validation.js +163 -0
- package/dist/brain/validation.js.map +1 -0
- package/dist/budget.d.ts +5 -4
- package/dist/budget.d.ts.map +1 -1
- package/dist/budget.js +16 -38
- package/dist/budget.js.map +1 -1
- package/dist/cancellation.d.ts +8 -0
- package/dist/cancellation.d.ts.map +1 -0
- package/dist/cancellation.js +42 -0
- package/dist/cancellation.js.map +1 -0
- package/dist/checkpoint.d.ts +2 -2
- package/dist/checkpoint.d.ts.map +1 -1
- package/dist/checkpoint.js +5 -5
- package/dist/checkpoint.js.map +1 -1
- package/dist/circuit-breaker/breaker.d.ts.map +1 -1
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +32 -8
- package/dist/config.js.map +1 -1
- package/dist/cost.js.map +1 -1
- package/dist/diff.js.map +1 -1
- package/dist/doctor.d.ts +30 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +124 -0
- package/dist/doctor.js.map +1 -0
- package/dist/env-expansion.js.map +1 -1
- package/dist/errors.d.ts +15 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +33 -9
- package/dist/errors.js.map +1 -1
- package/dist/execution/attribution.d.ts +17 -0
- package/dist/execution/attribution.d.ts.map +1 -0
- package/dist/execution/attribution.js +21 -0
- package/dist/execution/attribution.js.map +1 -0
- package/dist/execution/authority.d.ts +22 -0
- package/dist/execution/authority.d.ts.map +1 -0
- package/dist/execution/authority.js +134 -0
- package/dist/execution/authority.js.map +1 -0
- package/dist/execution/billing.d.ts +100 -0
- package/dist/execution/billing.d.ts.map +1 -0
- package/dist/execution/billing.js +166 -0
- package/dist/execution/billing.js.map +1 -0
- package/dist/execution/child-grants.d.ts +9 -0
- package/dist/execution/child-grants.d.ts.map +1 -0
- package/dist/execution/child-grants.js +55 -0
- package/dist/execution/child-grants.js.map +1 -0
- package/dist/execution/files.d.ts +6 -0
- package/dist/execution/files.d.ts.map +1 -0
- package/dist/execution/files.js +159 -0
- package/dist/execution/files.js.map +1 -0
- package/dist/execution/guard.d.ts +50 -0
- package/dist/execution/guard.d.ts.map +1 -0
- package/dist/execution/guard.js +158 -0
- package/dist/execution/guard.js.map +1 -0
- package/dist/execution/index.d.ts +12 -0
- package/dist/execution/index.d.ts.map +1 -0
- package/dist/execution/index.js +12 -0
- package/dist/execution/index.js.map +1 -0
- package/dist/execution/ledger.d.ts +23 -0
- package/dist/execution/ledger.d.ts.map +1 -0
- package/dist/execution/ledger.js +379 -0
- package/dist/execution/ledger.js.map +1 -0
- package/dist/execution/project-spend.d.ts +45 -0
- package/dist/execution/project-spend.d.ts.map +1 -0
- package/dist/execution/project-spend.js +274 -0
- package/dist/execution/project-spend.js.map +1 -0
- package/dist/execution/quote.d.ts +19 -0
- package/dist/execution/quote.d.ts.map +1 -0
- package/dist/execution/quote.js +116 -0
- package/dist/execution/quote.js.map +1 -0
- package/dist/execution/types.d.ts +113 -0
- package/dist/execution/types.d.ts.map +1 -0
- package/dist/execution/types.js +9 -0
- package/dist/execution/types.js.map +1 -0
- package/dist/execution/writer-recovery.d.ts +3 -0
- package/dist/execution/writer-recovery.d.ts.map +1 -0
- package/dist/execution/writer-recovery.js +85 -0
- package/dist/execution/writer-recovery.js.map +1 -0
- package/dist/fuzzy-search.js.map +1 -1
- package/dist/goals/accounting.d.ts +69 -0
- package/dist/goals/accounting.d.ts.map +1 -0
- package/dist/goals/accounting.js +100 -0
- package/dist/goals/accounting.js.map +1 -0
- package/dist/goals/actions.d.ts +33 -0
- package/dist/goals/actions.d.ts.map +1 -0
- package/dist/goals/actions.js +261 -0
- package/dist/goals/actions.js.map +1 -0
- package/dist/goals/authority.d.ts +9 -0
- package/dist/goals/authority.d.ts.map +1 -0
- package/dist/goals/authority.js +47 -0
- package/dist/goals/authority.js.map +1 -0
- package/dist/goals/cli.d.ts +10 -0
- package/dist/goals/cli.d.ts.map +1 -0
- package/dist/goals/cli.js +169 -0
- package/dist/goals/cli.js.map +1 -0
- package/dist/goals/contracts.d.ts +18 -0
- package/dist/goals/contracts.d.ts.map +1 -0
- package/dist/goals/contracts.js +127 -0
- package/dist/goals/contracts.js.map +1 -0
- package/dist/goals/index.d.ts +17 -0
- package/dist/goals/index.d.ts.map +1 -0
- package/dist/goals/index.js +16 -0
- package/dist/goals/index.js.map +1 -0
- package/dist/goals/journal.d.ts +5 -0
- package/dist/goals/journal.d.ts.map +1 -0
- package/dist/goals/journal.js +142 -0
- package/dist/goals/journal.js.map +1 -0
- package/dist/goals/metrics.d.ts +53 -0
- package/dist/goals/metrics.d.ts.map +1 -0
- package/dist/goals/metrics.js +141 -0
- package/dist/goals/metrics.js.map +1 -0
- package/dist/goals/repair.d.ts +10 -0
- package/dist/goals/repair.d.ts.map +1 -0
- package/dist/goals/repair.js +50 -0
- package/dist/goals/repair.js.map +1 -0
- package/dist/goals/routing.d.ts +18 -0
- package/dist/goals/routing.d.ts.map +1 -0
- package/dist/goals/routing.js +60 -0
- package/dist/goals/routing.js.map +1 -0
- package/dist/goals/store.d.ts +30 -0
- package/dist/goals/store.d.ts.map +1 -0
- package/dist/goals/store.js +314 -0
- package/dist/goals/store.js.map +1 -0
- package/dist/goals/supervised-cli.d.ts +5 -0
- package/dist/goals/supervised-cli.d.ts.map +1 -0
- package/dist/goals/supervised-cli.js +44 -0
- package/dist/goals/supervised-cli.js.map +1 -0
- package/dist/goals/supervised.d.ts +8 -0
- package/dist/goals/supervised.d.ts.map +1 -0
- package/dist/goals/supervised.js +65 -0
- package/dist/goals/supervised.js.map +1 -0
- package/dist/goals/team.d.ts +8 -0
- package/dist/goals/team.d.ts.map +1 -0
- package/dist/goals/team.js +64 -0
- package/dist/goals/team.js.map +1 -0
- package/dist/goals/types.d.ts +174 -0
- package/dist/goals/types.d.ts.map +1 -0
- package/dist/goals/types.js +2 -0
- package/dist/goals/types.js.map +1 -0
- package/dist/goals/validation.d.ts +17 -0
- package/dist/goals/validation.d.ts.map +1 -0
- package/dist/goals/validation.js +172 -0
- package/dist/goals/validation.js.map +1 -0
- package/dist/headless.d.ts +1 -0
- package/dist/headless.d.ts.map +1 -1
- package/dist/headless.js +98 -275
- package/dist/headless.js.map +1 -1
- package/dist/health/index.d.ts +5 -0
- package/dist/health/index.d.ts.map +1 -0
- package/dist/health/index.js +5 -0
- package/dist/health/index.js.map +1 -0
- package/dist/health/store.d.ts +24 -0
- package/dist/health/store.d.ts.map +1 -0
- package/dist/health/store.js +190 -0
- package/dist/health/store.js.map +1 -0
- package/dist/health/summary.d.ts +10 -0
- package/dist/health/summary.d.ts.map +1 -0
- package/dist/health/summary.js +95 -0
- package/dist/health/summary.js.map +1 -0
- package/dist/health/target.d.ts +3 -0
- package/dist/health/target.d.ts.map +1 -0
- package/dist/health/target.js +53 -0
- package/dist/health/target.js.map +1 -0
- package/dist/health/types.d.ts +72 -0
- package/dist/health/types.d.ts.map +1 -0
- package/dist/health/types.js +2 -0
- package/dist/health/types.js.map +1 -0
- package/dist/hooks.d.ts +7 -2
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +35 -17
- package/dist/hooks.js.map +1 -1
- package/dist/improvement/actions.d.ts +27 -0
- package/dist/improvement/actions.d.ts.map +1 -0
- package/dist/improvement/actions.js +116 -0
- package/dist/improvement/actions.js.map +1 -0
- package/dist/improvement/cli.d.ts +9 -0
- package/dist/improvement/cli.d.ts.map +1 -0
- package/dist/improvement/cli.js +58 -0
- package/dist/improvement/cli.js.map +1 -0
- package/dist/improvement/feedback.d.ts +30 -0
- package/dist/improvement/feedback.d.ts.map +1 -0
- package/dist/improvement/feedback.js +7 -0
- package/dist/improvement/feedback.js.map +1 -0
- package/dist/improvement/index.d.ts +7 -0
- package/dist/improvement/index.d.ts.map +1 -0
- package/dist/improvement/index.js +7 -0
- package/dist/improvement/index.js.map +1 -0
- package/dist/improvement/metrics.d.ts +4 -0
- package/dist/improvement/metrics.d.ts.map +1 -0
- package/dist/improvement/metrics.js +38 -0
- package/dist/improvement/metrics.js.map +1 -0
- package/dist/improvement/projection.d.ts +7 -0
- package/dist/improvement/projection.d.ts.map +1 -0
- package/dist/improvement/projection.js +135 -0
- package/dist/improvement/projection.js.map +1 -0
- package/dist/improvement/types.d.ts +115 -0
- package/dist/improvement/types.d.ts.map +1 -0
- package/dist/improvement/types.js +2 -0
- package/dist/improvement/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +10 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +93 -0
- package/dist/instructions.js.map +1 -0
- package/dist/isolation/contracts.d.ts +42 -0
- package/dist/isolation/contracts.d.ts.map +1 -0
- package/dist/isolation/contracts.js +33 -0
- package/dist/isolation/contracts.js.map +1 -0
- package/dist/isolation/coordinator.d.ts +10 -0
- package/dist/isolation/coordinator.d.ts.map +1 -0
- package/dist/isolation/coordinator.js +79 -0
- package/dist/isolation/coordinator.js.map +1 -0
- package/dist/isolation/index.d.ts +5 -0
- package/dist/isolation/index.d.ts.map +1 -0
- package/dist/isolation/index.js +5 -0
- package/dist/isolation/index.js.map +1 -0
- package/dist/isolation/process.d.ts +11 -0
- package/dist/isolation/process.d.ts.map +1 -0
- package/dist/isolation/process.js +131 -0
- package/dist/isolation/process.js.map +1 -0
- package/dist/isolation/worktree.d.ts +25 -0
- package/dist/isolation/worktree.d.ts.map +1 -0
- package/dist/isolation/worktree.js +282 -0
- package/dist/isolation/worktree.js.map +1 -0
- package/dist/iteration-ledger.d.ts.map +1 -1
- package/dist/iteration-ledger.js.map +1 -1
- package/dist/local-model.d.ts +2 -2
- package/dist/local-model.d.ts.map +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +5 -1
- package/dist/memory.js.map +1 -1
- package/dist/model-detection.d.ts +14 -18
- package/dist/model-detection.d.ts.map +1 -1
- package/dist/model-detection.js +287 -149
- package/dist/model-detection.js.map +1 -1
- package/dist/models/index.d.ts +3 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +3 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/metadata.d.ts +43 -0
- package/dist/models/metadata.d.ts.map +1 -0
- package/dist/models/metadata.js +72 -0
- package/dist/models/metadata.js.map +1 -0
- package/dist/models/openrouter.d.ts +6 -0
- package/dist/models/openrouter.d.ts.map +1 -0
- package/dist/models/openrouter.js +38 -0
- package/dist/models/openrouter.js.map +1 -0
- package/dist/orchestration/accounting.d.ts +35 -0
- package/dist/orchestration/accounting.d.ts.map +1 -0
- package/dist/orchestration/accounting.js +27 -0
- package/dist/orchestration/accounting.js.map +1 -0
- package/dist/orchestration/actions.d.ts +23 -0
- package/dist/orchestration/actions.d.ts.map +1 -0
- package/dist/orchestration/actions.js +65 -0
- package/dist/orchestration/actions.js.map +1 -0
- package/dist/orchestration/cli.d.ts +28 -0
- package/dist/orchestration/cli.d.ts.map +1 -0
- package/dist/orchestration/cli.js +178 -0
- package/dist/orchestration/cli.js.map +1 -0
- package/dist/orchestration/coordinator-actions.d.ts +15 -0
- package/dist/orchestration/coordinator-actions.d.ts.map +1 -0
- package/dist/orchestration/coordinator-actions.js +79 -0
- package/dist/orchestration/coordinator-actions.js.map +1 -0
- package/dist/orchestration/coordinator-types.d.ts +193 -0
- package/dist/orchestration/coordinator-types.d.ts.map +1 -0
- package/dist/orchestration/coordinator-types.js +2 -0
- package/dist/orchestration/coordinator-types.js.map +1 -0
- package/dist/orchestration/coordinator.d.ts +32 -0
- package/dist/orchestration/coordinator.d.ts.map +1 -0
- package/dist/orchestration/coordinator.js +405 -0
- package/dist/orchestration/coordinator.js.map +1 -0
- package/dist/orchestration/execution-cli.d.ts +11 -0
- package/dist/orchestration/execution-cli.d.ts.map +1 -0
- package/dist/orchestration/execution-cli.js +183 -0
- package/dist/orchestration/execution-cli.js.map +1 -0
- package/dist/orchestration/execution-journal.d.ts +15 -0
- package/dist/orchestration/execution-journal.d.ts.map +1 -0
- package/dist/orchestration/execution-journal.js +477 -0
- package/dist/orchestration/execution-journal.js.map +1 -0
- package/dist/orchestration/execution-store.d.ts +39 -0
- package/dist/orchestration/execution-store.d.ts.map +1 -0
- package/dist/orchestration/execution-store.js +325 -0
- package/dist/orchestration/execution-store.js.map +1 -0
- package/dist/orchestration/execution.d.ts +8 -0
- package/dist/orchestration/execution.d.ts.map +1 -0
- package/dist/orchestration/execution.js +47 -0
- package/dist/orchestration/execution.js.map +1 -0
- package/dist/orchestration/index.d.ts +20 -0
- package/dist/orchestration/index.d.ts.map +1 -0
- package/dist/orchestration/index.js +17 -0
- package/dist/orchestration/index.js.map +1 -0
- package/dist/orchestration/progress.d.ts +19 -0
- package/dist/orchestration/progress.d.ts.map +1 -0
- package/dist/orchestration/progress.js +20 -0
- package/dist/orchestration/progress.js.map +1 -0
- package/dist/orchestration/recovery.d.ts +4 -0
- package/dist/orchestration/recovery.d.ts.map +1 -0
- package/dist/orchestration/recovery.js +121 -0
- package/dist/orchestration/recovery.js.map +1 -0
- package/dist/orchestration/request-accounting.d.ts +35 -0
- package/dist/orchestration/request-accounting.d.ts.map +1 -0
- package/dist/orchestration/request-accounting.js +71 -0
- package/dist/orchestration/request-accounting.js.map +1 -0
- package/dist/orchestration/routing.d.ts +20 -0
- package/dist/orchestration/routing.d.ts.map +1 -0
- package/dist/orchestration/routing.js +38 -0
- package/dist/orchestration/routing.js.map +1 -0
- package/dist/orchestration/store.d.ts +26 -0
- package/dist/orchestration/store.d.ts.map +1 -0
- package/dist/orchestration/store.js +381 -0
- package/dist/orchestration/store.js.map +1 -0
- package/dist/orchestration/types.d.ts +201 -0
- package/dist/orchestration/types.d.ts.map +1 -0
- package/dist/orchestration/types.js +11 -0
- package/dist/orchestration/types.js.map +1 -0
- package/dist/orchestration/validation.d.ts +29 -0
- package/dist/orchestration/validation.d.ts.map +1 -0
- package/dist/orchestration/validation.js +440 -0
- package/dist/orchestration/validation.js.map +1 -0
- package/dist/orchestration/verification.d.ts +30 -0
- package/dist/orchestration/verification.d.ts.map +1 -0
- package/dist/orchestration/verification.js +204 -0
- package/dist/orchestration/verification.js.map +1 -0
- package/dist/orchestration/worker-context.d.ts +33 -0
- package/dist/orchestration/worker-context.d.ts.map +1 -0
- package/dist/orchestration/worker-context.js +31 -0
- package/dist/orchestration/worker-context.js.map +1 -0
- package/dist/parallel-tools.js.map +1 -1
- package/dist/plugins.d.ts.map +1 -1
- package/dist/policy.d.ts +1 -0
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +25 -5
- package/dist/policy.js.map +1 -1
- package/dist/preferences/controls.d.ts +21 -0
- package/dist/preferences/controls.d.ts.map +1 -0
- package/dist/preferences/controls.js +36 -0
- package/dist/preferences/controls.js.map +1 -0
- package/dist/preferences/flags.d.ts +8 -0
- package/dist/preferences/flags.d.ts.map +1 -0
- package/dist/preferences/flags.js +27 -0
- package/dist/preferences/flags.js.map +1 -0
- package/dist/preferences/index.d.ts +9 -0
- package/dist/preferences/index.d.ts.map +1 -0
- package/dist/preferences/index.js +9 -0
- package/dist/preferences/index.js.map +1 -0
- package/dist/preferences/once.d.ts +8 -0
- package/dist/preferences/once.d.ts.map +1 -0
- package/dist/preferences/once.js +28 -0
- package/dist/preferences/once.js.map +1 -0
- package/dist/preferences/resolve.d.ts +14 -0
- package/dist/preferences/resolve.d.ts.map +1 -0
- package/dist/preferences/resolve.js +58 -0
- package/dist/preferences/resolve.js.map +1 -0
- package/dist/preferences/store.d.ts +19 -0
- package/dist/preferences/store.d.ts.map +1 -0
- package/dist/preferences/store.js +147 -0
- package/dist/preferences/store.js.map +1 -0
- package/dist/preferences/submission.d.ts +16 -0
- package/dist/preferences/submission.d.ts.map +1 -0
- package/dist/preferences/submission.js +29 -0
- package/dist/preferences/submission.js.map +1 -0
- package/dist/preferences/types.d.ts +23 -0
- package/dist/preferences/types.d.ts.map +1 -0
- package/dist/preferences/types.js +2 -0
- package/dist/preferences/types.js.map +1 -0
- package/dist/preferences/validate.d.ts +3 -0
- package/dist/preferences/validate.d.ts.map +1 -0
- package/dist/preferences/validate.js +15 -0
- package/dist/preferences/validate.js.map +1 -0
- package/dist/process-cancellation.d.ts +6 -0
- package/dist/process-cancellation.d.ts.map +1 -0
- package/dist/process-cancellation.js +39 -0
- package/dist/process-cancellation.js.map +1 -0
- package/dist/providers/anthropic.d.ts +7 -2
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +72 -41
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/bedrock.d.ts +1 -1
- package/dist/providers/bedrock.d.ts.map +1 -1
- package/dist/providers/bedrock.js +39 -23
- package/dist/providers/bedrock.js.map +1 -1
- package/dist/providers/compat.d.ts +4 -3
- package/dist/providers/compat.d.ts.map +1 -1
- package/dist/providers/compat.js +49 -31
- package/dist/providers/compat.js.map +1 -1
- package/dist/providers/deepseek-reasoning.d.ts +64 -0
- package/dist/providers/deepseek-reasoning.d.ts.map +1 -0
- package/dist/providers/deepseek-reasoning.js +28 -0
- package/dist/providers/deepseek-reasoning.js.map +1 -0
- package/dist/providers/google.d.ts +4 -3
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +128 -19
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +216 -36
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/ollama.d.ts.map +1 -1
- package/dist/providers/ollama.js +79 -43
- package/dist/providers/ollama.js.map +1 -1
- package/dist/providers/openai.d.ts +12 -12
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +54 -46
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/openrouter-bounds.d.ts +22 -0
- package/dist/providers/openrouter-bounds.d.ts.map +1 -0
- package/dist/providers/openrouter-bounds.js +16 -0
- package/dist/providers/openrouter-bounds.js.map +1 -0
- package/dist/providers/stream-attempt.d.ts +29 -0
- package/dist/providers/stream-attempt.d.ts.map +1 -0
- package/dist/providers/stream-attempt.js +63 -0
- package/dist/providers/stream-attempt.js.map +1 -0
- package/dist/providers/types.d.ts +40 -4
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +19 -0
- package/dist/providers/types.js.map +1 -1
- package/dist/replay.d.ts.map +1 -1
- package/dist/replay.js +16 -0
- package/dist/replay.js.map +1 -1
- package/dist/risk.d.ts.map +1 -1
- package/dist/risk.js +5 -0
- package/dist/risk.js.map +1 -1
- package/dist/router.d.ts +7 -110
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +0 -451
- package/dist/router.js.map +1 -1
- package/dist/routing/index.d.ts +6 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +5 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/prompt.d.ts +4 -0
- package/dist/routing/prompt.d.ts.map +1 -0
- package/dist/routing/prompt.js +14 -0
- package/dist/routing/prompt.js.map +1 -0
- package/dist/routing/select.d.ts +9 -0
- package/dist/routing/select.d.ts.map +1 -0
- package/dist/routing/select.js +279 -0
- package/dist/routing/select.js.map +1 -0
- package/dist/routing/smart.d.ts +31 -0
- package/dist/routing/smart.d.ts.map +1 -0
- package/dist/routing/smart.js +46 -0
- package/dist/routing/smart.js.map +1 -0
- package/dist/routing/types.d.ts +79 -0
- package/dist/routing/types.d.ts.map +1 -0
- package/dist/routing/types.js +2 -0
- package/dist/routing/types.js.map +1 -0
- package/dist/runlog.d.ts +32 -4
- package/dist/runlog.d.ts.map +1 -1
- package/dist/runlog.js +22 -6
- package/dist/runlog.js.map +1 -1
- package/dist/runtime/index.d.ts +6 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +6 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/permissions.d.ts +21 -0
- package/dist/runtime/permissions.d.ts.map +1 -0
- package/dist/runtime/permissions.js +110 -0
- package/dist/runtime/permissions.js.map +1 -0
- package/dist/runtime/repair.d.ts +20 -0
- package/dist/runtime/repair.d.ts.map +1 -0
- package/dist/runtime/repair.js +50 -0
- package/dist/runtime/repair.js.map +1 -0
- package/dist/runtime/tool-retry.d.ts +3 -0
- package/dist/runtime/tool-retry.d.ts.map +1 -0
- package/dist/runtime/tool-retry.js +12 -0
- package/dist/runtime/tool-retry.js.map +1 -0
- package/dist/runtime/turn.d.ts +97 -0
- package/dist/runtime/turn.d.ts.map +1 -0
- package/dist/runtime/turn.js +437 -0
- package/dist/runtime/turn.js.map +1 -0
- package/dist/runtime/types.d.ts +11 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +5 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/sandbox/docker.d.ts +4 -4
- package/dist/sandbox/docker.d.ts.map +1 -1
- package/dist/sandbox/docker.js +55 -16
- package/dist/sandbox/docker.js.map +1 -1
- package/dist/sandbox/native.d.ts +1 -0
- package/dist/sandbox/native.d.ts.map +1 -1
- package/dist/sandbox/native.js +11 -2
- package/dist/sandbox/native.js.map +1 -1
- package/dist/scope.d.ts +5 -9
- package/dist/scope.d.ts.map +1 -1
- package/dist/scope.js +43 -20
- package/dist/scope.js.map +1 -1
- package/dist/scuttlebot/client.d.ts.map +1 -1
- package/dist/scuttlebot/client.js.map +1 -1
- package/dist/scuttlebot/http-client.d.ts.map +1 -1
- package/dist/scuttlebot/irc-client.d.ts +5 -5
- package/dist/scuttlebot/irc-client.d.ts.map +1 -1
- package/dist/scuttlebot/irc-client.js.map +1 -1
- package/dist/session-management/actions.d.ts +28 -0
- package/dist/session-management/actions.d.ts.map +1 -0
- package/dist/session-management/actions.js +78 -0
- package/dist/session-management/actions.js.map +1 -0
- package/dist/session-management/cli.d.ts +24 -0
- package/dist/session-management/cli.d.ts.map +1 -0
- package/dist/session-management/cli.js +92 -0
- package/dist/session-management/cli.js.map +1 -0
- package/dist/session-management/files.d.ts +5 -0
- package/dist/session-management/files.d.ts.map +1 -0
- package/dist/session-management/files.js +92 -0
- package/dist/session-management/files.js.map +1 -0
- package/dist/session-management/index.d.ts +7 -0
- package/dist/session-management/index.d.ts.map +1 -0
- package/dist/session-management/index.js +7 -0
- package/dist/session-management/index.js.map +1 -0
- package/dist/session-management/permissions.d.ts +12 -0
- package/dist/session-management/permissions.d.ts.map +1 -0
- package/dist/session-management/permissions.js +33 -0
- package/dist/session-management/permissions.js.map +1 -0
- package/dist/session-management/presentation.d.ts +5 -0
- package/dist/session-management/presentation.d.ts.map +1 -0
- package/dist/session-management/presentation.js +10 -0
- package/dist/session-management/presentation.js.map +1 -0
- package/dist/session-management/transfer.d.ts +9 -0
- package/dist/session-management/transfer.d.ts.map +1 -0
- package/dist/session-management/transfer.js +39 -0
- package/dist/session-management/transfer.js.map +1 -0
- package/dist/sessions/context.d.ts +4 -0
- package/dist/sessions/context.d.ts.map +1 -0
- package/dist/sessions/context.js +6 -0
- package/dist/sessions/context.js.map +1 -0
- package/dist/sessions/format.d.ts +38 -0
- package/dist/sessions/format.d.ts.map +1 -0
- package/dist/sessions/format.js +116 -0
- package/dist/sessions/format.js.map +1 -0
- package/dist/sessions/history.d.ts +37 -0
- package/dist/sessions/history.d.ts.map +1 -0
- package/dist/sessions/history.js +197 -0
- package/dist/sessions/history.js.map +1 -0
- package/dist/sessions/index.d.ts +8 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +8 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/output.d.ts +31 -0
- package/dist/sessions/output.d.ts.map +1 -0
- package/dist/sessions/output.js +115 -0
- package/dist/sessions/output.js.map +1 -0
- package/dist/sessions/portable.d.ts +26 -0
- package/dist/sessions/portable.d.ts.map +1 -0
- package/dist/sessions/portable.js +105 -0
- package/dist/sessions/portable.js.map +1 -0
- package/dist/sessions/snapshot.d.ts +11 -0
- package/dist/sessions/snapshot.d.ts.map +1 -0
- package/dist/sessions/snapshot.js +118 -0
- package/dist/sessions/snapshot.js.map +1 -0
- package/dist/sessions/tool-state.d.ts +11 -0
- package/dist/sessions/tool-state.d.ts.map +1 -0
- package/dist/sessions/tool-state.js +152 -0
- package/dist/sessions/tool-state.js.map +1 -0
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +16 -5
- package/dist/setup.js.map +1 -1
- package/dist/spawning/actions.d.ts +23 -0
- package/dist/spawning/actions.d.ts.map +1 -0
- package/dist/spawning/actions.js +120 -0
- package/dist/spawning/actions.js.map +1 -0
- package/dist/spawning/authority.d.ts +15 -0
- package/dist/spawning/authority.d.ts.map +1 -0
- package/dist/spawning/authority.js +16 -0
- package/dist/spawning/authority.js.map +1 -0
- package/dist/spawning/cli.d.ts +4 -0
- package/dist/spawning/cli.d.ts.map +1 -0
- package/dist/spawning/cli.js +46 -0
- package/dist/spawning/cli.js.map +1 -0
- package/dist/spawning/execution.d.ts +13 -0
- package/dist/spawning/execution.d.ts.map +1 -0
- package/dist/spawning/execution.js +59 -0
- package/dist/spawning/execution.js.map +1 -0
- package/dist/spawning/index.d.ts +8 -0
- package/dist/spawning/index.d.ts.map +1 -0
- package/dist/spawning/index.js +8 -0
- package/dist/spawning/index.js.map +1 -0
- package/dist/spawning/store.d.ts +12 -0
- package/dist/spawning/store.d.ts.map +1 -0
- package/dist/spawning/store.js +93 -0
- package/dist/spawning/store.js.map +1 -0
- package/dist/spawning/types.d.ts +34 -0
- package/dist/spawning/types.d.ts.map +1 -0
- package/dist/spawning/types.js +2 -0
- package/dist/spawning/types.js.map +1 -0
- package/dist/spawning/validation.d.ts +14 -0
- package/dist/spawning/validation.d.ts.map +1 -0
- package/dist/spawning/validation.js +95 -0
- package/dist/spawning/validation.js.map +1 -0
- package/dist/storage.d.ts +29 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +112 -40
- package/dist/storage.js.map +1 -1
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js.map +1 -1
- package/dist/styles.d.ts +56 -56
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js.map +1 -1
- package/dist/summarization.d.ts.map +1 -1
- package/dist/summarization.js.map +1 -1
- package/dist/supervision/approval.d.ts +4 -0
- package/dist/supervision/approval.d.ts.map +1 -0
- package/dist/supervision/approval.js +7 -0
- package/dist/supervision/approval.js.map +1 -0
- package/dist/supervision/availability.d.ts +34 -0
- package/dist/supervision/availability.d.ts.map +1 -0
- package/dist/supervision/availability.js +44 -0
- package/dist/supervision/availability.js.map +1 -0
- package/dist/supervision/context.d.ts +36 -0
- package/dist/supervision/context.d.ts.map +1 -0
- package/dist/supervision/context.js +52 -0
- package/dist/supervision/context.js.map +1 -0
- package/dist/supervision/contracts.d.ts +7 -0
- package/dist/supervision/contracts.d.ts.map +1 -0
- package/dist/supervision/contracts.js +86 -0
- package/dist/supervision/contracts.js.map +1 -0
- package/dist/supervision/effects.d.ts +15 -0
- package/dist/supervision/effects.d.ts.map +1 -0
- package/dist/supervision/effects.js +19 -0
- package/dist/supervision/effects.js.map +1 -0
- package/dist/supervision/evidence.d.ts +32 -0
- package/dist/supervision/evidence.d.ts.map +1 -0
- package/dist/supervision/evidence.js +68 -0
- package/dist/supervision/evidence.js.map +1 -0
- package/dist/supervision/health.d.ts +16 -0
- package/dist/supervision/health.d.ts.map +1 -0
- package/dist/supervision/health.js +86 -0
- package/dist/supervision/health.js.map +1 -0
- package/dist/supervision/index.d.ts +13 -0
- package/dist/supervision/index.d.ts.map +1 -0
- package/dist/supervision/index.js +13 -0
- package/dist/supervision/index.js.map +1 -0
- package/dist/supervision/journal.d.ts +16 -0
- package/dist/supervision/journal.d.ts.map +1 -0
- package/dist/supervision/journal.js +311 -0
- package/dist/supervision/journal.js.map +1 -0
- package/dist/supervision/receipts.d.ts +4 -0
- package/dist/supervision/receipts.d.ts.map +1 -0
- package/dist/supervision/receipts.js +21 -0
- package/dist/supervision/receipts.js.map +1 -0
- package/dist/supervision/reply.d.ts +12 -0
- package/dist/supervision/reply.d.ts.map +1 -0
- package/dist/supervision/reply.js +50 -0
- package/dist/supervision/reply.js.map +1 -0
- package/dist/supervision/runtime.d.ts +8 -0
- package/dist/supervision/runtime.d.ts.map +1 -0
- package/dist/supervision/runtime.js +188 -0
- package/dist/supervision/runtime.js.map +1 -0
- package/dist/supervision/types.d.ts +174 -0
- package/dist/supervision/types.d.ts.map +1 -0
- package/dist/supervision/types.js +2 -0
- package/dist/supervision/types.js.map +1 -0
- package/dist/terminal-image.js.map +1 -1
- package/dist/tools.d.ts +12 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +131 -23
- package/dist/tools.js.map +1 -1
- package/dist/trust.js.map +1 -1
- package/dist/turn-controller.d.ts +12 -0
- package/dist/turn-controller.d.ts.map +1 -0
- package/dist/turn-controller.js +51 -0
- package/dist/turn-controller.js.map +1 -0
- package/dist/types.d.ts +7 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/ui/agent.d.ts +11 -10
- package/dist/ui/agent.d.ts.map +1 -1
- package/dist/ui/agent.js +293 -897
- package/dist/ui/agent.js.map +1 -1
- package/dist/ui/chat-input.d.ts +2 -1
- package/dist/ui/chat-input.d.ts.map +1 -1
- package/dist/ui/commands.d.ts +20 -2
- package/dist/ui/commands.d.ts.map +1 -1
- package/dist/ui/commands.js +208 -155
- package/dist/ui/commands.js.map +1 -1
- package/dist/ui/completions.d.ts.map +1 -1
- package/dist/ui/completions.js +16 -5
- package/dist/ui/completions.js.map +1 -1
- package/dist/ui/components.d.ts +6 -6
- package/dist/ui/components.d.ts.map +1 -1
- package/dist/ui/debug-log.d.ts.map +1 -1
- package/dist/ui/error-boundary.d.ts +1 -1
- package/dist/ui/error-boundary.d.ts.map +1 -1
- package/dist/ui/frame.d.ts +1 -1
- package/dist/ui/frame.d.ts.map +1 -1
- package/dist/ui/index.d.ts +7 -3
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +13 -11
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/messages.d.ts +1 -1
- package/dist/ui/messages.d.ts.map +1 -1
- package/dist/ui/messages.js +5 -0
- package/dist/ui/messages.js.map +1 -1
- package/dist/ui/modals/index.d.ts +1 -0
- package/dist/ui/modals/index.d.ts.map +1 -1
- package/dist/ui/modals/index.js +1 -0
- package/dist/ui/modals/index.js.map +1 -1
- package/dist/ui/modals/prompts.d.ts +9 -11
- package/dist/ui/modals/prompts.d.ts.map +1 -1
- package/dist/ui/modals/prompts.js +15 -11
- package/dist/ui/modals/prompts.js.map +1 -1
- package/dist/ui/modals/selectors.d.ts +5 -3
- package/dist/ui/modals/selectors.d.ts.map +1 -1
- package/dist/ui/modals/selectors.js +3 -2
- package/dist/ui/modals/selectors.js.map +1 -1
- package/dist/ui/modals/setup.d.ts +3 -2
- package/dist/ui/modals/setup.d.ts.map +1 -1
- package/dist/ui/modals/setup.js +1 -1
- package/dist/ui/modals/tool-output.d.ts +8 -0
- package/dist/ui/modals/tool-output.d.ts.map +1 -0
- package/dist/ui/modals/tool-output.js +26 -0
- package/dist/ui/modals/tool-output.js.map +1 -0
- package/dist/ui/model-commands.d.ts +4 -0
- package/dist/ui/model-commands.d.ts.map +1 -0
- package/dist/ui/model-commands.js +69 -0
- package/dist/ui/model-commands.js.map +1 -0
- package/dist/ui/regions/input-region.d.ts +1 -1
- package/dist/ui/regions/input-region.d.ts.map +1 -1
- package/dist/ui/regions/modal-host.d.ts +4 -1
- package/dist/ui/regions/modal-host.d.ts.map +1 -1
- package/dist/ui/regions/modal-host.js +7 -1
- package/dist/ui/regions/modal-host.js.map +1 -1
- package/dist/ui/regions/static-scrollback.d.ts +1 -1
- package/dist/ui/regions/static-scrollback.d.ts.map +1 -1
- package/dist/ui/regions/status-region.d.ts +2 -1
- package/dist/ui/regions/status-region.d.ts.map +1 -1
- package/dist/ui/regions/status-region.js +2 -2
- package/dist/ui/regions/status-region.js.map +1 -1
- package/dist/ui/regions/tool-activity.d.ts +6 -0
- package/dist/ui/regions/tool-activity.d.ts.map +1 -0
- package/dist/ui/regions/tool-activity.js +9 -0
- package/dist/ui/regions/tool-activity.js.map +1 -0
- package/dist/ui/regions/transcript-region.d.ts +1 -1
- package/dist/ui/regions/transcript-region.d.ts.map +1 -1
- package/dist/ui/regions/transcript-region.js +3 -2
- package/dist/ui/regions/transcript-region.js.map +1 -1
- package/dist/ui/regions/workflow-region.d.ts +9 -0
- package/dist/ui/regions/workflow-region.d.ts.map +1 -0
- package/dist/ui/regions/workflow-region.js +11 -0
- package/dist/ui/regions/workflow-region.js.map +1 -0
- package/dist/ui/self-restart.js.map +1 -1
- package/dist/ui/session-commands.d.ts +3 -0
- package/dist/ui/session-commands.d.ts.map +1 -0
- package/dist/ui/session-commands.js +141 -0
- package/dist/ui/session-commands.js.map +1 -0
- package/dist/ui/state/use-approval-state.d.ts +9 -0
- package/dist/ui/state/use-approval-state.d.ts.map +1 -0
- package/dist/ui/state/use-approval-state.js +18 -0
- package/dist/ui/state/use-approval-state.js.map +1 -0
- package/dist/ui/state/use-chat-controller.d.ts +4 -1
- package/dist/ui/state/use-chat-controller.d.ts.map +1 -1
- package/dist/ui/state/use-chat-controller.js +256 -180
- package/dist/ui/state/use-chat-controller.js.map +1 -1
- package/dist/ui/state/use-modal-state.d.ts +6 -8
- package/dist/ui/state/use-modal-state.d.ts.map +1 -1
- package/dist/ui/state/use-modal-state.js +3 -4
- package/dist/ui/state/use-modal-state.js.map +1 -1
- package/dist/ui/state/use-model-state.d.ts +7 -3
- package/dist/ui/state/use-model-state.d.ts.map +1 -1
- package/dist/ui/state/use-model-state.js +24 -17
- package/dist/ui/state/use-model-state.js.map +1 -1
- package/dist/ui/state/use-processing-state.js.map +1 -1
- package/dist/ui/state/use-queue-state.d.ts +4 -3
- package/dist/ui/state/use-queue-state.d.ts.map +1 -1
- package/dist/ui/state/use-queue-state.js +11 -8
- package/dist/ui/state/use-queue-state.js.map +1 -1
- package/dist/ui/state/use-session-init.d.ts +4 -0
- package/dist/ui/state/use-session-init.d.ts.map +1 -1
- package/dist/ui/state/use-session-init.js +19 -3
- package/dist/ui/state/use-session-init.js.map +1 -1
- package/dist/ui/state/use-transcript-state.d.ts +6 -3
- package/dist/ui/state/use-transcript-state.d.ts.map +1 -1
- package/dist/ui/state/use-transcript-state.js +27 -15
- package/dist/ui/state/use-transcript-state.js.map +1 -1
- package/dist/ui/status-bar.d.ts +3 -2
- package/dist/ui/status-bar.d.ts.map +1 -1
- package/dist/ui/status-bar.js +3 -3
- package/dist/ui/status-bar.js.map +1 -1
- package/dist/ui/tool-output-cache.d.ts +12 -0
- package/dist/ui/tool-output-cache.d.ts.map +1 -0
- package/dist/ui/tool-output-cache.js +27 -0
- package/dist/ui/tool-output-cache.js.map +1 -0
- package/dist/ui/tool-output-commands.d.ts +3 -0
- package/dist/ui/tool-output-commands.d.ts.map +1 -0
- package/dist/ui/tool-output-commands.js +37 -0
- package/dist/ui/tool-output-commands.js.map +1 -0
- package/dist/ui/tool-output-wrap.d.ts +3 -0
- package/dist/ui/tool-output-wrap.d.ts.map +1 -0
- package/dist/ui/tool-output-wrap.js +24 -0
- package/dist/ui/tool-output-wrap.js.map +1 -0
- package/dist/ui/tool-progress.d.ts +23 -0
- package/dist/ui/tool-progress.d.ts.map +1 -0
- package/dist/ui/tool-progress.js +42 -0
- package/dist/ui/tool-progress.js.map +1 -0
- package/dist/ui/types.d.ts +8 -0
- package/dist/ui/types.d.ts.map +1 -1
- package/dist/ui/workflow-progress.d.ts +21 -0
- package/dist/ui/workflow-progress.d.ts.map +1 -0
- package/dist/ui/workflow-progress.js +107 -0
- package/dist/ui/workflow-progress.js.map +1 -0
- package/dist/version-check.js.map +1 -1
- package/package.json +21 -12
- package/scripts/verify-runlog.mjs +208 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/** Immutable per-event files avoid a shared append offset across CLI processes. */
|
|
2
|
+
import * as fs from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
5
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
6
|
+
import * as config from '../config.js';
|
|
7
|
+
export const DEFAULT_HEALTH_SETTINGS = {
|
|
8
|
+
retentionEvents: 1000, retentionDays: 30, failureThreshold: 3,
|
|
9
|
+
failureWindowMs: 300000, quarantineMs: 60000, probeTimeoutMs: 10000,
|
|
10
|
+
};
|
|
11
|
+
const limits = {
|
|
12
|
+
retentionEvents: [10, 10000], retentionDays: [1, 365], failureThreshold: [1, 100],
|
|
13
|
+
failureWindowMs: [1000, 86400000], quarantineMs: [1000, 86400000], probeTimeoutMs: [100, 60000],
|
|
14
|
+
};
|
|
15
|
+
export function healthSettings(overrides = {}) {
|
|
16
|
+
const settings = { ...DEFAULT_HEALTH_SETTINGS, ...overrides };
|
|
17
|
+
for (const key of Object.keys(settings)) {
|
|
18
|
+
const value = settings[key], range = limits[key];
|
|
19
|
+
if (!range || !Number.isInteger(value) || value < range[0] || value > range[1])
|
|
20
|
+
throw new Error('Invalid provider health settings');
|
|
21
|
+
}
|
|
22
|
+
return settings;
|
|
23
|
+
}
|
|
24
|
+
export function healthDigest(value) {
|
|
25
|
+
const canonical = (item) => {
|
|
26
|
+
if (item && typeof item === 'object' && !Array.isArray(item))
|
|
27
|
+
return '{' + Object.keys(item).sort().map(key => JSON.stringify(key) + ':' + canonical(item[key])).join(',') + '}';
|
|
28
|
+
return JSON.stringify(item);
|
|
29
|
+
};
|
|
30
|
+
return createHash('sha256').update(canonical(value)).digest('hex');
|
|
31
|
+
}
|
|
32
|
+
const uuid = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
33
|
+
const hash = /^[0-9a-f]{64}$/;
|
|
34
|
+
const eventName = /^\d{13}-[0-9a-f-]{36}\.json$/;
|
|
35
|
+
const fields = new Set(['version', 'id', 'at', 'source', 'originId', 'sha256', 'provider', 'target', 'type', 'outcome', 'durationMs', 'retryIndex', 'failure', 'httpStatus', 'modelCount', 'capabilities', 'evidenceHash']);
|
|
36
|
+
const failures = ['authentication', 'quota', 'rate_limit', 'timeout', 'network', 'server', 'invalid_request', 'response', 'unknown'];
|
|
37
|
+
/** No free-form error/message/model/endpoint strings are accepted at this boundary. */
|
|
38
|
+
export function validateHealthEvent(value, now = Date.now()) {
|
|
39
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
40
|
+
throw new Error('Invalid provider health event');
|
|
41
|
+
const e = value;
|
|
42
|
+
const invalid = () => { throw new Error('Invalid provider health event schema or integrity'); };
|
|
43
|
+
if (Object.keys(e).some(key => !fields.has(key)) || e.version !== 1 || !uuid.test(e.id) ||
|
|
44
|
+
!hash.test(e.target) || !config.getProviderNames().includes(e.provider) ||
|
|
45
|
+
!['attempt', 'discovery', 'conformance', 'reset'].includes(e.type) ||
|
|
46
|
+
!['local', 'imported'].includes(e.source) || typeof e.at !== 'string' || !Number.isFinite(Date.parse(e.at)) ||
|
|
47
|
+
Date.parse(e.at) > now + 300000 || new Date(e.at).toISOString() !== e.at ||
|
|
48
|
+
(e.source === 'imported' ? !uuid.test(e.originId ?? '') : e.originId !== undefined))
|
|
49
|
+
invalid();
|
|
50
|
+
for (const key of ['durationMs', 'retryIndex', 'httpStatus', 'modelCount']) {
|
|
51
|
+
const n = e[key];
|
|
52
|
+
if (n !== undefined && (!Number.isSafeInteger(n) || n < 0 || n > (key === 'durationMs' ? 86400000 : key === 'modelCount' ? 1000000 : key === 'httpStatus' ? 599 : 100)))
|
|
53
|
+
invalid();
|
|
54
|
+
}
|
|
55
|
+
if (e.httpStatus !== undefined && e.httpStatus < 100)
|
|
56
|
+
invalid();
|
|
57
|
+
if (e.failure !== undefined && !failures.includes(e.failure))
|
|
58
|
+
invalid();
|
|
59
|
+
if (e.type === 'reset') {
|
|
60
|
+
if (Object.keys(e).some(key => !['version', 'id', 'at', 'source', 'originId', 'sha256', 'provider', 'target', 'type'].includes(key)))
|
|
61
|
+
invalid();
|
|
62
|
+
}
|
|
63
|
+
else if (!['success', 'error', 'timeout', 'cancelled'].includes(e.outcome ?? ''))
|
|
64
|
+
invalid();
|
|
65
|
+
if (e.capabilities !== undefined) {
|
|
66
|
+
if (!e.capabilities || typeof e.capabilities !== 'object' || Array.isArray(e.capabilities) ||
|
|
67
|
+
Object.entries(e.capabilities).some(([key, val]) => !['tools', 'streaming', 'cancellation', 'usage'].includes(key) || typeof val !== 'boolean'))
|
|
68
|
+
invalid();
|
|
69
|
+
}
|
|
70
|
+
if (e.evidenceHash !== undefined && !hash.test(e.evidenceHash))
|
|
71
|
+
invalid();
|
|
72
|
+
if (e.type === 'conformance' && !e.evidenceHash)
|
|
73
|
+
invalid();
|
|
74
|
+
const { sha256, ...body } = e;
|
|
75
|
+
if (!hash.test(sha256) || healthDigest(body) !== sha256)
|
|
76
|
+
invalid();
|
|
77
|
+
return e;
|
|
78
|
+
}
|
|
79
|
+
export class HealthStore {
|
|
80
|
+
directory;
|
|
81
|
+
clock;
|
|
82
|
+
settings;
|
|
83
|
+
constructor(directory = process.env.CALLIOPE_HEALTH_DIR || join(homedir(), '.calliope-cli', 'provider-health'), settings = config.get('providerHealth') ?? {}, clock = Date.now) {
|
|
84
|
+
this.directory = directory;
|
|
85
|
+
this.clock = clock;
|
|
86
|
+
this.settings = healthSettings(settings);
|
|
87
|
+
if (process.env.VITEST && !process.env.CALLIOPE_CONFIG_DIR)
|
|
88
|
+
throw new Error('Provider health tests require isolated stores');
|
|
89
|
+
}
|
|
90
|
+
names() {
|
|
91
|
+
try {
|
|
92
|
+
if (fs.lstatSync(this.directory).isSymbolicLink())
|
|
93
|
+
throw new Error('Invalid health directory');
|
|
94
|
+
return fs.readdirSync(this.directory).filter(name => eventName.test(name)).sort();
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error.code === 'ENOENT')
|
|
98
|
+
return [];
|
|
99
|
+
throw new Error('Provider health history is unreadable');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
retained(names) {
|
|
103
|
+
const cutoff = this.clock() - this.settings.retentionDays * 86400000;
|
|
104
|
+
return names.filter(name => Number(name.slice(0, 13)) >= cutoff).slice(-this.settings.retentionEvents);
|
|
105
|
+
}
|
|
106
|
+
read() {
|
|
107
|
+
return this.retained(this.names()).flatMap(name => {
|
|
108
|
+
try {
|
|
109
|
+
const file = join(this.directory, name);
|
|
110
|
+
if (fs.lstatSync(file).isSymbolicLink() || fs.statSync(file).size > 4096)
|
|
111
|
+
throw new Error('Invalid health event file');
|
|
112
|
+
const event = validateHealthEvent(JSON.parse(fs.readFileSync(file, 'utf8')), this.clock());
|
|
113
|
+
if (name !== this.filename(event))
|
|
114
|
+
throw new Error('Invalid health event identity');
|
|
115
|
+
return [event];
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
if (error.code === 'ENOENT')
|
|
119
|
+
return []; // Concurrent retention.
|
|
120
|
+
throw new Error('Provider health history failed validation; inspect or restore the local history');
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
filename(event) { return `${Date.parse(event.at).toString().padStart(13, '0')}-${event.id}.json`; }
|
|
125
|
+
append(observation) {
|
|
126
|
+
// Preserve causal order for sequential writers even within one clock tick.
|
|
127
|
+
const newest = Number(this.names().at(-1)?.slice(0, 13) ?? 0);
|
|
128
|
+
const at = new Date(Math.max(this.clock(), newest + 1)).toISOString();
|
|
129
|
+
const body = { ...observation, version: 1, id: randomUUID(), at, source: 'local' };
|
|
130
|
+
const event = validateHealthEvent({ ...body, sha256: healthDigest(body) }, this.clock());
|
|
131
|
+
this.publish([event]);
|
|
132
|
+
return event;
|
|
133
|
+
}
|
|
134
|
+
publish(events) {
|
|
135
|
+
fs.mkdirSync(this.directory, { recursive: true, mode: 0o700 });
|
|
136
|
+
if (fs.lstatSync(this.directory).isSymbolicLink())
|
|
137
|
+
throw new Error('Provider health directory must not be a symlink');
|
|
138
|
+
for (const event of events) {
|
|
139
|
+
const temp = join(this.directory, `.${randomUUID()}.tmp`);
|
|
140
|
+
const fd = fs.openSync(temp, 'wx', 0o600);
|
|
141
|
+
try {
|
|
142
|
+
try {
|
|
143
|
+
fs.writeFileSync(fd, JSON.stringify(event) + '\n');
|
|
144
|
+
fs.fsyncSync(fd);
|
|
145
|
+
}
|
|
146
|
+
finally {
|
|
147
|
+
fs.closeSync(fd);
|
|
148
|
+
}
|
|
149
|
+
fs.linkSync(temp, join(this.directory, this.filename(event)));
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
fs.unlinkSync(temp);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const names = this.names(), keep = new Set(this.retained(names));
|
|
156
|
+
for (const name of names)
|
|
157
|
+
if (!keep.has(name)) {
|
|
158
|
+
try {
|
|
159
|
+
fs.unlinkSync(join(this.directory, name));
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (error.code !== 'ENOENT')
|
|
163
|
+
throw new Error('Provider health retention failed');
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export() { return { version: 1, events: this.read() }; }
|
|
168
|
+
import(value) {
|
|
169
|
+
const bundle = value;
|
|
170
|
+
if (!bundle || bundle.version !== 1 || Object.keys(bundle).some(key => !['version', 'events'].includes(key)) ||
|
|
171
|
+
!Array.isArray(bundle.events) || bundle.events.length > this.settings.retentionEvents)
|
|
172
|
+
throw new Error('Invalid provider health import');
|
|
173
|
+
const existing = new Set(this.read().map(event => event.originId ?? event.id));
|
|
174
|
+
const validated = bundle.events.map(event => validateHealthEvent(event, this.clock()));
|
|
175
|
+
// Validate the entire document before publishing any event. Imported resets,
|
|
176
|
+
// failures and capabilities cannot alter local quarantine or routing state.
|
|
177
|
+
const imported = validated.flatMap(event => {
|
|
178
|
+
const originId = event.originId ?? event.id;
|
|
179
|
+
if (existing.has(originId))
|
|
180
|
+
return [];
|
|
181
|
+
existing.add(originId);
|
|
182
|
+
const { sha256: _sha, ...body } = event;
|
|
183
|
+
const importedBody = { ...body, id: randomUUID(), source: 'imported', originId };
|
|
184
|
+
return [{ ...importedBody, sha256: healthDigest(importedBody) }];
|
|
185
|
+
});
|
|
186
|
+
this.publish(imported);
|
|
187
|
+
return imported.length;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/health/store.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAGvC,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC;IAC7D,eAAe,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK;CACpE,CAAC;AACF,MAAM,MAAM,GAAmD;IAC7D,eAAe,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IACjF,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC;CAChG,CAAC;AACF,MAAM,UAAU,cAAc,CAAC,SAAS,GAA4B,EAAE;IACpE,MAAM,QAAQ,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,SAAS,EAAE,CAAC;IAC9D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAA6B,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtI,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,MAAM,SAAS,GAAG,CAAC,IAAa,EAAU,EAAE;QAC1C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAE,IAAgC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC9M,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IACF,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AACD,MAAM,IAAI,GAAG,uEAAuE,CAAC;AACrF,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAC9B,MAAM,SAAS,GAAG,8BAA8B,CAAC;AACjD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;AAC5N,MAAM,QAAQ,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAErI,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAClE,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAClH,MAAM,CAAC,GAAG,KAAoB,CAAC;IAC/B,MAAM,OAAO,GAAG,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvE,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3G,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE;QACxE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACnG,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAU,EAAE,CAAC;QACpF,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;IACrL,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,GAAG,GAAG;QAAE,OAAO,EAAE,CAAC;IAChE,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACxE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;IAClJ,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IAC9F,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;YACtF,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;IACjK,CAAC;IACD,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1E,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC3D,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IACnE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,OAAO,WAAW;IAED,SAAS;IAAoL,KAAK;IAD9M,QAAQ,CAAiB;IAClC,YAAqB,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,EAAE,iBAAiB,CAAC,EAAE,QAAQ,GAA4B,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAmB,KAAK,GAAiB,IAAI,CAAC,GAAG;yBAA3N,SAAS;qBAAoL,KAAK;QACrN,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC/H,CAAC;IAEO,KAAK;QACX,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC/F,OAAO,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpF,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAAC,CAAC;IAChJ,CAAC;IACO,QAAQ,CAAC,KAAe;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,GAAG,QAAQ,CAAC;QACrE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACzG,CAAC;IACD,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAChD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,IAAI;oBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBACvH,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3F,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBACpF,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO,EAAE,CAAC,CAAC,wBAAwB;gBAC3F,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;YACrG,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACO,QAAQ,CAAC,KAAkB,IAAY,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAChI,MAAM,CAAC,WAA8B;QACnC,2EAA2E;QAC3E,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,EAAE,GAAG,WAAW,EAAE,OAAO,EAAE,CAAU,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,OAAgB,EAAE,CAAC;QACrG,MAAM,KAAK,GAAG,mBAAmB,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IACO,OAAO,CAAC,MAAqB;QACnC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/D,IAAI,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACtH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,UAAU,EAAE,MAAM,CAAC,CAAC;YAC1D,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC;gBACH,IAAI,CAAC;oBAAC,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;oBAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;wBACrE,CAAC;oBAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;gBAC7B,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAChE,CAAC;oBACO,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;QAClC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACjE,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC;oBAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAClD,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;wBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAAC,CAAC;YAChI,CAAC;IACH,CAAC;IACD,MAAM,KAA4C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/F,MAAM,CAAC,KAAc;QACnB,MAAM,MAAM,GAAG,KAAgD,CAAC;QAChE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC7I,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvF,6EAA6E;QAC7E,4EAA4E;QAC5E,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;YACxC,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAmB,EAAE,QAAQ,EAAE,CAAC;YAC1F,OAAO,CAAC,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { FailureKind, HealthEvent, HealthSettings, HealthSnapshot, HealthTarget } from './types.js';
|
|
2
|
+
/** Classify without copying any upstream text, request IDs or credentials. */
|
|
3
|
+
export declare function healthFailure(error: unknown): {
|
|
4
|
+
failure: FailureKind;
|
|
5
|
+
httpStatus?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function healthOutcome(error: unknown, signal?: AbortSignal): 'cancelled' | 'timeout' | 'error';
|
|
8
|
+
export declare function summarizeHealth(events: HealthEvent[], target: HealthTarget, settings: HealthSettings, now?: number): HealthSnapshot;
|
|
9
|
+
export declare function healthRemediation(target: HealthTarget, health: HealthSnapshot): string[];
|
|
10
|
+
//# sourceMappingURL=summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/health/summary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAErH,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAc3F;AACD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAGrG;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAa,GAAG,cAAc,CAqCvI;AACD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAaxF"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { isCancellation } from '../cancellation.js';
|
|
2
|
+
/** Classify without copying any upstream text, request IDs or credentials. */
|
|
3
|
+
export function healthFailure(error) {
|
|
4
|
+
const e = error;
|
|
5
|
+
const parsedStatus = typeof e?.message === 'string' ? Number(e.message.match(/(?:HTTP|API error:|returned)\s*(\d{3})/i)?.[1]) : NaN;
|
|
6
|
+
const status = typeof e?.status === 'number' ? e.status : parsedStatus;
|
|
7
|
+
const httpStatus = Number.isInteger(status) && status >= 100 && status <= 599 ? status : undefined;
|
|
8
|
+
const text = [e?.name, e?.message, e?.code].filter(value => typeof value === 'string').join(' ').toLowerCase();
|
|
9
|
+
const failure = /quota|credit_balance|billing/.test(text) ? 'quota'
|
|
10
|
+
: httpStatus === 401 || httpStatus === 403 ? 'authentication'
|
|
11
|
+
: httpStatus === 429 ? 'rate_limit'
|
|
12
|
+
: httpStatus === 408 || httpStatus === 504 || /timeout|timed out|etimedout/.test(text) ? 'timeout'
|
|
13
|
+
: httpStatus && httpStatus >= 500 ? 'server'
|
|
14
|
+
: httpStatus && httpStatus >= 400 ? 'invalid_request'
|
|
15
|
+
: /econn|enotfound|network|fetch failed|connection/.test(text) ? 'network' : 'unknown';
|
|
16
|
+
return { failure, ...(httpStatus === undefined ? {} : { httpStatus }) };
|
|
17
|
+
}
|
|
18
|
+
export function healthOutcome(error, signal) {
|
|
19
|
+
if (signal?.aborted || isCancellation(error))
|
|
20
|
+
return signal?.reason?.name === 'TimeoutError' ? 'timeout' : 'cancelled';
|
|
21
|
+
return healthFailure(error).failure === 'timeout' ? 'timeout' : 'error';
|
|
22
|
+
}
|
|
23
|
+
export function summarizeHealth(events, target, settings, now = Date.now()) {
|
|
24
|
+
const relevant = events.filter(event => event.provider === target.provider && event.target === target.key);
|
|
25
|
+
const local = relevant.filter(event => event.source === 'local').sort((a, b) => a.at.localeCompare(b.at) || a.id.localeCompare(b.id));
|
|
26
|
+
const recent = local.filter(event => now - Date.parse(event.at) <= settings.failureWindowMs && event.type === 'attempt');
|
|
27
|
+
const samples = recent.filter(event => event.outcome !== 'cancelled');
|
|
28
|
+
const last = (predicate) => local.filter(predicate).at(-1);
|
|
29
|
+
const success = last(e => e.type === 'attempt' && e.outcome === 'success');
|
|
30
|
+
const failure = last(e => (e.type === 'attempt' || e.type === 'discovery') && (e.outcome === 'error' || e.outcome === 'timeout'));
|
|
31
|
+
const discovery = last(e => e.type === 'discovery');
|
|
32
|
+
const capabilities = { tools: 'unknown', streaming: 'unknown', cancellation: 'unknown', usage: 'unknown' };
|
|
33
|
+
for (const e of local)
|
|
34
|
+
for (const key of Object.keys(e.capabilities ?? {}))
|
|
35
|
+
capabilities[key] = e.capabilities[key];
|
|
36
|
+
let consecutive = [], triggeredFailures = 0;
|
|
37
|
+
let triggeredAt = null, quarantineReason = null;
|
|
38
|
+
for (const event of local) {
|
|
39
|
+
if (event.type === 'reset' || (event.type === 'attempt' && event.outcome === 'success')) {
|
|
40
|
+
consecutive = [];
|
|
41
|
+
triggeredAt = null;
|
|
42
|
+
quarantineReason = null;
|
|
43
|
+
triggeredFailures = 0;
|
|
44
|
+
}
|
|
45
|
+
else if (event.type === 'attempt' && event.outcome !== 'cancelled') {
|
|
46
|
+
// Evaluate the failure window at the event's time. A quarantine may
|
|
47
|
+
// deliberately outlive that window and must retain its promised expiry.
|
|
48
|
+
consecutive = consecutive.filter(prior => Date.parse(event.at) - Date.parse(prior.at) <= settings.failureWindowMs);
|
|
49
|
+
consecutive.push(event);
|
|
50
|
+
if (consecutive.length >= settings.failureThreshold) {
|
|
51
|
+
triggeredAt = event.at;
|
|
52
|
+
triggeredFailures = consecutive.length;
|
|
53
|
+
quarantineReason = event.failure ?? (event.outcome === 'timeout' ? 'timeout' : 'unknown');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const expiresAt = triggeredAt ? new Date(Date.parse(triggeredAt) + settings.quarantineMs).toISOString() : null;
|
|
58
|
+
const active = !!expiresAt && Date.parse(expiresAt) > now;
|
|
59
|
+
return { provider: target.provider, target: target.key, sampleCount: samples.length,
|
|
60
|
+
latencyMs: samples.length ? Math.round(samples.reduce((sum, e) => sum + (e.durationMs ?? 0), 0) / samples.length) : null,
|
|
61
|
+
errorRate: samples.length ? samples.filter(e => e.outcome !== 'success').length / samples.length : null,
|
|
62
|
+
timeoutRate: samples.length ? samples.filter(e => e.outcome === 'timeout').length / samples.length : null,
|
|
63
|
+
retryRate: samples.length ? samples.filter(e => (e.retryIndex ?? 0) > 0).length / samples.length : null,
|
|
64
|
+
lastSuccessAt: success?.at ?? null,
|
|
65
|
+
lastFailure: failure ? { at: failure.at, kind: failure.failure ?? 'unknown', httpStatus: failure.httpStatus ?? null } : null,
|
|
66
|
+
discovery: { status: discovery?.outcome ?? 'unknown', at: discovery?.at ?? null, modelCount: discovery?.modelCount ?? null },
|
|
67
|
+
lastSuccessfulConformanceAt: last(e => e.type === 'conformance' && e.outcome === 'success')?.at ?? null,
|
|
68
|
+
capabilities, quarantine: { active, reason: quarantineReason, expiresAt, failures: active ? triggeredFailures : consecutive.filter(e => now - Date.parse(e.at) <= settings.failureWindowMs).length },
|
|
69
|
+
importedEvents: relevant.length - local.length,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export function healthRemediation(target, health) {
|
|
73
|
+
const steps = [];
|
|
74
|
+
if (target.credentials === 'missing')
|
|
75
|
+
steps.push(`Configure ${target.provider} credentials or endpoint with calliope --setup.`);
|
|
76
|
+
const kind = health.lastFailure?.kind;
|
|
77
|
+
if (kind === 'authentication')
|
|
78
|
+
steps.push('Replace invalid credentials or refresh the AWS profile session.');
|
|
79
|
+
else if (kind === 'quota')
|
|
80
|
+
steps.push('Restore provider credit or increase the provider-side quota.');
|
|
81
|
+
else if (kind === 'rate_limit')
|
|
82
|
+
steps.push('Reduce concurrency and retry after the provider rate limit resets.');
|
|
83
|
+
else if (kind === 'network' || kind === 'timeout')
|
|
84
|
+
steps.push('Check endpoint reachability, network access and timeout settings.');
|
|
85
|
+
else if (kind)
|
|
86
|
+
steps.push('Probe model discovery and check provider availability and model compatibility.');
|
|
87
|
+
if (health.quarantine.active)
|
|
88
|
+
steps.push(`Quarantine expires at ${health.quarantine.expiresAt}; after remediation run calliope doctor provider ${target.provider} --reset.`);
|
|
89
|
+
if (health.discovery.status !== 'success')
|
|
90
|
+
steps.push(`Run calliope doctor provider ${target.provider} --probe to check model discovery.`);
|
|
91
|
+
if (!health.lastSuccessfulConformanceAt)
|
|
92
|
+
steps.push('No local successful conformance event is recorded; collect and verify real-wire evidence.');
|
|
93
|
+
return steps;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/health/summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.d.ts","sourceRoot":"","sources":["../../src/health/target.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,YAAY,CA2BrE"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as config from '../config.js';
|
|
2
|
+
import { PROVIDER_BASE_URLS } from '../providers/compat.js';
|
|
3
|
+
import { hasAWSCredentials } from '../providers/bedrock.js';
|
|
4
|
+
import { healthDigest } from './store.js';
|
|
5
|
+
export function providerTarget(provider) {
|
|
6
|
+
if (!config.getProviderNames().includes(provider))
|
|
7
|
+
throw new Error('Unknown or retired provider');
|
|
8
|
+
const credential = config.getProviderCred(provider);
|
|
9
|
+
let endpoint, protocol, credentials;
|
|
10
|
+
if (provider === 'anthropic') {
|
|
11
|
+
endpoint = credential.baseUrl || 'https://api.anthropic.com/v1';
|
|
12
|
+
protocol = 'anthropic-messages';
|
|
13
|
+
}
|
|
14
|
+
else if (provider === 'google') {
|
|
15
|
+
endpoint = credential.baseUrl || 'https://generativelanguage.googleapis.com/v1beta';
|
|
16
|
+
protocol = 'google-genai';
|
|
17
|
+
}
|
|
18
|
+
else if (provider === 'openai') {
|
|
19
|
+
endpoint = credential.baseUrl || 'https://api.openai.com/v1';
|
|
20
|
+
protocol = 'openai-chat-and-responses';
|
|
21
|
+
}
|
|
22
|
+
else if (provider === 'bedrock' && !credential.baseUrl) {
|
|
23
|
+
endpoint = `https://bedrock-runtime.${credential.region || 'us-east-1'}.amazonaws.com`;
|
|
24
|
+
protocol = 'bedrock-converse';
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
endpoint = config.getBaseUrl(provider) || PROVIDER_BASE_URLS[provider] || '';
|
|
28
|
+
protocol = provider === 'ollama' ? 'ollama' : 'openai-chat';
|
|
29
|
+
}
|
|
30
|
+
if (provider === 'bedrock' && !credential.baseUrl)
|
|
31
|
+
credentials = hasAWSCredentials() || !!credential.profile ? 'configured' : 'missing';
|
|
32
|
+
else if (['ollama', 'litellm', 'openai-compat', 'bedrock'].includes(provider))
|
|
33
|
+
credentials = !endpoint ? 'missing' : credential.apiKey ? 'configured' : 'not-required';
|
|
34
|
+
else
|
|
35
|
+
credentials = credential.apiKey ? 'configured' : 'missing';
|
|
36
|
+
let display = 'not-configured', identity = endpoint;
|
|
37
|
+
if (endpoint) {
|
|
38
|
+
try {
|
|
39
|
+
const url = new URL(endpoint);
|
|
40
|
+
if (!['http:', 'https:'].includes(url.protocol))
|
|
41
|
+
throw new Error('protocol');
|
|
42
|
+
// Userinfo, query strings, fragments and arbitrary path segments may contain credentials.
|
|
43
|
+
identity = url.origin + url.pathname;
|
|
44
|
+
display = url.origin + (['', '/', '/v1', '/api/v1', '/v1beta'].includes(url.pathname) ? url.pathname : '/[configured-path]');
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
display = 'invalid-endpoint';
|
|
48
|
+
credentials = 'missing';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return { provider, endpoint: display, protocol, credentials, key: healthDigest({ provider, endpoint: identity, protocol, profile: provider === 'bedrock' ? credential.profile ?? 'default' : '' }) };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=target.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target.js","sourceRoot":"","sources":["../../src/health/target.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { LLMProvider } from '../types.js';
|
|
2
|
+
export type HealthProvider = Exclude<LLMProvider, 'auto'>;
|
|
3
|
+
export type HealthOutcome = 'success' | 'error' | 'timeout' | 'cancelled';
|
|
4
|
+
export type FailureKind = 'authentication' | 'quota' | 'rate_limit' | 'timeout' | 'network' | 'server' | 'invalid_request' | 'response' | 'unknown';
|
|
5
|
+
export type Capability = 'tools' | 'streaming' | 'cancellation' | 'usage';
|
|
6
|
+
export type CapabilityEvidence = Partial<Record<Capability, boolean>>;
|
|
7
|
+
export interface HealthSettings {
|
|
8
|
+
retentionEvents: number;
|
|
9
|
+
retentionDays: number;
|
|
10
|
+
failureThreshold: number;
|
|
11
|
+
failureWindowMs: number;
|
|
12
|
+
quarantineMs: number;
|
|
13
|
+
probeTimeoutMs: number;
|
|
14
|
+
}
|
|
15
|
+
export interface HealthTarget {
|
|
16
|
+
provider: HealthProvider;
|
|
17
|
+
key: string;
|
|
18
|
+
endpoint: string;
|
|
19
|
+
protocol: string;
|
|
20
|
+
credentials: 'configured' | 'missing' | 'not-required';
|
|
21
|
+
}
|
|
22
|
+
export interface HealthObservation {
|
|
23
|
+
provider: HealthProvider;
|
|
24
|
+
target: string;
|
|
25
|
+
type: 'attempt' | 'discovery' | 'conformance' | 'reset';
|
|
26
|
+
outcome?: HealthOutcome;
|
|
27
|
+
durationMs?: number;
|
|
28
|
+
retryIndex?: number;
|
|
29
|
+
failure?: FailureKind;
|
|
30
|
+
httpStatus?: number;
|
|
31
|
+
modelCount?: number;
|
|
32
|
+
capabilities?: CapabilityEvidence;
|
|
33
|
+
evidenceHash?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface HealthEvent extends HealthObservation {
|
|
36
|
+
version: 1;
|
|
37
|
+
id: string;
|
|
38
|
+
at: string;
|
|
39
|
+
source: 'local' | 'imported';
|
|
40
|
+
originId?: string;
|
|
41
|
+
sha256: string;
|
|
42
|
+
}
|
|
43
|
+
export interface HealthSnapshot {
|
|
44
|
+
provider: HealthProvider;
|
|
45
|
+
target: string;
|
|
46
|
+
sampleCount: number;
|
|
47
|
+
latencyMs: number | null;
|
|
48
|
+
timeoutRate: number | null;
|
|
49
|
+
retryRate: number | null;
|
|
50
|
+
errorRate: number | null;
|
|
51
|
+
lastSuccessAt: string | null;
|
|
52
|
+
lastFailure: {
|
|
53
|
+
at: string;
|
|
54
|
+
kind: FailureKind;
|
|
55
|
+
httpStatus: number | null;
|
|
56
|
+
} | null;
|
|
57
|
+
discovery: {
|
|
58
|
+
status: HealthOutcome | 'unknown';
|
|
59
|
+
at: string | null;
|
|
60
|
+
modelCount: number | null;
|
|
61
|
+
};
|
|
62
|
+
lastSuccessfulConformanceAt: string | null;
|
|
63
|
+
capabilities: Record<Capability, boolean | 'unknown'>;
|
|
64
|
+
quarantine: {
|
|
65
|
+
active: boolean;
|
|
66
|
+
reason: FailureKind | null;
|
|
67
|
+
expiresAt: string | null;
|
|
68
|
+
failures: number;
|
|
69
|
+
};
|
|
70
|
+
importedEvents: number;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/health/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/health/types.ts"],"names":[],"mappings":""}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -66,11 +66,16 @@ export declare function getHooksForEvent(event: HookEvent): Hook[];
|
|
|
66
66
|
/**
|
|
67
67
|
* Execute hooks for an event
|
|
68
68
|
*/
|
|
69
|
-
export declare function executeHooks(event: HookEvent, context: Partial<HookContext
|
|
69
|
+
export declare function executeHooks(event: HookEvent, context: Partial<HookContext>, options?: {
|
|
70
|
+
signal?: AbortSignal;
|
|
71
|
+
bounded?: boolean;
|
|
72
|
+
}): Promise<HookResult[]>;
|
|
70
73
|
/**
|
|
71
74
|
* Check if any hooks would block an operation
|
|
72
75
|
*/
|
|
73
|
-
export declare function checkHooksAllow(event: HookEvent, context: Partial<HookContext
|
|
76
|
+
export declare function checkHooksAllow(event: HookEvent, context: Partial<HookContext>, options?: {
|
|
77
|
+
signal?: AbortSignal;
|
|
78
|
+
}): Promise<{
|
|
74
79
|
allowed: boolean;
|
|
75
80
|
reason?: string;
|
|
76
81
|
}>;
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,WAAW,GACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,UAAU,GACV,eAAe,GACf,aAAa,GACb,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAoDD;;;;;;;GAOG;AACH,wBAAgB,SAAS,IAAI,IAAI,EAAE,CAalC;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAS7C;AAMD;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,CASpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAO9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAOhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,CAEzD;AAoHD;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,OAAO,GAAE;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAM,GACtD,OAAO,CAAC,UAAU,EAAE,CAAC,CAyDvB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAC7B,OAAO,GAAE;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAM,GACnC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAchD;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAmCvC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAa3C"}
|