@codyswann/lisa 4.70.3 → 4.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/all/copy-overwrite/scripts/lib/automation-provenance-contract.mjs +174 -0
- package/all/copy-overwrite/scripts/lib/automation-provenance-local.mjs +279 -0
- package/all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs +17 -7
- package/all/copy-overwrite/scripts/lib/github-attestation-provider.mjs +241 -0
- package/all/copy-overwrite/scripts/lib/github-attestation-recovery.mjs +283 -0
- package/all/copy-overwrite/scripts/lib/github-attestation-verifier.mjs +244 -0
- package/all/copy-overwrite/scripts/lib/history-secret-evidence-shape.mjs +188 -0
- package/all/copy-overwrite/scripts/lib/history-secret-evidence.mjs +271 -0
- package/all/copy-overwrite/scripts/lib/history-secret-scanner.mjs +6 -296
- package/all/copy-overwrite/scripts/lib/npm-update-allocate.mjs +289 -0
- package/all/copy-overwrite/scripts/lib/npm-update-authorization.mjs +235 -0
- package/all/copy-overwrite/scripts/lib/npm-update-broker-client.mjs +92 -0
- package/all/copy-overwrite/scripts/lib/npm-update-checkpoint.mjs +241 -0
- package/all/copy-overwrite/scripts/lib/npm-update-contract.mjs +278 -0
- package/all/copy-overwrite/scripts/lib/npm-update-controller-broker.mjs +234 -0
- package/all/copy-overwrite/scripts/lib/npm-update-controller-factory.mjs +278 -0
- package/all/copy-overwrite/scripts/lib/npm-update-controller-recipe.mjs +135 -0
- package/all/copy-overwrite/scripts/lib/npm-update-execution-adapter.mjs +292 -0
- package/all/copy-overwrite/scripts/lib/npm-update-gate-hooks.mjs +214 -0
- package/all/copy-overwrite/scripts/lib/npm-update-gate-install.mjs +267 -0
- package/all/copy-overwrite/scripts/lib/npm-update-gate-proof.mjs +99 -0
- package/all/copy-overwrite/scripts/lib/npm-update-gate.mjs +300 -0
- package/all/copy-overwrite/scripts/lib/npm-update-gh-dispatch.mjs +182 -0
- package/all/copy-overwrite/scripts/lib/npm-update-gh-grants.mjs +156 -0
- package/all/copy-overwrite/scripts/lib/npm-update-gh-requests.mjs +221 -0
- package/all/copy-overwrite/scripts/lib/npm-update-github.mjs +214 -0
- package/all/copy-overwrite/scripts/lib/npm-update-helper-graph.mjs +238 -0
- package/all/copy-overwrite/scripts/lib/npm-update-helper-inventory.mjs +126 -0
- package/all/copy-overwrite/scripts/lib/npm-update-helper.mjs +292 -0
- package/all/copy-overwrite/scripts/lib/npm-update-hook-installation.mjs +116 -0
- package/all/copy-overwrite/scripts/lib/npm-update-hook-preload.mjs +153 -0
- package/all/copy-overwrite/scripts/lib/npm-update-hook-provider.mjs +207 -0
- package/all/copy-overwrite/scripts/lib/npm-update-hook-read-client.mjs +164 -0
- package/all/copy-overwrite/scripts/lib/npm-update-hosted-gate.mjs +272 -0
- package/all/copy-overwrite/scripts/lib/npm-update-hosted-hook.mjs +157 -0
- package/all/copy-overwrite/scripts/lib/npm-update-invariants.mjs +28 -0
- package/all/copy-overwrite/scripts/lib/npm-update-isolation.mjs +11 -0
- package/all/copy-overwrite/scripts/lib/npm-update-leaf-contract.mjs +171 -0
- package/all/copy-overwrite/scripts/lib/npm-update-leaf.mjs +194 -0
- package/all/copy-overwrite/scripts/lib/npm-update-native-process.mjs +155 -0
- package/all/copy-overwrite/scripts/lib/npm-update-npm.mjs +190 -0
- package/all/copy-overwrite/scripts/lib/npm-update-object.mjs +112 -0
- package/all/copy-overwrite/scripts/lib/npm-update-orchestrator.mjs +273 -0
- package/all/copy-overwrite/scripts/lib/npm-update-owner.mjs +292 -0
- package/all/copy-overwrite/scripts/lib/npm-update-prepare.mjs +263 -0
- package/all/copy-overwrite/scripts/lib/npm-update-process-core.mjs +179 -0
- package/all/copy-overwrite/scripts/lib/npm-update-process.mjs +16 -0
- package/all/copy-overwrite/scripts/lib/npm-update-publication.mjs +258 -0
- package/all/copy-overwrite/scripts/lib/npm-update-publish.mjs +258 -0
- package/all/copy-overwrite/scripts/lib/npm-update-quality.mjs +153 -0
- package/all/copy-overwrite/scripts/lib/npm-update-recovery.mjs +264 -0
- package/all/copy-overwrite/scripts/lib/npm-update-runtime-archive.mjs +204 -0
- package/all/copy-overwrite/scripts/lib/npm-update-runtime-graph.mjs +185 -0
- package/all/copy-overwrite/scripts/lib/npm-update-runtime-transport.mjs +221 -0
- package/all/copy-overwrite/scripts/lib/npm-update-runtime.mjs +284 -0
- package/all/copy-overwrite/scripts/lib/npm-update-tool-launcher.mjs +287 -0
- package/all/copy-overwrite/scripts/lib/npm-update-worker-environment.mjs +161 -0
- package/all/copy-overwrite/scripts/lib/npm-update-worker-inspection.mjs +142 -0
- package/all/copy-overwrite/scripts/lib/npm-update-worker-lifecycle.mjs +256 -0
- package/all/copy-overwrite/scripts/lib/npm-update-worker-policy.mjs +266 -0
- package/all/copy-overwrite/scripts/lib/process-tree-runner.mjs +230 -36
- package/all/copy-overwrite/scripts/lisa-automation-provenance.mjs +161 -0
- package/all/copy-overwrite/scripts/lisa-history-secrets.mjs +8 -1
- package/all/copy-overwrite/scripts/lisa-hooks/block-no-verify.sh +89 -5
- package/all/copy-overwrite/scripts/lisa-npm-updater.mjs +204 -0
- package/all/copy-overwrite/scripts/lisa-run-gates.mjs +48 -123
- package/all/copy-overwrite/scripts/lisa-work-item.mjs +107 -41
- package/all/copy-overwrite/scripts/npm-updater-gate-runtime.json +1 -0
- package/all/copy-overwrite/scripts/npm-updater-gate-supervisor.c +121 -0
- package/all/copy-overwrite/scripts/npm-updater-gate.Dockerfile +49 -0
- package/all/copy-overwrite/scripts/npm-updater-helper-graph.json +1085 -0
- package/dist/codex/scripts/block-no-verify.sh +89 -5
- package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
- package/dist/core/lisa-owned-hash-ledger.js +620 -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 +165 -13
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/dist/opencode/plugin-templates/block-no-verify.sh +89 -5
- 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/block-no-verify.agy.sh +89 -5
- package/plugins/lisa/hooks/block-no-verify.sh +89 -5
- package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +89 -5
- 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/block-no-verify.sh +89 -5
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/block-no-verify.sh +89 -5
- 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-no-verify.agy.sh +89 -5
- package/plugins/src/base/hooks/block-no-verify.sh +89 -5
- package/scripts/check-shipped-surface-removals.mjs +96 -24
- package/scripts/generate-npm-updater-helper-graph.mjs +184 -0
- package/scripts/two-channel-couplings.json +31 -7
- package/typescript/copy-contents/.husky/commit-msg +18 -0
- package/typescript/copy-overwrite/.prettierignore +2 -0
|
@@ -27,6 +27,7 @@ command -v python3 >/dev/null 2>&1 || exit 0
|
|
|
27
27
|
|
|
28
28
|
if ! BLOCK_NO_VERIFY_COMMAND="$command_str" python3 - <<'PY'
|
|
29
29
|
import os
|
|
30
|
+
import io
|
|
30
31
|
import re
|
|
31
32
|
import shlex
|
|
32
33
|
import sys
|
|
@@ -1159,6 +1160,57 @@ def git_skips_verification(text, depth=0):
|
|
|
1159
1160
|
return False
|
|
1160
1161
|
|
|
1161
1162
|
|
|
1163
|
+
def git_config_reads_key(tokens, index):
|
|
1164
|
+
"""Whether this key is a read operand of this exact Git config invocation.
|
|
1165
|
+
|
|
1166
|
+
Keep the command boundary: a query cannot authorize the next command or
|
|
1167
|
+
turn a later setting into a read. Unknown options remain conservative.
|
|
1168
|
+
"""
|
|
1169
|
+
start = index
|
|
1170
|
+
while start > 0 and tokens[start - 1] not in COMMAND_SEPARATORS:
|
|
1171
|
+
start -= 1
|
|
1172
|
+
end = index + 1
|
|
1173
|
+
while end < len(tokens) and tokens[end] not in COMMAND_SEPARATORS:
|
|
1174
|
+
end += 1
|
|
1175
|
+
program, args, opaque = command_word(tokens[start:end])
|
|
1176
|
+
if opaque or program != "git":
|
|
1177
|
+
return False
|
|
1178
|
+
found = subcommand_after_git(args, 0)
|
|
1179
|
+
if not found or found[0] != "config":
|
|
1180
|
+
return False
|
|
1181
|
+
argv = found[1]
|
|
1182
|
+
key_offset = index - (end - len(argv))
|
|
1183
|
+
read = bool(argv and argv[0] == "get")
|
|
1184
|
+
cursor = 1 if read else 0
|
|
1185
|
+
operands = []
|
|
1186
|
+
read_actions = {"--get", "--get-all", "--get-regexp", "--get-urlmatch"}
|
|
1187
|
+
modifiers = {
|
|
1188
|
+
"--local", "--global", "--system", "--worktree", "--includes",
|
|
1189
|
+
"--no-includes", "--show-origin", "--show-scope", "--null", "-z",
|
|
1190
|
+
"--name-only", "--all", "--regexp",
|
|
1191
|
+
}
|
|
1192
|
+
value_options = {"--file", "-f", "--blob", "--type", "--default", "--value"}
|
|
1193
|
+
while cursor < len(argv):
|
|
1194
|
+
token = argv[cursor]
|
|
1195
|
+
if token in read_actions:
|
|
1196
|
+
if read:
|
|
1197
|
+
return False
|
|
1198
|
+
read = True
|
|
1199
|
+
elif token in value_options:
|
|
1200
|
+
if cursor + 1 >= len(argv):
|
|
1201
|
+
return False
|
|
1202
|
+
cursor += 1
|
|
1203
|
+
elif token in modifiers:
|
|
1204
|
+
pass
|
|
1205
|
+
elif token.startswith("-"):
|
|
1206
|
+
if not any(token.startswith(option + "=") for option in value_options):
|
|
1207
|
+
return False
|
|
1208
|
+
else:
|
|
1209
|
+
operands.append(cursor)
|
|
1210
|
+
cursor += 1
|
|
1211
|
+
return bool(operands and operands[0] == key_offset and (read or len(operands) == 1))
|
|
1212
|
+
|
|
1213
|
+
|
|
1162
1214
|
def token_bypass(tokens):
|
|
1163
1215
|
"""Whether any token disables hooks by environment or by git config.
|
|
1164
1216
|
|
|
@@ -1170,7 +1222,7 @@ def token_bypass(tokens):
|
|
|
1170
1222
|
option, and an option belongs to an argv.
|
|
1171
1223
|
|
|
1172
1224
|
Args:
|
|
1173
|
-
tokens:
|
|
1225
|
+
tokens: Operator-aware tokens of one command or script.
|
|
1174
1226
|
|
|
1175
1227
|
Returns:
|
|
1176
1228
|
True when a token disables verification.
|
|
@@ -1196,7 +1248,9 @@ def token_bypass(tokens):
|
|
|
1196
1248
|
if lowered.startswith("core.hookspath="):
|
|
1197
1249
|
if not is_permitted_hooks_path(token.split("=", 1)[1]):
|
|
1198
1250
|
return True
|
|
1199
|
-
if lowered == "core.hookspath" and i + 1 < len(tokens)
|
|
1251
|
+
if (lowered == "core.hookspath" and i + 1 < len(tokens)
|
|
1252
|
+
and tokens[i + 1] not in COMMAND_SEPARATORS
|
|
1253
|
+
and not git_config_reads_key(tokens, i)):
|
|
1200
1254
|
if not is_permitted_hooks_path(tokens[i + 1]):
|
|
1201
1255
|
return True
|
|
1202
1256
|
# `git --config-env=core.hooksPath=SOMEVAR` sets the same config, reading
|
|
@@ -1263,8 +1317,22 @@ def token_bypass(tokens):
|
|
|
1263
1317
|
return False
|
|
1264
1318
|
|
|
1265
1319
|
|
|
1320
|
+
class OperatorStream(io.StringIO):
|
|
1321
|
+
"""Remember punctuation read while shlex is inside a quote or escape."""
|
|
1322
|
+
|
|
1323
|
+
lexer = None
|
|
1324
|
+
literal_operator = False
|
|
1325
|
+
|
|
1326
|
+
def read(self, size=-1):
|
|
1327
|
+
value = super().read(size)
|
|
1328
|
+
if (self.lexer is not None and self.lexer.state in {"'", '"', "\\"}
|
|
1329
|
+
and any(char in "();|&<>" for char in value)):
|
|
1330
|
+
self.literal_operator = True
|
|
1331
|
+
return value
|
|
1332
|
+
|
|
1333
|
+
|
|
1266
1334
|
def flat_tokens(text):
|
|
1267
|
-
"""
|
|
1335
|
+
"""Operator-aware tokens without printed data, or None on a lex failure.
|
|
1268
1336
|
|
|
1269
1337
|
Args:
|
|
1270
1338
|
text: A command line or a script's contents.
|
|
@@ -1273,9 +1341,25 @@ def flat_tokens(text):
|
|
|
1273
1341
|
The token list, or None.
|
|
1274
1342
|
"""
|
|
1275
1343
|
try:
|
|
1276
|
-
|
|
1344
|
+
stream = OperatorStream(line_boundaries_as_separators(text))
|
|
1345
|
+
lexer = shlex.shlex(stream, posix=True, punctuation_chars=True)
|
|
1346
|
+
lexer.whitespace_split = True
|
|
1347
|
+
lexer.commenters = ""
|
|
1348
|
+
stream.lexer = lexer
|
|
1349
|
+
tokens = []
|
|
1350
|
+
while True:
|
|
1351
|
+
stream.literal_operator = False
|
|
1352
|
+
token = lexer.get_token()
|
|
1353
|
+
if token is None:
|
|
1354
|
+
break
|
|
1355
|
+
# shlex otherwise makes quoted ";" indistinguishable from a real
|
|
1356
|
+
# command boundary. Keep literal destinations as data, so a setter
|
|
1357
|
+
# cannot masquerade as a one-operand configuration read.
|
|
1358
|
+
if token in COMMAND_SEPARATORS and stream.literal_operator:
|
|
1359
|
+
token = "\x00" + token
|
|
1360
|
+
tokens.append(token)
|
|
1277
1361
|
return [
|
|
1278
|
-
token
|
|
1362
|
+
token
|
|
1279
1363
|
for index, token in enumerate(tokens)
|
|
1280
1364
|
if not printed_argument(tokens, index)
|
|
1281
1365
|
]
|
|
@@ -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,CA+uDjC,CAAC;AAEH;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CACpD,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAkpDjC,CAAC"}
|