@codyswann/lisa 2.124.1 → 2.124.3
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/dist/agy/mcp-installer.d.ts +22 -5
- package/dist/agy/mcp-installer.d.ts.map +1 -1
- package/dist/agy/mcp-installer.js +52 -12
- package/dist/agy/mcp-installer.js.map +1 -1
- package/dist/codex/hooks-installer.d.ts.map +1 -1
- package/dist/codex/hooks-installer.js +12 -11
- package/dist/codex/hooks-installer.js.map +1 -1
- package/dist/core/lisa.d.ts +19 -11
- package/dist/core/lisa.d.ts.map +1 -1
- package/dist/core/lisa.js +44 -12
- package/dist/core/lisa.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lisa/.claude-plugin/plugin.json +1 -10
- package/plugins/lisa/{hooks → .codex-plugin}/hooks.json +0 -11
- package/plugins/lisa/.codex-plugin/plugin.json +2 -2
- package/plugins/lisa/hooks/block-no-verify.agy.sh +45 -0
- package/plugins/lisa-agy/hooks/block-no-verify.agy.sh +45 -0
- package/plugins/lisa-agy/hooks.json +15 -0
- 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 -12
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -12
- 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 +2 -2
- 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 +2 -2
- 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-rails/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-rails/.codex-plugin/plugin.json +2 -2
- 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 +2 -2
- 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/.claude-plugin/plugin.json +0 -1
- package/plugins/src/base/hooks/block-no-verify.agy.sh +45 -0
- package/scripts/generate-agy-plugin-artifacts.mjs +158 -19
- package/scripts/generate-codex-plugin-artifacts.mjs +45 -25
- package/scripts/generate-copilot-plugin-artifacts.mjs +6 -5
- package/scripts/generate-cursor-plugin-artifacts.mjs +5 -3
- package/scripts/lib/per-agent-hook-filter.mjs +29 -18
- package/dist/codex/scripts/notify-ntfy.sh +0 -18
- package/plugins/lisa/hooks/notify-ntfy.sh +0 -183
- package/plugins/lisa-copilot/hooks/notify-ntfy.sh +0 -183
- package/plugins/lisa-cursor/hooks/notify-ntfy.sh +0 -183
- package/plugins/lisa-expo-agy/.mcp.json +0 -8
- package/plugins/src/base/hooks/notify-ntfy.sh +0 -183
- /package/plugins/lisa-harper-fabric/{hooks → .codex-plugin}/hooks.json +0 -0
- /package/plugins/lisa-nestjs/{hooks → .codex-plugin}/hooks.json +0 -0
- /package/plugins/lisa-rails/{hooks → .codex-plugin}/hooks.json +0 -0
- /package/plugins/lisa-typescript/{hooks → .codex-plugin}/hooks.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"workflow"
|
|
13
13
|
],
|
|
14
14
|
"skills": "./skills/",
|
|
15
|
-
"hooks": "
|
|
15
|
+
"hooks": "./.codex-plugin/hooks.json",
|
|
16
16
|
"interface": {
|
|
17
17
|
"displayName": "Lisa",
|
|
18
18
|
"shortDescription": "Universal project governance workflows",
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Antigravity (agy) PreToolUse hook: blocks shell commands that bypass Lisa's
|
|
3
|
+
# git quality gates via `--no-verify` (exact parity with the Claude
|
|
4
|
+
# block-no-verify.sh — only the long flag, to avoid `-n` false positives).
|
|
5
|
+
#
|
|
6
|
+
# agy protocol (distinct from the Claude block-no-verify.sh exit-code protocol):
|
|
7
|
+
# - stdin = JSON: { "toolCall": { "name": "run_command",
|
|
8
|
+
# "args": { "CommandLine": "<shell command>" } }, ... }
|
|
9
|
+
# - stdout = JSON decision: {"decision":"deny","reason":"..."} | {"decision":"allow"}
|
|
10
|
+
#
|
|
11
|
+
# Shipped as a GLOBAL agy plugin hook (hooks.json at the plugin root, installed
|
|
12
|
+
# to ~/.gemini/config/plugins/<variant>/). Matches agy's shell tool `run_command`
|
|
13
|
+
# on PreToolUse. jq parses the JSON envelope (per project rule: never grep/sed
|
|
14
|
+
# JSON); the command string itself is matched with grep (it is a plain string,
|
|
15
|
+
# not JSON). Malformed/empty stdin → allow (fail open, never crash the tool).
|
|
16
|
+
set -uo pipefail
|
|
17
|
+
|
|
18
|
+
allow() {
|
|
19
|
+
printf '%s\n' '{"decision":"allow"}'
|
|
20
|
+
exit 0
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
deny() {
|
|
24
|
+
printf '%s\n' '{"decision":"deny","reason":"--no-verify bypasses Lisa pre-commit/pre-push quality gates. Fix the underlying issue (lint, tests, formatting) or ask the user before bypassing."}'
|
|
25
|
+
exit 0
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
input="$(cat 2>/dev/null || true)"
|
|
29
|
+
[ -z "$input" ] && allow
|
|
30
|
+
|
|
31
|
+
command_str="$(printf '%s' "$input" | jq -r '.toolCall.args.CommandLine // empty' 2>/dev/null || true)"
|
|
32
|
+
[ -z "$command_str" ] && allow
|
|
33
|
+
|
|
34
|
+
# Bounded --no-verify (catches `git commit`/`git push --no-verify` in any
|
|
35
|
+
# position, incl. subshells) while excluding longer flags like --no-verify-ssl.
|
|
36
|
+
# Exact parity with the Claude block-no-verify.sh: only --no-verify is matched.
|
|
37
|
+
# The short `-n` form is intentionally NOT matched — `-n` appears in commit
|
|
38
|
+
# message prose (`git commit -m "fix -n flag"`) and unrelated piped commands
|
|
39
|
+
# (`sort -n x; git commit`), so guarding it false-positives on valid work.
|
|
40
|
+
if printf '%s' "$command_str" |
|
|
41
|
+
grep -Eq '(^|[^[:alnum:]_-])--no-verify($|[^[:alnum:]_-])'; then
|
|
42
|
+
deny
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
allow
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Antigravity (agy) PreToolUse hook: blocks shell commands that bypass Lisa's
|
|
3
|
+
# git quality gates via `--no-verify` (exact parity with the Claude
|
|
4
|
+
# block-no-verify.sh — only the long flag, to avoid `-n` false positives).
|
|
5
|
+
#
|
|
6
|
+
# agy protocol (distinct from the Claude block-no-verify.sh exit-code protocol):
|
|
7
|
+
# - stdin = JSON: { "toolCall": { "name": "run_command",
|
|
8
|
+
# "args": { "CommandLine": "<shell command>" } }, ... }
|
|
9
|
+
# - stdout = JSON decision: {"decision":"deny","reason":"..."} | {"decision":"allow"}
|
|
10
|
+
#
|
|
11
|
+
# Shipped as a GLOBAL agy plugin hook (hooks.json at the plugin root, installed
|
|
12
|
+
# to ~/.gemini/config/plugins/<variant>/). Matches agy's shell tool `run_command`
|
|
13
|
+
# on PreToolUse. jq parses the JSON envelope (per project rule: never grep/sed
|
|
14
|
+
# JSON); the command string itself is matched with grep (it is a plain string,
|
|
15
|
+
# not JSON). Malformed/empty stdin → allow (fail open, never crash the tool).
|
|
16
|
+
set -uo pipefail
|
|
17
|
+
|
|
18
|
+
allow() {
|
|
19
|
+
printf '%s\n' '{"decision":"allow"}'
|
|
20
|
+
exit 0
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
deny() {
|
|
24
|
+
printf '%s\n' '{"decision":"deny","reason":"--no-verify bypasses Lisa pre-commit/pre-push quality gates. Fix the underlying issue (lint, tests, formatting) or ask the user before bypassing."}'
|
|
25
|
+
exit 0
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
input="$(cat 2>/dev/null || true)"
|
|
29
|
+
[ -z "$input" ] && allow
|
|
30
|
+
|
|
31
|
+
command_str="$(printf '%s' "$input" | jq -r '.toolCall.args.CommandLine // empty' 2>/dev/null || true)"
|
|
32
|
+
[ -z "$command_str" ] && allow
|
|
33
|
+
|
|
34
|
+
# Bounded --no-verify (catches `git commit`/`git push --no-verify` in any
|
|
35
|
+
# position, incl. subshells) while excluding longer flags like --no-verify-ssl.
|
|
36
|
+
# Exact parity with the Claude block-no-verify.sh: only --no-verify is matched.
|
|
37
|
+
# The short `-n` form is intentionally NOT matched — `-n` appears in commit
|
|
38
|
+
# message prose (`git commit -m "fix -n flag"`) and unrelated piped commands
|
|
39
|
+
# (`sort -n x; git commit`), so guarding it false-positives on valid work.
|
|
40
|
+
if printf '%s' "$command_str" |
|
|
41
|
+
grep -Eq '(^|[^[:alnum:]_-])--no-verify($|[^[:alnum:]_-])'; then
|
|
42
|
+
deny
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
allow
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -17,17 +17,6 @@
|
|
|
17
17
|
]
|
|
18
18
|
}
|
|
19
19
|
],
|
|
20
|
-
"agentStop": [
|
|
21
|
-
{
|
|
22
|
-
"matcher": "",
|
|
23
|
-
"hooks": [
|
|
24
|
-
{
|
|
25
|
-
"type": "command",
|
|
26
|
-
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/notify-ntfy.sh"
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
20
|
"sessionStart": [
|
|
32
21
|
{
|
|
33
22
|
"matcher": "startup",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -17,17 +17,6 @@
|
|
|
17
17
|
]
|
|
18
18
|
}
|
|
19
19
|
],
|
|
20
|
-
"Stop": [
|
|
21
|
-
{
|
|
22
|
-
"matcher": "",
|
|
23
|
-
"hooks": [
|
|
24
|
-
{
|
|
25
|
-
"type": "command",
|
|
26
|
-
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/notify-ntfy.sh"
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
],
|
|
31
20
|
"SessionStart": [
|
|
32
21
|
{
|
|
33
22
|
"matcher": "startup",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-harper-fabric",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"lisa-typescript"
|
|
16
16
|
],
|
|
17
17
|
"skills": "./skills/",
|
|
18
|
-
"hooks": "
|
|
18
|
+
"hooks": "./.codex-plugin/hooks.json",
|
|
19
19
|
"interface": {
|
|
20
20
|
"displayName": "Lisa Harper/Fabric",
|
|
21
21
|
"shortDescription": "Harper/Fabric workflow guidance",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-nestjs",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "NestJS-specific skills and migration write-protection hooks.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"lisa-typescript"
|
|
16
16
|
],
|
|
17
17
|
"skills": "./skills/",
|
|
18
|
-
"hooks": "
|
|
18
|
+
"hooks": "./.codex-plugin/hooks.json",
|
|
19
19
|
"interface": {
|
|
20
20
|
"displayName": "Lisa NestJS",
|
|
21
21
|
"shortDescription": "NestJS workflow guidance",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, across Claude and Codex.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Connect staff roles to Telegram or Slack via OpenClaw — facilitator/specialist hub-and-spoke routing and repo-coding topics, for Claude Code and Codex",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-rails",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "Ruby on Rails-specific skills and hooks for RuboCop and ast-grep scanning on edit.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"lisa"
|
|
16
16
|
],
|
|
17
17
|
"skills": "./skills/",
|
|
18
|
-
"hooks": "
|
|
18
|
+
"hooks": "./.codex-plugin/hooks.json",
|
|
19
19
|
"interface": {
|
|
20
20
|
"displayName": "Lisa Rails",
|
|
21
21
|
"shortDescription": "Ruby on Rails workflows",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-typescript",
|
|
3
|
-
"version": "2.124.
|
|
3
|
+
"version": "2.124.3",
|
|
4
4
|
"description": "TypeScript-specific hooks for formatting, linting, and ast-grep scanning on edit.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Cody Swann"
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"dependencies": [
|
|
15
15
|
"lisa"
|
|
16
16
|
],
|
|
17
|
-
"hooks": "
|
|
17
|
+
"hooks": "./.codex-plugin/hooks.json",
|
|
18
18
|
"interface": {
|
|
19
19
|
"displayName": "Lisa TypeScript",
|
|
20
20
|
"shortDescription": "TypeScript lifecycle checks",
|
|
@@ -62,7 +62,6 @@
|
|
|
62
62
|
}
|
|
63
63
|
],
|
|
64
64
|
"Stop": [
|
|
65
|
-
{ "matcher": "", "hooks": [{ "type": "command", "command": "${CLAUDE_PLUGIN_ROOT}/hooks/notify-ntfy.sh" }] },
|
|
66
65
|
{ "matcher": "", "hooks": [{ "type": "command", "command": "command -v entire >/dev/null 2>&1 && entire hooks claude-code stop || true" }] }
|
|
67
66
|
],
|
|
68
67
|
"SessionStart": [
|