@codyswann/lisa 4.73.0 → 4.73.2
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/history-secret-git.mjs +158 -5
- package/all/copy-overwrite/scripts/lib/npm-update-bun.mjs +6 -2
- package/all/copy-overwrite/scripts/lib/npm-update-contract.mjs +25 -1
- package/all/copy-overwrite/scripts/lisa-history-secrets.mjs +17 -3
- package/all/copy-overwrite/scripts/lisa-hooks/block-blind-automerge.sh +86 -7
- package/all/copy-overwrite/scripts/lisa-hooks/block-managed-file-edits.sh +7 -1
- package/all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh +62 -7
- package/all/copy-overwrite/scripts/lisa-rails-prepush.mjs +4 -1
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +191 -5
- package/all/copy-overwrite/scripts/npm-updater-helper-graph.json +6 -6
- package/all/deletions.json +19 -2
- package/dist/codex/scripts/block-no-verify.sh +62 -7
- package/dist/core/config.d.ts +16 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +82 -0
- package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
- package/dist/core/lisa.d.ts +31 -0
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +69 -4
- package/dist/core/lisa.js.map +1 -1
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/retire-unmodified.d.ts +66 -0
- package/dist/core/retire-unmodified.d.ts.map +1 -0
- package/dist/core/retire-unmodified.js +244 -0
- package/dist/core/retire-unmodified.js.map +1 -0
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +23 -17
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/plugin-templates/block-managed-file-edits.sh +7 -1
- package/dist/opencode/plugin-templates/block-no-verify.sh +62 -7
- 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/auto-update.mjs +69 -1
- package/plugins/lisa/hooks/block-blind-automerge.sh +86 -7
- package/plugins/lisa/hooks/block-managed-file-edits.sh +7 -1
- package/plugins/lisa/hooks/block-no-verify.agy.sh +62 -7
- package/plugins/lisa/hooks/block-no-verify.sh +62 -7
- package/plugins/lisa-agy/hooks/block-blind-automerge.sh +86 -7
- package/plugins/lisa-agy/hooks/block-managed-file-edits.sh +7 -1
- package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +62 -7
- 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/auto-update.mjs +69 -1
- package/plugins/lisa-copilot/hooks/block-blind-automerge.sh +86 -7
- package/plugins/lisa-copilot/hooks/block-managed-file-edits.sh +7 -1
- package/plugins/lisa-copilot/hooks/block-no-verify.sh +62 -7
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/auto-update.mjs +69 -1
- package/plugins/lisa-cursor/hooks/block-blind-automerge.sh +86 -7
- package/plugins/lisa-cursor/hooks/block-managed-file-edits.sh +7 -1
- package/plugins/lisa-cursor/hooks/block-no-verify.sh +62 -7
- 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/auto-update.mjs +69 -1
- package/plugins/src/base/hooks/block-blind-automerge.sh +86 -7
- package/plugins/src/base/hooks/block-managed-file-edits.sh +7 -1
- package/plugins/src/base/hooks/block-no-verify.agy.sh +62 -7
- package/plugins/src/base/hooks/block-no-verify.sh +62 -7
- package/scripts/check-shipped-surface-removals.mjs +22 -2
|
@@ -12,6 +12,8 @@ import { createHash } from "node:crypto";
|
|
|
12
12
|
import {
|
|
13
13
|
chmodSync,
|
|
14
14
|
existsSync,
|
|
15
|
+
lstatSync,
|
|
16
|
+
readlinkSync,
|
|
15
17
|
mkdirSync,
|
|
16
18
|
readFileSync,
|
|
17
19
|
renameSync,
|
|
@@ -4515,7 +4517,28 @@ export function commitPendingLisaUpdate(ref, contract, cwd = process.cwd()) {
|
|
|
4515
4517
|
rmSync(marker, { force: true });
|
|
4516
4518
|
return;
|
|
4517
4519
|
}
|
|
4520
|
+
// The marker names paths, and a path is not the update: an edit made to one
|
|
4521
|
+
// of these files after the session-start update would otherwise be swept
|
|
4522
|
+
// into the update commit under its message (CodySwannGT/lisa#4393). Commit
|
|
4523
|
+
// only when every file still holds the bytes the update recorded; a legacy
|
|
4524
|
+
// marker with no digests cannot prove that, so it is left for a human too.
|
|
4525
|
+
const changed = changedSinceUpdate(pending, files, cwd);
|
|
4526
|
+
if (changed.length > 0) {
|
|
4527
|
+
console.error(
|
|
4528
|
+
`The pending Lisa ${pending.to} update was NOT committed automatically: ${pending.digests ? "these files changed after the update wrote them" : "its record predates content checks, so these files cannot be proved unchanged"}: ${changed.join(", ")}. Review them and commit the Lisa update as its own commit before feature work.`
|
|
4529
|
+
);
|
|
4530
|
+
return;
|
|
4531
|
+
}
|
|
4532
|
+
// Snapshot the index entries for these paths so a failed commit puts back
|
|
4533
|
+
// exactly what the user had staged, rather than unstaging it.
|
|
4534
|
+
const snapshot = run("git", ["ls-files", "-s", "-z", "--", ...files], {
|
|
4535
|
+
cwd,
|
|
4536
|
+
}).stdout;
|
|
4537
|
+
// Set once the commit has landed, so a later failure (reading its tree,
|
|
4538
|
+
// undoing it) is never reported as "not committed".
|
|
4539
|
+
let landed = false;
|
|
4518
4540
|
try {
|
|
4541
|
+
const previous = git(["rev-parse", "--verify", "HEAD"], { cwd });
|
|
4519
4542
|
git(["add", "--", ...files], { cwd });
|
|
4520
4543
|
// `--only` commits exactly these paths, so a feature edit the user had
|
|
4521
4544
|
// already staged stays staged and out of the update commit. The project's
|
|
@@ -4532,19 +4555,182 @@ export function commitPendingLisaUpdate(ref, contract, cwd = process.cwd()) {
|
|
|
4532
4555
|
],
|
|
4533
4556
|
{ cwd, timeout: 10 * 60 * 1000 }
|
|
4534
4557
|
);
|
|
4558
|
+
landed = true;
|
|
4559
|
+
// `--only` reads the paths again at commit time, and the project's hooks
|
|
4560
|
+
// run in between, so the comparison above does not by itself bind what
|
|
4561
|
+
// was committed. Check the commit's own tree against the recorded
|
|
4562
|
+
// identities; if anything differs, the commit is undone and the update
|
|
4563
|
+
// left for a human, exactly as if the check above had failed.
|
|
4564
|
+
const drifted = committedDrift(pending.digests, files, cwd);
|
|
4565
|
+
if (drifted.length > 0) {
|
|
4566
|
+
git(["reset", "--soft", previous], { cwd });
|
|
4567
|
+
landed = false;
|
|
4568
|
+
const restored = restoreIndexEntries(snapshot, files, cwd);
|
|
4569
|
+
console.error(
|
|
4570
|
+
`The pending Lisa ${pending.to} update was NOT committed automatically: these files changed while it was being committed: ${drifted.join(", ")}. The commit was undone${restored ? "" : ", but restoring what was staged for them failed; check `git status`"}. Review them and commit the Lisa update as its own commit before feature work.`
|
|
4571
|
+
);
|
|
4572
|
+
return;
|
|
4573
|
+
}
|
|
4535
4574
|
rmSync(marker, { force: true });
|
|
4536
4575
|
console.log(
|
|
4537
4576
|
`Committed the pending Lisa ${pending.to} update first, as its own commit, under ${ref}.`
|
|
4538
4577
|
);
|
|
4539
4578
|
} catch (error) {
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4579
|
+
if (landed) {
|
|
4580
|
+
console.error(
|
|
4581
|
+
`The pending Lisa ${pending.to} update was committed as HEAD, but it could not be verified or undone (${String(error?.message ?? error).split("\n")[0]}). Inspect HEAD before feature work; if it holds anything besides the Lisa update, undo it with git reset --soft HEAD~1.`
|
|
4582
|
+
);
|
|
4583
|
+
return;
|
|
4584
|
+
}
|
|
4585
|
+
const restored = restoreIndexEntries(snapshot, files, cwd);
|
|
4544
4586
|
console.error(
|
|
4545
|
-
`The pending Lisa ${pending.to} update could not be committed (${String(error?.message ?? error).split("\n")[0]}). Its files are still in the working tree; commit them as their own commit before feature work
|
|
4587
|
+
`The pending Lisa ${pending.to} update could not be committed (${String(error?.message ?? error).split("\n")[0]}). Its files are still in the working tree; commit them as their own commit before feature work.${restored ? "" : " Restoring what was staged for them beforehand also failed; check `git status` before committing."}`
|
|
4588
|
+
);
|
|
4589
|
+
}
|
|
4590
|
+
}
|
|
4591
|
+
|
|
4592
|
+
/**
|
|
4593
|
+
* Pending files whose current bytes differ from what the update recorded.
|
|
4594
|
+
*
|
|
4595
|
+
* Recomputed exactly as the auto-update's `workingTreeDigests` records them:
|
|
4596
|
+
* `<100644|100755> <blob id>` for a regular file, `120000 link:<target>` for a
|
|
4597
|
+
* symlink (never hash-object, which follows the link), null for an absent
|
|
4598
|
+
* path. A path the record does not carry, or one that is neither, counts as
|
|
4599
|
+
* changed.
|
|
4600
|
+
* @param {{digests?: Record<string, string | null>}} pending The marker.
|
|
4601
|
+
* @param {string[]} files Pending paths still dirty.
|
|
4602
|
+
* @param {string} cwd Repository directory.
|
|
4603
|
+
* @returns {string[]} The paths that cannot be proved unchanged.
|
|
4604
|
+
*/
|
|
4605
|
+
function changedSinceUpdate(pending, files, cwd) {
|
|
4606
|
+
const recorded = pending.digests;
|
|
4607
|
+
if (!recorded || typeof recorded !== "object") return [...files];
|
|
4608
|
+
const current = new Map();
|
|
4609
|
+
const present = [];
|
|
4610
|
+
for (const file of files) {
|
|
4611
|
+
let stat;
|
|
4612
|
+
try {
|
|
4613
|
+
stat = lstatSync(resolve(cwd, file));
|
|
4614
|
+
} catch {
|
|
4615
|
+
current.set(file, null);
|
|
4616
|
+
continue;
|
|
4617
|
+
}
|
|
4618
|
+
// Same identity the auto-update recorded: git mode plus blob id for a
|
|
4619
|
+
// file (so an executable-bit change alone counts), the link target for a
|
|
4620
|
+
// symlink (hash-object would follow it to whatever it now reaches).
|
|
4621
|
+
if (stat.isSymbolicLink()) {
|
|
4622
|
+
// A link that vanishes before it can be read stays unrecorded, which
|
|
4623
|
+
// counts as changed.
|
|
4624
|
+
try {
|
|
4625
|
+
current.set(file, `120000 link:${readlinkSync(resolve(cwd, file))}`);
|
|
4626
|
+
} catch {
|
|
4627
|
+
continue;
|
|
4628
|
+
}
|
|
4629
|
+
} else if (stat.isFile())
|
|
4630
|
+
present.push([file, stat.mode & 0o111 ? "100755" : "100644"]);
|
|
4631
|
+
}
|
|
4632
|
+
if (present.length > 0) {
|
|
4633
|
+
const ids = run(
|
|
4634
|
+
"git",
|
|
4635
|
+
["hash-object", "--", ...present.map(([file]) => file)],
|
|
4636
|
+
{
|
|
4637
|
+
cwd,
|
|
4638
|
+
allowFailure: true,
|
|
4639
|
+
}
|
|
4640
|
+
)
|
|
4641
|
+
.stdout.split("\n")
|
|
4642
|
+
.map(line => line.trim())
|
|
4643
|
+
.filter(Boolean);
|
|
4644
|
+
if (ids.length !== present.length) return [...files];
|
|
4645
|
+
present.forEach(([file, mode], index) =>
|
|
4646
|
+
current.set(file, `${mode} ${ids[index]}`)
|
|
4546
4647
|
);
|
|
4547
4648
|
}
|
|
4649
|
+
return files.filter(
|
|
4650
|
+
file =>
|
|
4651
|
+
!Object.hasOwn(recorded, file) ||
|
|
4652
|
+
!current.has(file) ||
|
|
4653
|
+
current.get(file) !== recorded[file]
|
|
4654
|
+
);
|
|
4655
|
+
}
|
|
4656
|
+
|
|
4657
|
+
/**
|
|
4658
|
+
* Pending files whose entry in the new HEAD commit is not the recorded identity.
|
|
4659
|
+
*
|
|
4660
|
+
* Reads the commit's tree, not the working tree: a file absent from the record
|
|
4661
|
+
* as null must be absent from HEAD, a `<mode> <blob>` record must match the
|
|
4662
|
+
* tree entry exactly, and a `120000 link:<target>` record must be a symlink
|
|
4663
|
+
* entry whose blob is that target.
|
|
4664
|
+
* @param {Record<string, string | null>} recorded The marker's digests.
|
|
4665
|
+
* @param {string[]} files Paths the commit carried.
|
|
4666
|
+
* @param {string} cwd Repository directory.
|
|
4667
|
+
* @returns {string[]} The paths the commit does not hold as recorded.
|
|
4668
|
+
*/
|
|
4669
|
+
function committedDrift(recorded, files, cwd) {
|
|
4670
|
+
const listing = run("git", ["ls-tree", "-z", "HEAD", "--", ...files], {
|
|
4671
|
+
cwd,
|
|
4672
|
+
allowFailure: true,
|
|
4673
|
+
});
|
|
4674
|
+
// probe-direction: fail-closed — an unreadable tree counts every path as
|
|
4675
|
+
// drifted, which undoes the commit rather than trusting it.
|
|
4676
|
+
if (listing.status !== 0) return [...files];
|
|
4677
|
+
const entries = new Map();
|
|
4678
|
+
for (const record of listing.stdout.split("\0").filter(Boolean)) {
|
|
4679
|
+
const tab = record.indexOf("\t");
|
|
4680
|
+
const [mode, , blob] = record.slice(0, tab).split(" ");
|
|
4681
|
+
entries.set(record.slice(tab + 1), { mode, blob });
|
|
4682
|
+
}
|
|
4683
|
+
return files.filter(file => {
|
|
4684
|
+
const expected = recorded[file];
|
|
4685
|
+
const entry = entries.get(file);
|
|
4686
|
+
if (expected === null) return entry !== undefined;
|
|
4687
|
+
if (entry === undefined) return true;
|
|
4688
|
+
if (expected.startsWith("120000 link:")) {
|
|
4689
|
+
if (entry.mode !== "120000") return true;
|
|
4690
|
+
const target = run("git", ["cat-file", "blob", entry.blob], {
|
|
4691
|
+
cwd,
|
|
4692
|
+
allowFailure: true,
|
|
4693
|
+
});
|
|
4694
|
+
return (
|
|
4695
|
+
target.status !== 0 ||
|
|
4696
|
+
target.stdout !== expected.slice("120000 link:".length)
|
|
4697
|
+
);
|
|
4698
|
+
}
|
|
4699
|
+
return `${entry.mode} ${entry.blob}` !== expected;
|
|
4700
|
+
});
|
|
4701
|
+
}
|
|
4702
|
+
|
|
4703
|
+
/**
|
|
4704
|
+
* Put the index entries for `files` back to a `git ls-files -s -z` snapshot.
|
|
4705
|
+
*
|
|
4706
|
+
* A path absent from the snapshot was not in the index before, so it stays
|
|
4707
|
+
* removed; every other path gets its recorded mode, blob and stage back.
|
|
4708
|
+
*
|
|
4709
|
+
* probe-direction: fail-closed — a failed git call returns false, which the
|
|
4710
|
+
* caller reports to the user as an index it could not restore; it never reads
|
|
4711
|
+
* as a successful restore.
|
|
4712
|
+
* @param {string} snapshot NUL-delimited `ls-files -s` output taken beforehand.
|
|
4713
|
+
* @param {string[]} files Paths the failed commit staged.
|
|
4714
|
+
* @param {string} cwd Repository directory.
|
|
4715
|
+
* @returns {boolean} Whether the restore succeeded.
|
|
4716
|
+
*/
|
|
4717
|
+
function restoreIndexEntries(snapshot, files, cwd) {
|
|
4718
|
+
const entries = snapshot.split("\0").filter(Boolean);
|
|
4719
|
+
// Drop every entry for these paths first, so a restored stage-0 entry does
|
|
4720
|
+
// not sit beside anything `git add` wrote; then lay the snapshot back.
|
|
4721
|
+
const removal = run(
|
|
4722
|
+
"git",
|
|
4723
|
+
["update-index", "--force-remove", "--", ...files],
|
|
4724
|
+
{ cwd, allowFailure: true }
|
|
4725
|
+
);
|
|
4726
|
+
if (removal.status !== 0) return false;
|
|
4727
|
+
if (entries.length === 0) return true;
|
|
4728
|
+
const restore = run("git", ["update-index", "-z", "--index-info"], {
|
|
4729
|
+
cwd,
|
|
4730
|
+
input: entries.map(entry => `${entry}\0`).join(""),
|
|
4731
|
+
allowFailure: true,
|
|
4732
|
+
});
|
|
4733
|
+
return restore.status === 0;
|
|
4548
4734
|
}
|
|
4549
4735
|
|
|
4550
4736
|
/**
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
"children": []
|
|
133
133
|
},
|
|
134
134
|
"lib/history-secret-git.mjs": {
|
|
135
|
-
"sha256": "
|
|
135
|
+
"sha256": "7e0939373625ef741f9a455a1959abfaef6c69961ed4a30044d4dab0fa2d9916",
|
|
136
136
|
"staticImports": [
|
|
137
137
|
"node:child_process",
|
|
138
138
|
"node:fs",
|
|
@@ -233,7 +233,7 @@
|
|
|
233
233
|
"children": []
|
|
234
234
|
},
|
|
235
235
|
"lib/npm-update-bun.mjs": {
|
|
236
|
-
"sha256": "
|
|
236
|
+
"sha256": "0329fde91a497e8ec527b9c7d8ade979cc637f63a796fbb4b9b8b9a480f06739",
|
|
237
237
|
"staticImports": [
|
|
238
238
|
"lib/automation-provenance-contract.mjs",
|
|
239
239
|
"lib/github-attestation-verifier.mjs",
|
|
@@ -315,7 +315,7 @@
|
|
|
315
315
|
"children": []
|
|
316
316
|
},
|
|
317
317
|
"lib/npm-update-contract.mjs": {
|
|
318
|
-
"sha256": "
|
|
318
|
+
"sha256": "d5c4bf65603bb212e1e8f99a39c38d9c5eff103b1f1b28966e20557bb7f3e85d",
|
|
319
319
|
"staticImports": [
|
|
320
320
|
"lib/automation-provenance-contract.mjs",
|
|
321
321
|
"lib/github-attestation-verifier.mjs",
|
|
@@ -1165,7 +1165,7 @@
|
|
|
1165
1165
|
"children": []
|
|
1166
1166
|
},
|
|
1167
1167
|
"lisa-history-secrets.mjs": {
|
|
1168
|
-
"sha256": "
|
|
1168
|
+
"sha256": "815fd6403aed6194d30939b59dc5ce894f7122a9da598acee4cd529a1b520de3",
|
|
1169
1169
|
"staticImports": [
|
|
1170
1170
|
"node:fs"
|
|
1171
1171
|
],
|
|
@@ -1204,7 +1204,7 @@
|
|
|
1204
1204
|
"children": []
|
|
1205
1205
|
},
|
|
1206
1206
|
"lisa-rails-prepush.mjs": {
|
|
1207
|
-
"sha256": "
|
|
1207
|
+
"sha256": "31a61d5c53db977fb1d6ff8f125ec785db98e79290a4ea5225e4322d9915038d",
|
|
1208
1208
|
"staticImports": [
|
|
1209
1209
|
"node:child_process",
|
|
1210
1210
|
"node:fs",
|
|
@@ -1258,7 +1258,7 @@
|
|
|
1258
1258
|
"children": []
|
|
1259
1259
|
},
|
|
1260
1260
|
"lisa-work-item.mjs": {
|
|
1261
|
-
"sha256": "
|
|
1261
|
+
"sha256": "203f110fd4752ff89d906276a5115500a2f42289d00cb5435345c90c433edf46",
|
|
1262
1262
|
"staticImports": [
|
|
1263
1263
|
"lib/invoked-as-script.mjs",
|
|
1264
1264
|
"node:child_process",
|
package/all/deletions.json
CHANGED
|
@@ -136,7 +136,8 @@
|
|
|
136
136
|
".claude/rules/security-audit-handling.md",
|
|
137
137
|
".claude/rules/verification.md",
|
|
138
138
|
".lisa-manifest",
|
|
139
|
-
".github/workflows/lisa-update.yml"
|
|
139
|
+
".github/workflows/lisa-update.yml",
|
|
140
|
+
"scripts/lisa-self-update.mjs"
|
|
140
141
|
],
|
|
141
142
|
"keep": [
|
|
142
143
|
"scripts/setup-deploy-key.sh",
|
|
@@ -277,6 +278,22 @@
|
|
|
277
278
|
".claude/rules/security-audit-handling.md": "needs-review",
|
|
278
279
|
".claude/rules/verification.md": "needs-review",
|
|
279
280
|
".lisa-manifest": "needs-review",
|
|
280
|
-
".github/workflows/lisa-update.yml": "legacy: the scheduled Lisa Update workflow (4.67.0-4.68.x) opened update pull requests as a bot and so needed a PAT secret in every repository; replaced by the local session-start auto-update (CodySwannGT/lisa#4337), which needs no token"
|
|
281
|
+
".github/workflows/lisa-update.yml": "legacy: the scheduled Lisa Update workflow (4.67.0-4.68.x) opened update pull requests as a bot and so needed a PAT secret in every repository; replaced by the local session-start auto-update (CodySwannGT/lisa#4337), which needs no token",
|
|
282
|
+
"scripts/lisa-self-update.mjs": "legacy: the self-update script (4.67.0-4.68.x) only ever ran from the scheduled Lisa Update workflow, retired with it in CodySwannGT/lisa#4337; removed only while unedited and unreferenced (CodySwannGT/lisa#4393)"
|
|
283
|
+
},
|
|
284
|
+
"retireUnmodified": {
|
|
285
|
+
".github/workflows/lisa-update.yml": [
|
|
286
|
+
"5fb8822126277d0e4c89d3086857653f313f74a13d96f3aeeae97a0f4ccd81b6",
|
|
287
|
+
"7fd71e48b7b84460eeef86e2f8e00b59001bd23071a54a9406d8e7e604e7fc4d",
|
|
288
|
+
"9c1c05ffe39a6d5e41a3e82afbbc227097e071b26d2bbc56281ef1373c5a035d"
|
|
289
|
+
],
|
|
290
|
+
"scripts/lisa-self-update.mjs": [
|
|
291
|
+
"1a455b97fc2e978a3bd039e327067b4c7ced7395808eed8eb4baa25c2b9c05e7",
|
|
292
|
+
"37f02f512e8d347885c302612895873087e0a62bb81f22436862764ff26c8a06",
|
|
293
|
+
"80d07132cffc8532e79f75acb1d1053c034800bec9b81b354131d4248934b02e",
|
|
294
|
+
"80dc15053af22133cfe50e48484b24b098eb9f2095999b649694ad11ce64175a",
|
|
295
|
+
"a123e9cdc7b090cec1ebaad1061487ed3fe7ae41ff29114182decb739c58ca7e",
|
|
296
|
+
"afbc340a6512e495b80ddfd327202812fc4ae333be8b6bfad74fb6d46df6fdca"
|
|
297
|
+
]
|
|
281
298
|
}
|
|
282
299
|
}
|
|
@@ -146,7 +146,41 @@ def disables_verification(token):
|
|
|
146
146
|
# tokens, so the invocation's boundary is a token the scan can stop at.
|
|
147
147
|
COMMAND_SEPARATORS = {
|
|
148
148
|
";", "|", "||", "&", "&&", "(", ")", "<", ">", ">>", "<<", "&|",
|
|
149
|
+
# `|&` pipes stdout AND stderr into the next command, so it ends a command
|
|
150
|
+
# exactly as `|` does. shlex emits it as one token, and before it was listed
|
|
151
|
+
# here `echo hi |& git commit --no-verify` read as a single `echo` command
|
|
152
|
+
# whose arguments happened to include git. The case terminators end a
|
|
153
|
+
# command the same way.
|
|
154
|
+
"|&", ";;", ";&", ";;&",
|
|
149
155
|
}
|
|
156
|
+
# shlex also GLUES adjacent punctuation into one token across distinct
|
|
157
|
+
# operators: `(echo hi)|&git ...` arrives as `)|&`, which no set membership
|
|
158
|
+
# test can recognise. An operator-only token is therefore re-split into the
|
|
159
|
+
# operators it is made of, longest first. Redirections are kept whole and are
|
|
160
|
+
# deliberately NOT separators, so `git commit 2>&1 -n` keeps its `-n` inside the
|
|
161
|
+
# commit's argv scope.
|
|
162
|
+
OPERATOR_ONLY = re.compile(r"^[();<>|&]+$")
|
|
163
|
+
SHELL_OPERATOR = re.compile("|".join(
|
|
164
|
+
re.escape(operator) for operator in sorted(
|
|
165
|
+
COMMAND_SEPARATORS | {">|", "&>", "&>>", ">&", "<&", "<>", "<<<"},
|
|
166
|
+
key=lambda operator: (-len(operator), operator),
|
|
167
|
+
)
|
|
168
|
+
))
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def split_operators(token):
|
|
172
|
+
"""Split a glued operator-only token into the shell operators it holds.
|
|
173
|
+
|
|
174
|
+
Args:
|
|
175
|
+
token: One shlex token that was not read inside a quote or escape.
|
|
176
|
+
|
|
177
|
+
Returns:
|
|
178
|
+
The operators, longest first, or the token itself when it is not
|
|
179
|
+
made only of shell punctuation.
|
|
180
|
+
"""
|
|
181
|
+
if OPERATOR_ONLY.match(token):
|
|
182
|
+
return SHELL_OPERATOR.findall(token)
|
|
183
|
+
return [token]
|
|
150
184
|
|
|
151
185
|
SHELL_PROGRAMS = {"bash", "dash", "ksh", "sh", "zsh"}
|
|
152
186
|
MAX_SHELL_NESTING = 8
|
|
@@ -300,14 +334,28 @@ def shell_tokens(text):
|
|
|
300
334
|
Returns:
|
|
301
335
|
The token list, with `;`, `|`, `&&`, `(` and friends standing alone.
|
|
302
336
|
"""
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
)
|
|
337
|
+
stream = OperatorStream(line_boundaries_as_separators(text))
|
|
338
|
+
lexer = shlex.shlex(stream, posix=True, punctuation_chars=True)
|
|
306
339
|
lexer.whitespace_split = True
|
|
307
340
|
# shlex treats `#` as a comment introducer by default and would silently
|
|
308
341
|
# truncate the rest of the line; `shlex.split` disables it, and so must this.
|
|
309
342
|
lexer.commenters = ""
|
|
310
|
-
|
|
343
|
+
stream.lexer = lexer
|
|
344
|
+
tokens = []
|
|
345
|
+
while True:
|
|
346
|
+
stream.literal_operator = False
|
|
347
|
+
token = lexer.get_token()
|
|
348
|
+
if token is None:
|
|
349
|
+
return tokens
|
|
350
|
+
# Quoted punctuation is an argument, never a boundary: it stays whole,
|
|
351
|
+
# and a quoted separator is marked so no scan stops at it (a path or
|
|
352
|
+
# branch can be named `|&`). Only real operator runs are split.
|
|
353
|
+
if stream.literal_operator:
|
|
354
|
+
tokens.append(
|
|
355
|
+
chr(0) + token if token in COMMAND_SEPARATORS else token
|
|
356
|
+
)
|
|
357
|
+
else:
|
|
358
|
+
tokens.extend(split_operators(token))
|
|
311
359
|
|
|
312
360
|
|
|
313
361
|
def cluster_skips_verification(cluster):
|
|
@@ -923,6 +971,10 @@ def resolve_script(token):
|
|
|
923
971
|
"""
|
|
924
972
|
if COMPUTED_VALUE.search(token):
|
|
925
973
|
return (None, "a computed path the guard cannot resolve before the shell does")
|
|
974
|
+
# A quoted separator carries a NUL marker from shell_tokens; the path the
|
|
975
|
+
# shell passes is the argument without it.
|
|
976
|
+
if token.startswith(chr(0)):
|
|
977
|
+
token = token[1:]
|
|
926
978
|
text = os.path.expanduser(token.strip().strip("'\""))
|
|
927
979
|
# `bash -` and a bare `-` read the script from stdin; there is no file.
|
|
928
980
|
if not text or text == "-":
|
|
@@ -1873,9 +1925,12 @@ def flat_tokens(text):
|
|
|
1873
1925
|
# shlex otherwise makes quoted ";" indistinguishable from a real
|
|
1874
1926
|
# command boundary. Keep literal destinations as data, so a setter
|
|
1875
1927
|
# cannot masquerade as a one-operand configuration read.
|
|
1876
|
-
if
|
|
1877
|
-
token
|
|
1878
|
-
|
|
1928
|
+
if stream.literal_operator:
|
|
1929
|
+
if token in COMMAND_SEPARATORS:
|
|
1930
|
+
token = "\x00" + token
|
|
1931
|
+
tokens.append(token)
|
|
1932
|
+
else:
|
|
1933
|
+
tokens.extend(split_operators(token))
|
|
1879
1934
|
return [
|
|
1880
1935
|
token
|
|
1881
1936
|
for index, token in enumerate(tokens)
|
package/dist/core/config.d.ts
CHANGED
|
@@ -305,6 +305,22 @@ export interface DeletionsConfig {
|
|
|
305
305
|
* @see core/deletion-basis
|
|
306
306
|
*/
|
|
307
307
|
readonly basis?: Readonly<Record<string, string>>;
|
|
308
|
+
/**
|
|
309
|
+
* Paths Lisa itself put in consumers' repositories and now retires, each
|
|
310
|
+
* mapped to the sha256 of every version Lisa shipped there.
|
|
311
|
+
*
|
|
312
|
+
* A listed path is deleted only when the consumer's copy is byte-for-byte
|
|
313
|
+
* one of those versions (or one Lisa's hash ledger records at that path),
|
|
314
|
+
* and nothing in the consumer's `package.json` scripts or workflows still
|
|
315
|
+
* names it. That proof replaces the workflow ownership header: an unedited
|
|
316
|
+
* create-only seed carries the "this file is YOURS" header like every other
|
|
317
|
+
* seed, yet holds no work of the consumer's, so it can be retired. A copy
|
|
318
|
+
* that matches no shipped version is kept with a notice.
|
|
319
|
+
*
|
|
320
|
+
* A `force` entry for the same path outranks this one.
|
|
321
|
+
* @see core/retire-unmodified
|
|
322
|
+
*/
|
|
323
|
+
readonly retireUnmodified?: Readonly<Record<string, readonly string[]>>;
|
|
308
324
|
}
|
|
309
325
|
/**
|
|
310
326
|
* Result of a Lisa operation
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAwBA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAE/B;IACF,IAAI,EAAE,YAAY;IAClB,MAAM,EAAE,YAAY;IACpB,GAAG,EAAE,YAAY;IACjB,eAAe,EAAE,YAAY;IAC7B,MAAM,EAAE,YAAY;IACpB,aAAa,EAAE,YAAY;IAC3B,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,YAAY;IACZ,aAAa;IACb,eAAe;IACf,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;CACC,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,gBAAgB;IAChB,eAAe;IACf,aAAa;IACb,OAAO;IACP,cAAc;IACd,cAAc;CACN,CAAC;AAyBX;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,KAAK;IACL,SAAS;IACT,UAAU;IACV,OAAO;CACC,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsC;IAChE,GAAG,EAAE,OAAO;CACb,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAsB;IACxD,GAAG,cAAc;IACjB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;CAChC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsC;IACvE,IAAI,EAAE,OAAO;CACd,CAAC;AASF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAgB,EAChB,KAAgB;IAEhB,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,OAAO,KAAK,KAAK,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY,QAAQ,CAAC;AAoFjD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,YAAoB,EACpB,OAAqC;IAErC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACxC,8EAA8E;IAC9E,0CAA0C;IAC1C,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC9B,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC9D,OAAO,KAAK,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,oBAAoB,CAAC,KAAa;IACzC,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAChF,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.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,CAy8DjC,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA42DjC,CAAC"}
|