@codyswann/lisa 2.186.4 → 2.186.6
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-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-cursor/.claude-plugin/plugin.json +1 -1
- 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/typescript/copy-contents/.husky/post-checkout +83 -0
- package/typescript/copy-overwrite/.claude/hooks/worktree-create.sh +77 -0
- package/typescript/merge/.claude/settings.json +13 -0
package/package.json
CHANGED
|
@@ -93,7 +93,7 @@
|
|
|
93
93
|
"ws": ">=8.20.1"
|
|
94
94
|
},
|
|
95
95
|
"name": "@codyswann/lisa",
|
|
96
|
-
"version": "2.186.
|
|
96
|
+
"version": "2.186.6",
|
|
97
97
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
98
98
|
"main": "dist/index.js",
|
|
99
99
|
"exports": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.186.
|
|
3
|
+
"version": "2.186.6",
|
|
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.186.
|
|
3
|
+
"version": "2.186.6",
|
|
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.186.
|
|
3
|
+
"version": "2.186.6",
|
|
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.186.
|
|
3
|
+
"version": "2.186.6",
|
|
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.186.
|
|
3
|
+
"version": "2.186.6",
|
|
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"
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# BEGIN: AI GUARDRAILS
|
|
2
|
+
|
|
3
|
+
# Worktree plugin bootstrap.
|
|
4
|
+
#
|
|
5
|
+
# A git worktree is a DISTINCT project path to Claude Code, so the plugins
|
|
6
|
+
# enabled in .claude/settings.json are "enabled in project settings but isn't
|
|
7
|
+
# installed here" for the worktree until `claude plugin install --scope project`
|
|
8
|
+
# runs against that path. The result: Lisa's guardrail hooks (block-no-verify,
|
|
9
|
+
# the verification gate, inject-rules) AND the other managed plugins
|
|
10
|
+
# (coderabbit / sentry / atlassian / safety-net / …) load ZERO hooks in a
|
|
11
|
+
# worktree session started as `cd <worktree> && claude`. (A `claude -w` session
|
|
12
|
+
# inherits the marketplace plugins, but the project-scoped ones still report
|
|
13
|
+
# "not installed here".)
|
|
14
|
+
#
|
|
15
|
+
# git fires post-checkout INSIDE the new worktree at `git worktree add` time
|
|
16
|
+
# (which `claude -w` and Fleet both use), so this is a deadlock-free place to
|
|
17
|
+
# seed those installs once, before any session loads plugins. Both `claude -w`
|
|
18
|
+
# and standalone `cd && claude` sessions then resolve every enabled plugin.
|
|
19
|
+
#
|
|
20
|
+
# Guards keep it cheap and safe:
|
|
21
|
+
# - only inside a *.claude/worktrees/* path (the main checkout is handled by
|
|
22
|
+
# `lisa apply`'s plugin registration);
|
|
23
|
+
# - only on a branch checkout ($3 = 1), never a file checkout;
|
|
24
|
+
# - only once per worktree (a sentinel in the worktree's private git dir), so
|
|
25
|
+
# ordinary branch switches do not re-run 10+ installs;
|
|
26
|
+
# - only when `claude` and `jq` are on PATH and settings exist (skips CI/remote);
|
|
27
|
+
# - best-effort — never blocks or fails the checkout.
|
|
28
|
+
|
|
29
|
+
_lisa_bootstrap_worktree_plugins() {
|
|
30
|
+
# $3 == 1 -> branch checkout (worktree add / branch switch); 0 -> file checkout
|
|
31
|
+
[ "${3:-1}" = "1" ] || return 0
|
|
32
|
+
command -v claude >/dev/null 2>&1 || return 0
|
|
33
|
+
command -v jq >/dev/null 2>&1 || return 0
|
|
34
|
+
|
|
35
|
+
_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
36
|
+
case "$_root" in
|
|
37
|
+
*/.claude/worktrees/*) : ;;
|
|
38
|
+
*) return 0 ;; # main checkout: `lisa apply` installs plugins there
|
|
39
|
+
esac
|
|
40
|
+
|
|
41
|
+
_settings="$_root/.claude/settings.json"
|
|
42
|
+
[ -f "$_settings" ] || return 0
|
|
43
|
+
|
|
44
|
+
# Per-worktree sentinel lives in the worktree's private git dir
|
|
45
|
+
# (<main>/.git/worktrees/<name>), so it neither pollutes the tree nor leaks to
|
|
46
|
+
# other worktrees, and survives branch switches.
|
|
47
|
+
_gitdir="$(git rev-parse --git-dir 2>/dev/null || echo .git)"
|
|
48
|
+
_sentinel="$_gitdir/lisa-plugins-bootstrapped"
|
|
49
|
+
[ -f "$_sentinel" ] && return 0
|
|
50
|
+
|
|
51
|
+
# Only the truthy entries — an explicit `false` means "disabled", not "install".
|
|
52
|
+
_plugins="$(jq -r '(.enabledPlugins // {}) | to_entries[] | select(.value == true) | .key' "$_settings" 2>/dev/null)"
|
|
53
|
+
[ -n "$_plugins" ] || return 0
|
|
54
|
+
|
|
55
|
+
echo "🔌 Bootstrapping Claude Code plugins for new worktree (scope: project)…"
|
|
56
|
+
claude plugin marketplace update lisa >/dev/null 2>&1 || true
|
|
57
|
+
_had_failure=0
|
|
58
|
+
for _p in $_plugins; do
|
|
59
|
+
# Skip ids with shell-unsafe characters before interpolating into the CLI.
|
|
60
|
+
case "$_p" in
|
|
61
|
+
*[!A-Za-z0-9@._/-]*) continue ;;
|
|
62
|
+
esac
|
|
63
|
+
if claude plugin install "$_p" --scope project >/dev/null 2>&1; then
|
|
64
|
+
echo " ✓ $_p"
|
|
65
|
+
else
|
|
66
|
+
echo " ⚠ $_p (skipped)"
|
|
67
|
+
_had_failure=1
|
|
68
|
+
fi
|
|
69
|
+
done
|
|
70
|
+
|
|
71
|
+
# Mark bootstrapped only when every install succeeded, so a transient failure
|
|
72
|
+
# retries on the next checkout instead of being skipped forever.
|
|
73
|
+
if [ "$_had_failure" = "0" ]; then
|
|
74
|
+
: >"$_sentinel" 2>/dev/null || true
|
|
75
|
+
fi
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
# Never let a bootstrap hiccup block the checkout.
|
|
79
|
+
_lisa_bootstrap_worktree_plugins "$@" || true
|
|
80
|
+
|
|
81
|
+
exit 0
|
|
82
|
+
|
|
83
|
+
# END: AI GUARDRAILS
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# This file is managed by Lisa.
|
|
3
|
+
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
|
+
#
|
|
5
|
+
# WorktreeCreate hook — fast-path setup for `claude -w` / `isolation: worktree`.
|
|
6
|
+
#
|
|
7
|
+
# Claude Code REPLACES its default git worktree creation with this hook, so it
|
|
8
|
+
# MUST: create the worktree, print ONLY its absolute path on stdout, and exit 0.
|
|
9
|
+
# Any non-zero exit, or extra text on stdout, aborts/breaks worktree creation —
|
|
10
|
+
# so every git command redirects its output off stdout, and progress goes to
|
|
11
|
+
# stderr (NOT /dev/tty, which is "not configured" in headless `-p`/CI sessions).
|
|
12
|
+
#
|
|
13
|
+
# It mirrors Claude's default layout — <cwd>/.claude/worktrees/<name> on a fresh
|
|
14
|
+
# `worktree-<name>` branch — so behavior is unchanged; the value is clean,
|
|
15
|
+
# pre-TUI output and an explicit, durable creation path. The plugin bootstrap
|
|
16
|
+
# itself is done by the `post-checkout` hook that `git worktree add` fires, so
|
|
17
|
+
# `claude -w` and standalone `cd && claude` sessions converge on the same state.
|
|
18
|
+
#
|
|
19
|
+
# Payload (observed, Claude Code stdin):
|
|
20
|
+
# { "name": "<worktree>", "cwd": "<project root>", "hook_event_name": ... }
|
|
21
|
+
|
|
22
|
+
_log() { echo "$*" >&2; }
|
|
23
|
+
|
|
24
|
+
_payload="$(cat)"
|
|
25
|
+
|
|
26
|
+
if command -v jq >/dev/null 2>&1; then
|
|
27
|
+
_name="$(printf '%s' "$_payload" | jq -r '.name // .worktree_name // empty' 2>/dev/null)"
|
|
28
|
+
_cwd="$(printf '%s' "$_payload" | jq -r '.cwd // empty' 2>/dev/null)"
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# A new worktree needs a name; without one (or jq) we cannot honor the contract.
|
|
32
|
+
if [ -z "${_name:-}" ]; then
|
|
33
|
+
_log "WorktreeCreate: no worktree name in payload; aborting."
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
36
|
+
|
|
37
|
+
# The name is interpolated into a filesystem path and a git ref, so reject path
|
|
38
|
+
# traversal/separators, a leading dash, and any character outside a safe slug.
|
|
39
|
+
case "$_name" in
|
|
40
|
+
*..* | /* | -* | *[!A-Za-z0-9._-]*)
|
|
41
|
+
_log "WorktreeCreate: unsafe worktree name '$_name'; aborting."
|
|
42
|
+
exit 1
|
|
43
|
+
;;
|
|
44
|
+
esac
|
|
45
|
+
|
|
46
|
+
_root="${_cwd:-$(pwd)}"
|
|
47
|
+
_base="$_root/.claude/worktrees"
|
|
48
|
+
_path="$_base/$_name"
|
|
49
|
+
_wt_branch="worktree-$_name"
|
|
50
|
+
|
|
51
|
+
# Idempotent: an existing worktree just gets its path returned.
|
|
52
|
+
if [ -d "$_path" ]; then
|
|
53
|
+
_log "Worktree already exists: $_path"
|
|
54
|
+
printf '%s\n' "$_path"
|
|
55
|
+
exit 0
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
mkdir -p "$_base" 2>/dev/null || true
|
|
59
|
+
_log "Creating worktree $_path (branch: $_wt_branch)…"
|
|
60
|
+
|
|
61
|
+
# Reuse the worktree branch if it already exists, else create it from HEAD.
|
|
62
|
+
# All git output is kept off stdout (its "Preparing worktree…" line would
|
|
63
|
+
# corrupt the path contract and hang Claude).
|
|
64
|
+
if git -C "$_root" show-ref --verify --quiet "refs/heads/$_wt_branch" 2>/dev/null; then
|
|
65
|
+
git -C "$_root" worktree add "$_path" "$_wt_branch" >/dev/null 2>&1
|
|
66
|
+
else
|
|
67
|
+
git -C "$_root" worktree add -b "$_wt_branch" "$_path" HEAD >/dev/null 2>&1
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
if [ ! -d "$_path" ]; then
|
|
71
|
+
_log "WorktreeCreate: git worktree add failed for $_path."
|
|
72
|
+
exit 1
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# THE ONLY thing on stdout: the absolute worktree path.
|
|
76
|
+
printf '%s\n' "$_path"
|
|
77
|
+
exit 0
|
|
@@ -30,5 +30,18 @@
|
|
|
30
30
|
"permissions": {
|
|
31
31
|
"deny": ["Read(./.entire/metadata/**)"]
|
|
32
32
|
},
|
|
33
|
+
"hooks": {
|
|
34
|
+
"WorktreeCreate": [
|
|
35
|
+
{
|
|
36
|
+
"hooks": [
|
|
37
|
+
{
|
|
38
|
+
"type": "command",
|
|
39
|
+
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/worktree-create.sh",
|
|
40
|
+
"timeout": 60000
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
},
|
|
33
46
|
"plansDirectory": "./plans"
|
|
34
47
|
}
|