@codyswann/lisa 4.33.12 → 4.33.14
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/lisa-hooks/block-direct-issue-create.sh +6 -2
- package/all/copy-overwrite/scripts/lisa-hooks/parity-safety-net.sh +53 -4
- package/dist/configs/vitest/scratch-setup.d.ts +34 -0
- package/dist/configs/vitest/scratch-setup.d.ts.map +1 -1
- package/dist/configs/vitest/scratch-setup.js +89 -10
- package/dist/configs/vitest/scratch-setup.js.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +6 -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 +12 -8
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/plugin-templates/parity-safety-net.sh +53 -4
- 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/.codex-plugin/skills/lisa-setup-workstation/scripts/catalogue.mjs +29 -0
- package/plugins/lisa/.codex-plugin/skills/lisa-track/SKILL.md +17 -6
- package/plugins/lisa/hooks/block-direct-issue-create.sh +6 -2
- package/plugins/lisa/hooks/parity-safety-net.sh +53 -4
- package/plugins/lisa/skills/lisa-setup-workstation/scripts/catalogue.mjs +29 -0
- package/plugins/lisa/skills/lisa-track/SKILL.md +18 -7
- package/plugins/lisa-agy/hooks/block-direct-issue-create.sh +6 -2
- package/plugins/lisa-agy/hooks/parity-safety-net.sh +53 -4
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-workstation/scripts/catalogue.mjs +29 -0
- package/plugins/lisa-agy/skills/lisa-track/SKILL.md +18 -7
- 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/block-direct-issue-create.sh +6 -2
- package/plugins/lisa-copilot/hooks/parity-safety-net.sh +53 -4
- package/plugins/lisa-copilot/skills/lisa-setup-workstation/scripts/catalogue.mjs +29 -0
- package/plugins/lisa-copilot/skills/lisa-track/SKILL.md +18 -7
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/block-direct-issue-create.sh +6 -2
- package/plugins/lisa-cursor/hooks/parity-safety-net.sh +53 -4
- package/plugins/lisa-cursor/skills/lisa-setup-workstation/scripts/catalogue.mjs +29 -0
- package/plugins/lisa-cursor/skills/lisa-track/SKILL.md +18 -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/block-direct-issue-create.sh +6 -2
- package/plugins/src/base/hooks/parity-safety-net.sh +53 -4
- package/plugins/src/base/skills/lisa-setup-workstation/scripts/catalogue.mjs +29 -0
- package/plugins/src/base/skills/lisa-track/SKILL.md +18 -7
- package/typescript/copy-contents/.husky/pre-commit +10 -6
- package/typescript/copy-contents/.husky/pre-push +46 -16
|
@@ -88,6 +88,44 @@ if ! command -v node >/dev/null 2>&1; then
|
|
|
88
88
|
exit 1
|
|
89
89
|
fi
|
|
90
90
|
|
|
91
|
+
# jq is required too, and it is proved HERE rather than at the first step that
|
|
92
|
+
# needs it.
|
|
93
|
+
#
|
|
94
|
+
# jq decides five things in this hook, not one: the dependency-vulnerability
|
|
95
|
+
# audit below, and — through `jq -e '.scripts[...]'` — whether `lint:slow`,
|
|
96
|
+
# `knip:check`, `knip` and `test:mutation` exist at all. A false result from
|
|
97
|
+
# those four probes is indistinguishable from a project that configures none of
|
|
98
|
+
# them, so a machine without jq printed "Skipping slow lint rules (lint:slow
|
|
99
|
+
# not configured)" about a project that configures it, ran no audit at all, and
|
|
100
|
+
# pushed green.
|
|
101
|
+
#
|
|
102
|
+
# That is the failure this whole subsystem exists to prevent: a control
|
|
103
|
+
# returning success for an input it never examined. Absence of the tool and
|
|
104
|
+
# absence of findings produced the identical observable — a clean push — so
|
|
105
|
+
# nothing downstream could tell an audited push from an unaudited one, and the
|
|
106
|
+
# audit is not decoration: it blocks real pushes on real HIGH advisories.
|
|
107
|
+
#
|
|
108
|
+
# The audit block used to warn and continue here, on the reasoning that jq "may
|
|
109
|
+
# legitimately be absent". That was written when jq gated one optional audit.
|
|
110
|
+
# The honest treatment is the one node gets immediately above, and the one the
|
|
111
|
+
# pre-commit lint-staged preflight already states in as many words: a check
|
|
112
|
+
# that cannot RUN is not a skip and not a pass — it blocks.
|
|
113
|
+
if ! command -v jq >/dev/null 2>&1; then
|
|
114
|
+
echo "❌ Push blocked: jq is required and is not installed."
|
|
115
|
+
echo ""
|
|
116
|
+
echo " Without jq this hook cannot run the dependency-vulnerability audit,"
|
|
117
|
+
echo " and cannot read package.json to tell whether lint:slow, knip and"
|
|
118
|
+
echo " test:mutation are configured — so it would skip all four and report"
|
|
119
|
+
echo " a clean push it never earned."
|
|
120
|
+
echo ""
|
|
121
|
+
echo "To install jq:"
|
|
122
|
+
echo " macOS: brew install jq"
|
|
123
|
+
echo " Windows: choco install jq # or scoop install jq"
|
|
124
|
+
echo " Linux: apt-get install jq"
|
|
125
|
+
echo ""
|
|
126
|
+
exit 1
|
|
127
|
+
fi
|
|
128
|
+
|
|
91
129
|
# BEGIN: push destination guard
|
|
92
130
|
# ---------------------------------------------------------------------------
|
|
93
131
|
# Refuse a push whose RESOLVED destination is a deploy branch it was not aimed
|
|
@@ -388,20 +426,12 @@ fi
|
|
|
388
426
|
# Run security audit
|
|
389
427
|
echo "🔒 Running security audit..."
|
|
390
428
|
|
|
391
|
-
# jq is required for all audit paths (JSON config reading, npm/yarn filtering)
|
|
429
|
+
# jq is required for all audit paths (JSON config reading, npm/yarn filtering),
|
|
430
|
+
# and is proved present at the top of this hook. There is deliberately no
|
|
431
|
+
# "jq is missing, continue anyway" branch here: that branch made a missing tool
|
|
432
|
+
# and a clean audit print the same thing.
|
|
392
433
|
if lisa_gate_covers dependency-vulnerability; then
|
|
393
434
|
echo "ℹ️ Covered by the dependency-vulnerability gate; the built-in audit stands down."
|
|
394
|
-
elif ! command -v jq >/dev/null 2>&1; then
|
|
395
|
-
echo ""
|
|
396
|
-
echo "⚠️ WARNING: jq is not installed - required for security audit"
|
|
397
|
-
echo ""
|
|
398
|
-
echo "To install jq:"
|
|
399
|
-
echo " macOS: brew install jq"
|
|
400
|
-
echo " Windows: choco install jq # or scoop install jq"
|
|
401
|
-
echo " Linux: apt-get install jq"
|
|
402
|
-
echo ""
|
|
403
|
-
echo "Continuing without security audit..."
|
|
404
|
-
echo ""
|
|
405
435
|
else
|
|
406
436
|
# Load GHSA exclusion IDs from JSON config files (managed + project-local)
|
|
407
437
|
load_audit_exclusions() {
|
|
@@ -687,10 +717,10 @@ fi
|
|
|
687
717
|
# did before — slower, but never with the integration tree silently dropped,
|
|
688
718
|
# which is the failure direction that would actually cost something.
|
|
689
719
|
#
|
|
690
|
-
# Resolved with node rather than jq
|
|
691
|
-
#
|
|
692
|
-
#
|
|
693
|
-
#
|
|
720
|
+
# Resolved with node rather than jq. This used to be a real distinction — jq
|
|
721
|
+
# was optional and node was not — and it stopped being one when jq became a
|
|
722
|
+
# hard requirement at the top of this hook. Either would answer correctly now;
|
|
723
|
+
# node stays because rewriting a working probe buys nothing.
|
|
694
724
|
# The unit script is selected only when it carries LISA_COVERAGE_SCOPE=unit.
|
|
695
725
|
# That marker is not decoration: the threshold factory reads it and enforces the
|
|
696
726
|
# `unit` block, so a `test:cov:unit` without it is measured against the floor
|