@superbee/core 0.1.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 (145) hide show
  1. package/dist/backend.d.ts +77 -0
  2. package/dist/backend.d.ts.map +1 -0
  3. package/dist/backend.js +380 -0
  4. package/dist/backend.js.map +1 -0
  5. package/dist/bundle.d.ts +38 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/bundle.js +107 -0
  8. package/dist/bundle.js.map +1 -0
  9. package/dist/content-type.d.ts +72 -0
  10. package/dist/content-type.d.ts.map +1 -0
  11. package/dist/content-type.js +149 -0
  12. package/dist/content-type.js.map +1 -0
  13. package/dist/document-mutation.d.ts +83 -0
  14. package/dist/document-mutation.d.ts.map +1 -0
  15. package/dist/document-mutation.js +319 -0
  16. package/dist/document-mutation.js.map +1 -0
  17. package/dist/document-precondition.d.ts +62 -0
  18. package/dist/document-precondition.d.ts.map +1 -0
  19. package/dist/document-precondition.js +134 -0
  20. package/dist/document-precondition.js.map +1 -0
  21. package/dist/document-write-policy.d.ts +42 -0
  22. package/dist/document-write-policy.d.ts.map +1 -0
  23. package/dist/document-write-policy.js +134 -0
  24. package/dist/document-write-policy.js.map +1 -0
  25. package/dist/engine.d.ts +48 -0
  26. package/dist/engine.d.ts.map +1 -0
  27. package/dist/engine.js +209 -0
  28. package/dist/engine.js.map +1 -0
  29. package/dist/errors.d.ts +36 -0
  30. package/dist/errors.d.ts.map +1 -0
  31. package/dist/errors.js +50 -0
  32. package/dist/errors.js.map +1 -0
  33. package/dist/filesystem-identity.d.ts +208 -0
  34. package/dist/filesystem-identity.d.ts.map +1 -0
  35. package/dist/filesystem-identity.js +675 -0
  36. package/dist/filesystem-identity.js.map +1 -0
  37. package/dist/filesystem-lock.d.ts +65 -0
  38. package/dist/filesystem-lock.d.ts.map +1 -0
  39. package/dist/filesystem-lock.js +460 -0
  40. package/dist/filesystem-lock.js.map +1 -0
  41. package/dist/freshness.d.ts +31 -0
  42. package/dist/freshness.d.ts.map +1 -0
  43. package/dist/freshness.js +98 -0
  44. package/dist/freshness.js.map +1 -0
  45. package/dist/frontmatter-contract.d.ts +17 -0
  46. package/dist/frontmatter-contract.d.ts.map +1 -0
  47. package/dist/frontmatter-contract.js +29 -0
  48. package/dist/frontmatter-contract.js.map +1 -0
  49. package/dist/frontmatter.d.ts +30 -0
  50. package/dist/frontmatter.d.ts.map +1 -0
  51. package/dist/frontmatter.js +115 -0
  52. package/dist/frontmatter.js.map +1 -0
  53. package/dist/index-marker.d.ts +3 -0
  54. package/dist/index-marker.d.ts.map +1 -0
  55. package/dist/index-marker.js +3 -0
  56. package/dist/index-marker.js.map +1 -0
  57. package/dist/index-projection.d.ts +79 -0
  58. package/dist/index-projection.d.ts.map +1 -0
  59. package/dist/index-projection.js +245 -0
  60. package/dist/index-projection.js.map +1 -0
  61. package/dist/index.d.ts +68 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +110 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/kinds-load.d.ts +13 -0
  66. package/dist/kinds-load.d.ts.map +1 -0
  67. package/dist/kinds-load.js +34 -0
  68. package/dist/kinds-load.js.map +1 -0
  69. package/dist/kinds.d.ts +241 -0
  70. package/dist/kinds.d.ts.map +1 -0
  71. package/dist/kinds.js +1001 -0
  72. package/dist/kinds.js.map +1 -0
  73. package/dist/links.d.ts +62 -0
  74. package/dist/links.d.ts.map +1 -0
  75. package/dist/links.js +203 -0
  76. package/dist/links.js.map +1 -0
  77. package/dist/meaningful-change-time.d.ts +11 -0
  78. package/dist/meaningful-change-time.d.ts.map +1 -0
  79. package/dist/meaningful-change-time.js +16 -0
  80. package/dist/meaningful-change-time.js.map +1 -0
  81. package/dist/memory-backend.d.ts +55 -0
  82. package/dist/memory-backend.d.ts.map +1 -0
  83. package/dist/memory-backend.js +214 -0
  84. package/dist/memory-backend.js.map +1 -0
  85. package/dist/mutation-attribution.d.ts +19 -0
  86. package/dist/mutation-attribution.d.ts.map +1 -0
  87. package/dist/mutation-attribution.js +34 -0
  88. package/dist/mutation-attribution.js.map +1 -0
  89. package/dist/mutation.d.ts +89 -0
  90. package/dist/mutation.d.ts.map +1 -0
  91. package/dist/mutation.js +94 -0
  92. package/dist/mutation.js.map +1 -0
  93. package/dist/page.d.ts +87 -0
  94. package/dist/page.d.ts.map +1 -0
  95. package/dist/page.js +151 -0
  96. package/dist/page.js.map +1 -0
  97. package/dist/paths.d.ts +78 -0
  98. package/dist/paths.d.ts.map +1 -0
  99. package/dist/paths.js +148 -0
  100. package/dist/paths.js.map +1 -0
  101. package/dist/portable-frontmatter.d.ts +8 -0
  102. package/dist/portable-frontmatter.d.ts.map +1 -0
  103. package/dist/portable-frontmatter.js +35 -0
  104. package/dist/portable-frontmatter.js.map +1 -0
  105. package/dist/publication-filesystem.d.ts +6 -0
  106. package/dist/publication-filesystem.d.ts.map +1 -0
  107. package/dist/publication-filesystem.js +6 -0
  108. package/dist/publication-filesystem.js.map +1 -0
  109. package/dist/query-filter.d.ts +12 -0
  110. package/dist/query-filter.d.ts.map +1 -0
  111. package/dist/query-filter.js +29 -0
  112. package/dist/query-filter.js.map +1 -0
  113. package/dist/query-selection.d.ts +25 -0
  114. package/dist/query-selection.d.ts.map +1 -0
  115. package/dist/query-selection.js +48 -0
  116. package/dist/query-selection.js.map +1 -0
  117. package/dist/remote-backend.d.ts +152 -0
  118. package/dist/remote-backend.d.ts.map +1 -0
  119. package/dist/remote-backend.js +505 -0
  120. package/dist/remote-backend.js.map +1 -0
  121. package/dist/remote.d.ts +4 -0
  122. package/dist/remote.d.ts.map +1 -0
  123. package/dist/remote.js +3 -0
  124. package/dist/remote.js.map +1 -0
  125. package/dist/storage.d.ts +7 -0
  126. package/dist/storage.d.ts.map +1 -0
  127. package/dist/storage.js +6 -0
  128. package/dist/storage.js.map +1 -0
  129. package/dist/types.d.ts +438 -0
  130. package/dist/types.d.ts.map +1 -0
  131. package/dist/types.js +12 -0
  132. package/dist/types.js.map +1 -0
  133. package/dist/validation.d.ts +22 -0
  134. package/dist/validation.d.ts.map +1 -0
  135. package/dist/validation.js +12 -0
  136. package/dist/validation.js.map +1 -0
  137. package/dist/version-transport.d.ts +13 -0
  138. package/dist/version-transport.d.ts.map +1 -0
  139. package/dist/version-transport.js +26 -0
  140. package/dist/version-transport.js.map +1 -0
  141. package/dist/versioning.d.ts +48 -0
  142. package/dist/versioning.d.ts.map +1 -0
  143. package/dist/versioning.js +62 -0
  144. package/dist/versioning.js.map +1 -0
  145. package/package.json +84 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-identity.js","sourceRoot":"","sources":["../src/filesystem-identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ export interface FilesystemMutationLockOwner {
2
+ pid: number;
3
+ hostname: string;
4
+ created_at_ms: number;
5
+ token: string;
6
+ target: string;
7
+ }
8
+ export interface FilesystemMutationLockOptions {
9
+ waitMs?: number;
10
+ pollMs?: number;
11
+ /** Portable tree that must never contain runtime lock state. FilesystemBackend supplies its root. */
12
+ portableRoot?: string;
13
+ /** Explicit runtime namespace for isolated consumers/tests; the default remains per-user and external. */
14
+ lockRoot?: string;
15
+ }
16
+ export interface FilesystemMutationLockRootFacts {
17
+ directory: boolean;
18
+ symbolicLink: boolean;
19
+ ownerUid: number;
20
+ expectedUid: number | undefined;
21
+ mode: number;
22
+ enforcePrivateMode: boolean;
23
+ }
24
+ export declare class FilesystemMutationLockError extends Error {
25
+ readonly lockPath: string;
26
+ readonly owner: FilesystemMutationLockOwner | null;
27
+ readonly stale: boolean;
28
+ readonly malformed: boolean;
29
+ constructor(message: string, details: {
30
+ lockPath: string;
31
+ owner: FilesystemMutationLockOwner | null;
32
+ stale: boolean;
33
+ malformed: boolean;
34
+ });
35
+ }
36
+ /** Stable per-user runtime namespace outside `portableRoot`; refuses an impossible root bundle. */
37
+ export declare function filesystemMutationLockRoot(portableRoot?: string): string;
38
+ /** Runtime lock directory for one already-canonical physical target. */
39
+ export declare function filesystemMutationLockPath(target: string, portableRoot?: string): string;
40
+ /** @internal Pure metadata validator shared by acquisition diagnostics and focused tests. */
41
+ export declare function parseFilesystemMutationLockOwner(value: unknown): FilesystemMutationLockOwner | null;
42
+ /** @internal Pure policy seam so ownership refusal is testable without privileged filesystem setup. */
43
+ export declare function isPrivateFilesystemMutationLockRoot(facts: FilesystemMutationLockRootFacts): boolean;
44
+ /**
45
+ * Acquire one same-user cross-process mutation lock for `target`.
46
+ *
47
+ * `mkdir` is the atomic claim. Locks live in a private per-user runtime namespace keyed by the
48
+ * canonical target path, never inside the portable bundle: Git staging, establishment snapshots,
49
+ * copying, and packaging cannot capture them. A valid same-host lock whose PID is absent is moved
50
+ * to a token-fenced quarantine and retried; malformed, foreign-host, and live locks remain
51
+ * fail-closed.
52
+ */
53
+ export declare function acquireFilesystemMutationLock(target: string, options?: FilesystemMutationLockOptions): Promise<() => Promise<void>>;
54
+ /** @internal Runtime lock directory for one identity key; the key is the whole path component. */
55
+ export declare function filesystemIdentityLockPath(key: string, portableRoot?: string): string;
56
+ /**
57
+ * @internal Claim the same-user cross-process lock for an identity key that the caller derived
58
+ * purely (`filesystem-identity.ts`). Unlike {@link acquireFilesystemMutationLock} this creates no
59
+ * target directory and resolves no target path: the bundle stays exactly as it was until the
60
+ * caller decides to mutate it. `identity` is recorded as the owner's `target` for diagnosis.
61
+ */
62
+ export declare function acquireFilesystemIdentityLock(key: string, identity: string, options?: FilesystemMutationLockOptions): Promise<() => Promise<void>>;
63
+ /** Run `fn` while holding the same-user cross-process mutation lock for `target`. */
64
+ export declare function withFilesystemMutationLock<T>(target: string, fn: () => Promise<T>, options?: FilesystemMutationLockOptions): Promise<T>;
65
+ //# sourceMappingURL=filesystem-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-lock.d.ts","sourceRoot":"","sources":["../src/filesystem-lock.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,+BAA+B;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;gBAG1B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAAC;QAC1C,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;KACpB;CASJ;AA2BD,mGAAmG;AACnG,wBAAgB,0BAA0B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBxE;AAcD,wEAAwE;AACxE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAExF;AAWD,6FAA6F;AAC7F,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,2BAA2B,GAAG,IAAI,CAwBnG;AAuED,uGAAuG;AACvG,wBAAgB,mCAAmC,CAAC,KAAK,EAAE,+BAA+B,GAAG,OAAO,CAInG;AAgOD;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAwB9B;AAQD,kGAAkG;AAClG,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrF;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAO9B;AAED,qFAAqF;AACrF,wBAAsB,0BAA0B,CAAC,CAAC,EAChD,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC,CAAC,CAAC,CAOZ"}
@@ -0,0 +1,460 @@
1
+ import { promises as fs, realpathSync } from "node:fs";
2
+ import { homedir, hostname, userInfo } from "node:os";
3
+ import path from "node:path";
4
+ import { createHash, randomUUID } from "node:crypto";
5
+ const OWNER_FILE = "owner.json";
6
+ const DEFAULT_WAIT_MS = 5_000;
7
+ const DEFAULT_POLL_MS = 25;
8
+ export class FilesystemMutationLockError extends Error {
9
+ lockPath;
10
+ owner;
11
+ stale;
12
+ malformed;
13
+ constructor(message, details) {
14
+ super(message);
15
+ this.name = "FilesystemMutationLockError";
16
+ this.lockPath = details.lockPath;
17
+ this.owner = details.owner;
18
+ this.stale = details.stale;
19
+ this.malformed = details.malformed;
20
+ }
21
+ }
22
+ function runtimeOwnerKey() {
23
+ const uid = process.getuid?.();
24
+ if (uid !== undefined)
25
+ return `uid-${uid}`;
26
+ let username = "unknown";
27
+ try {
28
+ username = userInfo().username;
29
+ }
30
+ catch {
31
+ // Windows temp directories are already user-scoped; this is only a stable path segment.
32
+ }
33
+ return `user-${createHash("sha256").update(username).digest("hex").slice(0, 16)}`;
34
+ }
35
+ function canonicalExistingPath(value) {
36
+ try {
37
+ return realpathSync(value);
38
+ }
39
+ catch {
40
+ return path.resolve(value);
41
+ }
42
+ }
43
+ function pathContains(root, candidate) {
44
+ const rel = path.relative(root, candidate);
45
+ return rel === "" || (!rel.startsWith("..") && !path.isAbsolute(rel));
46
+ }
47
+ /** Stable per-user runtime namespace outside `portableRoot`; refuses an impossible root bundle. */
48
+ export function filesystemMutationLockRoot(portableRoot) {
49
+ // POSIX TMPDIR is process/session-scoped (notably shell vs launchd on macOS). Use the
50
+ // system-wide sticky directory so every same-user writer derives one lock namespace. Windows
51
+ // temp variables are process-scoped too, so use the per-user LocalAppData known folder instead
52
+ // of tmpdir(); otherwise two shells can derive different locks for the same portable target.
53
+ const runtimeParent = process.platform === "win32"
54
+ ? path.join(homedir(), "AppData", "Local")
55
+ : "/tmp";
56
+ const tempParent = canonicalExistingPath(runtimeParent);
57
+ const homeParent = canonicalExistingPath(homedir());
58
+ const ownerKey = runtimeOwnerKey();
59
+ const candidates = [
60
+ path.join(tempParent, `agentstate-lite-mutation-locks-${ownerKey}`),
61
+ path.join(homeParent, ".agentstate", `mutation-locks-${ownerKey}`),
62
+ ];
63
+ if (portableRoot === undefined)
64
+ return candidates[0];
65
+ const portable = canonicalExistingPath(portableRoot);
66
+ const selected = candidates.find((candidate) => !pathContains(portable, candidate));
67
+ if (selected)
68
+ return selected;
69
+ throw new FilesystemMutationLockError(`cannot place filesystem mutation locks outside portable root '${portable}'`, { lockPath: portable, owner: null, stale: false, malformed: true });
70
+ }
71
+ function explicitFilesystemMutationLockRoot(root, portableRoot) {
72
+ const requested = path.resolve(root);
73
+ if (portableRoot === undefined)
74
+ return requested;
75
+ const portable = canonicalExistingPath(portableRoot);
76
+ if (!pathContains(portable, canonicalExistingPath(requested)))
77
+ return requested;
78
+ throw new FilesystemMutationLockError(`cannot place filesystem mutation locks outside portable root '${portable}'`, { lockPath: portable, owner: null, stale: false, malformed: true });
79
+ }
80
+ /** Runtime lock directory for one already-canonical physical target. */
81
+ export function filesystemMutationLockPath(target, portableRoot) {
82
+ return filesystemMutationLockPathInRoot(target, filesystemMutationLockRoot(portableRoot));
83
+ }
84
+ function filesystemMutationLockPathInRoot(target, lockRoot) {
85
+ const digest = createHash("sha256").update(path.resolve(target)).digest("hex");
86
+ return path.join(lockRoot, `${digest}.lock`);
87
+ }
88
+ function isObject(value) {
89
+ return value !== null && typeof value === "object" && !Array.isArray(value);
90
+ }
91
+ /** @internal Pure metadata validator shared by acquisition diagnostics and focused tests. */
92
+ export function parseFilesystemMutationLockOwner(value) {
93
+ if (!isObject(value))
94
+ return null;
95
+ if (typeof value.pid !== "number" ||
96
+ !Number.isSafeInteger(value.pid) ||
97
+ value.pid <= 0 ||
98
+ typeof value.hostname !== "string" ||
99
+ value.hostname.length === 0 ||
100
+ typeof value.created_at_ms !== "number" ||
101
+ !Number.isFinite(value.created_at_ms) ||
102
+ typeof value.token !== "string" ||
103
+ value.token.length === 0 ||
104
+ typeof value.target !== "string" ||
105
+ value.target.length === 0) {
106
+ return null;
107
+ }
108
+ return {
109
+ pid: value.pid,
110
+ hostname: value.hostname,
111
+ created_at_ms: value.created_at_ms,
112
+ token: value.token,
113
+ target: value.target,
114
+ };
115
+ }
116
+ async function readOwner(lockPath) {
117
+ try {
118
+ return parseFilesystemMutationLockOwner(JSON.parse(await fs.readFile(path.join(lockPath, OWNER_FILE), "utf8")));
119
+ }
120
+ catch {
121
+ return null;
122
+ }
123
+ }
124
+ function processExists(pid) {
125
+ try {
126
+ process.kill(pid, 0);
127
+ return true;
128
+ }
129
+ catch (err) {
130
+ return err.code !== "ESRCH";
131
+ }
132
+ }
133
+ function staleLockQuarantinePath(lockPath, owner) {
134
+ const tokenHash = createHash("sha256").update(owner.token).digest("hex");
135
+ return `${lockPath}.stale-${tokenHash}`;
136
+ }
137
+ async function pathExists(candidate) {
138
+ try {
139
+ await fs.lstat(candidate);
140
+ return true;
141
+ }
142
+ catch (err) {
143
+ if (err.code === "ENOENT")
144
+ return false;
145
+ throw err;
146
+ }
147
+ }
148
+ /**
149
+ * Move one demonstrably dead same-host lock aside without deleting its evidence. The destination
150
+ * is stable for the dead owner's token and remains non-empty, so a delayed competing reclaimer
151
+ * cannot rename a replacement live lock over it on either POSIX or Windows.
152
+ */
153
+ async function quarantineStaleLock(lockPath, owner) {
154
+ if (owner.hostname !== hostname() || processExists(owner.pid))
155
+ return false;
156
+ const quarantinePath = staleLockQuarantinePath(lockPath, owner);
157
+ try {
158
+ await fs.rename(lockPath, quarantinePath);
159
+ return true;
160
+ }
161
+ catch (err) {
162
+ const code = err.code;
163
+ if (code === "ENOENT")
164
+ return false;
165
+ if (await pathExists(quarantinePath))
166
+ return false;
167
+ if (process.platform === "win32" && WINDOWS_DIRECTORY_CONTENTION_CODES.has(code ?? ""))
168
+ return false;
169
+ throw err;
170
+ }
171
+ }
172
+ function delay(ms) {
173
+ return new Promise((resolve) => setTimeout(resolve, ms));
174
+ }
175
+ function positiveOption(value, fallback, name) {
176
+ const resolved = value ?? fallback;
177
+ if (!Number.isSafeInteger(resolved) || resolved < 0) {
178
+ throw new TypeError(`${name} must be a non-negative safe integer`);
179
+ }
180
+ return resolved;
181
+ }
182
+ /** @internal Pure policy seam so ownership refusal is testable without privileged filesystem setup. */
183
+ export function isPrivateFilesystemMutationLockRoot(facts) {
184
+ const wrongOwner = facts.expectedUid !== undefined && facts.ownerUid !== facts.expectedUid;
185
+ const unsafeMode = facts.enforcePrivateMode && (facts.mode & 0o777) !== 0o700;
186
+ return facts.directory && !facts.symbolicLink && !wrongOwner && !unsafeMode;
187
+ }
188
+ async function ensurePrivateLockRoot(root) {
189
+ try {
190
+ await fs.mkdir(root, { recursive: true, mode: 0o700 });
191
+ }
192
+ catch (err) {
193
+ if (err.code !== "EEXIST")
194
+ throw err;
195
+ }
196
+ const stat = await fs.lstat(root);
197
+ const uid = process.getuid?.();
198
+ if (!isPrivateFilesystemMutationLockRoot({
199
+ directory: stat.isDirectory(),
200
+ symbolicLink: stat.isSymbolicLink(),
201
+ ownerUid: stat.uid,
202
+ expectedUid: uid,
203
+ mode: stat.mode,
204
+ enforcePrivateMode: process.platform !== "win32",
205
+ })) {
206
+ throw new FilesystemMutationLockError(`refusing unsafe filesystem mutation lock root '${root}'; it must be a private directory owned by this user`, { lockPath: root, owner: null, stale: false, malformed: true });
207
+ }
208
+ }
209
+ async function canonicalTargetInDirectory(directory, requestedBasename) {
210
+ const requested = path.join(directory, requestedBasename);
211
+ let requestedStat;
212
+ try {
213
+ requestedStat = await fs.lstat(requested);
214
+ }
215
+ catch (err) {
216
+ if (err.code === "ENOENT")
217
+ return requested;
218
+ throw err;
219
+ }
220
+ const entries = await fs.readdir(directory);
221
+ if (entries.includes(requestedBasename))
222
+ return requested;
223
+ // On a case-/normalization-insensitive filesystem, lstat(requested) can succeed even though
224
+ // readdir reports a differently-spelled directory entry. Find that entry without realpath'ing
225
+ // the target itself: resolving a final symlink would put the lock outside the bundle even though
226
+ // atomicWrite replaces the symlink directory entry inside it.
227
+ for (const entry of entries) {
228
+ const candidate = path.join(directory, entry);
229
+ let candidateStat;
230
+ try {
231
+ candidateStat = await fs.lstat(candidate);
232
+ }
233
+ catch {
234
+ // A sibling may disappear during the scan, or Windows may deny metadata for a protected
235
+ // system entry in an otherwise-readable directory. Neither sibling can be the successfully
236
+ // witnessed requested entry, so it contributes no alias evidence and must not block locking.
237
+ continue;
238
+ }
239
+ if (candidateStat.dev === requestedStat.dev && candidateStat.ino === requestedStat.ino)
240
+ return candidate;
241
+ }
242
+ return requested;
243
+ }
244
+ /**
245
+ * `guarded` names what the claimer wanted to mutate, so a leftover is diagnosable even when
246
+ * malformed. One lock key is one LOGICAL identity, and on a host that equates spellings the
247
+ * claimer and the holder can spell it differently; naming only the claimer's spelling sends a
248
+ * human looking for a file that may not exist under that name. Name the holder's recorded
249
+ * spelling too whenever it differs. The message reports what the owner record SAYS and no more:
250
+ * a lock reached through its own fold key holds the same identity by construction, but nothing
251
+ * here re-derives that from an arbitrary `owner.json`, so it must not assert the equivalence.
252
+ */
253
+ function timeoutError(lockPath, owner, guarded) {
254
+ const malformed = owner === null;
255
+ const sameHost = owner?.hostname === hostname();
256
+ const stale = owner !== null && sameHost && !processExists(owner.pid);
257
+ let message;
258
+ if (malformed) {
259
+ message =
260
+ `timed out waiting for filesystem mutation lock '${lockPath}'; its owner metadata is missing or malformed. ` +
261
+ `Inspect and remove the lock only after confirming no process is mutating the target, then retry.`;
262
+ }
263
+ else if (stale) {
264
+ message =
265
+ `stale filesystem mutation lock '${lockPath}' belongs to absent PID ${owner.pid} on ${owner.hostname}. ` +
266
+ `Inspect and remove the lock, then retry.`;
267
+ }
268
+ else {
269
+ message =
270
+ `timed out waiting for filesystem mutation lock '${lockPath}' held by PID ${owner.pid} on ${owner.hostname}; retry the mutation.`;
271
+ }
272
+ const heldFor = owner !== null && owner.target !== guarded
273
+ ? ` Its holder recorded '${owner.target}' for the same lock key.`
274
+ : "";
275
+ return new FilesystemMutationLockError(`${message} The lock guards '${guarded}'.${heldFor}`, { lockPath, owner, stale, malformed });
276
+ }
277
+ /** Resolve `portableRoot` the way both claim entry points do: physical when it exists, else lexical. */
278
+ async function resolvedPortableRoot(portableRoot) {
279
+ if (portableRoot === undefined)
280
+ return undefined;
281
+ return fs.realpath(portableRoot).catch(() => path.resolve(portableRoot));
282
+ }
283
+ async function selectLockRoot(options) {
284
+ const portableRoot = await resolvedPortableRoot(options.portableRoot);
285
+ const lockRoot = options.lockRoot !== undefined
286
+ ? explicitFilesystemMutationLockRoot(options.lockRoot, portableRoot)
287
+ : filesystemMutationLockRoot(portableRoot);
288
+ await ensurePrivateLockRoot(lockRoot);
289
+ return lockRoot;
290
+ }
291
+ const WINDOWS_DIRECTORY_CONTENTION_CODES = new Set(["EACCES", "EBUSY", "EPERM"]);
292
+ async function classifyLockClaimFailure(error, lockPath) {
293
+ const code = error.code;
294
+ if (code === "EEXIST")
295
+ return "contention";
296
+ if (process.platform !== "win32" || !WINDOWS_DIRECTORY_CONTENTION_CODES.has(code ?? ""))
297
+ return "terminal";
298
+ // Win32 may report a sharing-shaped error while another claimer creates or removes this exact
299
+ // directory. A witnessed path is contention. An absent path is ambiguous: permit one bounded
300
+ // retry in case the competing directory operation just completed, but never turn a durable
301
+ // create denial into a malformed-lock timeout. A denied probe remains terminal immediately.
302
+ try {
303
+ await fs.lstat(lockPath);
304
+ return "contention";
305
+ }
306
+ catch (probeError) {
307
+ const probeCode = probeError.code;
308
+ return probeCode === "ENOENT" || probeCode === "ENOTDIR"
309
+ ? "unwitnessed-windows-sharing-error"
310
+ : "terminal";
311
+ }
312
+ }
313
+ /**
314
+ * The claim itself, shared by every entry point: `mkdir(lockPath)` is the atomic claim, the
315
+ * owner record makes a crash leftover diagnosable, and release is token-checked so a caller can
316
+ * never remove a lock it no longer owns. Waits up to `waitMs`, polling every `pollMs`.
317
+ */
318
+ async function claimLockPath(lockPath, owner, waitMs, pollMs) {
319
+ const started = owner.created_at_ms;
320
+ let unwitnessedWindowsRetryUsed = false;
321
+ while (true) {
322
+ try {
323
+ await fs.mkdir(lockPath, { mode: 0o700 });
324
+ }
325
+ catch (err) {
326
+ const failure = await classifyLockClaimFailure(err, lockPath);
327
+ if (failure === "terminal")
328
+ throw err;
329
+ if (failure === "unwitnessed-windows-sharing-error") {
330
+ if (unwitnessedWindowsRetryUsed)
331
+ throw err;
332
+ unwitnessedWindowsRetryUsed = true;
333
+ // This is one immediate re-attempt, not a wait. It is permitted even with waitMs: 0 so
334
+ // the next result can distinguish a one-shot sharing race from a durable create denial.
335
+ continue;
336
+ }
337
+ else {
338
+ unwitnessedWindowsRetryUsed = false;
339
+ }
340
+ let existingOwner = await readOwner(lockPath);
341
+ if (existingOwner !== null) {
342
+ if (await quarantineStaleLock(lockPath, existingOwner))
343
+ continue;
344
+ // A failed quarantine attempt is non-progress: another reclaimer may have moved the stale
345
+ // lock and installed a live replacement while this caller was delayed in rename. Diagnose
346
+ // the owner that exists now, never the dead-owner snapshot that authorized the attempt.
347
+ existingOwner = await readOwner(lockPath);
348
+ }
349
+ if (Date.now() - started >= waitMs)
350
+ throw timeoutError(lockPath, existingOwner, owner.target);
351
+ await delay(pollMs);
352
+ continue;
353
+ }
354
+ // The claim is ours now. Owner initialization and rollback failures are not claim
355
+ // contention—even when Windows reports a sharing-shaped errno—and must propagate unchanged.
356
+ try {
357
+ await fs.writeFile(path.join(lockPath, OWNER_FILE), `${JSON.stringify(owner)}\n`, {
358
+ encoding: "utf8",
359
+ flag: "wx",
360
+ mode: 0o600,
361
+ });
362
+ }
363
+ catch (err) {
364
+ await fs.rm(lockPath, { recursive: true, force: true }).catch(() => { });
365
+ throw err;
366
+ }
367
+ return async () => {
368
+ const current = await readOwner(lockPath);
369
+ if (current?.token !== owner.token) {
370
+ throw new FilesystemMutationLockError(`refusing to release filesystem mutation lock '${lockPath}' because its owner token changed; the mutation may have completed, inspect the lock before retrying.`, { lockPath, owner: current, stale: false, malformed: current === null });
371
+ }
372
+ try {
373
+ await fs.rm(lockPath, { recursive: true, force: false });
374
+ }
375
+ catch (err) {
376
+ const message = err instanceof Error ? err.message : String(err);
377
+ throw new FilesystemMutationLockError(`mutation completed but filesystem lock '${lockPath}' could not be removed (${message}); inspect the lock before retrying.`, { lockPath, owner: current, stale: false, malformed: false });
378
+ }
379
+ };
380
+ }
381
+ }
382
+ function newOwner(target) {
383
+ return {
384
+ pid: process.pid,
385
+ hostname: hostname(),
386
+ created_at_ms: Date.now(),
387
+ token: randomUUID(),
388
+ target,
389
+ };
390
+ }
391
+ /**
392
+ * Acquire one same-user cross-process mutation lock for `target`.
393
+ *
394
+ * `mkdir` is the atomic claim. Locks live in a private per-user runtime namespace keyed by the
395
+ * canonical target path, never inside the portable bundle: Git staging, establishment snapshots,
396
+ * copying, and packaging cannot capture them. A valid same-host lock whose PID is absent is moved
397
+ * to a token-fenced quarantine and retried; malformed, foreign-host, and live locks remain
398
+ * fail-closed.
399
+ */
400
+ export async function acquireFilesystemMutationLock(target, options = {}) {
401
+ const waitMs = positiveOption(options.waitMs, DEFAULT_WAIT_MS, "waitMs");
402
+ const pollMs = positiveOption(options.pollMs, DEFAULT_POLL_MS, "pollMs");
403
+ const targetResolved = path.resolve(target);
404
+ const targetDir = path.dirname(targetResolved);
405
+ const owner = newOwner(targetResolved);
406
+ // An existing Windows drive root (for example C:\) can reject even a recursive mkdir with
407
+ // EPERM. Resolve first and create only when the parent is genuinely absent. This preserves the
408
+ // create-on-demand behavior without mutating an already-existing filesystem root.
409
+ let canonicalDir;
410
+ try {
411
+ canonicalDir = await fs.realpath(targetDir);
412
+ }
413
+ catch (err) {
414
+ if (err.code !== "ENOENT")
415
+ throw err;
416
+ await fs.mkdir(targetDir, { recursive: true });
417
+ canonicalDir = await fs.realpath(targetDir);
418
+ }
419
+ // Two callers may spell the same bundle through real and symlinked parent paths. Canonicalize
420
+ // the now-existing parent so both claim the same runtime lock for the physical target.
421
+ const targetCanonical = await canonicalTargetInDirectory(canonicalDir, path.basename(targetResolved));
422
+ const lockRoot = await selectLockRoot(options);
423
+ const lockPath = filesystemMutationLockPathInRoot(targetCanonical, lockRoot);
424
+ return claimLockPath(lockPath, { ...owner, target: targetCanonical }, waitMs, pollMs);
425
+ }
426
+ const IDENTITY_KEY_SHAPE = /^[0-9a-f]{64}$/;
427
+ function assertIdentityKey(key) {
428
+ if (!IDENTITY_KEY_SHAPE.test(key))
429
+ throw new TypeError("identity key must be a lowercase hex sha256 digest");
430
+ }
431
+ /** @internal Runtime lock directory for one identity key; the key is the whole path component. */
432
+ export function filesystemIdentityLockPath(key, portableRoot) {
433
+ assertIdentityKey(key);
434
+ return path.join(filesystemMutationLockRoot(portableRoot), `${key}.lock`);
435
+ }
436
+ /**
437
+ * @internal Claim the same-user cross-process lock for an identity key that the caller derived
438
+ * purely (`filesystem-identity.ts`). Unlike {@link acquireFilesystemMutationLock} this creates no
439
+ * target directory and resolves no target path: the bundle stays exactly as it was until the
440
+ * caller decides to mutate it. `identity` is recorded as the owner's `target` for diagnosis.
441
+ */
442
+ export async function acquireFilesystemIdentityLock(key, identity, options = {}) {
443
+ assertIdentityKey(key);
444
+ const waitMs = positiveOption(options.waitMs, DEFAULT_WAIT_MS, "waitMs");
445
+ const pollMs = positiveOption(options.pollMs, DEFAULT_POLL_MS, "pollMs");
446
+ const owner = newOwner(identity);
447
+ const lockRoot = await selectLockRoot(options);
448
+ return claimLockPath(path.join(lockRoot, `${key}.lock`), owner, waitMs, pollMs);
449
+ }
450
+ /** Run `fn` while holding the same-user cross-process mutation lock for `target`. */
451
+ export async function withFilesystemMutationLock(target, fn, options = {}) {
452
+ const release = await acquireFilesystemMutationLock(target, options);
453
+ try {
454
+ return await fn();
455
+ }
456
+ finally {
457
+ await release();
458
+ }
459
+ }
460
+ //# sourceMappingURL=filesystem-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-lock.js","sourceRoot":"","sources":["../src/filesystem-lock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Freshness derivation from the document's edition-neutral meaningful-change clock.
3
+ *
4
+ * OKF v0.2's `stale_after` supplies an absolute date; v0.1 `timestamp` and v0.2
5
+ * `generated.at` supply the instant of the last meaningful change. The remaining
6
+ * staleness rules are consumer judgments layered on top:
7
+ * - `empty` — no usable meaningful-change time is present.
8
+ * - `stale` — a declared dependency was written more recently than this concept,
9
+ * OR the concept's age exceeds `maxAgeMs`.
10
+ * - `fresh` — otherwise.
11
+ * The v0.2 absolute date takes precedence, then dependency-newer, then the age rule.
12
+ *
13
+ * Pure and dependency-free, hence directly unit-testable.
14
+ */
15
+ import type { FreshnessOptions, FreshnessResult, OkfDocument } from "./types.js";
16
+ /**
17
+ * Parse a timestamp to epoch ms, or `null`. Accepts an ISO-8601 (or any
18
+ * `Date.parse`-able) STRING — the normal case, since {@link parseMarkdown}
19
+ * normalizes frontmatter dates to strings — and, as belt-and-suspenders, a raw
20
+ * `Date` or epoch-millis `number` should one reach here unnormalized.
21
+ */
22
+ export declare function parseTimestamp(ts: unknown): number | null;
23
+ /**
24
+ * Derive a freshness verdict from `generated.at`, falling back to legacy `timestamp`.
25
+ *
26
+ * @param doc the concept document (v0.2 `stale_after` and meaningful-change clocks are consulted).
27
+ * @param options bundle edition, `now` (defaults to the current instant), `maxAgeMs`, and
28
+ * the ISO timestamps of upstream `dependsOn` artifacts.
29
+ */
30
+ export declare function freshness(doc: OkfDocument, options?: FreshnessOptions): FreshnessResult;
31
+ //# sourceMappingURL=freshness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../src/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGjF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAWzD;AAmBD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe,CA0C3F"}