mewkit 1.14.1 → 1.16.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/NOTICE +24 -0
- package/README.md +36 -70
- 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/commands/visual-plan.d.ts +23 -0
- package/dist/commands/visual-plan.d.ts.map +1 -0
- package/dist/commands/visual-plan.js +26 -0
- package/dist/commands/visual-plan.js.map +1 -0
- 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 +147 -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 +20 -3
- 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/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 +7 -0
- 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 +99 -25
- package/dist/index.js.map +1 -1
- package/dist/local-web/atomic-write.d.ts +15 -0
- package/dist/local-web/atomic-write.d.ts.map +1 -0
- package/dist/local-web/atomic-write.js +69 -0
- package/dist/local-web/atomic-write.js.map +1 -0
- package/dist/local-web/constants.d.ts +13 -0
- package/dist/local-web/constants.d.ts.map +1 -0
- package/dist/local-web/constants.js +13 -0
- package/dist/local-web/constants.js.map +1 -0
- package/dist/local-web/etag.d.ts +19 -0
- package/dist/local-web/etag.d.ts.map +1 -0
- package/dist/local-web/etag.js +32 -0
- package/dist/local-web/etag.js.map +1 -0
- package/dist/local-web/host-guard.d.ts +12 -0
- package/dist/local-web/host-guard.d.ts.map +1 -0
- package/dist/local-web/host-guard.js +18 -0
- package/dist/local-web/host-guard.js.map +1 -0
- package/dist/local-web/index.d.ts +23 -0
- package/dist/local-web/index.d.ts.map +1 -0
- package/dist/local-web/index.js +23 -0
- package/dist/local-web/index.js.map +1 -0
- package/dist/local-web/local-server.d.ts +37 -0
- package/dist/local-web/local-server.d.ts.map +1 -0
- package/dist/local-web/local-server.js +85 -0
- package/dist/local-web/local-server.js.map +1 -0
- package/dist/local-web/open-browser.d.ts +12 -0
- package/dist/local-web/open-browser.d.ts.map +1 -0
- package/dist/{orchviz/open-url.js → local-web/open-browser.js} +9 -8
- package/dist/local-web/open-browser.js.map +1 -0
- package/dist/local-web/origin-guard.d.ts +11 -0
- package/dist/local-web/origin-guard.d.ts.map +1 -0
- package/dist/local-web/origin-guard.js +15 -0
- package/dist/local-web/origin-guard.js.map +1 -0
- package/dist/local-web/path-boundary.d.ts +20 -0
- package/dist/local-web/path-boundary.d.ts.map +1 -0
- package/dist/local-web/path-boundary.js +39 -0
- package/dist/local-web/path-boundary.js.map +1 -0
- package/dist/local-web/request-body.d.ts +24 -0
- package/dist/local-web/request-body.d.ts.map +1 -0
- package/dist/local-web/request-body.js +68 -0
- package/dist/local-web/request-body.js.map +1 -0
- package/dist/local-web/static-handler.d.ts +14 -0
- package/dist/local-web/static-handler.d.ts.map +1 -0
- package/dist/{orchviz/server → local-web}/static-handler.js +11 -6
- package/dist/local-web/static-handler.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/migrate-orchestrator.d.ts.map +1 -1
- package/dist/migrate/migrate-orchestrator.js +22 -0
- package/dist/migrate/migrate-orchestrator.js.map +1 -1
- package/dist/migrate/reconcile/portable-manifest.d.ts +12 -12
- package/dist/migrate/reconcile/portable-registry.d.ts +30 -30
- package/dist/migrate/types.d.ts +10 -10
- package/dist/{orchviz/token-estimator.d.ts → token-estimator/index.d.ts} +6 -1
- package/dist/token-estimator/index.d.ts.map +1 -0
- package/dist/{orchviz/token-estimator.js → token-estimator/index.js} +11 -2
- package/dist/token-estimator/index.js.map +1 -0
- package/dist/visual-plan/__fixtures__/valid-plan.d.ts +15 -0
- package/dist/visual-plan/__fixtures__/valid-plan.d.ts.map +1 -0
- package/dist/visual-plan/__fixtures__/valid-plan.js +79 -0
- package/dist/visual-plan/__fixtures__/valid-plan.js.map +1 -0
- package/dist/visual-plan/application/apply-feedback.d.ts +31 -0
- package/dist/visual-plan/application/apply-feedback.d.ts.map +1 -0
- package/dist/visual-plan/application/apply-feedback.js +85 -0
- package/dist/visual-plan/application/apply-feedback.js.map +1 -0
- package/dist/visual-plan/application/apply-patch-op.d.ts +13 -0
- package/dist/visual-plan/application/apply-patch-op.d.ts.map +1 -0
- package/dist/visual-plan/application/apply-patch-op.js +72 -0
- package/dist/visual-plan/application/apply-patch-op.js.map +1 -0
- package/dist/visual-plan/application/approve.d.ts +24 -0
- package/dist/visual-plan/application/approve.d.ts.map +1 -0
- package/dist/visual-plan/application/approve.js +53 -0
- package/dist/visual-plan/application/approve.js.map +1 -0
- package/dist/visual-plan/application/clock.d.ts +8 -0
- package/dist/visual-plan/application/clock.d.ts.map +1 -0
- package/dist/visual-plan/application/clock.js +10 -0
- package/dist/visual-plan/application/clock.js.map +1 -0
- package/dist/visual-plan/application/export-plan.d.ts +19 -0
- package/dist/visual-plan/application/export-plan.d.ts.map +1 -0
- package/dist/visual-plan/application/export-plan.js +59 -0
- package/dist/visual-plan/application/export-plan.js.map +1 -0
- package/dist/visual-plan/application/patch-plan.d.ts +26 -0
- package/dist/visual-plan/application/patch-plan.d.ts.map +1 -0
- package/dist/visual-plan/application/patch-plan.js +48 -0
- package/dist/visual-plan/application/patch-plan.js.map +1 -0
- package/dist/visual-plan/application/prepare-feedback.d.ts +24 -0
- package/dist/visual-plan/application/prepare-feedback.d.ts.map +1 -0
- package/dist/visual-plan/application/prepare-feedback.js +70 -0
- package/dist/visual-plan/application/prepare-feedback.js.map +1 -0
- package/dist/visual-plan/application/rehash.d.ts +19 -0
- package/dist/visual-plan/application/rehash.d.ts.map +1 -0
- package/dist/visual-plan/application/rehash.js +43 -0
- package/dist/visual-plan/application/rehash.js.map +1 -0
- package/dist/visual-plan/application/status.d.ts +20 -0
- package/dist/visual-plan/application/status.d.ts.map +1 -0
- package/dist/visual-plan/application/status.js +27 -0
- package/dist/visual-plan/application/status.js.map +1 -0
- package/dist/visual-plan/application/validate-plan.d.ts +30 -0
- package/dist/visual-plan/application/validate-plan.d.ts.map +1 -0
- package/dist/visual-plan/application/validate-plan.js +59 -0
- package/dist/visual-plan/application/validate-plan.js.map +1 -0
- package/dist/visual-plan/domain/coverage.d.ts +35 -0
- package/dist/visual-plan/domain/coverage.d.ts.map +1 -0
- package/dist/visual-plan/domain/coverage.js +99 -0
- package/dist/visual-plan/domain/coverage.js.map +1 -0
- package/dist/visual-plan/domain/cross-refs.d.ts +20 -0
- package/dist/visual-plan/domain/cross-refs.d.ts.map +1 -0
- package/dist/visual-plan/domain/cross-refs.js +92 -0
- package/dist/visual-plan/domain/cross-refs.js.map +1 -0
- package/dist/visual-plan/domain/errors.d.ts +43 -0
- package/dist/visual-plan/domain/errors.d.ts.map +1 -0
- package/dist/visual-plan/domain/errors.js +33 -0
- package/dist/visual-plan/domain/errors.js.map +1 -0
- package/dist/visual-plan/domain/feedback-schemas.d.ts +160 -0
- package/dist/visual-plan/domain/feedback-schemas.d.ts.map +1 -0
- package/dist/visual-plan/domain/feedback-schemas.js +71 -0
- package/dist/visual-plan/domain/feedback-schemas.js.map +1 -0
- package/dist/visual-plan/domain/ids.d.ts +21 -0
- package/dist/visual-plan/domain/ids.d.ts.map +1 -0
- package/dist/visual-plan/domain/ids.js +25 -0
- package/dist/visual-plan/domain/ids.js.map +1 -0
- package/dist/visual-plan/domain/patches.d.ts +176 -0
- package/dist/visual-plan/domain/patches.d.ts.map +1 -0
- package/dist/visual-plan/domain/patches.js +41 -0
- package/dist/visual-plan/domain/patches.js.map +1 -0
- package/dist/visual-plan/domain/sanitizer-config.d.ts +61 -0
- package/dist/visual-plan/domain/sanitizer-config.d.ts.map +1 -0
- package/dist/visual-plan/domain/sanitizer-config.js +70 -0
- package/dist/visual-plan/domain/sanitizer-config.js.map +1 -0
- package/dist/visual-plan/domain/schemas.d.ts +1492 -0
- package/dist/visual-plan/domain/schemas.d.ts.map +1 -0
- package/dist/visual-plan/domain/schemas.js +166 -0
- package/dist/visual-plan/domain/schemas.js.map +1 -0
- package/dist/visual-plan/infrastructure/atomic-write.d.ts +11 -0
- package/dist/visual-plan/infrastructure/atomic-write.d.ts.map +1 -0
- package/dist/visual-plan/infrastructure/atomic-write.js +44 -0
- package/dist/visual-plan/infrastructure/atomic-write.js.map +1 -0
- package/dist/visual-plan/infrastructure/feedback-repository.d.ts +18 -0
- package/dist/visual-plan/infrastructure/feedback-repository.d.ts.map +1 -0
- package/dist/visual-plan/infrastructure/feedback-repository.js +59 -0
- package/dist/visual-plan/infrastructure/feedback-repository.js.map +1 -0
- package/dist/visual-plan/infrastructure/hashing.d.ts +37 -0
- package/dist/visual-plan/infrastructure/hashing.d.ts.map +1 -0
- package/dist/visual-plan/infrastructure/hashing.js +81 -0
- package/dist/visual-plan/infrastructure/hashing.js.map +1 -0
- package/dist/visual-plan/infrastructure/plan-state.d.ts +32 -0
- package/dist/visual-plan/infrastructure/plan-state.d.ts.map +1 -0
- package/dist/visual-plan/infrastructure/plan-state.js +58 -0
- package/dist/visual-plan/infrastructure/plan-state.js.map +1 -0
- package/dist/visual-plan/infrastructure/receipt-repository.d.ts +17 -0
- package/dist/visual-plan/infrastructure/receipt-repository.d.ts.map +1 -0
- package/dist/visual-plan/infrastructure/receipt-repository.js +59 -0
- package/dist/visual-plan/infrastructure/receipt-repository.js.map +1 -0
- package/dist/visual-plan/infrastructure/visual-plan-repository.d.ts +38 -0
- package/dist/visual-plan/infrastructure/visual-plan-repository.d.ts.map +1 -0
- package/dist/visual-plan/infrastructure/visual-plan-repository.js +97 -0
- package/dist/visual-plan/infrastructure/visual-plan-repository.js.map +1 -0
- package/dist/visual-plan/infrastructure/wireframe-sanitizer.d.ts +41 -0
- package/dist/visual-plan/infrastructure/wireframe-sanitizer.d.ts.map +1 -0
- package/dist/visual-plan/infrastructure/wireframe-sanitizer.js +72 -0
- package/dist/visual-plan/infrastructure/wireframe-sanitizer.js.map +1 -0
- package/dist/visual-plan/interface/cli.d.ts +29 -0
- package/dist/visual-plan/interface/cli.d.ts.map +1 -0
- package/dist/visual-plan/interface/cli.js +280 -0
- package/dist/visual-plan/interface/cli.js.map +1 -0
- package/dist/visual-plan/interface/studio.d.ts +20 -0
- package/dist/visual-plan/interface/studio.d.ts.map +1 -0
- package/dist/visual-plan/interface/studio.js +74 -0
- package/dist/visual-plan/interface/studio.js.map +1 -0
- package/dist/visual-plan/server/csp.d.ts +13 -0
- package/dist/visual-plan/server/csp.d.ts.map +1 -0
- package/dist/visual-plan/server/csp.js +17 -0
- package/dist/visual-plan/server/csp.js.map +1 -0
- package/dist/visual-plan/server/edit-lock.d.ts +28 -0
- package/dist/visual-plan/server/edit-lock.d.ts.map +1 -0
- package/dist/visual-plan/server/edit-lock.js +71 -0
- package/dist/visual-plan/server/edit-lock.js.map +1 -0
- package/dist/visual-plan/server/routes/feedback.d.ts +12 -0
- package/dist/visual-plan/server/routes/feedback.d.ts.map +1 -0
- package/dist/visual-plan/server/routes/feedback.js +63 -0
- package/dist/visual-plan/server/routes/feedback.js.map +1 -0
- package/dist/visual-plan/server/routes/get-plan.d.ts +14 -0
- package/dist/visual-plan/server/routes/get-plan.d.ts.map +1 -0
- package/dist/visual-plan/server/routes/get-plan.js +38 -0
- package/dist/visual-plan/server/routes/get-plan.js.map +1 -0
- package/dist/visual-plan/server/routes/patch.d.ts +10 -0
- package/dist/visual-plan/server/routes/patch.d.ts.map +1 -0
- package/dist/visual-plan/server/routes/patch.js +66 -0
- package/dist/visual-plan/server/routes/patch.js.map +1 -0
- package/dist/visual-plan/server/visual-plan-server.d.ts +30 -0
- package/dist/visual-plan/server/visual-plan-server.d.ts.map +1 -0
- package/dist/visual-plan/server/visual-plan-server.js +79 -0
- package/dist/visual-plan/server/visual-plan-server.js.map +1 -0
- package/dist/visual-plan-web/architects-daughter-latin-400-normal.woff +0 -0
- package/dist/visual-plan-web/architects-daughter-latin-400-normal.woff2 +0 -0
- package/dist/visual-plan-web/architects-daughter-latin-ext-400-normal.woff +0 -0
- package/dist/visual-plan-web/architects-daughter-latin-ext-400-normal.woff2 +0 -0
- package/dist/visual-plan-web/index.css +1 -0
- package/dist/visual-plan-web/index.html +17 -0
- package/dist/visual-plan-web/index.js +51 -0
- package/package.json +14 -17
- 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/orchviz.d.ts +0 -12
- package/dist/commands/orchviz.d.ts.map +0 -1
- package/dist/commands/orchviz.js +0 -157
- package/dist/commands/orchviz.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/migrate/converters/md-to-codex-rules.d.ts +0 -10
- package/dist/migrate/converters/md-to-codex-rules.d.ts.map +0 -1
- package/dist/migrate/converters/md-to-codex-rules.js +0 -133
- package/dist/migrate/converters/md-to-codex-rules.js.map +0 -1
- package/dist/orchviz/constants.d.ts +0 -72
- package/dist/orchviz/constants.d.ts.map +0 -1
- package/dist/orchviz/constants.js +0 -105
- package/dist/orchviz/constants.js.map +0 -1
- package/dist/orchviz/fs-utils.d.ts +0 -24
- package/dist/orchviz/fs-utils.d.ts.map +0 -1
- package/dist/orchviz/fs-utils.js +0 -49
- package/dist/orchviz/fs-utils.js.map +0 -1
- package/dist/orchviz/index.d.ts +0 -29
- package/dist/orchviz/index.d.ts.map +0 -1
- package/dist/orchviz/index.js +0 -28
- package/dist/orchviz/index.js.map +0 -1
- package/dist/orchviz/log-persister.d.ts +0 -22
- package/dist/orchviz/log-persister.d.ts.map +0 -1
- package/dist/orchviz/log-persister.js +0 -96
- package/dist/orchviz/log-persister.js.map +0 -1
- package/dist/orchviz/logger.d.ts +0 -13
- package/dist/orchviz/logger.d.ts.map +0 -1
- package/dist/orchviz/logger.js +0 -47
- package/dist/orchviz/logger.js.map +0 -1
- package/dist/orchviz/open-url.d.ts +0 -11
- package/dist/orchviz/open-url.d.ts.map +0 -1
- package/dist/orchviz/open-url.js.map +0 -1
- package/dist/orchviz/overlay/collector.d.ts +0 -29
- package/dist/orchviz/overlay/collector.d.ts.map +0 -1
- package/dist/orchviz/overlay/collector.js +0 -38
- package/dist/orchviz/overlay/collector.js.map +0 -1
- package/dist/orchviz/overlay/gate-readers.d.ts +0 -18
- package/dist/orchviz/overlay/gate-readers.d.ts.map +0 -1
- package/dist/orchviz/overlay/gate-readers.js +0 -111
- package/dist/orchviz/overlay/gate-readers.js.map +0 -1
- package/dist/orchviz/overlay/session-state-readers.d.ts +0 -18
- package/dist/orchviz/overlay/session-state-readers.d.ts.map +0 -1
- package/dist/orchviz/overlay/session-state-readers.js +0 -78
- package/dist/orchviz/overlay/session-state-readers.js.map +0 -1
- package/dist/orchviz/parser/handle-progress.d.ts +0 -9
- package/dist/orchviz/parser/handle-progress.d.ts.map +0 -1
- package/dist/orchviz/parser/handle-progress.js +0 -38
- package/dist/orchviz/parser/handle-progress.js.map +0 -1
- package/dist/orchviz/parser/handle-system.d.ts +0 -22
- package/dist/orchviz/parser/handle-system.d.ts.map +0 -1
- package/dist/orchviz/parser/handle-system.js +0 -99
- package/dist/orchviz/parser/handle-system.js.map +0 -1
- package/dist/orchviz/parser/handle-text.d.ts +0 -10
- package/dist/orchviz/parser/handle-text.d.ts.map +0 -1
- package/dist/orchviz/parser/handle-text.js +0 -83
- package/dist/orchviz/parser/handle-text.js.map +0 -1
- package/dist/orchviz/parser/handle-thinking.d.ts +0 -10
- package/dist/orchviz/parser/handle-thinking.d.ts.map +0 -1
- package/dist/orchviz/parser/handle-thinking.js +0 -35
- package/dist/orchviz/parser/handle-thinking.js.map +0 -1
- package/dist/orchviz/parser/handle-tool-result.d.ts +0 -10
- package/dist/orchviz/parser/handle-tool-result.d.ts.map +0 -1
- package/dist/orchviz/parser/handle-tool-result.js +0 -130
- package/dist/orchviz/parser/handle-tool-result.js.map +0 -1
- package/dist/orchviz/parser/handle-tool-use.d.ts +0 -11
- package/dist/orchviz/parser/handle-tool-use.d.ts.map +0 -1
- package/dist/orchviz/parser/handle-tool-use.js +0 -120
- package/dist/orchviz/parser/handle-tool-use.js.map +0 -1
- package/dist/orchviz/parser/index.d.ts +0 -38
- package/dist/orchviz/parser/index.d.ts.map +0 -1
- package/dist/orchviz/parser/index.js +0 -144
- package/dist/orchviz/parser/index.js.map +0 -1
- package/dist/orchviz/parser/label-helpers.d.ts +0 -9
- package/dist/orchviz/parser/label-helpers.d.ts.map +0 -1
- package/dist/orchviz/parser/label-helpers.js +0 -44
- package/dist/orchviz/parser/label-helpers.js.map +0 -1
- package/dist/orchviz/parser/strip-ansi.d.ts +0 -6
- package/dist/orchviz/parser/strip-ansi.d.ts.map +0 -1
- package/dist/orchviz/parser/strip-ansi.js +0 -14
- package/dist/orchviz/parser/strip-ansi.js.map +0 -1
- package/dist/orchviz/parser/utils.d.ts +0 -20
- package/dist/orchviz/parser/utils.d.ts.map +0 -1
- package/dist/orchviz/parser/utils.js +0 -54
- package/dist/orchviz/parser/utils.js.map +0 -1
- package/dist/orchviz/permission-detection.d.ts +0 -32
- package/dist/orchviz/permission-detection.d.ts.map +0 -1
- package/dist/orchviz/permission-detection.js +0 -104
- package/dist/orchviz/permission-detection.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/plan/apply-todo-toggle.d.ts +0 -29
- package/dist/orchviz/plan/apply-todo-toggle.d.ts.map +0 -1
- package/dist/orchviz/plan/apply-todo-toggle.js +0 -129
- package/dist/orchviz/plan/apply-todo-toggle.js.map +0 -1
- package/dist/orchviz/plan/atomic-write.d.ts +0 -25
- package/dist/orchviz/plan/atomic-write.d.ts.map +0 -1
- package/dist/orchviz/plan/atomic-write.js +0 -85
- package/dist/orchviz/plan/atomic-write.js.map +0 -1
- package/dist/orchviz/plan/collector.d.ts +0 -49
- package/dist/orchviz/plan/collector.d.ts.map +0 -1
- package/dist/orchviz/plan/collector.js +0 -169
- package/dist/orchviz/plan/collector.js.map +0 -1
- package/dist/orchviz/plan/etag.d.ts +0 -24
- package/dist/orchviz/plan/etag.d.ts.map +0 -1
- package/dist/orchviz/plan/etag.js +0 -58
- package/dist/orchviz/plan/etag.js.map +0 -1
- package/dist/orchviz/plan/find-active-plan.d.ts +0 -9
- package/dist/orchviz/plan/find-active-plan.d.ts.map +0 -1
- package/dist/orchviz/plan/find-active-plan.js +0 -90
- package/dist/orchviz/plan/find-active-plan.js.map +0 -1
- package/dist/orchviz/plan/index.d.ts +0 -23
- package/dist/orchviz/plan/index.d.ts.map +0 -1
- package/dist/orchviz/plan/index.js +0 -91
- package/dist/orchviz/plan/index.js.map +0 -1
- package/dist/orchviz/plan/list-plans.d.ts +0 -19
- package/dist/orchviz/plan/list-plans.d.ts.map +0 -1
- package/dist/orchviz/plan/list-plans.js +0 -143
- package/dist/orchviz/plan/list-plans.js.map +0 -1
- package/dist/orchviz/plan/parse-phase-file.d.ts +0 -13
- package/dist/orchviz/plan/parse-phase-file.d.ts.map +0 -1
- package/dist/orchviz/plan/parse-phase-file.js +0 -134
- package/dist/orchviz/plan/parse-phase-file.js.map +0 -1
- package/dist/orchviz/plan/parse-plan-file.d.ts +0 -19
- package/dist/orchviz/plan/parse-plan-file.d.ts.map +0 -1
- package/dist/orchviz/plan/parse-plan-file.js +0 -62
- package/dist/orchviz/plan/parse-plan-file.js.map +0 -1
- package/dist/orchviz/plan/plan-constants.d.ts +0 -17
- package/dist/orchviz/plan/plan-constants.d.ts.map +0 -1
- package/dist/orchviz/plan/plan-constants.js +0 -19
- package/dist/orchviz/plan/plan-constants.js.map +0 -1
- package/dist/orchviz/plan/plan-lifecycle.d.ts +0 -17
- package/dist/orchviz/plan/plan-lifecycle.d.ts.map +0 -1
- package/dist/orchviz/plan/plan-lifecycle.js +0 -97
- package/dist/orchviz/plan/plan-lifecycle.js.map +0 -1
- package/dist/orchviz/plan/types.d.ts +0 -46
- package/dist/orchviz/plan/types.d.ts.map +0 -1
- package/dist/orchviz/plan/types.js +0 -6
- package/dist/orchviz/plan/types.js.map +0 -1
- package/dist/orchviz/protocol.d.ts +0 -171
- package/dist/orchviz/protocol.d.ts.map +0 -1
- package/dist/orchviz/protocol.js +0 -23
- package/dist/orchviz/protocol.js.map +0 -1
- package/dist/orchviz/redact.d.ts +0 -10
- package/dist/orchviz/redact.d.ts.map +0 -1
- package/dist/orchviz/redact.js +0 -38
- package/dist/orchviz/redact.js.map +0 -1
- package/dist/orchviz/sanitize.d.ts +0 -11
- package/dist/orchviz/sanitize.d.ts.map +0 -1
- package/dist/orchviz/sanitize.js +0 -38
- package/dist/orchviz/sanitize.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/server/api-handlers.d.ts +0 -55
- package/dist/orchviz/server/api-handlers.d.ts.map +0 -1
- package/dist/orchviz/server/api-handlers.js +0 -112
- package/dist/orchviz/server/api-handlers.js.map +0 -1
- package/dist/orchviz/server/index.d.ts +0 -36
- package/dist/orchviz/server/index.d.ts.map +0 -1
- package/dist/orchviz/server/index.js +0 -144
- package/dist/orchviz/server/index.js.map +0 -1
- package/dist/orchviz/server/sse-handler.d.ts +0 -28
- package/dist/orchviz/server/sse-handler.d.ts.map +0 -1
- package/dist/orchviz/server/sse-handler.js +0 -217
- package/dist/orchviz/server/sse-handler.js.map +0 -1
- package/dist/orchviz/server/static-handler.d.ts +0 -9
- package/dist/orchviz/server/static-handler.d.ts.map +0 -1
- package/dist/orchviz/server/static-handler.js.map +0 -1
- package/dist/orchviz/server/write-handlers.d.ts +0 -20
- package/dist/orchviz/server/write-handlers.d.ts.map +0 -1
- package/dist/orchviz/server/write-handlers.js +0 -184
- package/dist/orchviz/server/write-handlers.js.map +0 -1
- package/dist/orchviz/server/write-utils.d.ts +0 -59
- package/dist/orchviz/server/write-utils.d.ts.map +0 -1
- package/dist/orchviz/server/write-utils.js +0 -161
- package/dist/orchviz/server/write-utils.js.map +0 -1
- package/dist/orchviz/session-discovery.d.ts +0 -19
- package/dist/orchviz/session-discovery.d.ts.map +0 -1
- package/dist/orchviz/session-discovery.js +0 -104
- package/dist/orchviz/session-discovery.js.map +0 -1
- package/dist/orchviz/session-manager.d.ts +0 -17
- package/dist/orchviz/session-manager.d.ts.map +0 -1
- package/dist/orchviz/session-manager.js +0 -63
- package/dist/orchviz/session-manager.js.map +0 -1
- package/dist/orchviz/session-runtime.d.ts +0 -21
- package/dist/orchviz/session-runtime.d.ts.map +0 -1
- package/dist/orchviz/session-runtime.js +0 -135
- package/dist/orchviz/session-runtime.js.map +0 -1
- package/dist/orchviz/session-watcher.d.ts +0 -33
- package/dist/orchviz/session-watcher.d.ts.map +0 -1
- package/dist/orchviz/session-watcher.js +0 -135
- package/dist/orchviz/session-watcher.js.map +0 -1
- package/dist/orchviz/subagent-meta.d.ts +0 -12
- package/dist/orchviz/subagent-meta.d.ts.map +0 -1
- package/dist/orchviz/subagent-meta.js +0 -34
- package/dist/orchviz/subagent-meta.js.map +0 -1
- package/dist/orchviz/subagent-scanner.d.ts +0 -15
- package/dist/orchviz/subagent-scanner.d.ts.map +0 -1
- package/dist/orchviz/subagent-scanner.js +0 -27
- package/dist/orchviz/subagent-scanner.js.map +0 -1
- package/dist/orchviz/subagent-watcher.d.ts +0 -20
- package/dist/orchviz/subagent-watcher.d.ts.map +0 -1
- package/dist/orchviz/subagent-watcher.js +0 -160
- package/dist/orchviz/subagent-watcher.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
- package/dist/orchviz/token-estimator.d.ts.map +0 -1
- package/dist/orchviz/token-estimator.js.map +0 -1
- package/dist/orchviz/tool-input-data.d.ts +0 -11
- package/dist/orchviz/tool-input-data.d.ts.map +0 -1
- package/dist/orchviz/tool-input-data.js +0 -74
- package/dist/orchviz/tool-input-data.js.map +0 -1
- package/dist/orchviz/tool-summarizer.d.ts +0 -16
- package/dist/orchviz/tool-summarizer.d.ts.map +0 -1
- package/dist/orchviz/tool-summarizer.js +0 -129
- package/dist/orchviz/tool-summarizer.js.map +0 -1
- package/dist/orchviz-web/fira-code-cyrillic-400-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-cyrillic-400-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-cyrillic-500-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-cyrillic-500-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-cyrillic-ext-400-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-cyrillic-ext-500-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-cyrillic-ext-500-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-greek-400-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-greek-400-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-greek-500-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-greek-500-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-greek-ext-400-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-greek-ext-400-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-greek-ext-500-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-greek-ext-500-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-latin-400-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-latin-400-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-latin-500-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-latin-500-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-latin-ext-400-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-latin-ext-400-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-latin-ext-500-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-latin-ext-500-normal.woff2 +0 -0
- package/dist/orchviz-web/fira-code-symbols2-400-normal.woff +0 -0
- package/dist/orchviz-web/fira-code-symbols2-500-normal.woff +0 -0
- package/dist/orchviz-web/index.css +0 -1
- package/dist/orchviz-web/index.html +0 -18
- package/dist/orchviz-web/index.js +0 -53
- package/dist/orchviz-web/inter-cyrillic-400-normal.woff +0 -0
- package/dist/orchviz-web/inter-cyrillic-400-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-cyrillic-500-normal.woff +0 -0
- package/dist/orchviz-web/inter-cyrillic-500-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-cyrillic-600-normal.woff +0 -0
- package/dist/orchviz-web/inter-cyrillic-600-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-cyrillic-ext-400-normal.woff +0 -0
- package/dist/orchviz-web/inter-cyrillic-ext-400-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-cyrillic-ext-500-normal.woff +0 -0
- package/dist/orchviz-web/inter-cyrillic-ext-500-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-cyrillic-ext-600-normal.woff +0 -0
- package/dist/orchviz-web/inter-cyrillic-ext-600-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-greek-400-normal.woff +0 -0
- package/dist/orchviz-web/inter-greek-400-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-greek-500-normal.woff +0 -0
- package/dist/orchviz-web/inter-greek-500-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-greek-600-normal.woff +0 -0
- package/dist/orchviz-web/inter-greek-600-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-greek-ext-400-normal.woff +0 -0
- package/dist/orchviz-web/inter-greek-ext-400-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-greek-ext-500-normal.woff +0 -0
- package/dist/orchviz-web/inter-greek-ext-500-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-greek-ext-600-normal.woff +0 -0
- package/dist/orchviz-web/inter-greek-ext-600-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-latin-400-normal.woff +0 -0
- package/dist/orchviz-web/inter-latin-400-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-latin-500-normal.woff +0 -0
- package/dist/orchviz-web/inter-latin-500-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-latin-600-normal.woff +0 -0
- package/dist/orchviz-web/inter-latin-600-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-latin-ext-400-normal.woff +0 -0
- package/dist/orchviz-web/inter-latin-ext-400-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-latin-ext-500-normal.woff +0 -0
- package/dist/orchviz-web/inter-latin-ext-500-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-latin-ext-600-normal.woff +0 -0
- package/dist/orchviz-web/inter-latin-ext-600-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-vietnamese-400-normal.woff +0 -0
- package/dist/orchviz-web/inter-vietnamese-400-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-vietnamese-500-normal.woff +0 -0
- package/dist/orchviz-web/inter-vietnamese-500-normal.woff2 +0 -0
- package/dist/orchviz-web/inter-vietnamese-600-normal.woff +0 -0
- package/dist/orchviz-web/inter-vietnamese-600-normal.woff2 +0 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical valid `visual-plan/v1` fixture (as a builder returning a fresh deep
|
|
3
|
+
* copy each call, so a test can mutate one failure class without touching
|
|
4
|
+
* others). Source hashes are left empty here — the test helper stamps them from
|
|
5
|
+
* the on-disk plan.md/phase files so the "valid" case passes freshness.
|
|
6
|
+
*
|
|
7
|
+
* The wireframe HTML uses only the allowed `.wf-*` structural vocabulary and no
|
|
8
|
+
* form controls, so it survives the reject-mode sanitizer unchanged.
|
|
9
|
+
*/
|
|
10
|
+
const SAFE_LOGIN_HTML = '<section class="wf-screen"><header class="wf-topbar"><h1>Sign in</h1></header>' +
|
|
11
|
+
'<div class="wf-form"><label>Email</label><div class="wf-input"></div>' +
|
|
12
|
+
'<label>Password</label><div class="wf-input"></div>' +
|
|
13
|
+
'<a href="#submit" class="wf-button">Continue</a></div></section>';
|
|
14
|
+
const SAFE_ERROR_HTML = '<section class="wf-screen"><header class="wf-topbar"><h1>Sign in</h1></header>' +
|
|
15
|
+
'<p class="wf-error">Incorrect email or password.</p>' +
|
|
16
|
+
'<div class="wf-form"><label>Email</label><div class="wf-input"></div></div></section>';
|
|
17
|
+
/** A structurally + referentially valid artifact. Deep-copied on every call. */
|
|
18
|
+
export function makeValidPlan() {
|
|
19
|
+
return JSON.parse(JSON.stringify(BASE));
|
|
20
|
+
}
|
|
21
|
+
/** Markdown the fixture's source hashes are computed against. */
|
|
22
|
+
export const FIXTURE_PLAN_MD = "# Sample Plan\n\nAuth flow.\n";
|
|
23
|
+
export const FIXTURE_PHASE_MD = "---\nphase: 1\n---\n\n# Phase 1\n\nLogin screen.\n";
|
|
24
|
+
const BASE = {
|
|
25
|
+
schemaVersion: "visual-plan/v1",
|
|
26
|
+
id: "sample-plan",
|
|
27
|
+
revision: 0,
|
|
28
|
+
source: { planPath: "plan.md", planHash: "", phaseHashes: {} },
|
|
29
|
+
uiCoverage: {
|
|
30
|
+
surfaces: [
|
|
31
|
+
{
|
|
32
|
+
id: "s-auth",
|
|
33
|
+
label: "Authentication",
|
|
34
|
+
states: [
|
|
35
|
+
{ id: "st-login-default", label: "Login (default)", frameIds: ["fr-login"], sourceRefIds: ["ref-login-code"] },
|
|
36
|
+
{ id: "st-login-error", label: "Login (error)", frameIds: ["fr-login-error"], sourceRefIds: [] },
|
|
37
|
+
{ id: "st-forgot", label: "Forgot password", frameIds: [], sourceRefIds: [], omitted: { reason: "out-of-scope" } },
|
|
38
|
+
{ id: "st-2fa", label: "2FA", frameIds: [], sourceRefIds: [], omitted: { reason: "equivalent-layout", representedBy: "st-login-default" } },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
canvas: {
|
|
44
|
+
lanes: [{ id: "lane-primary", label: "Primary flow" }],
|
|
45
|
+
frames: [
|
|
46
|
+
{
|
|
47
|
+
id: "fr-login",
|
|
48
|
+
label: "Login",
|
|
49
|
+
surface: "browser",
|
|
50
|
+
laneId: "lane-primary",
|
|
51
|
+
order: 0,
|
|
52
|
+
changeMode: "current",
|
|
53
|
+
coverageStateIds: ["st-login-default"],
|
|
54
|
+
sourceRefIds: ["ref-login-code"],
|
|
55
|
+
wireframe: { format: "semantic-html", html: SAFE_LOGIN_HTML },
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: "fr-login-error",
|
|
59
|
+
label: "Login error",
|
|
60
|
+
surface: "browser",
|
|
61
|
+
laneId: "lane-primary",
|
|
62
|
+
order: 1,
|
|
63
|
+
changeMode: "target",
|
|
64
|
+
coverageStateIds: ["st-login-error"],
|
|
65
|
+
sourceRefIds: [],
|
|
66
|
+
wireframe: { format: "semantic-html", html: SAFE_ERROR_HTML },
|
|
67
|
+
},
|
|
68
|
+
],
|
|
69
|
+
connectors: [{ id: "c-login-error", from: "fr-login", to: "fr-login-error", label: "invalid credentials" }],
|
|
70
|
+
annotations: [{ id: "an-note-1", kind: "note", text: "Primary CTA", targetId: "fr-login", placement: "top" }],
|
|
71
|
+
},
|
|
72
|
+
documentBlocks: [{ id: "db-mechanics", title: "Mechanics", body: "Session cookie set on success." }],
|
|
73
|
+
sourceRefs: [
|
|
74
|
+
{ id: "ref-login-code", kind: "code", ref: "src/features/auth/login.tsx" },
|
|
75
|
+
{ id: "ref-new-2fa", kind: "plan-requirement", ref: "phase-01#2fa" },
|
|
76
|
+
],
|
|
77
|
+
review: { status: "draft", approvedRevision: null, approvedAt: null, pendingFeedbackBatchIds: [] },
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=valid-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valid-plan.js","sourceRoot":"","sources":["../../../src/visual-plan/__fixtures__/valid-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply-feedback CLI mechanics (deterministic half of the Phase-6 loop).
|
|
3
|
+
*
|
|
4
|
+
* The AGENT (the mk:visual-plan skill) classifies + applies each operation
|
|
5
|
+
* (visual-only → CLI patch; plan-semantic → Markdown edit; implementation →
|
|
6
|
+
* deferred; ambiguous → ask). This module owns only the deterministic guards:
|
|
7
|
+
* - `checkBatchFresh` — STOP before ANY mutation if the batch's baseRevision/
|
|
8
|
+
* baseHash no longer match the artifact (no auto-merge onto drifted state).
|
|
9
|
+
* - `recordResolution` — write the per-op receipt write-once (refuse a second
|
|
10
|
+
* apply of the same batch). Receipt existence is the "resolved" marker.
|
|
11
|
+
*/
|
|
12
|
+
export interface FreshnessResult {
|
|
13
|
+
ok: boolean;
|
|
14
|
+
stale?: boolean;
|
|
15
|
+
reason?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Verify the batch still applies to the CURRENT artifact (pre-apply gate). */
|
|
18
|
+
export declare function checkBatchFresh(planDir: string, batchId: string): FreshnessResult;
|
|
19
|
+
export interface RecordResult {
|
|
20
|
+
ok: boolean;
|
|
21
|
+
receiptPath?: string;
|
|
22
|
+
reopenCommand?: string;
|
|
23
|
+
error?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Write the resolution receipt (agent supplies per-op outcomes). Refuses a
|
|
27
|
+
* double-apply. `resolvedAtRevision` is the artifact's CURRENT revision (after
|
|
28
|
+
* the agent applied ops). Returns the reopen command for re-review.
|
|
29
|
+
*/
|
|
30
|
+
export declare function recordResolution(planDir: string, batchId: string, entries: unknown): RecordResult;
|
|
31
|
+
//# sourceMappingURL=apply-feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-feedback.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/application/apply-feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAcjF;AAED,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAiCjG"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply-feedback CLI mechanics (deterministic half of the Phase-6 loop).
|
|
3
|
+
*
|
|
4
|
+
* The AGENT (the mk:visual-plan skill) classifies + applies each operation
|
|
5
|
+
* (visual-only → CLI patch; plan-semantic → Markdown edit; implementation →
|
|
6
|
+
* deferred; ambiguous → ask). This module owns only the deterministic guards:
|
|
7
|
+
* - `checkBatchFresh` — STOP before ANY mutation if the batch's baseRevision/
|
|
8
|
+
* baseHash no longer match the artifact (no auto-merge onto drifted state).
|
|
9
|
+
* - `recordResolution` — write the per-op receipt write-once (refuse a second
|
|
10
|
+
* apply of the same batch). Receipt existence is the "resolved" marker.
|
|
11
|
+
*/
|
|
12
|
+
import { readArtifactRaw, artifactPath, writeArtifact } from "../infrastructure/visual-plan-repository.js";
|
|
13
|
+
import { etagFromFile } from "../../local-web/etag.js";
|
|
14
|
+
import { VisualPlanSchema } from "../domain/schemas.js";
|
|
15
|
+
import { ResolutionReceiptSchema } from "../domain/feedback-schemas.js";
|
|
16
|
+
import { readBatch } from "../infrastructure/feedback-repository.js";
|
|
17
|
+
import { receiptExists, writeReceipt } from "../infrastructure/receipt-repository.js";
|
|
18
|
+
import { buildVisualBlock, writeVisualBlock } from "../infrastructure/plan-state.js";
|
|
19
|
+
import { isValidFeedbackBatchId } from "../domain/ids.js";
|
|
20
|
+
import { nowIso } from "./clock.js";
|
|
21
|
+
/** Verify the batch still applies to the CURRENT artifact (pre-apply gate). */
|
|
22
|
+
export function checkBatchFresh(planDir, batchId) {
|
|
23
|
+
if (!isValidFeedbackBatchId(batchId))
|
|
24
|
+
return { ok: false, reason: `invalid batch id: ${JSON.stringify(batchId)}` };
|
|
25
|
+
const batch = readBatch(planDir, batchId);
|
|
26
|
+
if (!batch)
|
|
27
|
+
return { ok: false, reason: `batch ${batchId} not found or invalid` };
|
|
28
|
+
if (receiptExists(planDir, batchId))
|
|
29
|
+
return { ok: false, reason: `batch ${batchId} already resolved` };
|
|
30
|
+
const read = readArtifactRaw(planDir);
|
|
31
|
+
if (read.error)
|
|
32
|
+
return { ok: false, reason: "no visual artifact" };
|
|
33
|
+
const parsed = VisualPlanSchema.safeParse(read.raw);
|
|
34
|
+
if (!parsed.success)
|
|
35
|
+
return { ok: false, reason: "artifact not schema-valid" };
|
|
36
|
+
const currentHash = etagFromFile(artifactPath(planDir));
|
|
37
|
+
if (batch.baseRevision !== parsed.data.revision || batch.baseHash !== currentHash) {
|
|
38
|
+
return { ok: false, stale: true, reason: `batch base (rev ${batch.baseRevision}) no longer matches artifact (rev ${parsed.data.revision}) — regenerate feedback` };
|
|
39
|
+
}
|
|
40
|
+
return { ok: true };
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Write the resolution receipt (agent supplies per-op outcomes). Refuses a
|
|
44
|
+
* double-apply. `resolvedAtRevision` is the artifact's CURRENT revision (after
|
|
45
|
+
* the agent applied ops). Returns the reopen command for re-review.
|
|
46
|
+
*/
|
|
47
|
+
export function recordResolution(planDir, batchId, entries) {
|
|
48
|
+
if (!isValidFeedbackBatchId(batchId))
|
|
49
|
+
return { ok: false, error: `invalid batch id: ${JSON.stringify(batchId)}` };
|
|
50
|
+
const batch = readBatch(planDir, batchId);
|
|
51
|
+
if (!batch)
|
|
52
|
+
return { ok: false, error: `batch ${batchId} not found or invalid` };
|
|
53
|
+
if (receiptExists(planDir, batchId))
|
|
54
|
+
return { ok: false, error: `batch ${batchId} already resolved (receipt exists)` };
|
|
55
|
+
const read = readArtifactRaw(planDir);
|
|
56
|
+
if (read.error)
|
|
57
|
+
return { ok: false, error: "no visual artifact" };
|
|
58
|
+
const parsed = VisualPlanSchema.safeParse(read.raw);
|
|
59
|
+
if (!parsed.success)
|
|
60
|
+
return { ok: false, error: "artifact not schema-valid" };
|
|
61
|
+
const receipt = ResolutionReceiptSchema.safeParse({
|
|
62
|
+
schemaVersion: "visual-feedback-receipt/v1",
|
|
63
|
+
batchId,
|
|
64
|
+
planId: parsed.data.id,
|
|
65
|
+
baseRevision: batch.baseRevision,
|
|
66
|
+
resolvedAtRevision: parsed.data.revision,
|
|
67
|
+
resolvedAt: nowIso(),
|
|
68
|
+
entries,
|
|
69
|
+
});
|
|
70
|
+
if (!receipt.success)
|
|
71
|
+
return { ok: false, error: `invalid receipt entries: ${receipt.error.issues[0]?.message ?? "schema"}` };
|
|
72
|
+
if (!writeReceipt(planDir, receipt.data))
|
|
73
|
+
return { ok: false, error: `receipt for ${batchId} already exists` };
|
|
74
|
+
// Clear the batch from the pending list (it is now resolved). When none remain,
|
|
75
|
+
// drop review back to `draft` so the plan is eligible for re-review + approve.
|
|
76
|
+
const plan = parsed.data;
|
|
77
|
+
plan.review.pendingFeedbackBatchIds = plan.review.pendingFeedbackBatchIds.filter((x) => x !== batchId);
|
|
78
|
+
if (plan.review.pendingFeedbackBatchIds.length === 0 && plan.review.status === "feedback-pending") {
|
|
79
|
+
plan.review.status = "draft";
|
|
80
|
+
}
|
|
81
|
+
writeArtifact(planDir, plan);
|
|
82
|
+
writeVisualBlock(planDir, buildVisualBlock(plan, planDir));
|
|
83
|
+
return { ok: true, receiptPath: `visual-plan/resolutions/${batchId}.json`, reopenCommand: `mewkit visual-plan edit ${planDir}` };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=apply-feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-feedback.js","sourceRoot":"","sources":["../../../src/visual-plan/application/apply-feedback.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply a single typed visual patch op to a parsed plan (mutates in place).
|
|
3
|
+
*
|
|
4
|
+
* Returns an error message when the op cannot apply (unknown target, duplicate
|
|
5
|
+
* append, unknown wireframe field); the orchestrator rejects the patch and never
|
|
6
|
+
* writes. Structural/coverage/safety re-validation is the orchestrator's job —
|
|
7
|
+
* this function only performs the mutation and the immediate target checks.
|
|
8
|
+
*/
|
|
9
|
+
import type { PatchOp } from "../domain/patches.js";
|
|
10
|
+
import type { VisualPlan } from "../domain/schemas.js";
|
|
11
|
+
/** Mutate `plan` by `op`. Returns null on success, or an error message. */
|
|
12
|
+
export declare function applyPatchOp(plan: VisualPlan, op: PatchOp): string | null;
|
|
13
|
+
//# sourceMappingURL=apply-patch-op.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-patch-op.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/application/apply-patch-op.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,sBAAsB,CAAC;AAGnE,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAiDzE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Apply a single typed visual patch op to a parsed plan (mutates in place).
|
|
3
|
+
*
|
|
4
|
+
* Returns an error message when the op cannot apply (unknown target, duplicate
|
|
5
|
+
* append, unknown wireframe field); the orchestrator rejects the patch and never
|
|
6
|
+
* writes. Structural/coverage/safety re-validation is the orchestrator's job —
|
|
7
|
+
* this function only performs the mutation and the immediate target checks.
|
|
8
|
+
*/
|
|
9
|
+
import { editWireframeField } from "../infrastructure/wireframe-sanitizer.js";
|
|
10
|
+
/** Mutate `plan` by `op`. Returns null on success, or an error message. */
|
|
11
|
+
export function applyPatchOp(plan, op) {
|
|
12
|
+
switch (op.type) {
|
|
13
|
+
case "move-frame-lane": {
|
|
14
|
+
const frame = plan.canvas.frames.find((f) => f.id === op.frameId);
|
|
15
|
+
if (!frame)
|
|
16
|
+
return `unknown frame "${op.frameId}"`;
|
|
17
|
+
if (!plan.canvas.lanes.some((l) => l.id === op.laneId))
|
|
18
|
+
return `unknown lane "${op.laneId}"`;
|
|
19
|
+
frame.laneId = op.laneId;
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
case "reorder-frame": {
|
|
23
|
+
const frame = plan.canvas.frames.find((f) => f.id === op.frameId);
|
|
24
|
+
if (!frame)
|
|
25
|
+
return `unknown frame "${op.frameId}"`;
|
|
26
|
+
frame.order = op.order;
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
case "update-annotation": {
|
|
30
|
+
const a = plan.canvas.annotations.find((x) => x.id === op.annotationId);
|
|
31
|
+
if (!a)
|
|
32
|
+
return `unknown annotation "${op.annotationId}"`;
|
|
33
|
+
if (op.text !== undefined)
|
|
34
|
+
a.text = op.text;
|
|
35
|
+
if (op.placement !== undefined)
|
|
36
|
+
a.placement = op.placement;
|
|
37
|
+
if (op.points !== undefined)
|
|
38
|
+
a.points = op.points;
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
case "append-annotation": {
|
|
42
|
+
const anno = op.annotation;
|
|
43
|
+
if (plan.canvas.annotations.some((x) => x.id === anno.id))
|
|
44
|
+
return `annotation id "${anno.id}" already exists`;
|
|
45
|
+
plan.canvas.annotations.push(anno);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
case "remove-annotation": {
|
|
49
|
+
const before = plan.canvas.annotations.length;
|
|
50
|
+
plan.canvas.annotations = plan.canvas.annotations.filter((x) => x.id !== op.annotationId);
|
|
51
|
+
return plan.canvas.annotations.length === before ? `unknown annotation "${op.annotationId}"` : null;
|
|
52
|
+
}
|
|
53
|
+
case "update-connector-label": {
|
|
54
|
+
const c = plan.canvas.connectors.find((x) => x.id === op.connectorId);
|
|
55
|
+
if (!c)
|
|
56
|
+
return `unknown connector "${op.connectorId}"`;
|
|
57
|
+
c.label = op.label;
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
case "update-wireframe-field": {
|
|
61
|
+
const frame = plan.canvas.frames.find((f) => f.id === op.frameId);
|
|
62
|
+
if (!frame)
|
|
63
|
+
return `unknown frame "${op.frameId}"`;
|
|
64
|
+
const edited = editWireframeField(frame.wireframe.html, op.fieldId, op.text);
|
|
65
|
+
if (edited === null)
|
|
66
|
+
return `no editable field "wf-field-${op.fieldId}" in frame "${op.frameId}"`;
|
|
67
|
+
frame.wireframe.html = edited;
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=apply-patch-op.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-patch-op.js","sourceRoot":"","sources":["../../../src/visual-plan/application/apply-patch-op.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approve` — the deterministic post-Gate-1 transition (moved here from Phase 6
|
|
3
|
+
* per red-team C1 so Gate 1 is satisfiable from the first Phase-3 release).
|
|
4
|
+
*
|
|
5
|
+
* The CLI is the SINGLE writer of `review.status`. Approval is refused unless
|
|
6
|
+
* EVERY precondition holds: the artifact fully validates (schema, cross-refs,
|
|
7
|
+
* coverage with `unresolved === 0`, safe HTML, fresh source hashes), there is
|
|
8
|
+
* no pending feedback batch, and the requested `--revision` matches the
|
|
9
|
+
* artifact's current revision (so approval is pinned to the exact reviewed
|
|
10
|
+
* state). On success it stamps `review` and refreshes the `.plan-state` pointer.
|
|
11
|
+
* No skill ever writes an interim approval.
|
|
12
|
+
*/
|
|
13
|
+
export interface ApproveResult {
|
|
14
|
+
ok: boolean;
|
|
15
|
+
revision: number;
|
|
16
|
+
/** Human-readable reasons approval was refused; empty on success. */
|
|
17
|
+
failedPreconditions: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Approve the artifact at `planDir` for exactly `revision`. Returns the refused
|
|
21
|
+
* preconditions instead of throwing, so the CLI can list them and exit non-zero.
|
|
22
|
+
*/
|
|
23
|
+
export declare function approvePlan(planDir: string, revision: number): ApproveResult;
|
|
24
|
+
//# sourceMappingURL=approve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approve.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/application/approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,CA+B5E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `approve` — the deterministic post-Gate-1 transition (moved here from Phase 6
|
|
3
|
+
* per red-team C1 so Gate 1 is satisfiable from the first Phase-3 release).
|
|
4
|
+
*
|
|
5
|
+
* The CLI is the SINGLE writer of `review.status`. Approval is refused unless
|
|
6
|
+
* EVERY precondition holds: the artifact fully validates (schema, cross-refs,
|
|
7
|
+
* coverage with `unresolved === 0`, safe HTML, fresh source hashes), there is
|
|
8
|
+
* no pending feedback batch, and the requested `--revision` matches the
|
|
9
|
+
* artifact's current revision (so approval is pinned to the exact reviewed
|
|
10
|
+
* state). On success it stamps `review` and refreshes the `.plan-state` pointer.
|
|
11
|
+
* No skill ever writes an interim approval.
|
|
12
|
+
*/
|
|
13
|
+
import { validatePlan } from "./validate-plan.js";
|
|
14
|
+
import { writeArtifact } from "../infrastructure/visual-plan-repository.js";
|
|
15
|
+
import { buildVisualBlock, writeVisualBlock } from "../infrastructure/plan-state.js";
|
|
16
|
+
import { listReceipts } from "../infrastructure/receipt-repository.js";
|
|
17
|
+
import { nowIso } from "./clock.js";
|
|
18
|
+
/**
|
|
19
|
+
* Approve the artifact at `planDir` for exactly `revision`. Returns the refused
|
|
20
|
+
* preconditions instead of throwing, so the CLI can list them and exit non-zero.
|
|
21
|
+
*/
|
|
22
|
+
export function approvePlan(planDir, revision) {
|
|
23
|
+
const failed = [];
|
|
24
|
+
const result = validatePlan(planDir);
|
|
25
|
+
if (!result.ok || !result.plan) {
|
|
26
|
+
for (const e of result.errors)
|
|
27
|
+
failed.push(`${e.path}: ${e.message} [${e.code}]`);
|
|
28
|
+
return { ok: false, revision, failedPreconditions: failed };
|
|
29
|
+
}
|
|
30
|
+
const plan = result.plan;
|
|
31
|
+
if (plan.revision !== revision) {
|
|
32
|
+
failed.push(`--revision ${revision} does not match artifact revision ${plan.revision}`);
|
|
33
|
+
}
|
|
34
|
+
if (plan.review.pendingFeedbackBatchIds.length > 0) {
|
|
35
|
+
failed.push(`cannot approve with ${plan.review.pendingFeedbackBatchIds.length} pending feedback batch(es)`);
|
|
36
|
+
}
|
|
37
|
+
// Receipt-aware refusal (Phase 6): a resolution receipt at the CURRENT revision
|
|
38
|
+
// with any unresolved semantic op means the feedback was not fully applied.
|
|
39
|
+
for (const receipt of listReceipts(planDir)) {
|
|
40
|
+
if (receipt.resolvedAtRevision === revision && receipt.entries.some((e) => e.outcome === "unresolved")) {
|
|
41
|
+
failed.push(`resolution receipt ${receipt.batchId} has unresolved operations at revision ${revision}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (failed.length > 0)
|
|
45
|
+
return { ok: false, revision, failedPreconditions: failed };
|
|
46
|
+
plan.review.status = "approved";
|
|
47
|
+
plan.review.approvedRevision = revision;
|
|
48
|
+
plan.review.approvedAt = nowIso();
|
|
49
|
+
writeArtifact(planDir, plan);
|
|
50
|
+
writeVisualBlock(planDir, buildVisualBlock(plan, planDir));
|
|
51
|
+
return { ok: true, revision, failedPreconditions: [] };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=approve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approve.js","sourceRoot":"","sources":["../../../src/visual-plan/application/approve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AASpC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,QAAgB;IAC5D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAClF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,cAAc,QAAQ,qCAAqC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,MAAM,6BAA6B,CAAC,CAAC;IAC7G,CAAC;IACD,gFAAgF;IAChF,4EAA4E;IAC5E,KAAK,MAAM,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,kBAAkB,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,YAAY,CAAC,EAAE,CAAC;YACxG,MAAM,CAAC,IAAI,CAAC,sBAAsB,OAAO,CAAC,OAAO,0CAA0C,QAAQ,EAAE,CAAC,CAAC;QACxG,CAAC;IACF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAEnF,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;IAClC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timestamp source, isolated so tests can assert format without freezing time.
|
|
3
|
+
* Kept trivial on purpose — the only reason it is a module is to give approval
|
|
4
|
+
* and rehash a single, mockable clock seam.
|
|
5
|
+
*/
|
|
6
|
+
/** Current time as an ISO-8601 string. */
|
|
7
|
+
export declare function nowIso(): string;
|
|
8
|
+
//# sourceMappingURL=clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/application/clock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0CAA0C;AAC1C,wBAAgB,MAAM,IAAI,MAAM,CAE/B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timestamp source, isolated so tests can assert format without freezing time.
|
|
3
|
+
* Kept trivial on purpose — the only reason it is a module is to give approval
|
|
4
|
+
* and rehash a single, mockable clock seam.
|
|
5
|
+
*/
|
|
6
|
+
/** Current time as an ISO-8601 string. */
|
|
7
|
+
export function nowIso() {
|
|
8
|
+
return new Date().toISOString();
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=clock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../../src/visual-plan/application/clock.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,0CAA0C;AAC1C,MAAM,UAAU,MAAM;IACrB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `export --format html` — render the CURRENT artifact into ONE self-contained,
|
|
3
|
+
* offline `plan.html`. The output carries the artifact's `review.status` in its
|
|
4
|
+
* header, so a draft export is never mistaken for final; the plan-creator flow
|
|
5
|
+
* (Step 8b) calls this only AFTER approval, making that export the canonical one.
|
|
6
|
+
*
|
|
7
|
+
* Safety: every plan-sourced string is HTML-escaped; wireframes are re-sanitized
|
|
8
|
+
* before inlining; there are no `<script>` tags and no auto-fetching elements
|
|
9
|
+
* (no `img`/`src`/`link`), so the page opens with zero network requests. A
|
|
10
|
+
* wireframe `<a href>` to a remote host is permitted but inert until clicked.
|
|
11
|
+
*/
|
|
12
|
+
export interface ExportResult {
|
|
13
|
+
ok: boolean;
|
|
14
|
+
html?: string;
|
|
15
|
+
error?: string;
|
|
16
|
+
}
|
|
17
|
+
/** Build the self-contained plan.html string from the artifact at `planDir`. */
|
|
18
|
+
export declare function exportPlanHtml(planDir: string): ExportResult;
|
|
19
|
+
//# sourceMappingURL=export-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-plan.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/application/export-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAqCD,gFAAgF;AAChF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAS5D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `export --format html` — render the CURRENT artifact into ONE self-contained,
|
|
3
|
+
* offline `plan.html`. The output carries the artifact's `review.status` in its
|
|
4
|
+
* header, so a draft export is never mistaken for final; the plan-creator flow
|
|
5
|
+
* (Step 8b) calls this only AFTER approval, making that export the canonical one.
|
|
6
|
+
*
|
|
7
|
+
* Safety: every plan-sourced string is HTML-escaped; wireframes are re-sanitized
|
|
8
|
+
* before inlining; there are no `<script>` tags and no auto-fetching elements
|
|
9
|
+
* (no `img`/`src`/`link`), so the page opens with zero network requests. A
|
|
10
|
+
* wireframe `<a href>` to a remote host is permitted but inert until clicked.
|
|
11
|
+
*/
|
|
12
|
+
import { readArtifactRaw } from "../infrastructure/visual-plan-repository.js";
|
|
13
|
+
import { sanitizeWireframeHtml } from "../infrastructure/wireframe-sanitizer.js";
|
|
14
|
+
import { computeCoverage } from "../domain/coverage.js";
|
|
15
|
+
import { VisualPlanSchema } from "../domain/schemas.js";
|
|
16
|
+
/** HTML-entity-encode a plan-sourced string for safe text/attribute placement. */
|
|
17
|
+
function esc(s) {
|
|
18
|
+
return s.replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[c]);
|
|
19
|
+
}
|
|
20
|
+
function coverageSection(plan) {
|
|
21
|
+
const { summary } = computeCoverage(plan);
|
|
22
|
+
const rows = plan.uiCoverage.surfaces
|
|
23
|
+
.flatMap((s) => s.states.map((st) => `<tr><td>${esc(s.label ?? s.id)}</td><td>${esc(st.label ?? st.id)}</td><td>${st.frameIds.length > 0 ? "framed" : st.omitted ? esc(st.omitted.reason) : "unresolved"}</td></tr>`))
|
|
24
|
+
.join("");
|
|
25
|
+
return `<h2>Coverage</h2><p class="vp-sum">${summary.resolved} resolved · ${summary.planned} planned · ${summary.omitted} omitted · ${summary.unresolved} unresolved</p><table><thead><tr><th>Surface</th><th>State</th><th>Closure</th></tr></thead><tbody>${rows}</tbody></table>`;
|
|
26
|
+
}
|
|
27
|
+
function framesSection(plan) {
|
|
28
|
+
const cards = plan.canvas.frames
|
|
29
|
+
.map((f) => `<article class="vp-frame"><header><strong>${esc(f.label)}</strong> <span class="vp-badge">${esc(f.surface)} · ${esc(f.changeMode)}</span></header><div class="wf-root">${sanitizeWireframeHtml(f.wireframe.html)}</div></article>`)
|
|
30
|
+
.join("");
|
|
31
|
+
return `<h2>Frames</h2><div class="vp-frames">${cards}</div>`;
|
|
32
|
+
}
|
|
33
|
+
function docsSection(plan) {
|
|
34
|
+
if (plan.documentBlocks.length === 0)
|
|
35
|
+
return "";
|
|
36
|
+
const items = plan.documentBlocks.map((b) => `<li>${b.title ? `<strong>${esc(b.title)}:</strong> ` : ""}${esc(b.body)}</li>`).join("");
|
|
37
|
+
return `<h2>Mechanics</h2><ul>${items}</ul>`;
|
|
38
|
+
}
|
|
39
|
+
const STYLE = `body{font:14px/1.5 system-ui,sans-serif;margin:0;padding:24px;background:#fff;color:#1c2430}
|
|
40
|
+
h1{margin:0 0 4px}h2{margin:24px 0 8px;border-bottom:1px solid #d7dbe0;padding-bottom:4px}
|
|
41
|
+
table{border-collapse:collapse;width:100%}th,td{border:1px solid #d7dbe0;padding:4px 8px;text-align:left;font-size:13px}
|
|
42
|
+
.vp-sum{color:#64707d}.vp-frames{display:flex;flex-wrap:wrap;gap:16px}
|
|
43
|
+
.vp-frame{border:1px solid #d7dbe0;border-radius:8px;overflow:hidden;width:340px}
|
|
44
|
+
.vp-frame header{padding:6px 10px;border-bottom:1px solid #d7dbe0;background:#f4f5f7}
|
|
45
|
+
.vp-badge{color:#64707d;font-size:12px}.wf-root{padding:10px}.wf-root .wf-button{display:inline-block;padding:6px 12px;background:#3563e9;color:#fff;border-radius:6px;text-decoration:none}
|
|
46
|
+
.wf-root .wf-input{height:30px;border:1px solid #d7dbe0;border-radius:6px;background:#eef1f4}.wf-root .wf-error{color:#c0392b}`;
|
|
47
|
+
/** Build the self-contained plan.html string from the artifact at `planDir`. */
|
|
48
|
+
export function exportPlanHtml(planDir) {
|
|
49
|
+
const read = readArtifactRaw(planDir);
|
|
50
|
+
if (read.error)
|
|
51
|
+
return { ok: false, error: read.error.message };
|
|
52
|
+
const parsed = VisualPlanSchema.safeParse(read.raw);
|
|
53
|
+
if (!parsed.success)
|
|
54
|
+
return { ok: false, error: "artifact must be schema-valid to export" };
|
|
55
|
+
const plan = parsed.data;
|
|
56
|
+
const html = `<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>${esc(plan.id)} — visual plan</title><style>${STYLE}</style></head><body><h1>${esc(plan.id)}</h1><p class="vp-sum">revision ${plan.revision} · review ${esc(plan.review.status)}</p>${coverageSection(plan)}${framesSection(plan)}${docsSection(plan)}</body></html>\n`;
|
|
57
|
+
return { ok: true, html };
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=export-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-plan.js","sourceRoot":"","sources":["../../../src/visual-plan/application/export-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patch orchestrator — the single serialized writer behind PATCH /api/visual-plan.
|
|
3
|
+
*
|
|
4
|
+
* Flow: read → optimistic-concurrency check (If-Match ETag) → apply the typed op
|
|
5
|
+
* → bump revision + CLEAR approval → re-validate the mutated plan IN MEMORY →
|
|
6
|
+
* atomic write → return the new ETag. A stale ETag stops before any mutation
|
|
7
|
+
* (409). A patch that would make the artifact invalid/unsafe is rejected and
|
|
8
|
+
* NOT written, so the on-disk artifact is always valid. Approval is cleared on
|
|
9
|
+
* every accepted visual mutation (lane/order/annotation/connector/field) —
|
|
10
|
+
* re-review + re-approve must follow.
|
|
11
|
+
*/
|
|
12
|
+
import type { PatchOp } from "../domain/patches.js";
|
|
13
|
+
import type { ValidationError } from "../domain/errors.js";
|
|
14
|
+
export type PatchStatus = "ok" | "stale" | "missing" | "invalid-artifact" | "op-rejected" | "invalid-result";
|
|
15
|
+
export interface PatchResult {
|
|
16
|
+
ok: boolean;
|
|
17
|
+
status: PatchStatus;
|
|
18
|
+
revision?: number;
|
|
19
|
+
etag?: string;
|
|
20
|
+
currentEtag?: string;
|
|
21
|
+
message?: string;
|
|
22
|
+
errors?: ValidationError[];
|
|
23
|
+
}
|
|
24
|
+
/** Apply `op` to the artifact at `planDir` under optimistic concurrency (`ifMatch`). */
|
|
25
|
+
export declare function patchPlan(planDir: string, op: PatchOp, ifMatch?: string): PatchResult;
|
|
26
|
+
//# sourceMappingURL=patch-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-plan.d.ts","sourceRoot":"","sources":["../../../src/visual-plan/application/patch-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAIpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE7G,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,wFAAwF;AACxF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CA0BrF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Patch orchestrator — the single serialized writer behind PATCH /api/visual-plan.
|
|
3
|
+
*
|
|
4
|
+
* Flow: read → optimistic-concurrency check (If-Match ETag) → apply the typed op
|
|
5
|
+
* → bump revision + CLEAR approval → re-validate the mutated plan IN MEMORY →
|
|
6
|
+
* atomic write → return the new ETag. A stale ETag stops before any mutation
|
|
7
|
+
* (409). A patch that would make the artifact invalid/unsafe is rejected and
|
|
8
|
+
* NOT written, so the on-disk artifact is always valid. Approval is cleared on
|
|
9
|
+
* every accepted visual mutation (lane/order/annotation/connector/field) —
|
|
10
|
+
* re-review + re-approve must follow.
|
|
11
|
+
*/
|
|
12
|
+
import { readArtifactRaw, writeArtifact, artifactPath } from "../infrastructure/visual-plan-repository.js";
|
|
13
|
+
import { etagFromFile } from "../../local-web/etag.js";
|
|
14
|
+
import { VisualPlanSchema } from "../domain/schemas.js";
|
|
15
|
+
import { applyPatchOp } from "./apply-patch-op.js";
|
|
16
|
+
import { validateParsed } from "./validate-plan.js";
|
|
17
|
+
import { buildVisualBlock, writeVisualBlock } from "../infrastructure/plan-state.js";
|
|
18
|
+
/** Apply `op` to the artifact at `planDir` under optimistic concurrency (`ifMatch`). */
|
|
19
|
+
export function patchPlan(planDir, op, ifMatch) {
|
|
20
|
+
const currentEtag = etagFromFile(artifactPath(planDir));
|
|
21
|
+
if (currentEtag === null)
|
|
22
|
+
return { ok: false, status: "missing" };
|
|
23
|
+
if (ifMatch !== undefined && ifMatch !== currentEtag)
|
|
24
|
+
return { ok: false, status: "stale", currentEtag };
|
|
25
|
+
const read = readArtifactRaw(planDir);
|
|
26
|
+
if (read.error)
|
|
27
|
+
return { ok: false, status: "missing" };
|
|
28
|
+
const parsed = VisualPlanSchema.safeParse(read.raw);
|
|
29
|
+
if (!parsed.success)
|
|
30
|
+
return { ok: false, status: "invalid-artifact" };
|
|
31
|
+
const plan = parsed.data;
|
|
32
|
+
const opError = applyPatchOp(plan, op);
|
|
33
|
+
if (opError)
|
|
34
|
+
return { ok: false, status: "op-rejected", message: opError };
|
|
35
|
+
// Every accepted visual mutation invalidates approval and advances the revision.
|
|
36
|
+
plan.revision += 1;
|
|
37
|
+
if (plan.review.status === "approved")
|
|
38
|
+
plan.review.status = "draft";
|
|
39
|
+
plan.review.approvedRevision = null;
|
|
40
|
+
plan.review.approvedAt = null;
|
|
41
|
+
const { errors } = validateParsed(plan, planDir);
|
|
42
|
+
if (errors.length > 0)
|
|
43
|
+
return { ok: false, status: "invalid-result", errors };
|
|
44
|
+
writeArtifact(planDir, plan);
|
|
45
|
+
writeVisualBlock(planDir, buildVisualBlock(plan, planDir));
|
|
46
|
+
return { ok: true, status: "ok", revision: plan.revision, etag: etagFromFile(artifactPath(planDir)) ?? undefined };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=patch-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-plan.js","sourceRoot":"","sources":["../../../src/visual-plan/application/patch-plan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3G,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAerF,wFAAwF;AACxF,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,EAAW,EAAE,OAAgB;IACvE,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACxD,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAClE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,WAAW;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAEzG,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAEzB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAE3E,iFAAiF;IACjF,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACnB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;QAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;IACpE,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;IAE9B,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE9E,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7B,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;AACpH,CAAC"}
|