@codyswann/lisa 3.69.0 → 3.69.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.
Files changed (64) hide show
  1. package/all/copy-overwrite/scripts/lisa-hooks/sonar-secrets.sh +20 -2
  2. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  3. package/dist/core/lisa-owned-hash-ledger.js +1 -0
  4. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  5. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  6. package/dist/core/upstream-evidence-manifest.js +4 -3
  7. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  8. package/package.json +1 -1
  9. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  11. package/plugins/lisa/hooks/debug-hook.sh +13 -3
  12. package/plugins/lisa/hooks/sonar-secrets.sh +20 -2
  13. package/plugins/lisa-agy/plugin.json +1 -1
  14. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  16. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  17. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  19. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-copilot/hooks/sonar-secrets.sh +20 -2
  21. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-cursor/hooks/sonar-secrets.sh +20 -2
  23. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  24. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  25. package/plugins/lisa-expo-agy/plugin.json +1 -1
  26. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  30. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  31. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  35. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  36. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  37. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  40. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  41. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  45. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  46. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  50. package/plugins/lisa-rails-agy/plugin.json +1 -1
  51. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  55. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  56. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  60. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  61. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  63. package/plugins/src/base/hooks/debug-hook.sh +13 -3
  64. package/plugins/src/base/hooks/sonar-secrets.sh +20 -2
@@ -4,14 +4,24 @@
4
4
  # This script is a no-op when CLAUDE_DEBUG is not set or set to 0
5
5
  ##
6
6
 
7
+ # Read JSON input from stdin BEFORE the no-op check can exit.
8
+ #
9
+ # A hook that exits before consuming stdin closes the read end while its
10
+ # caller's write is still in flight, and the CALLER's write raises EPIPE. The
11
+ # hook exits 0 and looks healthy; the harness takes the failure. Measured on
12
+ # this path at 30 EPIPE in 30 invocations once the payload exceeds the pipe
13
+ # buffer, and ~0.5% at the real payload size (CodySwannGT/lisa#2949).
14
+ #
15
+ # This hook is the worst placement of that defect in the tree, because the
16
+ # early exit is the path it takes on every event of every session that has not
17
+ # set CLAUDE_DEBUG — which is all of them.
18
+ INPUT=$(cat)
19
+
7
20
  # Exit immediately if debug mode is not enabled
8
21
  if [[ "${CLAUDE_DEBUG:-0}" != "1" ]]; then
9
22
  exit 0
10
23
  fi
11
24
 
12
- # Read JSON input from stdin
13
- INPUT=$(cat)
14
-
15
25
  # Parse hook event info using jq
16
26
  HOOK_EVENT=$(echo "$INPUT" | jq -r '.hook_event_name // "unknown"')
17
27
  TOOL_NAME=$(echo "$INPUT" | jq -r '.tool_name // "N/A"')
@@ -38,6 +38,26 @@
38
38
  # Usage: sonar-secrets.sh <vendor-event-name> # hook payload on stdin
39
39
  set -uo pipefail
40
40
 
41
+ # Read the payload FIRST, before anything here can stand aside.
42
+ #
43
+ # The caller pipes the hook envelope into our stdin. A path that exits before
44
+ # consuming it closes the read end while the caller's write is still in flight,
45
+ # and the caller's write raises EPIPE — a failure in the harness, produced by a
46
+ # hook that had nothing to say and exited 0 saying it. The evidence lands
47
+ # entirely on the writing side, which is why it read as a mystery for so long.
48
+ #
49
+ # It is a race, so it only fires when this process wins. Measured against the
50
+ # real payload at a 1-minute load average of 82: 3 EPIPE in 600 invocations of
51
+ # the no-event path (0.50%), and 30 in 30 once the payload exceeds the pipe
52
+ # buffer. Rare enough to look like a real failure, frequent enough to keep
53
+ # costing re-runs (CodySwannGT/lisa#2949).
54
+ #
55
+ # Reading first is the fix that also covers real callers, rather than only the
56
+ # tests: every exit below now happens after stdin has reached EOF. The same
57
+ # obligation is discharged as an explicit `cat >/dev/null` drain in
58
+ # install-pkgs.sh and setup-jira-cli.sh, which never use the payload at all.
59
+ payload="$(cat)"
60
+
41
61
  event="${1:-}"
42
62
  [[ -n "$event" ]] || exit 0
43
63
 
@@ -50,8 +70,6 @@ command -v sonar >/dev/null 2>&1 || exit 0
50
70
  # is reviewable, not in whatever shell happened to launch the agent.
51
71
  [[ "${LISA_SONAR_HOOK:-on}" == "off" ]] && exit 0
52
72
 
53
- payload="$(cat)"
54
-
55
73
  # The vendor signals its verdict as JSON on stdout and always exits 0, so the
56
74
  # exit code carries no information and the reason text is the only channel.
57
75
  inactive_marker='secret scanning is inactive'