@agent-teams/repository-mutation 0.0.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/CHANGELOG.md +5 -0
- package/LICENSE +201 -0
- package/README.md +10 -0
- package/dist/canonical-json.d.ts +12 -0
- package/dist/canonical-json.d.ts.map +1 -0
- package/dist/canonical-json.js +137 -0
- package/dist/canonical-json.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/installed-artifact-identity.d.ts +15 -0
- package/dist/installed-artifact-identity.d.ts.map +1 -0
- package/dist/installed-artifact-identity.js +127 -0
- package/dist/installed-artifact-identity.js.map +1 -0
- package/dist/node.d.ts +29 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +19 -0
- package/dist/node.js.map +1 -0
- package/dist/package-version.d.ts +3 -0
- package/dist/package-version.d.ts.map +1 -0
- package/dist/package-version.js +11 -0
- package/dist/package-version.js.map +1 -0
- package/dist/qualification/index.d.ts +24 -0
- package/dist/qualification/index.d.ts.map +1 -0
- package/dist/qualification/index.js +11 -0
- package/dist/qualification/index.js.map +1 -0
- 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 +35 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.js +181 -0
- package/dist/repository-mutation/adapters/node/node-absent-file-publication.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.d.ts +23 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.js +134 -0
- package/dist/repository-mutation/adapters/node/node-bounded-regular-file.js.map +1 -0
- 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 +172 -0
- package/dist/repository-mutation/adapters/node/node-cleanup-owned-temporary.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.d.ts +14 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.js +23 -0
- package/dist/repository-mutation/adapters/node/node-create-and-bind-directory.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.d.ts +17 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.js +47 -0
- package/dist/repository-mutation/adapters/node/node-directory-durability.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.d.ts +37 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.js +244 -0
- package/dist/repository-mutation/adapters/node/node-directory-materialization.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.d.ts +13 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.js +67 -0
- package/dist/repository-mutation/adapters/node/node-existing-repository-ancestors.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.d.ts +84 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.js +232 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.d.ts +9 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.js +2 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.d.ts +6 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.js +30 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.d.ts +11 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.js +159 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.d.ts +9 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.js +22 -0
- package/dist/repository-mutation/adapters/node/node-known-file-apply-state.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.d.ts +9 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.js +203 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.d.ts +17 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.js +22 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.d.ts +28 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.js +213 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-filesystem.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.d.ts +15 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.js +51 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.d.ts +29 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.js +72 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.d.ts +31 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.js +254 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.d.ts +13 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.js +210 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.d.ts +15 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.js +181 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.d.ts +12 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.js +18 -0
- package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.d.ts +25 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.js +150 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-filesystem.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.d.ts +12 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.js +56 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-inspection.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.d.ts +22 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.js +246 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-journal-store.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.d.ts +21 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.js +34 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.d.ts +4 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.js +43 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-receipt.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.d.ts +14 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.js +109 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.d.ts +21 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.js +215 -0
- package/dist/repository-mutation/adapters/node/node-known-file-transaction.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-prepare-exact-sibling-temporary.d.ts +18 -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 +30 -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 +31 -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 +50 -0
- package/dist/repository-mutation/adapters/node/node-publish-prepared-absent-file.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.d.ts +2 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.d.ts.map +1 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.js +7 -0
- package/dist/repository-mutation/adapters/node/node-repository-path.js.map +1 -0
- package/dist/repository-mutation/adapters/node/node-terminal-evidence-directory.d.ts +21 -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/model/directory-materialization.d.ts +35 -0
- package/dist/repository-mutation/application/model/directory-materialization.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/directory-materialization.js +11 -0
- package/dist/repository-mutation/application/model/directory-materialization.js.map +1 -0
- package/dist/repository-mutation/application/model/exact-postimage.d.ts +17 -0
- package/dist/repository-mutation/application/model/exact-postimage.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/exact-postimage.js +11 -0
- package/dist/repository-mutation/application/model/exact-postimage.js.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.d.ts +69 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.js +15 -0
- package/dist/repository-mutation/application/model/known-file-transaction-journal.js.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction.d.ts +64 -0
- package/dist/repository-mutation/application/model/known-file-transaction.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/known-file-transaction.js +2 -0
- package/dist/repository-mutation/application/model/known-file-transaction.js.map +1 -0
- package/dist/repository-mutation/application/model/path-identity.d.ts +7 -0
- package/dist/repository-mutation/application/model/path-identity.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/path-identity.js +2 -0
- package/dist/repository-mutation/application/model/path-identity.js.map +1 -0
- package/dist/repository-mutation/application/model/repository-path.d.ts +8 -0
- package/dist/repository-mutation/application/model/repository-path.d.ts.map +1 -0
- package/dist/repository-mutation/application/model/repository-path.js +74 -0
- package/dist/repository-mutation/application/model/repository-path.js.map +1 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.d.ts +33 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.d.ts.map +1 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js +21 -0
- package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.d.ts +9 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.d.ts.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.js +214 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-envelope.js.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.d.ts +7 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.d.ts.map +1 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.js +253 -0
- package/dist/repository-mutation/application/policies/known-file-transaction-plan.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/repository-mutation-envelope.d.ts +32 -0
- package/dist/repository-mutation-envelope.d.ts.map +1 -0
- package/dist/repository-mutation-envelope.js +292 -0
- package/dist/repository-mutation-envelope.js.map +1 -0
- package/dist/state-contract.d.ts +6 -0
- package/dist/state-contract.d.ts.map +1 -0
- package/dist/state-contract.js +6 -0
- package/dist/state-contract.js.map +1 -0
- package/dist/strict-json.d.ts +7 -0
- package/dist/strict-json.d.ts.map +1 -0
- package/dist/strict-json.js +131 -0
- package/dist/strict-json.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.d.ts +29 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.js +139 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-evidence.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.d.ts +151 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.js +29 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-profile.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.d.ts +25 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.js +303 -0
- package/dist/transaction-coordination/adapters/node/node-journal-slot-store.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.d.ts +16 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.js +359 -0
- package/dist/transaction-coordination/adapters/node/node-operation-lock.js.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.d.ts +11 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.d.ts.map +1 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.js +91 -0
- package/dist/transaction-coordination/adapters/node/node-state-directory.js.map +1 -0
- package/dist/transaction-coordination/mutation-lease.d.ts +38 -0
- package/dist/transaction-coordination/mutation-lease.d.ts.map +1 -0
- package/dist/transaction-coordination/mutation-lease.js +351 -0
- package/dist/transaction-coordination/mutation-lease.js.map +1 -0
- package/package.json +52 -0
- package/schemas/known-file-transaction-plan/v1.schema.json +65 -0
- package/schemas/known-file-transaction-receipt/v1.schema.json +36 -0
- package/schemas/repository-mutation-transaction-envelope/v1.schema.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-repository-path.js","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-repository-path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEtD,MAAM,UAAU,wBAAwB,CAAC,IAAY,EAAE,SAAiB;IACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,OAAO,CACL,QAAQ,KAAK,EAAE;QACf,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CACjF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { mkdir, realpath } from "node:fs/promises";
|
|
2
|
+
import type { PortablePathIdentity } from "../../application/model/path-identity.js";
|
|
3
|
+
export interface TerminalEvidenceDirectoryStat {
|
|
4
|
+
readonly birthtimeNs: bigint;
|
|
5
|
+
readonly dev: bigint;
|
|
6
|
+
readonly ino: bigint;
|
|
7
|
+
readonly isDirectory: () => boolean;
|
|
8
|
+
readonly isSymbolicLink: () => boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface TerminalEvidenceDirectoryOperations {
|
|
11
|
+
readonly lstat: (path: string) => Promise<TerminalEvidenceDirectoryStat>;
|
|
12
|
+
readonly mkdir: typeof mkdir;
|
|
13
|
+
readonly realpath: typeof realpath;
|
|
14
|
+
}
|
|
15
|
+
export interface TerminalEvidenceDirectoryAuthority {
|
|
16
|
+
readonly identity: PortablePathIdentity;
|
|
17
|
+
readonly path: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function ensureTerminalEvidenceDirectory(path: string, operationOverrides?: Partial<TerminalEvidenceDirectoryOperations>): Promise<TerminalEvidenceDirectoryAuthority>;
|
|
20
|
+
export declare function assertTerminalEvidenceDirectory(authority: TerminalEvidenceDirectoryAuthority, operationOverrides?: Partial<TerminalEvidenceDirectoryOperations>): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=node-terminal-evidence-directory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-terminal-evidence-directory.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-terminal-evidence-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAErF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACzE,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,OAAO,QAAQ,CAAC;CACpC;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA4DD,wBAAsB,+BAA+B,CACnD,IAAI,EAAE,MAAM,EACZ,kBAAkB,GAAE,OAAO,CAAC,mCAAmC,CAAM,GACpE,OAAO,CAAC,kCAAkC,CAAC,CAe7C;AAED,wBAAsB,+BAA+B,CACnD,SAAS,EAAE,kCAAkC,EAC7C,kBAAkB,GAAE,OAAO,CAAC,mCAAmC,CAAM,GACpE,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { lstat, mkdir, realpath } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, join } from "node:path";
|
|
3
|
+
const nodeOperations = {
|
|
4
|
+
lstat: (path) => lstat(path, { bigint: true }),
|
|
5
|
+
mkdir,
|
|
6
|
+
realpath
|
|
7
|
+
};
|
|
8
|
+
function identityFromStat(metadata) {
|
|
9
|
+
return {
|
|
10
|
+
birthtimeNs: metadata.birthtimeNs,
|
|
11
|
+
dev: metadata.dev,
|
|
12
|
+
ino: metadata.ino
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function identitiesEqual(left, right) {
|
|
16
|
+
return (left.birthtimeNs === right.birthtimeNs &&
|
|
17
|
+
left.dev === right.dev &&
|
|
18
|
+
left.ino === right.ino);
|
|
19
|
+
}
|
|
20
|
+
async function observeTerminalEvidenceDirectory(path, operations) {
|
|
21
|
+
const metadata = await operations.lstat(path);
|
|
22
|
+
if (metadata.isSymbolicLink() || !metadata.isDirectory()) {
|
|
23
|
+
throw new Error("Terminal evidence path must be a real operation-owned directory.");
|
|
24
|
+
}
|
|
25
|
+
const expectedCanonicalPath = join(await operations.realpath(dirname(path)), basename(path));
|
|
26
|
+
if ((await operations.realpath(path)) !== expectedCanonicalPath) {
|
|
27
|
+
throw new Error("Terminal evidence directory resolves outside its expected path.");
|
|
28
|
+
}
|
|
29
|
+
const identity = identityFromStat(metadata);
|
|
30
|
+
const after = await operations.lstat(path);
|
|
31
|
+
if (after.isSymbolicLink() ||
|
|
32
|
+
!after.isDirectory() ||
|
|
33
|
+
!identitiesEqual(identity, identityFromStat(after))) {
|
|
34
|
+
throw new Error("Terminal evidence directory authority changed.");
|
|
35
|
+
}
|
|
36
|
+
return identity;
|
|
37
|
+
}
|
|
38
|
+
export async function ensureTerminalEvidenceDirectory(path, operationOverrides = {}) {
|
|
39
|
+
const operations = { ...nodeOperations, ...operationOverrides };
|
|
40
|
+
await operations.mkdir(path, { mode: 0o700 }).catch((error) => {
|
|
41
|
+
if (!(error instanceof Error) ||
|
|
42
|
+
!("code" in error) ||
|
|
43
|
+
error.code !== "EEXIST") {
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
identity: await observeTerminalEvidenceDirectory(path, operations),
|
|
49
|
+
path
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export async function assertTerminalEvidenceDirectory(authority, operationOverrides = {}) {
|
|
53
|
+
const operations = { ...nodeOperations, ...operationOverrides };
|
|
54
|
+
const identity = await observeTerminalEvidenceDirectory(authority.path, operations);
|
|
55
|
+
if (!identitiesEqual(identity, authority.identity)) {
|
|
56
|
+
throw new Error("Terminal evidence directory authority changed.");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=node-terminal-evidence-directory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-terminal-evidence-directory.js","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-terminal-evidence-directory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PortablePathIdentity } from "./path-identity.js";
|
|
2
|
+
export type DirectoryCreatePolicy = "allow" | "forbid";
|
|
3
|
+
export interface ProjectedDirectory {
|
|
4
|
+
readonly absolutePath: string;
|
|
5
|
+
readonly repositoryPath: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CapturedDirectory extends ProjectedDirectory {
|
|
8
|
+
readonly identity: PortablePathIdentity;
|
|
9
|
+
}
|
|
10
|
+
export interface DirectoryMaterializationProjection {
|
|
11
|
+
readonly anchor: CapturedDirectory;
|
|
12
|
+
readonly createPolicy: DirectoryCreatePolicy;
|
|
13
|
+
readonly finalParent: ProjectedDirectory;
|
|
14
|
+
readonly missingDirectories: readonly ProjectedDirectory[];
|
|
15
|
+
readonly repositoryRoot: CapturedDirectory;
|
|
16
|
+
}
|
|
17
|
+
export interface BoundDirectoryCreation extends CapturedDirectory {
|
|
18
|
+
readonly outcome: "created-and-bound";
|
|
19
|
+
readonly parentIdentity: PortablePathIdentity;
|
|
20
|
+
}
|
|
21
|
+
export type UnboundDirectoryCreationRecovery = {
|
|
22
|
+
readonly outcome: "not-created";
|
|
23
|
+
} | {
|
|
24
|
+
readonly observedIdentity: PortablePathIdentity;
|
|
25
|
+
readonly outcome: "ambiguous-manual";
|
|
26
|
+
};
|
|
27
|
+
export type DirectoryMutationErrorCode = "ALIAS_COLLISION" | "AMBIGUOUS_CREATION" | "CONCURRENT_CHANGE" | "CREATE_FORBIDDEN" | "IDENTITY_UNAVAILABLE" | "INVALID_PATH" | "NOT_DIRECTORY" | "OUTSIDE_ROOT" | "SYMLINK";
|
|
28
|
+
export declare class DirectoryMutationError extends Error {
|
|
29
|
+
readonly code: DirectoryMutationErrorCode;
|
|
30
|
+
readonly manualRecoveryRequired: boolean;
|
|
31
|
+
constructor(code: DirectoryMutationErrorCode, message: string, options?: ErrorOptions & {
|
|
32
|
+
readonly manualRecoveryRequired?: boolean;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=directory-materialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-materialization.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/directory-materialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;IAC3D,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;CACzC;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3D,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;CAC/C;AAED,MAAM,MAAM,gCAAgC,GACxC;IAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACnC;IACE,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;CACtC,CAAC;AAEN,MAAM,MAAM,0BAA0B,GAClC,iBAAiB,GACjB,oBAAoB,GACpB,mBAAmB,GACnB,kBAAkB,GAClB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,cAAc,GACd,SAAS,CAAC;AAEd,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IAEzC,YACE,IAAI,EAAE,0BAA0B,EAChC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,EAMvE;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class DirectoryMutationError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
manualRecoveryRequired;
|
|
4
|
+
constructor(code, message, options) {
|
|
5
|
+
super(message, options);
|
|
6
|
+
this.name = "DirectoryMutationError";
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.manualRecoveryRequired = options?.manualRecoveryRequired ?? false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=directory-materialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory-materialization.js","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/directory-materialization.ts"],"names":[],"mappings":"AA4CA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,IAAI,CAA6B;IACjC,sBAAsB,CAAU;IAEzC,YACE,IAAgC,EAChC,OAAe,EACf,OAAsE;QAEtE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,sBAAsB,GAAG,OAAO,EAAE,sBAAsB,IAAI,KAAK,CAAC;IACzE,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ExactFilePostimage {
|
|
2
|
+
readonly bytes: Uint8Array;
|
|
3
|
+
readonly digest: string;
|
|
4
|
+
readonly mode: number;
|
|
5
|
+
readonly size: number;
|
|
6
|
+
}
|
|
7
|
+
export type ExactFilePostimageState = "absent" | "conflict" | "exact";
|
|
8
|
+
export type AbsentFilePublicationOutcome = "already-satisfied" | "published";
|
|
9
|
+
export type AbsentFilePublicationErrorCode = "CLEANUP_FAILED" | "CONFLICT" | "INVALID_ERROR" | "INVALID_POSTIMAGE" | "PUBLICATION_INVALID" | "PUBLICATION_INCOMPLETE" | "PUBLICATION_UNSUPPORTED" | "TEMPORARY_EXISTS" | "TEMPORARY_REPLACED" | "VERIFICATION_FAILED";
|
|
10
|
+
export declare class AbsentFilePublicationError extends Error {
|
|
11
|
+
readonly code: AbsentFilePublicationErrorCode;
|
|
12
|
+
readonly cleanupError: unknown;
|
|
13
|
+
constructor(code: AbsentFilePublicationErrorCode, message: string, options?: ErrorOptions & {
|
|
14
|
+
readonly cleanupError?: unknown;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=exact-postimage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exact-postimage.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/exact-postimage.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAEtE,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG,WAAW,CAAC;AAE7E,MAAM,MAAM,8BAA8B,GACtC,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,mBAAmB,GACnB,qBAAqB,GACrB,wBAAwB,GACxB,yBAAyB,GACzB,kBAAkB,GAClB,oBAAoB,GACpB,qBAAqB,CAAC;AAE1B,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAE/B,YACE,IAAI,EAAE,8BAA8B,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,YAAY,GAAG;QAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,EAM7D;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export class AbsentFilePublicationError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
cleanupError;
|
|
4
|
+
constructor(code, message, options) {
|
|
5
|
+
super(message, options);
|
|
6
|
+
this.name = "AbsentFilePublicationError";
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.cleanupError = options?.cleanupError;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=exact-postimage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exact-postimage.js","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/exact-postimage.ts"],"names":[],"mappings":"AAuBA,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,CAAiC;IACrC,YAAY,CAAU;IAE/B,YACE,IAAoC,EACpC,OAAe,EACf,OAA4D;QAE5D,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,YAAY,CAAC;IAC5C,CAAC;CACF"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { PortablePathIdentity } from "./path-identity.js";
|
|
2
|
+
import type { KnownFileDigest, KnownFileTransactionPlanV1 } from "./known-file-transaction.js";
|
|
3
|
+
export interface KnownFileTransactionPortableIdentityV1 {
|
|
4
|
+
readonly birthtimeNs: string;
|
|
5
|
+
readonly dev: string;
|
|
6
|
+
readonly ino: string;
|
|
7
|
+
}
|
|
8
|
+
export interface KnownFileTransactionRetirementV1 {
|
|
9
|
+
readonly kind: "destination" | "rollback-temporary" | "temporary";
|
|
10
|
+
readonly state: "ready" | "captured" | "unlink-authorized";
|
|
11
|
+
readonly directoryIdentity: KnownFileTransactionPortableIdentityV1;
|
|
12
|
+
readonly pathIdentity: KnownFileTransactionPortableIdentityV1;
|
|
13
|
+
}
|
|
14
|
+
export type KnownFileTransactionJournalOperationV1 = {
|
|
15
|
+
readonly path: string;
|
|
16
|
+
readonly state: "already-satisfied" | "pending" | "temporary-authorized";
|
|
17
|
+
readonly matchedPreimage?: number;
|
|
18
|
+
readonly rollbackTemporaryIdentity?: never;
|
|
19
|
+
readonly captureDirectoryIdentity?: never;
|
|
20
|
+
readonly capturedPreimageIdentity?: never;
|
|
21
|
+
readonly retirement?: never;
|
|
22
|
+
} | {
|
|
23
|
+
readonly path: string;
|
|
24
|
+
readonly state: "temporary-ready" | "capture-authorized" | "capture-ready" | "preimage-captured" | "destination-retired" | "publishing" | "published" | "rollback-restored";
|
|
25
|
+
readonly matchedPreimage?: number;
|
|
26
|
+
readonly rollbackTemporaryIdentity?: KnownFileTransactionPortableIdentityV1;
|
|
27
|
+
readonly temporaryIdentity: KnownFileTransactionPortableIdentityV1;
|
|
28
|
+
readonly captureDirectoryIdentity?: KnownFileTransactionPortableIdentityV1;
|
|
29
|
+
readonly capturedPreimageIdentity?: KnownFileTransactionPortableIdentityV1;
|
|
30
|
+
readonly retirement?: KnownFileTransactionRetirementV1;
|
|
31
|
+
};
|
|
32
|
+
export interface KnownFileTransactionJournalV1 {
|
|
33
|
+
readonly schemaVersion: 1;
|
|
34
|
+
readonly plan: KnownFileTransactionPlanV1;
|
|
35
|
+
readonly operations: readonly KnownFileTransactionJournalOperationV1[];
|
|
36
|
+
readonly authorizedDirectories: readonly string[];
|
|
37
|
+
readonly createdDirectories: readonly {
|
|
38
|
+
readonly path: string;
|
|
39
|
+
readonly identity: KnownFileTransactionPortableIdentityV1;
|
|
40
|
+
}[];
|
|
41
|
+
}
|
|
42
|
+
export interface KnownFileTransactionEnvelopeV1 {
|
|
43
|
+
readonly schemaVersion: 6;
|
|
44
|
+
readonly format: "agent-teams.repository-mutation.transaction-envelope/v1";
|
|
45
|
+
readonly operationKind: "known-file-transaction";
|
|
46
|
+
readonly recoveryHandler: {
|
|
47
|
+
readonly id: "agent-teams.repository-mutation.known-file/v1";
|
|
48
|
+
readonly contractVersion: 1;
|
|
49
|
+
};
|
|
50
|
+
readonly ownerArtifact: {
|
|
51
|
+
readonly name: string;
|
|
52
|
+
readonly version: string;
|
|
53
|
+
readonly buildIdentity: KnownFileDigest;
|
|
54
|
+
};
|
|
55
|
+
readonly kernelArtifact: {
|
|
56
|
+
readonly name: string;
|
|
57
|
+
readonly version: string;
|
|
58
|
+
readonly buildIdentity: KnownFileDigest;
|
|
59
|
+
};
|
|
60
|
+
readonly adapterContractVersion: 1;
|
|
61
|
+
readonly payloadKind: "agent-teams.repository-mutation.known-file-journal/v1";
|
|
62
|
+
readonly state: "APPLYING" | "COMMITTED";
|
|
63
|
+
readonly payload: KnownFileTransactionJournalV1;
|
|
64
|
+
readonly payloadDigest: KnownFileDigest;
|
|
65
|
+
readonly envelopeDigest: KnownFileDigest;
|
|
66
|
+
}
|
|
67
|
+
export declare function serializeKnownFileIdentity(identity: PortablePathIdentity): KnownFileTransactionPortableIdentityV1;
|
|
68
|
+
export declare function deserializeKnownFileIdentity(identity: KnownFileTransactionPortableIdentityV1): PortablePathIdentity;
|
|
69
|
+
//# sourceMappingURL=known-file-transaction-journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-file-transaction-journal.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/known-file-transaction-journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function serializeKnownFileIdentity(identity) {
|
|
2
|
+
return Object.freeze({
|
|
3
|
+
birthtimeNs: identity.birthtimeNs.toString(),
|
|
4
|
+
dev: identity.dev.toString(),
|
|
5
|
+
ino: identity.ino.toString()
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
export function deserializeKnownFileIdentity(identity) {
|
|
9
|
+
return {
|
|
10
|
+
birthtimeNs: BigInt(identity.birthtimeNs),
|
|
11
|
+
dev: BigInt(identity.dev),
|
|
12
|
+
ino: BigInt(identity.ino)
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=known-file-transaction-journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-file-transaction-journal.js","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/known-file-transaction-journal.ts"],"names":[],"mappings":"AAqFA,MAAM,UAAU,0BAA0B,CACxC,QAA8B;IAE9B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC5C,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC5B,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE;KAC7B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAAgD;IAEhD,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
export type KnownFileDigest = `sha256:${string}`;
|
|
2
|
+
export interface KnownFileImageV1 {
|
|
3
|
+
readonly contentBase64: string;
|
|
4
|
+
readonly digest: KnownFileDigest;
|
|
5
|
+
readonly mode: number;
|
|
6
|
+
readonly size: number;
|
|
7
|
+
}
|
|
8
|
+
export type KnownFilePreconditionV1 = {
|
|
9
|
+
readonly state: "absent";
|
|
10
|
+
} | {
|
|
11
|
+
readonly state: "known-file";
|
|
12
|
+
readonly acceptedPreimages: readonly KnownFileImageV1[];
|
|
13
|
+
};
|
|
14
|
+
export interface KnownFileTransactionOperationV1 {
|
|
15
|
+
readonly path: string;
|
|
16
|
+
readonly precondition: KnownFilePreconditionV1;
|
|
17
|
+
readonly postimage: KnownFileImageV1;
|
|
18
|
+
}
|
|
19
|
+
export interface KnownFileTransactionPlanV1 {
|
|
20
|
+
readonly schemaVersion: 1;
|
|
21
|
+
readonly protocol: "agent-teams.repository-mutation.known-file/v1";
|
|
22
|
+
readonly operations: readonly KnownFileTransactionOperationV1[];
|
|
23
|
+
readonly planDigest: KnownFileDigest;
|
|
24
|
+
}
|
|
25
|
+
export type KnownFileTransactionOperationOutcome = "already-satisfied" | "created" | "replaced" | "rolled-back-to-absent" | "rolled-back-to-preimage";
|
|
26
|
+
export interface KnownFileTransactionReceiptV1 {
|
|
27
|
+
readonly schemaVersion: 1;
|
|
28
|
+
readonly protocol: "agent-teams.repository-mutation.known-file/v1";
|
|
29
|
+
readonly planDigest: KnownFileDigest;
|
|
30
|
+
readonly outcome: "already-satisfied" | "applied" | "rolled-back";
|
|
31
|
+
readonly operations: readonly {
|
|
32
|
+
readonly path: string;
|
|
33
|
+
readonly outcome: KnownFileTransactionOperationOutcome;
|
|
34
|
+
readonly resultDigest?: KnownFileDigest;
|
|
35
|
+
}[];
|
|
36
|
+
readonly receiptDigest: KnownFileDigest;
|
|
37
|
+
}
|
|
38
|
+
export type KnownFileTransactionOperationInput = {
|
|
39
|
+
readonly path: string;
|
|
40
|
+
readonly precondition: {
|
|
41
|
+
readonly state: "absent";
|
|
42
|
+
};
|
|
43
|
+
readonly postimage: {
|
|
44
|
+
readonly bytes: Uint8Array;
|
|
45
|
+
readonly mode?: number;
|
|
46
|
+
};
|
|
47
|
+
} | {
|
|
48
|
+
readonly path: string;
|
|
49
|
+
readonly precondition: {
|
|
50
|
+
readonly state: "known-file";
|
|
51
|
+
readonly acceptedPreimages: readonly {
|
|
52
|
+
readonly bytes: Uint8Array;
|
|
53
|
+
readonly mode: number;
|
|
54
|
+
}[];
|
|
55
|
+
};
|
|
56
|
+
readonly postimage: {
|
|
57
|
+
readonly bytes: Uint8Array;
|
|
58
|
+
readonly mode: number;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
export interface CompileKnownFileTransactionPlanInput {
|
|
62
|
+
readonly operations: readonly KnownFileTransactionOperationInput[];
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=known-file-transaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-file-transaction.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/known-file-transaction.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,UAAU,MAAM,EAAE,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC5B;IACE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACzD,CAAC;AAEN,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,uBAAuB,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;IACnE,QAAQ,CAAC,UAAU,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAChE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,MAAM,oCAAoC,GAC5C,mBAAmB,GACnB,SAAS,GACT,UAAU,GACV,uBAAuB,GACvB,yBAAyB,CAAC;AAE9B,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;IACnE,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,SAAS,GAAG,aAAa,CAAC;IAClE,QAAQ,CAAC,UAAU,EAAE,SAAS;QAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,oCAAoC,CAAC;QACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;KACzC,EAAE,CAAC;IACJ,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;CACzC;AAED,MAAM,MAAM,kCAAkC,GAC1C;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACH,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE;QACrB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;QAC7B,QAAQ,CAAC,iBAAiB,EAAE,SAAS;YACnC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;YAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SACvB,EAAE,CAAC;KACL,CAAC;IACF,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;QAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAAC;AAEN,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,UAAU,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-file-transaction.js","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/known-file-transaction.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-identity.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/path-identity.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-identity.js","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/path-identity.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type PortableRepositoryPathProblem = "absolute" | "backslash" | "control-character" | "empty-segment" | "invalid-character" | "invalid-segment" | "path-too-long" | "reserved-name" | "segment-too-long" | "trailing-dot" | "trailing-space";
|
|
2
|
+
export declare function portableRepositoryPathProblem(repositoryPath: string): PortableRepositoryPathProblem | undefined;
|
|
3
|
+
export declare function portableRepositoryPathIdentity(repositoryPath: string): string;
|
|
4
|
+
export declare function findPortableRepositoryPathCollision(repositoryPaths: readonly string[]): {
|
|
5
|
+
readonly first: string;
|
|
6
|
+
readonly second: string;
|
|
7
|
+
} | undefined;
|
|
8
|
+
//# sourceMappingURL=repository-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-path.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/repository-path.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,6BAA6B,GACrC,UAAU,GACV,WAAW,GACX,mBAAmB,GACnB,eAAe,GACf,mBAAmB,GACnB,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,gBAAgB,CAAC;AAYrB,wBAAgB,6BAA6B,CAC3C,cAAc,EAAE,MAAM,GACrB,6BAA6B,GAAG,SAAS,CAiD3C;AAED,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED,wBAAgB,mCAAmC,CACjD,eAAe,EAAE,SAAS,MAAM,EAAE,GACjC;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAWjE"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const WINDOWS_RESERVED_NAMES = new Set([
|
|
2
|
+
"AUX",
|
|
3
|
+
"CON",
|
|
4
|
+
"NUL",
|
|
5
|
+
"PRN",
|
|
6
|
+
...Array.from({ length: 9 }, (_unused, index) => `COM${index + 1}`),
|
|
7
|
+
...Array.from({ length: 9 }, (_unused, index) => `LPT${index + 1}`)
|
|
8
|
+
]);
|
|
9
|
+
const PORTABLE_SEGMENT = /^[A-Za-z0-9._@+-]+$/u;
|
|
10
|
+
function isPortableAbsolutePath(repositoryPath) {
|
|
11
|
+
return (repositoryPath.startsWith("/") ||
|
|
12
|
+
repositoryPath.startsWith("\\\\") ||
|
|
13
|
+
/^[A-Za-z]:[\\/]/u.test(repositoryPath));
|
|
14
|
+
}
|
|
15
|
+
export function portableRepositoryPathProblem(repositoryPath) {
|
|
16
|
+
if (repositoryPath.length > 512 ||
|
|
17
|
+
new TextEncoder().encode(repositoryPath).byteLength > 512) {
|
|
18
|
+
return "path-too-long";
|
|
19
|
+
}
|
|
20
|
+
if (isPortableAbsolutePath(repositoryPath)) {
|
|
21
|
+
return "absolute";
|
|
22
|
+
}
|
|
23
|
+
if (repositoryPath.includes("\\")) {
|
|
24
|
+
return "backslash";
|
|
25
|
+
}
|
|
26
|
+
const segments = repositoryPath.split("/");
|
|
27
|
+
for (const segment of segments) {
|
|
28
|
+
if (segment.length === 0) {
|
|
29
|
+
return "empty-segment";
|
|
30
|
+
}
|
|
31
|
+
if (segment === "." || segment === "..") {
|
|
32
|
+
return "invalid-segment";
|
|
33
|
+
}
|
|
34
|
+
if (segment.length > 255 ||
|
|
35
|
+
new TextEncoder().encode(segment).byteLength > 255) {
|
|
36
|
+
return "segment-too-long";
|
|
37
|
+
}
|
|
38
|
+
if (segment.endsWith(".")) {
|
|
39
|
+
return "trailing-dot";
|
|
40
|
+
}
|
|
41
|
+
if (segment.endsWith(" ")) {
|
|
42
|
+
return "trailing-space";
|
|
43
|
+
}
|
|
44
|
+
if (Array.from(segment).some((character) => {
|
|
45
|
+
const codePoint = character.codePointAt(0) ?? 0;
|
|
46
|
+
return codePoint < 32 || codePoint === 127;
|
|
47
|
+
})) {
|
|
48
|
+
return "control-character";
|
|
49
|
+
}
|
|
50
|
+
if (WINDOWS_RESERVED_NAMES.has((segment.split(".")[0] ?? "").toUpperCase())) {
|
|
51
|
+
return "reserved-name";
|
|
52
|
+
}
|
|
53
|
+
if (!PORTABLE_SEGMENT.test(segment)) {
|
|
54
|
+
return "invalid-character";
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
export function portableRepositoryPathIdentity(repositoryPath) {
|
|
60
|
+
return repositoryPath.normalize("NFC").toLowerCase();
|
|
61
|
+
}
|
|
62
|
+
export function findPortableRepositoryPathCollision(repositoryPaths) {
|
|
63
|
+
const observed = new Map();
|
|
64
|
+
for (const repositoryPath of repositoryPaths) {
|
|
65
|
+
const identity = portableRepositoryPathIdentity(repositoryPath);
|
|
66
|
+
const first = observed.get(identity);
|
|
67
|
+
if (first !== undefined) {
|
|
68
|
+
return { first, second: repositoryPath };
|
|
69
|
+
}
|
|
70
|
+
observed.set(identity, repositoryPath);
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=repository-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-path.js","sourceRoot":"","sources":["../../../../src/repository-mutation/application/model/repository-path.ts"],"names":[],"mappings":"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"}
|
package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { KnownFileDigest } from "../model/known-file-transaction.js";
|
|
2
|
+
import type { KnownFileTransactionEnvelopeV1 } from "../model/known-file-transaction-journal.js";
|
|
3
|
+
export interface InstalledKnownFileRecoveryBuild {
|
|
4
|
+
readonly ownerArtifact: {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly buildIdentity: KnownFileDigest;
|
|
7
|
+
readonly version: string;
|
|
8
|
+
};
|
|
9
|
+
readonly kernelArtifact: {
|
|
10
|
+
readonly name: string;
|
|
11
|
+
readonly buildIdentity: KnownFileDigest;
|
|
12
|
+
readonly version: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export type KnownFileRecoveryTransition = {
|
|
16
|
+
readonly action: "reject";
|
|
17
|
+
readonly code: "KNOWN_FILE_EXACT_BUILD_REQUIRED";
|
|
18
|
+
readonly message: "The exact owner and kernel artifacts that created this journal must recover it.";
|
|
19
|
+
} | {
|
|
20
|
+
readonly action: "resume-committed-cleanup";
|
|
21
|
+
} | {
|
|
22
|
+
readonly action: "rollback-applying";
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Classifies the next top-level transition for an already parsed and validated
|
|
26
|
+
* known-file v1 recovery envelope. Evidence parsing and all effects remain the
|
|
27
|
+
* responsibility of the calling adapter.
|
|
28
|
+
*/
|
|
29
|
+
export declare function classifyKnownFileRecoveryTransition(input: {
|
|
30
|
+
readonly envelope: KnownFileTransactionEnvelopeV1;
|
|
31
|
+
readonly installedBuild: InstalledKnownFileRecoveryBuild;
|
|
32
|
+
}): KnownFileRecoveryTransition;
|
|
33
|
+
//# sourceMappingURL=classify-known-file-recovery-transition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify-known-file-recovery-transition.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/policies/classify-known-file-recovery-transition.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAEjG,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,aAAa,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrH,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACvH;AAED,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,iFAAiF,CAAC;CACrG,GACD;IAAE,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAA;CAAE,GAC/C;IAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAE7C;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,QAAQ,CAAC,QAAQ,EAAE,8BAA8B,CAAC;IAClD,QAAQ,CAAC,cAAc,EAAE,+BAA+B,CAAC;CAC1D,GAAG,2BAA2B,CAe9B"}
|
package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classifies the next top-level transition for an already parsed and validated
|
|
3
|
+
* known-file v1 recovery envelope. Evidence parsing and all effects remain the
|
|
4
|
+
* responsibility of the calling adapter.
|
|
5
|
+
*/
|
|
6
|
+
export function classifyKnownFileRecoveryTransition(input) {
|
|
7
|
+
if (["name", "version", "buildIdentity"].some((field) => input.envelope.ownerArtifact[field] !==
|
|
8
|
+
input.installedBuild.ownerArtifact[field] ||
|
|
9
|
+
input.envelope.kernelArtifact[field] !==
|
|
10
|
+
input.installedBuild.kernelArtifact[field])) {
|
|
11
|
+
return {
|
|
12
|
+
action: "reject",
|
|
13
|
+
code: "KNOWN_FILE_EXACT_BUILD_REQUIRED",
|
|
14
|
+
message: "The exact owner and kernel artifacts that created this journal must recover it."
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return input.envelope.state === "COMMITTED"
|
|
18
|
+
? { action: "resume-committed-cleanup" }
|
|
19
|
+
: { action: "rollback-applying" };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=classify-known-file-recovery-transition.js.map
|
package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classify-known-file-recovery-transition.js","sourceRoot":"","sources":["../../../../src/repository-mutation/application/policies/classify-known-file-recovery-transition.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CAAC,KAGnD;IACC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACtD,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAkD,CAAC;QAC9E,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,KAAwD,CAAC;QAC9F,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAmD,CAAC;YAChF,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,KAAyD,CAAC,CAAC,EAAE,CAAC;QACpG,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,iFAAiF;SAC3F,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,KAAK,WAAW;QACzC,CAAC,CAAC,EAAE,MAAM,EAAE,0BAA0B,EAAE;QACxC,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { KnownFileTransactionEnvelopeV1, KnownFileTransactionJournalV1 } from "../model/known-file-transaction-journal.js";
|
|
2
|
+
export declare function compileKnownFileTransactionEnvelope(input: {
|
|
3
|
+
readonly ownerArtifact: KnownFileTransactionEnvelopeV1["ownerArtifact"];
|
|
4
|
+
readonly kernelArtifact: KnownFileTransactionEnvelopeV1["kernelArtifact"];
|
|
5
|
+
readonly journal: KnownFileTransactionJournalV1;
|
|
6
|
+
readonly state: KnownFileTransactionEnvelopeV1["state"];
|
|
7
|
+
}): KnownFileTransactionEnvelopeV1;
|
|
8
|
+
export declare function assertKnownFileTransactionEnvelope(value: unknown): asserts value is KnownFileTransactionEnvelopeV1;
|
|
9
|
+
//# sourceMappingURL=known-file-transaction-envelope.d.ts.map
|
package/dist/repository-mutation/application/policies/known-file-transaction-envelope.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-file-transaction-envelope.d.ts","sourceRoot":"","sources":["../../../../src/repository-mutation/application/policies/known-file-transaction-envelope.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,4CAA4C,CAAC;AAsNpD,wBAAgB,mCAAmC,CAAC,KAAK,EAAE;IACzD,QAAQ,CAAC,aAAa,EAAE,8BAA8B,CAAC,eAAe,CAAC,CAAC;IACxE,QAAQ,CAAC,cAAc,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IAC1E,QAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,8BAA8B,CAAC,OAAO,CAAC,CAAC;CACzD,GAAG,8BAA8B,CAejC;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,8BAA8B,CAqBjD"}
|