@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
|
@@ -174,13 +174,16 @@ echo "🤖 Checking for AI co-authorship..."
|
|
|
174
174
|
# "AI-Agent: <their own name>" to self-attest as the agent — the trailer is
|
|
175
175
|
# the attestation surface, not a proof, so the gate documents rather than
|
|
176
176
|
# polices that.) CodySwannGT/lisa#4282, CodySwannGT/lisa#4294.
|
|
177
|
-
|
|
177
|
+
# The exemption is an exact declared identity, never a first-name prefix.
|
|
178
|
+
# Include native Claude/Codex attribution forms installed by Lisa.
|
|
179
|
+
# Trailers attest attribution; the email is not cryptographic identity proof.
|
|
180
|
+
LISA_FLEET_IDENTITY_RE="Claude|Claude <noreply@anthropic\.com>|Codex <(codex|noreply)@openai\.com>|Cursor <noreply@cursor\.com>|OpenCode <noreply@opencode\.ai>|Antigravity <noreply@google\.com>|Copilot <noreply@github\.com>"
|
|
178
181
|
# Co-authors come from the message's trailer block via git-interpret-trailers —
|
|
179
182
|
# a "Co-authored-by:" string inside prose is not attribution — and every entry
|
|
180
183
|
# is judged on its own, so a fleet trailer can never cover a sibling trailer
|
|
181
184
|
# whose agent owes metadata. The AI-* checks below read the SAME parsed
|
|
182
185
|
# trailer block, so an "AI-Agent:" line in body prose cannot satisfy them.
|
|
183
|
-
ALL_TRAILERS=$(git interpret-trailers --parse "$COMMIT_MSG_FILE" 2>/dev/null || true)
|
|
186
|
+
ALL_TRAILERS=$(git interpret-trailers --parse --no-divider "$COMMIT_MSG_FILE" 2>/dev/null || true)
|
|
184
187
|
COAUTHOR_TRAILERS=$(printf '%s\n' "$ALL_TRAILERS" | grep -iE "^Co-authored-by:" || true)
|
|
185
188
|
|
|
186
189
|
if ! printf '%s\n' "$COAUTHOR_TRAILERS" | grep -Eiq "Co-authored-by:"; then
|
|
@@ -189,12 +192,25 @@ else
|
|
|
189
192
|
no_coauthor=0
|
|
190
193
|
fi
|
|
191
194
|
|
|
195
|
+
# A driver is singular even when multiple agents pair on the commit.
|
|
196
|
+
ai_agent_count=$(printf '%s\n' "$ALL_TRAILERS" | grep -icE '^AI-Agent:' || true)
|
|
197
|
+
if [ "$ai_agent_count" -gt 1 ]; then
|
|
198
|
+
echo "❌ Commit attribution must name exactly one AI-Agent driver."
|
|
199
|
+
lisa_commit_gate_families ai-coauthorship
|
|
200
|
+
exit 1
|
|
201
|
+
fi
|
|
202
|
+
|
|
192
203
|
nonfleet_coauthor=0
|
|
204
|
+
opencode_coauthor=0
|
|
193
205
|
if [ "$no_coauthor" -eq 0 ]; then
|
|
194
206
|
while IFS= read -r trailer; do
|
|
195
207
|
[ -z "$trailer" ] && continue
|
|
196
208
|
agent_name=$(printf '%s' "${trailer#*:}" | sed -e 's/<[^>]*>//g' -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
|
197
|
-
|
|
209
|
+
identity=$(printf '%s' "${trailer#*:}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//')
|
|
210
|
+
if printf '%s\n' "$agent_name" | grep -Eiq '^OpenCode$'; then
|
|
211
|
+
opencode_coauthor=1
|
|
212
|
+
fi
|
|
213
|
+
if ! printf '%s\n' "$identity" | grep -Eiq "^(${LISA_FLEET_IDENTITY_RE})$"; then
|
|
198
214
|
nonfleet_coauthor=1
|
|
199
215
|
fi
|
|
200
216
|
done <<LISA_COAUTHOR_TRAILERS
|
|
@@ -202,7 +218,9 @@ $COAUTHOR_TRAILERS
|
|
|
202
218
|
LISA_COAUTHOR_TRAILERS
|
|
203
219
|
fi
|
|
204
220
|
|
|
205
|
-
|
|
221
|
+
# OpenCode co-authorship requires metadata, but AI-Agent may name any listed
|
|
222
|
+
# driver. A supplied AI-Agent driver is validated even on fleet-only commits.
|
|
223
|
+
if [ "$nonfleet_coauthor" -eq 1 ] || [ "$opencode_coauthor" -eq 1 ] || [ "$ai_agent_count" -eq 1 ]; then
|
|
206
224
|
missing_agent_metadata=0
|
|
207
225
|
for trailer in AI-Agent AI-Model AI-Effort; do
|
|
208
226
|
if ! printf '%s\n' "$ALL_TRAILERS" | grep -Eiq "^${trailer}:[[:space:]]*[^[:space:]]"; then
|
|
@@ -234,7 +252,12 @@ LISA_COAUTHOR_NAME_CHECK
|
|
|
234
252
|
fi
|
|
235
253
|
if [ "$missing_agent_metadata" -eq 1 ]; then
|
|
236
254
|
echo ""
|
|
237
|
-
|
|
255
|
+
if [ "$opencode_coauthor" -eq 1 ] && [ "$nonfleet_coauthor" -eq 0 ]; then
|
|
256
|
+
echo "❌ OpenCode commits must include AI metadata trailers!"
|
|
257
|
+
echo "For an OpenCode driver: AI-Agent: OpenCode"
|
|
258
|
+
else
|
|
259
|
+
echo "❌ Non-fleet agents must include AI metadata trailers!"
|
|
260
|
+
fi
|
|
238
261
|
echo ""
|
|
239
262
|
echo "Agents outside the supported fleet (Claude, Codex, Cursor, OpenCode,"
|
|
240
263
|
echo "Antigravity, Copilot) must carry provenance metadata alongside the"
|
|
@@ -280,30 +303,4 @@ elif [ "$no_coauthor" -eq 1 ]; then
|
|
|
280
303
|
exit 1
|
|
281
304
|
fi
|
|
282
305
|
|
|
283
|
-
if printf '%s\n' "$COAUTHOR_TRAILERS" | grep -Eiq "Co-authored-by:.*OpenCode"; then
|
|
284
|
-
missing_opencode_metadata=0
|
|
285
|
-
if ! printf '%s\n' "$ALL_TRAILERS" | grep -Eiq "^AI-Agent:[[:space:]]*OpenCode[[:space:]]*$"; then
|
|
286
|
-
missing_opencode_metadata=1
|
|
287
|
-
fi
|
|
288
|
-
if ! printf '%s\n' "$ALL_TRAILERS" | grep -Eiq "^AI-Model:[[:space:]]*[^[:space:]].*$"; then
|
|
289
|
-
missing_opencode_metadata=1
|
|
290
|
-
fi
|
|
291
|
-
if ! printf '%s\n' "$ALL_TRAILERS" | grep -Eiq "^AI-Effort:[[:space:]]*[^[:space:]].*$"; then
|
|
292
|
-
missing_opencode_metadata=1
|
|
293
|
-
fi
|
|
294
|
-
|
|
295
|
-
if [ "$missing_opencode_metadata" -eq 1 ]; then
|
|
296
|
-
echo ""
|
|
297
|
-
echo "❌ OpenCode commits must include AI metadata trailers!"
|
|
298
|
-
echo ""
|
|
299
|
-
echo "Expected trailers:"
|
|
300
|
-
echo " AI-Agent: OpenCode"
|
|
301
|
-
echo " AI-Model: <provider/model>"
|
|
302
|
-
echo " AI-Effort: <effort or runtime value>"
|
|
303
|
-
echo ""
|
|
304
|
-
lisa_commit_gate_families ai-coauthorship
|
|
305
|
-
exit 1
|
|
306
|
-
fi
|
|
307
|
-
fi
|
|
308
|
-
|
|
309
306
|
# END: AI GUARDRAILS
|