@agent-teams/engineering-foundation 0.17.0 → 0.19.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.
Files changed (167) hide show
  1. package/dist/capabilities/contract-json-schema-releases/module.d.ts.map +1 -1
  2. package/dist/capabilities/contract-json-schema-releases/module.js +4 -17
  3. package/dist/capabilities/contract-json-schema-releases/module.js.map +1 -1
  4. package/dist/capabilities/contract-protobuf-evolution/module.d.ts.map +1 -1
  5. package/dist/capabilities/contract-protobuf-evolution/module.js +4 -17
  6. package/dist/capabilities/contract-protobuf-evolution/module.js.map +1 -1
  7. package/dist/capabilities/documentation-local-references/module.d.ts.map +1 -1
  8. package/dist/capabilities/documentation-local-references/module.js +4 -17
  9. package/dist/capabilities/documentation-local-references/module.js.map +1 -1
  10. package/dist/capabilities/executable-specifications/module.d.ts.map +1 -1
  11. package/dist/capabilities/executable-specifications/module.js +4 -17
  12. package/dist/capabilities/executable-specifications/module.js.map +1 -1
  13. package/dist/capabilities/governance-architecture-decisions/module.d.ts.map +1 -1
  14. package/dist/capabilities/governance-architecture-decisions/module.js +4 -17
  15. package/dist/capabilities/governance-architecture-decisions/module.js.map +1 -1
  16. package/dist/capabilities/public-api-compatibility/module.d.ts.map +1 -1
  17. package/dist/capabilities/public-api-compatibility/module.js +4 -19
  18. package/dist/capabilities/public-api-compatibility/module.js.map +1 -1
  19. package/dist/capabilities/quality-gate-runner/module.d.ts.map +1 -1
  20. package/dist/capabilities/quality-gate-runner/module.js +4 -17
  21. package/dist/capabilities/quality-gate-runner/module.js.map +1 -1
  22. package/dist/capabilities/repository-agent-workflow/module.d.ts.map +1 -1
  23. package/dist/capabilities/repository-agent-workflow/module.js +4 -17
  24. package/dist/capabilities/repository-agent-workflow/module.js.map +1 -1
  25. package/dist/capabilities/repository-security-baseline/adapters/outbound/filesystem/workflow-evidence-parser.d.ts.map +1 -1
  26. package/dist/capabilities/repository-security-baseline/adapters/outbound/filesystem/workflow-evidence-parser.js +33 -0
  27. package/dist/capabilities/repository-security-baseline/adapters/outbound/filesystem/workflow-evidence-parser.js.map +1 -1
  28. package/dist/capabilities/repository-security-baseline/application/model/repository-security.d.ts +1 -0
  29. package/dist/capabilities/repository-security-baseline/application/model/repository-security.d.ts.map +1 -1
  30. package/dist/capabilities/repository-security-baseline/application/model/repository-security.js.map +1 -1
  31. package/dist/capabilities/repository-security-baseline/application/policies/dependency-review-ordering.js +1 -1
  32. package/dist/capabilities/repository-security-baseline/application/policies/dependency-review-ordering.js.map +1 -1
  33. package/dist/capabilities/repository-security-baseline/application/policies/evaluate-repository-security-tools.js +1 -1
  34. package/dist/capabilities/repository-security-baseline/application/policies/evaluate-repository-security-tools.js.map +1 -1
  35. package/dist/capabilities/repository-security-baseline/application/policies/evaluate-repository-security.js +1 -1
  36. package/dist/capabilities/repository-security-baseline/application/policies/evaluate-repository-security.js.map +1 -1
  37. package/dist/capabilities/repository-security-baseline/module.d.ts.map +1 -1
  38. package/dist/capabilities/repository-security-baseline/module.js +4 -17
  39. package/dist/capabilities/repository-security-baseline/module.js.map +1 -1
  40. package/dist/capabilities/source-dependencies/module.d.ts.map +1 -1
  41. package/dist/capabilities/source-dependencies/module.js +4 -19
  42. package/dist/capabilities/source-dependencies/module.js.map +1 -1
  43. package/dist/capabilities/suppression-governance/module.d.ts.map +1 -1
  44. package/dist/capabilities/suppression-governance/module.js +4 -19
  45. package/dist/capabilities/suppression-governance/module.js.map +1 -1
  46. package/dist/capabilities/workspace-dependency-declarations/module.d.ts.map +1 -1
  47. package/dist/capabilities/workspace-dependency-declarations/module.js +4 -18
  48. package/dist/capabilities/workspace-dependency-declarations/module.js.map +1 -1
  49. package/dist/capability-runtime.d.ts +8 -0
  50. package/dist/capability-runtime.d.ts.map +1 -1
  51. package/dist/capability-runtime.js +66 -0
  52. package/dist/capability-runtime.js.map +1 -1
  53. package/dist/check-runner.d.ts.map +1 -1
  54. package/dist/check-runner.js +16 -10
  55. package/dist/check-runner.js.map +1 -1
  56. package/dist/document-authoring/adapters/node/node-document-transaction-coordinator.d.ts.map +1 -1
  57. package/dist/document-authoring/adapters/node/node-document-transaction-coordinator.js +4 -26
  58. package/dist/document-authoring/adapters/node/node-document-transaction-coordinator.js.map +1 -1
  59. package/dist/document-authoring/index.d.ts +6 -1
  60. package/dist/document-authoring/index.d.ts.map +1 -1
  61. package/dist/document-authoring/index.js.map +1 -1
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +2 -0
  65. package/dist/index.js.map +1 -1
  66. package/dist/local-mode/attach-transaction.d.ts.map +1 -1
  67. package/dist/local-mode/attach-transaction.js +4 -2
  68. package/dist/local-mode/attach-transaction.js.map +1 -1
  69. package/dist/local-mode/index.d.ts +5 -0
  70. package/dist/local-mode/index.d.ts.map +1 -1
  71. package/dist/local-mode/index.js +5 -0
  72. package/dist/local-mode/index.js.map +1 -1
  73. package/dist/local-mode/inspection.d.ts.map +1 -1
  74. package/dist/local-mode/inspection.js +1 -6
  75. package/dist/local-mode/inspection.js.map +1 -1
  76. package/dist/local-mode/service.d.ts.map +1 -1
  77. package/dist/local-mode/service.js +4 -2
  78. package/dist/local-mode/service.js.map +1 -1
  79. package/dist/mutation/index.d.ts +8 -0
  80. package/dist/mutation/index.d.ts.map +1 -1
  81. package/dist/mutation/index.js.map +1 -1
  82. package/dist/mutation/qualification/index.d.ts +10 -0
  83. package/dist/mutation/qualification/index.d.ts.map +1 -0
  84. package/dist/mutation/qualification/index.js +6 -0
  85. package/dist/mutation/qualification/index.js.map +1 -0
  86. package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.d.ts +84 -0
  87. package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.d.ts.map +1 -0
  88. package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.js +232 -0
  89. package/dist/repository-mutation/adapters/node/node-known-file-apply-effects.js.map +1 -0
  90. package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.d.ts +9 -0
  91. package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.d.ts.map +1 -0
  92. package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.js +2 -0
  93. package/dist/repository-mutation/adapters/node/node-known-file-apply-faults.js.map +1 -0
  94. package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.d.ts +6 -0
  95. package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.d.ts.map +1 -0
  96. package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.js +30 -0
  97. package/dist/repository-mutation/adapters/node/node-known-file-apply-observation.js.map +1 -0
  98. package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.d.ts +11 -0
  99. package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.d.ts.map +1 -0
  100. package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.js +159 -0
  101. package/dist/repository-mutation/adapters/node/node-known-file-apply-operation.js.map +1 -0
  102. package/dist/repository-mutation/adapters/node/node-known-file-apply-state.d.ts +9 -0
  103. package/dist/repository-mutation/adapters/node/node-known-file-apply-state.d.ts.map +1 -0
  104. package/dist/repository-mutation/adapters/node/node-known-file-apply-state.js +21 -0
  105. package/dist/repository-mutation/adapters/node/node-known-file-apply-state.js.map +1 -0
  106. package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.d.ts +9 -0
  107. package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.d.ts.map +1 -0
  108. package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.js +203 -0
  109. package/dist/repository-mutation/adapters/node/node-known-file-recovery-cleanup.js.map +1 -0
  110. package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.d.ts +17 -0
  111. package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.d.ts.map +1 -0
  112. package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.js +22 -0
  113. package/dist/repository-mutation/adapters/node/node-known-file-recovery-executor.js.map +1 -0
  114. package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.d.ts +15 -0
  115. package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.d.ts.map +1 -0
  116. package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.js +47 -0
  117. package/dist/repository-mutation/adapters/node/node-known-file-recovery-observation.js.map +1 -0
  118. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.d.ts +29 -0
  119. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.d.ts.map +1 -0
  120. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.js +72 -0
  121. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured-cleanup.js.map +1 -0
  122. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.d.ts +31 -0
  123. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.d.ts.map +1 -0
  124. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.js +254 -0
  125. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage-captured.js.map +1 -0
  126. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.d.ts +13 -0
  127. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.d.ts.map +1 -0
  128. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.js +210 -0
  129. package/dist/repository-mutation/adapters/node/node-known-file-recovery-preimage.js.map +1 -0
  130. package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.d.ts +15 -0
  131. package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.d.ts.map +1 -0
  132. package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.js +172 -0
  133. package/dist/repository-mutation/adapters/node/node-known-file-recovery-retirement.js.map +1 -0
  134. package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.d.ts +12 -0
  135. package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.d.ts.map +1 -0
  136. package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.js +17 -0
  137. package/dist/repository-mutation/adapters/node/node-known-file-recovery-state.js.map +1 -0
  138. package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.d.ts +14 -0
  139. package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.d.ts.map +1 -0
  140. package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.js +23 -0
  141. package/dist/repository-mutation/adapters/node/node-known-file-transaction-lease-release.js.map +1 -0
  142. package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.d.ts +2 -5
  143. package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.d.ts.map +1 -1
  144. package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.js +30 -861
  145. package/dist/repository-mutation/adapters/node/node-known-file-transaction-recovery.js.map +1 -1
  146. package/dist/repository-mutation/adapters/node/node-known-file-transaction.d.ts +3 -9
  147. package/dist/repository-mutation/adapters/node/node-known-file-transaction.d.ts.map +1 -1
  148. package/dist/repository-mutation/adapters/node/node-known-file-transaction.js +44 -452
  149. package/dist/repository-mutation/adapters/node/node-known-file-transaction.js.map +1 -1
  150. package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.d.ts +25 -0
  151. package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.d.ts.map +1 -0
  152. package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js +19 -0
  153. package/dist/repository-mutation/application/policies/classify-known-file-recovery-transition.js.map +1 -0
  154. package/dist/scaffolding/adapters/node/filesystem-authority-workspace.d.ts.map +1 -1
  155. package/dist/scaffolding/adapters/node/filesystem-authority-workspace.js +8 -5
  156. package/dist/scaffolding/adapters/node/filesystem-authority-workspace.js.map +1 -1
  157. package/dist/transaction-coordination/application/model/transaction-status.d.ts +10 -0
  158. package/dist/transaction-coordination/application/model/transaction-status.d.ts.map +1 -1
  159. package/dist/transaction-coordination/application/release-foundation-transaction-lease.d.ts +6 -0
  160. package/dist/transaction-coordination/application/release-foundation-transaction-lease.d.ts.map +1 -0
  161. package/dist/transaction-coordination/application/release-foundation-transaction-lease.js +23 -0
  162. package/dist/transaction-coordination/application/release-foundation-transaction-lease.js.map +1 -0
  163. package/dist/unexpected-failure.d.ts +9 -0
  164. package/dist/unexpected-failure.d.ts.map +1 -0
  165. package/dist/unexpected-failure.js +105 -0
  166. package/dist/unexpected-failure.js.map +1 -0
  167. package/package.json +5 -1
