mewkit 1.14.0 → 1.15.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 +7 -0
- package/dist/commands/capabilities.d.ts +13 -0
- package/dist/commands/capabilities.d.ts.map +1 -0
- package/dist/commands/capabilities.js +230 -0
- package/dist/commands/capabilities.js.map +1 -0
- package/dist/commands/context.d.ts +10 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +125 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/doctor.d.ts +27 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +123 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/providers.d.ts +2 -0
- package/dist/commands/providers.d.ts.map +1 -1
- package/dist/commands/providers.js +77 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/commands/task-state.d.ts +13 -0
- package/dist/commands/task-state.d.ts.map +1 -0
- package/dist/commands/task-state.js +106 -0
- package/dist/commands/task-state.js.map +1 -0
- package/dist/commands/validate.d.ts +48 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +97 -24
- package/dist/commands/validate.js.map +1 -1
- package/dist/core/availability.d.ts +40 -0
- package/dist/core/availability.d.ts.map +1 -0
- package/dist/core/availability.js +47 -0
- package/dist/core/availability.js.map +1 -0
- package/dist/core/bootstrap.d.ts +19 -0
- package/dist/core/bootstrap.d.ts.map +1 -0
- package/dist/core/bootstrap.js +42 -0
- package/dist/core/bootstrap.js.map +1 -0
- package/dist/core/build-capabilities.d.ts +9 -0
- package/dist/core/build-capabilities.d.ts.map +1 -0
- package/dist/core/build-capabilities.js +123 -0
- package/dist/core/build-capabilities.js.map +1 -0
- package/dist/core/build-inventory.d.ts +2 -0
- package/dist/core/build-inventory.d.ts.map +1 -1
- package/dist/core/build-inventory.js +1 -1
- package/dist/core/build-inventory.js.map +1 -1
- package/dist/core/capability-authored.d.ts +26 -0
- package/dist/core/capability-authored.d.ts.map +1 -0
- package/dist/core/capability-authored.js +117 -0
- package/dist/core/capability-authored.js.map +1 -0
- package/dist/core/capability-snapshot.d.ts +13 -0
- package/dist/core/capability-snapshot.d.ts.map +1 -0
- package/dist/core/capability-snapshot.js +53 -0
- package/dist/core/capability-snapshot.js.map +1 -0
- package/dist/core/capability.d.ts +519 -0
- package/dist/core/capability.d.ts.map +1 -0
- package/dist/core/capability.js +114 -0
- package/dist/core/capability.js.map +1 -0
- package/dist/core/compute-checksums.d.ts.map +1 -1
- package/dist/core/compute-checksums.js +8 -2
- package/dist/core/compute-checksums.js.map +1 -1
- package/dist/core/consolidation-ledger.d.ts +30 -0
- package/dist/core/consolidation-ledger.d.ts.map +1 -0
- package/dist/core/consolidation-ledger.js +145 -0
- package/dist/core/consolidation-ledger.js.map +1 -0
- package/dist/core/generate-capability-view.d.ts +21 -0
- package/dist/core/generate-capability-view.d.ts.map +1 -0
- package/dist/core/generate-capability-view.js +48 -0
- package/dist/core/generate-capability-view.js.map +1 -0
- package/dist/core/install-metadata.d.ts +47 -30
- package/dist/core/install-metadata.d.ts.map +1 -1
- package/dist/core/install-metadata.js +49 -9
- package/dist/core/install-metadata.js.map +1 -1
- package/dist/core/plugin-manifest.d.ts +16 -16
- package/dist/core/provider-adapter.d.ts +28 -0
- package/dist/core/provider-adapter.d.ts.map +1 -0
- package/dist/core/provider-adapter.js +31 -0
- package/dist/core/provider-adapter.js.map +1 -0
- package/dist/core/provider-invocation.d.ts +14 -0
- package/dist/core/provider-invocation.d.ts.map +1 -0
- package/dist/core/provider-invocation.js +56 -0
- package/dist/core/provider-invocation.js.map +1 -0
- package/dist/core/provider-lifecycle.d.ts +35 -0
- package/dist/core/provider-lifecycle.d.ts.map +1 -0
- package/dist/core/provider-lifecycle.js +101 -0
- package/dist/core/provider-lifecycle.js.map +1 -0
- package/dist/core/provider-projection.d.ts +29 -0
- package/dist/core/provider-projection.d.ts.map +1 -0
- package/dist/core/provider-projection.js +47 -0
- package/dist/core/provider-projection.js.map +1 -0
- package/dist/core/release-metadata.d.ts +9 -2
- package/dist/core/release-metadata.d.ts.map +1 -1
- package/dist/core/release-metadata.js +13 -0
- package/dist/core/release-metadata.js.map +1 -1
- package/dist/core/repo-context-adapter.d.ts +23 -0
- package/dist/core/repo-context-adapter.d.ts.map +1 -0
- package/dist/core/repo-context-adapter.js +44 -0
- package/dist/core/repo-context-adapter.js.map +1 -0
- package/dist/core/repo-context.d.ts +147 -0
- package/dist/core/repo-context.d.ts.map +1 -0
- package/dist/core/repo-context.js +204 -0
- package/dist/core/repo-context.js.map +1 -0
- package/dist/core/resolve-capabilities.d.ts +70 -0
- package/dist/core/resolve-capabilities.d.ts.map +1 -0
- package/dist/core/resolve-capabilities.js +124 -0
- package/dist/core/resolve-capabilities.js.map +1 -0
- package/dist/core/smart-update.d.ts.map +1 -1
- package/dist/core/smart-update.js +13 -12
- package/dist/core/smart-update.js.map +1 -1
- package/dist/core/task-record.d.ts +252 -0
- package/dist/core/task-record.d.ts.map +1 -0
- package/dist/core/task-record.js +252 -0
- package/dist/core/task-record.js.map +1 -0
- package/dist/core/validate-capabilities.d.ts +12 -0
- package/dist/core/validate-capabilities.d.ts.map +1 -0
- package/dist/core/validate-capabilities.js +138 -0
- package/dist/core/validate-capabilities.js.map +1 -0
- package/dist/index.js +66 -4
- package/dist/index.js.map +1 -1
- package/dist/migrate/apply-env-var-rewrites.d.ts +15 -0
- package/dist/migrate/apply-env-var-rewrites.d.ts.map +1 -0
- package/dist/migrate/apply-env-var-rewrites.js +26 -0
- package/dist/migrate/apply-env-var-rewrites.js.map +1 -0
- package/dist/migrate/capability-bootstrap-projection.d.ts +11 -0
- package/dist/migrate/capability-bootstrap-projection.d.ts.map +1 -0
- package/dist/migrate/capability-bootstrap-projection.js +48 -0
- package/dist/migrate/capability-bootstrap-projection.js.map +1 -0
- package/dist/migrate/converters/command-to-codex-skill.d.ts.map +1 -1
- package/dist/migrate/converters/command-to-codex-skill.js +15 -5
- package/dist/migrate/converters/command-to-codex-skill.js.map +1 -1
- package/dist/migrate/converters/fm-to-codex-toml.d.ts +4 -1
- package/dist/migrate/converters/fm-to-codex-toml.d.ts.map +1 -1
- package/dist/migrate/converters/fm-to-codex-toml.js +7 -2
- package/dist/migrate/converters/fm-to-codex-toml.js.map +1 -1
- package/dist/migrate/converters/index.js +1 -1
- package/dist/migrate/converters/index.js.map +1 -1
- package/dist/migrate/discovery/config-discovery.d.ts +29 -0
- package/dist/migrate/discovery/config-discovery.d.ts.map +1 -1
- package/dist/migrate/discovery/config-discovery.js +45 -0
- package/dist/migrate/discovery/config-discovery.js.map +1 -1
- package/dist/migrate/discovery/handlers-json-filter.d.ts.map +1 -1
- package/dist/migrate/discovery/handlers-json-filter.js +4 -2
- package/dist/migrate/discovery/handlers-json-filter.js.map +1 -1
- package/dist/migrate/discovery/hooks-discovery.d.ts +5 -0
- package/dist/migrate/discovery/hooks-discovery.d.ts.map +1 -1
- package/dist/migrate/discovery/hooks-discovery.js +21 -5
- package/dist/migrate/discovery/hooks-discovery.js.map +1 -1
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts +15 -1
- package/dist/migrate/hooks/codex-hook-wrapper.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-hook-wrapper.js +78 -7
- package/dist/migrate/hooks/codex-hook-wrapper.js.map +1 -1
- package/dist/migrate/hooks/codex-path-safety.d.ts +29 -0
- package/dist/migrate/hooks/codex-path-safety.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-path-safety.js +36 -1
- package/dist/migrate/hooks/codex-path-safety.js.map +1 -1
- package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts +8 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.d.ts.map +1 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.js +118 -0
- package/dist/migrate/hooks/codex-sh-wrapper-script.js.map +1 -0
- package/dist/migrate/hooks/codex-shell-env-installer.d.ts +14 -0
- package/dist/migrate/hooks/codex-shell-env-installer.d.ts.map +1 -0
- package/dist/migrate/hooks/codex-shell-env-installer.js +82 -0
- package/dist/migrate/hooks/codex-shell-env-installer.js.map +1 -0
- package/dist/migrate/hooks/codex-toml-installer.d.ts +2 -0
- package/dist/migrate/hooks/codex-toml-installer.d.ts.map +1 -1
- package/dist/migrate/hooks/codex-toml-installer.js +3 -1
- package/dist/migrate/hooks/codex-toml-installer.js.map +1 -1
- package/dist/migrate/hooks/hooks-settings-merger.d.ts +3 -0
- package/dist/migrate/hooks/hooks-settings-merger.d.ts.map +1 -1
- package/dist/migrate/hooks/hooks-settings-merger.js +152 -20
- package/dist/migrate/hooks/hooks-settings-merger.js.map +1 -1
- package/dist/migrate/migrate-orchestrator.d.ts +19 -0
- package/dist/migrate/migrate-orchestrator.d.ts.map +1 -1
- package/dist/migrate/migrate-orchestrator.js +176 -24
- package/dist/migrate/migrate-orchestrator.js.map +1 -1
- package/dist/migrate/migrate-ui-summary.d.ts +23 -0
- package/dist/migrate/migrate-ui-summary.d.ts.map +1 -1
- package/dist/migrate/migrate-ui-summary.js +24 -0
- package/dist/migrate/migrate-ui-summary.js.map +1 -1
- package/dist/migrate/model-routing-config.d.ts +3 -1
- package/dist/migrate/model-routing-config.d.ts.map +1 -1
- package/dist/migrate/model-routing-config.js +28 -0
- package/dist/migrate/model-routing-config.js.map +1 -1
- package/dist/migrate/portable-installer.d.ts +14 -1
- package/dist/migrate/portable-installer.d.ts.map +1 -1
- package/dist/migrate/portable-installer.js +110 -9
- package/dist/migrate/portable-installer.js.map +1 -1
- package/dist/migrate/providers/codex/capabilities.d.ts +5 -0
- package/dist/migrate/providers/codex/capabilities.d.ts.map +1 -1
- package/dist/migrate/providers/codex/capabilities.js +31 -0
- package/dist/migrate/providers/codex/capabilities.js.map +1 -1
- package/dist/migrate/providers/codex/config.d.ts.map +1 -1
- package/dist/migrate/providers/codex/config.js +8 -2
- package/dist/migrate/providers/codex/config.js.map +1 -1
- package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts +27 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.d.ts.map +1 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.js +86 -0
- package/dist/migrate/providers/codex/shell-env-policy-emitter.js.map +1 -0
- package/dist/migrate/reconcile/index.d.ts +1 -1
- package/dist/migrate/reconcile/index.d.ts.map +1 -1
- package/dist/migrate/reconcile/index.js +1 -1
- package/dist/migrate/reconcile/index.js.map +1 -1
- package/dist/migrate/reconcile/portable-manifest.d.ts +6 -0
- package/dist/migrate/reconcile/portable-manifest.d.ts.map +1 -1
- package/dist/migrate/reconcile/portable-manifest.js +23 -0
- package/dist/migrate/reconcile/portable-manifest.js.map +1 -1
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts +12 -5
- package/dist/migrate/reconcile/reconcile-state-builders.d.ts.map +1 -1
- package/dist/migrate/reconcile/reconcile-state-builders.js +2 -2
- package/dist/migrate/reconcile/reconcile-state-builders.js.map +1 -1
- package/dist/migrate/references/env-var-rewrite-table.d.ts +36 -0
- package/dist/migrate/references/env-var-rewrite-table.d.ts.map +1 -0
- package/dist/migrate/references/env-var-rewrite-table.js +97 -0
- package/dist/migrate/references/env-var-rewrite-table.js.map +1 -0
- package/dist/migrate/references/reference-classifier.d.ts +15 -0
- package/dist/migrate/references/reference-classifier.d.ts.map +1 -1
- package/dist/migrate/references/reference-classifier.js +33 -0
- package/dist/migrate/references/reference-classifier.js.map +1 -1
- package/dist/migrate/runtime-compat-audit.d.ts +1 -0
- package/dist/migrate/runtime-compat-audit.d.ts.map +1 -1
- package/dist/migrate/runtime-compat-audit.js +8 -3
- package/dist/migrate/runtime-compat-audit.js.map +1 -1
- package/dist/migrate/runtime-coupling-patterns.d.ts +30 -2
- package/dist/migrate/runtime-coupling-patterns.d.ts.map +1 -1
- package/dist/migrate/runtime-coupling-patterns.js +36 -8
- package/dist/migrate/runtime-coupling-patterns.js.map +1 -1
- package/dist/migrate/skill-directory-audit.d.ts +14 -0
- package/dist/migrate/skill-directory-audit.d.ts.map +1 -1
- package/dist/migrate/skill-directory-audit.js +68 -10
- package/dist/migrate/skill-directory-audit.js.map +1 -1
- package/dist/migrate/skill-directory-installer.d.ts +3 -0
- package/dist/migrate/skill-directory-installer.d.ts.map +1 -1
- package/dist/migrate/skill-directory-installer.js +98 -1
- package/dist/migrate/skill-directory-installer.js.map +1 -1
- package/dist/migrate/state-changing-script-detector.d.ts +16 -0
- package/dist/migrate/state-changing-script-detector.d.ts.map +1 -0
- package/dist/migrate/state-changing-script-detector.js +144 -0
- package/dist/migrate/state-changing-script-detector.js.map +1 -0
- package/dist/migrate/validation/migrate-conversion-report.d.ts +28 -0
- package/dist/migrate/validation/migrate-conversion-report.d.ts.map +1 -1
- package/dist/migrate/validation/migrate-conversion-report.js +48 -7
- package/dist/migrate/validation/migrate-conversion-report.js.map +1 -1
- package/dist/migrate/validation/migration-ledger-inputs.d.ts +56 -0
- package/dist/migrate/validation/migration-ledger-inputs.d.ts.map +1 -0
- package/dist/migrate/validation/migration-ledger-inputs.js +160 -0
- package/dist/migrate/validation/migration-ledger-inputs.js.map +1 -0
- package/dist/migrate/validation/migration-record-types.d.ts +38 -0
- package/dist/migrate/validation/migration-record-types.d.ts.map +1 -0
- package/dist/migrate/validation/migration-record-types.js +12 -0
- package/dist/migrate/validation/migration-record-types.js.map +1 -0
- package/dist/migrate/validation/migration-report-writer.d.ts +98 -0
- package/dist/migrate/validation/migration-report-writer.d.ts.map +1 -0
- package/dist/migrate/validation/migration-report-writer.js +0 -0
- package/dist/migrate/validation/migration-report-writer.js.map +1 -0
- package/dist/orchviz-web/index.js +3 -3
- package/package.json +1 -1
- package/portable-manifest.json +10 -2
- package/dist/commands/evolve.d.ts +0 -11
- package/dist/commands/evolve.d.ts.map +0 -1
- package/dist/commands/evolve.js +0 -63
- package/dist/commands/evolve.js.map +0 -1
- package/dist/commands/health.d.ts +0 -14
- package/dist/commands/health.d.ts.map +0 -1
- package/dist/commands/health.js +0 -193
- package/dist/commands/health.js.map +0 -1
- package/dist/commands/policy.d.ts +0 -8
- package/dist/commands/policy.d.ts.map +0 -1
- package/dist/commands/policy.js +0 -65
- package/dist/commands/policy.js.map +0 -1
- package/dist/commands/portability.d.ts +0 -7
- package/dist/commands/portability.d.ts.map +0 -1
- package/dist/commands/portability.js +0 -50
- package/dist/commands/portability.js.map +0 -1
- package/dist/commands/reflect.d.ts +0 -14
- package/dist/commands/reflect.d.ts.map +0 -1
- package/dist/commands/reflect.js +0 -135
- package/dist/commands/reflect.js.map +0 -1
- package/dist/commands/simulate.d.ts +0 -14
- package/dist/commands/simulate.d.ts.map +0 -1
- package/dist/commands/simulate.js +0 -86
- package/dist/commands/simulate.js.map +0 -1
- package/dist/core/event-log.d.ts +0 -44
- package/dist/core/event-log.d.ts.map +0 -1
- package/dist/core/event-log.js +0 -169
- package/dist/core/event-log.js.map +0 -1
- package/dist/core/evolution/event-clusters.d.ts +0 -4
- package/dist/core/evolution/event-clusters.d.ts.map +0 -1
- package/dist/core/evolution/event-clusters.js +0 -82
- package/dist/core/evolution/event-clusters.js.map +0 -1
- package/dist/core/evolution/recommendation-renderer.d.ts +0 -3
- package/dist/core/evolution/recommendation-renderer.d.ts.map +0 -1
- package/dist/core/evolution/recommendation-renderer.js +0 -24
- package/dist/core/evolution/recommendation-renderer.js.map +0 -1
- package/dist/core/evolution/review-failure-clusters.d.ts +0 -10
- package/dist/core/evolution/review-failure-clusters.d.ts.map +0 -1
- package/dist/core/evolution/review-failure-clusters.js +0 -30
- package/dist/core/evolution/review-failure-clusters.js.map +0 -1
- package/dist/core/evolution/suggestions.d.ts +0 -24
- package/dist/core/evolution/suggestions.d.ts.map +0 -1
- package/dist/core/evolution/suggestions.js +0 -11
- package/dist/core/evolution/suggestions.js.map +0 -1
- package/dist/core/gate-policy.d.ts +0 -20
- package/dist/core/gate-policy.d.ts.map +0 -1
- package/dist/core/gate-policy.js +0 -64
- package/dist/core/gate-policy.js.map +0 -1
- package/dist/core/portability-matrix.d.ts +0 -17
- package/dist/core/portability-matrix.d.ts.map +0 -1
- package/dist/core/portability-matrix.js +0 -31
- package/dist/core/portability-matrix.js.map +0 -1
- package/dist/core/simulation-runner.d.ts +0 -93
- package/dist/core/simulation-runner.d.ts.map +0 -1
- package/dist/core/simulation-runner.js +0 -161
- package/dist/core/simulation-runner.js.map +0 -1
- package/dist/core/usage/usage-analyzer.d.ts +0 -18
- package/dist/core/usage/usage-analyzer.d.ts.map +0 -1
- package/dist/core/usage/usage-analyzer.js +0 -41
- package/dist/core/usage/usage-analyzer.js.map +0 -1
- package/dist/memory/archive.d.ts +0 -9
- package/dist/memory/archive.d.ts.map +0 -1
- package/dist/memory/archive.js +0 -42
- package/dist/memory/archive.js.map +0 -1
- package/dist/memory/compact.d.ts +0 -9
- package/dist/memory/compact.d.ts.map +0 -1
- package/dist/memory/compact.js +0 -33
- package/dist/memory/compact.js.map +0 -1
- package/dist/memory/conflicts.d.ts +0 -8
- package/dist/memory/conflicts.d.ts.map +0 -1
- package/dist/memory/conflicts.js +0 -28
- package/dist/memory/conflicts.js.map +0 -1
- package/dist/memory/promote.d.ts +0 -8
- package/dist/memory/promote.d.ts.map +0 -1
- package/dist/memory/promote.js +0 -10
- package/dist/memory/promote.js.map +0 -1
- package/dist/memory/store-utils.d.ts +0 -14
- package/dist/memory/store-utils.d.ts.map +0 -1
- package/dist/memory/store-utils.js +0 -44
- package/dist/memory/store-utils.js.map +0 -1
- package/dist/migrate/__tests__/frontmatter-parser.test.d.ts +0 -2
- package/dist/migrate/__tests__/frontmatter-parser.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/frontmatter-parser.test.js +0 -73
- package/dist/migrate/__tests__/frontmatter-parser.test.js.map +0 -1
- package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts +0 -2
- package/dist/migrate/__tests__/md-strip-mewkit.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/md-strip-mewkit.test.js +0 -55
- package/dist/migrate/__tests__/md-strip-mewkit.test.js.map +0 -1
- package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts +0 -2
- package/dist/migrate/__tests__/migrate-scope-resolver.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/migrate-scope-resolver.test.js +0 -53
- package/dist/migrate/__tests__/migrate-scope-resolver.test.js.map +0 -1
- package/dist/migrate/__tests__/process-lock.test.d.ts +0 -2
- package/dist/migrate/__tests__/process-lock.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/process-lock.test.js +0 -63
- package/dist/migrate/__tests__/process-lock.test.js.map +0 -1
- package/dist/migrate/__tests__/provider-registry.test.d.ts +0 -2
- package/dist/migrate/__tests__/provider-registry.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/provider-registry.test.js +0 -53
- package/dist/migrate/__tests__/provider-registry.test.js.map +0 -1
- package/dist/migrate/__tests__/reconciler.test.d.ts +0 -2
- package/dist/migrate/__tests__/reconciler.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/reconciler.test.js +0 -180
- package/dist/migrate/__tests__/reconciler.test.js.map +0 -1
- package/dist/migrate/__tests__/skill-id-utils.test.d.ts +0 -2
- package/dist/migrate/__tests__/skill-id-utils.test.d.ts.map +0 -1
- package/dist/migrate/__tests__/skill-id-utils.test.js +0 -78
- package/dist/migrate/__tests__/skill-id-utils.test.js.map +0 -1
- package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.d.ts +0 -15
- package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.d.ts.map +0 -1
- package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.js +0 -165
- package/dist/orchviz/plan/__tests__/apply-todo-toggle.test.js.map +0 -1
- package/dist/orchviz/plan/__tests__/atomic-write.test.d.ts +0 -11
- package/dist/orchviz/plan/__tests__/atomic-write.test.d.ts.map +0 -1
- package/dist/orchviz/plan/__tests__/atomic-write.test.js +0 -89
- package/dist/orchviz/plan/__tests__/atomic-write.test.js.map +0 -1
- package/dist/orchviz/plan/__tests__/end-to-end.test.d.ts +0 -10
- package/dist/orchviz/plan/__tests__/end-to-end.test.d.ts.map +0 -1
- package/dist/orchviz/plan/__tests__/end-to-end.test.js +0 -132
- package/dist/orchviz/plan/__tests__/end-to-end.test.js.map +0 -1
- package/dist/orchviz/plan/__tests__/etag.test.d.ts +0 -11
- package/dist/orchviz/plan/__tests__/etag.test.d.ts.map +0 -1
- package/dist/orchviz/plan/__tests__/etag.test.js +0 -92
- package/dist/orchviz/plan/__tests__/etag.test.js.map +0 -1
- package/dist/orchviz/plan/__tests__/list-plans.test.d.ts +0 -14
- package/dist/orchviz/plan/__tests__/list-plans.test.d.ts.map +0 -1
- package/dist/orchviz/plan/__tests__/list-plans.test.js +0 -154
- package/dist/orchviz/plan/__tests__/list-plans.test.js.map +0 -1
- package/dist/orchviz/server/__tests__/security-smoke.test.d.ts +0 -13
- package/dist/orchviz/server/__tests__/security-smoke.test.d.ts.map +0 -1
- package/dist/orchviz/server/__tests__/security-smoke.test.js +0 -207
- package/dist/orchviz/server/__tests__/security-smoke.test.js.map +0 -1
- package/dist/orchviz/server/__tests__/write-handlers.test.d.ts +0 -24
- package/dist/orchviz/server/__tests__/write-handlers.test.d.ts.map +0 -1
- package/dist/orchviz/server/__tests__/write-handlers.test.js +0 -347
- package/dist/orchviz/server/__tests__/write-handlers.test.js.map +0 -1
- package/dist/orchviz/test-server-boot.d.ts +0 -28
- package/dist/orchviz/test-server-boot.d.ts.map +0 -1
- package/dist/orchviz/test-server-boot.js +0 -64
- package/dist/orchviz/test-server-boot.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-failure-clusters.d.ts","sourceRoot":"","sources":["../../../src/core/evolution/review-failure-clusters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,QAAQ,SAAI,GAAG,oBAAoB,EAAE,CAajG"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
function str(value, fallback = "unknown") {
|
|
2
|
-
return typeof value === "string" && value.trim().length > 0 ? value.trim() : fallback;
|
|
3
|
-
}
|
|
4
|
-
function clusterKey(event) {
|
|
5
|
-
const slug = str(event.data.slug);
|
|
6
|
-
const dimension = str(event.data.dimension ?? event.data.rubric, "");
|
|
7
|
-
return {
|
|
8
|
-
key: dimension ? `${slug}:${dimension}` : slug,
|
|
9
|
-
slug,
|
|
10
|
-
dimension: dimension || undefined,
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export function clusterReviewFailures(events, minCount = 2) {
|
|
14
|
-
const clusters = new Map();
|
|
15
|
-
for (const event of events) {
|
|
16
|
-
if (event.event !== "verdict_written")
|
|
17
|
-
continue;
|
|
18
|
-
if (str(event.data.overall).toUpperCase() !== "FAIL")
|
|
19
|
-
continue;
|
|
20
|
-
const { key, slug, dimension } = clusterKey(event);
|
|
21
|
-
const existing = clusters.get(key) ?? { key, count: 0, tasks: [], slug, dimension };
|
|
22
|
-
existing.count++;
|
|
23
|
-
const task = str(event.data.task, "");
|
|
24
|
-
if (task && !existing.tasks.includes(task))
|
|
25
|
-
existing.tasks.push(task);
|
|
26
|
-
clusters.set(key, existing);
|
|
27
|
-
}
|
|
28
|
-
return [...clusters.values()].filter((c) => c.count >= minCount).sort((a, b) => b.count - a.count || a.key.localeCompare(b.key));
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=review-failure-clusters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"review-failure-clusters.js","sourceRoot":"","sources":["../../../src/core/evolution/review-failure-clusters.ts"],"names":[],"mappings":"AAUA,SAAS,GAAG,CAAC,KAAc,EAAE,QAAQ,GAAG,SAAS;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvF,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACrC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACrE,OAAO;QACN,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI;QAC9C,IAAI;QACJ,SAAS,EAAE,SAAS,IAAI,SAAS;KACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAqB,EAAE,QAAQ,GAAG,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAgC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,KAAK,KAAK,iBAAiB;YAAE,SAAS;QAChD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;YAAE,SAAS;QAC/D,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACpF,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClI,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export type SuggestionKind = "hook-test" | "review-promotion" | "policy" | "trace-hardening" | "regression-scenario" | "pack-pruning" | "memory-conflict" | "memory-archive";
|
|
2
|
-
export type EvidenceStatus = "available" | "insufficient" | "na";
|
|
3
|
-
export interface SuggestionEvidence {
|
|
4
|
-
source: string;
|
|
5
|
-
detail: string;
|
|
6
|
-
count?: number;
|
|
7
|
-
status?: EvidenceStatus;
|
|
8
|
-
}
|
|
9
|
-
export interface EvolutionSuggestion {
|
|
10
|
-
kind: SuggestionKind;
|
|
11
|
-
title: string;
|
|
12
|
-
evidence: SuggestionEvidence[];
|
|
13
|
-
confidence: number;
|
|
14
|
-
impact: "low" | "medium" | "high";
|
|
15
|
-
risk: "low" | "medium" | "high";
|
|
16
|
-
proposedAction: string;
|
|
17
|
-
neverAutoApply: true;
|
|
18
|
-
}
|
|
19
|
-
export declare function makeSuggestion(args: Omit<EvolutionSuggestion, "neverAutoApply">): EvolutionSuggestion;
|
|
20
|
-
export declare function filterSuggestions(suggestions: EvolutionSuggestion[], opts: {
|
|
21
|
-
minConfidence?: number;
|
|
22
|
-
kind?: string;
|
|
23
|
-
}): EvolutionSuggestion[];
|
|
24
|
-
//# sourceMappingURL=suggestions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suggestions.d.ts","sourceRoot":"","sources":["../../../src/core/evolution/suggestions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GACvB,WAAW,GACX,kBAAkB,GAClB,QAAQ,GACR,iBAAiB,GACjB,qBAAqB,GACrB,cAAc,GACd,iBAAiB,GACjB,gBAAgB,CAAC;AAEpB,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,IAAI,CAAC;AAEjE,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClC,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,IAAI,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,GAAG,mBAAmB,CAErG;AAED,wBAAgB,iBAAiB,CAChC,WAAW,EAAE,mBAAmB,EAAE,EAClC,IAAI,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,mBAAmB,EAAE,CAMvB"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function makeSuggestion(args) {
|
|
2
|
-
return { ...args, neverAutoApply: true };
|
|
3
|
-
}
|
|
4
|
-
export function filterSuggestions(suggestions, opts) {
|
|
5
|
-
const min = opts.minConfidence ?? 0;
|
|
6
|
-
return suggestions
|
|
7
|
-
.filter((s) => s.confidence >= min)
|
|
8
|
-
.filter((s) => !opts.kind || s.kind === opts.kind)
|
|
9
|
-
.sort((a, b) => b.confidence - a.confidence || a.kind.localeCompare(b.kind) || a.title.localeCompare(b.title));
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=suggestions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suggestions.js","sourceRoot":"","sources":["../../../src/core/evolution/suggestions.ts"],"names":[],"mappings":"AA8BA,MAAM,UAAU,cAAc,CAAC,IAAiD;IAC/E,OAAO,EAAE,GAAG,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAChC,WAAkC,EAClC,IAA+C;IAE/C,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;IACpC,OAAO,WAAW;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC;SAClC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACjH,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
export type GatePolicyProfile = "strict" | "balanced" | "lightweight";
|
|
2
|
-
export interface GatePolicy {
|
|
3
|
-
profile: GatePolicyProfile;
|
|
4
|
-
planGate: "hard" | "advisory";
|
|
5
|
-
requireApprovedPlan: boolean;
|
|
6
|
-
contractGate: "hard" | "optional" | "off";
|
|
7
|
-
reviewGate: "hard" | "hard-on-fail" | "advisory";
|
|
8
|
-
buildVerify: "on";
|
|
9
|
-
humanApproval: "required" | "selected" | "optional";
|
|
10
|
-
}
|
|
11
|
-
export declare const POLICY_PRESETS: Record<GatePolicyProfile, GatePolicy>;
|
|
12
|
-
export declare function policyPath(claudeDir: string): string;
|
|
13
|
-
export declare function parsePolicyProfile(value: string | undefined): GatePolicyProfile | null;
|
|
14
|
-
export declare function readGatePolicy(claudeDir: string): {
|
|
15
|
-
policy: GatePolicy;
|
|
16
|
-
source: string;
|
|
17
|
-
error?: string;
|
|
18
|
-
};
|
|
19
|
-
export declare function writeGatePolicy(claudeDir: string, profile: GatePolicyProfile): void;
|
|
20
|
-
//# sourceMappingURL=gate-policy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gate-policy.d.ts","sourceRoot":"","sources":["../../src/core/gate-policy.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;AAEtE,MAAM,WAAW,UAAU;IAC1B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC;IAC1C,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,UAAU,CAAC;IACjD,WAAW,EAAE,IAAI,CAAC;IAClB,aAAa,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;CACpD;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,iBAAiB,EAAE,UAAU,CA4BhE,CAAC;AAEF,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,iBAAiB,GAAG,IAAI,CAEtF;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAWxG;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAUnF"}
|
package/dist/core/gate-policy.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
export const POLICY_PRESETS = {
|
|
4
|
-
strict: {
|
|
5
|
-
profile: "strict",
|
|
6
|
-
planGate: "hard",
|
|
7
|
-
requireApprovedPlan: true,
|
|
8
|
-
contractGate: "hard",
|
|
9
|
-
reviewGate: "hard",
|
|
10
|
-
buildVerify: "on",
|
|
11
|
-
humanApproval: "required",
|
|
12
|
-
},
|
|
13
|
-
balanced: {
|
|
14
|
-
profile: "balanced",
|
|
15
|
-
planGate: "hard",
|
|
16
|
-
requireApprovedPlan: false,
|
|
17
|
-
contractGate: "optional",
|
|
18
|
-
reviewGate: "hard-on-fail",
|
|
19
|
-
buildVerify: "on",
|
|
20
|
-
humanApproval: "selected",
|
|
21
|
-
},
|
|
22
|
-
lightweight: {
|
|
23
|
-
profile: "lightweight",
|
|
24
|
-
planGate: "advisory",
|
|
25
|
-
requireApprovedPlan: false,
|
|
26
|
-
contractGate: "off",
|
|
27
|
-
reviewGate: "advisory",
|
|
28
|
-
buildVerify: "on",
|
|
29
|
-
humanApproval: "optional",
|
|
30
|
-
},
|
|
31
|
-
};
|
|
32
|
-
export function policyPath(claudeDir) {
|
|
33
|
-
return path.join(claudeDir, "policy.json");
|
|
34
|
-
}
|
|
35
|
-
export function parsePolicyProfile(value) {
|
|
36
|
-
return value === "strict" || value === "balanced" || value === "lightweight" ? value : null;
|
|
37
|
-
}
|
|
38
|
-
export function readGatePolicy(claudeDir) {
|
|
39
|
-
const p = policyPath(claudeDir);
|
|
40
|
-
if (!fs.existsSync(p))
|
|
41
|
-
return { policy: POLICY_PRESETS.balanced, source: "default" };
|
|
42
|
-
try {
|
|
43
|
-
const parsed = JSON.parse(fs.readFileSync(p, "utf-8"));
|
|
44
|
-
const profile = parsePolicyProfile(parsed.profile);
|
|
45
|
-
if (!profile)
|
|
46
|
-
return { policy: POLICY_PRESETS.strict, source: p, error: "unknown profile; failing safe as strict" };
|
|
47
|
-
return { policy: POLICY_PRESETS[profile], source: p };
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return { policy: POLICY_PRESETS.strict, source: p, error: "unreadable policy; failing safe as strict" };
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export function writeGatePolicy(claudeDir, profile) {
|
|
54
|
-
const p = policyPath(claudeDir);
|
|
55
|
-
const tmp = `${p}.tmp`;
|
|
56
|
-
const body = {
|
|
57
|
-
profile,
|
|
58
|
-
updatedAt: new Date().toISOString(),
|
|
59
|
-
note: "Privacy and prompt-injection blocks are never disabled by policy profiles.",
|
|
60
|
-
};
|
|
61
|
-
fs.writeFileSync(tmp, `${JSON.stringify(body, null, 2)}\n`, "utf-8");
|
|
62
|
-
fs.renameSync(tmp, p);
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=gate-policy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gate-policy.js","sourceRoot":"","sources":["../../src/core/gate-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAc7B,MAAM,CAAC,MAAM,cAAc,GAA0C;IACpE,MAAM,EAAE;QACP,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,MAAM;QAChB,mBAAmB,EAAE,IAAI;QACzB,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,UAAU;KACzB;IACD,QAAQ,EAAE;QACT,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,MAAM;QAChB,mBAAmB,EAAE,KAAK;QAC1B,YAAY,EAAE,UAAU;QACxB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,UAAU;KACzB;IACD,WAAW,EAAE;QACZ,OAAO,EAAE,aAAa;QACtB,QAAQ,EAAE,UAAU;QACpB,mBAAmB,EAAE,KAAK;QAC1B,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,UAAU;KACzB;CACD,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC3D,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC/C,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACrF,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAyB,CAAC;QAC/E,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;QACpH,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;IACzG,CAAC;AACF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,OAA0B;IAC5E,MAAM,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACvB,MAAM,IAAI,GAAG;QACZ,OAAO;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,IAAI,EAAE,4EAA4E;KAClF,CAAC;IACF,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { type ProviderContractDiagnostic } from "../migrate/provider-contract-diagnostics.js";
|
|
2
|
-
import type { ProviderType } from "../migrate/types.js";
|
|
3
|
-
export interface PortabilityMatrixRow extends ProviderContractDiagnostic {
|
|
4
|
-
displayStatus: "native" | "documented" | "disabled" | "unsupported" | "warn" | "fail";
|
|
5
|
-
}
|
|
6
|
-
export interface PortabilityCoverage {
|
|
7
|
-
providers: number;
|
|
8
|
-
surfaces: number;
|
|
9
|
-
documented: number;
|
|
10
|
-
disabledUnsupported: number;
|
|
11
|
-
warn: number;
|
|
12
|
-
fail: number;
|
|
13
|
-
}
|
|
14
|
-
export declare function buildPortabilityMatrix(): PortabilityMatrixRow[];
|
|
15
|
-
export declare function explainProvider(provider: ProviderType): PortabilityMatrixRow[];
|
|
16
|
-
export declare function coverage(rows?: PortabilityMatrixRow[]): PortabilityCoverage;
|
|
17
|
-
//# sourceMappingURL=portability-matrix.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portability-matrix.d.ts","sourceRoot":"","sources":["../../src/core/portability-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAClI,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,oBAAqB,SAAQ,0BAA0B;IACvE,aAAa,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;CACtF;AAED,MAAM,WAAW,mBAAmB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAWD,wBAAgB,sBAAsB,IAAI,oBAAoB,EAAE,CAE/D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,oBAAoB,EAAE,CAE9E;AAED,wBAAgB,QAAQ,CAAC,IAAI,yBAA2B,GAAG,mBAAmB,CAS7E"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { collectProviderContractDiagnostics } from "../migrate/provider-contract-diagnostics.js";
|
|
2
|
-
function displayStatus(d) {
|
|
3
|
-
if (d.provider === "claude-code" && d.surfaceStatus === "documented" && d.severity === "pass")
|
|
4
|
-
return "native";
|
|
5
|
-
if (d.severity === "fail")
|
|
6
|
-
return "fail";
|
|
7
|
-
if (d.severity === "warn")
|
|
8
|
-
return "warn";
|
|
9
|
-
if (d.surfaceStatus === "documented")
|
|
10
|
-
return "documented";
|
|
11
|
-
if (d.surfaceStatus === "unsupported")
|
|
12
|
-
return "unsupported";
|
|
13
|
-
return "disabled";
|
|
14
|
-
}
|
|
15
|
-
export function buildPortabilityMatrix() {
|
|
16
|
-
return collectProviderContractDiagnostics().map((d) => ({ ...d, displayStatus: displayStatus(d) }));
|
|
17
|
-
}
|
|
18
|
-
export function explainProvider(provider) {
|
|
19
|
-
return buildPortabilityMatrix().filter((r) => r.provider === provider);
|
|
20
|
-
}
|
|
21
|
-
export function coverage(rows = buildPortabilityMatrix()) {
|
|
22
|
-
return {
|
|
23
|
-
providers: new Set(rows.map((r) => r.provider)).size,
|
|
24
|
-
surfaces: rows.length,
|
|
25
|
-
documented: rows.filter((r) => r.surfaceStatus === "documented").length,
|
|
26
|
-
disabledUnsupported: rows.filter((r) => r.surfaceStatus !== "documented" && r.severity !== "fail").length,
|
|
27
|
-
warn: rows.filter((r) => r.severity === "warn").length,
|
|
28
|
-
fail: rows.filter((r) => r.severity === "fail").length,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=portability-matrix.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"portability-matrix.js","sourceRoot":"","sources":["../../src/core/portability-matrix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kCAAkC,EAAmC,MAAM,6CAA6C,CAAC;AAgBlI,SAAS,aAAa,CAAC,CAA6B;IACnD,IAAI,CAAC,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,CAAC,aAAa,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC/G,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,CAAC,CAAC,aAAa,KAAK,YAAY;QAAE,OAAO,YAAY,CAAC;IAC1D,IAAI,CAAC,CAAC,aAAa,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IAC5D,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB;IACrC,OAAO,kCAAkC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAsB;IACrD,OAAO,sBAAsB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAI,GAAG,sBAAsB,EAAE;IACvD,OAAO;QACN,SAAS,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACpD,QAAQ,EAAE,IAAI,CAAC,MAAM;QACrB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,MAAM;QACvE,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;QACzG,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;QACtD,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;KACtD,CAAC;AACH,CAAC"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { hasHarness } from "./harness-scaffold.js";
|
|
2
|
-
import { type HookRunResult } from "./hook-runner.js";
|
|
3
|
-
/**
|
|
4
|
-
* Declarative scenario engine that generalizes the hardcoded `doctor --hard-gates`
|
|
5
|
-
* probes into data-driven given→when→expect cases. Reuses the Phase-1 scaffold +
|
|
6
|
-
* hook-runner (the real configured-hook execution path) — independent of the event
|
|
7
|
-
* log. The `assertOutcome` here is THE single assertion path, also consumed by
|
|
8
|
-
* `doctor-hard-gates.ts`, so the two never diverge.
|
|
9
|
-
*/
|
|
10
|
-
export type SimStatus = "PASS" | "FAIL" | "SKIP";
|
|
11
|
-
export interface ExpectSpec {
|
|
12
|
-
/** Whether the hook should block the tool call. */
|
|
13
|
-
blocked: boolean;
|
|
14
|
-
/** Marker string expected on the named stream when blocked. */
|
|
15
|
-
marker?: string;
|
|
16
|
-
/** Exact exit code; when omitted on a block, any non-zero passes. */
|
|
17
|
-
exitCode?: number;
|
|
18
|
-
/** Which stream carries the marker — explicit per scenario (block markers vary). */
|
|
19
|
-
expectStream?: "stdout" | "stderr";
|
|
20
|
-
}
|
|
21
|
-
interface WhenSpec {
|
|
22
|
-
/** Tool name (matched against settings.json hook matchers). */
|
|
23
|
-
tool: string;
|
|
24
|
-
/** Hook script basename to exercise (the `only` filter — keeps runs deterministic). */
|
|
25
|
-
hook: string;
|
|
26
|
-
file_path?: string;
|
|
27
|
-
command?: string;
|
|
28
|
-
/** Extra env for this step (e.g. MEOWKIT_GATE1_REQUIRE_APPROVED=1). */
|
|
29
|
-
env?: Record<string, string>;
|
|
30
|
-
}
|
|
31
|
-
interface GivenSpec {
|
|
32
|
-
/** Create an (unapproved) plan so Gate 1 existence passes. */
|
|
33
|
-
plan?: boolean;
|
|
34
|
-
/** Remove all plans (force the no-plan state). */
|
|
35
|
-
clearPlans?: boolean;
|
|
36
|
-
/** Arrange arbitrary files in the temp project. */
|
|
37
|
-
files?: Array<{
|
|
38
|
-
path: string;
|
|
39
|
-
content: string;
|
|
40
|
-
}>;
|
|
41
|
-
}
|
|
42
|
-
interface StepSpec {
|
|
43
|
-
given?: GivenSpec;
|
|
44
|
-
when: WhenSpec;
|
|
45
|
-
expect: ExpectSpec;
|
|
46
|
-
}
|
|
47
|
-
export interface Scenario {
|
|
48
|
-
name: string;
|
|
49
|
-
description?: string;
|
|
50
|
-
/** Single-step shorthand (mutually exclusive with `steps`). */
|
|
51
|
-
given?: GivenSpec;
|
|
52
|
-
when?: WhenSpec;
|
|
53
|
-
expect?: ExpectSpec;
|
|
54
|
-
/** Ordered multi-step lifecycle (e.g. full-lifecycle). */
|
|
55
|
-
steps?: StepSpec[];
|
|
56
|
-
}
|
|
57
|
-
export interface StepResult {
|
|
58
|
-
status: SimStatus;
|
|
59
|
-
detail: string;
|
|
60
|
-
expected: string;
|
|
61
|
-
actual: string;
|
|
62
|
-
}
|
|
63
|
-
export interface ScenarioResult {
|
|
64
|
-
name: string;
|
|
65
|
-
description?: string;
|
|
66
|
-
status: SimStatus;
|
|
67
|
-
steps: StepResult[];
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* THE shared assertion: compare a hook run result against an expectation. Returns
|
|
71
|
-
* PASS / FAIL / SKIP. Two honesty guards:
|
|
72
|
-
* - an allow-case (`blocked:false`) where NO hook ran → SKIP (never a vacuous PASS),
|
|
73
|
-
* - a block-case where no hook ran → FAIL (the gate was not exercised).
|
|
74
|
-
*/
|
|
75
|
-
export declare function assertOutcome(result: HookRunResult | undefined, expect: ExpectSpec): {
|
|
76
|
-
status: SimStatus;
|
|
77
|
-
detail: string;
|
|
78
|
-
};
|
|
79
|
-
/** Execute one scenario against a freshly-scaffolded temp harness. Cleans up always. */
|
|
80
|
-
export declare function runScenario(scenario: Scenario, srcRoot: string): ScenarioResult;
|
|
81
|
-
/** Load + validate a scenario YAML file. Throws on a malformed/under-specified scenario. */
|
|
82
|
-
export declare function loadScenario(file: string): Scenario;
|
|
83
|
-
export interface SimulationsDir {
|
|
84
|
-
/** Absolute path to `<repoRoot>/.claude/simulations`. */
|
|
85
|
-
dir: string;
|
|
86
|
-
exists: boolean;
|
|
87
|
-
}
|
|
88
|
-
export declare function simulationsDir(srcRoot: string): SimulationsDir;
|
|
89
|
-
/** List scenario YAML basenames (without extension) in the simulations dir. */
|
|
90
|
-
export declare function listScenarios(srcRoot: string): string[];
|
|
91
|
-
export declare function loadScenarioByName(srcRoot: string, name: string): Scenario;
|
|
92
|
-
export { hasHarness };
|
|
93
|
-
//# sourceMappingURL=simulation-runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simulation-runner.d.ts","sourceRoot":"","sources":["../../src/core/simulation-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import yaml from "js-yaml";
|
|
4
|
-
import { scaffoldHarnessProject, hasHarness } from "./harness-scaffold.js";
|
|
5
|
-
import { runConfiguredHook } from "./hook-runner.js";
|
|
6
|
-
/**
|
|
7
|
-
* THE shared assertion: compare a hook run result against an expectation. Returns
|
|
8
|
-
* PASS / FAIL / SKIP. Two honesty guards:
|
|
9
|
-
* - an allow-case (`blocked:false`) where NO hook ran → SKIP (never a vacuous PASS),
|
|
10
|
-
* - a block-case where no hook ran → FAIL (the gate was not exercised).
|
|
11
|
-
*/
|
|
12
|
-
export function assertOutcome(result, expect) {
|
|
13
|
-
const stream = expect.expectStream ?? "stderr";
|
|
14
|
-
if (!result) {
|
|
15
|
-
if (expect.blocked === false) {
|
|
16
|
-
return { status: "SKIP", detail: "No hook matched the tool — allow-case not exercised (would pass vacuously)." };
|
|
17
|
-
}
|
|
18
|
-
return { status: "FAIL", detail: "Expected a block but no hook ran for this tool." };
|
|
19
|
-
}
|
|
20
|
-
const streamText = stream === "stdout" ? result.stdout : result.stderr;
|
|
21
|
-
if (expect.blocked) {
|
|
22
|
-
const markerOk = !expect.marker || streamText.includes(expect.marker);
|
|
23
|
-
const exitOk = expect.exitCode !== undefined ? result.status === expect.exitCode : result.status !== 0;
|
|
24
|
-
if (markerOk && exitOk) {
|
|
25
|
-
return { status: "PASS", detail: `Blocked as expected (exit ${result.status}${expect.marker ? `, ${expect.marker} on ${stream}` : ""}).` };
|
|
26
|
-
}
|
|
27
|
-
return {
|
|
28
|
-
status: "FAIL",
|
|
29
|
-
detail: `Expected block (exit ${expect.exitCode ?? "≠0"}${expect.marker ? `, ${expect.marker} on ${stream}` : ""}) but got exit ${result.status}; marker ${markerOk ? "present" : "absent"}.`,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
if (result.status === 0)
|
|
33
|
-
return { status: "PASS", detail: "Allowed (exit 0)." };
|
|
34
|
-
return { status: "FAIL", detail: `Expected allow (exit 0) but got exit ${result.status}.` };
|
|
35
|
-
}
|
|
36
|
-
/** Apply a step's `given` to the scaffolded project (in-place). */
|
|
37
|
-
function applyGiven(project, given) {
|
|
38
|
-
if (!given)
|
|
39
|
-
return;
|
|
40
|
-
if (given.clearPlans)
|
|
41
|
-
project.clearPlans();
|
|
42
|
-
if (given.plan)
|
|
43
|
-
project.addPlan({ nested: true });
|
|
44
|
-
for (const f of given.files ?? []) {
|
|
45
|
-
const abs = path.join(project.dir, f.path);
|
|
46
|
-
fs.mkdirSync(path.dirname(abs), { recursive: true });
|
|
47
|
-
fs.writeFileSync(abs, f.content);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/** Run a single step's `when` against the project and assert against `expect`. */
|
|
51
|
-
function runStep(project, settings, step) {
|
|
52
|
-
applyGiven(project, step.given);
|
|
53
|
-
const results = runConfiguredHook(settings, {
|
|
54
|
-
projectDir: project.dir,
|
|
55
|
-
event: "PreToolUse",
|
|
56
|
-
tool: step.when.tool,
|
|
57
|
-
toolName: step.when.tool,
|
|
58
|
-
toolInput: { file_path: step.when.file_path, command: step.when.command },
|
|
59
|
-
only: step.when.hook,
|
|
60
|
-
extraEnv: step.when.env,
|
|
61
|
-
});
|
|
62
|
-
const result = results.find((r) => r.script === step.when.hook);
|
|
63
|
-
const outcome = assertOutcome(result, step.expect);
|
|
64
|
-
const stream = step.expect.expectStream ?? "stderr";
|
|
65
|
-
return {
|
|
66
|
-
status: outcome.status,
|
|
67
|
-
detail: outcome.detail,
|
|
68
|
-
expected: `${step.when.hook}: ${step.expect.blocked ? `block ${step.expect.marker ?? ""} on ${stream}` : "allow"}`.trim(),
|
|
69
|
-
actual: result ? `exit ${result.status}` : "no hook ran",
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
/** Normalize a scenario into its ordered step list (single-step shorthand → one step). */
|
|
73
|
-
function scenarioSteps(scenario) {
|
|
74
|
-
if (scenario.steps && scenario.steps.length > 0)
|
|
75
|
-
return scenario.steps;
|
|
76
|
-
if (scenario.when && scenario.expect) {
|
|
77
|
-
return [{ given: scenario.given, when: scenario.when, expect: scenario.expect }];
|
|
78
|
-
}
|
|
79
|
-
return [];
|
|
80
|
-
}
|
|
81
|
-
/** worst of the step statuses: FAIL > SKIP > PASS (SKIP is a soft failure for --all). */
|
|
82
|
-
function rollupSteps(steps) {
|
|
83
|
-
if (steps.length === 0)
|
|
84
|
-
return "FAIL";
|
|
85
|
-
if (steps.some((s) => s.status === "FAIL"))
|
|
86
|
-
return "FAIL";
|
|
87
|
-
if (steps.some((s) => s.status === "SKIP"))
|
|
88
|
-
return "SKIP";
|
|
89
|
-
return "PASS";
|
|
90
|
-
}
|
|
91
|
-
/** Execute one scenario against a freshly-scaffolded temp harness. Cleans up always. */
|
|
92
|
-
export function runScenario(scenario, srcRoot) {
|
|
93
|
-
const steps = scenarioSteps(scenario);
|
|
94
|
-
if (steps.length === 0) {
|
|
95
|
-
return {
|
|
96
|
-
name: scenario.name,
|
|
97
|
-
description: scenario.description,
|
|
98
|
-
status: "FAIL",
|
|
99
|
-
steps: [{ status: "FAIL", detail: "Scenario has neither a valid `when/expect` nor `steps`.", expected: "a runnable step", actual: "none" }],
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
const project = scaffoldHarnessProject(srcRoot);
|
|
103
|
-
try {
|
|
104
|
-
const stepResults = steps.map((step) => runStep(project, settingsOf(srcRoot), step));
|
|
105
|
-
return { name: scenario.name, description: scenario.description, status: rollupSteps(stepResults), steps: stepResults };
|
|
106
|
-
}
|
|
107
|
-
finally {
|
|
108
|
-
// try/finally so the temp dir (which may hold a synthetic .env) is removed even
|
|
109
|
-
// on a spawnSync timeout/throw.
|
|
110
|
-
project.cleanup();
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
let _settingsCache = null;
|
|
114
|
-
function settingsOf(srcRoot) {
|
|
115
|
-
if (_settingsCache?.root === srcRoot)
|
|
116
|
-
return _settingsCache.settings;
|
|
117
|
-
const settings = JSON.parse(fs.readFileSync(path.join(srcRoot, ".claude", "settings.json"), "utf8"));
|
|
118
|
-
_settingsCache = { root: srcRoot, settings };
|
|
119
|
-
return settings;
|
|
120
|
-
}
|
|
121
|
-
/** Load + validate a scenario YAML file. Throws on a malformed/under-specified scenario. */
|
|
122
|
-
export function loadScenario(file) {
|
|
123
|
-
const parsed = yaml.load(fs.readFileSync(file, "utf8"));
|
|
124
|
-
if (typeof parsed !== "object" || parsed === null)
|
|
125
|
-
throw new Error(`${path.basename(file)}: not a YAML object`);
|
|
126
|
-
const s = parsed;
|
|
127
|
-
if (typeof s.name !== "string" || s.name.length === 0)
|
|
128
|
-
throw new Error(`${path.basename(file)}: missing 'name'`);
|
|
129
|
-
const hasSingle = s.when !== undefined && s.expect !== undefined;
|
|
130
|
-
const hasSteps = Array.isArray(s.steps) && s.steps.length > 0;
|
|
131
|
-
if (!hasSingle && !hasSteps) {
|
|
132
|
-
throw new Error(`${path.basename(file)}: must define either when+expect or a non-empty steps list`);
|
|
133
|
-
}
|
|
134
|
-
return s;
|
|
135
|
-
}
|
|
136
|
-
export function simulationsDir(srcRoot) {
|
|
137
|
-
const dir = path.join(srcRoot, ".claude", "simulations");
|
|
138
|
-
return { dir, exists: fs.existsSync(dir) };
|
|
139
|
-
}
|
|
140
|
-
/** List scenario YAML basenames (without extension) in the simulations dir. */
|
|
141
|
-
export function listScenarios(srcRoot) {
|
|
142
|
-
const { dir, exists } = simulationsDir(srcRoot);
|
|
143
|
-
if (!exists)
|
|
144
|
-
return [];
|
|
145
|
-
return fs
|
|
146
|
-
.readdirSync(dir)
|
|
147
|
-
.filter((f) => f.endsWith(".yaml") || f.endsWith(".yml"))
|
|
148
|
-
.map((f) => f.replace(/\.ya?ml$/, ""))
|
|
149
|
-
.sort();
|
|
150
|
-
}
|
|
151
|
-
export function loadScenarioByName(srcRoot, name) {
|
|
152
|
-
const { dir } = simulationsDir(srcRoot);
|
|
153
|
-
for (const ext of [".yaml", ".yml"]) {
|
|
154
|
-
const file = path.join(dir, `${name}${ext}`);
|
|
155
|
-
if (fs.existsSync(file))
|
|
156
|
-
return loadScenario(file);
|
|
157
|
-
}
|
|
158
|
-
throw new Error(`Scenario '${name}' not found in ${dir}`);
|
|
159
|
-
}
|
|
160
|
-
export { hasHarness };
|
|
161
|
-
//# sourceMappingURL=simulation-runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"simulation-runner.js","sourceRoot":"","sources":["../../src/core/simulation-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { EventRecord } from "../event-log.js";
|
|
2
|
-
import type { InventoryEntry } from "../build-inventory.js";
|
|
3
|
-
export type UsageStatus = "available" | "na";
|
|
4
|
-
export interface ArtifactUsage {
|
|
5
|
-
id: string;
|
|
6
|
-
type: string;
|
|
7
|
-
count: number;
|
|
8
|
-
lastSeen?: string;
|
|
9
|
-
status: UsageStatus;
|
|
10
|
-
}
|
|
11
|
-
export interface UsageReport {
|
|
12
|
-
status: UsageStatus;
|
|
13
|
-
reason?: string;
|
|
14
|
-
artifacts: ArtifactUsage[];
|
|
15
|
-
}
|
|
16
|
-
export declare function analyzeArtifactUsage(entries: InventoryEntry[], events: EventRecord[]): UsageReport;
|
|
17
|
-
export declare function filterUnused(report: UsageReport, threshold?: number): ArtifactUsage[];
|
|
18
|
-
//# sourceMappingURL=usage-analyzer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-analyzer.d.ts","sourceRoot":"","sources":["../../../src/core/usage/usage-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC3B;AAQD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,WAAW,CA2BlG;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,SAAI,GAAG,aAAa,EAAE,CAGhF"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
function eventArtifactId(event) {
|
|
2
|
-
if (event.event === "skill.invoked" && typeof event.data.skill === "string")
|
|
3
|
-
return event.data.skill;
|
|
4
|
-
if (event.event === "agent.invoked" && typeof event.data.agent === "string")
|
|
5
|
-
return event.data.agent;
|
|
6
|
-
return null;
|
|
7
|
-
}
|
|
8
|
-
export function analyzeArtifactUsage(entries, events) {
|
|
9
|
-
const usageEvents = events.filter((e) => eventArtifactId(e) !== null);
|
|
10
|
-
if (usageEvents.length === 0) {
|
|
11
|
-
return {
|
|
12
|
-
status: "na",
|
|
13
|
-
reason: "Usage events are not emitted yet; pruning cannot honestly classify artifacts as unused.",
|
|
14
|
-
artifacts: entries.map((e) => ({ id: e.id, type: e.type, count: 0, status: "na" })),
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
const counts = new Map();
|
|
18
|
-
for (const event of usageEvents) {
|
|
19
|
-
const id = eventArtifactId(event);
|
|
20
|
-
if (!id)
|
|
21
|
-
continue;
|
|
22
|
-
const row = counts.get(id) ?? { count: 0 };
|
|
23
|
-
row.count++;
|
|
24
|
-
if (!row.lastSeen || event.ts > row.lastSeen)
|
|
25
|
-
row.lastSeen = event.ts;
|
|
26
|
-
counts.set(id, row);
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
status: "available",
|
|
30
|
-
artifacts: entries.map((entry) => {
|
|
31
|
-
const row = counts.get(entry.id);
|
|
32
|
-
return { id: entry.id, type: entry.type, count: row?.count ?? 0, lastSeen: row?.lastSeen, status: "available" };
|
|
33
|
-
}),
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
export function filterUnused(report, threshold = 1) {
|
|
37
|
-
if (report.status !== "available")
|
|
38
|
-
return [];
|
|
39
|
-
return report.artifacts.filter((a) => a.count < threshold);
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=usage-analyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usage-analyzer.js","sourceRoot":"","sources":["../../../src/core/usage/usage-analyzer.ts"],"names":[],"mappings":"AAmBA,SAAS,eAAe,CAAC,KAAkB;IAC1C,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACrG,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACrG,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB,EAAE,MAAqB;IACpF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACtE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACN,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,yFAAyF;YACjG,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;SACnF,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgD,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE;YAAE,SAAS;QAClB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,QAAQ;YAAE,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACN,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAChC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACjH,CAAC,CAAC;KACF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,SAAS,GAAG,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC;AAC5D,CAAC"}
|
package/dist/memory/archive.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export interface ArchiveResult {
|
|
2
|
-
file: string;
|
|
3
|
-
archived: number;
|
|
4
|
-
wrote: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare function archiveMemory(memoryDir: string, olderThanDays: number, opts?: {
|
|
7
|
-
dryRun?: boolean;
|
|
8
|
-
}): ArchiveResult[];
|
|
9
|
-
//# sourceMappingURL=archive.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/memory/archive.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CACf;AAYD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,aAAa,EAAE,CAyBxH"}
|