@codyswann/lisa 2.338.0 → 2.338.1
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.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +3 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- 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 +1 -1
- package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +29 -1
- package/plugins/lisa/skills/lisa-setup-remote-env/SKILL.md +1 -1
- package/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +29 -1
- package/plugins/lisa-agy/plugin.json +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/SKILL.md +1 -1
- package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +29 -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/skills/lisa-setup-remote-env/SKILL.md +1 -1
- package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +29 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/SKILL.md +1 -1
- package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +29 -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/skills/lisa-setup-remote-env/SKILL.md +1 -1
- package/plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +29 -1
package/package.json
CHANGED
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
}
|
|
119
119
|
},
|
|
120
120
|
"name": "@codyswann/lisa",
|
|
121
|
-
"version": "2.338.
|
|
121
|
+
"version": "2.338.1",
|
|
122
122
|
"description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
|
|
123
123
|
"main": "dist/index.js",
|
|
124
124
|
"exports": {
|
|
@@ -13,7 +13,7 @@ Prepare a remote surface so a host project can execute there. Today that means *
|
|
|
13
13
|
The remote environment's own configuration fields stay **one line into the repository**. Nothing else is pasted into a vendor UI.
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
|
-
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.
|
|
16
|
+
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools=none --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tw=$?; export PATH="$HOME/.local/bin:$HOME/.opencode/bin:$HOME/.local/share/sonarqube-cli/bin:$PATH"; npx -y @codyswann/lisa@2.338.0 remote-env --phase=secrets || ts=$?; w=$(npx -y @codyswann/lisa@2.338.0 remote-env --print-tools 2>/dev/null) || tp=$?; w=$(printf "%s\n" "$w" | tail -1); [ "$tp" -eq 0 ] || echo "SETUP INCOMPLETE: could not read the tool list from the vault (exit $tp). Installing the full catalogue." >&2; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools="$w" --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tt=$?; [ "$tw" -eq 0 ] && [ "$tt" -eq 0 ] || echo "SETUP INCOMPLETE: tool install failed (exit $tw/$tt). The session will start WITHOUT the pinned tools." >&2; [ "$ts" -eq 0 ] || echo "SETUP INCOMPLETE: secrets did not materialize (exit $ts). The session will start WITHOUT credentials." >&2; else echo "No checkout and no tenant configured; nothing to prepare."; fi; exit 0
|
|
17
17
|
maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] || { echo "lisa-remote-env entrypoint not found. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; }; exit "$rc"
|
|
18
18
|
```
|
|
19
19
|
|
package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs
CHANGED
|
@@ -42,6 +42,13 @@ import { homedir } from "node:os";
|
|
|
42
42
|
import { delimiter, dirname, join, resolve } from "node:path";
|
|
43
43
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
44
44
|
|
|
45
|
+
// Reaching across to the workstation skill, the same sibling layout
|
|
46
|
+
// `siblingScript` asserts at runtime. Static rather than dynamic because the
|
|
47
|
+
// emitted field is a module-level constant: it must exist before anything can
|
|
48
|
+
// read it, and the alternative is restating the install directories here, where
|
|
49
|
+
// they would drift the first time a tool ships with a new one.
|
|
50
|
+
import { pathDirs } from "../../lisa-setup-workstation/scripts/catalogue.mjs";
|
|
51
|
+
|
|
45
52
|
import { assertPinned, extractVersion, planToolchain } from "./toolchain.mjs";
|
|
46
53
|
|
|
47
54
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
@@ -627,6 +634,27 @@ const SELF_SPEC = (() => {
|
|
|
627
634
|
}
|
|
628
635
|
})();
|
|
629
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Every directory the catalogue installs into, as a `$HOME`-relative PATH.
|
|
639
|
+
*
|
|
640
|
+
* The field used to hardcode `~/.local/bin`, which is only where the *pinned*
|
|
641
|
+
* binaries land. A vendor script may install anywhere it likes — SonarQube's
|
|
642
|
+
* puts `sonar` under `~/.local/share/sonarqube-cli/bin` — so the tool installed
|
|
643
|
+
* successfully and then could not be found, which reads to an operator exactly
|
|
644
|
+
* like an install that never happened.
|
|
645
|
+
*
|
|
646
|
+
* The bootstrap already writes these into the shell rc files, and on this
|
|
647
|
+
* surface that is inert: a cloud container's tool shell is not a login shell
|
|
648
|
+
* and reads no profile. Exporting them here is what makes the install visible
|
|
649
|
+
* to the session that asked for it.
|
|
650
|
+
*
|
|
651
|
+
* Derived from the catalogue rather than restated, so a tool added with a new
|
|
652
|
+
* `binDir` reaches this field without anyone remembering to come back here.
|
|
653
|
+
* `$HOME` stays a shell variable — the field runs as a different user, in a
|
|
654
|
+
* different container, than whatever machine emitted it.
|
|
655
|
+
*/
|
|
656
|
+
const FIELD_PATH = pathDirs("$HOME").join(":");
|
|
657
|
+
|
|
630
658
|
export const SETUP_FIELD =
|
|
631
659
|
'n=0; rc=0; seen=""; ' +
|
|
632
660
|
"for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh " +
|
|
@@ -667,7 +695,7 @@ export const SETUP_FIELD =
|
|
|
667
695
|
// Exported BEFORE the secrets phase, not after: the toolchain installs into
|
|
668
696
|
// ~/.local/bin, and materialization spawns the provider CLI by name. Ordered
|
|
669
697
|
// the other way it gets ENOENT on a binary that is sitting right there.
|
|
670
|
-
|
|
698
|
+
`export PATH="${FIELD_PATH}:$PATH"; ` +
|
|
671
699
|
`npx -y ${SELF_SPEC} remote-env --phase=secrets || ts=$?; ` +
|
|
672
700
|
// Now the notes can answer it. A vault that names nothing yields an empty
|
|
673
701
|
// string, and `--tools=` with an empty value selects the whole catalogue —
|
|
@@ -13,7 +13,7 @@ Prepare a remote surface so a host project can execute there. Today that means *
|
|
|
13
13
|
The remote environment's own configuration fields stay **one line into the repository**. Nothing else is pasted into a vendor UI.
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
|
-
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.
|
|
16
|
+
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools=none --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tw=$?; export PATH="$HOME/.local/bin:$HOME/.opencode/bin:$HOME/.local/share/sonarqube-cli/bin:$PATH"; npx -y @codyswann/lisa@2.338.0 remote-env --phase=secrets || ts=$?; w=$(npx -y @codyswann/lisa@2.338.0 remote-env --print-tools 2>/dev/null) || tp=$?; w=$(printf "%s\n" "$w" | tail -1); [ "$tp" -eq 0 ] || echo "SETUP INCOMPLETE: could not read the tool list from the vault (exit $tp). Installing the full catalogue." >&2; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools="$w" --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tt=$?; [ "$tw" -eq 0 ] && [ "$tt" -eq 0 ] || echo "SETUP INCOMPLETE: tool install failed (exit $tw/$tt). The session will start WITHOUT the pinned tools." >&2; [ "$ts" -eq 0 ] || echo "SETUP INCOMPLETE: secrets did not materialize (exit $ts). The session will start WITHOUT credentials." >&2; else echo "No checkout and no tenant configured; nothing to prepare."; fi; exit 0
|
|
17
17
|
maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] || { echo "lisa-remote-env entrypoint not found. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; }; exit "$rc"
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -42,6 +42,13 @@ import { homedir } from "node:os";
|
|
|
42
42
|
import { delimiter, dirname, join, resolve } from "node:path";
|
|
43
43
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
44
44
|
|
|
45
|
+
// Reaching across to the workstation skill, the same sibling layout
|
|
46
|
+
// `siblingScript` asserts at runtime. Static rather than dynamic because the
|
|
47
|
+
// emitted field is a module-level constant: it must exist before anything can
|
|
48
|
+
// read it, and the alternative is restating the install directories here, where
|
|
49
|
+
// they would drift the first time a tool ships with a new one.
|
|
50
|
+
import { pathDirs } from "../../lisa-setup-workstation/scripts/catalogue.mjs";
|
|
51
|
+
|
|
45
52
|
import { assertPinned, extractVersion, planToolchain } from "./toolchain.mjs";
|
|
46
53
|
|
|
47
54
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
@@ -627,6 +634,27 @@ const SELF_SPEC = (() => {
|
|
|
627
634
|
}
|
|
628
635
|
})();
|
|
629
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Every directory the catalogue installs into, as a `$HOME`-relative PATH.
|
|
639
|
+
*
|
|
640
|
+
* The field used to hardcode `~/.local/bin`, which is only where the *pinned*
|
|
641
|
+
* binaries land. A vendor script may install anywhere it likes — SonarQube's
|
|
642
|
+
* puts `sonar` under `~/.local/share/sonarqube-cli/bin` — so the tool installed
|
|
643
|
+
* successfully and then could not be found, which reads to an operator exactly
|
|
644
|
+
* like an install that never happened.
|
|
645
|
+
*
|
|
646
|
+
* The bootstrap already writes these into the shell rc files, and on this
|
|
647
|
+
* surface that is inert: a cloud container's tool shell is not a login shell
|
|
648
|
+
* and reads no profile. Exporting them here is what makes the install visible
|
|
649
|
+
* to the session that asked for it.
|
|
650
|
+
*
|
|
651
|
+
* Derived from the catalogue rather than restated, so a tool added with a new
|
|
652
|
+
* `binDir` reaches this field without anyone remembering to come back here.
|
|
653
|
+
* `$HOME` stays a shell variable — the field runs as a different user, in a
|
|
654
|
+
* different container, than whatever machine emitted it.
|
|
655
|
+
*/
|
|
656
|
+
const FIELD_PATH = pathDirs("$HOME").join(":");
|
|
657
|
+
|
|
630
658
|
export const SETUP_FIELD =
|
|
631
659
|
'n=0; rc=0; seen=""; ' +
|
|
632
660
|
"for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh " +
|
|
@@ -667,7 +695,7 @@ export const SETUP_FIELD =
|
|
|
667
695
|
// Exported BEFORE the secrets phase, not after: the toolchain installs into
|
|
668
696
|
// ~/.local/bin, and materialization spawns the provider CLI by name. Ordered
|
|
669
697
|
// the other way it gets ENOENT on a binary that is sitting right there.
|
|
670
|
-
|
|
698
|
+
`export PATH="${FIELD_PATH}:$PATH"; ` +
|
|
671
699
|
`npx -y ${SELF_SPEC} remote-env --phase=secrets || ts=$?; ` +
|
|
672
700
|
// Now the notes can answer it. A vault that names nothing yields an empty
|
|
673
701
|
// string, and `--tools=` with an empty value selects the whole catalogue —
|
|
@@ -13,7 +13,7 @@ Prepare a remote surface so a host project can execute there. Today that means *
|
|
|
13
13
|
The remote environment's own configuration fields stay **one line into the repository**. Nothing else is pasted into a vendor UI.
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
|
-
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.
|
|
16
|
+
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools=none --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tw=$?; export PATH="$HOME/.local/bin:$HOME/.opencode/bin:$HOME/.local/share/sonarqube-cli/bin:$PATH"; npx -y @codyswann/lisa@2.338.0 remote-env --phase=secrets || ts=$?; w=$(npx -y @codyswann/lisa@2.338.0 remote-env --print-tools 2>/dev/null) || tp=$?; w=$(printf "%s\n" "$w" | tail -1); [ "$tp" -eq 0 ] || echo "SETUP INCOMPLETE: could not read the tool list from the vault (exit $tp). Installing the full catalogue." >&2; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools="$w" --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tt=$?; [ "$tw" -eq 0 ] && [ "$tt" -eq 0 ] || echo "SETUP INCOMPLETE: tool install failed (exit $tw/$tt). The session will start WITHOUT the pinned tools." >&2; [ "$ts" -eq 0 ] || echo "SETUP INCOMPLETE: secrets did not materialize (exit $ts). The session will start WITHOUT credentials." >&2; else echo "No checkout and no tenant configured; nothing to prepare."; fi; exit 0
|
|
17
17
|
maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] || { echo "lisa-remote-env entrypoint not found. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; }; exit "$rc"
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -42,6 +42,13 @@ import { homedir } from "node:os";
|
|
|
42
42
|
import { delimiter, dirname, join, resolve } from "node:path";
|
|
43
43
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
44
44
|
|
|
45
|
+
// Reaching across to the workstation skill, the same sibling layout
|
|
46
|
+
// `siblingScript` asserts at runtime. Static rather than dynamic because the
|
|
47
|
+
// emitted field is a module-level constant: it must exist before anything can
|
|
48
|
+
// read it, and the alternative is restating the install directories here, where
|
|
49
|
+
// they would drift the first time a tool ships with a new one.
|
|
50
|
+
import { pathDirs } from "../../lisa-setup-workstation/scripts/catalogue.mjs";
|
|
51
|
+
|
|
45
52
|
import { assertPinned, extractVersion, planToolchain } from "./toolchain.mjs";
|
|
46
53
|
|
|
47
54
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
@@ -627,6 +634,27 @@ const SELF_SPEC = (() => {
|
|
|
627
634
|
}
|
|
628
635
|
})();
|
|
629
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Every directory the catalogue installs into, as a `$HOME`-relative PATH.
|
|
639
|
+
*
|
|
640
|
+
* The field used to hardcode `~/.local/bin`, which is only where the *pinned*
|
|
641
|
+
* binaries land. A vendor script may install anywhere it likes — SonarQube's
|
|
642
|
+
* puts `sonar` under `~/.local/share/sonarqube-cli/bin` — so the tool installed
|
|
643
|
+
* successfully and then could not be found, which reads to an operator exactly
|
|
644
|
+
* like an install that never happened.
|
|
645
|
+
*
|
|
646
|
+
* The bootstrap already writes these into the shell rc files, and on this
|
|
647
|
+
* surface that is inert: a cloud container's tool shell is not a login shell
|
|
648
|
+
* and reads no profile. Exporting them here is what makes the install visible
|
|
649
|
+
* to the session that asked for it.
|
|
650
|
+
*
|
|
651
|
+
* Derived from the catalogue rather than restated, so a tool added with a new
|
|
652
|
+
* `binDir` reaches this field without anyone remembering to come back here.
|
|
653
|
+
* `$HOME` stays a shell variable — the field runs as a different user, in a
|
|
654
|
+
* different container, than whatever machine emitted it.
|
|
655
|
+
*/
|
|
656
|
+
const FIELD_PATH = pathDirs("$HOME").join(":");
|
|
657
|
+
|
|
630
658
|
export const SETUP_FIELD =
|
|
631
659
|
'n=0; rc=0; seen=""; ' +
|
|
632
660
|
"for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh " +
|
|
@@ -667,7 +695,7 @@ export const SETUP_FIELD =
|
|
|
667
695
|
// Exported BEFORE the secrets phase, not after: the toolchain installs into
|
|
668
696
|
// ~/.local/bin, and materialization spawns the provider CLI by name. Ordered
|
|
669
697
|
// the other way it gets ENOENT on a binary that is sitting right there.
|
|
670
|
-
|
|
698
|
+
`export PATH="${FIELD_PATH}:$PATH"; ` +
|
|
671
699
|
`npx -y ${SELF_SPEC} remote-env --phase=secrets || ts=$?; ` +
|
|
672
700
|
// Now the notes can answer it. A vault that names nothing yields an empty
|
|
673
701
|
// string, and `--tools=` with an empty value selects the whole catalogue —
|
|
@@ -13,7 +13,7 @@ Prepare a remote surface so a host project can execute there. Today that means *
|
|
|
13
13
|
The remote environment's own configuration fields stay **one line into the repository**. Nothing else is pasted into a vendor UI.
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
|
-
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.
|
|
16
|
+
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools=none --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tw=$?; export PATH="$HOME/.local/bin:$HOME/.opencode/bin:$HOME/.local/share/sonarqube-cli/bin:$PATH"; npx -y @codyswann/lisa@2.338.0 remote-env --phase=secrets || ts=$?; w=$(npx -y @codyswann/lisa@2.338.0 remote-env --print-tools 2>/dev/null) || tp=$?; w=$(printf "%s\n" "$w" | tail -1); [ "$tp" -eq 0 ] || echo "SETUP INCOMPLETE: could not read the tool list from the vault (exit $tp). Installing the full catalogue." >&2; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools="$w" --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tt=$?; [ "$tw" -eq 0 ] && [ "$tt" -eq 0 ] || echo "SETUP INCOMPLETE: tool install failed (exit $tw/$tt). The session will start WITHOUT the pinned tools." >&2; [ "$ts" -eq 0 ] || echo "SETUP INCOMPLETE: secrets did not materialize (exit $ts). The session will start WITHOUT credentials." >&2; else echo "No checkout and no tenant configured; nothing to prepare."; fi; exit 0
|
|
17
17
|
maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] || { echo "lisa-remote-env entrypoint not found. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; }; exit "$rc"
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -42,6 +42,13 @@ import { homedir } from "node:os";
|
|
|
42
42
|
import { delimiter, dirname, join, resolve } from "node:path";
|
|
43
43
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
44
44
|
|
|
45
|
+
// Reaching across to the workstation skill, the same sibling layout
|
|
46
|
+
// `siblingScript` asserts at runtime. Static rather than dynamic because the
|
|
47
|
+
// emitted field is a module-level constant: it must exist before anything can
|
|
48
|
+
// read it, and the alternative is restating the install directories here, where
|
|
49
|
+
// they would drift the first time a tool ships with a new one.
|
|
50
|
+
import { pathDirs } from "../../lisa-setup-workstation/scripts/catalogue.mjs";
|
|
51
|
+
|
|
45
52
|
import { assertPinned, extractVersion, planToolchain } from "./toolchain.mjs";
|
|
46
53
|
|
|
47
54
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
@@ -627,6 +634,27 @@ const SELF_SPEC = (() => {
|
|
|
627
634
|
}
|
|
628
635
|
})();
|
|
629
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Every directory the catalogue installs into, as a `$HOME`-relative PATH.
|
|
639
|
+
*
|
|
640
|
+
* The field used to hardcode `~/.local/bin`, which is only where the *pinned*
|
|
641
|
+
* binaries land. A vendor script may install anywhere it likes — SonarQube's
|
|
642
|
+
* puts `sonar` under `~/.local/share/sonarqube-cli/bin` — so the tool installed
|
|
643
|
+
* successfully and then could not be found, which reads to an operator exactly
|
|
644
|
+
* like an install that never happened.
|
|
645
|
+
*
|
|
646
|
+
* The bootstrap already writes these into the shell rc files, and on this
|
|
647
|
+
* surface that is inert: a cloud container's tool shell is not a login shell
|
|
648
|
+
* and reads no profile. Exporting them here is what makes the install visible
|
|
649
|
+
* to the session that asked for it.
|
|
650
|
+
*
|
|
651
|
+
* Derived from the catalogue rather than restated, so a tool added with a new
|
|
652
|
+
* `binDir` reaches this field without anyone remembering to come back here.
|
|
653
|
+
* `$HOME` stays a shell variable — the field runs as a different user, in a
|
|
654
|
+
* different container, than whatever machine emitted it.
|
|
655
|
+
*/
|
|
656
|
+
const FIELD_PATH = pathDirs("$HOME").join(":");
|
|
657
|
+
|
|
630
658
|
export const SETUP_FIELD =
|
|
631
659
|
'n=0; rc=0; seen=""; ' +
|
|
632
660
|
"for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh " +
|
|
@@ -667,7 +695,7 @@ export const SETUP_FIELD =
|
|
|
667
695
|
// Exported BEFORE the secrets phase, not after: the toolchain installs into
|
|
668
696
|
// ~/.local/bin, and materialization spawns the provider CLI by name. Ordered
|
|
669
697
|
// the other way it gets ENOENT on a binary that is sitting right there.
|
|
670
|
-
|
|
698
|
+
`export PATH="${FIELD_PATH}:$PATH"; ` +
|
|
671
699
|
`npx -y ${SELF_SPEC} remote-env --phase=secrets || ts=$?; ` +
|
|
672
700
|
// Now the notes can answer it. A vault that names nothing yields an empty
|
|
673
701
|
// string, and `--tools=` with an empty value selects the whole catalogue —
|
|
@@ -13,7 +13,7 @@ Prepare a remote surface so a host project can execute there. Today that means *
|
|
|
13
13
|
The remote environment's own configuration fields stay **one line into the repository**. Nothing else is pasted into a vendor UI.
|
|
14
14
|
|
|
15
15
|
```text
|
|
16
|
-
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.
|
|
16
|
+
setup: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] && exit "$rc"; g=0; for c in ./.git ./*/.git "$HOME"/*/.git /workspace/*/.git; do [ -e "$c" ] && g=1; done; if [ "$g" -eq 1 ]; then echo "lisa-remote-env entrypoint not found, but a checkout is present. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; fi; ten="${LISA_TENANT:-${LISA_SECRETS_NAMESPACE:-}}"; if [ -n "$ten" ]; then echo "No checkout; preparing tools and credentials for $ten."; tw=0; tt=0; ts=0; tp=0; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools=none --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tw=$?; export PATH="$HOME/.local/bin:$HOME/.opencode/bin:$HOME/.local/share/sonarqube-cli/bin:$PATH"; npx -y @codyswann/lisa@2.338.0 remote-env --phase=secrets || ts=$?; w=$(npx -y @codyswann/lisa@2.338.0 remote-env --print-tools 2>/dev/null) || tp=$?; w=$(printf "%s\n" "$w" | tail -1); [ "$tp" -eq 0 ] || echo "SETUP INCOMPLETE: could not read the tool list from the vault (exit $tp). Installing the full catalogue." >&2; npx -y @codyswann/lisa@2.338.0 workstation --install --agents=none --tools="$w" --provider="${LISA_PROVIDER:-${LISA_SECRETS_PROVIDER:-bitwarden}}" || tt=$?; [ "$tw" -eq 0 ] && [ "$tt" -eq 0 ] || echo "SETUP INCOMPLETE: tool install failed (exit $tw/$tt). The session will start WITHOUT the pinned tools." >&2; [ "$ts" -eq 0 ] || echo "SETUP INCOMPLETE: secrets did not materialize (exit $ts). The session will start WITHOUT credentials." >&2; else echo "No checkout and no tenant configured; nothing to prepare."; fi; exit 0
|
|
17
17
|
maintenance: n=0; rc=0; seen=""; for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh "$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh /workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; n=$((n+1)); bash "$f" || rc=$?; done; [ "$n" -gt 0 ] || { echo "lisa-remote-env entrypoint not found. PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; }; exit "$rc"
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -42,6 +42,13 @@ import { homedir } from "node:os";
|
|
|
42
42
|
import { delimiter, dirname, join, resolve } from "node:path";
|
|
43
43
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
44
44
|
|
|
45
|
+
// Reaching across to the workstation skill, the same sibling layout
|
|
46
|
+
// `siblingScript` asserts at runtime. Static rather than dynamic because the
|
|
47
|
+
// emitted field is a module-level constant: it must exist before anything can
|
|
48
|
+
// read it, and the alternative is restating the install directories here, where
|
|
49
|
+
// they would drift the first time a tool ships with a new one.
|
|
50
|
+
import { pathDirs } from "../../lisa-setup-workstation/scripts/catalogue.mjs";
|
|
51
|
+
|
|
45
52
|
import { assertPinned, extractVersion, planToolchain } from "./toolchain.mjs";
|
|
46
53
|
|
|
47
54
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
@@ -627,6 +634,27 @@ const SELF_SPEC = (() => {
|
|
|
627
634
|
}
|
|
628
635
|
})();
|
|
629
636
|
|
|
637
|
+
/**
|
|
638
|
+
* Every directory the catalogue installs into, as a `$HOME`-relative PATH.
|
|
639
|
+
*
|
|
640
|
+
* The field used to hardcode `~/.local/bin`, which is only where the *pinned*
|
|
641
|
+
* binaries land. A vendor script may install anywhere it likes — SonarQube's
|
|
642
|
+
* puts `sonar` under `~/.local/share/sonarqube-cli/bin` — so the tool installed
|
|
643
|
+
* successfully and then could not be found, which reads to an operator exactly
|
|
644
|
+
* like an install that never happened.
|
|
645
|
+
*
|
|
646
|
+
* The bootstrap already writes these into the shell rc files, and on this
|
|
647
|
+
* surface that is inert: a cloud container's tool shell is not a login shell
|
|
648
|
+
* and reads no profile. Exporting them here is what makes the install visible
|
|
649
|
+
* to the session that asked for it.
|
|
650
|
+
*
|
|
651
|
+
* Derived from the catalogue rather than restated, so a tool added with a new
|
|
652
|
+
* `binDir` reaches this field without anyone remembering to come back here.
|
|
653
|
+
* `$HOME` stays a shell variable — the field runs as a different user, in a
|
|
654
|
+
* different container, than whatever machine emitted it.
|
|
655
|
+
*/
|
|
656
|
+
const FIELD_PATH = pathDirs("$HOME").join(":");
|
|
657
|
+
|
|
630
658
|
export const SETUP_FIELD =
|
|
631
659
|
'n=0; rc=0; seen=""; ' +
|
|
632
660
|
"for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh " +
|
|
@@ -667,7 +695,7 @@ export const SETUP_FIELD =
|
|
|
667
695
|
// Exported BEFORE the secrets phase, not after: the toolchain installs into
|
|
668
696
|
// ~/.local/bin, and materialization spawns the provider CLI by name. Ordered
|
|
669
697
|
// the other way it gets ENOENT on a binary that is sitting right there.
|
|
670
|
-
|
|
698
|
+
`export PATH="${FIELD_PATH}:$PATH"; ` +
|
|
671
699
|
`npx -y ${SELF_SPEC} remote-env --phase=secrets || ts=$?; ` +
|
|
672
700
|
// Now the notes can answer it. A vault that names nothing yields an empty
|
|
673
701
|
// string, and `--tools=` with an empty value selects the whole catalogue —
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lisa-openclaw",
|
|
3
|
-
"version": "2.338.
|
|
3
|
+
"version": "2.338.1",
|
|
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"
|