@codyswann/lisa 4.75.2 → 4.76.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.
Files changed (109) hide show
  1. package/dist/cli/remote-environment-contract.d.ts.map +1 -1
  2. package/dist/cli/remote-environment-contract.js +1 -0
  3. package/dist/cli/remote-environment-contract.js.map +1 -1
  4. package/dist/cli/ui-setup-readiness-install.d.ts.map +1 -1
  5. package/dist/cli/ui-setup-readiness-install.js +5 -1
  6. package/dist/cli/ui-setup-readiness-install.js.map +1 -1
  7. package/dist/core/config.d.ts +4 -3
  8. package/dist/core/config.d.ts.map +1 -1
  9. package/dist/core/config.js +1 -0
  10. package/dist/core/config.js.map +1 -1
  11. package/dist/core/lisa.d.ts +17 -0
  12. package/dist/core/lisa.d.ts.map +1 -1
  13. package/dist/core/lisa.js +59 -0
  14. package/dist/core/lisa.js.map +1 -1
  15. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  16. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  17. package/dist/core/upstream-evidence-manifest.js +6 -2
  18. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  19. package/dist/devin/enforcement-fallback-installer.d.ts +51 -0
  20. package/dist/devin/enforcement-fallback-installer.d.ts.map +1 -0
  21. package/dist/devin/enforcement-fallback-installer.js +186 -0
  22. package/dist/devin/enforcement-fallback-installer.js.map +1 -0
  23. package/dist/devin/plugin-installer.d.ts +43 -0
  24. package/dist/devin/plugin-installer.d.ts.map +1 -0
  25. package/dist/devin/plugin-installer.js +78 -0
  26. package/dist/devin/plugin-installer.js.map +1 -0
  27. package/dist/health/plugin-inspection.d.ts.map +1 -1
  28. package/dist/health/plugin-inspection.js +1 -0
  29. package/dist/health/plugin-inspection.js.map +1 -1
  30. package/package.json +4 -4
  31. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  32. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  33. package/plugins/lisa-agy/plugin.json +1 -1
  34. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  36. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  37. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-cdk-devin/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-cdk-devin/.devin-plugin/plugin.json +1 -1
  41. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-devin/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-devin/.devin-plugin/plugin.json +1 -1
  45. package/plugins/lisa-devin/hooks/devin-tool-name-shim.sh +9 -0
  46. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  48. package/plugins/lisa-expo-agy/plugin.json +1 -1
  49. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-expo-devin/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-expo-devin/.devin-plugin/plugin.json +1 -1
  53. package/plugins/lisa-expo-devin/hooks/devin-tool-name-shim.sh +9 -0
  54. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  56. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  57. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-harper-fabric-devin/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-harper-fabric-devin/.devin-plugin/plugin.json +1 -1
  61. package/plugins/lisa-harper-fabric-devin/hooks/devin-tool-name-shim.sh +9 -0
  62. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  65. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-nestjs-devin/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-nestjs-devin/.devin-plugin/plugin.json +1 -1
  69. package/plugins/lisa-nestjs-devin/hooks/devin-tool-name-shim.sh +9 -0
  70. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  72. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  73. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  74. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  75. package/plugins/lisa-openclaw-devin/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-openclaw-devin/.devin-plugin/plugin.json +1 -1
  77. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  80. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-phaser-devin/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-phaser-devin/.devin-plugin/plugin.json +1 -1
  84. package/plugins/lisa-phaser-devin/hooks/devin-tool-name-shim.sh +9 -0
  85. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  86. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  87. package/plugins/lisa-rails-agy/plugin.json +1 -1
  88. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  90. package/plugins/lisa-rails-devin/.claude-plugin/plugin.json +1 -1
  91. package/plugins/lisa-rails-devin/.devin-plugin/plugin.json +1 -1
  92. package/plugins/lisa-rails-devin/hooks/devin-tool-name-shim.sh +9 -0
  93. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  95. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  96. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-typescript-devin/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-typescript-devin/.devin-plugin/plugin.json +1 -1
  100. package/plugins/lisa-typescript-devin/hooks/devin-tool-name-shim.sh +9 -0
  101. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  103. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  104. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  105. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  106. package/plugins/lisa-wiki-devin/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-wiki-devin/.devin-plugin/plugin.json +1 -1
  108. package/scripts/generate-devin-plugin-artifacts.mjs +13 -2
  109. package/ui/index.html +14 -1
