@retaw106/mmc-oc 0.0.0-stage → 1.2.2
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/dist/agents/historian.d.ts +4 -0
- package/dist/agents/historian.d.ts.map +1 -0
- package/dist/agents/language-directive.d.ts +26 -0
- package/dist/agents/language-directive.d.ts.map +1 -0
- package/dist/agents/magic-context-prompt.d.ts +5 -0
- package/dist/agents/magic-context-prompt.d.ts.map +1 -0
- package/dist/agents/memory-maintainer.d.ts +96 -0
- package/dist/agents/memory-maintainer.d.ts.map +1 -0
- package/dist/config/agent-disable.d.ts +29 -0
- package/dist/config/agent-disable.d.ts.map +1 -0
- package/dist/config/config-paths.d.ts +7 -0
- package/dist/config/config-paths.d.ts.map +1 -0
- package/dist/config/index.d.ts +69 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/live-run-config.d.ts +11 -0
- package/dist/config/live-run-config.d.ts.map +1 -0
- package/dist/config/live-snapshot.d.ts +32 -0
- package/dist/config/live-snapshot.d.ts.map +1 -0
- package/dist/config/migrate-experimental.d.ts +26 -0
- package/dist/config/migrate-experimental.d.ts.map +1 -0
- package/dist/config/profiles.d.ts +22 -0
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/project-security.d.ts +124 -0
- package/dist/config/project-security.d.ts.map +1 -0
- package/dist/config/prune-config-leaf.d.ts +26 -0
- package/dist/config/prune-config-leaf.d.ts.map +1 -0
- package/dist/config/raw-loader.d.ts +42 -0
- package/dist/config/raw-loader.d.ts.map +1 -0
- package/dist/config/removed-agent-config.d.ts +8 -0
- package/dist/config/removed-agent-config.d.ts.map +1 -0
- package/dist/config/schema/agent-overrides.d.ts +52 -0
- package/dist/config/schema/agent-overrides.d.ts.map +1 -0
- package/dist/config/schema/magic-context.d.ts +805 -0
- package/dist/config/schema/magic-context.d.ts.map +1 -0
- package/dist/config/variable.d.ts +48 -0
- package/dist/config/variable.d.ts.map +1 -0
- package/dist/context-a6px04s0.js +23932 -0
- package/dist/derive-budgets-fhk00zv8.js +18 -0
- package/dist/features/magic-context/compaction-marker.d.ts +211 -0
- package/dist/features/magic-context/compaction-marker.d.ts.map +1 -0
- package/dist/features/magic-context/compaction.d.ts +7 -0
- package/dist/features/magic-context/compaction.d.ts.map +1 -0
- package/dist/features/magic-context/compartment-events.d.ts +50 -0
- package/dist/features/magic-context/compartment-events.d.ts.map +1 -0
- package/dist/features/magic-context/compartment-lease.d.ts +28 -0
- package/dist/features/magic-context/compartment-lease.d.ts.map +1 -0
- package/dist/features/magic-context/compartment-storage.d.ts +178 -0
- package/dist/features/magic-context/compartment-storage.d.ts.map +1 -0
- package/dist/features/magic-context/compression-depth-storage.d.ts +14 -0
- package/dist/features/magic-context/compression-depth-storage.d.ts.map +1 -0
- package/dist/features/magic-context/context-authority.d.ts +15 -0
- package/dist/features/magic-context/context-authority.d.ts.map +1 -0
- package/dist/features/magic-context/fail-closed-block.d.ts +117 -0
- package/dist/features/magic-context/fail-closed-block.d.ts.map +1 -0
- package/dist/features/magic-context/index.d.ts +10 -0
- package/dist/features/magic-context/index.d.ts.map +1 -0
- package/dist/features/magic-context/literal-probes.d.ts +24 -0
- package/dist/features/magic-context/literal-probes.d.ts.map +1 -0
- package/dist/features/magic-context/lkg-prefix-chunks.d.ts +53 -0
- package/dist/features/magic-context/lkg-prefix-chunks.d.ts.map +1 -0
- package/dist/features/magic-context/memory/constants.d.ts +16 -0
- package/dist/features/magic-context/memory/constants.d.ts.map +1 -0
- package/dist/features/magic-context/memory/index.d.ts +11 -0
- package/dist/features/magic-context/memory/index.d.ts.map +1 -0
- package/dist/features/magic-context/memory/memory-diagnostics.d.ts +6 -0
- package/dist/features/magic-context/memory/memory-diagnostics.d.ts.map +1 -0
- package/dist/features/magic-context/memory/memory-selection.d.ts +12 -0
- package/dist/features/magic-context/memory/memory-selection.d.ts.map +1 -0
- package/dist/features/magic-context/memory/memory-visibility.d.ts +46 -0
- package/dist/features/magic-context/memory/memory-visibility.d.ts.map +1 -0
- package/dist/features/magic-context/memory/normalize-hash.d.ts +3 -0
- package/dist/features/magic-context/memory/normalize-hash.d.ts.map +1 -0
- package/dist/features/magic-context/memory/project-identity-cache.d.ts +7 -0
- package/dist/features/magic-context/memory/project-identity-cache.d.ts.map +1 -0
- package/dist/features/magic-context/memory/project-identity.d.ts +97 -0
- package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -0
- package/dist/features/magic-context/memory/promotion.d.ts +26 -0
- package/dist/features/magic-context/memory/promotion.d.ts.map +1 -0
- package/dist/features/magic-context/memory/relocate-memory.d.ts +58 -0
- package/dist/features/magic-context/memory/relocate-memory.d.ts.map +1 -0
- package/dist/features/magic-context/memory/storage-memory-fts.d.ts +11 -0
- package/dist/features/magic-context/memory/storage-memory-fts.d.ts.map +1 -0
- package/dist/features/magic-context/memory/storage-memory-verifications.d.ts +35 -0
- package/dist/features/magic-context/memory/storage-memory-verifications.d.ts.map +1 -0
- package/dist/features/magic-context/memory/storage-memory.d.ts +89 -0
- package/dist/features/magic-context/memory/storage-memory.d.ts.map +1 -0
- package/dist/features/magic-context/memory/types.d.ts +59 -0
- package/dist/features/magic-context/memory/types.d.ts.map +1 -0
- package/dist/features/magic-context/memory/verification-paths.d.ts +48 -0
- package/dist/features/magic-context/memory/verification-paths.d.ts.map +1 -0
- package/dist/features/magic-context/memory/visibility.d.ts +6 -0
- package/dist/features/magic-context/memory/visibility.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/apply.d.ts +65 -0
- package/dist/features/magic-context/memory-maintainer/apply.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/budget.d.ts +75 -0
- package/dist/features/magic-context/memory-maintainer/budget.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/coverage.d.ts +91 -0
- package/dist/features/magic-context/memory-maintainer/coverage.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/dream-state.d.ts +18 -0
- package/dist/features/magic-context/memory-maintainer/dream-state.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/launcher.d.ts +119 -0
- package/dist/features/magic-context/memory-maintainer/launcher.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/lease.d.ts +56 -0
- package/dist/features/magic-context/memory-maintainer/lease.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/manifest.d.ts +127 -0
- package/dist/features/magic-context/memory-maintainer/manifest.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/manual-commands.d.ts +46 -0
- package/dist/features/magic-context/memory-maintainer/manual-commands.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/oc2-adapter.d.ts +79 -0
- package/dist/features/magic-context/memory-maintainer/oc2-adapter.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/pause-report.d.ts +37 -0
- package/dist/features/magic-context/memory-maintainer/pause-report.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/pipeline.d.ts +199 -0
- package/dist/features/magic-context/memory-maintainer/pipeline.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/provider-output-failure.d.ts +15 -0
- package/dist/features/magic-context/memory-maintainer/provider-output-failure.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/schedule-storage.d.ts +76 -0
- package/dist/features/magic-context/memory-maintainer/schedule-storage.d.ts.map +1 -0
- package/dist/features/magic-context/memory-maintainer/schedule.d.ts +90 -0
- package/dist/features/magic-context/memory-maintainer/schedule.d.ts.map +1 -0
- package/dist/features/magic-context/merged-reasoning-decisions.d.ts +6 -0
- package/dist/features/magic-context/merged-reasoning-decisions.d.ts.map +1 -0
- package/dist/features/magic-context/message-fts-rowid-map.d.ts +50 -0
- package/dist/features/magic-context/message-fts-rowid-map.d.ts.map +1 -0
- package/dist/features/magic-context/message-fts-session-filter.d.ts +14 -0
- package/dist/features/magic-context/message-fts-session-filter.d.ts.map +1 -0
- package/dist/features/magic-context/message-index-async.d.ts +33 -0
- package/dist/features/magic-context/message-index-async.d.ts.map +1 -0
- package/dist/features/magic-context/message-index-sweep.d.ts +11 -0
- package/dist/features/magic-context/message-index-sweep.d.ts.map +1 -0
- package/dist/features/magic-context/message-index.d.ts +88 -0
- package/dist/features/magic-context/message-index.d.ts.map +1 -0
- package/dist/features/magic-context/message-time-backfill.d.ts +19 -0
- package/dist/features/magic-context/message-time-backfill.d.ts.map +1 -0
- package/dist/features/magic-context/migration-v2-write-split.d.ts +62 -0
- package/dist/features/magic-context/migration-v2-write-split.d.ts.map +1 -0
- package/dist/features/magic-context/migrations.d.ts +73 -0
- package/dist/features/magic-context/migrations.d.ts.map +1 -0
- package/dist/features/magic-context/mock-database.d.ts +3 -0
- package/dist/features/magic-context/mock-database.d.ts.map +1 -0
- package/dist/features/magic-context/mural/storage-mural-cues.d.ts +65 -0
- package/dist/features/magic-context/mural/storage-mural-cues.d.ts.map +1 -0
- package/dist/features/magic-context/no-content-compartment.d.ts +12 -0
- package/dist/features/magic-context/no-content-compartment.d.ts.map +1 -0
- package/dist/features/magic-context/opencode2-relabel.d.ts +132 -0
- package/dist/features/magic-context/opencode2-relabel.d.ts.map +1 -0
- package/dist/features/magic-context/overflow-detection.d.ts +108 -0
- package/dist/features/magic-context/overflow-detection.d.ts.map +1 -0
- package/dist/features/magic-context/pi-content-decisions.d.ts +9 -0
- package/dist/features/magic-context/pi-content-decisions.d.ts.map +1 -0
- package/dist/features/magic-context/project-identity.d.ts +2 -0
- package/dist/features/magic-context/project-identity.d.ts.map +1 -0
- package/dist/features/magic-context/protection-window.d.ts +79 -0
- package/dist/features/magic-context/protection-window.d.ts.map +1 -0
- package/dist/features/magic-context/range-parser.d.ts +18 -0
- package/dist/features/magic-context/range-parser.d.ts.map +1 -0
- package/dist/features/magic-context/reclaim-protection.d.ts +13 -0
- package/dist/features/magic-context/reclaim-protection.d.ts.map +1 -0
- package/dist/features/magic-context/resolve-subagent-fallback.d.ts +42 -0
- package/dist/features/magic-context/resolve-subagent-fallback.d.ts.map +1 -0
- package/dist/features/magic-context/scheduler.d.ts +20 -0
- package/dist/features/magic-context/scheduler.d.ts.map +1 -0
- package/dist/features/magic-context/schema-fence-probe.d.ts +29 -0
- package/dist/features/magic-context/schema-fence-probe.d.ts.map +1 -0
- package/dist/features/magic-context/search.d.ts +118 -0
- package/dist/features/magic-context/search.d.ts.map +1 -0
- package/dist/features/magic-context/session-cache-ttl.d.ts +10 -0
- package/dist/features/magic-context/session-cache-ttl.d.ts.map +1 -0
- package/dist/features/magic-context/session-decision-calibration.d.ts +31 -0
- package/dist/features/magic-context/session-decision-calibration.d.ts.map +1 -0
- package/dist/features/magic-context/session-project-backfill.d.ts +37 -0
- package/dist/features/magic-context/session-project-backfill.d.ts.map +1 -0
- package/dist/features/magic-context/session-project-storage.d.ts +23 -0
- package/dist/features/magic-context/session-project-storage.d.ts.map +1 -0
- package/dist/features/magic-context/storage-caveman-rules.d.ts +21 -0
- package/dist/features/magic-context/storage-caveman-rules.d.ts.map +1 -0
- package/dist/features/magic-context/storage-clone.d.ts +44 -0
- package/dist/features/magic-context/storage-clone.d.ts.map +1 -0
- package/dist/features/magic-context/storage-db.d.ts +183 -0
- package/dist/features/magic-context/storage-db.d.ts.map +1 -0
- package/dist/features/magic-context/storage-historian-runs.d.ts +79 -0
- package/dist/features/magic-context/storage-historian-runs.d.ts.map +1 -0
- package/dist/features/magic-context/storage-identity-merge.d.ts +26 -0
- package/dist/features/magic-context/storage-identity-merge.d.ts.map +1 -0
- package/dist/features/magic-context/storage-identity-rekey-map.d.ts +11 -0
- package/dist/features/magic-context/storage-identity-rekey-map.d.ts.map +1 -0
- package/dist/features/magic-context/storage-m0-mutation-log.d.ts +22 -0
- package/dist/features/magic-context/storage-m0-mutation-log.d.ts.map +1 -0
- package/dist/features/magic-context/storage-memory-mutation-log.d.ts +29 -0
- package/dist/features/magic-context/storage-memory-mutation-log.d.ts.map +1 -0
- package/dist/features/magic-context/storage-meta-persisted.d.ts +623 -0
- package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -0
- package/dist/features/magic-context/storage-meta-session.d.ts +14 -0
- package/dist/features/magic-context/storage-meta-session.d.ts.map +1 -0
- package/dist/features/magic-context/storage-meta-shared.d.ts +102 -0
- package/dist/features/magic-context/storage-meta-shared.d.ts.map +1 -0
- package/dist/features/magic-context/storage-meta.d.ts +4 -0
- package/dist/features/magic-context/storage-meta.d.ts.map +1 -0
- package/dist/features/magic-context/storage-native-replay.d.ts +29 -0
- package/dist/features/magic-context/storage-native-replay.d.ts.map +1 -0
- package/dist/features/magic-context/storage-notes.d.ts +80 -0
- package/dist/features/magic-context/storage-notes.d.ts.map +1 -0
- package/dist/features/magic-context/storage-ops.d.ts +14 -0
- package/dist/features/magic-context/storage-ops.d.ts.map +1 -0
- package/dist/features/magic-context/storage-primers.d.ts +96 -0
- package/dist/features/magic-context/storage-primers.d.ts.map +1 -0
- package/dist/features/magic-context/storage-project-state.d.ts +19 -0
- package/dist/features/magic-context/storage-project-state.d.ts.map +1 -0
- package/dist/features/magic-context/storage-reasoning-removal.d.ts +30 -0
- package/dist/features/magic-context/storage-reasoning-removal.d.ts.map +1 -0
- package/dist/features/magic-context/storage-replay-document.d.ts +72 -0
- package/dist/features/magic-context/storage-replay-document.d.ts.map +1 -0
- package/dist/features/magic-context/storage-schema-helpers.d.ts +31 -0
- package/dist/features/magic-context/storage-schema-helpers.d.ts.map +1 -0
- package/dist/features/magic-context/storage-session-tables.d.ts +18 -0
- package/dist/features/magic-context/storage-session-tables.d.ts.map +1 -0
- package/dist/features/magic-context/storage-source.d.ts +5 -0
- package/dist/features/magic-context/storage-source.d.ts.map +1 -0
- package/dist/features/magic-context/storage-subagent-invocations.d.ts +62 -0
- package/dist/features/magic-context/storage-subagent-invocations.d.ts.map +1 -0
- package/dist/features/magic-context/storage-tags.d.ts +542 -0
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -0
- package/dist/features/magic-context/storage-unavailable-reason.d.ts +17 -0
- package/dist/features/magic-context/storage-unavailable-reason.d.ts.map +1 -0
- package/dist/features/magic-context/storage-v22-backfill-failures.d.ts +26 -0
- package/dist/features/magic-context/storage-v22-backfill-failures.d.ts.map +1 -0
- package/dist/features/magic-context/storage.d.ts +23 -0
- package/dist/features/magic-context/storage.d.ts.map +1 -0
- package/dist/features/magic-context/store-generation-rebase.d.ts +188 -0
- package/dist/features/magic-context/store-generation-rebase.d.ts.map +1 -0
- package/dist/features/magic-context/subagent-token-capture.d.ts +35 -0
- package/dist/features/magic-context/subagent-token-capture.d.ts.map +1 -0
- package/dist/features/magic-context/tag-input.d.ts +4 -0
- package/dist/features/magic-context/tag-input.d.ts.map +1 -0
- package/dist/features/magic-context/tagger.d.ts +119 -0
- package/dist/features/magic-context/tagger.d.ts.map +1 -0
- package/dist/features/magic-context/tool-definition-tokens.d.ts +90 -0
- package/dist/features/magic-context/tool-definition-tokens.d.ts.map +1 -0
- package/dist/features/magic-context/tool-owner-backfill.d.ts +93 -0
- package/dist/features/magic-context/tool-owner-backfill.d.ts.map +1 -0
- package/dist/features/magic-context/transform-decision-log.d.ts +110 -0
- package/dist/features/magic-context/transform-decision-log.d.ts.map +1 -0
- package/dist/features/magic-context/types.d.ts +133 -0
- package/dist/features/magic-context/types.d.ts.map +1 -0
- package/dist/features/magic-context/window-report-ledger.d.ts +70 -0
- package/dist/features/magic-context/window-report-ledger.d.ts.map +1 -0
- package/dist/features/magic-context/work-metrics.d.ts +79 -0
- package/dist/features/magic-context/work-metrics.d.ts.map +1 -0
- package/dist/features/magic-context/workspaces.d.ts +28 -0
- package/dist/features/magic-context/workspaces.d.ts.map +1 -0
- package/dist/hooks/auto-update-checker/semver.d.ts +26 -0
- package/dist/hooks/auto-update-checker/semver.d.ts.map +1 -0
- package/dist/hooks/magic-context/apply-operations.d.ts +158 -0
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-deadline.d.ts +10 -0
- package/dist/hooks/magic-context/auto-search-deadline.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-hint.d.ts +36 -0
- package/dist/hooks/magic-context/auto-search-hint.d.ts.map +1 -0
- package/dist/hooks/magic-context/auto-search-runner.d.ts +60 -0
- package/dist/hooks/magic-context/auto-search-runner.d.ts.map +1 -0
- package/dist/hooks/magic-context/cache-busting-signals.d.ts +42 -0
- package/dist/hooks/magic-context/cache-busting-signals.d.ts.map +1 -0
- package/dist/hooks/magic-context/caveman-cleanup.d.ts +98 -0
- package/dist/hooks/magic-context/caveman-cleanup.d.ts.map +1 -0
- package/dist/hooks/magic-context/caveman.d.ts +90 -0
- package/dist/hooks/magic-context/caveman.d.ts.map +1 -0
- package/dist/hooks/magic-context/channel2-cycle.d.ts +16 -0
- package/dist/hooks/magic-context/channel2-cycle.d.ts.map +1 -0
- package/dist/hooks/magic-context/channel2-delivery.d.ts +32 -0
- package/dist/hooks/magic-context/channel2-delivery.d.ts.map +1 -0
- package/dist/hooks/magic-context/child-session-spawn.d.ts +27 -0
- package/dist/hooks/magic-context/child-session-spawn.d.ts.map +1 -0
- package/dist/hooks/magic-context/compaction-marker-manager.d.ts +154 -0
- package/dist/hooks/magic-context/compaction-marker-manager.d.ts.map +1 -0
- package/dist/hooks/magic-context/compaction-off-transition.d.ts +97 -0
- package/dist/hooks/magic-context/compaction-off-transition.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-parser.d.ts +66 -0
- package/dist/hooks/magic-context/compartment-parser.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-prompt.d.ts +33 -0
- package/dist/hooks/magic-context/compartment-prompt.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-render-epoch.d.ts +27 -0
- package/dist/hooks/magic-context/compartment-render-epoch.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-drop-queue.d.ts +29 -0
- package/dist/hooks/magic-context/compartment-runner-drop-queue.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts +43 -0
- package/dist/hooks/magic-context/compartment-runner-historian.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts +31 -0
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-mapping.d.ts +25 -0
- package/dist/hooks/magic-context/compartment-runner-mapping.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-partial-recomp.d.ts +29 -0
- package/dist/hooks/magic-context/compartment-runner-partial-recomp.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-recomp.d.ts +11 -0
- package/dist/hooks/magic-context/compartment-runner-recomp.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-types.d.ts +295 -0
- package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner-validation.d.ts +83 -0
- package/dist/hooks/magic-context/compartment-runner-validation.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-runner.d.ts +59 -0
- package/dist/hooks/magic-context/compartment-runner.d.ts.map +1 -0
- package/dist/hooks/magic-context/compartment-trigger.d.ts +77 -0
- package/dist/hooks/magic-context/compartment-trigger.d.ts.map +1 -0
- package/dist/hooks/magic-context/ctx-reduce-availability.d.ts +170 -0
- package/dist/hooks/magic-context/ctx-reduce-availability.d.ts.map +1 -0
- package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts +104 -0
- package/dist/hooks/magic-context/ctx-reduce-nudge.d.ts.map +1 -0
- package/dist/hooks/magic-context/decay-curve.d.ts +84 -0
- package/dist/hooks/magic-context/decay-curve.d.ts.map +1 -0
- package/dist/hooks/magic-context/decay-render.d.ts +80 -0
- package/dist/hooks/magic-context/decay-render.d.ts.map +1 -0
- package/dist/hooks/magic-context/decision-calibration.d.ts +24 -0
- package/dist/hooks/magic-context/decision-calibration.d.ts.map +1 -0
- package/dist/hooks/magic-context/degraded-pass-refusal.d.ts +35 -0
- package/dist/hooks/magic-context/degraded-pass-refusal.d.ts.map +1 -0
- package/dist/hooks/magic-context/derive-budgets.d.ts +60 -0
- package/dist/hooks/magic-context/derive-budgets.d.ts.map +1 -0
- package/dist/hooks/magic-context/drop-stale-reduce-calls.d.ts +39 -0
- package/dist/hooks/magic-context/drop-stale-reduce-calls.d.ts.map +1 -0
- package/dist/hooks/magic-context/dropped-input-guard.d.ts +55 -0
- package/dist/hooks/magic-context/dropped-input-guard.d.ts.map +1 -0
- package/dist/hooks/magic-context/dropped-token-estimate.d.ts +20 -0
- package/dist/hooks/magic-context/dropped-token-estimate.d.ts.map +1 -0
- package/dist/hooks/magic-context/edit-marker.d.ts +11 -0
- package/dist/hooks/magic-context/edit-marker.d.ts.map +1 -0
- package/dist/hooks/magic-context/emergency-drop.d.ts +112 -0
- package/dist/hooks/magic-context/emergency-drop.d.ts.map +1 -0
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts +14 -0
- package/dist/hooks/magic-context/emergency-fail-closed.d.ts.map +1 -0
- package/dist/hooks/magic-context/empty-task-output.d.ts +16 -0
- package/dist/hooks/magic-context/empty-task-output.d.ts.map +1 -0
- package/dist/hooks/magic-context/event-payloads.d.ts +73 -0
- package/dist/hooks/magic-context/event-payloads.d.ts.map +1 -0
- package/dist/hooks/magic-context/event-resolvers.d.ts +114 -0
- package/dist/hooks/magic-context/event-resolvers.d.ts.map +1 -0
- package/dist/hooks/magic-context/execute-flush.d.ts +3 -0
- package/dist/hooks/magic-context/execute-flush.d.ts.map +1 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts +56 -0
- package/dist/hooks/magic-context/final-wire-token-estimate.d.ts.map +1 -0
- package/dist/hooks/magic-context/fold-execution-gate.d.ts +2 -0
- package/dist/hooks/magic-context/fold-execution-gate.d.ts.map +1 -0
- package/dist/hooks/magic-context/format-bytes.d.ts +2 -0
- package/dist/hooks/magic-context/format-bytes.d.ts.map +1 -0
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts +48 -0
- package/dist/hooks/magic-context/heuristic-cleanup.d.ts.map +1 -0
- package/dist/hooks/magic-context/historian-no-fire-cause.d.ts +5 -0
- package/dist/hooks/magic-context/historian-no-fire-cause.d.ts.map +1 -0
- package/dist/hooks/magic-context/historian-prompt-fit.d.ts +112 -0
- package/dist/hooks/magic-context/historian-prompt-fit.d.ts.map +1 -0
- package/dist/hooks/magic-context/historian-prompt.generated.d.ts +2 -0
- package/dist/hooks/magic-context/historian-prompt.generated.d.ts.map +1 -0
- package/dist/hooks/magic-context/historian-publish-stage-logger.d.ts +3 -0
- package/dist/hooks/magic-context/historian-publish-stage-logger.d.ts.map +1 -0
- package/dist/hooks/magic-context/historian-state-file.d.ts +43 -0
- package/dist/hooks/magic-context/historian-state-file.d.ts.map +1 -0
- package/dist/hooks/magic-context/history-boundary-repair.d.ts +44 -0
- package/dist/hooks/magic-context/history-boundary-repair.d.ts.map +1 -0
- package/dist/hooks/magic-context/hook-handlers.d.ts +177 -0
- package/dist/hooks/magic-context/hook-handlers.d.ts.map +1 -0
- package/dist/hooks/magic-context/host-served-rows.d.ts +58 -0
- package/dist/hooks/magic-context/host-served-rows.d.ts.map +1 -0
- package/dist/hooks/magic-context/image-token-estimate.d.ts +15 -0
- package/dist/hooks/magic-context/image-token-estimate.d.ts.map +1 -0
- package/dist/hooks/magic-context/inject-compartments.d.ts +389 -0
- package/dist/hooks/magic-context/inject-compartments.d.ts.map +1 -0
- package/dist/hooks/magic-context/issue-135-wire-fixtures.d.ts +8 -0
- package/dist/hooks/magic-context/issue-135-wire-fixtures.d.ts.map +1 -0
- package/dist/hooks/magic-context/issue-423-fixture.d.ts +37 -0
- package/dist/hooks/magic-context/issue-423-fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/issue-424-fixture.d.ts +11 -0
- package/dist/hooks/magic-context/issue-424-fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/legacy-compartments.d.ts +20 -0
- package/dist/hooks/magic-context/legacy-compartments.d.ts.map +1 -0
- package/dist/hooks/magic-context/live-session-state.d.ts +68 -0
- package/dist/hooks/magic-context/live-session-state.d.ts.map +1 -0
- package/dist/hooks/magic-context/lkg-persist.d.ts +22 -0
- package/dist/hooks/magic-context/lkg-persist.d.ts.map +1 -0
- package/dist/hooks/magic-context/lkg-replay.d.ts +71 -0
- package/dist/hooks/magic-context/lkg-replay.d.ts.map +1 -0
- package/dist/hooks/magic-context/lkg-slot.d.ts +119 -0
- package/dist/hooks/magic-context/lkg-slot.d.ts.map +1 -0
- package/dist/hooks/magic-context/m0-token-breakdown.d.ts +44 -0
- package/dist/hooks/magic-context/m0-token-breakdown.d.ts.map +1 -0
- package/dist/hooks/magic-context/maintenance-authority.d.ts +2 -0
- package/dist/hooks/magic-context/maintenance-authority.d.ts.map +1 -0
- package/dist/hooks/magic-context/openai-compat-adjacency.d.ts +38 -0
- package/dist/hooks/magic-context/openai-compat-adjacency.d.ts.map +1 -0
- package/dist/hooks/magic-context/opencode-v1-store-fixture.d.ts +12 -0
- package/dist/hooks/magic-context/opencode-v1-store-fixture.d.ts.map +1 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts +70 -0
- package/dist/hooks/magic-context/pass-outcome.d.ts.map +1 -0
- package/dist/hooks/magic-context/persist-filtered-noise.d.ts +5 -0
- package/dist/hooks/magic-context/persist-filtered-noise.d.ts.map +1 -0
- package/dist/hooks/magic-context/postprocess-read-cache.d.ts +8 -0
- package/dist/hooks/magic-context/postprocess-read-cache.d.ts.map +1 -0
- package/dist/hooks/magic-context/producer-window-guard.d.ts +63 -0
- package/dist/hooks/magic-context/producer-window-guard.d.ts.map +1 -0
- package/dist/hooks/magic-context/producer-window-test-support.d.ts +14 -0
- package/dist/hooks/magic-context/producer-window-test-support.d.ts.map +1 -0
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts +234 -0
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-fallback-context-limit.d.ts +10 -0
- package/dist/hooks/magic-context/raw-fallback-context-limit.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts +271 -0
- package/dist/hooks/magic-context/read-session-chunk.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-db.d.ts +66 -0
- package/dist/hooks/magic-context/read-session-db.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-formatting.d.ts +65 -0
- package/dist/hooks/magic-context/read-session-formatting.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-raw.d.ts +164 -0
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -0
- package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts +82 -0
- package/dist/hooks/magic-context/read-session-true-raw-tokens.d.ts.map +1 -0
- package/dist/hooks/magic-context/reasoning-removal.d.ts +60 -0
- package/dist/hooks/magic-context/reasoning-removal.d.ts.map +1 -0
- package/dist/hooks/magic-context/recomp-orchestrator.d.ts +93 -0
- package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -0
- package/dist/hooks/magic-context/reference-retrieval.d.ts +72 -0
- package/dist/hooks/magic-context/reference-retrieval.d.ts.map +1 -0
- package/dist/hooks/magic-context/reference-seeds.generated.d.ts +8 -0
- package/dist/hooks/magic-context/reference-seeds.generated.d.ts.map +1 -0
- package/dist/hooks/magic-context/send-session-notification.d.ts +43 -0
- package/dist/hooks/magic-context/send-session-notification.d.ts.map +1 -0
- package/dist/hooks/magic-context/sentinel.d.ts +146 -0
- package/dist/hooks/magic-context/sentinel.d.ts.map +1 -0
- package/dist/hooks/magic-context/storage-busy-refusal.d.ts +20 -0
- package/dist/hooks/magic-context/storage-busy-refusal.d.ts.map +1 -0
- package/dist/hooks/magic-context/strip-content.d.ts +216 -0
- package/dist/hooks/magic-context/strip-content.d.ts.map +1 -0
- package/dist/hooks/magic-context/strip-structural-noise.d.ts +15 -0
- package/dist/hooks/magic-context/strip-structural-noise.d.ts.map +1 -0
- package/dist/hooks/magic-context/stripped-command.d.ts +56 -0
- package/dist/hooks/magic-context/stripped-command.d.ts.map +1 -0
- package/dist/hooks/magic-context/supersession-reclaim.d.ts +58 -0
- package/dist/hooks/magic-context/supersession-reclaim.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-injection-stripper.d.ts +2 -0
- package/dist/hooks/magic-context/system-injection-stripper.d.ts.map +1 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts +129 -0
- package/dist/hooks/magic-context/system-prompt-hash.d.ts.map +1 -0
- package/dist/hooks/magic-context/tag-content-primitives.d.ts +31 -0
- package/dist/hooks/magic-context/tag-content-primitives.d.ts.map +1 -0
- package/dist/hooks/magic-context/tag-id-fallback.d.ts +11 -0
- package/dist/hooks/magic-context/tag-id-fallback.d.ts.map +1 -0
- package/dist/hooks/magic-context/tag-messages.d.ts +145 -0
- package/dist/hooks/magic-context/tag-messages.d.ts.map +1 -0
- package/dist/hooks/magic-context/tag-part-guards.d.ts +23 -0
- package/dist/hooks/magic-context/tag-part-guards.d.ts.map +1 -0
- package/dist/hooks/magic-context/tail-hygiene-walk.d.ts +178 -0
- package/dist/hooks/magic-context/tail-hygiene-walk.d.ts.map +1 -0
- package/dist/hooks/magic-context/temporal-awareness.d.ts +73 -0
- package/dist/hooks/magic-context/temporal-awareness.d.ts.map +1 -0
- package/dist/hooks/magic-context/text-complete.d.ts +31 -0
- package/dist/hooks/magic-context/text-complete.d.ts.map +1 -0
- package/dist/hooks/magic-context/todo-view.d.ts +127 -0
- package/dist/hooks/magic-context/todo-view.d.ts.map +1 -0
- package/dist/hooks/magic-context/tokenizer-calibration.d.ts +92 -0
- package/dist/hooks/magic-context/tokenizer-calibration.d.ts.map +1 -0
- package/dist/hooks/magic-context/tool-drop-target.d.ts +144 -0
- package/dist/hooks/magic-context/tool-drop-target.d.ts.map +1 -0
- package/dist/hooks/magic-context/tool-input-size.d.ts +21 -0
- package/dist/hooks/magic-context/tool-input-size.d.ts.map +1 -0
- package/dist/hooks/magic-context/tool-reclaim.d.ts +12 -0
- package/dist/hooks/magic-context/tool-reclaim.d.ts.map +1 -0
- package/dist/hooks/magic-context/tool-sweep-policy.d.ts +50 -0
- package/dist/hooks/magic-context/tool-sweep-policy.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts +133 -0
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-context-state.d.ts +28 -0
- package/dist/hooks/magic-context/transform-context-state.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-message-helpers.d.ts +32 -0
- package/dist/hooks/magic-context/transform-message-helpers.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-operations.d.ts +5 -0
- package/dist/hooks/magic-context/transform-operations.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +350 -0
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform-stage-logger.d.ts +2 -0
- package/dist/hooks/magic-context/transform-stage-logger.d.ts.map +1 -0
- package/dist/hooks/magic-context/transform.d.ts +334 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -0
- package/dist/hooks/magic-context/unmanaged-over-window.d.ts +36 -0
- package/dist/hooks/magic-context/unmanaged-over-window.d.ts.map +1 -0
- package/dist/hooks/magic-context/unresolved-history-boundary.d.ts +15 -0
- package/dist/hooks/magic-context/unresolved-history-boundary.d.ts.map +1 -0
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts +14 -0
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -0
- package/dist/index-1vs6anwz.js +126 -0
- package/dist/index-3wagyrnj.js +670 -0
- package/dist/index-53g38ggt.js +40 -0
- package/dist/index-5pg0acf7.js +410 -0
- package/dist/index-977gxfz0.js +514 -0
- package/dist/index-by6h2pav.js +27883 -0
- package/dist/index-e1q8002h.js +16 -0
- package/dist/index-fg34g6a5.js +584 -0
- package/dist/index-jdxxq8cz.js +99 -0
- package/dist/index-me3zcj5t.js +69 -0
- package/dist/index-qbkzdkk0.js +496 -0
- package/dist/index-wgt4gamw.js +6388 -0
- package/dist/index-zx63j2e2.js +907 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/message-time-backfill-5ewk0axe.js +116 -0
- package/dist/model-resolution-5haaxnpt.js +6 -0
- package/dist/plugin/boot-deadline.d.ts +47 -0
- package/dist/plugin/boot-deadline.d.ts.map +1 -0
- package/dist/plugin/boot-quiet.d.ts +12 -0
- package/dist/plugin/boot-quiet.d.ts.map +1 -0
- package/dist/plugin/normalize-tool-arg-schemas.d.ts +7 -0
- package/dist/plugin/normalize-tool-arg-schemas.d.ts.map +1 -0
- package/dist/plugin/rpc-handlers.d.ts +52 -0
- package/dist/plugin/rpc-handlers.d.ts.map +1 -0
- package/dist/plugin/sidebar-snapshot-cache.d.ts +19 -0
- package/dist/plugin/sidebar-snapshot-cache.d.ts.map +1 -0
- package/dist/plugin/subagent-tool-policy.d.ts +9 -0
- package/dist/plugin/subagent-tool-policy.d.ts.map +1 -0
- package/dist/plugin/types.d.ts +3 -0
- package/dist/plugin/types.d.ts.map +1 -0
- package/dist/prompt-context-ffa5xcfx.js +76 -0
- package/dist/read-session-chunk-apjwrttc.js +56 -0
- package/dist/recomp-orchestrator-gyeevxaw.js +21 -0
- package/dist/rpc-notifications-4amf6mf4.js +14 -0
- package/dist/safe-notification-target-ph3xd1ve.js +9 -0
- package/dist/send-session-notification-y29y9fsr.js +18 -0
- package/dist/shared/announcement.d.ts +69 -0
- package/dist/shared/announcement.d.ts.map +1 -0
- package/dist/shared/assistant-message-extractor.d.ts +13 -0
- package/dist/shared/assistant-message-extractor.d.ts.map +1 -0
- package/dist/shared/auto-update-provenance.d.ts +9 -0
- package/dist/shared/auto-update-provenance.d.ts.map +1 -0
- package/dist/shared/bounded-session-map.d.ts +45 -0
- package/dist/shared/bounded-session-map.d.ts.map +1 -0
- package/dist/shared/builtin-commands.d.ts +24 -0
- package/dist/shared/builtin-commands.d.ts.map +1 -0
- package/dist/shared/cache-ttl-display.d.ts +25 -0
- package/dist/shared/cache-ttl-display.d.ts.map +1 -0
- package/dist/shared/cache-ttl-seed.d.ts +10 -0
- package/dist/shared/cache-ttl-seed.d.ts.map +1 -0
- package/dist/shared/child-session-teardown.d.ts +34 -0
- package/dist/shared/child-session-teardown.d.ts.map +1 -0
- package/dist/shared/commit-detection.d.ts +29 -0
- package/dist/shared/commit-detection.d.ts.map +1 -0
- package/dist/shared/config-diagnostics.d.ts +30 -0
- package/dist/shared/config-diagnostics.d.ts.map +1 -0
- package/dist/shared/conflict-detector.d.ts +139 -0
- package/dist/shared/conflict-detector.d.ts.map +1 -0
- package/dist/shared/conflict-fixer.d.ts +20 -0
- package/dist/shared/conflict-fixer.d.ts.map +1 -0
- package/dist/shared/context-limit-provenance.d.ts +3 -0
- package/dist/shared/context-limit-provenance.d.ts.map +1 -0
- package/dist/shared/data-path.d.ts +176 -0
- package/dist/shared/data-path.d.ts.map +1 -0
- package/dist/shared/error-message.d.ts +32 -0
- package/dist/shared/error-message.d.ts.map +1 -0
- package/dist/shared/escalation-bands.d.ts +9 -0
- package/dist/shared/escalation-bands.d.ts.map +1 -0
- package/dist/shared/format-bytes.d.ts +2 -0
- package/dist/shared/format-bytes.d.ts.map +1 -0
- package/dist/shared/format-threshold.d.ts +43 -0
- package/dist/shared/format-threshold.d.ts.map +1 -0
- package/dist/shared/harness-provider-map.d.ts +64 -0
- package/dist/shared/harness-provider-map.d.ts.map +1 -0
- package/dist/shared/harness.d.ts +55 -0
- package/dist/shared/harness.d.ts.map +1 -0
- package/dist/shared/hidden-variant-warnings.d.ts +5 -0
- package/dist/shared/hidden-variant-warnings.d.ts.map +1 -0
- package/dist/shared/historian-tool-expansions.d.ts +5 -0
- package/dist/shared/historian-tool-expansions.d.ts.map +1 -0
- package/dist/shared/historian-tool-template.d.ts +5 -0
- package/dist/shared/historian-tool-template.d.ts.map +1 -0
- package/dist/shared/historian-transient-error.d.ts +2 -0
- package/dist/shared/historian-transient-error.d.ts.map +1 -0
- package/dist/shared/host-limitations.d.ts +14 -0
- package/dist/shared/host-limitations.d.ts.map +1 -0
- package/dist/shared/index.d.ts +8 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/internal-initiator-marker.d.ts +2 -0
- package/dist/shared/internal-initiator-marker.d.ts.map +1 -0
- package/dist/shared/jsonc-edit.d.ts +23 -0
- package/dist/shared/jsonc-edit.d.ts.map +1 -0
- package/dist/shared/jsonc-parser.d.ts +30 -0
- package/dist/shared/jsonc-parser.d.ts.map +1 -0
- package/dist/shared/keep-subagents.d.ts +7 -0
- package/dist/shared/keep-subagents.d.ts.map +1 -0
- package/dist/shared/logger.d.ts +18 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/model-cache-ttl.d.ts +9 -0
- package/dist/shared/model-cache-ttl.d.ts.map +1 -0
- package/dist/shared/model-resolution.d.ts +35 -0
- package/dist/shared/model-resolution.d.ts.map +1 -0
- package/dist/shared/model-suggestion-retry.d.ts +138 -0
- package/dist/shared/model-suggestion-retry.d.ts.map +1 -0
- package/dist/shared/models-dev-cache.d.ts +156 -0
- package/dist/shared/models-dev-cache.d.ts.map +1 -0
- package/dist/shared/normalize-sdk-response.d.ts +5 -0
- package/dist/shared/normalize-sdk-response.d.ts.map +1 -0
- package/dist/shared/opencode-config-dir-types.d.ts +14 -0
- package/dist/shared/opencode-config-dir-types.d.ts.map +1 -0
- package/dist/shared/opencode-config-dir.d.ts +57 -0
- package/dist/shared/opencode-config-dir.d.ts.map +1 -0
- package/dist/shared/opencode-db-path.d.ts +68 -0
- package/dist/shared/opencode-db-path.d.ts.map +1 -0
- package/dist/shared/pi-executable.d.ts +6 -0
- package/dist/shared/pi-executable.d.ts.map +1 -0
- package/dist/shared/plugin-package-version.d.ts +14 -0
- package/dist/shared/plugin-package-version.d.ts.map +1 -0
- package/dist/shared/project-directory-key.d.ts +26 -0
- package/dist/shared/project-directory-key.d.ts.map +1 -0
- package/dist/shared/prompt-context.d.ts +31 -0
- package/dist/shared/prompt-context.d.ts.map +1 -0
- package/dist/shared/prompt-surface-a1-golden.d.ts +28 -0
- package/dist/shared/prompt-surface-a1-golden.d.ts.map +1 -0
- package/dist/shared/prompt-surface-runtime.d.ts +62 -0
- package/dist/shared/prompt-surface-runtime.d.ts.map +1 -0
- package/dist/shared/prompt-surface.d.ts +53 -0
- package/dist/shared/prompt-surface.d.ts.map +1 -0
- package/dist/shared/provider-response-completion.d.ts +12 -0
- package/dist/shared/provider-response-completion.d.ts.map +1 -0
- package/dist/shared/record-type-guard.d.ts +2 -0
- package/dist/shared/record-type-guard.d.ts.map +1 -0
- package/dist/shared/redaction.d.ts +7 -0
- package/dist/shared/redaction.d.ts.map +1 -0
- package/dist/shared/resolve-fallbacks.d.ts +48 -0
- package/dist/shared/resolve-fallbacks.d.ts.map +1 -0
- package/dist/shared/rpc-client.d.ts +28 -0
- package/dist/shared/rpc-client.d.ts.map +1 -0
- package/dist/shared/rpc-notifications.d.ts +74 -0
- package/dist/shared/rpc-notifications.d.ts.map +1 -0
- package/dist/shared/rpc-server.d.ts +52 -0
- package/dist/shared/rpc-server.d.ts.map +1 -0
- package/dist/shared/rpc-types.d.ts +385 -0
- package/dist/shared/rpc-types.d.ts.map +1 -0
- package/dist/shared/rpc-utils.d.ts +162 -0
- package/dist/shared/rpc-utils.d.ts.map +1 -0
- package/dist/shared/run-token-log.d.ts +13 -0
- package/dist/shared/run-token-log.d.ts.map +1 -0
- package/dist/shared/safe-notification-target.d.ts +23 -0
- package/dist/shared/safe-notification-target.d.ts.map +1 -0
- package/dist/shared/sqlite-context-pragmas.d.ts +12 -0
- package/dist/shared/sqlite-context-pragmas.d.ts.map +1 -0
- package/dist/shared/sqlite-helpers.d.ts +25 -0
- package/dist/shared/sqlite-helpers.d.ts.map +1 -0
- package/dist/shared/sqlite-write-locker-test-support.d.ts +7 -0
- package/dist/shared/sqlite-write-locker-test-support.d.ts.map +1 -0
- package/dist/shared/sqlite.d.ts +163 -0
- package/dist/shared/sqlite.d.ts.map +1 -0
- package/dist/shared/stable-json.d.ts +21 -0
- package/dist/shared/stable-json.d.ts.map +1 -0
- package/dist/shared/status-detail-text.d.ts +4 -0
- package/dist/shared/status-detail-text.d.ts.map +1 -0
- package/dist/shared/status-summary.d.ts +54 -0
- package/dist/shared/status-summary.d.ts.map +1 -0
- package/dist/shared/status-view-check.d.ts +130 -0
- package/dist/shared/status-view-check.d.ts.map +1 -0
- package/dist/shared/status-view.d.ts +230 -0
- package/dist/shared/status-view.d.ts.map +1 -0
- package/dist/shared/storage-permissions.d.ts +29 -0
- package/dist/shared/storage-permissions.d.ts.map +1 -0
- package/dist/shared/subagent-runner.d.ts +231 -0
- package/dist/shared/subagent-runner.d.ts.map +1 -0
- package/dist/shared/summarize-child-stderr.d.ts +2 -0
- package/dist/shared/summarize-child-stderr.d.ts.map +1 -0
- package/dist/shared/system-directive.d.ts +3 -0
- package/dist/shared/system-directive.d.ts.map +1 -0
- package/dist/shared/tag-owner-id.d.ts +19 -0
- package/dist/shared/tag-owner-id.d.ts.map +1 -0
- package/dist/shared/tag-transcript.d.ts +103 -0
- package/dist/shared/tag-transcript.d.ts.map +1 -0
- package/dist/shared/tail-hygiene-status.d.ts +24 -0
- package/dist/shared/tail-hygiene-status.d.ts.map +1 -0
- package/dist/shared/test-temp-dir.d.ts +46 -0
- package/dist/shared/test-temp-dir.d.ts.map +1 -0
- package/dist/shared/transcript.d.ts +251 -0
- package/dist/shared/transcript.d.ts.map +1 -0
- package/dist/shared/user-answer.d.ts +4 -0
- package/dist/shared/user-answer.d.ts.map +1 -0
- package/dist/shared/user-facing-codes.d.ts +135 -0
- package/dist/shared/user-facing-codes.d.ts.map +1 -0
- package/dist/shared/window-geometry.d.ts +121 -0
- package/dist/shared/window-geometry.d.ts.map +1 -0
- package/dist/shared/write-transaction-timing.d.ts +11 -0
- package/dist/shared/write-transaction-timing.d.ts.map +1 -0
- package/dist/shared/xml-unescape.d.ts +9 -0
- package/dist/shared/xml-unescape.d.ts.map +1 -0
- package/dist/tools/ctx-expand/constants.d.ts +3 -0
- package/dist/tools/ctx-expand/constants.d.ts.map +1 -0
- package/dist/tools/ctx-expand/index.d.ts +2 -0
- package/dist/tools/ctx-expand/index.d.ts.map +1 -0
- package/dist/tools/ctx-expand/mode.d.ts +35 -0
- package/dist/tools/ctx-expand/mode.d.ts.map +1 -0
- package/dist/tools/ctx-expand/render.d.ts +47 -0
- package/dist/tools/ctx-expand/render.d.ts.map +1 -0
- package/dist/tools/ctx-expand/tools.d.ts +10 -0
- package/dist/tools/ctx-expand/tools.d.ts.map +1 -0
- package/dist/tools/ctx-expand/types.d.ts +11 -0
- package/dist/tools/ctx-expand/types.d.ts.map +1 -0
- package/dist/tools/ctx-memory/constants.d.ts +3 -0
- package/dist/tools/ctx-memory/constants.d.ts.map +1 -0
- package/dist/tools/ctx-memory/index.d.ts +4 -0
- package/dist/tools/ctx-memory/index.d.ts.map +1 -0
- package/dist/tools/ctx-memory/tools.d.ts +5 -0
- package/dist/tools/ctx-memory/tools.d.ts.map +1 -0
- package/dist/tools/ctx-memory/types.d.ts +38 -0
- package/dist/tools/ctx-memory/types.d.ts.map +1 -0
- package/dist/tools/ctx-memory/verification-recording.d.ts +8 -0
- package/dist/tools/ctx-memory/verification-recording.d.ts.map +1 -0
- package/dist/tools/ctx-note/constants.d.ts +2 -0
- package/dist/tools/ctx-note/constants.d.ts.map +1 -0
- package/dist/tools/ctx-note/index.d.ts +4 -0
- package/dist/tools/ctx-note/index.d.ts.map +1 -0
- package/dist/tools/ctx-note/render.d.ts +67 -0
- package/dist/tools/ctx-note/render.d.ts.map +1 -0
- package/dist/tools/ctx-note/tools.d.ts +13 -0
- package/dist/tools/ctx-note/tools.d.ts.map +1 -0
- package/dist/tools/ctx-note/types.d.ts +14 -0
- package/dist/tools/ctx-note/types.d.ts.map +1 -0
- package/dist/tools/ctx-reduce/constants.d.ts +4 -0
- package/dist/tools/ctx-reduce/constants.d.ts.map +1 -0
- package/dist/tools/ctx-reduce/index.d.ts +4 -0
- package/dist/tools/ctx-reduce/index.d.ts.map +1 -0
- package/dist/tools/ctx-reduce/tools.d.ts +19 -0
- package/dist/tools/ctx-reduce/tools.d.ts.map +1 -0
- package/dist/tools/ctx-reduce/types.d.ts +5 -0
- package/dist/tools/ctx-reduce/types.d.ts.map +1 -0
- package/dist/tools/ctx-search/constants.d.ts +4 -0
- package/dist/tools/ctx-search/constants.d.ts.map +1 -0
- package/dist/tools/ctx-search/date-range.d.ts +9 -0
- package/dist/tools/ctx-search/date-range.d.ts.map +1 -0
- package/dist/tools/ctx-search/index.d.ts +4 -0
- package/dist/tools/ctx-search/index.d.ts.map +1 -0
- package/dist/tools/ctx-search/tools.d.ts +5 -0
- package/dist/tools/ctx-search/tools.d.ts.map +1 -0
- package/dist/tools/ctx-search/types.d.ts +34 -0
- package/dist/tools/ctx-search/types.d.ts.map +1 -0
- package/dist/tools/light-descriptions.d.ts +6 -0
- package/dist/tools/light-descriptions.d.ts.map +1 -0
- package/dist/tools/parameter-descriptions.d.ts +75 -0
- package/dist/tools/parameter-descriptions.d.ts.map +1 -0
- package/dist/tools/unwrap-imitated-reduced-args.d.ts +21 -0
- package/dist/tools/unwrap-imitated-reduced-args.d.ts.map +1 -0
- package/dist/v2/fold/boundary.d.ts +61 -0
- package/dist/v2/fold/boundary.d.ts.map +1 -0
- package/dist/v2/fold/host-media.d.ts +36 -0
- package/dist/v2/fold/host-media.d.ts.map +1 -0
- package/dist/v2/fold/markers.d.ts +7 -0
- package/dist/v2/fold/markers.d.ts.map +1 -0
- package/dist/v2/fold/owner.d.ts +40 -0
- package/dist/v2/fold/owner.d.ts.map +1 -0
- package/dist/v2/fold/restore.d.ts +31 -0
- package/dist/v2/fold/restore.d.ts.map +1 -0
- package/dist/v2/fork-inheritance.d.ts +101 -0
- package/dist/v2/fork-inheritance.d.ts.map +1 -0
- package/dist/v2/hidden-child-cleanup.d.ts +11 -0
- package/dist/v2/hidden-child-cleanup.d.ts.map +1 -0
- package/dist/v2/hidden-child-native.d.ts +29 -0
- package/dist/v2/hidden-child-native.d.ts.map +1 -0
- package/dist/v2/hidden-child-record.d.ts +137 -0
- package/dist/v2/hidden-child-record.d.ts.map +1 -0
- package/dist/v2/hidden-completion.d.ts +57 -0
- package/dist/v2/hidden-completion.d.ts.map +1 -0
- package/dist/v2/hooks/channel2.d.ts +10 -0
- package/dist/v2/hooks/channel2.d.ts.map +1 -0
- package/dist/v2/hooks/commands.d.ts +29 -0
- package/dist/v2/hooks/commands.d.ts.map +1 -0
- package/dist/v2/hooks/context.d.ts +112 -0
- package/dist/v2/hooks/context.d.ts.map +1 -0
- package/dist/v2/hooks/deleted-session-tombstones.d.ts +10 -0
- package/dist/v2/hooks/deleted-session-tombstones.d.ts.map +1 -0
- package/dist/v2/hooks/generate.d.ts +10 -0
- package/dist/v2/hooks/generate.d.ts.map +1 -0
- package/dist/v2/hooks/hidden-child.d.ts +76 -0
- package/dist/v2/hooks/hidden-child.d.ts.map +1 -0
- package/dist/v2/hooks/hidden-terminal-error.d.ts +8 -0
- package/dist/v2/hooks/hidden-terminal-error.d.ts.map +1 -0
- package/dist/v2/hooks/lkg-system.d.ts +11 -0
- package/dist/v2/hooks/lkg-system.d.ts.map +1 -0
- package/dist/v2/hooks/model-limit-cache.d.ts +19 -0
- package/dist/v2/hooks/model-limit-cache.d.ts.map +1 -0
- package/dist/v2/hooks/payload.d.ts +15 -0
- package/dist/v2/hooks/payload.d.ts.map +1 -0
- package/dist/v2/hooks/refusal.d.ts +15 -0
- package/dist/v2/hooks/refusal.d.ts.map +1 -0
- package/dist/v2/hooks/restore-rows.d.ts +29 -0
- package/dist/v2/hooks/restore-rows.d.ts.map +1 -0
- package/dist/v2/hooks/rpc-live-state.d.ts +9 -0
- package/dist/v2/hooks/rpc-live-state.d.ts.map +1 -0
- package/dist/v2/hooks/session-api-gate.d.ts +4 -0
- package/dist/v2/hooks/session-api-gate.d.ts.map +1 -0
- package/dist/v2/hooks/session-project-backfill.d.ts +15 -0
- package/dist/v2/hooks/session-project-backfill.d.ts.map +1 -0
- package/dist/v2/hooks/storage-gate.d.ts +48 -0
- package/dist/v2/hooks/storage-gate.d.ts.map +1 -0
- package/dist/v2/hooks/storage-notice.d.ts +29 -0
- package/dist/v2/hooks/storage-notice.d.ts.map +1 -0
- package/dist/v2/hooks/store.d.ts +58 -0
- package/dist/v2/hooks/store.d.ts.map +1 -0
- package/dist/v2/hooks/tools.d.ts +8 -0
- package/dist/v2/hooks/tools.d.ts.map +1 -0
- package/dist/v2/hooks/types.d.ts +250 -0
- package/dist/v2/hooks/types.d.ts.map +1 -0
- package/dist/v2/hooks/usage-persist.d.ts +31 -0
- package/dist/v2/hooks/usage-persist.d.ts.map +1 -0
- package/dist/v2/hooks/usage-reading.d.ts +46 -0
- package/dist/v2/hooks/usage-reading.d.ts.map +1 -0
- package/dist/v2/server.d.ts +27 -0
- package/dist/v2/server.d.ts.map +1 -0
- package/dist/v2/server.js +76235 -0
- package/dist/v2/store-reader.d.ts +218 -0
- package/dist/v2/store-reader.d.ts.map +1 -0
- package/dist/web/api.d.ts +40 -0
- package/dist/web/api.d.ts.map +1 -0
- package/dist/web/context-store.d.ts +74 -0
- package/dist/web/context-store.d.ts.map +1 -0
- package/dist/web/fixtures.d.ts +53 -0
- package/dist/web/fixtures.d.ts.map +1 -0
- package/dist/web/host-opencode.d.ts +56 -0
- package/dist/web/host-opencode.d.ts.map +1 -0
- package/dist/web/host-pi.d.ts +116 -0
- package/dist/web/host-pi.d.ts.map +1 -0
- package/dist/web/main.d.ts +24 -0
- package/dist/web/main.d.ts.map +1 -0
- package/dist/web/main.js +6071 -0
- package/dist/web/memories.d.ts +67 -0
- package/dist/web/memories.d.ts.map +1 -0
- package/dist/web/server.d.ts +42 -0
- package/dist/web/server.d.ts.map +1 -0
- package/dist/web/types.d.ts +52 -0
- package/dist/web/types.d.ts.map +1 -0
- package/dist/web/ui/favicon.svg +4 -0
- package/dist/web/ui/index.html +36 -0
- package/dist/web/ui/panel.css +8 -0
- package/dist/web/ui/panel.js +373 -0
- package/dist/web/views.d.ts +155 -0
- package/dist/web/views.d.ts.map +1 -0
- package/dist/web/writes.d.ts +86 -0
- package/dist/web/writes.d.ts.map +1 -0
- package/dist/wrapup-orchestrator-z9sqpqjf.js +420 -0
- package/index.js +1 -0
- package/package.json +84 -4
- package/src/agents/historian.ts +3 -0
- package/src/agents/language-directive.test.ts +129 -0
- package/src/agents/language-directive.ts +113 -0
- package/src/agents/magic-context-prompt.language.test.ts +37 -0
- package/src/agents/magic-context-prompt.test.ts +520 -0
- package/src/agents/magic-context-prompt.ts +196 -0
- package/src/agents/memory-maintainer.test.ts +249 -0
- package/src/agents/memory-maintainer.ts +374 -0
- package/src/config/agent-disable.ts +58 -0
- package/src/config/compaction-accessor-guard.test.ts +81 -0
- package/src/config/compaction-backcompat.test.ts +52 -0
- package/src/config/config-paths.ts +42 -0
- package/src/config/index.test.ts +1252 -0
- package/src/config/index.ts +762 -0
- package/src/config/latch-permanence-guard.test.ts +218 -0
- package/src/config/live-run-config.test.ts +139 -0
- package/src/config/live-run-config.ts +79 -0
- package/src/config/live-schema-drift.test.ts +67 -0
- package/src/config/live-snapshot.test.ts +86 -0
- package/src/config/live-snapshot.ts +187 -0
- package/src/config/migrate-experimental.ts +92 -0
- package/src/config/misplaced-agent-model.test.ts +55 -0
- package/src/config/profiles.ts +106 -0
- package/src/config/project-config-trust-boundary.test.ts +185 -0
- package/src/config/project-security.hostile-matrix.test.ts +281 -0
- package/src/config/project-security.test.ts +329 -0
- package/src/config/project-security.ts +940 -0
- package/src/config/protected-tokens.test.ts +229 -0
- package/src/config/prune-config-leaf.test.ts +78 -0
- package/src/config/prune-config-leaf.ts +67 -0
- package/src/config/raw-loader.test.ts +389 -0
- package/src/config/raw-loader.ts +435 -0
- package/src/config/removed-agent-config.ts +45 -0
- package/src/config/removed-agent-source-fence.test.ts +53 -0
- package/src/config/removed-config-keys.test.ts +106 -0
- package/src/config/schema/agent-overrides.ts +45 -0
- package/src/config/schema/magic-context.test.ts +434 -0
- package/src/config/schema/magic-context.ts +1019 -0
- package/src/config/variable.test.ts +324 -0
- package/src/config/variable.ts +192 -0
- package/src/shared/__fixtures__/window-overlay.v1.json +337 -0
- package/src/shared/announcement.test.ts +198 -0
- package/src/shared/announcement.ts +145 -0
- package/src/shared/assistant-message-extractor.test.ts +47 -0
- package/src/shared/assistant-message-extractor.ts +156 -0
- package/src/shared/auto-update-provenance.ts +42 -0
- package/src/shared/bounded-session-map.test.ts +97 -0
- package/src/shared/bounded-session-map.ts +84 -0
- package/src/shared/builtin-commands.ts +46 -0
- package/src/shared/cache-ttl-display.test.ts +84 -0
- package/src/shared/cache-ttl-display.ts +58 -0
- package/src/shared/cache-ttl-seed.ts +23 -0
- package/src/shared/child-session-teardown.test.ts +241 -0
- package/src/shared/child-session-teardown.ts +66 -0
- package/src/shared/commit-detection.test.ts +63 -0
- package/src/shared/commit-detection.ts +53 -0
- package/src/shared/config-diagnostics.test.ts +29 -0
- package/src/shared/config-diagnostics.ts +64 -0
- package/src/shared/conflict-detector.test.ts +780 -0
- package/src/shared/conflict-detector.ts +596 -0
- package/src/shared/conflict-fixer.test.ts +608 -0
- package/src/shared/conflict-fixer.ts +295 -0
- package/src/shared/context-limit-provenance.ts +6 -0
- package/src/shared/data-path.test.ts +352 -0
- package/src/shared/data-path.ts +310 -0
- package/src/shared/error-message.test.ts +94 -0
- package/src/shared/error-message.ts +115 -0
- package/src/shared/escalation-bands.test.ts +23 -0
- package/src/shared/escalation-bands.ts +18 -0
- package/src/shared/format-bytes.ts +5 -0
- package/src/shared/format-threshold.ts +54 -0
- package/src/shared/harness-provider-map.test.ts +176 -0
- package/src/shared/harness-provider-map.ts +130 -0
- package/src/shared/harness.ts +76 -0
- package/src/shared/hidden-variant-warnings.ts +21 -0
- package/src/shared/historian-tool-defaults.json +13 -0
- package/src/shared/historian-tool-expansions.ts +18 -0
- package/src/shared/historian-tool-template.ts +248 -0
- package/src/shared/historian-transient-error.test.ts +36 -0
- package/src/shared/historian-transient-error.ts +22 -0
- package/src/shared/host-limitations.ts +43 -0
- package/src/shared/index.ts +7 -0
- package/src/shared/internal-initiator-marker.ts +1 -0
- package/src/shared/jsonc-edit.ts +387 -0
- package/src/shared/jsonc-parser.test.ts +46 -0
- package/src/shared/jsonc-parser.ts +283 -0
- package/src/shared/keep-subagents.test.ts +39 -0
- package/src/shared/keep-subagents.ts +28 -0
- package/src/shared/logger.test.ts +292 -0
- package/src/shared/logger.ts +248 -0
- package/src/shared/model-cache-ttl.test.ts +40 -0
- package/src/shared/model-cache-ttl.ts +58 -0
- package/src/shared/model-resolution.test.ts +132 -0
- package/src/shared/model-resolution.ts +158 -0
- package/src/shared/model-suggestion-retry.test.ts +698 -0
- package/src/shared/model-suggestion-retry.ts +838 -0
- package/src/shared/models-dev-cache.test.ts +720 -0
- package/src/shared/models-dev-cache.ts +661 -0
- package/src/shared/normalize-sdk-response.ts +40 -0
- package/src/shared/opencode-config-dir-types.ts +15 -0
- package/src/shared/opencode-config-dir.ts +111 -0
- package/src/shared/opencode-db-path.test.ts +389 -0
- package/src/shared/opencode-db-path.ts +396 -0
- package/src/shared/opencode-host-generation.test.ts +29 -0
- package/src/shared/pi-executable.ts +20 -0
- package/src/shared/plugin-package-version.ts +52 -0
- package/src/shared/project-directory-key.test.ts +111 -0
- package/src/shared/project-directory-key.ts +54 -0
- package/src/shared/prompt-context.ts +135 -0
- package/src/shared/prompt-surface-a1-golden.md +407 -0
- package/src/shared/prompt-surface-a1-golden.ts +41 -0
- package/src/shared/prompt-surface-runtime.test.ts +190 -0
- package/src/shared/prompt-surface-runtime.ts +263 -0
- package/src/shared/prompt-surface.test.ts +195 -0
- package/src/shared/prompt-surface.ts +162 -0
- package/src/shared/provider-response-completion.ts +23 -0
- package/src/shared/record-type-guard.ts +3 -0
- package/src/shared/redaction.test.ts +134 -0
- package/src/shared/redaction.ts +298 -0
- package/src/shared/resolve-fallbacks.test.ts +114 -0
- package/src/shared/resolve-fallbacks.ts +95 -0
- package/src/shared/rpc-async-probes.test.ts +320 -0
- package/src/shared/rpc-client.test.ts +576 -0
- package/src/shared/rpc-client.ts +218 -0
- package/src/shared/rpc-notifications.test.ts +151 -0
- package/src/shared/rpc-notifications.ts +222 -0
- package/src/shared/rpc-server.ts +431 -0
- package/src/shared/rpc-types.ts +386 -0
- package/src/shared/rpc-utils.test.ts +822 -0
- package/src/shared/rpc-utils.ts +1146 -0
- package/src/shared/run-token-log.test.ts +65 -0
- package/src/shared/run-token-log.ts +39 -0
- package/src/shared/safe-notification-target.test.ts +97 -0
- package/src/shared/safe-notification-target.ts +102 -0
- package/src/shared/session-messages-bounded.test.ts +112 -0
- package/src/shared/sqlite-acquisition-fence.test.ts +133 -0
- package/src/shared/sqlite-acquisition-routing.test.ts +145 -0
- package/src/shared/sqlite-bind-style.test.ts +80 -0
- package/src/shared/sqlite-context-pragmas.ts +24 -0
- package/src/shared/sqlite-helpers.ts +44 -0
- package/src/shared/sqlite-import-fence.test.ts +19 -0
- package/src/shared/sqlite-pass-scope.test.ts +154 -0
- package/src/shared/sqlite-transaction-mode-guard.test.ts +234 -0
- package/src/shared/sqlite-write-locker-test-support.ts +63 -0
- package/src/shared/sqlite.test.ts +58 -0
- package/src/shared/sqlite.ts +988 -0
- package/src/shared/stable-json.test.ts +87 -0
- package/src/shared/stable-json.ts +37 -0
- package/src/shared/status-detail-text.test.ts +194 -0
- package/src/shared/status-detail-text.ts +7 -0
- package/src/shared/status-summary.ts +189 -0
- package/src/shared/status-view-check.test.ts +252 -0
- package/src/shared/status-view-check.ts +519 -0
- package/src/shared/status-view.test.ts +395 -0
- package/src/shared/status-view.ts +794 -0
- package/src/shared/storage-busy.test.ts +73 -0
- package/src/shared/storage-permissions.test.ts +190 -0
- package/src/shared/storage-permissions.ts +212 -0
- package/src/shared/subagent-runner.ts +240 -0
- package/src/shared/summarize-child-stderr.test.ts +55 -0
- package/src/shared/summarize-child-stderr.ts +33 -0
- package/src/shared/system-directive.ts +9 -0
- package/src/shared/tag-owner-id.test.ts +33 -0
- package/src/shared/tag-owner-id.ts +29 -0
- package/src/shared/tag-transcript.test.ts +554 -0
- package/src/shared/tag-transcript.ts +1400 -0
- package/src/shared/tail-hygiene-status.ts +73 -0
- package/src/shared/test-temp-dir.test.ts +84 -0
- package/src/shared/test-temp-dir.ts +192 -0
- package/src/shared/transcript.ts +274 -0
- package/src/shared/user-answer.test.ts +12 -0
- package/src/shared/user-answer.ts +17 -0
- package/src/shared/user-facing-codes.test.ts +82 -0
- package/src/shared/user-facing-codes.ts +180 -0
- package/src/shared/window-geometry.test.ts +405 -0
- package/src/shared/window-geometry.ts +726 -0
- package/src/shared/windows-hidden-spawns.test.ts +133 -0
- package/src/shared/write-transaction-attribution.test.ts +214 -0
- package/src/shared/write-transaction-timing.ts +26 -0
- package/src/shared/xml-unescape.ts +19 -0
- package/README.md +0 -3
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { getHarness, type HarnessId } from "./harness";
|
|
5
|
+
import { createTestTempDir } from "./test-temp-dir";
|
|
6
|
+
|
|
7
|
+
export function getDataDir(): string {
|
|
8
|
+
return process.env.XDG_DATA_HOME ?? path.join(os.homedir(), ".local", "share");
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Per-harness scratch directory under the OS temp dir.
|
|
13
|
+
*
|
|
14
|
+
* Layout:
|
|
15
|
+
* - OpenCode: `${os.tmpdir()}/opencode/magic-context/`
|
|
16
|
+
* - Pi: `${os.tmpdir()}/pi/magic-context/`
|
|
17
|
+
*
|
|
18
|
+
* Why a per-harness subtree of `os.tmpdir()`:
|
|
19
|
+
* 1. OpenCode Desktop runs as an Electron app with a permission sandbox.
|
|
20
|
+
* Writing to arbitrary tmp paths can trigger user-visible permission
|
|
21
|
+
* prompts; the `${tmpdir}/opencode/` subtree is allow-listed by
|
|
22
|
+
* OpenCode, so anything we put under it never asks for permission.
|
|
23
|
+
* 2. Splitting harnesses keeps their logs and historian dump directories
|
|
24
|
+
* cleanly separated. `doctor --issue` for each harness reports diagnostics
|
|
25
|
+
* from the matching subtree, so issue reports do not include another
|
|
26
|
+
* harness's log noise.
|
|
27
|
+
* 3. Pi has no permission sandbox, so the path choice is purely
|
|
28
|
+
* cosmetic for Pi — it just keeps the layout symmetric.
|
|
29
|
+
*
|
|
30
|
+
* Pass an explicit `harness` only when the caller already knows the
|
|
31
|
+
* harness without relying on the global `setHarness()` state (e.g. the
|
|
32
|
+
* CLI's doctor commands, which target a specific harness regardless of
|
|
33
|
+
* which plugin is loaded). Production runtime callers should omit it so
|
|
34
|
+
* the helper picks up the boot-time harness automatically.
|
|
35
|
+
*/
|
|
36
|
+
export function getMagicContextTempDir(harness: HarnessId = getHarness()): string {
|
|
37
|
+
return path.join(os.tmpdir(), harness, "magic-context");
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Standard log file path the plugin writes to. Each harness writes to a
|
|
42
|
+
* separate log under its own subtree so a machine running multiple harnesses
|
|
43
|
+
* does not interleave session traces.
|
|
44
|
+
*
|
|
45
|
+
* The plugin's buffered logger calls this on every flush rather than
|
|
46
|
+
* caching, so the boot-time `setHarness()` call is reflected in the next
|
|
47
|
+
* flush.
|
|
48
|
+
*/
|
|
49
|
+
export function getMagicContextLogPath(harness: HarnessId = getHarness()): string {
|
|
50
|
+
// An explicit override wins over the harness temp-dir default, so users on
|
|
51
|
+
// sandboxed/ephemeral setups (Docker, CI) can point the diagnostic log at a
|
|
52
|
+
// persistent or shared path. Blank/whitespace is treated as unset.
|
|
53
|
+
const envPath = process.env.MMC_LOG_PATH?.trim();
|
|
54
|
+
if (envPath) return envPath;
|
|
55
|
+
return path.join(getMagicContextTempDir(harness), "magic-context.log");
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Directory used for both historian validation-failure dumps and the
|
|
60
|
+
* existing-state offload XMLs that large historian/recomp passes write
|
|
61
|
+
* before invoking the model. Per-harness so dumps from different
|
|
62
|
+
* harnesses don't collide on filename and so `doctor --issue` for each
|
|
63
|
+
* harness reports only its own historian artifacts.
|
|
64
|
+
*/
|
|
65
|
+
export function getMagicContextHistorianDir(harness: HarnessId = getHarness()): string {
|
|
66
|
+
return path.join(getMagicContextTempDir(harness), "historian");
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Project-local magic-context artifact directory.
|
|
71
|
+
*
|
|
72
|
+
* Layout: `<project-directory>/.mmc/magic-context/`
|
|
73
|
+
*
|
|
74
|
+
* Used for artifacts that the historian/recomp pipeline writes during a run
|
|
75
|
+
* and that the model is asked to read via its native Read tool. OpenCode's
|
|
76
|
+
* `external_directory` permission system asks the user before reading any
|
|
77
|
+
* file outside the project directory or its worktree, which interrupts every
|
|
78
|
+
* historian run when artifacts live under `os.tmpdir()`. Writing under the
|
|
79
|
+
* project's own `.mmc/` subtree falls inside the project boundary and
|
|
80
|
+
* never triggers a permission prompt.
|
|
81
|
+
*
|
|
82
|
+
* `.mmc/` is the shared MMC per-project dir (also holds the
|
|
83
|
+
* project config `mmc.jsonc`). Because these artifacts are transient
|
|
84
|
+
* debug dumps that shouldn't dirty the user's repo, the first write also drops
|
|
85
|
+
* a fenced-block `.gitignore` entry ignoring this subdir (see
|
|
86
|
+
* ensureMmcArtifactGitignore) while leaving `*.jsonc` config tracked.
|
|
87
|
+
*
|
|
88
|
+
* Migration note: artifacts used to live under `.opencode/magic-context/`. We
|
|
89
|
+
* cut the write path forward only — old transient dumps are git-ignored and
|
|
90
|
+
* regenerated, so they are intentionally NOT migrated (left to be cleaned).
|
|
91
|
+
*
|
|
92
|
+
* Logger does NOT use this — log files stay in the per-harness tmp subtree
|
|
93
|
+
* because they are written by the plugin process itself (no model-side Read
|
|
94
|
+
* tool call, no permission prompt) and span sessions/projects.
|
|
95
|
+
*/
|
|
96
|
+
export function getProjectMagicContextDir(directory: string): string {
|
|
97
|
+
return path.join(directory, ".mmc", "magic-context");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const GITIGNORE_GUARD_OPEN = "# >>> mmc:magic-context";
|
|
101
|
+
const GITIGNORE_GUARD_CLOSE = "# <<< mmc:magic-context";
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Ensure `<project>/.mmc/.gitignore` ignores Magic Context's transient
|
|
105
|
+
* artifact subdir (`magic-context/`) without touching anything else in the
|
|
106
|
+
* shared `.mmc/` dir — the project config `mmc.jsonc` stays
|
|
107
|
+
* tracked, and any sibling module's (e.g. AFT's) entries are preserved.
|
|
108
|
+
*
|
|
109
|
+
* Uses the shared MMC fenced-block convention: each module owns exactly
|
|
110
|
+
* its `# >>> mmc:<module>` … `# <<< mmc:<module>` block and appends
|
|
111
|
+
* it idempotently (no-op when its own guard line is already present). This lets
|
|
112
|
+
* multiple mmc modules coexist in one `.gitignore` without clobbering.
|
|
113
|
+
*
|
|
114
|
+
* Best-effort: a write failure never blocks an artifact write (the caller
|
|
115
|
+
* already degrades gracefully on its own write failures).
|
|
116
|
+
*/
|
|
117
|
+
export function ensureMmcArtifactGitignore(directory: string): void {
|
|
118
|
+
try {
|
|
119
|
+
const mmcDir = path.join(directory, ".mmc");
|
|
120
|
+
const gitignorePath = path.join(mmcDir, ".gitignore");
|
|
121
|
+
let existing = "";
|
|
122
|
+
if (existsSync(gitignorePath)) {
|
|
123
|
+
existing = readFileSync(gitignorePath, "utf8");
|
|
124
|
+
// Already fenced by us — nothing to do.
|
|
125
|
+
if (existing.includes(GITIGNORE_GUARD_OPEN)) return;
|
|
126
|
+
}
|
|
127
|
+
const block = `${GITIGNORE_GUARD_OPEN}\nmagic-context/\n${GITIGNORE_GUARD_CLOSE}\n`;
|
|
128
|
+
const needsLeadingNewline = existing.length > 0 && !existing.endsWith("\n");
|
|
129
|
+
const next = existing + (needsLeadingNewline ? "\n" : "") + block;
|
|
130
|
+
mkdirSync(mmcDir, { recursive: true });
|
|
131
|
+
writeFileSync(gitignorePath, next, "utf8");
|
|
132
|
+
} catch {
|
|
133
|
+
// best-effort — never block an artifact write on the gitignore.
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Project-local historian artifact directory.
|
|
139
|
+
*
|
|
140
|
+
* Layout: `<project-directory>/.opencode/magic-context/historian/`
|
|
141
|
+
*
|
|
142
|
+
* Used for:
|
|
143
|
+
* - existing-state offload XMLs that long historian/recomp passes write
|
|
144
|
+
* before invoking the model (the model reads the file via Read tool)
|
|
145
|
+
* - validation-failure dump XMLs preserved for debugging
|
|
146
|
+
*
|
|
147
|
+
* Callers must `mkdirSync(dir, { recursive: true })` before writing — the
|
|
148
|
+
* `.opencode/` parent may not exist on a fresh project, and write failures
|
|
149
|
+
* here must degrade gracefully (e.g. historian falls back to inline state).
|
|
150
|
+
*/
|
|
151
|
+
export function getProjectMagicContextHistorianDir(directory: string): string {
|
|
152
|
+
return path.join(getProjectMagicContextDir(directory), "historian");
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export function getOpenCodeStorageDir(): string {
|
|
156
|
+
return path.join(getDataDir(), "opencode", "storage");
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Resolve the shared magic-context storage directory.
|
|
161
|
+
*
|
|
162
|
+
* Magic-context's own data (compartments, facts, memories, embeddings, dream
|
|
163
|
+
* runs, notes, etc.) lives at this path regardless of which harness loaded the
|
|
164
|
+
* plugin (OpenCode or Pi). This enables:
|
|
165
|
+
* - Shared project memories across harnesses
|
|
166
|
+
* - Shared embedding cache
|
|
167
|
+
* - Shared Dreamer runs (one per project per machine)
|
|
168
|
+
* - Future cross-harness session migration
|
|
169
|
+
*
|
|
170
|
+
* Resolution precedence: test isolation, MMC_STORAGE_DIR, XDG data
|
|
171
|
+
* home, then the platform default. The explicit override is a complete storage
|
|
172
|
+
* directory and must be absolute so every process on a host selects one store.
|
|
173
|
+
*
|
|
174
|
+
* TEST-ISOLATION GUARD. `openDatabase()` has been guarded in
|
|
175
|
+
* `resolveDatabasePath()` since the 2026-06-01 (v26) and 2026-06-19 (v41)
|
|
176
|
+
* incidents, in which unisolated tests migrated the user's REAL shared DB.
|
|
177
|
+
* Every OTHER caller bypassed that guard — notably the CLI doctors, which
|
|
178
|
+
* build `join(getMagicContextStorageDir(), "context.db")` themselves and run
|
|
179
|
+
* `PRAGMA integrity_check` against it. A test that deletes XDG_DATA_HOME to
|
|
180
|
+
* exercise path fallbacks cannot restore isolation by setting
|
|
181
|
+
* `process.env.HOME`: bun caches `os.homedir()` at startup, so `getDataDir()`
|
|
182
|
+
* still resolves to the real home. MMC_TEST_DATA_DIR — set by
|
|
183
|
+
* `packages/plugin/test-preload.ts`, and restored by any test that touches it
|
|
184
|
+
* — is honored here, so the preload's "cannot be defeated" guarantee holds for
|
|
185
|
+
* every caller, not just `openDatabase()`. It is never set in production.
|
|
186
|
+
*
|
|
187
|
+
* CWD-INDEPENDENT BACKSTOP. The preload only runs when `bun test`'s CWD has a
|
|
188
|
+
* bunfig wiring `[test] preload`. A run from a dir WITHOUT that wiring (a
|
|
189
|
+
* package missing its bunfig, or a brand-new one) executes every *.test.ts with
|
|
190
|
+
* NO preload, and this resolver would hand back the REAL shared path — which is
|
|
191
|
+
* how the live DB reached v41. Bun sets NODE_ENV=test for EVERY `bun test`
|
|
192
|
+
* regardless of CWD, and production never sets it, so that window redirects to
|
|
193
|
+
* a memoized throwaway dir instead. It lives here rather than in
|
|
194
|
+
* `resolveDatabasePath()` so direct callers (the CLI doctors' own
|
|
195
|
+
* `PRAGMA integrity_check`, announcements, the models.dev cache) are covered
|
|
196
|
+
* too — they never go through the DB resolver.
|
|
197
|
+
*
|
|
198
|
+
* In production, MMC_STORAGE_DIR takes precedence over XDG_DATA_HOME.
|
|
199
|
+
* Test isolation remains authoritative so an ambient override cannot redirect
|
|
200
|
+
* a test into a user's real shared database.
|
|
201
|
+
*/
|
|
202
|
+
export type MagicContextStorageSource =
|
|
203
|
+
| "test isolation"
|
|
204
|
+
| "environment override"
|
|
205
|
+
| "XDG_DATA_HOME"
|
|
206
|
+
| "platform default";
|
|
207
|
+
|
|
208
|
+
export interface MagicContextStorageResolution {
|
|
209
|
+
path: string;
|
|
210
|
+
source: MagicContextStorageSource;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export function getMagicContextStorageResolution(): MagicContextStorageResolution {
|
|
214
|
+
const testDataDir = process.env.MMC_TEST_DATA_DIR?.trim();
|
|
215
|
+
if (testDataDir) {
|
|
216
|
+
const perTestDataHome = process.env.XDG_DATA_HOME?.trim();
|
|
217
|
+
if (perTestDataHome && path.resolve(perTestDataHome) !== path.resolve(testDataDir)) {
|
|
218
|
+
return {
|
|
219
|
+
path: path.join(perTestDataHome, "mmc"),
|
|
220
|
+
source: "test isolation",
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
path: path.join(testDataDir, "mmc"),
|
|
225
|
+
source: "test isolation",
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
if (process.env.NODE_ENV === "test") {
|
|
229
|
+
return { path: getTestBackstopStorageDir(), source: "test isolation" };
|
|
230
|
+
}
|
|
231
|
+
const explicitStorageDir = process.env.MMC_STORAGE_DIR?.trim();
|
|
232
|
+
if (explicitStorageDir) {
|
|
233
|
+
if (!path.isAbsolute(explicitStorageDir)) {
|
|
234
|
+
throw new Error("MMC_STORAGE_DIR must be an absolute path");
|
|
235
|
+
}
|
|
236
|
+
return { path: explicitStorageDir, source: "environment override" };
|
|
237
|
+
}
|
|
238
|
+
const xdgDataHome = process.env.XDG_DATA_HOME?.trim();
|
|
239
|
+
if (xdgDataHome) {
|
|
240
|
+
return {
|
|
241
|
+
path: path.join(xdgDataHome, "mmc"),
|
|
242
|
+
source: "XDG_DATA_HOME",
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
path: path.join(os.homedir(), ".local", "share", "mmc"),
|
|
247
|
+
source: "platform default",
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export function getMagicContextStorageDir(): string {
|
|
252
|
+
return getMagicContextStorageResolution().path;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
let testBackstopStorageDir: string | null = null;
|
|
256
|
+
let testBackstopWarned = false;
|
|
257
|
+
|
|
258
|
+
/**
|
|
259
|
+
* Memoized per process so repeated calls in the same unisolated test resolve to
|
|
260
|
+
* the SAME path — `openDatabase()` caches by path, and a fresh temp dir per call
|
|
261
|
+
* would defeat that cache and hand back different DB handles.
|
|
262
|
+
*/
|
|
263
|
+
function getTestBackstopStorageDir(): string {
|
|
264
|
+
if (!testBackstopStorageDir) {
|
|
265
|
+
// Registered so the test preload's exit cleanup removes it; the preload's
|
|
266
|
+
// stale sweep also recognizes the prefix.
|
|
267
|
+
const { dir } = createTestTempDir("mc-test-db-backstop-");
|
|
268
|
+
testBackstopStorageDir = path.join(dir, "mmc");
|
|
269
|
+
}
|
|
270
|
+
if (!testBackstopWarned) {
|
|
271
|
+
testBackstopWarned = true;
|
|
272
|
+
// Deliberately console, not the logger: logger.ts imports this module.
|
|
273
|
+
console.warn(
|
|
274
|
+
"[magic-context] TEST BACKSTOP: NODE_ENV=test with no MMC_TEST_DATA_DIR " +
|
|
275
|
+
`— redirecting storage to a throwaway temp dir (${testBackstopStorageDir}) so no ` +
|
|
276
|
+
"test can touch the user's real shared database. Wire `[test] preload` in this " +
|
|
277
|
+
"package's bunfig.toml.",
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
return testBackstopStorageDir;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Legacy magic-context storage directory used by the OpenCode plugin before the
|
|
285
|
+
* shared mmc path. Used only for one-time migration of existing data into
|
|
286
|
+
* the new shared location. The legacy directory is left in place after copy so
|
|
287
|
+
* users can roll back if needed; manual cleanup is safe after one stable
|
|
288
|
+
* release.
|
|
289
|
+
*/
|
|
290
|
+
export function getLegacyOpenCodeMagicContextStorageDir(): string {
|
|
291
|
+
return path.join(getOpenCodeStorageDir(), "plugin", "magic-context");
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Resolve OpenCode's cache base directory.
|
|
296
|
+
*
|
|
297
|
+
* OpenCode uses the `xdg-basedir` package, which — on every platform, including
|
|
298
|
+
* Windows — falls back to `<homedir>/.cache` when `XDG_CACHE_HOME` is unset.
|
|
299
|
+
* A previous Windows-specific branch that resolved to `%LOCALAPPDATA%` did not
|
|
300
|
+
* match OpenCode's own resolution and caused `doctor --force` to target a
|
|
301
|
+
* non-existent directory, leaving the real cache at `C:\Users\<user>\.cache`
|
|
302
|
+
* untouched.
|
|
303
|
+
*/
|
|
304
|
+
export function getCacheDir(): string {
|
|
305
|
+
return process.env.XDG_CACHE_HOME ?? path.join(os.homedir(), ".cache");
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
export function getOpenCodeCacheDir(): string {
|
|
309
|
+
return path.join(getCacheDir(), "opencode");
|
|
310
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { describe, expect, it } from "bun:test";
|
|
2
|
+
import { describeError, getErrorMessage } from "./error-message";
|
|
3
|
+
|
|
4
|
+
describe("describeError", () => {
|
|
5
|
+
it("extracts name and message from standard Error", () => {
|
|
6
|
+
const err = new TypeError("boom");
|
|
7
|
+
const desc = describeError(err);
|
|
8
|
+
expect(desc.name).toBe("TypeError");
|
|
9
|
+
expect(desc.message).toBe("boom");
|
|
10
|
+
expect(desc.brief).toContain("TypeError");
|
|
11
|
+
expect(desc.brief).toContain('message="boom"');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
it("surfaces class name when message is empty (NotFoundError case)", () => {
|
|
15
|
+
class NotFoundError extends Error {
|
|
16
|
+
constructor() {
|
|
17
|
+
super("");
|
|
18
|
+
this.name = "NotFoundError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const err = new NotFoundError();
|
|
22
|
+
const desc = describeError(err);
|
|
23
|
+
expect(desc.name).toBe("NotFoundError");
|
|
24
|
+
expect(desc.message).toBe("");
|
|
25
|
+
// brief must still carry a useful signal even with empty message
|
|
26
|
+
expect(desc.brief).toContain("NotFoundError");
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it("falls back to constructor.name when .name is missing", () => {
|
|
30
|
+
// Simulate an SDK-shaped object where .name is an empty string
|
|
31
|
+
const err = Object.assign(new Error("x"), { name: "" });
|
|
32
|
+
const desc = describeError(err);
|
|
33
|
+
// Falls back to constructor.name ("Error")
|
|
34
|
+
expect(desc.name).toBe("Error");
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("extracts status/code fields from HTTP-style errors", () => {
|
|
38
|
+
const err = Object.assign(new Error("not found"), {
|
|
39
|
+
status: 404,
|
|
40
|
+
code: "ENOTFOUND",
|
|
41
|
+
});
|
|
42
|
+
const desc = describeError(err);
|
|
43
|
+
expect(desc.status).toBe("404");
|
|
44
|
+
expect(desc.code).toBe("ENOTFOUND");
|
|
45
|
+
expect(desc.brief).toContain("status=404");
|
|
46
|
+
expect(desc.brief).toContain("code=ENOTFOUND");
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("captures first stack frames in stackHead", () => {
|
|
50
|
+
const err = new Error("with stack");
|
|
51
|
+
const desc = describeError(err);
|
|
52
|
+
expect(desc.stackHead).toBeDefined();
|
|
53
|
+
expect(desc.stackHead?.length).toBeGreaterThan(0);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("handles non-Error thrown values", () => {
|
|
57
|
+
const desc = describeError("plain string");
|
|
58
|
+
expect(desc.brief).toContain("plain string");
|
|
59
|
+
expect(desc.stringForm).toContain("plain string");
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("handles objects without .message", () => {
|
|
63
|
+
const desc = describeError({ name: "WeirdError" });
|
|
64
|
+
expect(desc.name).toBe("WeirdError");
|
|
65
|
+
expect(desc.message).toBe("");
|
|
66
|
+
expect(desc.brief).toContain("WeirdError");
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("handles undefined/null", () => {
|
|
70
|
+
expect(describeError(undefined).brief).toBeTruthy();
|
|
71
|
+
expect(describeError(null).brief).toBeTruthy();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it("surfaces cause name when present", () => {
|
|
75
|
+
const cause = new TypeError("inner");
|
|
76
|
+
const outer = new Error("outer");
|
|
77
|
+
(outer as unknown as { cause: unknown }).cause = cause;
|
|
78
|
+
const desc = describeError(outer);
|
|
79
|
+
expect(desc.causeName).toBe("TypeError");
|
|
80
|
+
expect(desc.brief).toContain("cause=TypeError");
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
it("clips very long messages in brief", () => {
|
|
84
|
+
const long = "x".repeat(1000);
|
|
85
|
+
const err = new Error(long);
|
|
86
|
+
const desc = describeError(err);
|
|
87
|
+
expect(desc.brief.length).toBeLessThan(500);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
it("getErrorMessage still works as before", () => {
|
|
91
|
+
expect(getErrorMessage(new Error("foo"))).toBe("foo");
|
|
92
|
+
expect(getErrorMessage("bar")).toBe("bar");
|
|
93
|
+
});
|
|
94
|
+
});
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export function getErrorMessage(error: unknown): string {
|
|
2
|
+
return error instanceof Error ? error.message : String(error);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Produce a rich, safe-to-log description of any thrown value.
|
|
7
|
+
*
|
|
8
|
+
* Motivated by SDK errors whose `.message` is empty while `.name`/`toString()`
|
|
9
|
+
* carry the actual signal (e.g. `NotFoundError` with no message on OpenCode
|
|
10
|
+
* session-delete races). Using {@link getErrorMessage} alone erases that signal.
|
|
11
|
+
*
|
|
12
|
+
* Captures:
|
|
13
|
+
* - `name` from the Error (defaults to `constructor.name`)
|
|
14
|
+
* - `message` (may be empty)
|
|
15
|
+
* - first few stack frames
|
|
16
|
+
* - `String(error)` so objects and custom toString surfaces are visible
|
|
17
|
+
* - Common HTTP-shape fields (`status`, `statusCode`, `code`)
|
|
18
|
+
* - `cause` chain summary (first level only)
|
|
19
|
+
*
|
|
20
|
+
* Returns a compact, single-line-friendly string suitable for log lines,
|
|
21
|
+
* plus a structured object for callers that want individual fields.
|
|
22
|
+
*/
|
|
23
|
+
export interface ErrorDescription {
|
|
24
|
+
name: string;
|
|
25
|
+
message: string;
|
|
26
|
+
status?: string;
|
|
27
|
+
code?: string;
|
|
28
|
+
causeName?: string;
|
|
29
|
+
stackHead?: string;
|
|
30
|
+
stringForm: string;
|
|
31
|
+
/** Best short summary for human-readable logs. Never empty. */
|
|
32
|
+
brief: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function readString(value: unknown): string | undefined {
|
|
36
|
+
if (typeof value === "string" && value.length > 0) return value;
|
|
37
|
+
if (typeof value === "number") return String(value);
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function clip(value: string, max: number): string {
|
|
42
|
+
if (value.length <= max) return value;
|
|
43
|
+
return `${value.slice(0, max)}…`;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function describeError(error: unknown): ErrorDescription {
|
|
47
|
+
const stringForm = clip(safeString(error), 400);
|
|
48
|
+
|
|
49
|
+
if (!(error instanceof Error) && !(error && typeof error === "object")) {
|
|
50
|
+
return {
|
|
51
|
+
name: typeof error,
|
|
52
|
+
message: "",
|
|
53
|
+
stringForm,
|
|
54
|
+
brief: stringForm || "<empty>",
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const obj = error as Record<string, unknown>;
|
|
59
|
+
const nameFromField = readString(obj.name);
|
|
60
|
+
const nameFromCtor = error?.constructor?.name;
|
|
61
|
+
const name = nameFromField ?? nameFromCtor ?? "Error";
|
|
62
|
+
|
|
63
|
+
const message = readString(obj.message) ?? "";
|
|
64
|
+
const status = readString(obj.status) ?? readString(obj.statusCode);
|
|
65
|
+
const code = readString(obj.code);
|
|
66
|
+
|
|
67
|
+
let causeName: string | undefined;
|
|
68
|
+
const cause = obj.cause;
|
|
69
|
+
if (cause && typeof cause === "object") {
|
|
70
|
+
const causeRecord = cause as Record<string, unknown>;
|
|
71
|
+
causeName =
|
|
72
|
+
readString(causeRecord.name) ??
|
|
73
|
+
(cause as { constructor?: { name?: string } }).constructor?.name;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const stack = readString(obj.stack);
|
|
77
|
+
const stackHead = stack
|
|
78
|
+
? stack
|
|
79
|
+
.split("\n")
|
|
80
|
+
.slice(0, 4)
|
|
81
|
+
.map((l) => l.trim())
|
|
82
|
+
.filter((l) => l.length > 0)
|
|
83
|
+
.join(" | ")
|
|
84
|
+
: undefined;
|
|
85
|
+
|
|
86
|
+
const briefParts: string[] = [];
|
|
87
|
+
if (name) briefParts.push(name);
|
|
88
|
+
if (message) briefParts.push(`message="${clip(message, 200)}"`);
|
|
89
|
+
if (status) briefParts.push(`status=${status}`);
|
|
90
|
+
if (code) briefParts.push(`code=${code}`);
|
|
91
|
+
if (causeName) briefParts.push(`cause=${causeName}`);
|
|
92
|
+
if (!message && stringForm && stringForm !== name) {
|
|
93
|
+
briefParts.push(`str="${clip(stringForm, 200)}"`);
|
|
94
|
+
}
|
|
95
|
+
const brief = briefParts.join(" ") || stringForm || name;
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
name,
|
|
99
|
+
message,
|
|
100
|
+
...(status ? { status } : {}),
|
|
101
|
+
...(code ? { code } : {}),
|
|
102
|
+
...(causeName ? { causeName } : {}),
|
|
103
|
+
...(stackHead ? { stackHead } : {}),
|
|
104
|
+
stringForm,
|
|
105
|
+
brief,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function safeString(value: unknown): string {
|
|
110
|
+
try {
|
|
111
|
+
return String(value);
|
|
112
|
+
} catch {
|
|
113
|
+
return "<unstringifiable>";
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import { escalationBands } from "./escalation-bands";
|
|
3
|
+
|
|
4
|
+
describe("escalationBands", () => {
|
|
5
|
+
test.each([
|
|
6
|
+
[65, 85],
|
|
7
|
+
[80, 85],
|
|
8
|
+
[88, 90],
|
|
9
|
+
[90, 92],
|
|
10
|
+
])("keeps the force band ordered for threshold %i", (threshold, expectedForce) => {
|
|
11
|
+
const bands = escalationBands(threshold);
|
|
12
|
+
expect(bands.forceMaterializationPercentage).toBe(expectedForce);
|
|
13
|
+
expect(threshold).toBeLessThan(bands.forceMaterializationPercentage);
|
|
14
|
+
expect(bands.forceMaterializationPercentage).toBeGreaterThanOrEqual(85);
|
|
15
|
+
expect(bands.forceMaterializationPercentage).toBeLessThan(95);
|
|
16
|
+
expect(bands.emergencyPercentage).toBe(95);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test("preserves the exact pre-raise behavior through threshold 80", () => {
|
|
20
|
+
expect(escalationBands(65).forceMaterializationPercentage).toBe(85);
|
|
21
|
+
expect(escalationBands(80).forceMaterializationPercentage).toBe(85);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export const MAX_EXECUTE_THRESHOLD = 90;
|
|
2
|
+
export const ABSOLUTE_EMERGENCY_PERCENTAGE = 95;
|
|
3
|
+
|
|
4
|
+
export interface EscalationBands {
|
|
5
|
+
forceMaterializationPercentage: number;
|
|
6
|
+
emergencyPercentage: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Keep force cleanup above normal execution while preserving the absolute 95% wall. */
|
|
10
|
+
export function escalationBands(effectiveThresholdPercentage: number): EscalationBands {
|
|
11
|
+
const threshold = Number.isFinite(effectiveThresholdPercentage)
|
|
12
|
+
? Math.min(effectiveThresholdPercentage, MAX_EXECUTE_THRESHOLD)
|
|
13
|
+
: 65;
|
|
14
|
+
return {
|
|
15
|
+
forceMaterializationPercentage: Math.max(85, threshold + 2),
|
|
16
|
+
emergencyPercentage: ABSOLUTE_EMERGENCY_PERCENTAGE,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format an execute-threshold percentage for human-facing display.
|
|
3
|
+
*
|
|
4
|
+
* `executeThreshold` in the snapshot is always a percentage number, but it
|
|
5
|
+
* comes from two very different config paths:
|
|
6
|
+
* 1. `execute_threshold_percentage` (or its model-keyed variant) — user
|
|
7
|
+
* configures an integer like 65 directly. We must render exactly that.
|
|
8
|
+
* 2. `execute_threshold_tokens` — user configures absolute token cap (e.g.
|
|
9
|
+
* 128000). The resolver in `event-resolvers.ts` divides that by the
|
|
10
|
+
* model's context limit (`(128000 / 907788) * 100`) and the result is
|
|
11
|
+
* a long float like `14.099783080260304` that overflows the TUI cell
|
|
12
|
+
* (issue #90).
|
|
13
|
+
*
|
|
14
|
+
* Behaviour:
|
|
15
|
+
* - Integer input (≤0.05 fractional drift) renders without decimals.
|
|
16
|
+
* - Anything else is rendered with one decimal digit, which is precise
|
|
17
|
+
* enough to convey the configured token budget without smearing across
|
|
18
|
+
* two lines in a narrow sidebar.
|
|
19
|
+
*
|
|
20
|
+
* Returns the formatted percentage WITHOUT the trailing `%` so callers can
|
|
21
|
+
* compose richer strings like `47.5% / 65%` consistently.
|
|
22
|
+
*/
|
|
23
|
+
export function formatThresholdPercent(value: number | undefined | null): string {
|
|
24
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return "—";
|
|
25
|
+
const rounded = Math.round(value);
|
|
26
|
+
if (Math.abs(value - rounded) < 0.05) return String(rounded);
|
|
27
|
+
return value.toFixed(1);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Build a terse "clamped" annotation for execute-threshold display, or "" when the
|
|
32
|
+
* configured value was not clamped. Status surfaces (/mmc-status text, pi status
|
|
33
|
+
* dialog) append this so a user who configured e.g. 190000 tokens on a 128K model
|
|
34
|
+
* sees that it was reduced to the 90% safety cap, instead of the value being
|
|
35
|
+
* silently ignored (issue #241). The note includes the configured value and the cap
|
|
36
|
+
* so the user can see the math.
|
|
37
|
+
*
|
|
38
|
+
* `maxPercentage` is passed in (rather than imported) to keep this shared module
|
|
39
|
+
* free of a dependency on the resolver that owns the cap constant.
|
|
40
|
+
*/
|
|
41
|
+
export function formatThresholdClampNote(opts: {
|
|
42
|
+
clamped?: boolean;
|
|
43
|
+
mode: "tokens" | "percentage";
|
|
44
|
+
/** Raw configured value before clamping (tokens in tokens mode, % in percentage mode). */
|
|
45
|
+
configuredValue?: number;
|
|
46
|
+
contextLimit: number;
|
|
47
|
+
maxPercentage: number;
|
|
48
|
+
}): string {
|
|
49
|
+
if (!opts.clamped || opts.configuredValue === undefined) return "";
|
|
50
|
+
if (opts.mode === "tokens" && opts.contextLimit > 0) {
|
|
51
|
+
return ` [clamped: ${opts.configuredValue.toLocaleString()} > ${opts.maxPercentage}% of ${opts.contextLimit.toLocaleString()}]`;
|
|
52
|
+
}
|
|
53
|
+
return ` [clamped: ${opts.configuredValue}% > ${opts.maxPercentage}%]`;
|
|
54
|
+
}
|