@@ -1,425 +1,19 @@
1
- import { link, lstat, mkdir, open, realpath, rename, unlink } from "node:fs/promises";
2
- import { join } from "node:path";
3
1
  import { canonicalJson, sha256Json } from "../../../canonical-json.js";
4
2
  import { installedFoundationVersion } from "../../../package-version.js";
5
3
  import { createNodeFoundationTransactionCoordinator } from "../../../transaction-coordination/adapters/node/node-foundation-transaction-coordinator.js";
6
4
  import { installedFoundationBuildIdentity } from "../../../transaction-coordination/adapters/node/installed-foundation-build-identity.js";
7
5
  import { ensureFoundationStateDirectory } from "../../../transaction-coordination/adapters/node/node-foundation-state-directory.js";
8
- import { serializeKnownFileIdentity } from "../../application/model/known-file-transaction-journal.js";
9
6
  import { compileKnownFileTransactionEnvelope } from "../../application/policies/known-file-transaction-envelope.js";
10
7
  import { assertKnownFileTransactionPlan } from "../../application/policies/known-file-transaction-plan.js";
11
- import { captureFileHandleIdentity, pathMatchesRegularFileIdentity, readBoundedRegularFile } from "./node-bounded-regular-file.js";
12
- import { syncDirectoryStrictly } from "./node-directory-durability.js";
13
- import { cleanupCommittedKnownFileCaptures, prepareRollbackTemporary } from "./node-known-file-recovery-filesystem.js";
14
- import { isLexicallyContainedPath } from "./node-repository-path.js";
8
+ import { cleanupCommittedKnownFileCaptures } from "./node-known-file-recovery-filesystem.js";
9
+ import { observeInitialKnownFileJournal, verifyApplyingKnownFilePostimages, verifyCommittedKnownFilePostimages } from "./node-known-file-apply-observation.js";
10
+ import { executeKnownFileOperation } from "./node-known-file-apply-operation.js";
11
+ import { persistKnownFileApplyState } from "./node-known-file-apply-state.js";
12
+ import { canonicalKnownFileRoot, KnownFileTransactionError } from "./node-known-file-transaction-filesystem.js";
15
13
  import { NodeKnownFileTransactionJournalStore } from "./node-known-file-transaction-journal-store.js";