@@ -61,8 +61,10 @@ const DEVIN_MANIFEST_FIELDS = Object.freeze([
61
61
  * Devin → Claude tool-name shim, emitted into every Devin variant that ships
62
62
  * hooks. It reads the hook payload, rewrites a lowercase Devin `tool_name` to
63
63
  * the Claude name the guard tests for, and pipes the result into the wrapped
64
- * hook command, preserving its exit status and output. Without `jq` (which the
65
- * guards themselves require) the payload passes through unchanged.
64
+ * hook command, preserving its exit status and output. When a tool event's
65
+ * mapping cannot run (no `jq`, or `jq` failed) it fails closed with exit 2 —
66
+ * forwarding the raw lowercase `exec` would make every Bash guard stand down.
67
+ * Payloads with no `tool_name` (session events) pass through unchanged.
66
68
  */
67
69
  const DEVIN_TOOL_SHIM_SOURCE = `#!/bin/sh
68
70
  # Generated by scripts/generate-devin-plugin-artifacts.mjs — do not edit.
@@ -75,6 +77,11 @@ const DEVIN_TOOL_SHIM_SOURCE = `#!/bin/sh
75
77
  # Usage: devin-tool-name-shim.sh <hook command> [args...]
76
78
  payload=$(cat)
77
79
  normalized=$payload
80
+ mapped=
81
+ case $payload in
82
+ *'"tool_name"'*) needs_mapping=1 ;;
83
+ *) needs_mapping=0 ;;
84
+ esac
78
85
  if command -v jq >/dev/null 2>&1; then
79
86
  mapped=$(printf '%s' "$payload" | jq -c '
80
87
  if (.tool_name | type) == "string" then
@@ -93,6 +100,10 @@ if command -v jq >/dev/null 2>&1; then
93
100
  }[.] // .)
94
101
  else . end' 2>/dev/null) && [ -n "$mapped" ] && normalized=$mapped
95
102
  fi
103
+ if [ "$needs_mapping" = 1 ] && [ -z "\${mapped:-}" ]; then
104
+ echo "Lisa could not map the Devin tool name (jq missing or failed); refusing" >&2
105
+ exit 2
106
+ fi
96
107
  printf '%s' "$normalized" | "$@"
97
108
  `;
98
109
 
package/ui/index.html CHANGED
@@ -2483,6 +2483,7 @@
2483
2483
  "agy",
2484
2484
  "copilot",
2485
2485
  "opencode",
2486
+ "devin",
2486
2487
  ];
2487
2488
  /* agentHooks is tri-state:
2488
2489
  true — hooks fire. Whatever invocation flags that requires are
@@ -2536,6 +2537,15 @@
2536
2537
  agentHooks: true,
2537
2538
  commands: true,
2538
2539
  },
2540
+ devin: {
2541
+ // Verified by run on Devin CLI 3000.11.3 (CodySwannGT/lisa#4426):
2542
+ // plugin hooks fire in `devin -p`, and a Lisa guard refused a
2543
+ // `--no-verify` commit. Devin has no plugin command surface — its
2544
+ // slash commands are skills — so commands is false.
2545
+ label: "Devin",
2546
+ agentHooks: true,
2547
+ commands: false,
2548
+ },
2539
2549
  };
2540
2550
  /* The currently-selected staff. Every factory page renders against it. */
2541
2551
  DATA.staff = "claude";
@@ -5366,6 +5376,7 @@
5366
5376
  "agy",
5367
5377
  "copilot",
5368
5378
  "opencode",
5379
+ "devin",
5369
5380
  ],
5370
5381
  },
5371
5382
  {
@@ -7447,7 +7458,7 @@
7447
7458
  {
7448
7459
  key: "harness",
7449
7460
  label: "Coding-agent harness",
7450
- desc: "Which agent(s) Lisa emits artifacts for. fleet targets all six; a single value targets only that agent. Default: claude.",
7461
+ desc: "Which agent(s) Lisa emits artifacts for. fleet targets all seven; a single value targets only that agent. Default: claude.",
7451
7462
  badges: ["default: claude"],
7452
7463
  control: sel("fleet", [
7453
7464
  "claude",
@@ -7456,6 +7467,7 @@
7456
7467
  "agy",
7457
7468
  "copilot",
7458
7469
  "opencode",
7470
+ "devin",
7459
7471
  "fleet",
7460
7472
  ]),
7461
7473
  },
@@ -12780,6 +12792,7 @@
12780
12792
  "agy",
12781
12793
  "copilot",
12782
12794
  "opencode",
12795
+ "devin",
12783
12796
  ];
12784
12797
  function configureRemoteEnvironment(cfg) {
12785
12798
  const snapshot = window.LISA_REMOTE_ENVIRONMENT || {