@younndai/lyt 0.20.14 → 0.20.16
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/CONTRIBUTING.md +14 -29
- package/LICENSE +11 -10
- package/NOTICE +2 -2
- package/README.md +12 -8
- package/dist/automator-bodies/index.d.ts +3 -2
- package/dist/automator-bodies/index.d.ts.map +1 -1
- package/dist/automator-bodies/index.js +1 -1
- package/dist/automator-bodies/index.js.map +1 -1
- package/dist/automator-bodies/metadata-filler.d.ts +13 -0
- package/dist/automator-bodies/metadata-filler.d.ts.map +1 -1
- package/dist/automator-bodies/metadata-filler.js +74 -10
- package/dist/automator-bodies/metadata-filler.js.map +1 -1
- package/dist/automator-run.d.ts +3 -0
- package/dist/automator-run.d.ts.map +1 -1
- package/dist/automator-run.js +7 -0
- package/dist/automator-run.js.map +1 -1
- package/dist/commands/backfill.d.ts.map +1 -1
- package/dist/commands/backfill.js +142 -72
- package/dist/commands/backfill.js.map +1 -1
- package/dist/commands/mutation-preview-receipt.d.ts +77 -0
- package/dist/commands/mutation-preview-receipt.d.ts.map +1 -0
- package/dist/commands/mutation-preview-receipt.js +326 -0
- package/dist/commands/mutation-preview-receipt.js.map +1 -0
- package/dist/commands/reconcile.d.ts.map +1 -1
- package/dist/commands/reconcile.js +221 -87
- package/dist/commands/reconcile.js.map +1 -1
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +78 -14
- package/dist/commands/search.js.map +1 -1
- package/dist/install/doctor-health.d.ts.map +1 -1
- package/dist/install/doctor-health.js +76 -12
- package/dist/install/doctor-health.js.map +1 -1
- package/dist/install/reconcile-engine.d.ts.map +1 -1
- package/dist/install/reconcile-engine.js +32 -13
- package/dist/install/reconcile-engine.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2026 MARLINK TRADING SRL (YounndAI)
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from "node:crypto";
|
|
17
|
+
import { closeSync, existsSync, fsyncSync, lstatSync, mkdirSync, openSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "node:fs";
|
|
18
|
+
import { join } from "node:path";
|
|
19
|
+
import { closeRegistry, deriveLocalWritable, getVaultByName, inventoryVaultFiles, loadLytIgnorePolicy, newUuidv7Bytes, normalizeVaultSubtree, openRegistry, uuid7BytesToDashedString, } from "@younndai/lyt-vault";
|
|
20
|
+
const RECEIPT_TTL_MS = 30 * 60 * 1000;
|
|
21
|
+
const UUID_V7 = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
22
|
+
function sha256(value) {
|
|
23
|
+
return createHash("sha256").update(value).digest("hex");
|
|
24
|
+
}
|
|
25
|
+
function receiptDir(vaultPath, create) {
|
|
26
|
+
const rootStat = lstatSync(vaultPath);
|
|
27
|
+
if (rootStat.isSymbolicLink() || !rootStat.isDirectory()) {
|
|
28
|
+
throw new Error("preview receipt store requires a real registered vault root");
|
|
29
|
+
}
|
|
30
|
+
const lytDir = join(vaultPath, ".lyt");
|
|
31
|
+
const lytStat = lstatSync(lytDir);
|
|
32
|
+
if (lytStat.isSymbolicLink() || !lytStat.isDirectory()) {
|
|
33
|
+
throw new Error("preview receipt store requires a real .lyt directory");
|
|
34
|
+
}
|
|
35
|
+
const directory = join(lytDir, "mutation-previews");
|
|
36
|
+
if (!existsSync(directory)) {
|
|
37
|
+
if (!create)
|
|
38
|
+
throw new Error("preview receipt store does not exist");
|
|
39
|
+
mkdirSync(directory);
|
|
40
|
+
}
|
|
41
|
+
const directoryStat = lstatSync(directory);
|
|
42
|
+
if (directoryStat.isSymbolicLink() || !directoryStat.isDirectory()) {
|
|
43
|
+
throw new Error("preview receipt store may not be a reparse point");
|
|
44
|
+
}
|
|
45
|
+
return directory;
|
|
46
|
+
}
|
|
47
|
+
function receiptPath(vaultPath, id, createDirectory) {
|
|
48
|
+
if (!UUID_V7.test(id))
|
|
49
|
+
throw new Error("preview receipt id must be a UUIDv7");
|
|
50
|
+
return join(receiptDir(vaultPath, createDirectory), `${id}.json`);
|
|
51
|
+
}
|
|
52
|
+
function sealPlan(plan) {
|
|
53
|
+
return sha256(JSON.stringify(plan));
|
|
54
|
+
}
|
|
55
|
+
function atomicWriteReceipt(vaultPath, receipt) {
|
|
56
|
+
const path = receiptPath(vaultPath, receipt.plan.id, true);
|
|
57
|
+
const directory = receiptDir(vaultPath, true);
|
|
58
|
+
const temp = join(directory, `.${receipt.plan.id}.${process.pid}.${Date.now()}.tmp`);
|
|
59
|
+
const payload = `${JSON.stringify(receipt, null, 2)}\n`;
|
|
60
|
+
if (existsSync(path)) {
|
|
61
|
+
const current = lstatSync(path);
|
|
62
|
+
if (current.isSymbolicLink() || !current.isFile()) {
|
|
63
|
+
throw new Error("preview receipt target must remain a regular file");
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
let fd = null;
|
|
67
|
+
try {
|
|
68
|
+
fd = openSync(temp, "wx");
|
|
69
|
+
writeFileSync(fd, payload, "utf8");
|
|
70
|
+
fsyncSync(fd);
|
|
71
|
+
closeSync(fd);
|
|
72
|
+
fd = null;
|
|
73
|
+
const directoryStat = lstatSync(directory);
|
|
74
|
+
if (directoryStat.isSymbolicLink() || !directoryStat.isDirectory()) {
|
|
75
|
+
throw new Error("preview receipt store changed type before replace");
|
|
76
|
+
}
|
|
77
|
+
if (existsSync(path)) {
|
|
78
|
+
const current = lstatSync(path);
|
|
79
|
+
if (current.isSymbolicLink() || !current.isFile()) {
|
|
80
|
+
throw new Error("preview receipt target changed type before replace");
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
renameSync(temp, path);
|
|
84
|
+
if (readFileSync(path, "utf8") !== payload) {
|
|
85
|
+
throw new Error("preview receipt post-write verification failed");
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
if (fd !== null) {
|
|
90
|
+
try {
|
|
91
|
+
closeSync(fd);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (existsSync(temp))
|
|
97
|
+
unlinkSync(temp);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function loadReceipt(vaultPath, id) {
|
|
101
|
+
const path = receiptPath(vaultPath, id, false);
|
|
102
|
+
if (!existsSync(path))
|
|
103
|
+
throw new Error(`preview receipt not found: ${id}`);
|
|
104
|
+
const stat = lstatSync(path);
|
|
105
|
+
if (stat.isSymbolicLink() || !stat.isFile()) {
|
|
106
|
+
throw new Error("preview receipt must be a regular file");
|
|
107
|
+
}
|
|
108
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
109
|
+
if (parsed?.plan?.schema !== "lyt.mutation-preview" ||
|
|
110
|
+
parsed.plan.version !== 1 ||
|
|
111
|
+
parsed.plan.id !== id ||
|
|
112
|
+
parsed.seal?.algorithm !== "sha256" ||
|
|
113
|
+
parsed.seal.digest !== sealPlan(parsed.plan)) {
|
|
114
|
+
throw new Error(`preview receipt is malformed or its seal does not match: ${id}`);
|
|
115
|
+
}
|
|
116
|
+
return parsed;
|
|
117
|
+
}
|
|
118
|
+
function exclusionCounts(inventory) {
|
|
119
|
+
const counts = {};
|
|
120
|
+
for (const entry of inventory.entries) {
|
|
121
|
+
if (entry.classification === "figment")
|
|
122
|
+
continue;
|
|
123
|
+
counts[entry.classification] = (counts[entry.classification] ?? 0) + 1;
|
|
124
|
+
}
|
|
125
|
+
return counts;
|
|
126
|
+
}
|
|
127
|
+
function candidatesFromInventory(inventory) {
|
|
128
|
+
return inventory.entries
|
|
129
|
+
.filter((entry) => entry.frontmatterMutationCandidate)
|
|
130
|
+
.map((entry) => {
|
|
131
|
+
if (entry.contentSha256 === null) {
|
|
132
|
+
throw new Error(`frontmatter candidate has no readable preimage: ${entry.path}`);
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
path: entry.path,
|
|
136
|
+
preimageSha256: entry.contentSha256,
|
|
137
|
+
plannedMutations: [...entry.missingFields],
|
|
138
|
+
};
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
export async function createMutationPreview(args) {
|
|
142
|
+
const now = args.now ?? new Date();
|
|
143
|
+
const inventory = await inventoryVaultFiles(args.vault, args.subtree);
|
|
144
|
+
const policy = loadLytIgnorePolicy(inventory.vault.path);
|
|
145
|
+
if (policy.sha256 !== inventory.ignorePolicy.sha256) {
|
|
146
|
+
throw new Error(".lytignore changed while the preview inventory was being created");
|
|
147
|
+
}
|
|
148
|
+
const candidates = candidatesFromInventory(inventory);
|
|
149
|
+
const id = uuid7BytesToDashedString(newUuidv7Bytes());
|
|
150
|
+
const reindexRequired = args.operation === "reconcile" &&
|
|
151
|
+
(candidates.length > 0 ||
|
|
152
|
+
inventory.totals.pendingRemovals > 0 ||
|
|
153
|
+
inventory.entries.some((entry) => entry.classification === "figment" && !entry.indexed));
|
|
154
|
+
const plan = {
|
|
155
|
+
schema: "lyt.mutation-preview",
|
|
156
|
+
version: 1,
|
|
157
|
+
id,
|
|
158
|
+
operation: args.operation,
|
|
159
|
+
createdAt: now.toISOString(),
|
|
160
|
+
expiresAt: new Date(now.getTime() + RECEIPT_TTL_MS).toISOString(),
|
|
161
|
+
vault: { rid: inventory.vault.rid, name: inventory.vault.name },
|
|
162
|
+
scope: normalizeVaultSubtree(args.subtree),
|
|
163
|
+
push: args.push,
|
|
164
|
+
ignorePolicy: {
|
|
165
|
+
exists: policy.exists,
|
|
166
|
+
sha256: policy.sha256,
|
|
167
|
+
bytesBase64: policy.bytes.toString("base64"),
|
|
168
|
+
},
|
|
169
|
+
inventoryDigest: inventory.inventoryDigest,
|
|
170
|
+
candidateCount: candidates.length,
|
|
171
|
+
exclusionCount: inventory.totals.excluded,
|
|
172
|
+
exclusionCounts: exclusionCounts(inventory),
|
|
173
|
+
pendingRemovalCount: inventory.totals.pendingRemovals,
|
|
174
|
+
unindexedCount: inventory.entries.filter((entry) => entry.classification === "figment" && !entry.indexed).length,
|
|
175
|
+
reindexRequired,
|
|
176
|
+
reindexScope: reindexRequired ? "vault" : null,
|
|
177
|
+
candidates,
|
|
178
|
+
};
|
|
179
|
+
const receipt = {
|
|
180
|
+
plan,
|
|
181
|
+
seal: { algorithm: "sha256", digest: sealPlan(plan) },
|
|
182
|
+
lifecycle: {
|
|
183
|
+
state: "previewed",
|
|
184
|
+
startedAt: null,
|
|
185
|
+
finishedAt: null,
|
|
186
|
+
completedCandidates: [],
|
|
187
|
+
untouchedCandidates: candidates.map((candidate) => candidate.path),
|
|
188
|
+
error: null,
|
|
189
|
+
},
|
|
190
|
+
};
|
|
191
|
+
atomicWriteReceipt(inventory.vault.path, receipt);
|
|
192
|
+
return receipt;
|
|
193
|
+
}
|
|
194
|
+
async function loadRegisteredVault(vaultName) {
|
|
195
|
+
const db = await openRegistry();
|
|
196
|
+
try {
|
|
197
|
+
const vault = await getVaultByName(db, vaultName);
|
|
198
|
+
if (vault === null)
|
|
199
|
+
throw new Error(`No vault registered with name '${vaultName}'.`);
|
|
200
|
+
const verdict = await deriveLocalWritable(vault, db);
|
|
201
|
+
return {
|
|
202
|
+
name: vault.name,
|
|
203
|
+
path: vault.path,
|
|
204
|
+
rid: vault.ridHex,
|
|
205
|
+
localWritable: verdict.localWritable,
|
|
206
|
+
reason: verdict.reason,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
await closeRegistry(db);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
function sameCandidates(expected, actual) {
|
|
214
|
+
return JSON.stringify(expected) === JSON.stringify(actual);
|
|
215
|
+
}
|
|
216
|
+
export async function prepareMutationApply(args) {
|
|
217
|
+
const registered = await loadRegisteredVault(args.vault);
|
|
218
|
+
let receipt = loadReceipt(registered.path, args.receiptId);
|
|
219
|
+
const refuse = (message) => {
|
|
220
|
+
if (receipt.lifecycle.state === "previewed") {
|
|
221
|
+
receipt = {
|
|
222
|
+
...receipt,
|
|
223
|
+
lifecycle: {
|
|
224
|
+
...receipt.lifecycle,
|
|
225
|
+
state: "refused-before-write",
|
|
226
|
+
finishedAt: (args.now ?? new Date()).toISOString(),
|
|
227
|
+
error: message,
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
atomicWriteReceipt(registered.path, receipt);
|
|
231
|
+
}
|
|
232
|
+
throw new Error(message);
|
|
233
|
+
};
|
|
234
|
+
if (receipt.lifecycle.state !== "previewed") {
|
|
235
|
+
throw new Error(`preview receipt cannot be reused from state ${receipt.lifecycle.state}`);
|
|
236
|
+
}
|
|
237
|
+
if (Date.parse(receipt.plan.expiresAt) <= (args.now ?? new Date()).getTime()) {
|
|
238
|
+
refuse("preview receipt expired; create a new preview");
|
|
239
|
+
}
|
|
240
|
+
if (receipt.plan.operation !== args.operation ||
|
|
241
|
+
receipt.plan.vault.rid !== registered.rid ||
|
|
242
|
+
receipt.plan.vault.name !== registered.name ||
|
|
243
|
+
receipt.plan.scope !== normalizeVaultSubtree(args.subtree) ||
|
|
244
|
+
receipt.plan.push !== args.push) {
|
|
245
|
+
refuse("preview receipt does not match this exact operation, vault, scope, and push intent");
|
|
246
|
+
}
|
|
247
|
+
if (!registered.localWritable) {
|
|
248
|
+
refuse(`vault is not locally writable: ${registered.reason}`);
|
|
249
|
+
}
|
|
250
|
+
const inventory = await inventoryVaultFiles(registered.name, args.subtree);
|
|
251
|
+
const policy = loadLytIgnorePolicy(inventory.vault.path);
|
|
252
|
+
const actualCandidates = candidatesFromInventory(inventory);
|
|
253
|
+
if (policy.exists !== receipt.plan.ignorePolicy.exists ||
|
|
254
|
+
policy.sha256 !== receipt.plan.ignorePolicy.sha256 ||
|
|
255
|
+
policy.bytes.toString("base64") !== receipt.plan.ignorePolicy.bytesBase64 ||
|
|
256
|
+
inventory.inventoryDigest !== receipt.plan.inventoryDigest ||
|
|
257
|
+
!sameCandidates(receipt.plan.candidates, actualCandidates)) {
|
|
258
|
+
refuse("vault inventory, .lytignore, or candidate preimages changed; create a new preview");
|
|
259
|
+
}
|
|
260
|
+
receipt = {
|
|
261
|
+
...receipt,
|
|
262
|
+
lifecycle: {
|
|
263
|
+
...receipt.lifecycle,
|
|
264
|
+
state: "applying",
|
|
265
|
+
startedAt: (args.now ?? new Date()).toISOString(),
|
|
266
|
+
error: null,
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
atomicWriteReceipt(registered.path, receipt);
|
|
270
|
+
const completed = [];
|
|
271
|
+
let mutationStarted = false;
|
|
272
|
+
const persist = (state, error) => {
|
|
273
|
+
const completedSet = new Set(completed);
|
|
274
|
+
receipt = {
|
|
275
|
+
...receipt,
|
|
276
|
+
lifecycle: {
|
|
277
|
+
...receipt.lifecycle,
|
|
278
|
+
state,
|
|
279
|
+
finishedAt: state === "applying" ? null : new Date().toISOString(),
|
|
280
|
+
completedCandidates: [...completed],
|
|
281
|
+
untouchedCandidates: receipt.plan.candidates
|
|
282
|
+
.map((candidate) => candidate.path)
|
|
283
|
+
.filter((path) => !completedSet.has(path)),
|
|
284
|
+
error,
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
atomicWriteReceipt(registered.path, receipt);
|
|
288
|
+
};
|
|
289
|
+
const revalidateBeforeMutation = async () => {
|
|
290
|
+
const live = await inventoryVaultFiles(registered.name, args.subtree);
|
|
291
|
+
const livePolicy = loadLytIgnorePolicy(registered.path);
|
|
292
|
+
const liveCandidates = candidatesFromInventory(live);
|
|
293
|
+
if (livePolicy.exists !== receipt.plan.ignorePolicy.exists ||
|
|
294
|
+
livePolicy.sha256 !== receipt.plan.ignorePolicy.sha256 ||
|
|
295
|
+
livePolicy.bytes.toString("base64") !== receipt.plan.ignorePolicy.bytesBase64 ||
|
|
296
|
+
live.inventoryDigest !== receipt.plan.inventoryDigest ||
|
|
297
|
+
!sameCandidates(receipt.plan.candidates, liveCandidates)) {
|
|
298
|
+
throw new Error("vault changed after apply preparation; create a new preview");
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
return {
|
|
302
|
+
getReceipt: () => receipt,
|
|
303
|
+
inventory,
|
|
304
|
+
completed,
|
|
305
|
+
revalidateBeforeMutation,
|
|
306
|
+
markCandidateCompleted(path) {
|
|
307
|
+
if (!receipt.plan.candidates.some((candidate) => candidate.path === path)) {
|
|
308
|
+
throw new Error(`mutation wrote an unplanned candidate: ${path}`);
|
|
309
|
+
}
|
|
310
|
+
if (!completed.includes(path))
|
|
311
|
+
completed.push(path);
|
|
312
|
+
persist("applying", null);
|
|
313
|
+
},
|
|
314
|
+
markMutationStarted() {
|
|
315
|
+
mutationStarted = true;
|
|
316
|
+
},
|
|
317
|
+
complete() {
|
|
318
|
+
persist("completed", null);
|
|
319
|
+
},
|
|
320
|
+
fail(error) {
|
|
321
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
322
|
+
persist(completed.length > 0 || mutationStarted ? "partial" : "refused-before-write", message);
|
|
323
|
+
},
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=mutation-preview-receipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-preview-receipt.js","sourceRoot":"","sources":["../../src/commands/mutation-preview-receipt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/commands/reconcile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../src/commands/reconcile.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8EpC,wBAAgB,qBAAqB,IAAI,OAAO,CA2H/C"}
|