@ranimontagna/agent-toolkit 0.2.2 → 0.3.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 (102) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +21 -7
  3. package/dist/bin/agent-toolkit.js +9 -4
  4. package/dist/bin/agent-toolkit.js.map +1 -1
  5. package/dist/src/ariadne/args.d.ts +2 -0
  6. package/dist/src/ariadne/args.js +146 -0
  7. package/dist/src/ariadne/args.js.map +1 -0
  8. package/dist/src/ariadne/checks.d.ts +24 -0
  9. package/dist/src/ariadne/checks.js +74 -0
  10. package/dist/src/ariadne/checks.js.map +1 -0
  11. package/dist/src/ariadne/cli.d.ts +38 -0
  12. package/dist/src/ariadne/cli.js +206 -0
  13. package/dist/src/ariadne/cli.js.map +1 -0
  14. package/dist/src/ariadne/doctor.d.ts +16 -0
  15. package/dist/src/ariadne/doctor.js +207 -0
  16. package/dist/src/ariadne/doctor.js.map +1 -0
  17. package/dist/src/ariadne/git.d.ts +58 -0
  18. package/dist/src/ariadne/git.js +577 -0
  19. package/dist/src/ariadne/git.js.map +1 -0
  20. package/dist/src/ariadne/import.d.ts +2 -0
  21. package/dist/src/ariadne/import.js +93 -0
  22. package/dist/src/ariadne/import.js.map +1 -0
  23. package/dist/src/ariadne/init.d.ts +47 -0
  24. package/dist/src/ariadne/init.js +345 -0
  25. package/dist/src/ariadne/init.js.map +1 -0
  26. package/dist/src/ariadne/lock.d.ts +22 -0
  27. package/dist/src/ariadne/lock.js +478 -0
  28. package/dist/src/ariadne/lock.js.map +1 -0
  29. package/dist/src/ariadne/loop.d.ts +26 -0
  30. package/dist/src/ariadne/loop.js +1316 -0
  31. package/dist/src/ariadne/loop.js.map +1 -0
  32. package/dist/src/ariadne/ownership.d.ts +32 -0
  33. package/dist/src/ariadne/ownership.js +161 -0
  34. package/dist/src/ariadne/ownership.js.map +1 -0
  35. package/dist/src/ariadne/process.d.ts +27 -0
  36. package/dist/src/ariadne/process.js +302 -0
  37. package/dist/src/ariadne/process.js.map +1 -0
  38. package/dist/src/ariadne/prompt.d.ts +11 -0
  39. package/dist/src/ariadne/prompt.js +29 -0
  40. package/dist/src/ariadne/prompt.js.map +1 -0
  41. package/dist/src/ariadne/render.d.ts +7 -0
  42. package/dist/src/ariadne/render.js +72 -0
  43. package/dist/src/ariadne/render.js.map +1 -0
  44. package/dist/src/ariadne/result.d.ts +54 -0
  45. package/dist/src/ariadne/result.js +129 -0
  46. package/dist/src/ariadne/result.js.map +1 -0
  47. package/dist/src/ariadne/runtimes/antigravity.d.ts +2 -0
  48. package/dist/src/ariadne/runtimes/antigravity.js +17 -0
  49. package/dist/src/ariadne/runtimes/antigravity.js.map +1 -0
  50. package/dist/src/ariadne/runtimes/claude.d.ts +2 -0
  51. package/dist/src/ariadne/runtimes/claude.js +17 -0
  52. package/dist/src/ariadne/runtimes/claude.js.map +1 -0
  53. package/dist/src/ariadne/runtimes/codex.d.ts +2 -0
  54. package/dist/src/ariadne/runtimes/codex.js +24 -0
  55. package/dist/src/ariadne/runtimes/codex.js.map +1 -0
  56. package/dist/src/ariadne/runtimes/gemini.d.ts +2 -0
  57. package/dist/src/ariadne/runtimes/gemini.js +18 -0
  58. package/dist/src/ariadne/runtimes/gemini.js.map +1 -0
  59. package/dist/src/ariadne/runtimes/index.d.ts +4 -0
  60. package/dist/src/ariadne/runtimes/index.js +82 -0
  61. package/dist/src/ariadne/runtimes/index.js.map +1 -0
  62. package/dist/src/ariadne/runtimes/opencode.d.ts +2 -0
  63. package/dist/src/ariadne/runtimes/opencode.js +19 -0
  64. package/dist/src/ariadne/runtimes/opencode.js.map +1 -0
  65. package/dist/src/ariadne/runtimes/shared.d.ts +24 -0
  66. package/dist/src/ariadne/runtimes/shared.js +141 -0
  67. package/dist/src/ariadne/runtimes/shared.js.map +1 -0
  68. package/dist/src/ariadne/runtimes/types.d.ts +56 -0
  69. package/dist/src/ariadne/runtimes/types.js +3 -0
  70. package/dist/src/ariadne/runtimes/types.js.map +1 -0
  71. package/dist/src/ariadne/schema.d.ts +11 -0
  72. package/dist/src/ariadne/schema.js +214 -0
  73. package/dist/src/ariadne/schema.js.map +1 -0
  74. package/dist/src/ariadne/status.d.ts +72 -0
  75. package/dist/src/ariadne/status.js +280 -0
  76. package/dist/src/ariadne/status.js.map +1 -0
  77. package/dist/src/ariadne/store.d.ts +99 -0
  78. package/dist/src/ariadne/store.js +738 -0
  79. package/dist/src/ariadne/store.js.map +1 -0
  80. package/dist/src/ariadne/types.d.ts +128 -0
  81. package/dist/src/ariadne/types.js +5 -0
  82. package/dist/src/ariadne/types.js.map +1 -0
  83. package/dist/src/ariadne/usage.d.ts +1 -0
  84. package/dist/src/ariadne/usage.js +8 -0
  85. package/dist/src/ariadne/usage.js.map +1 -0
  86. package/dist/src/cli.d.ts +5 -0
  87. package/dist/src/cli.js +14 -0
  88. package/dist/src/cli.js.map +1 -0
  89. package/dist/src/skills-audit.d.ts +6 -0
  90. package/dist/src/skills-audit.js +36 -2
  91. package/dist/src/skills-audit.js.map +1 -1
  92. package/dist/src/tool-lock.d.ts +20 -0
  93. package/dist/src/tool-lock.js +26 -0
  94. package/dist/src/tool-lock.js.map +1 -1
  95. package/dist/src/usage.js +1 -0
  96. package/dist/src/usage.js.map +1 -1
  97. package/package.json +7 -3
  98. package/skills/workflow/ariadne/NOTICE.md +11 -0
  99. package/skills/workflow/ariadne/SKILL.md +96 -0
  100. package/skills/workflow/ariadne-prd/NOTICE.md +11 -0
  101. package/skills/workflow/ariadne-prd/SKILL.md +69 -0
  102. package/tools.lock.json +40 -21
