@codyswann/lisa 4.71.3 → 4.71.5
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/all/copy-overwrite/scripts/lib/npm-update-classifier-cache.mjs +94 -0
- package/all/copy-overwrite/scripts/lib/npm-update-helper-inventory.mjs +1 -0
- package/all/copy-overwrite/scripts/lib/npm-update-helper.mjs +9 -2
- package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +122 -8
- package/all/copy-overwrite/scripts/npm-updater-helper-graph.json +12 -3
- package/dist/cli/hook-refresh-files.d.ts +86 -0
- package/dist/cli/hook-refresh-files.d.ts.map +1 -0
- package/dist/cli/hook-refresh-files.js +209 -0
- package/dist/cli/hook-refresh-files.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/refresh-hooks-cmd.d.ts +27 -0
- package/dist/cli/refresh-hooks-cmd.d.ts.map +1 -0
- package/dist/cli/refresh-hooks-cmd.js +156 -0
- package/dist/cli/refresh-hooks-cmd.js.map +1 -0
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +20 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +21 -9
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/plugin-templates/parity-safety-net.sh +122 -8
- package/package.json +4 -4
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa/hooks/parity-safety-net.sh +122 -8
- package/plugins/lisa-agy/hooks/parity-safety-net.sh +122 -8
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-agy/plugin.json +1 -1
- package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-copilot/hooks/parity-safety-net.sh +122 -8
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/parity-safety-net.sh +122 -8
- package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-agy/plugin.json +1 -1
- package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-agy/plugin.json +1 -1
- package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-agy/plugin.json +1 -1
- package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-agy/plugin.json +1 -1
- package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-agy/plugin.json +1 -1
- package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-agy/plugin.json +1 -1
- package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-agy/plugin.json +1 -1
- package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/src/base/hooks/parity-safety-net.sh +122 -8
- package/rails/copy-overwrite/scripts/lisa-scratch-run.sh +54 -9
- package/scripts/build-plugins.sh +3 -0
- package/scripts/generate-scratch-supervisor-profile.mjs +75 -0
- package/scripts/two-channel-couplings.json +1 -1
- package/typescript/copy-contents/.husky/commit-msg +28 -31
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/** Confine refresh IO and rollback to held native file identities. */
|
|
2
|
+
import { constants } from "node:fs";
|
|
3
|
+
import { lstat, open } from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
const MAXIMUM = 4 * 1024 * 1024;
|
|
6
|
+
/**
|
|
7
|
+
* Compare native objects; failed observations never mean absence.
|
|
8
|
+
* @param left - Fresh native metadata.
|
|
9
|
+
* @param right - Retained metadata.
|
|
10
|
+
* @returns Same device and inode.
|
|
11
|
+
*/
|
|
12
|
+
function sameIdentity(left, right) {
|
|
13
|
+
return left.dev === right.dev && left.ino === right.ino;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Require the pathname still selects its retained object.
|
|
17
|
+
* @param pin - Original native object.
|
|
18
|
+
*/
|
|
19
|
+
export async function checkPath(pin) {
|
|
20
|
+
const actual = await lstat(pin.filename, { bigint: true });
|
|
21
|
+
if (actual.isSymbolicLink() || !sameIdentity(actual, pin.identity))
|
|
22
|
+
throw new Error("Hook path changed after preflight");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read a bounded regular descriptor, detecting growth or torn observations.
|
|
26
|
+
* @param pin - Retained file.
|
|
27
|
+
* @returns Complete bytes.
|
|
28
|
+
*/
|
|
29
|
+
export async function bytes(pin) {
|
|
30
|
+
const before = await pin.handle.stat({ bigint: true });
|
|
31
|
+
if (!before.isFile() ||
|
|
32
|
+
!sameIdentity(before, pin.identity) ||
|
|
33
|
+
before.size < 0n ||
|
|
34
|
+
before.size > BigInt(MAXIMUM))
|
|
35
|
+
throw new Error("Hook refresh requires bounded regular files");
|
|
36
|
+
const size = Number(before.size);
|
|
37
|
+
const buffer = Buffer.alloc(size + 1);
|
|
38
|
+
const cursor = { value: 0 };
|
|
39
|
+
while (cursor.value < buffer.length) {
|
|
40
|
+
const result = await pin.handle.read(buffer, cursor.value, buffer.length - cursor.value, cursor.value);
|
|
41
|
+
if (result.bytesRead === 0)
|
|
42
|
+
break;
|
|
43
|
+
cursor.value += result.bytesRead;
|
|
44
|
+
}
|
|
45
|
+
const after = await pin.handle.stat({ bigint: true });
|
|
46
|
+
if (cursor.value !== size ||
|
|
47
|
+
before.size !== after.size ||
|
|
48
|
+
before.mtimeNs !== after.mtimeNs ||
|
|
49
|
+
before.ctimeNs !== after.ctimeNs)
|
|
50
|
+
throw new Error("Hook changed during descriptor read");
|
|
51
|
+
return buffer.subarray(0, cursor.value);
|
|
52
|
+
}
|
|
53
|
+
/** Bounded original bytes and acknowledged writes on one retained destination. */
|
|
54
|
+
export class HookPair {
|
|
55
|
+
source;
|
|
56
|
+
host;
|
|
57
|
+
sourceBytes;
|
|
58
|
+
hostBytes;
|
|
59
|
+
expected;
|
|
60
|
+
expectedMode;
|
|
61
|
+
/**
|
|
62
|
+
* Keep source and destination authority for one operation.
|
|
63
|
+
* @param source - Read-only package descriptor.
|
|
64
|
+
* @param host - Original writable host descriptor.
|
|
65
|
+
* @param sourceBytes - Authenticated release bytes.
|
|
66
|
+
* @param hostBytes - Bounded original backup.
|
|
67
|
+
*/
|
|
68
|
+
constructor(source, host, sourceBytes, hostBytes) {
|
|
69
|
+
this.source = source;
|
|
70
|
+
this.host = host;
|
|
71
|
+
this.sourceBytes = sourceBytes;
|
|
72
|
+
this.hostBytes = hostBytes;
|
|
73
|
+
this.expected = hostBytes;
|
|
74
|
+
this.expectedMode = Number(host.identity.mode & 511n);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Write only the held inode; verify each acknowledged write before truncation.
|
|
78
|
+
* @param content - Complete replacement or backup bytes.
|
|
79
|
+
*/
|
|
80
|
+
async write(content) {
|
|
81
|
+
const cursor = { value: 0 };
|
|
82
|
+
while (cursor.value < content.length) {
|
|
83
|
+
await this.assertOwnWrites();
|
|
84
|
+
const result = await this.host.handle.write(content, cursor.value, content.length - cursor.value, cursor.value);
|
|
85
|
+
if (result.bytesWritten <= 0)
|
|
86
|
+
throw new Error("Hook descriptor write made no progress");
|
|
87
|
+
const next = Buffer.alloc(Math.max(this.expected.length, cursor.value + result.bytesWritten));
|
|
88
|
+
this.expected.copy(next);
|
|
89
|
+
content.copy(next, cursor.value, cursor.value, cursor.value + result.bytesWritten);
|
|
90
|
+
this.expected = next;
|
|
91
|
+
cursor.value += result.bytesWritten;
|
|
92
|
+
await this.assertOwnWrites();
|
|
93
|
+
}
|
|
94
|
+
await this.assertOwnWrites();
|
|
95
|
+
await this.host.handle.truncate(content.length);
|
|
96
|
+
this.expected = Buffer.from(content);
|
|
97
|
+
}
|
|
98
|
+
/** Reject shared inodes or concurrent bytes before any further mutation. */
|
|
99
|
+
async assertOwnWrites() {
|
|
100
|
+
const info = await this.host.handle.stat({ bigint: true });
|
|
101
|
+
if (info.nlink > 1n ||
|
|
102
|
+
Number(info.mode & 511n) !== this.expectedMode ||
|
|
103
|
+
!(await bytes(this.host)).equals(this.expected))
|
|
104
|
+
throw new Error("Concurrent hook edit or hardlink preserved; rollback refused");
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Change permissions only on the retained inode containing our writes.
|
|
108
|
+
* @param mode - Original authenticated source or backup permissions.
|
|
109
|
+
*/
|
|
110
|
+
async chmod(mode) {
|
|
111
|
+
await this.assertOwnWrites();
|
|
112
|
+
await this.host.handle.chmod(mode);
|
|
113
|
+
this.expectedMode = mode;
|
|
114
|
+
}
|
|
115
|
+
/** Restore only this original inode while it contains our acknowledged writes. */
|
|
116
|
+
async restore() {
|
|
117
|
+
await this.assertOwnWrites();
|
|
118
|
+
await this.write(this.hostBytes);
|
|
119
|
+
await this.chmod(Number(this.host.identity.mode & 511n));
|
|
120
|
+
if (!(await bytes(this.host)).equals(this.hostBytes))
|
|
121
|
+
throw new Error("Descriptor rollback readback differs");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** Operation-local native resources and error accumulation, always finally-closed. */
|
|
125
|
+
export class HookFiles {
|
|
126
|
+
pins = [];
|
|
127
|
+
changed = [];
|
|
128
|
+
failures = [];
|
|
129
|
+
/**
|
|
130
|
+
* Retain a no-follow object before subsequent validation can fail.
|
|
131
|
+
* @param filename - Confined absolute path.
|
|
132
|
+
* @param flags - Native access flags.
|
|
133
|
+
* @returns Original object.
|
|
134
|
+
*/
|
|
135
|
+
async retain(filename, flags) {
|
|
136
|
+
const identity = await lstat(filename, { bigint: true });
|
|
137
|
+
if (identity.isSymbolicLink() ||
|
|
138
|
+
(!identity.isFile() && !identity.isDirectory()))
|
|
139
|
+
throw new Error("Hook refresh requires regular objects");
|
|
140
|
+
const handle = await open(filename, flags | constants.O_NOFOLLOW);
|
|
141
|
+
const pin = { filename, handle, identity };
|
|
142
|
+
this.pins.push(pin);
|
|
143
|
+
if (!sameIdentity(await handle.stat({ bigint: true }), identity))
|
|
144
|
+
throw new Error("Hook identity changed during open");
|
|
145
|
+
return pin;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Hold every closed directory component including the resolved root.
|
|
149
|
+
* @param root - Canonical package or host root.
|
|
150
|
+
* @param relative - Closed directory suffix.
|
|
151
|
+
* @returns Pinned ancestors.
|
|
152
|
+
*/
|
|
153
|
+
async directories(root, relative) {
|
|
154
|
+
const parts = relative.split("/");
|
|
155
|
+
const filenames = [
|
|
156
|
+
root,
|
|
157
|
+
...parts.map((_part, index) => path.join(root, ...parts.slice(0, index + 1))),
|
|
158
|
+
];
|
|
159
|
+
const results = [];
|
|
160
|
+
for (const filename of filenames) {
|
|
161
|
+
const pin = await this.retain(filename, constants.O_RDONLY | constants.O_DIRECTORY);
|
|
162
|
+
if (!pin.identity.isDirectory())
|
|
163
|
+
throw new Error("Hook refresh requires regular directory components");
|
|
164
|
+
results.push(pin);
|
|
165
|
+
}
|
|
166
|
+
return results;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Register a backup immediately before the first possible write.
|
|
170
|
+
* @param pair - Original descriptor and bytes.
|
|
171
|
+
*/
|
|
172
|
+
mark(pair) {
|
|
173
|
+
this.changed.push(pair);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Preserve the original failure and attempt every descriptor-bound rollback.
|
|
177
|
+
* @param original - Original refresh failure.
|
|
178
|
+
*/
|
|
179
|
+
async rollback(original) {
|
|
180
|
+
this.failures.push(original);
|
|
181
|
+
for (const pair of [...this.changed].reverse()) {
|
|
182
|
+
try {
|
|
183
|
+
await pair.restore();
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
this.failures.push(error);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/** Close every retained handle even after preflight, write or rollback errors. */
|
|
191
|
+
async close() {
|
|
192
|
+
for (const pin of [...this.pins].reverse()) {
|
|
193
|
+
try {
|
|
194
|
+
await pin.handle.close();
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
this.failures.push(error);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/** Surface all native failures, preserving the original error object first. */
|
|
202
|
+
assertSuccess() {
|
|
203
|
+
if (this.failures.length === 1)
|
|
204
|
+
throw this.failures[0];
|
|
205
|
+
if (this.failures.length > 1)
|
|
206
|
+
throw new AggregateError(this.failures, "Hook refresh failed; rollback or close also failed");
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=hook-refresh-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook-refresh-files.js","sourceRoot":"","sources":["../../src/cli/hook-refresh-files.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.d.ts
CHANGED
|
@@ -15,12 +15,15 @@ import { runUi } from "./ui-cmd.js";
|
|
|
15
15
|
import { runUpdate } from "./update-cmd.js";
|
|
16
16
|
import { runUpdateCheck } from "./update-check.js";
|
|
17
17
|
import { runVersion } from "./version-cmd.js";
|
|
18
|
+
import { refreshHooks } from "./refresh-hooks-cmd.js";
|
|
18
19
|
/**
|
|
19
20
|
* Injectable collaborators for {@link createProgram}. Defaults wire the real
|
|
20
21
|
* apply action and npm update-check; tests override them to observe the program
|
|
21
22
|
* wiring without touching the registry or the orchestrator.
|
|
22
23
|
*/
|
|
23
24
|
export interface ProgramDependencies {
|
|
25
|
+
/** Refreshes the explicitly selected released hook cohort only. */
|
|
26
|
+
refreshHooks: typeof refreshHooks;
|
|
24
27
|
/** Applies Lisa to a destination (defaults to the real {@link runApply}). */
|
|
25
28
|
runApply: typeof runApply;
|
|
26
29
|
/** Creates a starter-backed project and applies Lisa overlays. */
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAEL,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAEL,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAI/C,OAAO,EAEL,oBAAoB,EACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C,OAAO,EAAyB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,mEAAmE;IACnE,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,QAAQ,CAAC;IAC1B,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,wCAAwC;IACxC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,yDAAyD;IACzD,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,qCAAqC;IACrC,SAAS,EAAE,OAAO,SAAS,CAAC;IAC5B,4EAA4E;IAC5E,iBAAiB,EAAE,OAAO,iBAAiB,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,EAAE,OAAO,OAAO,CAAC;IACxB,8DAA8D;IAC9D,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,iEAAiE;IACjE,uBAAuB,EAAE,OAAO,uBAAuB,CAAC;IACxD,sEAAsE;IACtE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,uDAAuD;IACvD,YAAY,EAAE,OAAO,YAAY,CAAC;IAClC,qEAAqE;IACrE,oBAAoB,EAAE,OAAO,oBAAoB,CAAC;IAClD,iEAAiE;IACjE,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,4EAA4E;IAC5E,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,kEAAkE;IAClE,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,gFAAgF;IAChF,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,0EAA0E;IAC1E,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC/C;AAiND;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,YAAY,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAC9C,OAAO,CAmET;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -26,7 +26,9 @@ import { addRemoteEnvCommand } from "./remote-env-cmd.js";
|
|
|
26
26
|
import { addWorkstationCommand } from "./workstation-cmd.js";
|
|
27
27
|
import { getPackageVersion } from "./version.js";
|
|
28
28
|
import { addEffectivenessCommand } from "./effectiveness-cmd.js";
|
|
29
|
+
import { addHookRefreshCommand, refreshHooks } from "./refresh-hooks-cmd.js";
|
|
29
30
|
const DEFAULT_DEPENDENCIES = {
|
|
31
|
+
refreshHooks,
|
|
30
32
|
runApply,
|
|
31
33
|
runSetupProject,
|
|
32
34
|
runSetupWiki,
|
|
@@ -202,6 +204,7 @@ export function createProgram(dependencies = {}) {
|
|
|
202
204
|
.version(getPackageVersion())
|
|
203
205
|
.option("--no-update-check", "Skip the npm latest-version check");
|
|
204
206
|
addUpdateCheckHook(program, deps);
|
|
207
|
+
addHookRefreshCommand(program, deps.refreshHooks);
|
|
205
208
|
// `apply` is both the explicit subcommand and the default command, so the
|
|
206
209
|
// historical positional form `lisa <destination>` routes here unchanged and
|
|
207
210
|
// produces the same result as `lisa apply <destination>`. Commander rejects a
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEL,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAyB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,kCAAkC,EAClC,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import { type HashLedger } from "../core/lisa-owned-provenance.js";
|
|
3
|
+
/**
|
|
4
|
+
* Register finite refresh without entering full apply.
|
|
5
|
+
* @param program - CLI program.
|
|
6
|
+
* @param execute - Native refresh or command-routing fixture.
|
|
7
|
+
*/
|
|
8
|
+
export declare function addHookRefreshCommand(program: Command, execute: typeof refreshHooks): void;
|
|
9
|
+
/** Installed-package and shipping-history seams for protocol fixtures. */
|
|
10
|
+
export interface HookRefreshDependencies {
|
|
11
|
+
readonly packageDir?: string;
|
|
12
|
+
readonly ledger?: HashLedger;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Select only unique declared guards and required companions.
|
|
16
|
+
* @param selection - Exact comma-separated names.
|
|
17
|
+
* @returns Deterministic filenames.
|
|
18
|
+
*/
|
|
19
|
+
export declare function hookCohort(selection: string): readonly string[];
|
|
20
|
+
/**
|
|
21
|
+
* Refresh a closed cohort with bounded backups on retained original inodes.
|
|
22
|
+
* @param destination - Host root; unrelated dirty files are permitted.
|
|
23
|
+
* @param dependencies - Package/history defaults or fixture inputs.
|
|
24
|
+
* @param selection - Closed guard names.
|
|
25
|
+
*/
|
|
26
|
+
export declare function refreshHooks(destination: string, dependencies?: HookRefreshDependencies, selection?: string): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=refresh-hooks-cmd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-hooks-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/refresh-hooks-cmd.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,kCAAkC,CAAC;AAqB1C;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,YAAY,GAC3B,IAAI,CAcN;AAED,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAY/D;AAqHD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,uBAA4B,EAC1C,SAAS,SAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/** Refresh a finite released hook cohort through retained native file identities. */
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { constants } from "node:fs";
|
|
4
|
+
import { realpath } from "node:fs/promises";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import { classifyHostCopy, } from "../core/lisa-owned-provenance.js";
|
|
8
|
+
import { LISA_OWNED_HASH_LEDGER } from "../core/lisa-owned-hash-ledger.js";
|
|
9
|
+
import { ConsoleLogger } from "../logging/index.js";
|
|
10
|
+
import { HookFiles, HookPair, bytes, checkPath, } from "./hook-refresh-files.js";
|
|
11
|
+
const COHORTS = {
|
|
12
|
+
"parity-safety-net": [
|
|
13
|
+
"parity-safety-net.sh",
|
|
14
|
+
"parity-safety-net-heredoc.py",
|
|
15
|
+
"guard-dedupe.bash",
|
|
16
|
+
],
|
|
17
|
+
"block-no-verify": ["block-no-verify.sh", "guard-dedupe.bash"],
|
|
18
|
+
};
|
|
19
|
+
const PREFIX = "scripts/lisa-hooks";
|
|
20
|
+
/**
|
|
21
|
+
* Register finite refresh without entering full apply.
|
|
22
|
+
* @param program - CLI program.
|
|
23
|
+
* @param execute - Native refresh or command-routing fixture.
|
|
24
|
+
*/
|
|
25
|
+
export function addHookRefreshCommand(program, execute) {
|
|
26
|
+
program
|
|
27
|
+
.command("refresh-hooks")
|
|
28
|
+
.description("Refresh only explicitly selected released guards and companions")
|
|
29
|
+
.argument("<destination>", "Host project root")
|
|
30
|
+
.requiredOption("--guards <names>", "Closed guard cohort: parity-safety-net,block-no-verify")
|
|
31
|
+
.action(async (destination, options) => {
|
|
32
|
+
await execute(destination, {}, options.guards);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Select only unique declared guards and required companions.
|
|
37
|
+
* @param selection - Exact comma-separated names.
|
|
38
|
+
* @returns Deterministic filenames.
|
|
39
|
+
*/
|
|
40
|
+
export function hookCohort(selection) {
|
|
41
|
+
const names = selection.split(",");
|
|
42
|
+
if (new Set(names).size !== names.length ||
|
|
43
|
+
names.some(name => !Object.hasOwn(COHORTS, name)))
|
|
44
|
+
throw new Error("Select unique closed guards: parity-safety-net,block-no-verify");
|
|
45
|
+
return [...new Set(names.flatMap(name => COHORTS[name] ?? []))].sort((left, right) => left.localeCompare(right));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate the installed release through a retained descriptor.
|
|
49
|
+
* @param packageDir - Installed package root.
|
|
50
|
+
* @param files - Lifetime handle registry.
|
|
51
|
+
*/
|
|
52
|
+
async function assertReleasedPackage(packageDir, files) {
|
|
53
|
+
const pin = await files.retain(path.join(packageDir, "package.json"), constants.O_RDONLY);
|
|
54
|
+
const metadata = JSON.parse((await bytes(pin)).toString("utf8"));
|
|
55
|
+
if (typeof metadata !== "object" ||
|
|
56
|
+
metadata === null ||
|
|
57
|
+
!("name" in metadata) ||
|
|
58
|
+
metadata.name !== "@codyswann/lisa" ||
|
|
59
|
+
!("version" in metadata) ||
|
|
60
|
+
typeof metadata.version !== "string" ||
|
|
61
|
+
!/^\d+\.\d+\.\d+$/.test(metadata.version) ||
|
|
62
|
+
!("lisaReleaseTag" in metadata) ||
|
|
63
|
+
metadata.lisaReleaseTag !== `v${metadata.version}` ||
|
|
64
|
+
!("lisaReleaseCommit" in metadata) ||
|
|
65
|
+
typeof metadata.lisaReleaseCommit !== "string" ||
|
|
66
|
+
!/^[0-9a-f]{40}$/.test(metadata.lisaReleaseCommit))
|
|
67
|
+
throw new Error("Hook refresh requires a released Lisa package");
|
|
68
|
+
await checkPath(pin);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Authenticate every companion before writing.
|
|
72
|
+
* @param root - Host root.
|
|
73
|
+
* @param packageDir - Release root.
|
|
74
|
+
* @param ledger - Shipping history.
|
|
75
|
+
* @param hooks - Closed filenames.
|
|
76
|
+
* @param files - Lifetime handle registry.
|
|
77
|
+
* @returns Descriptor-bound cohort and ancestors.
|
|
78
|
+
*/
|
|
79
|
+
async function prepare(root, packageDir, ledger, hooks, files) {
|
|
80
|
+
const dirs = [
|
|
81
|
+
...(await files.directories(root, PREFIX)),
|
|
82
|
+
...(await files.directories(packageDir, `all/copy-overwrite/${PREFIX}`)),
|
|
83
|
+
];
|
|
84
|
+
await assertReleasedPackage(packageDir, files);
|
|
85
|
+
const results = await Promise.allSettled(hooks.map(async (name) => {
|
|
86
|
+
const relative = `${PREFIX}/${name}`;
|
|
87
|
+
const source = await files.retain(path.join(packageDir, "all/copy-overwrite", relative), constants.O_RDONLY);
|
|
88
|
+
const host = await files.retain(path.join(root, relative), constants.O_RDWR);
|
|
89
|
+
if ((await host.handle.stat({ bigint: true })).nlink !== 1n)
|
|
90
|
+
throw new Error("Hook refresh requires single-link host files");
|
|
91
|
+
const sourceBytes = await bytes(source);
|
|
92
|
+
const hostBytes = await bytes(host);
|
|
93
|
+
if (!(ledger[relative] ?? []).includes(createHash("sha256").update(sourceBytes).digest("hex")))
|
|
94
|
+
throw new Error(`${relative}: packaged hook is not recorded shipping source`);
|
|
95
|
+
const verdict = classifyHostCopy(relative, hostBytes, sourceBytes, ledger);
|
|
96
|
+
if (verdict.kind !== "identical" && verdict.kind !== "provably-stale")
|
|
97
|
+
throw new Error(`${relative}: preserved ${verdict.kind} host hook`);
|
|
98
|
+
return new HookPair(source, host, sourceBytes, hostBytes);
|
|
99
|
+
}));
|
|
100
|
+
const failed = results.find(result => result.status === "rejected");
|
|
101
|
+
if (failed?.status === "rejected")
|
|
102
|
+
throw failed.reason;
|
|
103
|
+
const pairs = results.flatMap(result => result.status === "fulfilled" ? [result.value] : []);
|
|
104
|
+
return { dirs, pairs };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Recheck original paths, source bytes and untouched host bytes/mode.
|
|
108
|
+
* @param pair - Retained companion.
|
|
109
|
+
* @param dirs - Retained ancestor authority.
|
|
110
|
+
*/
|
|
111
|
+
async function beforeWrite(pair, dirs) {
|
|
112
|
+
for (const pin of [...dirs, pair.source, pair.host])
|
|
113
|
+
await checkPath(pin);
|
|
114
|
+
const actual = await pair.host.handle.stat({ bigint: true });
|
|
115
|
+
if (actual.nlink !== 1n ||
|
|
116
|
+
actual.mode !== pair.host.identity.mode ||
|
|
117
|
+
!(await bytes(pair.source)).equals(pair.sourceBytes) ||
|
|
118
|
+
!(await bytes(pair.host)).equals(pair.hostBytes))
|
|
119
|
+
throw new Error("Hook changed after preflight");
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Refresh a closed cohort with bounded backups on retained original inodes.
|
|
123
|
+
* @param destination - Host root; unrelated dirty files are permitted.
|
|
124
|
+
* @param dependencies - Package/history defaults or fixture inputs.
|
|
125
|
+
* @param selection - Closed guard names.
|
|
126
|
+
*/
|
|
127
|
+
export async function refreshHooks(destination, dependencies = {}, selection = "parity-safety-net") {
|
|
128
|
+
if (!constants.O_NOFOLLOW || !constants.O_DIRECTORY)
|
|
129
|
+
throw new Error("Hook refresh requires native no-follow descriptor support");
|
|
130
|
+
const root = await realpath(path.resolve(destination));
|
|
131
|
+
const packageDir = await realpath(dependencies.packageDir ??
|
|
132
|
+
path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../.."));
|
|
133
|
+
const files = new HookFiles();
|
|
134
|
+
try {
|
|
135
|
+
const { dirs, pairs } = await prepare(root, packageDir, dependencies.ledger ?? LISA_OWNED_HASH_LEDGER, hookCohort(selection), files);
|
|
136
|
+
for (const pair of pairs) {
|
|
137
|
+
await beforeWrite(pair, dirs);
|
|
138
|
+
files.mark(pair);
|
|
139
|
+
await pair.write(pair.sourceBytes);
|
|
140
|
+
await pair.chmod(Number(pair.source.identity.mode & 511n));
|
|
141
|
+
for (const pin of [...dirs, pair.source, pair.host])
|
|
142
|
+
await checkPath(pin);
|
|
143
|
+
if (!(await bytes(pair.host)).equals(pair.sourceBytes))
|
|
144
|
+
throw new Error("Hook refresh readback differs");
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
await files.rollback(error);
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
await files.close();
|
|
152
|
+
}
|
|
153
|
+
files.assertSuccess();
|
|
154
|
+
new ConsoleLogger().success(`Refreshed only ${selection} and its verified companions`);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=refresh-hooks-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-hooks-cmd.js","sourceRoot":"","sources":["../../src/cli/refresh-hooks-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"lisa-owned-hash-ledger.d.ts","sourceRoot":"","sources":["../../src/core/lisa-owned-hash-ledger.ts"],"names":[],"mappings":"AACA,6EAA6E;AAE7E;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAuyDjC,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA0sDjC,CAAC"}
|
|
@@ -539,6 +539,9 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
539
539
|
"1c0c9d1442d65cc848a80bce010fc0d7d9f3792b9080df03ce3286177b4d37a0",
|
|
540
540
|
"bf1f8bd4cfd5317fb9078e0efaa8c66850616a29bf61968baacf2a1842e26a1b",
|
|
541
541
|
]),
|
|
542
|
+
"scripts/lib/npm-update-classifier-cache.mjs": Object.freeze([
|
|
543
|
+
"92272e40617ca9d620ff47e3ffe07a0e5bc1a3949d139752aa2675398ab49f9b",
|
|
544
|
+
]),
|
|
542
545
|
"scripts/lib/npm-update-contract.mjs": Object.freeze([
|
|
543
546
|
"6905dd9d5747702ab502b66bcb38b6d4dcb30127f02466d29b3905f53c27981d",
|
|
544
547
|
"c0d43613e4675bd3ec4585040d87a21821ec40b32739502d9124863f4e3e6ee0",
|
|
@@ -610,10 +613,12 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
610
613
|
"scripts/lib/npm-update-helper-inventory.mjs": Object.freeze([
|
|
611
614
|
"009027d139bad70f711306101dfa8c3c1e6d3ff2989820b1d8eff02b87504323",
|
|
612
615
|
"33ab2fcba24552a378a75314fe021b25ae6862a6e3c7c4f6b83250f9749264bb",
|
|
616
|
+
"3561c20458d74eff34650d6b4366f4f03ed4e7825ae886ea78394f63f98a18bb",
|
|
613
617
|
"39bf4d553af77101e03946ebd4769a303af1098d8f5f938c3a3259695d59d065",
|
|
614
618
|
"da1bd212a20406c060d26c52bc8e67dac3fef51afafb604042b9c6e26b07bdb6",
|
|
615
619
|
]),
|
|
616
620
|
"scripts/lib/npm-update-helper.mjs": Object.freeze([
|
|
621
|
+
"41e5a37769ec3737829ed1948d0a1442792b25d120f0fb4f4b5e424a50f34705",
|
|
617
622
|
"d6ad6d094f56a1d08fabbae7e2df90779f7912d3380a4c9e792b305863901dda",
|
|
618
623
|
"f4012383184237aa0a7ca21847864fdcc2241f94fd3d2cd6d82a6345763e5824",
|
|
619
624
|
]),
|
|
@@ -1257,6 +1262,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
1257
1262
|
"1bf3512bb94923a6cb25b1e7a619a3fc8e1336bffa16f499b459aaee3eaed66d",
|
|
1258
1263
|
"1d4fbe135f1bb4e861d286a6512ed201d4522250dfe3f9eba6584bc5ff166a95",
|
|
1259
1264
|
"2b1ca7d317dea3af106df1a74b1718e3df9c18e76e9d9d769aa3271b7abf8a3f",
|
|
1265
|
+
"2b3d806137b34bfdd21be9e76ca5159f7b11fbd3ca9223d99bef298e42f49c0d",
|
|
1260
1266
|
"2bdba97c9a1ccc0e70247ee02b5eff02c042aba83b8e7fed3dfbf29a8a83b394",
|
|
1261
1267
|
"2da3ad6d7680b61e20b48022e57b8960e063266cb26c197c2c8daa89adf4b648",
|
|
1262
1268
|
"388cf8847581d96a1ff8ea98290a33a5f96d67cdd502ea807a0b8d88efe90e19",
|
|
@@ -1520,6 +1526,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
1520
1526
|
"scripts/lisa-scratch-run.sh": Object.freeze([
|
|
1521
1527
|
"375f52fc823be97c9d12a774b15ad353c5ef2d99e8073cc7ca94dfbdcb62fe72",
|
|
1522
1528
|
"53dc40fb45907273b435a280a22ceb65d4edf7aecec60e154801552a3b219464",
|
|
1529
|
+
"6fdec1ad0441d7636dc6749c44a23167baf7b75004f156b8a7d4ce1c18c790b7",
|
|
1523
1530
|
"ef3c38f8d1d2f48ba265e21f841310d25142228dac57b0a5742c7d902113ca9a",
|
|
1524
1531
|
]),
|
|
1525
1532
|
"scripts/lisa-self-update.mjs": Object.freeze([
|
|
@@ -1755,6 +1762,7 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
1755
1762
|
"5e8881466a13bdfcaefa5ae056c59e9fc869c85f83701ef3d770473aaece3b12",
|
|
1756
1763
|
"617976fa328bde110f953967490e2cacb22fa3c13963b1ccece71b830feb929f",
|
|
1757
1764
|
"6356484022fc514a64983af62765de0cb0234a3a2747bada9b585a554c545547",
|
|
1765
|
+
"64723c62b50713cf171f5e1a2727375ce304682e5735332b6e768de112cc2f9c",
|
|
1758
1766
|
"647f264e008ed9df4703ebbedc3aad71991c1c11ce6f77da69794e697448cf97",
|
|
1759
1767
|
"6ae05afed835da768a443d2286fff480925f6a81633ccbc540c859a50a720fe2",
|
|
1760
1768
|
"70117ada2fe96b4697f695f860547a0e47eb7d20e864eac929047722cb3e6e2c",
|
|
@@ -1766,8 +1774,10 @@ export const LISA_OWNED_HASH_LEDGER = Object.freeze({
|
|
|
1766
1774
|
"baa8ffc248ce29c30d10b579960b34b7836c7d7f47651ced3cbb551dfee65291",
|
|
1767
1775
|
"bddb9b01bb7553dfd54b13d128b053d8def52bee69b591906aa6ce4a270aafcd",
|
|
1768
1776
|
"c11328d3d4fd6d0f82ad51afc21f710877bd8dd2643c9d1a7d0fd2fed60358eb",
|
|
1777
|
+
"d2c230dbd3530523e8d3abd6c66a5584987a2588b6861394522447854fa89f0e",
|
|
1769
1778
|
"d2ea6e10d3023a39f4e63121858beabe66e7a8139eaabd1ce9593212fd8c5980",
|
|
1770
1779
|
"e5c773e09e6ce00c02300d29be403fadcee92e439fd6ae25e28c5f3c93af8ccc",
|
|
1780
|
+
"e9048ea95f21e9f6f400853da11a23f1159368d1768215c968a1d6d357f8bbbf",
|
|
1771
1781
|
"f558a2582e106b84f26e48572ac3b3cc3b45aa20988d1b7ed618c2579b05b251",
|
|
1772
1782
|
"fd96a6f85f2a3dae85c032d7a32a31258305e04aaaa0aa8ed5c25a39e5a3d73c",
|
|
1773
1783
|
"fe96d8b0227ca76e2ee92bcc233fa60b011d0990e69c35e80fc752ca7977e6b9",
|
|
@@ -2354,6 +2364,9 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
2354
2364
|
"1c0c9d1442d65cc848a80bce010fc0d7d9f3792b9080df03ce3286177b4d37a0",
|
|
2355
2365
|
"bf1f8bd4cfd5317fb9078e0efaa8c66850616a29bf61968baacf2a1842e26a1b",
|
|
2356
2366
|
]),
|
|
2367
|
+
"scripts/lib/npm-update-classifier-cache.mjs": Object.freeze([
|
|
2368
|
+
"92272e40617ca9d620ff47e3ffe07a0e5bc1a3949d139752aa2675398ab49f9b",
|
|
2369
|
+
]),
|
|
2357
2370
|
"scripts/lib/npm-update-contract.mjs": Object.freeze([
|
|
2358
2371
|
"6905dd9d5747702ab502b66bcb38b6d4dcb30127f02466d29b3905f53c27981d",
|
|
2359
2372
|
"c0d43613e4675bd3ec4585040d87a21821ec40b32739502d9124863f4e3e6ee0",
|
|
@@ -2425,10 +2438,12 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
2425
2438
|
"scripts/lib/npm-update-helper-inventory.mjs": Object.freeze([
|
|
2426
2439
|
"009027d139bad70f711306101dfa8c3c1e6d3ff2989820b1d8eff02b87504323",
|
|
2427
2440
|
"33ab2fcba24552a378a75314fe021b25ae6862a6e3c7c4f6b83250f9749264bb",
|
|
2441
|
+
"3561c20458d74eff34650d6b4366f4f03ed4e7825ae886ea78394f63f98a18bb",
|
|
2428
2442
|
"39bf4d553af77101e03946ebd4769a303af1098d8f5f938c3a3259695d59d065",
|
|
2429
2443
|
"da1bd212a20406c060d26c52bc8e67dac3fef51afafb604042b9c6e26b07bdb6",
|
|
2430
2444
|
]),
|
|
2431
2445
|
"scripts/lib/npm-update-helper.mjs": Object.freeze([
|
|
2446
|
+
"41e5a37769ec3737829ed1948d0a1442792b25d120f0fb4f4b5e424a50f34705",
|
|
2432
2447
|
"d6ad6d094f56a1d08fabbae7e2df90779f7912d3380a4c9e792b305863901dda",
|
|
2433
2448
|
"f4012383184237aa0a7ca21847864fdcc2241f94fd3d2cd6d82a6345763e5824",
|
|
2434
2449
|
]),
|
|
@@ -3026,6 +3041,7 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
3026
3041
|
"14fc5e292aebf83dd24fec12fb32e2beb509a9324f127a24a64d5c5d4d05c576",
|
|
3027
3042
|
"1bf3512bb94923a6cb25b1e7a619a3fc8e1336bffa16f499b459aaee3eaed66d",
|
|
3028
3043
|
"1d4fbe135f1bb4e861d286a6512ed201d4522250dfe3f9eba6584bc5ff166a95",
|
|
3044
|
+
"2b3d806137b34bfdd21be9e76ca5159f7b11fbd3ca9223d99bef298e42f49c0d",
|
|
3029
3045
|
"2bdba97c9a1ccc0e70247ee02b5eff02c042aba83b8e7fed3dfbf29a8a83b394",
|
|
3030
3046
|
"2da3ad6d7680b61e20b48022e57b8960e063266cb26c197c2c8daa89adf4b648",
|
|
3031
3047
|
"388cf8847581d96a1ff8ea98290a33a5f96d67cdd502ea807a0b8d88efe90e19",
|
|
@@ -3268,6 +3284,7 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
3268
3284
|
"scripts/lisa-scratch-run.sh": Object.freeze([
|
|
3269
3285
|
"375f52fc823be97c9d12a774b15ad353c5ef2d99e8073cc7ca94dfbdcb62fe72",
|
|
3270
3286
|
"53dc40fb45907273b435a280a22ceb65d4edf7aecec60e154801552a3b219464",
|
|
3287
|
+
"6fdec1ad0441d7636dc6749c44a23167baf7b75004f156b8a7d4ce1c18c790b7",
|
|
3271
3288
|
"ef3c38f8d1d2f48ba265e21f841310d25142228dac57b0a5742c7d902113ca9a",
|
|
3272
3289
|
]),
|
|
3273
3290
|
"scripts/lisa-self-update.mjs": Object.freeze([
|
|
@@ -3500,6 +3517,7 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
3500
3517
|
"5e8881466a13bdfcaefa5ae056c59e9fc869c85f83701ef3d770473aaece3b12",
|
|
3501
3518
|
"617976fa328bde110f953967490e2cacb22fa3c13963b1ccece71b830feb929f",
|
|
3502
3519
|
"6356484022fc514a64983af62765de0cb0234a3a2747bada9b585a554c545547",
|
|
3520
|
+
"64723c62b50713cf171f5e1a2727375ce304682e5735332b6e768de112cc2f9c",
|
|
3503
3521
|
"647f264e008ed9df4703ebbedc3aad71991c1c11ce6f77da69794e697448cf97",
|
|
3504
3522
|
"6ae05afed835da768a443d2286fff480925f6a81633ccbc540c859a50a720fe2",
|
|
3505
3523
|
"70117ada2fe96b4697f695f860547a0e47eb7d20e864eac929047722cb3e6e2c",
|
|
@@ -3511,8 +3529,10 @@ export const LISA_OWNED_HASH_HISTORY_DERIVED = Object.freeze({
|
|
|
3511
3529
|
"baa8ffc248ce29c30d10b579960b34b7836c7d7f47651ced3cbb551dfee65291",
|
|
3512
3530
|
"bddb9b01bb7553dfd54b13d128b053d8def52bee69b591906aa6ce4a270aafcd",
|
|
3513
3531
|
"c11328d3d4fd6d0f82ad51afc21f710877bd8dd2643c9d1a7d0fd2fed60358eb",
|
|
3532
|
+
"d2c230dbd3530523e8d3abd6c66a5584987a2588b6861394522447854fa89f0e",
|
|
3514
3533
|
"d2ea6e10d3023a39f4e63121858beabe66e7a8139eaabd1ce9593212fd8c5980",
|
|
3515
3534
|
"e5c773e09e6ce00c02300d29be403fadcee92e439fd6ae25e28c5f3c93af8ccc",
|
|
3535
|
+
"e9048ea95f21e9f6f400853da11a23f1159368d1768215c968a1d6d357f8bbbf",
|
|
3516
3536
|
"f558a2582e106b84f26e48572ac3b3cc3b45aa20988d1b7ed618c2579b05b251",
|
|
3517
3537
|
"fd96a6f85f2a3dae85c032d7a32a31258305e04aaaa0aa8ed5c25a39e5a3d73c",
|
|
3518
3538
|
"fe96d8b0227ca76e2ee92bcc233fa60b011d0990e69c35e80fc752ca7977e6b9",
|