16
14
  import { inspectKnownFileTransactionBarrier } from "./node-known-file-transaction-inspection.js";
17
- import { canonicalKnownFileRoot, classifyKnownFileOperation, knownFileAliasEntry, knownFileCaptureDirectoryName, knownFileErrorCode, knownFileImageBytes, knownFileTemporaryName, KnownFileTransactionError, matchesKnownFileImage, maximumKnownFileEvidenceBytes, observeKnownFile, sameKnownFileIdentity } from "./node-known-file-transaction-filesystem.js";
15
+ import { releaseKnownFileTransactionLease } from "./node-known-file-transaction-lease-release.js";
18
16
  export { KnownFileTransactionError } from "./node-known-file-transaction-filesystem.js";
19
- async function initialJournal(root, plan) {
20
- const operations = [];
21
- for (const operation of plan.operations) {
22
- operations.push(classifyKnownFileOperation(operation, await observeKnownFile(root, operation.path, maximumKnownFileEvidenceBytes(operation))));
23
- }
24
- return Object.freeze({
25
- schemaVersion: 1,
26
- plan,
27
- operations: Object.freeze(operations),
28
- authorizedDirectories: Object.freeze([]),
29
- createdDirectories: Object.freeze([])
30
- });
31
- }
32
- function replaceOperation(journal, index, replacement) {
33
- return Object.freeze({
34
- ...journal,
35
- operations: Object.freeze(journal.operations.with(index, replacement))
36
- });
37
- }
38
- async function persist(store, stored, journal, state = "APPLYING") {
39
- const envelope = compileKnownFileTransactionEnvelope({
40
- foundation: stored.envelope.foundation,
41
- journal,
42
- state
43
- });
44
- stored.authority = await store.replace(stored.authority, envelope);
45
- stored.envelope = envelope;
46
- }
47
- async function ensureParentDirectories(options) {
48
- const segments = options.operationPath.split("/");
49
- segments.pop();
50
- let current = options.root;
51
- const traversed = [];
52
- for (const segment of segments) {
53
- traversed.push(segment);
54
- const repositoryPath = traversed.join("/");
55
- const exists = await knownFileAliasEntry(current, segment);
56
- if (exists === undefined) {
57
- const authorized = Object.freeze({
58
- ...options.stored.envelope.journal,
59
- authorizedDirectories: Object.freeze([
60
- ...options.stored.envelope.journal.authorizedDirectories,
61
- repositoryPath
62
- ])
63
- });
64
- await persist(options.store, options.stored, authorized);
65
- await options.faultInjector?.({
66
- phase: "after-directory-authorized",
67
- operationIndex: options.index,
68
- path: repositoryPath
69
- });
70
- await mkdir(join(current, segment), { mode: 0o755 });
71
- await syncDirectoryStrictly(current);
72
- const metadata = await lstat(join(current, segment), { bigint: true });
73
- if (!metadata.isDirectory() || metadata.isSymbolicLink()) {
74
- throw new KnownFileTransactionError("KNOWN_FILE_DIRECTORY_INVALID", `Created ancestor is not one real directory: ${repositoryPath}.`);
75
- }
76
- const identity = serializeKnownFileIdentity({
77
- birthtimeNs: metadata.birthtimeNs,
78
- dev: metadata.dev,
79
- ino: metadata.ino
80
- });
81
- await options.faultInjector?.({
82
- phase: "after-directory-created-unbound",
83
- operationIndex: options.index,
84
- path: repositoryPath
85
- });
86
- const journal = Object.freeze({
87
- ...options.stored.envelope.journal,
88
- authorizedDirectories: Object.freeze(options.stored.envelope.journal.authorizedDirectories.filter((path) => path !== repositoryPath)),
89
- createdDirectories: Object.freeze([
90
- ...options.stored.envelope.journal.createdDirectories,
91
- Object.freeze({ path: repositoryPath, identity })
92
- ])
93
- });
94
- await persist(options.store, options.stored, journal);
95
- await options.faultInjector?.({
96
- phase: "after-directory-created",
97
- operationIndex: options.index,
98
- path: repositoryPath
99
- });
100
- }
101
- current = join(current, segment);
102
- const metadata = await lstat(current);
103
- if (metadata.isSymbolicLink() || !metadata.isDirectory() ||
104
- !isLexicallyContainedPath(options.root, await realpath(current))) {
105
- throw new KnownFileTransactionError("KNOWN_FILE_ANCESTOR_INVALID", `Managed path ancestor changed: ${options.operationPath}.`);
106
- }
107
- }
108
- return current;
109
- }
110
- async function prepareTemporary(options) {
111
- const path = join(options.parent, knownFileTemporaryName(options.operation.path, options.planDigest, options.operationIndex));
112
- const handle = await open(path, "wx", 0o600).catch((error) => {
113
- throw new KnownFileTransactionError(knownFileErrorCode(error) === "EEXIST" ? "KNOWN_FILE_TEMPORARY_EXISTS" : "KNOWN_FILE_TEMPORARY_CREATE_FAILED", `Could not create the transaction-owned temporary for ${options.operation.path}.`, { cause: error });
114
- });
115
- try {
116
- await handle.writeFile(knownFileImageBytes(options.operation.postimage));
117
- await handle.chmod(options.operation.postimage.mode);
118
- await handle.sync();
119
- return { path, identity: await captureFileHandleIdentity(handle) };
120
- }
121
- finally {
122
- await handle.close();
123
- }
124
- }
125
- async function verifyTemporary(path, identity, image) {
126
- const observed = await readBoundedRegularFile(path, image.size);
127
- if (observed.outcome !== "read" || !sameKnownFileIdentity(observed.identity, identity) ||
128
- !matchesKnownFileImage({ state: "file", bytes: observed.bytes, identity: observed.identity, mode: observed.mode & 0o777 }, image)) {
129
- throw new KnownFileTransactionError("KNOWN_FILE_TEMPORARY_CHANGED", "Transaction-owned temporary changed before publication.");
130
- }
131
- }
132
- function capturePaths(options) {
133
- const directory = join(options.parent, knownFileCaptureDirectoryName(options.operation.path, options.planDigest, options.operationIndex));
134
- return {
135
- captured: join(directory, "preimage"),
136
- directory,
137
- retired: join(directory, "retired")
138
- };
139
- }
140
- async function prepareCaptureDirectory(options) {
141
- const paths = capturePaths(options);
142
- await mkdir(paths.directory, { mode: 0o700 }).catch((error) => {
143
- throw new KnownFileTransactionError(knownFileErrorCode(error) === "EEXIST"
144
- ? "KNOWN_FILE_CAPTURE_EXISTS"
145
- : "KNOWN_FILE_CAPTURE_CREATE_FAILED", `Could not create the transaction-owned capture for ${options.operation.path}.`, { cause: error });
146
- });
147
- await syncDirectoryStrictly(options.parent);
148
- const metadata = await lstat(paths.directory, { bigint: true });
149
- if (!metadata.isDirectory() || metadata.isSymbolicLink()) {
150
- throw new KnownFileTransactionError("KNOWN_FILE_CAPTURE_INVALID", `Transaction capture is not one real directory: ${options.operation.path}.`);
151
- }
152
- return {
153
- identity: {
154
- birthtimeNs: metadata.birthtimeNs,
155
- dev: metadata.dev,
156
- ino: metadata.ino
157
- },
158
- paths
159
- };
160
- }
161
- async function captureKnownPreimage(options) {
162
- const destination = join(options.root, ...options.operation.path.split("/"));
163
- await link(destination, options.capture.paths.captured).catch((error) => {
164
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `Could not capture the exact replacement preimage: ${options.operation.path}.`, { cause: error });
165
- });
166
- await syncDirectoryStrictly(options.capture.paths.directory);
167
- const captured = await readBoundedRegularFile(options.capture.paths.captured, maximumKnownFileEvidenceBytes(options.operation));
168
- const matchedPreimage = captured.outcome === "read"
169
- ? options.operation.precondition.acceptedPreimages.findIndex((image) => matchesKnownFileImage({
170
- state: "file",
171
- bytes: captured.bytes,
172
- identity: captured.identity,
173
- mode: captured.mode & 0o777
174
- }, image))
175
- : -1;
176
- if (captured.outcome !== "read" || captured.linkCount !== 2n || matchedPreimage < 0) {
177
- // This pathname is an alias created by this transaction. Removing the alias
178
- // cannot remove the editor's public pathname and never discards unknown bytes.
179
- await unlink(options.capture.paths.captured);
180
- await syncDirectoryStrictly(options.capture.paths.directory);
181
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `Captured replacement preimage is no longer accepted: ${options.operation.path}.`);
182
- }
183
- return { identity: captured.identity, matchedPreimage };
184
- }
185
- async function retireCapturedDestination(options) {
186
- await rename(options.destination, options.capture.paths.retired).catch((error) => {
187
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `Destination disappeared before identity-bound capture: ${options.operationPath}.`, { cause: error });
188
- });
189
- await syncDirectoryStrictly(options.capture.paths.directory);
190
- await syncDirectoryStrictly(options.parent);
191
- await options.faultInjector?.({
192
- phase: "after-destination-captured",
193
- operationIndex: options.index,
194
- path: options.operationPath
195
- });
196
- const retired = await readBoundedRegularFile(options.capture.paths.retired, 8 * 1024 * 1024);
197
- if (retired.outcome !== "read" ||
198
- !sameKnownFileIdentity(retired.identity, options.capturedIdentity)) {
199
- if (retired.outcome === "read") {
200
- try {
201
- await link(options.capture.paths.retired, options.destination);
202
- await syncDirectoryStrictly(options.parent);
203
- await unlink(options.capture.paths.retired);
204
- await syncDirectoryStrictly(options.capture.paths.directory);
205
- }
206
- catch (error) {
207
- if (knownFileErrorCode(error) !== "EEXIST") {
208
- throw error;
209
- }
210
- }
211
- }
212
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `A foreign destination appeared during identity-bound capture: ${options.operationPath}.`);
213
- }
214
- const stableCaptured = await readBoundedRegularFile(options.capture.paths.captured, options.preimage.size);
215
- if (stableCaptured.outcome !== "read" ||
216
- stableCaptured.linkCount !== 2n ||
217
- !sameKnownFileIdentity(stableCaptured.identity, options.capturedIdentity) ||
218
- !matchesKnownFileImage({
219
- state: "file", bytes: stableCaptured.bytes, identity: stableCaptured.identity,
220
- mode: stableCaptured.mode & 0o777
221
- }, options.preimage)) {
222
- await link(options.capture.paths.retired, options.destination).catch((error) => {
223
- throw new KnownFileTransactionError("KNOWN_FILE_RECOVERY_CONFLICT", `Mutated retired destination could not be restored: ${options.operationPath}.`, { cause: error });
224
- });
225
- await syncDirectoryStrictly(options.parent);
226
- await unlink(options.capture.paths.retired);
227
- await syncDirectoryStrictly(options.capture.paths.directory);
228
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `Captured replacement preimage changed through an open file handle: ${options.operationPath}.`);
229
- }
230
- await unlink(options.capture.paths.retired);
231
- await syncDirectoryStrictly(options.capture.paths.directory);
232
- }
233
- // oxlint-disable-next-line complexity, max-lines-per-function
234
- async function executeOperation(options) {
235
- const operation = options.stored.envelope.journal.plan.operations[options.index];
236
- let journalOperation = options.stored.envelope.journal.operations[options.index];
237
- if (journalOperation.state === "already-satisfied" || journalOperation.state === "published") {
238
- return;
239
- }
240
- if (journalOperation.state !== "pending") {
241
- throw new KnownFileTransactionError("KNOWN_FILE_RECOVERY_REQUIRED", `Operation ${operation.path} is already in progress and requires recovery.`);
242
- }
243
- const parent = await ensureParentDirectories({
244
- ...options,
245
- operationPath: operation.path
246
- });
247
- journalOperation = Object.freeze({ ...journalOperation, state: "temporary-authorized" });
248
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
249
- await options.faultInjector?.({
250
- phase: "after-temporary-authorized",
251
- operationIndex: options.index,
252
- path: operation.path
253
- });
254
- const temporary = await prepareTemporary({
255
- operation,
256
- operationIndex: options.index,
257
- parent,
258
- planDigest: options.stored.envelope.journal.plan.planDigest
259
- });
260
- await options.faultInjector?.({
261
- phase: "after-temporary-created-unbound",
262
- operationIndex: options.index,
263
- path: operation.path
264
- });
265
- journalOperation = Object.freeze({
266
- ...journalOperation,
267
- state: "temporary-ready",
268
- temporaryIdentity: serializeKnownFileIdentity(temporary.identity)
269
- });
270
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
271
- await options.faultInjector?.({
272
- phase: "after-temporary-synced",
273
- operationIndex: options.index,
274
- path: operation.path
275
- });
276
- await verifyTemporary(temporary.path, temporary.identity, operation.postimage);
277
- const destination = join(options.root, ...operation.path.split("/"));
278
- if (operation.precondition.state === "absent") {
279
- journalOperation = Object.freeze({ ...journalOperation, state: "publishing" });
280
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
281
- await options.faultInjector?.({
282
- phase: "after-operation-publishing",
283
- operationIndex: options.index,
284
- path: operation.path
285
- });
286
- await link(temporary.path, destination).catch((error) => {
287
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `Destination appeared during create CAS: ${operation.path}.`, { cause: error });
288
- });
289
- await options.faultInjector?.({
290
- phase: "after-postimage-linked",
291
- operationIndex: options.index,
292
- path: operation.path
293
- });
294
- await unlink(temporary.path);
295
- }
296
- else {
297
- journalOperation = Object.freeze({ ...journalOperation, state: "capture-authorized" });
298
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
299
- await options.faultInjector?.({
300
- phase: "after-capture-authorized",
301
- operationIndex: options.index,
302
- path: operation.path
303
- });
304
- const capture = await prepareCaptureDirectory({
305
- operation,
306
- operationIndex: options.index,
307
- parent,
308
- planDigest: options.stored.envelope.journal.plan.planDigest
309
- });
310
- await options.faultInjector?.({
311
- phase: "after-capture-created-unbound",
312
- operationIndex: options.index,
313
- path: operation.path
314
- });
315
- journalOperation = Object.freeze({
316
- ...journalOperation,
317
- captureDirectoryIdentity: serializeKnownFileIdentity(capture.identity),
318
- state: "capture-ready"
319
- });
320
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
321
- await options.faultInjector?.({
322
- phase: "after-capture-ready",
323
- operationIndex: options.index,
324
- path: operation.path
325
- });
326
- const captured = await captureKnownPreimage({
327
- capture,
328
- ...(options.faultInjector === undefined ? {} : { faultInjector: options.faultInjector }),
329
- index: options.index,
330
- operation: { ...operation, precondition: operation.precondition },
331
- root: options.root
332
- });
333
- await options.faultInjector?.({
334
- phase: "after-preimage-linked-unbound",
335
- operationIndex: options.index,
336
- path: operation.path
337
- });
338
- journalOperation = Object.freeze({
339
- ...journalOperation,
340
- capturedPreimageIdentity: serializeKnownFileIdentity(captured.identity),
341
- matchedPreimage: captured.matchedPreimage,
342
- state: "preimage-captured"
343
- });
344
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
345
- await options.faultInjector?.({
346
- phase: "after-preimage-captured",
347
- operationIndex: options.index,
348
- path: operation.path
349
- });
350
- const rollbackPath = join(parent, `.${operation.path.split("/").at(-1)}.agent-teams.rollback.${options.index}.tmp`);
351
- const rollbackIdentity = await prepareRollbackTemporary({
352
- operationPath: operation.path,
353
- path: rollbackPath,
354
- preimage: operation.precondition.acceptedPreimages[captured.matchedPreimage]
355
- });
356
- await options.faultInjector?.({
357
- phase: "after-rollback-temporary-created-unbound",
358
- operationIndex: options.index,
359
- path: operation.path
360
- });
361
- await syncDirectoryStrictly(parent);
362
- if (await pathMatchesRegularFileIdentity(rollbackPath, rollbackIdentity) !== "match") {
363
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `Rollback temporary changed before durable identity binding: ${operation.path}.`);
364
- }
365
- journalOperation = Object.freeze({
366
- ...journalOperation,
367
- rollbackTemporaryIdentity: serializeKnownFileIdentity(rollbackIdentity)
368
- });
369
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
370
- await options.faultInjector?.({
371
- phase: "after-rollback-temporary-ready",
372
- operationIndex: options.index,
373
- path: operation.path
374
- });
375
- await retireCapturedDestination({
376
- capture,
377
- capturedIdentity: captured.identity,
378
- destination,
379
- ...(options.faultInjector === undefined ? {} : { faultInjector: options.faultInjector }),
380
- index: options.index,
381
- operationPath: operation.path,
382
- parent,
383
- preimage: operation.precondition.acceptedPreimages[captured.matchedPreimage]
384
- });
385
- journalOperation = Object.freeze({ ...journalOperation, state: "destination-retired" });
386
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
387
- await options.faultInjector?.({
388
- phase: "after-destination-retired",
389
- operationIndex: options.index,
390
- path: operation.path
391
- });
392
- journalOperation = Object.freeze({ ...journalOperation, state: "publishing" });
393
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
394
- await options.faultInjector?.({
395
- phase: "after-operation-publishing",
396
- operationIndex: options.index,
397
- path: operation.path
398
- });
399
- await link(temporary.path, destination).catch((error) => {
400
- throw new KnownFileTransactionError("KNOWN_FILE_CAS_MISMATCH", `Destination appeared during replacement publication: ${operation.path}.`, { cause: error });
401
- });
402
- await options.faultInjector?.({
403
- phase: "after-postimage-linked",
404
- operationIndex: options.index,
405
- path: operation.path
406
- });
407
- await unlink(temporary.path);
408
- }
409
- await syncDirectoryStrictly(parent);
410
- const published = await observeKnownFile(options.root, operation.path, operation.postimage.size);
411
- if (!matchesKnownFileImage(published, operation.postimage) || published.identity === undefined ||
412
- !sameKnownFileIdentity(published.identity, temporary.identity)) {
413
- throw new KnownFileTransactionError("KNOWN_FILE_POSTIMAGE_INVALID", `Published postimage failed exact verification: ${operation.path}.`);
414
- }
415
- journalOperation = Object.freeze({ ...journalOperation, state: "published" });
416
- await persist(options.store, options.stored, replaceOperation(options.stored.envelope.journal, options.index, journalOperation));
417
- await options.faultInjector?.({
418
- phase: "after-operation-published",
419
- operationIndex: options.index,
420
- path: operation.path
421
- });
422
- }
423
17
  export function compileKnownFileTransactionReceipt(journal, outcome) {
424
18
  const operations = journal.operations.map((entry, index) => {
425
19
  const planOperation = journal.plan.operations[index];
@@ -447,18 +41,28 @@ export function compileKnownFileTransactionReceipt(journal, outcome) {
447
41
  })
448
42
  });
