@codyswann/lisa 2.322.5 → 2.322.7

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.
Files changed (74) hide show
  1. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  2. package/dist/core/upstream-evidence-manifest.js +6 -5
  3. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  4. package/package.json +1 -1
  5. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  6. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  7. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/SKILL.md +4 -4
  8. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/assets/setup.sh +22 -0
  9. package/plugins/lisa/.codex-plugin/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +27 -11
  10. package/plugins/lisa/skills/lisa-setup-remote-env/SKILL.md +4 -4
  11. package/plugins/lisa/skills/lisa-setup-remote-env/assets/setup.sh +22 -0
  12. package/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +27 -11
  13. package/plugins/lisa-agy/plugin.json +1 -1
  14. package/plugins/lisa-agy/skills/lisa-setup-remote-env/SKILL.md +4 -4
  15. package/plugins/lisa-agy/skills/lisa-setup-remote-env/assets/setup.sh +22 -0
  16. package/plugins/lisa-agy/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +27 -11
  17. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  18. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  19. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  20. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  21. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  22. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  23. package/plugins/lisa-copilot/skills/lisa-setup-remote-env/SKILL.md +4 -4
  24. package/plugins/lisa-copilot/skills/lisa-setup-remote-env/assets/setup.sh +22 -0
  25. package/plugins/lisa-copilot/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +27 -11
  26. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  27. package/plugins/lisa-cursor/skills/lisa-setup-remote-env/SKILL.md +4 -4
  28. package/plugins/lisa-cursor/skills/lisa-setup-remote-env/assets/setup.sh +22 -0
  29. package/plugins/lisa-cursor/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +27 -11
  30. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  32. package/plugins/lisa-expo-agy/plugin.json +1 -1
  33. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  38. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  42. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  43. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  47. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  48. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  52. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  53. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  57. package/plugins/lisa-rails-agy/plugin.json +1 -1
  58. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  62. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  63. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  64. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  65. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  67. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  68. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  69. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  70. package/plugins/src/base/skills/lisa-setup-remote-env/SKILL.md +4 -4
  71. package/plugins/src/base/skills/lisa-setup-remote-env/assets/setup.sh +22 -0
  72. package/plugins/src/base/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs +27 -11
  73. package/scripts/install-claude-plugins.sh +23 -0
  74. package/scripts/lisa-remote-env/setup.sh +22 -0
@@ -105,11 +105,21 @@ fi
105
105
  # plugin-delivered harnesses work at all. Lisa is a dependency of every project
106
106
  # it is applied to, so `node_modules` carries the same skill at the version that
107
107
  # project pins, which is the version its setup should run.
108
+ #
109
+ # `plugins/lisa/skills/` sits between them, and exists for exactly one project:
110
+ # Lisa itself. There the checkout IS Lisa, at HEAD, while `node_modules` holds
111
+ # whatever version its own lockfile pins — which was four months and a hundred
112
+ # skills behind, so this file did not exist there at all and setup aborted
113
+ # claiming the skill could not be found. The one place it was is the only place
114
+ # that was not searched. It is ahead of node_modules because a checkout that
115
+ # builds this skill is newer than any published copy of it, and harmless
116
+ # everywhere else because no other project has that directory.
108
117
  runner=""
109
118
  for candidate in \
110
119
  ".claude/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
111
120
  ".agents/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
112
121
  ".codex/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
122
+ "plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
113
123
  "node_modules/@codyswann/lisa/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs"; do
114
124
  if [ -f "$candidate" ]; then
115
125
  runner="$candidate"
@@ -132,6 +142,18 @@ if [ -z "$runner" ]; then
132
142
  echo >&2
133
143
  echo "If dependencies are installed, run 'lisa apply' so the skills are" >&2
134
144
  echo "present, then re-run setup." >&2
145
+ echo >&2
146
+ # The version actually resolved, because "not found" and "found, but too old
147
+ # to contain this skill" read identically above and are fixed differently.
148
+ # The second is what happened on Lisa itself: node_modules held a release
149
+ # from before this skill existed, so every path checked was legitimately
150
+ # absent and the message blamed the install.
151
+ if [ -f node_modules/@codyswann/lisa/package.json ]; then
152
+ echo "For reference, node_modules has @codyswann/lisa version:" >&2
153
+ node -p "require('./node_modules/@codyswann/lisa/package.json').version" >&2 2>/dev/null ||
154
+ echo " (unreadable)" >&2
155
+ echo "If that predates this skill, the pin is the problem, not the install." >&2
156
+ fi
135
157
  exit 1
