@codyswann/lisa 2.322.7 → 2.322.8
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/core/upstream-evidence-manifest.js +2 -2
- 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/.codex-plugin/skills/lisa-setup-remote-env/SKILL.md +12 -8
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +9 -5
- package/plugins/lisa/skills/lisa-setup-remote-env/SKILL.md +12 -8
- package/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +9 -5
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/SKILL.md +12 -8
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +9 -5
- 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/skills/lisa-setup-remote-env/SKILL.md +12 -8
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +9 -5
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/SKILL.md +12 -8
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +9 -5
- 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/skills/lisa-setup-remote-env/SKILL.md +12 -8
- package/plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +9 -5
|
@@ -559,10 +559,10 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
|
|
|
559
559
|
"plugins/src/base/skills/lisa-setup-linear/SKILL.md": "ec76f832a6df6f58b163f7f5ba6826ed2fcbddc91e44a8372e874858e4d0c518",
|
|
560
560
|
"plugins/src/base/skills/lisa-setup-notion/SKILL.md": "f5a1e9290789fd1c33675168d30461fb24a11c98a433ef777c1f536bc2f905ef",
|
|
561
561
|
"plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": "80fbf157f9c562c033886c25a99b37356602edd9e61cd2d492f339769ddcf97e",
|
|
562
|
-
"plugins/src/base/skills/lisa-setup-remote-env/SKILL.md": "
|
|
562
|
+
"plugins/src/base/skills/lisa-setup-remote-env/SKILL.md": "5627c45a4ce7d0f0d122791f699b6dd2841602adf873678c693ad08a48eab401",
|
|
563
563
|
"plugins/src/base/skills/lisa-setup-remote-env/assets/session-start.sh": "6e3871ec2f8d56b8ebb85376ebdd3956f3ed8fa4f7b278c2ed90ca9b8845897c",
|
|
564
564
|
"plugins/src/base/skills/lisa-setup-remote-env/assets/setup.sh": "c04afb1cf8e14a2713645228e679fa7772559488330a240ec0297cae6afd03e2",
|
|
565
|
-
"plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs": "
|
|
565
|
+
"plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs": "68339117f7d2fe1fdb9f05c8039ffe719f24da7cf700bc3c940bfccbf82cded2",
|
|
566
566
|
"plugins/src/base/skills/lisa-setup-remote-env/scripts/toolchain.mjs": "ff66d33ba41a068d09be18f81ac68988238c2afa1d4e3733ae906b73eea74324",
|
|
567
567
|
"plugins/src/base/skills/lisa-setup-remote-env/scripts/verify-remote-env.mjs": "82bc2a27a0a5afb2ff413a88365c619fd7f0eaada5de3ccabf2000938f0607a4",
|
|
568
568
|
"plugins/src/base/skills/lisa-setup-sonar/SKILL.md": "53fbd8acce4b5e47e88195a7b90d5be424fa6ef7ad872f52c50467c690664c3b",
|
package/package.json
CHANGED
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"brace-expansion": ">=5.0.9"
|
|
116
116
|
},
|
|
117
117
|
"name": "@codyswann/lisa",
|
|
118
|
-
"version": "2.322.
|
|
118
|
+
"version": "2.322.8",
|
|
119
119
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
120
120
|
"main": "dist/index.js",
|
|
121
121
|
"exports": {
|
|
@@ -18,7 +18,7 @@ maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scr
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
**That line is identical for every project AND every surface.** Nothing in it names the
|
|
21
|
-
repository
|
|
21
|
+
repository or the package manager, so it can be pasted unchanged anywhere.
|
|
22
22
|
|
|
23
23
|
Locating the checkout is the only hard part, because the surfaces disagree about where the
|
|
24
24
|
field runs:
|
|
@@ -26,13 +26,17 @@ field runs:
|
|
|
26
26
|
| Surface | cwd when the field runs | Checkout |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| Codex Cloud | **is** the checkout | `/workspace/<repo>` |
|
|
29
|
-
| Claude Code web | `$HOME
|
|
29
|
+
| Claude Code web | `$HOME`, but not reliably | `$HOME/<repo>`, or another root |
|
|
30
30
|
|
|
31
|
-
So
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
So the checkout itself and one level down are tried **relative to cwd first**, then the same
|
|
32
|
+
pair under `$HOME` and `/workspace` — the roots the two surfaces actually use — because cwd is
|
|
33
|
+
not reliably either of them: a live Claude environment reported `$HOME` as `/root` with the
|
|
34
|
+
checkout at `/home/user/lisa`, which a cwd-only search cannot reach.
|
|
35
|
+
|
|
36
|
+
The cwd-relative candidates coming **first** is the invariant, and a test pins it. An earlier
|
|
37
|
+
version of this field used `bash "$HOME"/*/scripts/...` alone, which works on Claude Code web
|
|
38
|
+
and fails on Codex Cloud, where the checkout is not under `$HOME` at all: the glob matches
|
|
39
|
+
nothing and bash reports `No such file or directory` for a path still containing a literal `*`.
|
|
36
40
|
|
|
37
41
|
**Every** match is prepared, not the first. A Claude Code web environment can hold more than
|
|
38
42
|
one checkout, and stopping at the first glob hit would prepare whichever repository sorts
|
|
@@ -190,7 +194,7 @@ It reads the bootstrap name from `secrets.bootstrap.key` and emits the environme
|
|
|
190
194
|
|
|
191
195
|
- **`gh` is not pre-installed.** If the project's flows shell out to it, add it to `remoteEnv.tools.install`, pinned and checksummed like anything else.
|
|
192
196
|
- **A proxied credential reads as the literal string `proxy-injected`.** Tools that authenticate through the GitHub proxy work; a script that reads the variable directly gets the placeholder. The read-back asserts this rather than leaving it to be discovered against a live service.
|
|
193
|
-
- **The setup field runs from `$HOME
|
|
197
|
+
- **The surfaces disagree about where the setup field runs.** Codex Cloud runs it inside the checkout; Claude Code web runs it from `$HOME` with the checkout one level down. That is why the field tries the checkout itself and then one level down relative to cwd, and only then the same pair under `$HOME` and `/workspace` — the script anchors itself on whichever matched. Nothing in the emitted line names this project, so it is the same line everywhere.
|
|
194
198
|
- **Trusted network access is not enough for provider CLIs.** Use Custom and include package registries, GitHub, cloud SDK hosts, and the bootstrap credential manager API.
|
|
195
199
|
|
|
196
200
|
### One environment per project, pinned locally
|
package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs
CHANGED
|
@@ -444,11 +444,15 @@ export function emitClaudeWeb({ bootstrapKey }) {
|
|
|
444
444
|
" Setup script:",
|
|
445
445
|
` ${SETUP_FIELD}`,
|
|
446
446
|
"",
|
|
447
|
-
" This line is identical for every project
|
|
448
|
-
" repository or its package manager.
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
447
|
+
" This line is identical for every project and every surface — nothing",
|
|
448
|
+
" in it names this repository or its package manager. The surfaces",
|
|
449
|
+
" disagree about where the field runs: Codex Cloud runs it inside the",
|
|
450
|
+
" checkout, Claude Code web runs it from $HOME with the checkout one",
|
|
451
|
+
" level down. So it tries the checkout itself and then one level down,",
|
|
452
|
+
" relative to cwd, and only then the same pair under $HOME and",
|
|
453
|
+
" /workspace, for the case where cwd is neither. The script anchors",
|
|
454
|
+
" itself on whichever matched and installs dependencies using whichever",
|
|
455
|
+
" lockfile the project actually commits.",
|
|
452
456
|
"",
|
|
453
457
|
" Keeping it generic is the point. A field that named the repository and",
|
|
454
458
|
" the package manager was a string a human had to get right, in a box",
|
|
@@ -18,7 +18,7 @@ maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scr
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
**That line is identical for every project AND every surface.** Nothing in it names the
|
|
21
|
-
repository
|
|
21
|
+
repository or the package manager, so it can be pasted unchanged anywhere.
|
|
22
22
|
|
|
23
23
|
Locating the checkout is the only hard part, because the surfaces disagree about where the
|
|
24
24
|
field runs:
|
|
@@ -26,13 +26,17 @@ field runs:
|
|
|
26
26
|
| Surface | cwd when the field runs | Checkout |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| Codex Cloud | **is** the checkout | `/workspace/<repo>` |
|
|
29
|
-
| Claude Code web | `$HOME
|
|
29
|
+
| Claude Code web | `$HOME`, but not reliably | `$HOME/<repo>`, or another root |
|
|
30
30
|
|
|
31
|
-
So
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
So the checkout itself and one level down are tried **relative to cwd first**, then the same
|
|
32
|
+
pair under `$HOME` and `/workspace` — the roots the two surfaces actually use — because cwd is
|
|
33
|
+
not reliably either of them: a live Claude environment reported `$HOME` as `/root` with the
|
|
34
|
+
checkout at `/home/user/lisa`, which a cwd-only search cannot reach.
|
|
35
|
+
|
|
36
|
+
The cwd-relative candidates coming **first** is the invariant, and a test pins it. An earlier
|
|
37
|
+
version of this field used `bash "$HOME"/*/scripts/...` alone, which works on Claude Code web
|
|
38
|
+
and fails on Codex Cloud, where the checkout is not under `$HOME` at all: the glob matches
|
|
39
|
+
nothing and bash reports `No such file or directory` for a path still containing a literal `*`.
|
|
36
40
|
|
|
37
41
|
**Every** match is prepared, not the first. A Claude Code web environment can hold more than
|
|
38
42
|
one checkout, and stopping at the first glob hit would prepare whichever repository sorts
|
|
@@ -190,7 +194,7 @@ It reads the bootstrap name from `secrets.bootstrap.key` and emits the environme
|
|
|
190
194
|
|
|
191
195
|
- **`gh` is not pre-installed.** If the project's flows shell out to it, add it to `remoteEnv.tools.install`, pinned and checksummed like anything else.
|
|
192
196
|
- **A proxied credential reads as the literal string `proxy-injected`.** Tools that authenticate through the GitHub proxy work; a script that reads the variable directly gets the placeholder. The read-back asserts this rather than leaving it to be discovered against a live service.
|
|
193
|
-
- **The setup field runs from `$HOME
|
|
197
|
+
- **The surfaces disagree about where the setup field runs.** Codex Cloud runs it inside the checkout; Claude Code web runs it from `$HOME` with the checkout one level down. That is why the field tries the checkout itself and then one level down relative to cwd, and only then the same pair under `$HOME` and `/workspace` — the script anchors itself on whichever matched. Nothing in the emitted line names this project, so it is the same line everywhere.
|
|
194
198
|
- **Trusted network access is not enough for provider CLIs.** Use Custom and include package registries, GitHub, cloud SDK hosts, and the bootstrap credential manager API.
|
|
195
199
|
|
|
196
200
|
### One environment per project, pinned locally
|
|
@@ -444,11 +444,15 @@ export function emitClaudeWeb({ bootstrapKey }) {
|
|
|
444
444
|
" Setup script:",
|
|
445
445
|
` ${SETUP_FIELD}`,
|
|
446
446
|
"",
|
|
447
|
-
" This line is identical for every project
|
|
448
|
-
" repository or its package manager.
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
447
|
+
" This line is identical for every project and every surface — nothing",
|
|
448
|
+
" in it names this repository or its package manager. The surfaces",
|
|
449
|
+
" disagree about where the field runs: Codex Cloud runs it inside the",
|
|
450
|
+
" checkout, Claude Code web runs it from $HOME with the checkout one",
|
|
451
|
+
" level down. So it tries the checkout itself and then one level down,",
|
|
452
|
+
" relative to cwd, and only then the same pair under $HOME and",
|
|
453
|
+
" /workspace, for the case where cwd is neither. The script anchors",
|
|
454
|
+
" itself on whichever matched and installs dependencies using whichever",
|
|
455
|
+
" lockfile the project actually commits.",
|
|
452
456
|
"",
|
|
453
457
|
" Keeping it generic is the point. A field that named the repository and",
|
|
454
458
|
" the package manager was a string a human had to get right, in a box",
|
|
@@ -18,7 +18,7 @@ maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scr
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
**That line is identical for every project AND every surface.** Nothing in it names the
|
|
21
|
-
repository
|
|
21
|
+
repository or the package manager, so it can be pasted unchanged anywhere.
|
|
22
22
|
|
|
23
23
|
Locating the checkout is the only hard part, because the surfaces disagree about where the
|
|
24
24
|
field runs:
|
|
@@ -26,13 +26,17 @@ field runs:
|
|
|
26
26
|
| Surface | cwd when the field runs | Checkout |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| Codex Cloud | **is** the checkout | `/workspace/<repo>` |
|
|
29
|
-
| Claude Code web | `$HOME
|
|
29
|
+
| Claude Code web | `$HOME`, but not reliably | `$HOME/<repo>`, or another root |
|
|
30
30
|
|
|
31
|
-
So
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
So the checkout itself and one level down are tried **relative to cwd first**, then the same
|
|
32
|
+
pair under `$HOME` and `/workspace` — the roots the two surfaces actually use — because cwd is
|
|
33
|
+
not reliably either of them: a live Claude environment reported `$HOME` as `/root` with the
|
|
34
|
+
checkout at `/home/user/lisa`, which a cwd-only search cannot reach.
|
|
35
|
+
|
|
36
|
+
The cwd-relative candidates coming **first** is the invariant, and a test pins it. An earlier
|
|
37
|
+
version of this field used `bash "$HOME"/*/scripts/...` alone, which works on Claude Code web
|
|
38
|
+
and fails on Codex Cloud, where the checkout is not under `$HOME` at all: the glob matches
|
|
39
|
+
nothing and bash reports `No such file or directory` for a path still containing a literal `*`.
|
|
36
40
|
|
|
37
41
|
**Every** match is prepared, not the first. A Claude Code web environment can hold more than
|
|
38
42
|
one checkout, and stopping at the first glob hit would prepare whichever repository sorts
|
|
@@ -190,7 +194,7 @@ It reads the bootstrap name from `secrets.bootstrap.key` and emits the environme
|
|
|
190
194
|
|
|
191
195
|
- **`gh` is not pre-installed.** If the project's flows shell out to it, add it to `remoteEnv.tools.install`, pinned and checksummed like anything else.
|
|
192
196
|
- **A proxied credential reads as the literal string `proxy-injected`.** Tools that authenticate through the GitHub proxy work; a script that reads the variable directly gets the placeholder. The read-back asserts this rather than leaving it to be discovered against a live service.
|
|
193
|
-
- **The setup field runs from `$HOME
|
|
197
|
+
- **The surfaces disagree about where the setup field runs.** Codex Cloud runs it inside the checkout; Claude Code web runs it from `$HOME` with the checkout one level down. That is why the field tries the checkout itself and then one level down relative to cwd, and only then the same pair under `$HOME` and `/workspace` — the script anchors itself on whichever matched. Nothing in the emitted line names this project, so it is the same line everywhere.
|
|
194
198
|
- **Trusted network access is not enough for provider CLIs.** Use Custom and include package registries, GitHub, cloud SDK hosts, and the bootstrap credential manager API.
|
|
195
199
|
|
|
196
200
|
### One environment per project, pinned locally
|
|
@@ -444,11 +444,15 @@ export function emitClaudeWeb({ bootstrapKey }) {
|
|
|
444
444
|
" Setup script:",
|
|
445
445
|
` ${SETUP_FIELD}`,
|
|
446
446
|
"",
|
|
447
|
-
" This line is identical for every project
|
|
448
|
-
" repository or its package manager.
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
447
|
+
" This line is identical for every project and every surface — nothing",
|
|
448
|
+
" in it names this repository or its package manager. The surfaces",
|
|
449
|
+
" disagree about where the field runs: Codex Cloud runs it inside the",
|
|
450
|
+
" checkout, Claude Code web runs it from $HOME with the checkout one",
|
|
451
|
+
" level down. So it tries the checkout itself and then one level down,",
|
|
452
|
+
" relative to cwd, and only then the same pair under $HOME and",
|
|
453
|
+
" /workspace, for the case where cwd is neither. The script anchors",
|
|
454
|
+
" itself on whichever matched and installs dependencies using whichever",
|
|
455
|
+
" lockfile the project actually commits.",
|
|
452
456
|
"",
|
|
453
457
|
" Keeping it generic is the point. A field that named the repository and",
|
|
454
458
|
" the package manager was a string a human had to get right, in a box",
|
|
@@ -18,7 +18,7 @@ maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scr
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
**That line is identical for every project AND every surface.** Nothing in it names the
|
|
21
|
-
repository
|
|
21
|
+
repository or the package manager, so it can be pasted unchanged anywhere.
|
|
22
22
|
|
|
23
23
|
Locating the checkout is the only hard part, because the surfaces disagree about where the
|
|
24
24
|
field runs:
|
|
@@ -26,13 +26,17 @@ field runs:
|
|
|
26
26
|
| Surface | cwd when the field runs | Checkout |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| Codex Cloud | **is** the checkout | `/workspace/<repo>` |
|
|
29
|
-
| Claude Code web | `$HOME
|
|
29
|
+
| Claude Code web | `$HOME`, but not reliably | `$HOME/<repo>`, or another root |
|
|
30
30
|
|
|
31
|
-
So
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
So the checkout itself and one level down are tried **relative to cwd first**, then the same
|
|
32
|
+
pair under `$HOME` and `/workspace` — the roots the two surfaces actually use — because cwd is
|
|
33
|
+
not reliably either of them: a live Claude environment reported `$HOME` as `/root` with the
|
|
34
|
+
checkout at `/home/user/lisa`, which a cwd-only search cannot reach.
|
|
35
|
+
|
|
36
|
+
The cwd-relative candidates coming **first** is the invariant, and a test pins it. An earlier
|
|
37
|
+
version of this field used `bash "$HOME"/*/scripts/...` alone, which works on Claude Code web
|
|
38
|
+
and fails on Codex Cloud, where the checkout is not under `$HOME` at all: the glob matches
|
|
39
|
+
nothing and bash reports `No such file or directory` for a path still containing a literal `*`.
|
|
36
40
|
|
|
37
41
|
**Every** match is prepared, not the first. A Claude Code web environment can hold more than
|
|
38
42
|
one checkout, and stopping at the first glob hit would prepare whichever repository sorts
|
|
@@ -190,7 +194,7 @@ It reads the bootstrap name from `secrets.bootstrap.key` and emits the environme
|
|
|
190
194
|
|
|
191
195
|
- **`gh` is not pre-installed.** If the project's flows shell out to it, add it to `remoteEnv.tools.install`, pinned and checksummed like anything else.
|
|
192
196
|
- **A proxied credential reads as the literal string `proxy-injected`.** Tools that authenticate through the GitHub proxy work; a script that reads the variable directly gets the placeholder. The read-back asserts this rather than leaving it to be discovered against a live service.
|
|
193
|
-
- **The setup field runs from `$HOME
|
|
197
|
+
- **The surfaces disagree about where the setup field runs.** Codex Cloud runs it inside the checkout; Claude Code web runs it from `$HOME` with the checkout one level down. That is why the field tries the checkout itself and then one level down relative to cwd, and only then the same pair under `$HOME` and `/workspace` — the script anchors itself on whichever matched. Nothing in the emitted line names this project, so it is the same line everywhere.
|
|
194
198
|
- **Trusted network access is not enough for provider CLIs.** Use Custom and include package registries, GitHub, cloud SDK hosts, and the bootstrap credential manager API.
|
|
195
199
|
|
|
196
200
|
### One environment per project, pinned locally
|
|
@@ -444,11 +444,15 @@ export function emitClaudeWeb({ bootstrapKey }) {
|
|
|
444
444
|
" Setup script:",
|
|
445
445
|
` ${SETUP_FIELD}`,
|
|
446
446
|
"",
|
|
447
|
-
" This line is identical for every project
|
|
448
|
-
" repository or its package manager.
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
447
|
+
" This line is identical for every project and every surface — nothing",
|
|
448
|
+
" in it names this repository or its package manager. The surfaces",
|
|
449
|
+
" disagree about where the field runs: Codex Cloud runs it inside the",
|
|
450
|
+
" checkout, Claude Code web runs it from $HOME with the checkout one",
|
|
451
|
+
" level down. So it tries the checkout itself and then one level down,",
|
|
452
|
+
" relative to cwd, and only then the same pair under $HOME and",
|
|
453
|
+
" /workspace, for the case where cwd is neither. The script anchors",
|
|
454
|
+
" itself on whichever matched and installs dependencies using whichever",
|
|
455
|
+
" lockfile the project actually commits.",
|
|
452
456
|
"",
|
|
453
457
|
" Keeping it generic is the point. A field that named the repository and",
|
|
454
458
|
" the package manager was a string a human had to get right, in a box",
|
|
@@ -18,7 +18,7 @@ maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scr
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
**That line is identical for every project AND every surface.** Nothing in it names the
|
|
21
|
-
repository
|
|
21
|
+
repository or the package manager, so it can be pasted unchanged anywhere.
|
|
22
22
|
|
|
23
23
|
Locating the checkout is the only hard part, because the surfaces disagree about where the
|
|
24
24
|
field runs:
|
|
@@ -26,13 +26,17 @@ field runs:
|
|
|
26
26
|
| Surface | cwd when the field runs | Checkout |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| Codex Cloud | **is** the checkout | `/workspace/<repo>` |
|
|
29
|
-
| Claude Code web | `$HOME
|
|
29
|
+
| Claude Code web | `$HOME`, but not reliably | `$HOME/<repo>`, or another root |
|
|
30
30
|
|
|
31
|
-
So
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
So the checkout itself and one level down are tried **relative to cwd first**, then the same
|
|
32
|
+
pair under `$HOME` and `/workspace` — the roots the two surfaces actually use — because cwd is
|
|
33
|
+
not reliably either of them: a live Claude environment reported `$HOME` as `/root` with the
|
|
34
|
+
checkout at `/home/user/lisa`, which a cwd-only search cannot reach.
|
|
35
|
+
|
|
36
|
+
The cwd-relative candidates coming **first** is the invariant, and a test pins it. An earlier
|
|
37
|
+
version of this field used `bash "$HOME"/*/scripts/...` alone, which works on Claude Code web
|
|
38
|
+
and fails on Codex Cloud, where the checkout is not under `$HOME` at all: the glob matches
|
|
39
|
+
nothing and bash reports `No such file or directory` for a path still containing a literal `*`.
|
|
36
40
|
|
|
37
41
|
**Every** match is prepared, not the first. A Claude Code web environment can hold more than
|
|
38
42
|
one checkout, and stopping at the first glob hit would prepare whichever repository sorts
|
|
@@ -190,7 +194,7 @@ It reads the bootstrap name from `secrets.bootstrap.key` and emits the environme
|
|
|
190
194
|
|
|
191
195
|
- **`gh` is not pre-installed.** If the project's flows shell out to it, add it to `remoteEnv.tools.install`, pinned and checksummed like anything else.
|
|
192
196
|
- **A proxied credential reads as the literal string `proxy-injected`.** Tools that authenticate through the GitHub proxy work; a script that reads the variable directly gets the placeholder. The read-back asserts this rather than leaving it to be discovered against a live service.
|
|
193
|
-
- **The setup field runs from `$HOME
|
|
197
|
+
- **The surfaces disagree about where the setup field runs.** Codex Cloud runs it inside the checkout; Claude Code web runs it from `$HOME` with the checkout one level down. That is why the field tries the checkout itself and then one level down relative to cwd, and only then the same pair under `$HOME` and `/workspace` — the script anchors itself on whichever matched. Nothing in the emitted line names this project, so it is the same line everywhere.
|
|
194
198
|
- **Trusted network access is not enough for provider CLIs.** Use Custom and include package registries, GitHub, cloud SDK hosts, and the bootstrap credential manager API.
|
|
195
199
|
|
|
196
200
|
### One environment per project, pinned locally
|
|
@@ -444,11 +444,15 @@ export function emitClaudeWeb({ bootstrapKey }) {
|
|
|
444
444
|
" Setup script:",
|
|
445
445
|
` ${SETUP_FIELD}`,
|
|
446
446
|
"",
|
|
447
|
-
" This line is identical for every project
|
|
448
|
-
" repository or its package manager.
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
447
|
+
" This line is identical for every project and every surface — nothing",
|
|
448
|
+
" in it names this repository or its package manager. The surfaces",
|
|
449
|
+
" disagree about where the field runs: Codex Cloud runs it inside the",
|
|
450
|
+
" checkout, Claude Code web runs it from $HOME with the checkout one",
|
|
451
|
+
" level down. So it tries the checkout itself and then one level down,",
|
|
452
|
+
" relative to cwd, and only then the same pair under $HOME and",
|
|
453
|
+
" /workspace, for the case where cwd is neither. The script anchors",
|
|
454
|
+
" itself on whichever matched and installs dependencies using whichever",
|
|
455
|
+
" lockfile the project actually commits.",
|
|
452
456
|
"",
|
|
453
457
|
" Keeping it generic is the point. A field that named the repository and",
|
|
454
458
|
" the package manager was a string a human had to get right, in a box",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.322.
|
|
3
|
+
"version": "2.322.8",
|
|
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.322.
|
|
3
|
+
"version": "2.322.8",
|
|
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.322.
|
|
3
|
+
"version": "2.322.8",
|
|
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.322.
|
|
3
|
+
"version": "2.322.8",
|
|
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.322.
|
|
3
|
+
"version": "2.322.8",
|
|
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"
|
|
@@ -18,7 +18,7 @@ maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scr
|
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
**That line is identical for every project AND every surface.** Nothing in it names the
|
|
21
|
-
repository
|
|
21
|
+
repository or the package manager, so it can be pasted unchanged anywhere.
|
|
22
22
|
|
|
23
23
|
Locating the checkout is the only hard part, because the surfaces disagree about where the
|
|
24
24
|
field runs:
|
|
@@ -26,13 +26,17 @@ field runs:
|
|
|
26
26
|
| Surface | cwd when the field runs | Checkout |
|
|
27
27
|
| --- | --- | --- |
|
|
28
28
|
| Codex Cloud | **is** the checkout | `/workspace/<repo>` |
|
|
29
|
-
| Claude Code web | `$HOME
|
|
29
|
+
| Claude Code web | `$HOME`, but not reliably | `$HOME/<repo>`, or another root |
|
|
30
30
|
|
|
31
|
-
So
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
So the checkout itself and one level down are tried **relative to cwd first**, then the same
|
|
32
|
+
pair under `$HOME` and `/workspace` — the roots the two surfaces actually use — because cwd is
|
|
33
|
+
not reliably either of them: a live Claude environment reported `$HOME` as `/root` with the
|
|
34
|
+
checkout at `/home/user/lisa`, which a cwd-only search cannot reach.
|
|
35
|
+
|
|
36
|
+
The cwd-relative candidates coming **first** is the invariant, and a test pins it. An earlier
|
|
37
|
+
version of this field used `bash "$HOME"/*/scripts/...` alone, which works on Claude Code web
|
|
38
|
+
and fails on Codex Cloud, where the checkout is not under `$HOME` at all: the glob matches
|
|
39
|
+
nothing and bash reports `No such file or directory` for a path still containing a literal `*`.
|
|
36
40
|
|
|
37
41
|
**Every** match is prepared, not the first. A Claude Code web environment can hold more than
|
|
38
42
|
one checkout, and stopping at the first glob hit would prepare whichever repository sorts
|
|
@@ -190,7 +194,7 @@ It reads the bootstrap name from `secrets.bootstrap.key` and emits the environme
|
|
|
190
194
|
|
|
191
195
|
- **`gh` is not pre-installed.** If the project's flows shell out to it, add it to `remoteEnv.tools.install`, pinned and checksummed like anything else.
|
|
192
196
|
- **A proxied credential reads as the literal string `proxy-injected`.** Tools that authenticate through the GitHub proxy work; a script that reads the variable directly gets the placeholder. The read-back asserts this rather than leaving it to be discovered against a live service.
|
|
193
|
-
- **The setup field runs from `$HOME
|
|
197
|
+
- **The surfaces disagree about where the setup field runs.** Codex Cloud runs it inside the checkout; Claude Code web runs it from `$HOME` with the checkout one level down. That is why the field tries the checkout itself and then one level down relative to cwd, and only then the same pair under `$HOME` and `/workspace` — the script anchors itself on whichever matched. Nothing in the emitted line names this project, so it is the same line everywhere.
|
|
194
198
|
- **Trusted network access is not enough for provider CLIs.** Use Custom and include package registries, GitHub, cloud SDK hosts, and the bootstrap credential manager API.
|
|
195
199
|
|
|
196
200
|
### One environment per project, pinned locally
|
|
@@ -444,11 +444,15 @@ export function emitClaudeWeb({ bootstrapKey }) {
|
|
|
444
444
|
" Setup script:",
|
|
445
445
|
` ${SETUP_FIELD}`,
|
|
446
446
|
"",
|
|
447
|
-
" This line is identical for every project
|
|
448
|
-
" repository or its package manager.
|
|
449
|
-
"
|
|
450
|
-
"
|
|
451
|
-
"
|
|
447
|
+
" This line is identical for every project and every surface — nothing",
|
|
448
|
+
" in it names this repository or its package manager. The surfaces",
|
|
449
|
+
" disagree about where the field runs: Codex Cloud runs it inside the",
|
|
450
|
+
" checkout, Claude Code web runs it from $HOME with the checkout one",
|
|
451
|
+
" level down. So it tries the checkout itself and then one level down,",
|
|
452
|
+
" relative to cwd, and only then the same pair under $HOME and",
|
|
453
|
+
" /workspace, for the case where cwd is neither. The script anchors",
|
|
454
|
+
" itself on whichever matched and installs dependencies using whichever",
|
|
455
|
+
" lockfile the project actually commits.",
|
|
452
456
|
"",
|
|
453
457
|
" Keeping it generic is the point. A field that named the repository and",
|
|
454
458
|
" the package manager was a string a human had to get right, in a box",
|