449
43
  }
450
- export async function verifyCommittedKnownFilePostimages(root, journal) {
451
- for (const operation of journal.plan.operations) {
452
- if (!matchesKnownFileImage(await observeKnownFile(root, operation.path, operation.postimage.size), operation.postimage)) {
453
- throw new KnownFileTransactionError("KNOWN_FILE_COMMITTED_DRIFT", `Committed postimage changed before journal retirement: ${operation.path}.`);
454
- }
44
+ export { verifyCommittedKnownFilePostimages } from "./node-known-file-apply-observation.js";
45
+ async function executeKnownFileApply(options) {
46
+ for (let index = 0; index < options.stored.envelope.journal.plan.operations.length; index += 1) {
47
+ await executeKnownFileOperation({ ...options, index });
455
48
  }
49
+ await verifyApplyingKnownFilePostimages(options.root, options.stored.envelope.journal);
50
+ await persistKnownFileApplyState(options.store, options.stored, options.stored.envelope.journal, "COMMITTED");
51
+ await options.faultInjector?.({ phase: "after-journal-committed" });
52
+ await verifyCommittedKnownFilePostimages(options.root, options.stored.envelope.journal);
53
+ await cleanupCommittedKnownFileCaptures(options.root, options.stored.envelope.journal, options.faultInjector);
54
+ await verifyCommittedKnownFilePostimages(options.root, options.stored.envelope.journal);
55
+ return compileKnownFileTransactionReceipt(options.stored.envelope.journal, "applied");
456
56
  }
457
- async function verifyApplyingKnownFilePostimages(root, journal) {
458
- for (const operation of journal.plan.operations) {
459
- if (!matchesKnownFileImage(await observeKnownFile(root, operation.path, operation.postimage.size), operation.postimage)) {
460
- throw new KnownFileTransactionError("KNOWN_FILE_PRECOMMIT_DRIFT", `Transaction postimage changed before commit: ${operation.path}.`);
461
- }
57
+ async function refreshBarrierRetention(store) {
58
+ if (store === undefined) {
59
+ return false;
60
+ }
61
+ try {
62
+ return await store.read() !== undefined;
63
+ }
64
+ catch {
65
+ return true;
462
66
  }
463
67
  }
464
68
  export async function applyKnownFileTransaction(options) {
@@ -471,7 +75,7 @@ export async function applyKnownFileTransaction(options) {
471
75
  if (barrier.state !== "idle" && barrier.code === "KNOWN_FILE_RECOVERY_REQUIRED") {
472
76
  throw new KnownFileTransactionError(barrier.code, barrier.message);
473
77
  }
474
- const optimisticJournal = await initialJournal(root, options.plan);
78
+ const optimisticJournal = await observeInitialKnownFileJournal(root, options.plan);
475
79
  if (barrier.state === "idle" &&
476
80
  optimisticJournal.operations.every(({ state }) => state === "already-satisfied")) {
477
81
  return compileKnownFileTransactionReceipt(optimisticJournal, "already-satisfied");
@@ -480,9 +84,10 @@ export async function applyKnownFileTransaction(options) {
480
84
  const lease = await coordinator.acquire({ requestedMutation: "known-file-transaction" });
481
85
  let retainBarrier = false;
482
86
  let store;
87
+ let primaryFailure;
483
88
  try {
484
89
  await options.faultInjector?.({ phase: "after-barrier-acquired" });
485
- const journal = await initialJournal(root, options.plan);
90
+ const journal = await observeInitialKnownFileJournal(root, options.plan);
486
91
  if (journal.operations.every(({ state }) => state === "already-satisfied")) {
487
92
  return compileKnownFileTransactionReceipt(journal, "already-satisfied");
488
93
  }
@@ -495,49 +100,36 @@ export async function applyKnownFileTransaction(options) {
495
100
  journal,
496
101
  state: "APPLYING"
497
102
  });
498
- const stateDirectory = await ensureFoundationStateDirectory(root);
499
- store = new NodeKnownFileTransactionJournalStore(stateDirectory);
103
+ store = new NodeKnownFileTransactionJournalStore(await ensureFoundationStateDirectory(root));
500
104
  const stored = {
501
105
  authority: await store.create(envelope),
502
106
  envelope
503
107
  };
504
108
  retainBarrier = true;
505
109
  await options.faultInjector?.({ phase: "after-journal-created" });
506
- for (let index = 0; index < options.plan.operations.length; index += 1) {
507
- await executeOperation({
508
- ...(options.faultInjector === undefined ? {} : { faultInjector: options.faultInjector }),
509
- index,
510
- root,
511
- store,
512
- stored
513
- });
514
- }
515
- await verifyApplyingKnownFilePostimages(root, stored.envelope.journal);
516
- await persist(store, stored, stored.envelope.journal, "COMMITTED");
517
- await options.faultInjector?.({ phase: "after-journal-committed" });
518
- await verifyCommittedKnownFilePostimages(root, stored.envelope.journal);
519
- await cleanupCommittedKnownFileCaptures(root, stored.envelope.journal, options.faultInjector);
520
- await verifyCommittedKnownFilePostimages(root, stored.envelope.journal);
521
- const result = compileKnownFileTransactionReceipt(stored.envelope.journal, "applied");
110
+ const result = await executeKnownFileApply({
111
+ ...(options.faultInjector === undefined ? {} : { faultInjector: options.faultInjector }),
112
+ root,
113
+ store,
114
+ stored
115
+ });
522
116
  await store.remove(stored.authority);
523
117
  await options.faultInjector?.({ phase: "after-journal-retired" });
524
118
  retainBarrier = false;
525
119
  return result;
526
120
  }
527
121
  catch (error) {
528
- if (store !== undefined) {
529
- try {
530
- retainBarrier = await store.read() !== undefined;
531
- }
532
- catch {
533
- // Unreadable evidence must stay protected for manual inspection.
534
- retainBarrier = true;
535
- }
536
- }
122
+ retainBarrier = await refreshBarrierRetention(store);
123
+ primaryFailure = { reason: error };
537
124
  throw error;
538
125
  }
539
126
  finally {
540
- await lease.release({ retainTransactionBarrier: retainBarrier });
127
+ await releaseKnownFileTransactionLease({
128
+ jointFailureMessage: "Known-file apply and transaction lease release both failed.",
129
+ lease,
130
+ ...(primaryFailure === undefined ? {} : { primaryFailure }),
131
+ retainTransactionBarrier: retainBarrier
132
+ });
541
133
  }
542
134
  }
543
135
  export function canonicalKnownFileTransactionReceipt(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"node-known-file-transaction.js","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-known-file-transaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-known-file-transaction.js","sourceRoot":"","sources":["../../../../src/repository-mutation/adapters/node/node-known-file-transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
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 buildIdentity: KnownFileDigest;
5
+ readonly version: string;
6
+ }
7
+ export type KnownFileRecoveryTransition = {
8
+ readonly action: "reject";
9
+ readonly code: "KNOWN_FILE_EXACT_BUILD_REQUIRED";
10
+ readonly message: "The exact Foundation build that created this journal must recover it.";
11
+ } | {
12
+ readonly action: "resume-committed-cleanup";
13
+ } | {
14
+ readonly action: "rollback-applying";
15
+ };
16
+ /**
17
+ * Classifies the next top-level transition for an already parsed and validated
18
+ * known-file v1 recovery envelope. Evidence parsing and all effects remain the
19
+ * responsibility of the calling adapter.
20
+ */
21
+ export declare function classifyKnownFileRecoveryTransition(input: {
22
+ readonly envelope: KnownFileTransactionEnvelopeV1;
23
+ readonly installedBuild: InstalledKnownFileRecoveryBuild;
24
+ }): KnownFileRecoveryTransition;
25
+ //# 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,eAAe,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,iCAAiC,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,uEAAuE,CAAC;CAC3F,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,CAY9B"}