136
158
  fi
137
159
 
@@ -308,28 +308,44 @@ export function installAssets(cwd = process.cwd()) {
308
308
  * at all — so a `$HOME` glob matched nothing there and bash was handed a path
309
309
  * still containing a literal asterisk.
310
310
  *
311
- * Both candidates are therefore tried relative to cwd, and EVERY match is
312
- * prepared rather than the first. A Claude Code web environment can hold more
313
- * than one checkout, so stopping at the first hit would prepare whichever
314
- * repository sorts first and silently ignore the rest arbitrary rather than
315
- * merely limited. Each script anchors itself on its own repository root and
316
- * each project materializes under its own `secrets.namespace`, so preparing
317
- * several is well defined rather than a collision.
311
+ * Candidates are therefore tried relative to cwd first, then under `$HOME` and
312
+ * `/workspace` the container roots the two surfaces actually use because
313
+ * cwd is not reliably either of them. A Claude environment reported `$HOME` as
314
+ * `/root` with no checkout beneath it, which a cwd-only search cannot reach.
315
+ *
316
+ * EVERY match is prepared rather than the first. A Claude Code web environment
317
+ * can hold more than one checkout, so stopping at the first hit would prepare
318
+ * whichever repository sorts first and silently ignore the rest — arbitrary
319
+ * rather than merely limited. Each script anchors itself on its own repository
320
+ * root and each project materializes under its own `secrets.namespace`, so
321
+ * preparing several is well defined rather than a collision. Matches are
322
+ * deduplicated by resolved directory, since the candidate globs overlap
323
+ * whenever cwd happens to be one of the roots.
318
324
  *
319
325
  * The status is the first failure and every checkout is still attempted: one
320
326
  * broken repository must neither hide the others nor report success. The
321
327
  * explicit `exit 1` on no matches matters because a `for` loop over a glob that
322
328
  * matches nothing otherwise exits 0 — the quiet success this guards against.
323
329
  *
330
+ * Failure prints the layout it found rather than only the path it wanted. This
331
+ * field lives in a vendor settings box with a slow edit-and-retry loop, and a
332
+ * miss that reports nothing costs a whole round trip to learn one fact; the
333
+ * listing means the next message names the layout instead of repeating it.
334
+ *
324
335
  * A field that named the repository and package manager was a string a human
325
336
  * had to get right, in a settings box with no review, no version history and no
326
337
  * test — and the logic it encoded belongs in a file that has all three.
327
338
  */
328
339
  export const SETUP_FIELD =
329
- "n=0; rc=0; " +
330
- "for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh; " +
331
- 'do [ -f "$f" ] || continue; n=$((n+1)); bash "$f" || rc=$?; done; ' +
332
- '[ "$n" -gt 0 ] || { echo "lisa-remote-env entrypoint not found under $PWD" >&2; exit 1; }; ' +
340
+ 'n=0; rc=0; seen=""; ' +
341
+ "for f in scripts/lisa-remote-env/setup.sh */scripts/lisa-remote-env/setup.sh " +
342
+ '"$HOME"/scripts/lisa-remote-env/setup.sh "$HOME"/*/scripts/lisa-remote-env/setup.sh ' +
343
+ "/workspace/scripts/lisa-remote-env/setup.sh /workspace/*/scripts/lisa-remote-env/setup.sh; " +
344
+ 'do [ -f "$f" ] || continue; d=$(cd "$(dirname "$f")" && pwd -P); ' +
345
+ 'case " $seen " in *" $d "*) continue;; esac; seen="$seen $d"; ' +
346
+ 'n=$((n+1)); bash "$f" || rc=$?; done; ' +
347
+ '[ "$n" -gt 0 ] || { echo "lisa-remote-env entrypoint not found. ' +
348
+ 'PWD=$PWD HOME=$HOME" >&2; ls -1 . "$HOME" /workspace 2>&1 | head -40 >&2; exit 1; }; ' +
333
349
  'exit "$rc"';
334
350
 
335
351
  /**
@@ -290,6 +290,29 @@ fi
290
290
  # Install plugins only when claude CLI is available
291
291
  if ! command -v claude &>/dev/null; then exit 0; fi
292
292
 
293
+ # Not in a cloud session: the platform already does this, and does it at the
294
+ # only moment it can work.
295
+ #
296
+ # Claude Code installs the plugins a repository declares in .claude/settings.json
297
+ # at session start, from the marketplace that file names. This script runs from a
298
+ # package manager's postinstall, which in a container happens during the setup
299
+ # script — before Claude Code has launched and before any marketplace is
300
+ # registered. Every install therefore failed:
301
+ #
302
+ # Installing plugin "lisa@lisa"...× Plugin "lisa" not found in marketplace "lisa"
303
+ #
304
+ # Eight of eight, the official marketplace's plugins included, which is what
305
+ # ruled out anything project-specific. The failures are harmless on their own
306
+ # (`|| true`), but they leave an empty installed_plugins.json and several
307
+ # screens of red in the setup log that read as the cause of whatever fails next.
308
+ #
309
+ # Standing down is the fix rather than racing the platform with an earlier
310
+ # install, because there is no earlier moment at which one could succeed.
311
+ if [ "${CLAUDE_CODE_REMOTE:-}" = "true" ]; then
312
+ echo "Cloud session: leaving plugin installation to Claude Code, which installs what .claude/settings.json declares at session start."
313
+ exit 0
314
+ fi
315
+
293
316
  # Version-gated plugin sync (perf). `claude plugin marketplace update` is a
294
317
  # network git pull of the whole Lisa repo and every `claude plugin install`
295
318
  # spawns the Claude CLI (seconds each); re-running all of it on every install
@@ -105,11 +105,21 @@ fi
105
105
  # plugin-delivered harnesses work at all. Lisa is a dependency of every project
106
106
  # it is applied to, so `node_modules` carries the same skill at the version that
107
107
  # project pins, which is the version its setup should run.
108
+ #
109
+ # `plugins/lisa/skills/` sits between them, and exists for exactly one project:
110
+ # Lisa itself. There the checkout IS Lisa, at HEAD, while `node_modules` holds
111
+ # whatever version its own lockfile pins — which was four months and a hundred
112
+ # skills behind, so this file did not exist there at all and setup aborted
113
+ # claiming the skill could not be found. The one place it was is the only place
114
+ # that was not searched. It is ahead of node_modules because a checkout that
115
+ # builds this skill is newer than any published copy of it, and harmless
116
+ # everywhere else because no other project has that directory.
108
117
  runner=""
109
118
  for candidate in \
110
119
  ".claude/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
111
120
  ".agents/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
112
121
  ".codex/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
122
+ "plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs" \
113
123
  "node_modules/@codyswann/lisa/plugins/lisa/skills/lisa-setup-remote-env/scripts/setup-remote-env.mjs"; do
114
124
  if [ -f "$candidate" ]; then
115
125
  runner="$candidate"
@@ -132,6 +142,18 @@ if [ -z "$runner" ]; then
132
142
  echo >&2
133
143
  echo "If dependencies are installed, run 'lisa apply' so the skills are" >&2
134
144
  echo "present, then re-run setup." >&2
145
+ echo >&2
146
+ # The version actually resolved, because "not found" and "found, but too old
147
+ # to contain this skill" read identically above and are fixed differently.
148
+ # The second is what happened on Lisa itself: node_modules held a release
149
+ # from before this skill existed, so every path checked was legitimately
150
+ # absent and the message blamed the install.
151
+ if [ -f node_modules/@codyswann/lisa/package.json ]; then
152
+ echo "For reference, node_modules has @codyswann/lisa version:" >&2
153
+ node -p "require('./node_modules/@codyswann/lisa/package.json').version" >&2 2>/dev/null ||
154
+ echo " (unreadable)" >&2
155
+ echo "If that predates this skill, the pin is the problem, not the install." >&2
156
+ fi
135
157
  exit 1
136
158
  fi
137
159