@@ -0,0 +1,577 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import { AriadneStateError } from "./schema.js";
6
+ const MACHINE_LOCAL_IGNORE_PROBES = [
7
+ ".ariadne/lock",
8
+ ".ariadne/runs/.lock-coordinator/root.json",
9
+ ".ariadne/runs/ariadne-safety-probe/prompt.md",
10
+ ".ariadne-quarantine.json",
11
+ ".ariadne-quarantine.checkpoint.json",
12
+ ];
13
+ const STAGE_BATCH_SIZE = 256;
14
+ const OBJECT_ID = /^[0-9a-f]{40,64}$/i;
15
+ function nulSeparatedPaths(value) {
16
+ return value.split("\0").filter(Boolean);
17
+ }
18
+ function isMachineLocalPath(value) {
19
+ const folded = value.replaceAll("\\", "/").toLowerCase();
20
+ return (folded === ".ariadne/lock" ||
21
+ folded.startsWith(".ariadne/lock/") ||
22
+ folded === ".ariadne/runs" ||
23
+ folded.startsWith(".ariadne/runs/") ||
24
+ folded === ".ariadne-quarantine.json" ||
25
+ folded.startsWith(".ariadne-quarantine.json/") ||
26
+ folded.startsWith(".ariadne-quarantine.tmp-") ||
27
+ folded === ".ariadne-quarantine.checkpoint.json" ||
28
+ folded.startsWith(".ariadne-quarantine.checkpoint.json/") ||
29
+ folded.startsWith(".ariadne-quarantine.checkpoint.tmp-"));
30
+ }
31
+ function literalPathspec(value) {
32
+ return `:(literal)${value}`;
33
+ }
34
+ function sameFile(left, right) {
35
+ return (left.dev === right.dev &&
36
+ left.ino === right.ino &&
37
+ left.size === right.size &&
38
+ left.mtimeMs === right.mtimeMs &&
39
+ left.nlink === right.nlink);
40
+ }
41
+ export class AriadneGit {
42
+ root;
43
+ exec;
44
+ pendingStage;
45
+ publishedState;
46
+ constructor(root, exec) {
47
+ this.root = root;
48
+ this.exec = exec;
49
+ }
50
+ capture(args, env) {
51
+ return this.exec("git", args, this.root, env);
52
+ }
53
+ require(args, description, env) {
54
+ const result = this.capture(args, env);
55
+ if (!result.ok) {
56
+ const detail = result.stderr.trim() || result.stdout.trim();
57
+ throw new AriadneStateError("$git", `Unable to ${description} (git exited ${result.status})${detail ? `: ${detail}` : ""}`);
58
+ }
59
+ return result.stdout.trim();
60
+ }
61
+ privateIndexEnv(indexPath) {
62
+ return { GIT_INDEX_FILE: indexPath };
63
+ }
64
+ removePrivateIndex(indexPath) {
65
+ try {
66
+ fs.unlinkSync(indexPath);
67
+ }
68
+ catch (error) {
69
+ if (error.code !== "ENOENT")
70
+ throw error;
71
+ }
72
+ }
73
+ discardPendingStage() {
74
+ if (!this.pendingStage)
75
+ return;
76
+ const privateIndexPath = this.pendingStage.privateIndexPath;
77
+ this.pendingStage = undefined;
78
+ this.removePrivateIndex(privateIndexPath);
79
+ }
80
+ readRegularFile(filePath, description) {
81
+ let before;
82
+ try {
83
+ before = fs.lstatSync(filePath);
84
+ }
85
+ catch {
86
+ throw new AriadneStateError("$git", `Unable to read ${description}`);
87
+ }
88
+ if (!before.isFile() || before.isSymbolicLink() || before.nlink !== 1) {
89
+ throw new AriadneStateError("$git", `${description} must be one regular, unlinked file`);
90
+ }
91
+ let contents;
92
+ let after;
93
+ try {
94
+ contents = fs.readFileSync(filePath);
95
+ after = fs.lstatSync(filePath);
96
+ }
97
+ catch {
98
+ throw new AriadneStateError("$git", `Unable to read ${description}`);
99
+ }
100
+ if (!sameFile(before, after)) {
101
+ throw new AriadneStateError("$git", `${description} changed while Ariadne read it`);
102
+ }
103
+ return contents;
104
+ }
105
+ writeExclusive(filePath, contents, mode) {
106
+ let descriptor;
107
+ try {
108
+ descriptor = fs.openSync(filePath, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY, mode & 0o777);
109
+ fs.writeFileSync(descriptor, contents);
110
+ fs.fsyncSync(descriptor);
111
+ }
112
+ finally {
113
+ if (descriptor !== undefined)
114
+ fs.closeSync(descriptor);
115
+ }
116
+ }
117
+ gitIndexPath() {
118
+ const discovered = this.require(["rev-parse", "--path-format=absolute", "--git-path", "index"], "locate the Git index");
119
+ return path.isAbsolute(discovered)
120
+ ? path.normalize(discovered)
121
+ : path.resolve(this.root, discovered);
122
+ }
123
+ assertIndexMatches(indexPath, expected, description) {
124
+ const observed = this.readRegularFile(indexPath, description);
125
+ if (!observed.equals(expected)) {
126
+ throw new AriadneStateError("$git", `${description} changed`);
127
+ }
128
+ }
129
+ atomicReplaceIndex(indexPath, expectedCurrent, replacement, mode) {
130
+ const lockPath = `${indexPath}.lock`;
131
+ let descriptor;
132
+ let renamed = false;
133
+ try {
134
+ descriptor = fs.openSync(lockPath, fs.constants.O_CREAT | fs.constants.O_EXCL | fs.constants.O_WRONLY, mode & 0o777);
135
+ this.assertIndexMatches(indexPath, expectedCurrent, "shared Git index");
136
+ fs.writeFileSync(descriptor, replacement);
137
+ fs.fsyncSync(descriptor);
138
+ fs.closeSync(descriptor);
139
+ descriptor = undefined;
140
+ fs.renameSync(lockPath, indexPath);
141
+ renamed = true;
142
+ try {
143
+ const directory = fs.openSync(path.dirname(indexPath), fs.constants.O_RDONLY);
144
+ try {
145
+ fs.fsyncSync(directory);
146
+ }
147
+ finally {
148
+ fs.closeSync(directory);
149
+ }
150
+ }
151
+ catch {
152
+ // The atomic rename is the security boundary. Some platforms do not
153
+ // permit fsync on directories, so durability there is best effort.
154
+ }
155
+ }
156
+ catch (error) {
157
+ if (error instanceof AriadneStateError)
158
+ throw error;
159
+ throw new AriadneStateError("$git", "Unable to atomically install the certified Git index");
160
+ }
161
+ finally {
162
+ if (descriptor !== undefined)
163
+ fs.closeSync(descriptor);
164
+ if (!renamed) {
165
+ try {
166
+ fs.unlinkSync(lockPath);
167
+ }
168
+ catch (error) {
169
+ if (error.code !== "ENOENT") {
170
+ // Preserve the primary publication error. A retained standard Git
171
+ // lock makes subsequent mutations fail closed.
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ restoreIndexIfSafe(state) {
178
+ try {
179
+ this.assertIndexMatches(state.indexPath, state.publishedIndex, "published Git index");
180
+ this.atomicReplaceIndex(state.indexPath, state.publishedIndex, state.originalIndex, state.indexMode);
181
+ return true;
182
+ }
183
+ catch {
184
+ return false;
185
+ }
186
+ }
187
+ indexTree(index, indexPath, mode) {
188
+ const probePath = path.join(path.dirname(indexPath), `${path.basename(indexPath)}.ariadne-probe-${randomUUID()}`);
189
+ this.writeExclusive(probePath, index, mode);
190
+ try {
191
+ return this.require(["write-tree"], "verify the certified Git index tree", this.privateIndexEnv(probePath));
192
+ }
193
+ finally {
194
+ this.removePrivateIndex(probePath);
195
+ }
196
+ }
197
+ assertRepository() {
198
+ const result = this.capture(["rev-parse", "--show-toplevel"]);
199
+ if (!result.ok) {
200
+ throw new AriadneStateError("$git", `Ariadne requires a Git repository: ${this.root}`);
201
+ }
202
+ let configuredRoot;
203
+ let discoveredRoot;
204
+ try {
205
+ configuredRoot = fs.realpathSync(this.root);
206
+ discoveredRoot = fs.realpathSync(result.stdout.trim());
207
+ }
208
+ catch {
209
+ throw new AriadneStateError("$git", "Ariadne could not resolve the Git repository root");
210
+ }
211
+ if (configuredRoot !== discoveredRoot) {
212
+ throw new AriadneStateError("$git", `Ariadne must run from the repository root: ${discoveredRoot}`);
213
+ }
214
+ }
215
+ currentBranch() {
216
+ return this.require(["branch", "--show-current"], "read current branch");
217
+ }
218
+ headRef() {
219
+ const ref = this.require(["symbolic-ref", "--quiet", "HEAD"], "read symbolic HEAD reference");
220
+ if (!ref.startsWith("refs/heads/") || /[\r\n]/.test(ref)) {
221
+ throw new AriadneStateError("$git", "Ariadne requires HEAD to name one fully-qualified branch reference");
222
+ }
223
+ return ref;
224
+ }
225
+ head() {
226
+ return this.require(["rev-parse", "HEAD"], "read HEAD");
227
+ }
228
+ refObject(ref) {
229
+ const object = this.require(["rev-parse", "--verify", `${ref}^{commit}`], `read certified reference ${ref}`);
230
+ if (!OBJECT_ID.test(object)) {
231
+ throw new AriadneStateError("$git", "Git returned an invalid certified reference object id");
232
+ }
233
+ return object;
234
+ }
235
+ captureRefState() {
236
+ const ref = this.headRef();
237
+ const head = this.refObject(ref);
238
+ const confirmedRef = this.headRef();
239
+ const confirmedHead = this.head();
240
+ if (confirmedRef !== ref || confirmedHead !== head) {
241
+ throw new AriadneStateError("$git", "Ariadne symbolic HEAD reference changed while it was certified");
242
+ }
243
+ return { ref, head };
244
+ }
245
+ assertRefState(expectedRef, expectedHead, phase) {
246
+ const observed = this.captureRefState();
247
+ if (observed.ref !== expectedRef) {
248
+ throw new AriadneStateError("$git", `Ariadne certified symbolic HEAD reference changed ${phase}: expected ${expectedRef}, found ${observed.ref}`);
249
+ }
250
+ if (observed.head !== expectedHead) {
251
+ throw new AriadneStateError("$git", `Ariadne certified HEAD changed ${phase}: expected ${expectedHead}, found ${observed.head}`);
252
+ }
253
+ }
254
+ statusPorcelain() {
255
+ const result = this.capture([
256
+ "status",
257
+ "--porcelain=v1",
258
+ "--untracked-files=all",
259
+ ]);
260
+ if (!result.ok) {
261
+ const detail = result.stderr.trim() || result.stdout.trim();
262
+ throw new AriadneStateError("$git", `Unable to read worktree status (git exited ${result.status})${detail ? `: ${detail}` : ""}`);
263
+ }
264
+ return result.stdout;
265
+ }
266
+ assertReady(expectedBranch, allowActiveDiff) {
267
+ this.assertRepository();
268
+ const actualBranch = this.currentBranch();
269
+ if (actualBranch !== expectedBranch) {
270
+ throw new AriadneStateError("$git", `Ariadne expected branch ${JSON.stringify(expectedBranch)}, found ${JSON.stringify(actualBranch)}`);
271
+ }
272
+ if (!allowActiveDiff && this.statusPorcelain() !== "") {
273
+ throw new AriadneStateError("$git", "Ariadne requires a clean worktree before starting");
274
+ }
275
+ }
276
+ indexPaths(env) {
277
+ const result = this.capture(["ls-files", "-z"], env);
278
+ if (!result.ok) {
279
+ throw new AriadneStateError("$git", "Unable to inspect the Git index");
280
+ }
281
+ return nulSeparatedPaths(result.stdout);
282
+ }
283
+ treePaths(tree) {
284
+ const result = this.capture(["ls-tree", "-r", "--name-only", "-z", tree]);
285
+ if (!result.ok) {
286
+ throw new AriadneStateError("$git", "Unable to inspect the Git tree");
287
+ }
288
+ return nulSeparatedPaths(result.stdout);
289
+ }
290
+ machineLocalIndexPaths(env) {
291
+ return this.indexPaths(env).filter(isMachineLocalPath);
292
+ }
293
+ machineLocalTreePaths(tree) {
294
+ return this.treePaths(tree).filter(isMachineLocalPath);
295
+ }
296
+ assertMachineLocalBoundary() {
297
+ const indexed = this.machineLocalIndexPaths();
298
+ if (indexed.length > 0) {
299
+ throw new AriadneStateError("$git", `Ariadne machine-local artifacts are staged or present in the index: ${indexed.join(", ")}`);
300
+ }
301
+ const tracked = this.machineLocalTreePaths("HEAD");
302
+ if (tracked.length > 0) {
303
+ throw new AriadneStateError("$git", `Ariadne machine-local artifacts are tracked: ${tracked.join(", ")}`);
304
+ }
305
+ for (const probe of MACHINE_LOCAL_IGNORE_PROBES) {
306
+ const ignored = this.capture([
307
+ "check-ignore",
308
+ "--quiet",
309
+ "--no-index",
310
+ "--",
311
+ probe,
312
+ ]);
313
+ if (!ignored.ok) {
314
+ throw new AriadneStateError("$git", `Ariadne machine-local paths must remain effectively ignored before staging: ${probe}`);
315
+ }
316
+ }
317
+ }
318
+ storyDeltaPaths(env) {
319
+ const tracked = this.capture(["diff", "--name-only", "-z"], env);
320
+ if (!tracked.ok) {
321
+ throw new AriadneStateError("$git", "Unable to inspect unstaged Ariadne story paths");
322
+ }
323
+ const untracked = this.capture(["ls-files", "--others", "--exclude-standard", "-z"], env);
324
+ if (!untracked.ok) {
325
+ throw new AriadneStateError("$git", "Unable to inspect untracked Ariadne story paths");
326
+ }
327
+ const candidates = [
328
+ ...new Set([
329
+ ...nulSeparatedPaths(tracked.stdout),
330
+ ...nulSeparatedPaths(untracked.stdout),
331
+ ]),
332
+ ];
333
+ const unsafe = candidates.filter(isMachineLocalPath);
334
+ if (unsafe.length > 0) {
335
+ throw new AriadneStateError("$git", `Ariadne found unignored machine-local paths in the project delta: ${unsafe.join(", ")}`);
336
+ }
337
+ return candidates;
338
+ }
339
+ assertCompleteDelta(env) {
340
+ const remaining = this.storyDeltaPaths(env);
341
+ if (remaining.length > 0) {
342
+ throw new AriadneStateError("$git", `Ariadne refuses an incomplete project delta: ${remaining.join(", ")}`);
343
+ }
344
+ }
345
+ stageAll(expectedHead, expectedRef) {
346
+ this.discardPendingStage();
347
+ this.publishedState = undefined;
348
+ this.assertMachineLocalBoundary();
349
+ const certifiedRef = this.captureRefState();
350
+ if (expectedHead !== undefined && certifiedRef.head !== expectedHead) {
351
+ throw new AriadneStateError("$git", `Ariadne certified HEAD changed before private staging: expected ${expectedHead}, found ${certifiedRef.head}`);
352
+ }
353
+ if (expectedRef !== undefined && certifiedRef.ref !== expectedRef) {
354
+ throw new AriadneStateError("$git", `Ariadne certified symbolic HEAD reference changed before private staging: expected ${expectedRef}, found ${certifiedRef.ref}`);
355
+ }
356
+ const indexPath = this.gitIndexPath();
357
+ const indexStat = fs.lstatSync(indexPath);
358
+ const originalIndex = this.readRegularFile(indexPath, "shared Git index");
359
+ const privateIndexPath = path.join(path.dirname(indexPath), `${path.basename(indexPath)}.ariadne-stage-${randomUUID()}`);
360
+ this.writeExclusive(privateIndexPath, originalIndex, indexStat.mode);
361
+ const env = this.privateIndexEnv(privateIndexPath);
362
+ try {
363
+ const paths = this.storyDeltaPaths();
364
+ for (let offset = 0; offset < paths.length; offset += STAGE_BATCH_SIZE) {
365
+ this.require([
366
+ "add",
367
+ "--all",
368
+ "--",
369
+ ...paths
370
+ .slice(offset, offset + STAGE_BATCH_SIZE)
371
+ .map(literalPathspec),
372
+ ], "stage the Ariadne story delta in the private index", env);
373
+ }
374
+ this.assertCompleteDelta(env);
375
+ const tree = this.require(["write-tree"], "write the certified private Git tree", env);
376
+ if (!OBJECT_ID.test(tree)) {
377
+ throw new AriadneStateError("$git", "Git returned an invalid certified tree object id");
378
+ }
379
+ const unsafe = this.machineLocalTreePaths(tree);
380
+ if (unsafe.length > 0) {
381
+ throw new AriadneStateError("$git", `Ariadne candidate tree contains machine-local artifacts: ${unsafe.join(", ")}`);
382
+ }
383
+ const privateIndex = this.readRegularFile(privateIndexPath, "private Git index");
384
+ this.assertRefState(certifiedRef.ref, certifiedRef.head, "during private staging");
385
+ this.assertMachineLocalBoundary();
386
+ this.assertIndexMatches(indexPath, originalIndex, "shared Git index during private staging");
387
+ this.assertCompleteDelta(env);
388
+ this.pendingStage = {
389
+ parentHead: certifiedRef.head,
390
+ ref: certifiedRef.ref,
391
+ tree,
392
+ indexPath,
393
+ indexMode: indexStat.mode,
394
+ originalIndex,
395
+ privateIndex,
396
+ privateIndexPath,
397
+ };
398
+ return { parentHead: certifiedRef.head, ref: certifiedRef.ref, tree };
399
+ }
400
+ catch (error) {
401
+ this.removePrivateIndex(privateIndexPath);
402
+ throw error;
403
+ }
404
+ }
405
+ assertPrePublication(stage, assertPublicationBoundary) {
406
+ const inspect = () => {
407
+ this.assertRefState(stage.ref, stage.parentHead, "before reference publication");
408
+ this.assertIndexMatches(stage.indexPath, stage.originalIndex, "shared Git index before reference publication");
409
+ this.assertIndexMatches(stage.privateIndexPath, stage.privateIndex, "private Git index before reference publication");
410
+ this.assertMachineLocalBoundary();
411
+ this.assertCompleteDelta(this.privateIndexEnv(stage.privateIndexPath));
412
+ };
413
+ inspect();
414
+ assertPublicationBoundary();
415
+ inspect();
416
+ }
417
+ assertPublishedState(state) {
418
+ this.assertRefState(state.ref, state.commit, "after reference publication");
419
+ this.assertIndexMatches(state.indexPath, state.publishedIndex, "published Git index");
420
+ const tree = this.indexTree(state.publishedIndex, state.indexPath, state.indexMode);
421
+ if (tree !== state.tree) {
422
+ throw new AriadneStateError("$git", "Ariadne published Git index no longer matches the certified tree");
423
+ }
424
+ this.assertMachineLocalBoundary();
425
+ this.assertCompleteDelta();
426
+ }
427
+ disabledHooksPath() {
428
+ return path.join(os.tmpdir(), `ariadne-disabled-hooks-${randomUUID()}`);
429
+ }
430
+ rollbackPublishedState(state) {
431
+ const rolledBackRef = this.capture([
432
+ "-c",
433
+ `core.hooksPath=${this.disabledHooksPath()}`,
434
+ "update-ref",
435
+ "-m",
436
+ `ariadne rollback ${state.commit}`,
437
+ state.ref,
438
+ state.parentHead,
439
+ state.commit,
440
+ ]).ok;
441
+ const restoredIndex = this.restoreIndexIfSafe(state);
442
+ return { ref: rolledBackRef, index: restoredIndex };
443
+ }
444
+ commit(story, expectedHead, assertPublicationBoundary = () => { }, expectedRef) {
445
+ if (/\r|\n/.test(story.id) || /\r|\n/.test(story.title)) {
446
+ throw new AriadneStateError("$git", "Ariadne commit IDs and titles cannot contain newlines");
447
+ }
448
+ const stage = this.pendingStage;
449
+ if (!stage) {
450
+ throw new AriadneStateError("$git", "Ariadne requires a certified private stage before publication");
451
+ }
452
+ if (stage.parentHead !== expectedHead) {
453
+ throw new AriadneStateError("$git", `Ariadne private stage parent differs from the certified HEAD: expected ${expectedHead}, found ${stage.parentHead}`);
454
+ }
455
+ if (expectedRef !== undefined && stage.ref !== expectedRef) {
456
+ throw new AriadneStateError("$git", `Ariadne private stage reference differs from the certified reference: expected ${expectedRef}, found ${stage.ref}`);
457
+ }
458
+ const message = `feat(ariadne): ${story.id} ${story.title}`;
459
+ let commitObject;
460
+ let installed = false;
461
+ let published = false;
462
+ try {
463
+ this.assertPrePublication(stage, assertPublicationBoundary);
464
+ commitObject = this.require(["commit-tree", stage.tree, "-p", stage.parentHead, "-m", message], "create the certified Ariadne commit object");
465
+ if (!OBJECT_ID.test(commitObject)) {
466
+ throw new AriadneStateError("$git", "Git returned an invalid Ariadne commit object id");
467
+ }
468
+ this.assertPrePublication(stage, assertPublicationBoundary);
469
+ this.atomicReplaceIndex(stage.indexPath, stage.originalIndex, stage.privateIndex, stage.indexMode);
470
+ installed = true;
471
+ this.assertIndexMatches(stage.indexPath, stage.privateIndex, "installed certified Git index");
472
+ const installedTree = this.indexTree(stage.privateIndex, stage.indexPath, stage.indexMode);
473
+ if (installedTree !== stage.tree) {
474
+ throw new AriadneStateError("$git", "Installed Git index differs from the certified tree");
475
+ }
476
+ this.assertRefState(stage.ref, stage.parentHead, "immediately before reference publication");
477
+ this.assertMachineLocalBoundary();
478
+ this.assertCompleteDelta();
479
+ assertPublicationBoundary();
480
+ this.assertRefState(stage.ref, stage.parentHead, "at reference publication");
481
+ this.assertIndexMatches(stage.indexPath, stage.privateIndex, "installed certified Git index at reference publication");
482
+ this.assertCompleteDelta();
483
+ this.require([
484
+ "-c",
485
+ `core.hooksPath=${this.disabledHooksPath()}`,
486
+ "update-ref",
487
+ "-m",
488
+ message,
489
+ stage.ref,
490
+ commitObject,
491
+ stage.parentHead,
492
+ ], "publish the certified Ariadne commit");
493
+ published = true;
494
+ const state = {
495
+ commit: commitObject,
496
+ parentHead: stage.parentHead,
497
+ ref: stage.ref,
498
+ tree: stage.tree,
499
+ indexPath: stage.indexPath,
500
+ indexMode: stage.indexMode,
501
+ originalIndex: stage.originalIndex,
502
+ publishedIndex: stage.privateIndex,
503
+ };
504
+ this.assertPublishedState(state);
505
+ this.publishedState = state;
506
+ return commitObject;
507
+ }
508
+ catch (error) {
509
+ let state;
510
+ if (commitObject) {
511
+ state = {
512
+ commit: commitObject,
513
+ parentHead: stage.parentHead,
514
+ ref: stage.ref,
515
+ tree: stage.tree,
516
+ indexPath: stage.indexPath,
517
+ indexMode: stage.indexMode,
518
+ originalIndex: stage.originalIndex,
519
+ publishedIndex: stage.privateIndex,
520
+ };
521
+ }
522
+ if (!published && state) {
523
+ try {
524
+ published = this.refObject(stage.ref) === commitObject;
525
+ }
526
+ catch {
527
+ published = false;
528
+ }
529
+ }
530
+ if (published && state) {
531
+ const recovery = this.rollbackPublishedState(state);
532
+ this.publishedState = undefined;
533
+ throw new AriadneStateError("$git", `Ariadne post-publication verification failed; explicit ref rollback ${recovery.ref ? "succeeded" : "failed"} and original index restore ${recovery.index ? "succeeded" : "was not safe"}`);
534
+ }
535
+ if (installed && state)
536
+ this.restoreIndexIfSafe(state);
537
+ throw error;
538
+ }
539
+ finally {
540
+ this.pendingStage = undefined;
541
+ try {
542
+ this.removePrivateIndex(stage.privateIndexPath);
543
+ }
544
+ catch {
545
+ // The private index is unreachable from the worktree and certified ref.
546
+ // Cleanup failure must never overturn an already verified publication
547
+ // or mask the primary rollback result.
548
+ }
549
+ }
550
+ }
551
+ assertPublished(commit) {
552
+ const state = this.publishedState;
553
+ if (!state || (commit !== undefined && commit !== state.commit)) {
554
+ throw new AriadneStateError("$git", "Ariadne has no matching publication certificate");
555
+ }
556
+ try {
557
+ this.assertPublishedState(state);
558
+ }
559
+ catch {
560
+ const recovery = this.rollbackPublishedState(state);
561
+ this.publishedState = undefined;
562
+ throw new AriadneStateError("$git", `Ariadne published state changed after certification; explicit ref rollback ${recovery.ref ? "succeeded" : "failed"} and original index restore ${recovery.index ? "succeeded" : "was not safe"}`);
563
+ }
564
+ }
565
+ publicationCertificate() {
566
+ const state = this.publishedState;
567
+ if (!state)
568
+ return undefined;
569
+ return {
570
+ commit: state.commit,
571
+ parentHead: state.parentHead,
572
+ ref: state.ref,
573
+ tree: state.tree,
574
+ };
575
+ }
576
+ }
577
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/ariadne/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { AriadnePrd } from "./types.js";
2
+ export declare function normalizeImportedPrd(input: unknown): AriadnePrd;