@codyswann/lisa 2.178.3 → 2.178.4
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/codex/scripts/install-pkgs.sh +27 -1
- package/dist/opencode/plugin-templates/lisa-session-bootstrap.ts +18 -5
- 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/install-pkgs.sh +26 -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-copilot/hooks/install-pkgs.sh +26 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/hooks/install-pkgs.sh +26 -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/plugins/src/base/hooks/install-pkgs.sh +26 -1
|
@@ -7,7 +7,33 @@ set -uo pipefail
|
|
|
7
7
|
repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
8
8
|
cd "$repo_root" 2>/dev/null || exit 0
|
|
9
9
|
|
|
10
|
-
if [
|
|
10
|
+
if [ ! -f "package.json" ]; then
|
|
11
|
+
exit 0
|
|
12
|
+
fi
|
|
13
|
+
|
|
14
|
+
link_primary_worktree_node_modules() {
|
|
15
|
+
[ ! -e "node_modules" ] && [ ! -L "node_modules" ] || return 1
|
|
16
|
+
|
|
17
|
+
case "$repo_root" in
|
|
18
|
+
*/.claude/worktrees/*)
|
|
19
|
+
primary_root="${repo_root%%/.claude/worktrees/*}"
|
|
20
|
+
;;
|
|
21
|
+
*)
|
|
22
|
+
return 1
|
|
23
|
+
;;
|
|
24
|
+
esac
|
|
25
|
+
|
|
26
|
+
[ "$primary_root" != "$repo_root" ] || return 1
|
|
27
|
+
[ -d "$primary_root/node_modules" ] || return 1
|
|
28
|
+
|
|
29
|
+
ln -s "$primary_root/node_modules" "node_modules"
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if [ -d "node_modules" ]; then
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
if link_primary_worktree_node_modules && [ -d "node_modules" ]; then
|
|
11
37
|
exit 0
|
|
12
38
|
fi
|
|
13
39
|
|
|
@@ -23,7 +23,7 @@ export const LisaSessionBootstrap = async ({
|
|
|
23
23
|
worktree: string;
|
|
24
24
|
}) => {
|
|
25
25
|
const root = worktree;
|
|
26
|
-
const { existsSync, mkdirSync, readFileSync, writeFileSync } =
|
|
26
|
+
const { existsSync, mkdirSync, readFileSync, symlinkSync, writeFileSync } =
|
|
27
27
|
await import("node:fs");
|
|
28
28
|
|
|
29
29
|
// install-pkgs: bootstrap dependencies when they're missing.
|
|
@@ -32,16 +32,29 @@ export const LisaSessionBootstrap = async ({
|
|
|
32
32
|
existsSync(`${root}/package.json`) &&
|
|
33
33
|
!existsSync(`${root}/node_modules`)
|
|
34
34
|
) {
|
|
35
|
+
let linkedPrimaryNodeModules = false;
|
|
36
|
+
const marker = "/.claude/worktrees/";
|
|
37
|
+
if (root.includes(marker)) {
|
|
38
|
+
const primaryRoot = root.slice(0, root.indexOf(marker));
|
|
39
|
+
const primaryNodeModules = `${primaryRoot}/node_modules`;
|
|
40
|
+
if (primaryRoot && existsSync(primaryNodeModules)) {
|
|
41
|
+
symlinkSync(primaryNodeModules, `${root}/node_modules`);
|
|
42
|
+
linkedPrimaryNodeModules = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
35
46
|
const has = (f: string) => existsSync(`${root}/${f}`);
|
|
36
47
|
const install = async (cmd: string) => {
|
|
37
48
|
if (Bun.which(cmd)) {
|
|
38
49
|
await $`${cmd} install`.cwd(root).quiet().nothrow();
|
|
39
50
|
}
|
|
40
51
|
};
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
52
|
+
if (!linkedPrimaryNodeModules) {
|
|
53
|
+
if (has("bun.lockb") || has("bun.lock")) await install("bun");
|
|
54
|
+
else if (has("pnpm-lock.yaml")) await install("pnpm");
|
|
55
|
+
else if (has("yarn.lock")) await install("yarn");
|
|
56
|
+
else await install("npm");
|
|
57
|
+
}
|
|
45
58
|
}
|
|
46
59
|
} catch {
|
|
47
60
|
// fail open — never block startup on a dependency-install error
|
package/package.json
CHANGED
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"ws": ">=8.20.1"
|
|
92
92
|
},
|
|
93
93
|
"name": "@codyswann/lisa",
|
|
94
|
-
"version": "2.178.
|
|
94
|
+
"version": "2.178.4",
|
|
95
95
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
96
96
|
"main": "dist/index.js",
|
|
97
97
|
"exports": {
|
|
@@ -2,12 +2,37 @@
|
|
|
2
2
|
# This file is managed by Lisa.
|
|
3
3
|
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
4
|
|
|
5
|
+
link_primary_worktree_node_modules() {
|
|
6
|
+
[ -f "package.json" ] || return 1
|
|
7
|
+
[ ! -e "node_modules" ] && [ ! -L "node_modules" ] || return 1
|
|
8
|
+
|
|
9
|
+
repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
10
|
+
case "$repo_root" in
|
|
11
|
+
*/.claude/worktrees/*)
|
|
12
|
+
primary_root="${repo_root%%/.claude/worktrees/*}"
|
|
13
|
+
;;
|
|
14
|
+
*)
|
|
15
|
+
return 1
|
|
16
|
+
;;
|
|
17
|
+
esac
|
|
18
|
+
|
|
19
|
+
[ "$primary_root" != "$repo_root" ] || return 1
|
|
20
|
+
[ -d "$primary_root/node_modules" ] || return 1
|
|
21
|
+
|
|
22
|
+
ln -s "$primary_root/node_modules" "node_modules"
|
|
23
|
+
echo "Linked node_modules from primary worktree: $primary_root/node_modules"
|
|
24
|
+
}
|
|
25
|
+
|
|
5
26
|
# Only run package installation when node_modules are missing.
|
|
6
27
|
# This covers remote environments, new worktrees, fresh clones, and CI.
|
|
7
28
|
if [ -d "node_modules" ]; then
|
|
8
29
|
exit 0
|
|
9
30
|
fi
|
|
10
31
|
|
|
32
|
+
if link_primary_worktree_node_modules && [ -d "node_modules" ]; then
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
11
36
|
# Detect the package manager this project wants, honoring explicit opt-outs.
|
|
12
37
|
# Precedence: packageManager field > engines "please-use-<pm>" sentinel >
|
|
13
38
|
# lockfile presence (minus any PM the engines forbid) > npm default.
|
|
@@ -88,4 +113,4 @@ if [ -n "$CHROME_PATH" ]; then
|
|
|
88
113
|
echo "Chromium installed at: $CHROME_PATH"
|
|
89
114
|
fi
|
|
90
115
|
|
|
91
|
-
exit 0
|
|
116
|
+
exit 0
|
|
@@ -2,12 +2,37 @@
|
|
|
2
2
|
# This file is managed by Lisa.
|
|
3
3
|
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
4
|
|
|
5
|
+
link_primary_worktree_node_modules() {
|
|
6
|
+
[ -f "package.json" ] || return 1
|
|
7
|
+
[ ! -e "node_modules" ] && [ ! -L "node_modules" ] || return 1
|
|
8
|
+
|
|
9
|
+
repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
10
|
+
case "$repo_root" in
|
|
11
|
+
*/.claude/worktrees/*)
|
|
12
|
+
primary_root="${repo_root%%/.claude/worktrees/*}"
|
|
13
|
+
;;
|
|
14
|
+
*)
|
|
15
|
+
return 1
|
|
16
|
+
;;
|
|
17
|
+
esac
|
|
18
|
+
|
|
19
|
+
[ "$primary_root" != "$repo_root" ] || return 1
|
|
20
|
+
[ -d "$primary_root/node_modules" ] || return 1
|
|
21
|
+
|
|
22
|
+
ln -s "$primary_root/node_modules" "node_modules"
|
|
23
|
+
echo "Linked node_modules from primary worktree: $primary_root/node_modules"
|
|
24
|
+
}
|
|
25
|
+
|
|
5
26
|
# Only run package installation when node_modules are missing.
|
|
6
27
|
# This covers remote environments, new worktrees, fresh clones, and CI.
|
|
7
28
|
if [ -d "node_modules" ]; then
|
|
8
29
|
exit 0
|
|
9
30
|
fi
|
|
10
31
|
|
|
32
|
+
if link_primary_worktree_node_modules && [ -d "node_modules" ]; then
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
11
36
|
# Detect the package manager this project wants, honoring explicit opt-outs.
|
|
12
37
|
# Precedence: packageManager field > engines "please-use-<pm>" sentinel >
|
|
13
38
|
# lockfile presence (minus any PM the engines forbid) > npm default.
|
|
@@ -88,4 +113,4 @@ if [ -n "$CHROME_PATH" ]; then
|
|
|
88
113
|
echo "Chromium installed at: $CHROME_PATH"
|
|
89
114
|
fi
|
|
90
115
|
|
|
91
|
-
exit 0
|
|
116
|
+
exit 0
|
|
@@ -2,12 +2,37 @@
|
|
|
2
2
|
# This file is managed by Lisa.
|
|
3
3
|
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
4
|
|
|
5
|
+
link_primary_worktree_node_modules() {
|
|
6
|
+
[ -f "package.json" ] || return 1
|
|
7
|
+
[ ! -e "node_modules" ] && [ ! -L "node_modules" ] || return 1
|
|
8
|
+
|
|
9
|
+
repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
10
|
+
case "$repo_root" in
|
|
11
|
+
*/.claude/worktrees/*)
|
|
12
|
+
primary_root="${repo_root%%/.claude/worktrees/*}"
|
|
13
|
+
;;
|
|
14
|
+
*)
|
|
15
|
+
return 1
|
|
16
|
+
;;
|
|
17
|
+
esac
|
|
18
|
+
|
|
19
|
+
[ "$primary_root" != "$repo_root" ] || return 1
|
|
20
|
+
[ -d "$primary_root/node_modules" ] || return 1
|
|
21
|
+
|
|
22
|
+
ln -s "$primary_root/node_modules" "node_modules"
|
|
23
|
+
echo "Linked node_modules from primary worktree: $primary_root/node_modules"
|
|
24
|
+
}
|
|
25
|
+
|
|
5
26
|
# Only run package installation when node_modules are missing.
|
|
6
27
|
# This covers remote environments, new worktrees, fresh clones, and CI.
|
|
7
28
|
if [ -d "node_modules" ]; then
|
|
8
29
|
exit 0
|
|
9
30
|
fi
|
|
10
31
|
|
|
32
|
+
if link_primary_worktree_node_modules && [ -d "node_modules" ]; then
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
11
36
|
# Detect the package manager this project wants, honoring explicit opt-outs.
|
|
12
37
|
# Precedence: packageManager field > engines "please-use-<pm>" sentinel >
|
|
13
38
|
# lockfile presence (minus any PM the engines forbid) > npm default.
|
|
@@ -88,4 +113,4 @@ if [ -n "$CHROME_PATH" ]; then
|
|
|
88
113
|
echo "Chromium installed at: $CHROME_PATH"
|
|
89
114
|
fi
|
|
90
115
|
|
|
91
|
-
exit 0
|
|
116
|
+
exit 0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.178.
|
|
3
|
+
"version": "2.178.4",
|
|
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.178.
|
|
3
|
+
"version": "2.178.4",
|
|
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.178.
|
|
3
|
+
"version": "2.178.4",
|
|
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.178.
|
|
3
|
+
"version": "2.178.4",
|
|
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.178.
|
|
3
|
+
"version": "2.178.4",
|
|
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"
|
|
@@ -2,12 +2,37 @@
|
|
|
2
2
|
# This file is managed by Lisa.
|
|
3
3
|
# Do not edit directly — changes will be overwritten on the next `lisa` run.
|
|
4
4
|
|
|
5
|
+
link_primary_worktree_node_modules() {
|
|
6
|
+
[ -f "package.json" ] || return 1
|
|
7
|
+
[ ! -e "node_modules" ] && [ ! -L "node_modules" ] || return 1
|
|
8
|
+
|
|
9
|
+
repo_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
|
|
10
|
+
case "$repo_root" in
|
|
11
|
+
*/.claude/worktrees/*)
|
|
12
|
+
primary_root="${repo_root%%/.claude/worktrees/*}"
|
|
13
|
+
;;
|
|
14
|
+
*)
|
|
15
|
+
return 1
|
|
16
|
+
;;
|
|
17
|
+
esac
|
|
18
|
+
|
|
19
|
+
[ "$primary_root" != "$repo_root" ] || return 1
|
|
20
|
+
[ -d "$primary_root/node_modules" ] || return 1
|
|
21
|
+
|
|
22
|
+
ln -s "$primary_root/node_modules" "node_modules"
|
|
23
|
+
echo "Linked node_modules from primary worktree: $primary_root/node_modules"
|
|
24
|
+
}
|
|
25
|
+
|
|
5
26
|
# Only run package installation when node_modules are missing.
|
|
6
27
|
# This covers remote environments, new worktrees, fresh clones, and CI.
|
|
7
28
|
if [ -d "node_modules" ]; then
|
|
8
29
|
exit 0
|
|
9
30
|
fi
|
|
10
31
|
|
|
32
|
+
if link_primary_worktree_node_modules && [ -d "node_modules" ]; then
|
|
33
|
+
exit 0
|
|
34
|
+
fi
|
|
35
|
+
|
|
11
36
|
# Detect the package manager this project wants, honoring explicit opt-outs.
|
|
12
37
|
# Precedence: packageManager field > engines "please-use-<pm>" sentinel >
|
|
13
38
|
# lockfile presence (minus any PM the engines forbid) > npm default.
|
|
@@ -88,4 +113,4 @@ if [ -n "$CHROME_PATH" ]; then
|
|
|
88
113
|
echo "Chromium installed at: $CHROME_PATH"
|
|
89
114
|
fi
|
|
90
115
|
|
|
91
|
-
exit 0
|
|
116
|
+
exit 0
|