@codyswann/lisa 2.158.1 → 2.158.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/package.json +1 -1
- 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 +27 -7
- 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 +27 -7
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/parity-safety-net.sh +27 -7
- 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-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 +27 -7
package/package.json
CHANGED
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"lodash": ">=4.18.1"
|
|
85
85
|
},
|
|
86
86
|
"name": "@codyswann/lisa",
|
|
87
|
-
"version": "2.158.
|
|
87
|
+
"version": "2.158.3",
|
|
88
88
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
89
89
|
"main": "dist/index.js",
|
|
90
90
|
"exports": {
|
|
@@ -61,14 +61,34 @@ fi
|
|
|
61
61
|
|
|
62
62
|
# 2. Force-pushing a protected branch. `--force-with-lease` is the safe,
|
|
63
63
|
# non-clobbering alternative and is intentionally NOT blocked.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
#
|
|
65
|
+
# The force flag AND the protected-branch name must appear in the SAME
|
|
66
|
+
# `git push` statement. Checking them independently over the whole command is
|
|
67
|
+
# a false-positive magnet: an unrelated `-f` (a `[ -f file ]` test, `rm -f`,
|
|
68
|
+
# `grep -f`, `tail -f`) plus an unrelated protected name (`--base main`,
|
|
69
|
+
# `origin/main`, `git fetch origin main`) alongside any feature-branch
|
|
70
|
+
# `git push` would wrongly block. So split the command into statements
|
|
71
|
+
# (`;`, `&&`, `||`, `|`, newlines), keep only the `git push` segments, and
|
|
72
|
+
# inspect each in isolation — a real `git push --force origin main` still
|
|
73
|
+
# matches, while a feature-branch push next to `[ -f ]`/`--base main` passes.
|
|
74
|
+
# Normalize bash line-continuations (a trailing backslash + newline → space)
|
|
75
|
+
# before segmenting the command. Without this, "git push --force origin
|
|
76
|
+
# \<newline>main" splits into a segment matching --force but not `main`, letting a
|
|
77
|
+
# protected force-push slip past. Uses awk (POSIX) instead of a GNU-only
|
|
78
|
+
# `sed ':a;N;$!ba;…'`, which errors on BSD sed (macOS) and there silently no-ops.
|
|
79
|
+
normalized_command_str="$(printf '%s' "$command_str" \
|
|
80
|
+
| awk '{ if (sub(/\\$/, "")) printf "%s ", $0; else print }')"
|
|
81
|
+
|
|
82
|
+
while IFS= read -r push_stmt; do
|
|
83
|
+
if printf '%s' "$push_stmt" \
|
|
84
|
+
| grep -Eiq '(--force([[:space:]]|=|$)|[[:space:]]-f([[:space:]]|$))' \
|
|
85
|
+
&& ! printf '%s' "$push_stmt" | grep -Eiq -- '--force-with-lease' \
|
|
86
|
+
&& printf '%s' "$push_stmt" \
|
|
87
|
+
| grep -Eiq '(^|[^[:alnum:]_/-])(main|master|production|prod|release)([^[:alnum:]_/-]|$)'; then
|
|
88
|
+
block "force-pushing a protected branch (use --force-with-lease, or push a feature branch)"
|
|
70
89
|
fi
|
|
71
|
-
|
|
90
|
+
done < <(printf '%s' "$normalized_command_str" | tr '&|;' '\n' \
|
|
91
|
+
| grep -Ei '(^|[^[:alnum:]_-])git[[:space:]]+push\b')
|
|
72
92
|
|
|
73
93
|
# 3. `git reset --hard` while the working tree has uncommitted changes — this
|
|
74
94
|
# silently discards them. Only blocks when the tree is actually dirty, so a
|
|
@@ -61,14 +61,34 @@ fi
|
|
|
61
61
|
|
|
62
62
|
# 2. Force-pushing a protected branch. `--force-with-lease` is the safe,
|
|
63
63
|
# non-clobbering alternative and is intentionally NOT blocked.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
#
|
|
65
|
+
# The force flag AND the protected-branch name must appear in the SAME
|
|
66
|
+
# `git push` statement. Checking them independently over the whole command is
|
|
67
|
+
# a false-positive magnet: an unrelated `-f` (a `[ -f file ]` test, `rm -f`,
|
|
68
|
+
# `grep -f`, `tail -f`) plus an unrelated protected name (`--base main`,
|
|
69
|
+
# `origin/main`, `git fetch origin main`) alongside any feature-branch
|
|
70
|
+
# `git push` would wrongly block. So split the command into statements
|
|
71
|
+
# (`;`, `&&`, `||`, `|`, newlines), keep only the `git push` segments, and
|
|
72
|
+
# inspect each in isolation — a real `git push --force origin main` still
|
|
73
|
+
# matches, while a feature-branch push next to `[ -f ]`/`--base main` passes.
|
|
74
|
+
# Normalize bash line-continuations (a trailing backslash + newline → space)
|
|
75
|
+
# before segmenting the command. Without this, "git push --force origin
|
|
76
|
+
# \<newline>main" splits into a segment matching --force but not `main`, letting a
|
|
77
|
+
# protected force-push slip past. Uses awk (POSIX) instead of a GNU-only
|
|
78
|
+
# `sed ':a;N;$!ba;…'`, which errors on BSD sed (macOS) and there silently no-ops.
|
|
79
|
+
normalized_command_str="$(printf '%s' "$command_str" \
|
|
80
|
+
| awk '{ if (sub(/\\$/, "")) printf "%s ", $0; else print }')"
|
|
81
|
+
|
|
82
|
+
while IFS= read -r push_stmt; do
|
|
83
|
+
if printf '%s' "$push_stmt" \
|
|
84
|
+
| grep -Eiq '(--force([[:space:]]|=|$)|[[:space:]]-f([[:space:]]|$))' \
|
|
85
|
+
&& ! printf '%s' "$push_stmt" | grep -Eiq -- '--force-with-lease' \
|
|
86
|
+
&& printf '%s' "$push_stmt" \
|
|
87
|
+
| grep -Eiq '(^|[^[:alnum:]_/-])(main|master|production|prod|release)([^[:alnum:]_/-]|$)'; then
|
|
88
|
+
block "force-pushing a protected branch (use --force-with-lease, or push a feature branch)"
|
|
70
89
|
fi
|
|
71
|
-
|
|
90
|
+
done < <(printf '%s' "$normalized_command_str" | tr '&|;' '\n' \
|
|
91
|
+
| grep -Ei '(^|[^[:alnum:]_-])git[[:space:]]+push\b')
|
|
72
92
|
|
|
73
93
|
# 3. `git reset --hard` while the working tree has uncommitted changes — this
|
|
74
94
|
# silently discards them. Only blocks when the tree is actually dirty, so a
|
|
@@ -61,14 +61,34 @@ fi
|
|
|
61
61
|
|
|
62
62
|
# 2. Force-pushing a protected branch. `--force-with-lease` is the safe,
|
|
63
63
|
# non-clobbering alternative and is intentionally NOT blocked.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
#
|
|
65
|
+
# The force flag AND the protected-branch name must appear in the SAME
|
|
66
|
+
# `git push` statement. Checking them independently over the whole command is
|
|
67
|
+
# a false-positive magnet: an unrelated `-f` (a `[ -f file ]` test, `rm -f`,
|
|
68
|
+
# `grep -f`, `tail -f`) plus an unrelated protected name (`--base main`,
|
|
69
|
+
# `origin/main`, `git fetch origin main`) alongside any feature-branch
|
|
70
|
+
# `git push` would wrongly block. So split the command into statements
|
|
71
|
+
# (`;`, `&&`, `||`, `|`, newlines), keep only the `git push` segments, and
|
|
72
|
+
# inspect each in isolation — a real `git push --force origin main` still
|
|
73
|
+
# matches, while a feature-branch push next to `[ -f ]`/`--base main` passes.
|
|
74
|
+
# Normalize bash line-continuations (a trailing backslash + newline → space)
|
|
75
|
+
# before segmenting the command. Without this, "git push --force origin
|
|
76
|
+
# \<newline>main" splits into a segment matching --force but not `main`, letting a
|
|
77
|
+
# protected force-push slip past. Uses awk (POSIX) instead of a GNU-only
|
|
78
|
+
# `sed ':a;N;$!ba;…'`, which errors on BSD sed (macOS) and there silently no-ops.
|
|
79
|
+
normalized_command_str="$(printf '%s' "$command_str" \
|
|
80
|
+
| awk '{ if (sub(/\\$/, "")) printf "%s ", $0; else print }')"
|
|
81
|
+
|
|
82
|
+
while IFS= read -r push_stmt; do
|
|
83
|
+
if printf '%s' "$push_stmt" \
|
|
84
|
+
| grep -Eiq '(--force([[:space:]]|=|$)|[[:space:]]-f([[:space:]]|$))' \
|
|
85
|
+
&& ! printf '%s' "$push_stmt" | grep -Eiq -- '--force-with-lease' \
|
|
86
|
+
&& printf '%s' "$push_stmt" \
|
|
87
|
+
| grep -Eiq '(^|[^[:alnum:]_/-])(main|master|production|prod|release)([^[:alnum:]_/-]|$)'; then
|
|
88
|
+
block "force-pushing a protected branch (use --force-with-lease, or push a feature branch)"
|
|
70
89
|
fi
|
|
71
|
-
|
|
90
|
+
done < <(printf '%s' "$normalized_command_str" | tr '&|;' '\n' \
|
|
91
|
+
| grep -Ei '(^|[^[:alnum:]_-])git[[:space:]]+push\b')
|
|
72
92
|
|
|
73
93
|
# 3. `git reset --hard` while the working tree has uncommitted changes — this
|
|
74
94
|
# silently discards them. Only blocks when the tree is actually dirty, so a
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.158.
|
|
3
|
+
"version": "2.158.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.158.
|
|
3
|
+
"version": "2.158.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.158.
|
|
3
|
+
"version": "2.158.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.158.
|
|
3
|
+
"version": "2.158.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.158.
|
|
3
|
+
"version": "2.158.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"
|
|
@@ -61,14 +61,34 @@ fi
|
|
|
61
61
|
|
|
62
62
|
# 2. Force-pushing a protected branch. `--force-with-lease` is the safe,
|
|
63
63
|
# non-clobbering alternative and is intentionally NOT blocked.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
64
|
+
#
|
|
65
|
+
# The force flag AND the protected-branch name must appear in the SAME
|
|
66
|
+
# `git push` statement. Checking them independently over the whole command is
|
|
67
|
+
# a false-positive magnet: an unrelated `-f` (a `[ -f file ]` test, `rm -f`,
|
|
68
|
+
# `grep -f`, `tail -f`) plus an unrelated protected name (`--base main`,
|
|
69
|
+
# `origin/main`, `git fetch origin main`) alongside any feature-branch
|
|
70
|
+
# `git push` would wrongly block. So split the command into statements
|
|
71
|
+
# (`;`, `&&`, `||`, `|`, newlines), keep only the `git push` segments, and
|
|
72
|
+
# inspect each in isolation — a real `git push --force origin main` still
|
|
73
|
+
# matches, while a feature-branch push next to `[ -f ]`/`--base main` passes.
|
|
74
|
+
# Normalize bash line-continuations (a trailing backslash + newline → space)
|
|
75
|
+
# before segmenting the command. Without this, "git push --force origin
|
|
76
|
+
# \<newline>main" splits into a segment matching --force but not `main`, letting a
|
|
77
|
+
# protected force-push slip past. Uses awk (POSIX) instead of a GNU-only
|
|
78
|
+
# `sed ':a;N;$!ba;…'`, which errors on BSD sed (macOS) and there silently no-ops.
|
|
79
|
+
normalized_command_str="$(printf '%s' "$command_str" \
|
|
80
|
+
| awk '{ if (sub(/\\$/, "")) printf "%s ", $0; else print }')"
|
|
81
|
+
|
|
82
|
+
while IFS= read -r push_stmt; do
|
|
83
|
+
if printf '%s' "$push_stmt" \
|
|
84
|
+
| grep -Eiq '(--force([[:space:]]|=|$)|[[:space:]]-f([[:space:]]|$))' \
|
|
85
|
+
&& ! printf '%s' "$push_stmt" | grep -Eiq -- '--force-with-lease' \
|
|
86
|
+
&& printf '%s' "$push_stmt" \
|
|
87
|
+
| grep -Eiq '(^|[^[:alnum:]_/-])(main|master|production|prod|release)([^[:alnum:]_/-]|$)'; then
|
|
88
|
+
block "force-pushing a protected branch (use --force-with-lease, or push a feature branch)"
|
|
70
89
|
fi
|
|
71
|
-
|
|
90
|
+
done < <(printf '%s' "$normalized_command_str" | tr '&|;' '\n' \
|
|
91
|
+
| grep -Ei '(^|[^[:alnum:]_-])git[[:space:]]+push\b')
|
|
72
92
|
|
|
73
93
|
# 3. `git reset --hard` while the working tree has uncommitted changes — this
|
|
74
94
|
# silently discards them. Only blocks when the tree is actually dirty, so a
|