@agent-teams/engineering-foundation 0.15.0 → 0.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/README.md +66 -8
- package/dist/capability-runtime.d.ts +2 -1
- package/dist/capability-runtime.d.ts.map +1 -1
- package/dist/capability-runtime.js +1 -1
- package/dist/capability-runtime.js.map +1 -1
- package/dist/check-contract.d.ts +2 -1
- package/dist/check-contract.d.ts.map +1 -1
- package/dist/check-runner.d.ts.map +1 -1
- package/dist/check-runner.js +6 -2
- package/dist/check-runner.js.map +1 -1
- package/dist/cli-arguments.d.ts +6 -0
- package/dist/cli-arguments.d.ts.map +1 -1
- package/dist/cli-arguments.js +179 -49
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli.js +16 -10
- package/dist/cli.js.map +1 -1
- package/dist/command-error.d.ts +14 -0
- package/dist/command-error.d.ts.map +1 -0
- package/dist/command-error.js +98 -0
- package/dist/command-error.js.map +1 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-failure.d.ts +5 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-failure.d.ts.map +1 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-failure.js +36 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-failure.js.map +1 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-renderer.d.ts +6 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-renderer.d.ts.map +1 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-renderer.js +127 -0
- package/dist/document-authoring/adapters/inbound/cli/document-command-renderer.js.map +1 -0
- package/dist/document-authoring/adapters/node/load-validated-document-authoring-profile.d.ts +4 -2
- package/dist/document-authoring/adapters/node/load-validated-document-authoring-profile.d.ts.map +1 -1
- package/dist/document-authoring/adapters/node/load-validated-document-authoring-profile.js.map +1 -1
- package/dist/document-authoring/adapters/node/node-document-contract-validator.d.ts.map +1 -1
- package/dist/document-authoring/adapters/node/node-document-contract-validator.js +129 -2
- package/dist/document-authoring/adapters/node/node-document-contract-validator.js.map +1 -1
- package/dist/document-authoring/adapters/node/node-document-environment-inspector.d.ts +17 -0
- package/dist/document-authoring/adapters/node/node-document-environment-inspector.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-environment-inspector.js +49 -0
- package/dist/document-authoring/adapters/node/node-document-environment-inspector.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-file-state.d.ts +21 -0
- package/dist/document-authoring/adapters/node/node-document-file-state.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-file-state.js +183 -0
- package/dist/document-authoring/adapters/node/node-document-file-state.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-slot.d.ts +2 -0
- package/dist/document-authoring/adapters/node/node-document-journal-slot.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-slot.js +18 -0
- package/dist/document-authoring/adapters/node/node-document-journal-slot.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-faults.d.ts +36 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-faults.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-faults.js +2 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-faults.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-private.d.ts +2 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-private.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-private.js +2 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store-private.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store.d.ts +22 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store.js +339 -0
- package/dist/document-authoring/adapters/node/node-document-journal-store.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-planning-profile-reader.d.ts.map +1 -1
- package/dist/document-authoring/adapters/node/node-document-planning-profile-reader.js +3 -0
- package/dist/document-authoring/adapters/node/node-document-planning-profile-reader.js.map +1 -1
- package/dist/document-authoring/adapters/node/node-document-publisher-private.d.ts +2 -0
- package/dist/document-authoring/adapters/node/node-document-publisher-private.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-publisher-private.js +2 -0
- package/dist/document-authoring/adapters/node/node-document-publisher-private.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-publisher.d.ts +54 -0
- package/dist/document-authoring/adapters/node/node-document-publisher.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-publisher.js +252 -0
- package/dist/document-authoring/adapters/node/node-document-publisher.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-reachability-projector.d.ts +17 -0
- package/dist/document-authoring/adapters/node/node-document-reachability-projector.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-reachability-projector.js +43 -0
- package/dist/document-authoring/adapters/node/node-document-reachability-projector.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-structure-verifier.d.ts +21 -0
- package/dist/document-authoring/adapters/node/node-document-structure-verifier.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-structure-verifier.js +80 -0
- package/dist/document-authoring/adapters/node/node-document-structure-verifier.js.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-transaction-coordinator.d.ts +21 -0
- package/dist/document-authoring/adapters/node/node-document-transaction-coordinator.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/node-document-transaction-coordinator.js +89 -0
- package/dist/document-authoring/adapters/node/node-document-transaction-coordinator.js.map +1 -0
- package/dist/document-authoring/adapters/node/recapture-document-publication-paths.d.ts +16 -0
- package/dist/document-authoring/adapters/node/recapture-document-publication-paths.d.ts.map +1 -0
- package/dist/document-authoring/adapters/node/recapture-document-publication-paths.js +89 -0
- package/dist/document-authoring/adapters/node/recapture-document-publication-paths.js.map +1 -0
- package/dist/document-authoring/application/model/document-command.d.ts +69 -0
- package/dist/document-authoring/application/model/document-command.d.ts.map +1 -0
- package/dist/document-authoring/application/model/document-command.js +2 -0
- package/dist/document-authoring/application/model/document-command.js.map +1 -0
- package/dist/document-authoring/application/model/document-physical-identity.d.ts +10 -0
- package/dist/document-authoring/application/model/document-physical-identity.d.ts.map +1 -0
- package/dist/document-authoring/application/model/document-physical-identity.js +29 -0
- package/dist/document-authoring/application/model/document-physical-identity.js.map +1 -0
- package/dist/document-authoring/application/model/document-planning.d.ts +11 -0
- package/dist/document-authoring/application/model/document-planning.d.ts.map +1 -1
- package/dist/document-authoring/application/model/document-receipt.d.ts +74 -0
- package/dist/document-authoring/application/model/document-receipt.d.ts.map +1 -0
- package/dist/document-authoring/application/model/document-receipt.js +2 -0
- package/dist/document-authoring/application/model/document-receipt.js.map +1 -0
- package/dist/document-authoring/application/model/document-transaction-inspection.d.ts +43 -0
- package/dist/document-authoring/application/model/document-transaction-inspection.d.ts.map +1 -0
- package/dist/document-authoring/application/model/document-transaction-inspection.js +2 -0
- package/dist/document-authoring/application/model/document-transaction-inspection.js.map +1 -0
- package/dist/document-authoring/application/model/document-transaction.d.ts +81 -0
- package/dist/document-authoring/application/model/document-transaction.d.ts.map +1 -0
- package/dist/document-authoring/application/model/document-transaction.js +2 -0
- package/dist/document-authoring/application/model/document-transaction.js.map +1 -0
- package/dist/document-authoring/application/policies/authoring-profile-semantics.d.ts +5 -1
- package/dist/document-authoring/application/policies/authoring-profile-semantics.d.ts.map +1 -1
- package/dist/document-authoring/application/policies/authoring-profile-semantics.js +7 -0
- package/dist/document-authoring/application/policies/authoring-profile-semantics.js.map +1 -1
- package/dist/document-authoring/application/policies/classify-document-recovery.d.ts +81 -0
- package/dist/document-authoring/application/policies/classify-document-recovery.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/classify-document-recovery.js +138 -0
- package/dist/document-authoring/application/policies/classify-document-recovery.js.map +1 -0
- package/dist/document-authoring/application/policies/document-command-consumer-root.d.ts +2 -0
- package/dist/document-authoring/application/policies/document-command-consumer-root.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/document-command-consumer-root.js +15 -0
- package/dist/document-authoring/application/policies/document-command-consumer-root.js.map +1 -0
- package/dist/document-authoring/application/policies/document-command-projection.d.ts +20 -0
- package/dist/document-authoring/application/policies/document-command-projection.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/document-command-projection.js +90 -0
- package/dist/document-authoring/application/policies/document-command-projection.js.map +1 -0
- package/dist/document-authoring/application/policies/document-receipt-policy.d.ts +5 -0
- package/dist/document-authoring/application/policies/document-receipt-policy.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/document-receipt-policy.js +53 -0
- package/dist/document-authoring/application/policies/document-receipt-policy.js.map +1 -0
- package/dist/document-authoring/application/policies/document-transaction-digests.d.ts +5 -0
- package/dist/document-authoring/application/policies/document-transaction-digests.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/document-transaction-digests.js +12 -0
- package/dist/document-authoring/application/policies/document-transaction-digests.js.map +1 -0
- package/dist/document-authoring/application/policies/document-transaction-envelope-policy.d.ts +4 -0
- package/dist/document-authoring/application/policies/document-transaction-envelope-policy.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/document-transaction-envelope-policy.js +118 -0
- package/dist/document-authoring/application/policies/document-transaction-envelope-policy.js.map +1 -0
- package/dist/document-authoring/application/policies/project-document-reachability.d.ts +14 -0
- package/dist/document-authoring/application/policies/project-document-reachability.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/project-document-reachability.js +57 -0
- package/dist/document-authoring/application/policies/project-document-reachability.js.map +1 -0
- package/dist/document-authoring/application/policies/project-similar-document-advice.d.ts +4 -0
- package/dist/document-authoring/application/policies/project-similar-document-advice.d.ts.map +1 -0
- package/dist/document-authoring/application/policies/project-similar-document-advice.js +17 -0
- package/dist/document-authoring/application/policies/project-similar-document-advice.js.map +1 -0
- package/dist/document-authoring/application/ports/document-authority-recompiler.d.ts +19 -0
- package/dist/document-authoring/application/ports/document-authority-recompiler.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-authority-recompiler.js +2 -0
- package/dist/document-authoring/application/ports/document-authority-recompiler.js.map +1 -0
- package/dist/document-authoring/application/ports/document-environment-inspector.d.ts +12 -0
- package/dist/document-authoring/application/ports/document-environment-inspector.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-environment-inspector.js +2 -0
- package/dist/document-authoring/application/ports/document-environment-inspector.js.map +1 -0
- package/dist/document-authoring/application/ports/document-file-state.d.ts +55 -0
- package/dist/document-authoring/application/ports/document-file-state.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-file-state.js +2 -0
- package/dist/document-authoring/application/ports/document-file-state.js.map +1 -0
- package/dist/document-authoring/application/ports/document-journal-store.d.ts +31 -0
- package/dist/document-authoring/application/ports/document-journal-store.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-journal-store.js +2 -0
- package/dist/document-authoring/application/ports/document-journal-store.js.map +1 -0
- package/dist/document-authoring/application/ports/document-publisher.d.ts +38 -0
- package/dist/document-authoring/application/ports/document-publisher.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-publisher.js +2 -0
- package/dist/document-authoring/application/ports/document-publisher.js.map +1 -0
- package/dist/document-authoring/application/ports/document-reachability-projector.d.ts +13 -0
- package/dist/document-authoring/application/ports/document-reachability-projector.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-reachability-projector.js +2 -0
- package/dist/document-authoring/application/ports/document-reachability-projector.js.map +1 -0
- package/dist/document-authoring/application/ports/document-structure-verifier.d.ts +17 -0
- package/dist/document-authoring/application/ports/document-structure-verifier.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-structure-verifier.js +2 -0
- package/dist/document-authoring/application/ports/document-structure-verifier.js.map +1 -0
- package/dist/document-authoring/application/ports/document-transaction-coordinator.d.ts +21 -0
- package/dist/document-authoring/application/ports/document-transaction-coordinator.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/document-transaction-coordinator.js +2 -0
- package/dist/document-authoring/application/ports/document-transaction-coordinator.js.map +1 -0
- package/dist/document-authoring/application/ports/similar-document-advisor.d.ts +17 -0
- package/dist/document-authoring/application/ports/similar-document-advisor.d.ts.map +1 -0
- package/dist/document-authoring/application/ports/similar-document-advisor.js +2 -0
- package/dist/document-authoring/application/ports/similar-document-advisor.js.map +1 -0
- package/dist/document-authoring/application/use-cases/apply-document-plan.d.ts +16 -0
- package/dist/document-authoring/application/use-cases/apply-document-plan.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/apply-document-plan.js +215 -0
- package/dist/document-authoring/application/use-cases/apply-document-plan.js.map +1 -0
- package/dist/document-authoring/application/use-cases/document-journal-reconciliation.d.ts +18 -0
- package/dist/document-authoring/application/use-cases/document-journal-reconciliation.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/document-journal-reconciliation.js +90 -0
- package/dist/document-authoring/application/use-cases/document-journal-reconciliation.js.map +1 -0
- package/dist/document-authoring/application/use-cases/document-transaction-continuation.d.ts +59 -0
- package/dist/document-authoring/application/use-cases/document-transaction-continuation.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/document-transaction-continuation.js +360 -0
- package/dist/document-authoring/application/use-cases/document-transaction-continuation.js.map +1 -0
- package/dist/document-authoring/application/use-cases/document-transaction-error.d.ts +5 -0
- package/dist/document-authoring/application/use-cases/document-transaction-error.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/document-transaction-error.js +9 -0
- package/dist/document-authoring/application/use-cases/document-transaction-error.js.map +1 -0
- package/dist/document-authoring/application/use-cases/document-transaction-execution.d.ts +9 -0
- package/dist/document-authoring/application/use-cases/document-transaction-execution.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/document-transaction-execution.js +40 -0
- package/dist/document-authoring/application/use-cases/document-transaction-execution.js.map +1 -0
- package/dist/document-authoring/application/use-cases/recover-document-transaction.d.ts +10 -0
- package/dist/document-authoring/application/use-cases/recover-document-transaction.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/recover-document-transaction.js +233 -0
- package/dist/document-authoring/application/use-cases/recover-document-transaction.js.map +1 -0
- package/dist/document-authoring/application/use-cases/run-document-doctor.d.ts +18 -0
- package/dist/document-authoring/application/use-cases/run-document-doctor.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/run-document-doctor.js +171 -0
- package/dist/document-authoring/application/use-cases/run-document-doctor.js.map +1 -0
- package/dist/document-authoring/application/use-cases/run-document-new.d.ts +30 -0
- package/dist/document-authoring/application/use-cases/run-document-new.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/run-document-new.js +221 -0
- package/dist/document-authoring/application/use-cases/run-document-new.js.map +1 -0
- package/dist/document-authoring/application/use-cases/run-document-recover.d.ts +21 -0
- package/dist/document-authoring/application/use-cases/run-document-recover.d.ts.map +1 -0
- package/dist/document-authoring/application/use-cases/run-document-recover.js +126 -0
- package/dist/document-authoring/application/use-cases/run-document-recover.js.map +1 -0
- package/dist/document-authoring/composition/document-command-cli.d.ts +7 -0
- package/dist/document-authoring/composition/document-command-cli.d.ts.map +1 -0
- package/dist/document-authoring/composition/document-command-cli.js +32 -0
- package/dist/document-authoring/composition/document-command-cli.js.map +1 -0
- package/dist/document-authoring/composition/inspect-document-transaction.d.ts +8 -0
- package/dist/document-authoring/composition/inspect-document-transaction.d.ts.map +1 -0
- package/dist/document-authoring/composition/inspect-document-transaction.js +177 -0
- package/dist/document-authoring/composition/inspect-document-transaction.js.map +1 -0
- package/dist/document-authoring/composition/node-document-authority-recompiler.d.ts +11 -0
- package/dist/document-authoring/composition/node-document-authority-recompiler.d.ts.map +1 -0
- package/dist/document-authoring/composition/node-document-authority-recompiler.js +62 -0
- package/dist/document-authoring/composition/node-document-authority-recompiler.js.map +1 -0
- package/dist/document-authoring/composition/node-document-commands.d.ts +10 -0
- package/dist/document-authoring/composition/node-document-commands.d.ts.map +1 -0
- package/dist/document-authoring/composition/node-document-commands.js +68 -0
- package/dist/document-authoring/composition/node-document-commands.js.map +1 -0
- package/dist/document-authoring/composition/node-document-planning.d.ts +7 -0
- package/dist/document-authoring/composition/node-document-planning.d.ts.map +1 -0
- package/dist/document-authoring/composition/node-document-planning.js +77 -0
- package/dist/document-authoring/composition/node-document-planning.js.map +1 -0
- package/dist/document-authoring/composition/node-document-writing-private.d.ts +15 -0
- package/dist/document-authoring/composition/node-document-writing-private.d.ts.map +1 -0
- package/dist/document-authoring/composition/node-document-writing-private.js +52 -0
- package/dist/document-authoring/composition/node-document-writing-private.js.map +1 -0
- package/dist/document-authoring/composition/node-document-writing.d.ts +8 -0
- package/dist/document-authoring/composition/node-document-writing.d.ts.map +1 -0
- package/dist/document-authoring/composition/node-document-writing.js +10 -0
- package/dist/document-authoring/composition/node-document-writing.js.map +1 -0
- package/dist/document-authoring/index.d.ts +13 -1
- package/dist/document-authoring/index.d.ts.map +1 -1
- package/dist/document-authoring/index.js +12 -65
- package/dist/document-authoring/index.js.map +1 -1
- package/dist/document-command.d.ts +9 -0
- package/dist/document-command.d.ts.map +1 -1
- package/dist/document-command.js +64 -3
- package/dist/document-command.js.map +1 -1
- package/dist/foundation-state-contract.d.ts +1 -0
- package/dist/foundation-state-contract.d.ts.map +1 -1
- package/dist/foundation-state-contract.js +1 -0
- package/dist/foundation-state-contract.js.map +1 -1
- package/dist/local-mode/inspection.d.ts.map +1 -1
- package/dist/local-mode/inspection.js +51 -3
- package/dist/local-mode/inspection.js.map +1 -1
- package/dist/package-self-check.d.ts +2 -1
- package/dist/package-self-check.d.ts.map +1 -1
- package/dist/package-self-check.js +30 -7
- package/dist/package-self-check.js.map +1 -1
- package/dist/report-renderer.d.ts.map +1 -1
- package/dist/report-renderer.js +1 -0
- package/dist/report-renderer.js.map +1 -1
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.d.ts +19 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.js +74 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication-private.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.d.ts +2 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.d.ts.map +1 -1
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.js +56 -154
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.js.map +1 -1
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.d.ts +26 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.js +151 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.d.ts +6 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.d.ts.map +1 -1
- package/dist/repository-mutation/adapters/node/node-directory-durability.js +15 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.js.map +1 -1
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.d.ts +14 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js +26 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.d.ts +28 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.js +47 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.d.ts +22 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.js +59 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.js.map +1 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.d.ts +7 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.d.ts.map +1 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.js +2 -0
- package/dist/repository-mutation/application/ports/owned-temporary-cleanup-transition.js.map +1 -0
- package/dist/scaffolding/adapters/node/filesystem-authority-workspace.d.ts +1 -1
- package/dist/scaffolding/adapters/node/filesystem-authority-workspace.d.ts.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-authority-workspace.js +74 -53
- package/dist/scaffolding/adapters/node/filesystem-authority-workspace.js.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-finalization.d.ts +9 -1
- package/dist/scaffolding/adapters/node/filesystem-finalization.d.ts.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-finalization.js +34 -6
- package/dist/scaffolding/adapters/node/filesystem-finalization.js.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-journal-state.d.ts.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-journal-state.js +2 -1
- package/dist/scaffolding/adapters/node/filesystem-journal-state.js.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-journal.d.ts +13 -5
- package/dist/scaffolding/adapters/node/filesystem-journal.d.ts.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-journal.js +112 -74
- package/dist/scaffolding/adapters/node/filesystem-journal.js.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-operation-state.d.ts +10 -1
- package/dist/scaffolding/adapters/node/filesystem-operation-state.d.ts.map +1 -1
- package/dist/scaffolding/adapters/node/filesystem-operation-state.js +40 -2
- package/dist/scaffolding/adapters/node/filesystem-operation-state.js.map +1 -1
- package/dist/scaffolding/adapters/node/node-scaffold-journal-evidence.d.ts +35 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-evidence.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-evidence.js +137 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-evidence.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-gateway.d.ts +11 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-gateway.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-gateway.js +95 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-gateway.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-reconciliation.d.ts +15 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-reconciliation.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-reconciliation.js +29 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-reconciliation.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store-faults.d.ts +46 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store-faults.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store-faults.js +2 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store-faults.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store.d.ts +19 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store.js +288 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-store.js.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-transaction-evidence.d.ts +2 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-transaction-evidence.d.ts.map +1 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-transaction-evidence.js +34 -0
- package/dist/scaffolding/adapters/node/node-scaffold-journal-transaction-evidence.js.map +1 -0
- package/dist/schema-catalog.d.ts.map +1 -1
- package/dist/schema-catalog.js +4 -0
- package/dist/schema-catalog.js.map +1 -1
- package/dist/schema-ids.d.ts +1 -1
- package/dist/schema-ids.d.ts.map +1 -1
- package/dist/schema-ids.js +3 -0
- package/dist/schema-ids.js.map +1 -1
- package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.d.ts.map +1 -1
- package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.js +17 -10
- package/dist/source-inventory/adapters/outbound/filesystem/filesystem-source-tree-reader.js.map +1 -1
- package/dist/transaction-coordination/adapters/node/document-envelope-bindings.d.ts +22 -0
- package/dist/transaction-coordination/adapters/node/document-envelope-bindings.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/document-envelope-bindings.js +123 -0
- package/dist/transaction-coordination/adapters/node/document-envelope-bindings.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/document-temporary-identity.d.ts +2 -2
- package/dist/transaction-coordination/adapters/node/document-temporary-identity.d.ts.map +1 -1
- package/dist/transaction-coordination/adapters/node/document-temporary-identity.js +4 -4
- package/dist/transaction-coordination/adapters/node/document-temporary-identity.js.map +1 -1
- package/dist/transaction-coordination/adapters/node/foundation-transition-evidence.d.ts +4 -0
- package/dist/transaction-coordination/adapters/node/foundation-transition-evidence.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/foundation-transition-evidence.js +58 -0
- package/dist/transaction-coordination/adapters/node/foundation-transition-evidence.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-foundation-cleanup-transition.d.ts +17 -0
- package/dist/transaction-coordination/adapters/node/node-foundation-cleanup-transition.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-foundation-cleanup-transition.js +79 -0
- package/dist/transaction-coordination/adapters/node/node-foundation-cleanup-transition.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-foundation-operation-lock.d.ts +9 -1
- package/dist/transaction-coordination/adapters/node/node-foundation-operation-lock.d.ts.map +1 -1
- package/dist/transaction-coordination/adapters/node/node-foundation-operation-lock.js +34 -11
- package/dist/transaction-coordination/adapters/node/node-foundation-operation-lock.js.map +1 -1
- package/dist/transaction-coordination/adapters/node/node-foundation-state-directory.d.ts +7 -0
- package/dist/transaction-coordination/adapters/node/node-foundation-state-directory.d.ts.map +1 -1
- package/dist/transaction-coordination/adapters/node/node-foundation-state-directory.js +15 -0
- package/dist/transaction-coordination/adapters/node/node-foundation-state-directory.js.map +1 -1
- package/dist/transaction-coordination/adapters/node/node-foundation-transaction-slot.d.ts +2 -2
- package/dist/transaction-coordination/adapters/node/node-foundation-transaction-slot.d.ts.map +1 -1
- package/dist/transaction-coordination/adapters/node/node-foundation-transaction-slot.js +123 -140
- package/dist/transaction-coordination/adapters/node/node-foundation-transaction-slot.js.map +1 -1
- package/dist/transaction-coordination/application/foundation-transaction-coordinator.d.ts +5 -4
- package/dist/transaction-coordination/application/foundation-transaction-coordinator.d.ts.map +1 -1
- package/dist/transaction-coordination/application/foundation-transaction-coordinator.js +14 -1
- package/dist/transaction-coordination/application/foundation-transaction-coordinator.js.map +1 -1
- package/dist/transaction-coordination/application/foundation-transaction-error.d.ts +4 -3
- package/dist/transaction-coordination/application/foundation-transaction-error.d.ts.map +1 -1
- package/dist/transaction-coordination/application/foundation-transaction-error.js.map +1 -1
- package/dist/transaction-coordination/application/model/internal-transaction-status.d.ts +26 -0
- package/dist/transaction-coordination/application/model/internal-transaction-status.d.ts.map +1 -0
- package/dist/transaction-coordination/application/model/internal-transaction-status.js +2 -0
- package/dist/transaction-coordination/application/model/internal-transaction-status.js.map +1 -0
- package/dist/transaction-coordination/application/ports/foundation-transaction-slot.d.ts +2 -2
- package/dist/transaction-coordination/application/ports/foundation-transaction-slot.d.ts.map +1 -1
- package/dist/workspace-inventory/adapters/outbound/pnpm/pnpm-workspace-inventory-reader.d.ts.map +1 -1
- package/dist/workspace-inventory/adapters/outbound/pnpm/pnpm-workspace-inventory-reader.js +13 -9
- package/dist/workspace-inventory/adapters/outbound/pnpm/pnpm-workspace-inventory-reader.js.map +1 -1
- package/package.json +12 -3
- package/schemas/document-authoring-profile/v1.schema.json +31 -1
- package/schemas/document-command-envelope/v2.schema.json +205 -0
- package/schemas/foundation-check-report/v1.schema.json +1 -1
- package/schemas/foundation-command-error/v1.schema.json +24 -0
- package/schemas/foundation-transaction-envelope/v3.schema.json +169 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A closed, side-effect-free recovery decision for the document writer.
|
|
3
|
+
*
|
|
4
|
+
* `exact` describes byte equality. Identity relationships are separate so that
|
|
5
|
+
* byte equality can never accidentally grant ownership or recovery authority.
|
|
6
|
+
*/
|
|
7
|
+
export type DocumentRecoveryTemporaryObservation = {
|
|
8
|
+
readonly state: "absent";
|
|
9
|
+
} | {
|
|
10
|
+
readonly state: "exact";
|
|
11
|
+
readonly identity: "nonzero";
|
|
12
|
+
} | {
|
|
13
|
+
readonly state: "replaced";
|
|
14
|
+
readonly identity: "nonzero";
|
|
15
|
+
} | {
|
|
16
|
+
readonly state: "zero-identity";
|
|
17
|
+
} | {
|
|
18
|
+
readonly state: "unverifiable";
|
|
19
|
+
};
|
|
20
|
+
export type DocumentRecoveryDestinationObservation = {
|
|
21
|
+
readonly state: "absent";
|
|
22
|
+
} | {
|
|
23
|
+
readonly state: "conflict";
|
|
24
|
+
} | {
|
|
25
|
+
readonly state: "exact";
|
|
26
|
+
readonly identity: "unbound" | "bound-temporary" | "bound-publication" | "different" | "zero-identity";
|
|
27
|
+
} | {
|
|
28
|
+
readonly state: "unverifiable";
|
|
29
|
+
};
|
|
30
|
+
type DocumentRecoveryJournalObservation = {
|
|
31
|
+
readonly version: "none";
|
|
32
|
+
readonly fileIdentity: "none";
|
|
33
|
+
} | {
|
|
34
|
+
/** Released v1 evidence is read-only and never grants recovery authority. */
|
|
35
|
+
readonly version: "v1-legacy";
|
|
36
|
+
readonly fileIdentity: "nonzero" | "zero-identity" | "unverifiable";
|
|
37
|
+
} | {
|
|
38
|
+
readonly version: "v2";
|
|
39
|
+
readonly fileIdentity: "nonzero" | "zero-identity" | "unverifiable";
|
|
40
|
+
readonly lifecycle: "PREPARED";
|
|
41
|
+
readonly preparedState: "pending" | "preexisting";
|
|
42
|
+
readonly boundIdentity: "none";
|
|
43
|
+
} | {
|
|
44
|
+
readonly version: "v2";
|
|
45
|
+
readonly fileIdentity: "nonzero" | "zero-identity" | "unverifiable";
|
|
46
|
+
readonly lifecycle: "PUBLISHING";
|
|
47
|
+
readonly boundIdentity: "temporary" | "zero-identity" | "unverifiable";
|
|
48
|
+
} | {
|
|
49
|
+
readonly version: "v2";
|
|
50
|
+
readonly fileIdentity: "nonzero" | "zero-identity" | "unverifiable";
|
|
51
|
+
readonly lifecycle: "PUBLISHED";
|
|
52
|
+
readonly boundIdentity: "publication" | "zero-identity" | "unverifiable";
|
|
53
|
+
};
|
|
54
|
+
export interface DocumentRecoveryObservation {
|
|
55
|
+
readonly journal: DocumentRecoveryJournalObservation;
|
|
56
|
+
readonly temporary: DocumentRecoveryTemporaryObservation;
|
|
57
|
+
readonly destination: DocumentRecoveryDestinationObservation;
|
|
58
|
+
}
|
|
59
|
+
type DocumentRecoveryManualReason = "destination-conflict" | "identity-drift" | "inconsistent-lifecycle" | "legacy-journal" | "orphan-temporary" | "publication-missing" | "temporary-missing" | "unverifiable-identity" | "zero-identity";
|
|
60
|
+
export type DocumentRecoveryDecision = {
|
|
61
|
+
readonly action: "resume-prepare";
|
|
62
|
+
} | {
|
|
63
|
+
readonly action: "resume-publish";
|
|
64
|
+
} | {
|
|
65
|
+
readonly action: "complete-publication";
|
|
66
|
+
} | {
|
|
67
|
+
readonly action: "finalize-checks";
|
|
68
|
+
} | {
|
|
69
|
+
readonly action: "already-applied";
|
|
70
|
+
readonly cleanup: "none" | "owned-temporary";
|
|
71
|
+
} | {
|
|
72
|
+
readonly action: "manual";
|
|
73
|
+
readonly reason: DocumentRecoveryManualReason;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Classifies a fully observed recovery snapshot. This function never mutates
|
|
77
|
+
* evidence and deliberately has no catch-all optimistic branch.
|
|
78
|
+
*/
|
|
79
|
+
export declare function classifyDocumentRecovery(observation: DocumentRecoveryObservation): DocumentRecoveryDecision;
|
|
80
|
+
export {};
|
|
81
|
+
//# sourceMappingURL=classify-document-recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify-document-recovery.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/classify-document-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
function manual(reason) {
|
|
2
|
+
return { action: "manual", reason };
|
|
3
|
+
}
|
|
4
|
+
function containsZeroIdentity(observation) {
|
|
5
|
+
if (observation.journal.fileIdentity === "zero-identity") {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (observation.temporary.state === "zero-identity") {
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
if (observation.destination.state === "exact" &&
|
|
12
|
+
observation.destination.identity === "zero-identity") {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return observation.journal.version === "v2" &&
|
|
16
|
+
observation.journal.boundIdentity === "zero-identity";
|
|
17
|
+
}
|
|
18
|
+
function containsUnverifiableIdentity(observation) {
|
|
19
|
+
if (observation.journal.fileIdentity === "unverifiable") {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (observation.temporary.state === "unverifiable") {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
if (observation.destination.state === "unverifiable") {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return observation.journal.version === "v2" &&
|
|
29
|
+
observation.journal.boundIdentity === "unverifiable";
|
|
30
|
+
}
|
|
31
|
+
function classifyWithoutJournal(observation) {
|
|
32
|
+
if (observation.temporary.state !== "absent") {
|
|
33
|
+
return manual("orphan-temporary");
|
|
34
|
+
}
|
|
35
|
+
switch (observation.destination.state) {
|
|
36
|
+
case "absent":
|
|
37
|
+
return { action: "resume-prepare" };
|
|
38
|
+
case "conflict":
|
|
39
|
+
return manual("destination-conflict");
|
|
40
|
+
case "unverifiable":
|
|
41
|
+
return manual("unverifiable-identity");
|
|
42
|
+
case "exact":
|
|
43
|
+
return observation.destination.identity === "unbound"
|
|
44
|
+
? { action: "already-applied", cleanup: "none" }
|
|
45
|
+
: manual("inconsistent-lifecycle");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function classifyPrepared(observation) {
|
|
49
|
+
if (observation.temporary.state !== "absent") {
|
|
50
|
+
return manual("orphan-temporary");
|
|
51
|
+
}
|
|
52
|
+
switch (observation.destination.state) {
|
|
53
|
+
case "absent":
|
|
54
|
+
return observation.journal.version === "v2" &&
|
|
55
|
+
observation.journal.lifecycle === "PREPARED" &&
|
|
56
|
+
observation.journal.preparedState === "pending"
|
|
57
|
+
? { action: "resume-prepare" }
|
|
58
|
+
: manual("inconsistent-lifecycle");
|
|
59
|
+
case "conflict":
|
|
60
|
+
return manual("destination-conflict");
|
|
61
|
+
case "unverifiable":
|
|
62
|
+
return manual("unverifiable-identity");
|
|
63
|
+
case "exact":
|
|
64
|
+
return observation.journal.version === "v2" &&
|
|
65
|
+
observation.journal.lifecycle === "PREPARED" &&
|
|
66
|
+
observation.journal.preparedState === "preexisting"
|
|
67
|
+
? { action: "already-applied", cleanup: "none" }
|
|
68
|
+
: manual("inconsistent-lifecycle");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function classifyPublishing(observation) {
|
|
72
|
+
switch (observation.destination.state) {
|
|
73
|
+
case "conflict":
|
|
74
|
+
return manual("destination-conflict");
|
|
75
|
+
case "unverifiable":
|
|
76
|
+
return manual("unverifiable-identity");
|
|
77
|
+
case "absent":
|
|
78
|
+
if (observation.temporary.state === "absent") {
|
|
79
|
+
return manual("temporary-missing");
|
|
80
|
+
}
|
|
81
|
+
return observation.temporary.state === "exact"
|
|
82
|
+
? { action: "resume-publish" }
|
|
83
|
+
: manual("identity-drift");
|
|
84
|
+
case "exact":
|
|
85
|
+
if (observation.destination.identity === "bound-temporary") {
|
|
86
|
+
return observation.temporary.state === "absent" ||
|
|
87
|
+
observation.temporary.state === "exact"
|
|
88
|
+
? { action: "complete-publication" }
|
|
89
|
+
: manual("identity-drift");
|
|
90
|
+
}
|
|
91
|
+
return manual("identity-drift");
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function classifyPublished(observation) {
|
|
95
|
+
if (observation.temporary.state !== "absent") {
|
|
96
|
+
return manual("orphan-temporary");
|
|
97
|
+
}
|
|
98
|
+
switch (observation.destination.state) {
|
|
99
|
+
case "absent":
|
|
100
|
+
return manual("publication-missing");
|
|
101
|
+
case "conflict":
|
|
102
|
+
return manual("destination-conflict");
|
|
103
|
+
case "unverifiable":
|
|
104
|
+
return manual("unverifiable-identity");
|
|
105
|
+
case "exact":
|
|
106
|
+
return observation.destination.identity === "bound-publication"
|
|
107
|
+
? { action: "finalize-checks" }
|
|
108
|
+
: manual("identity-drift");
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Classifies a fully observed recovery snapshot. This function never mutates
|
|
113
|
+
* evidence and deliberately has no catch-all optimistic branch.
|
|
114
|
+
*/
|
|
115
|
+
export function classifyDocumentRecovery(observation) {
|
|
116
|
+
if (containsZeroIdentity(observation)) {
|
|
117
|
+
return manual("zero-identity");
|
|
118
|
+
}
|
|
119
|
+
if (containsUnverifiableIdentity(observation)) {
|
|
120
|
+
return manual("unverifiable-identity");
|
|
121
|
+
}
|
|
122
|
+
switch (observation.journal.version) {
|
|
123
|
+
case "none":
|
|
124
|
+
return classifyWithoutJournal(observation);
|
|
125
|
+
case "v1-legacy":
|
|
126
|
+
return manual("legacy-journal");
|
|
127
|
+
case "v2":
|
|
128
|
+
switch (observation.journal.lifecycle) {
|
|
129
|
+
case "PREPARED":
|
|
130
|
+
return classifyPrepared(observation);
|
|
131
|
+
case "PUBLISHING":
|
|
132
|
+
return classifyPublishing(observation);
|
|
133
|
+
case "PUBLISHED":
|
|
134
|
+
return classifyPublished(observation);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=classify-document-recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify-document-recovery.js","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/classify-document-recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-command-consumer-root.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-command-consumer-root.ts"],"names":[],"mappings":"AAGA,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,MAAM,GACnB,MAAM,CAeR"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const utf8 = new TextEncoder();
|
|
2
|
+
const maximumConsumerRootBytes = 512;
|
|
3
|
+
export function projectDocumentCommandConsumerRoot(consumerRoot) {
|
|
4
|
+
const isWindowsAbsolute = /^[A-Za-z]:\\/u.test(consumerRoot) ||
|
|
5
|
+
consumerRoot.startsWith("\\\\");
|
|
6
|
+
const projected = isWindowsAbsolute
|
|
7
|
+
? consumerRoot.replaceAll("\\", "/")
|
|
8
|
+
: consumerRoot;
|
|
9
|
+
if (projected.length === 0 ||
|
|
10
|
+
utf8.encode(projected).byteLength > maximumConsumerRootBytes) {
|
|
11
|
+
throw new TypeError(`Document command consumer root must contain between 1 and ${maximumConsumerRootBytes} UTF-8 bytes.`);
|
|
12
|
+
}
|
|
13
|
+
return projected;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=document-command-consumer-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-command-consumer-root.js","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-command-consumer-root.ts"],"names":[],"mappings":"AAAA,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;AAC/B,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC,MAAM,UAAU,kCAAkC,CAChD,YAAoB;IAEpB,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;QAC1D,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,iBAAiB;QACjC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;QACpC,CAAC,CAAC,YAAY,CAAC;IACjB,IACE,SAAS,CAAC,MAAM,KAAK,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,UAAU,GAAG,wBAAwB,EAC5D,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,6DAA6D,wBAAwB,eAAe,CACrG,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { DocumentCommandDiagnostic, DocumentCommandExecution, DocumentCommandId, DocumentCommandOutcome } from "../model/document-command.js";
|
|
2
|
+
import type { DocumentReceipt } from "../model/document-receipt.js";
|
|
3
|
+
export declare function commandExecution<Result>(input: {
|
|
4
|
+
readonly command: DocumentCommandId;
|
|
5
|
+
readonly diagnostics?: readonly DocumentCommandDiagnostic[];
|
|
6
|
+
readonly outcome: DocumentCommandOutcome;
|
|
7
|
+
readonly result: Result;
|
|
8
|
+
}): DocumentCommandExecution<Result>;
|
|
9
|
+
export declare function receiptOutcome(receipt: DocumentReceipt): DocumentCommandOutcome;
|
|
10
|
+
export declare function projectDocumentCommandFailure(input: {
|
|
11
|
+
readonly allowCancellation?: boolean;
|
|
12
|
+
readonly command: DocumentCommandId;
|
|
13
|
+
readonly error: unknown;
|
|
14
|
+
readonly phase: DocumentCommandDiagnostic["phase"];
|
|
15
|
+
readonly subject: string;
|
|
16
|
+
}): {
|
|
17
|
+
readonly diagnostic: DocumentCommandDiagnostic;
|
|
18
|
+
readonly outcome: DocumentCommandOutcome;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=document-command-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-command-projection.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-command-projection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAKpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE;IAC9C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAWnC;AAiBD,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,sBAAsB,CAW/E;AAMD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACnD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GAAG;IACF,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;CAC1C,CA+CA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { CapabilityInputError } from "../../../capability-runtime.js";
|
|
2
|
+
import { FoundationError } from "../../../errors.js";
|
|
3
|
+
import { DocumentPlanningError } from "../../document-planning-error.js";
|
|
4
|
+
const MAXIMUM_DIAGNOSTICS = 256;
|
|
5
|
+
export function commandExecution(input) {
|
|
6
|
+
return Object.freeze({
|
|
7
|
+
envelope: Object.freeze({
|
|
8
|
+
schemaVersion: 2,
|
|
9
|
+
command: input.command,
|
|
10
|
+
outcome: input.outcome,
|
|
11
|
+
diagnostics: Object.freeze((input.diagnostics ?? []).slice(0, MAXIMUM_DIAGNOSTICS)),
|
|
12
|
+
result: Object.freeze(input.result)
|
|
13
|
+
}),
|
|
14
|
+
exitCode: exitCodeForDocumentCommandOutcome(input.outcome)
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
function exitCodeForDocumentCommandOutcome(outcome) {
|
|
18
|
+
switch (outcome) {
|
|
19
|
+
case "success": return 0;
|
|
20
|
+
case "authority-stale":
|
|
21
|
+
case "conflict":
|
|
22
|
+
case "recovery-required":
|
|
23
|
+
case "violation": return 1;
|
|
24
|
+
case "invalid-input": return 2;
|
|
25
|
+
case "execution-failure": return 3;
|
|
26
|
+
case "cancelled": return 130;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function receiptOutcome(receipt) {
|
|
30
|
+
switch (receipt.outcome) {
|
|
31
|
+
case "applied":
|
|
32
|
+
case "already-applied": return "success";
|
|
33
|
+
case "authority-stale": return "authority-stale";
|
|
34
|
+
case "rejected": return "conflict";
|
|
35
|
+
case "recovery-required":
|
|
36
|
+
case "manual-recovery-required": return "recovery-required";
|
|
37
|
+
case "failed-before-publication": return "execution-failure";
|
|
38
|
+
case "cancelled": return "cancelled";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function message(error) {
|
|
42
|
+
return (error instanceof Error ? error.message : String(error)).slice(0, 1_000);
|
|
43
|
+
}
|
|
44
|
+
export function projectDocumentCommandFailure(input) {
|
|
45
|
+
const { command, error, phase, subject } = input;
|
|
46
|
+
if (input.allowCancellation !== false && ((error instanceof CapabilityInputError &&
|
|
47
|
+
error.problem.code === "EXECUTION_CANCELLED") ||
|
|
48
|
+
(error instanceof Error && error.name === "AbortError"))) {
|
|
49
|
+
return {
|
|
50
|
+
diagnostic: {
|
|
51
|
+
ruleId: `${command}.cancelled`, severity: "error", phase,
|
|
52
|
+
subject, message: message(error)
|
|
53
|
+
},
|
|
54
|
+
outcome: "cancelled"
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (error instanceof DocumentPlanningError) {
|
|
58
|
+
const outcome = error.code === "DOCUMENT_PLANNING_AUTHORITY_CHANGED"
|
|
59
|
+
? "authority-stale"
|
|
60
|
+
: error.code === "DOCUMENT_PLANNING_CONFLICT"
|
|
61
|
+
? "conflict"
|
|
62
|
+
: "invalid-input";
|
|
63
|
+
return {
|
|
64
|
+
diagnostic: {
|
|
65
|
+
ruleId: `${command}.${outcome}`, severity: "error",
|
|
66
|
+
phase: outcome === "authority-stale" ? "authority" : phase,
|
|
67
|
+
subject, message: message(error)
|
|
68
|
+
},
|
|
69
|
+
outcome
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (error instanceof CapabilityInputError ||
|
|
73
|
+
(error instanceof FoundationError && error.code === "CONSUMER_INVALID")) {
|
|
74
|
+
return {
|
|
75
|
+
diagnostic: {
|
|
76
|
+
ruleId: `${command}.invalid-input`, severity: "error", phase: "input",
|
|
77
|
+
subject, message: message(error)
|
|
78
|
+
},
|
|
79
|
+
outcome: "invalid-input"
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
diagnostic: {
|
|
84
|
+
ruleId: `${command}.execution-failure`, severity: "error", phase,
|
|
85
|
+
subject, message: message(error)
|
|
86
|
+
},
|
|
87
|
+
outcome: "execution-failure"
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=document-command-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-command-projection.js","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-command-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DocumentReceipt, DocumentReceiptBody } from "../model/document-receipt.js";
|
|
2
|
+
import type { DocumentPlan } from "../model/document-planning.js";
|
|
3
|
+
export declare function createDocumentReceipt(body: DocumentReceiptBody, plan: DocumentPlan | undefined): Promise<DocumentReceipt>;
|
|
4
|
+
export declare function assertDocumentReceipt(receipt: unknown, plan: DocumentPlan | undefined): Promise<DocumentReceipt>;
|
|
5
|
+
//# sourceMappingURL=document-receipt-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-receipt-policy.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-receipt-policy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA4ClE,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE,YAAY,GAAG,SAAS,GAC7B,OAAO,CAAC,eAAe,CAAC,CAY1B;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,YAAY,GAAG,SAAS,GAC7B,OAAO,CAAC,eAAe,CAAC,CAQ1B"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { canonicalJson } from "../../../canonical-json.js";
|
|
2
|
+
import { assertSchema } from "../../../schema-catalog.js";
|
|
3
|
+
import { assertDocumentReceiptDigest, documentReceiptDigest } from "./document-contract-digests.js";
|
|
4
|
+
function snapshotBody(body) {
|
|
5
|
+
return JSON.parse(canonicalJson(body));
|
|
6
|
+
}
|
|
7
|
+
function deepFreezeCanonical(value) {
|
|
8
|
+
const pending = [];
|
|
9
|
+
if (value !== null && typeof value === "object") {
|
|
10
|
+
pending.push(value);
|
|
11
|
+
}
|
|
12
|
+
while (pending.length > 0) {
|
|
13
|
+
const current = pending.pop();
|
|
14
|
+
if (current === undefined || Object.isFrozen(current)) {
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
for (const key of Reflect.ownKeys(current)) {
|
|
18
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, key);
|
|
19
|
+
const child = descriptor !== undefined && "value" in descriptor
|
|
20
|
+
? descriptor.value
|
|
21
|
+
: undefined;
|
|
22
|
+
if (typeof child === "object" && child !== null) {
|
|
23
|
+
pending.push(child);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
Object.freeze(current);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function requireDocumentPlan(plan) {
|
|
31
|
+
if (plan === undefined) {
|
|
32
|
+
throw new TypeError("Document Receipt requires the exact referenced Plan.");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export async function createDocumentReceipt(body, plan) {
|
|
36
|
+
const snapshot = deepFreezeCanonical(snapshotBody(body));
|
|
37
|
+
const receipt = deepFreezeCanonical({
|
|
38
|
+
...snapshot,
|
|
39
|
+
receiptDigest: documentReceiptDigest(snapshot)
|
|
40
|
+
});
|
|
41
|
+
await assertSchema("document-receipt/v1", receipt, "document-receipt");
|
|
42
|
+
requireDocumentPlan(plan);
|
|
43
|
+
assertDocumentReceiptDigest(receipt, plan);
|
|
44
|
+
return receipt;
|
|
45
|
+
}
|
|
46
|
+
export async function assertDocumentReceipt(receipt, plan) {
|
|
47
|
+
const snapshot = deepFreezeCanonical(JSON.parse(canonicalJson(receipt)));
|
|
48
|
+
await assertSchema("document-receipt/v1", snapshot, "document-receipt");
|
|
49
|
+
requireDocumentPlan(plan);
|
|
50
|
+
assertDocumentReceiptDigest(snapshot, plan);
|
|
51
|
+
return snapshot;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=document-receipt-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-receipt-policy.js","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-receipt-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM1D,OAAO,EACL,2BAA2B,EAC3B,qBAAqB,EACtB,MAAM,gCAAgC,CAAC;AAExC,SAAS,YAAY,CAAC,IAAyB;IAC7C,OAAO,IAAI,CAAC,KAAK,CACf,aAAa,CAAC,IAAqC,CAAC,CAC9B,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAI,KAAQ;IACtC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACtD,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACjE,MAAM,KAAK,GAAY,UAAU,KAAK,SAAS,IAAI,OAAO,IAAI,UAAU;gBACtE,CAAC,CAAC,UAAU,CAAC,KAAK;gBAClB,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA8B;IAE9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAyB,EACzB,IAA8B;IAE9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,mBAAmB,CAAC;QAClC,GAAG,QAAQ;QACX,aAAa,EAAE,qBAAqB,CAClC,QAAmE,CACpE;KACF,CAAoB,CAAC;IACtB,MAAM,YAAY,CAAC,qBAAqB,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACvE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAgB,EAChB,IAA8B;IAE9B,MAAM,QAAQ,GAAG,mBAAmB,CAClC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAA6B,CAAC,CAAY,CACpE,CAAC;IACF,MAAM,YAAY,CAAC,qBAAqB,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACxE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,2BAA2B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,QAA2B,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DocumentAuthorityDigest } from "../model/document-catalog.js";
|
|
2
|
+
import type { DocumentTransactionEnvelope, DocumentTransactionJournal } from "../model/document-transaction.js";
|
|
3
|
+
export declare function documentTransactionPayloadDigest(journal: DocumentTransactionJournal): DocumentAuthorityDigest;
|
|
4
|
+
export declare function documentTransactionEnvelopeDigest(envelope: DocumentTransactionEnvelope | Omit<DocumentTransactionEnvelope, "envelopeDigest">): DocumentAuthorityDigest;
|
|
5
|
+
//# sourceMappingURL=document-transaction-digests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-transaction-digests.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-transaction-digests.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC3B,MAAM,kCAAkC,CAAC;AAM1C,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,0BAA0B,GAClC,uBAAuB,CAEzB;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EACJ,2BAA2B,GAC3B,IAAI,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,GACtD,uBAAuB,CAMzB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { canonicalJson, sha256Json } from "../../../canonical-json.js";
|
|
2
|
+
function canonicalSnapshot(value) {
|
|
3
|
+
return JSON.parse(canonicalJson(value));
|
|
4
|
+
}
|
|
5
|
+
export function documentTransactionPayloadDigest(journal) {
|
|
6
|
+
return sha256Json(canonicalSnapshot(journal));
|
|
7
|
+
}
|
|
8
|
+
export function documentTransactionEnvelopeDigest(envelope) {
|
|
9
|
+
const { envelopeDigest: _ignored, ...body } = envelope;
|
|
10
|
+
return sha256Json(canonicalSnapshot(body));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=document-transaction-digests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-transaction-digests.js","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-transaction-digests.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,UAAU,EACX,MAAM,4BAA4B,CAAC;AAOpC,SAAS,iBAAiB,CAAI,KAAQ;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAsC,CAAC,CAAM,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,OAAmC;IAEnC,OAAO,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAkC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,QAEuD;IAEvD,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GACzC,QAAuC,CAAC;IAC1C,OAAO,UAAU,CACf,iBAAiB,CAAC,IAAI,CAAkC,CACzD,CAAC;AACJ,CAAC"}
|
package/dist/document-authoring/application/policies/document-transaction-envelope-policy.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { DocumentTransactionEnvelope, DocumentTransactionEnvelopeBody } from "../model/document-transaction.js";
|
|
2
|
+
export declare function assertDocumentTransactionEnvelope(value: unknown): Promise<DocumentTransactionEnvelope>;
|
|
3
|
+
export declare function createDocumentTransactionEnvelope(body: DocumentTransactionEnvelopeBody): Promise<DocumentTransactionEnvelope>;
|
|
4
|
+
//# sourceMappingURL=document-transaction-envelope-policy.d.ts.map
|
package/dist/document-authoring/application/policies/document-transaction-envelope-policy.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-transaction-envelope-policy.d.ts","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-transaction-envelope-policy.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,2BAA2B,EAC3B,+BAA+B,EAEhC,MAAM,kCAAkC,CAAC;AA0G1C,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,2BAA2B,CAAC,CAkDtC;AAED,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,2BAA2B,CAAC,CAWtC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { canonicalJson } from "../../../canonical-json.js";
|
|
2
|
+
import { assertSchema } from "../../../schema-catalog.js";
|
|
3
|
+
import { assertNonzeroDocumentPhysicalIdentity } from "../model/document-physical-identity.js";
|
|
4
|
+
import { assertDocumentPlanDigests } from "./document-contract-digests.js";
|
|
5
|
+
import { documentTemporaryPath } from "./document-temporary-path.js";
|
|
6
|
+
import { documentTransactionEnvelopeDigest, documentTransactionPayloadDigest } from "./document-transaction-digests.js";
|
|
7
|
+
class DocumentTransactionEnvelopeError extends Error {
|
|
8
|
+
constructor(message, options) {
|
|
9
|
+
super(message, options);
|
|
10
|
+
this.name = "DocumentTransactionEnvelopeError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function canonicalSnapshot(value) {
|
|
14
|
+
try {
|
|
15
|
+
return JSON.parse(canonicalJson(value));
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
throw new DocumentTransactionEnvelopeError("Document transaction envelope must use canonical JSON values.", { cause: error });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function deepFreezeCanonical(value) {
|
|
22
|
+
const pending = [];
|
|
23
|
+
if (value !== null && typeof value === "object") {
|
|
24
|
+
pending.push(value);
|
|
25
|
+
}
|
|
26
|
+
while (pending.length > 0) {
|
|
27
|
+
const current = pending.pop();
|
|
28
|
+
if (current === undefined || Object.isFrozen(current)) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
for (const key of Reflect.ownKeys(current)) {
|
|
32
|
+
const descriptor = Object.getOwnPropertyDescriptor(current, key);
|
|
33
|
+
const child = descriptor !== undefined && "value" in descriptor
|
|
34
|
+
? descriptor.value
|
|
35
|
+
: undefined;
|
|
36
|
+
if (typeof child === "object" && child !== null) {
|
|
37
|
+
pending.push(child);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
Object.freeze(current);
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
function isRecord(value) {
|
|
45
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
46
|
+
}
|
|
47
|
+
function hasOwnedTemporary(journal) {
|
|
48
|
+
return "ownedTemporary" in journal;
|
|
49
|
+
}
|
|
50
|
+
function assertLifecycleBindings(envelope) {
|
|
51
|
+
const { journal } = envelope;
|
|
52
|
+
const { destination } = journal;
|
|
53
|
+
if (destination.path !== journal.plan.destination ||
|
|
54
|
+
envelope.foundation.version !== journal.plan.compiler.version ||
|
|
55
|
+
envelope.foundation.buildIdentity !== journal.plan.compiler.buildIdentity) {
|
|
56
|
+
throw new DocumentTransactionEnvelopeError("Document transaction lifecycle does not bind the embedded Plan.");
|
|
57
|
+
}
|
|
58
|
+
if (hasOwnedTemporary(journal) &&
|
|
59
|
+
journal.ownedTemporary.digest !== journal.plan.output.digest) {
|
|
60
|
+
throw new DocumentTransactionEnvelopeError("Document transaction temporary does not bind the planned output.");
|
|
61
|
+
}
|
|
62
|
+
if (hasOwnedTemporary(journal)) {
|
|
63
|
+
assertNonzeroDocumentPhysicalIdentity(journal.ownedTemporary.identity);
|
|
64
|
+
if (journal.ownedTemporary.path !==
|
|
65
|
+
documentTemporaryPath(journal.plan.destination, journal.plan.planDigest)) {
|
|
66
|
+
throw new DocumentTransactionEnvelopeError("Document transaction temporary path does not bind the embedded Plan.");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (envelope.state === "PUBLISHED") {
|
|
70
|
+
assertNonzeroDocumentPhysicalIdentity(envelope.journal.publicationIdentity);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export async function assertDocumentTransactionEnvelope(value) {
|
|
74
|
+
const candidate = deepFreezeCanonical(canonicalSnapshot(value));
|
|
75
|
+
if (!isRecord(candidate)) {
|
|
76
|
+
throw new DocumentTransactionEnvelopeError("Document transaction envelope must be an object.");
|
|
77
|
+
}
|
|
78
|
+
const handler = candidate["recoveryHandler"];
|
|
79
|
+
if (candidate["schemaVersion"] !== 3 ||
|
|
80
|
+
candidate["operationKind"] !== "document-authoring" ||
|
|
81
|
+
!isRecord(handler) ||
|
|
82
|
+
handler["id"] !== "foundation.document-authoring" ||
|
|
83
|
+
handler["contractVersion"] !== 2 ||
|
|
84
|
+
candidate["adapterContractVersion"] !== 1 ||
|
|
85
|
+
candidate["payloadKind"] !== "document-authoring-journal/v2" ||
|
|
86
|
+
!["PREPARED", "PUBLISHING", "PUBLISHED"].includes(String(candidate["state"]))) {
|
|
87
|
+
throw new DocumentTransactionEnvelopeError("Document transaction envelope constants are invalid.");
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
await assertSchema("foundation-transaction-envelope/v3", candidate, "document-transaction-envelope");
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new DocumentTransactionEnvelopeError("Document transaction envelope does not match the closed v3 schema.", { cause: error });
|
|
94
|
+
}
|
|
95
|
+
const envelope = candidate;
|
|
96
|
+
assertDocumentPlanDigests(envelope.journal.plan);
|
|
97
|
+
assertLifecycleBindings(envelope);
|
|
98
|
+
if (envelope.payloadDigest !==
|
|
99
|
+
documentTransactionPayloadDigest(envelope.journal) ||
|
|
100
|
+
envelope.envelopeDigest !==
|
|
101
|
+
documentTransactionEnvelopeDigest(envelope)) {
|
|
102
|
+
throw new DocumentTransactionEnvelopeError("Document transaction envelope digest is invalid.");
|
|
103
|
+
}
|
|
104
|
+
return envelope;
|
|
105
|
+
}
|
|
106
|
+
export async function createDocumentTransactionEnvelope(body) {
|
|
107
|
+
const snapshot = deepFreezeCanonical(canonicalSnapshot(body));
|
|
108
|
+
const withPayload = {
|
|
109
|
+
...snapshot,
|
|
110
|
+
payloadDigest: documentTransactionPayloadDigest(snapshot.journal)
|
|
111
|
+
};
|
|
112
|
+
const envelope = deepFreezeCanonical({
|
|
113
|
+
...withPayload,
|
|
114
|
+
envelopeDigest: documentTransactionEnvelopeDigest(withPayload)
|
|
115
|
+
});
|
|
116
|
+
return assertDocumentTransactionEnvelope(envelope);
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=document-transaction-envelope-policy.js.map
|
package/dist/document-authoring/application/policies/document-transaction-envelope-policy.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-transaction-envelope-policy.js","sourceRoot":"","sources":["../../../../src/document-authoring/application/policies/document-transaction-envelope-policy.ts"],"names":[],"mappings":"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"}
|