@codyswann/lisa 4.25.1 → 4.25.3

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 (82) hide show
  1. package/all/copy-overwrite/scripts/lib/gate-failure-diagnosis.mjs +54 -11
  2. package/all/copy-overwrite/scripts/lisa-floor-collisions.mjs +33 -8
  3. package/all/copy-overwrite/scripts/lisa-work-item.mjs +28 -5
  4. package/dist/core/lisa-owned-hash-ledger.d.ts.map +1 -1
  5. package/dist/core/lisa-owned-hash-ledger.js +8 -0
  6. package/dist/core/lisa-owned-hash-ledger.js.map +1 -1
  7. package/dist/core/lisa.d.ts +15 -0
  8. package/dist/core/lisa.d.ts.map +1 -1
  9. package/dist/core/lisa.js +39 -17
  10. package/dist/core/lisa.js.map +1 -1
  11. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  12. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  13. package/dist/core/upstream-evidence-manifest.js +6 -4
  14. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  15. package/dist/opencode/agent-installer.d.ts +10 -4
  16. package/dist/opencode/agent-installer.d.ts.map +1 -1
  17. package/dist/opencode/agent-installer.js +11 -6
  18. package/dist/opencode/agent-installer.js.map +1 -1
  19. package/dist/opencode/command-installer.d.ts +10 -4
  20. package/dist/opencode/command-installer.d.ts.map +1 -1
  21. package/dist/opencode/command-installer.js +12 -6
  22. package/dist/opencode/command-installer.js.map +1 -1
  23. package/dist/opencode/project-plugin-gate.d.ts +36 -0
  24. package/dist/opencode/project-plugin-gate.d.ts.map +1 -0
  25. package/dist/opencode/project-plugin-gate.js +13 -0
  26. package/dist/opencode/project-plugin-gate.js.map +1 -0
  27. package/dist/opencode/skills-installer.d.ts +5 -1
  28. package/dist/opencode/skills-installer.d.ts.map +1 -1
  29. package/dist/opencode/skills-installer.js +9 -4
  30. package/dist/opencode/skills-installer.js.map +1 -1
  31. package/package.json +3 -3
  32. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  34. package/plugins/lisa-agy/plugin.json +1 -1
  35. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  36. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  37. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  38. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  41. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  42. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  44. package/plugins/lisa-expo-agy/plugin.json +1 -1
  45. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  46. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  47. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  49. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  50. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  51. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  52. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  54. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  55. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  56. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  57. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  60. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  64. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  65. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  66. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  67. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  68. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  69. package/plugins/lisa-rails-agy/plugin.json +1 -1
  70. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  72. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  73. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  74. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  75. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  76. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  77. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  78. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  79. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  80. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  81. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  82. package/scripts/check-security-floors.mjs +58 -5
@@ -1,4 +1,5 @@
1
1
  import { type AgentSource } from "../codex/agent-installer.js";
2
+ import type { ProjectType } from "../core/config.js";
2
3
  export { type AgentSource, discoverLisaAgents, } from "../codex/agent-installer.js";
3
4
  /** Subdirectory inside `.opencode/` where Lisa-owned agents live */
4
5
  export declare const LISA_AGENTS_SUBDIR = "agents";
@@ -38,15 +39,20 @@ export declare function installAgents(sources: readonly AgentSource[], destDir:
38
39
  /**
39
40
  * Convenience one-shot: discover Lisa agents from `lisaDir` and install them.
40
41
  *
41
- * Discovery is restricted to canonical plugins — the per-harness fanout variants
42
- * (`*-agy`, `*-copilot`, `*-cursor`) are skipped. The copilot variants rename
42
+ * Discovery is restricted to canonical plugins applicable to THIS project — the
43
+ * per-harness fanout variants (`*-agy`, `*-copilot`, `*-cursor`) are skipped,
44
+ * and so are stack plugins the host does not use. The copilot variants rename
43
45
  * agents to `*.agent.md`, which would otherwise slip past id-dedup and ship a
44
46
  * duplicate `lisa-<name>.agent` for every agent; the cursor/agy variants are
45
- * just reformatted copies of the base agents.
47
+ * just reformatted copies of the base agents. See `opencodeProjectPluginFilter`
48
+ * for why both gates compose.
46
49
  * @param lisaDir - Absolute path to the Lisa repo / installed package
47
50
  * @param destDir - Absolute path to the destination project root
48
51
  * @param previousManagedFiles - Files Lisa managed on the previous run
52
+ * @param detectedTypes - Expanded project types Lisa detected for the host.
53
+ * Gates stack plugins so an infrastructure repo never receives the
54
+ * game-development agents from the Phaser plugin.
49
55
  * @returns Result describing installed/deleted/managedFiles
50
56
  */
51
- export declare function discoverAndInstallAgents(lisaDir: string, destDir: string, previousManagedFiles: readonly string[]): Promise<AgentInstallResult>;
57
+ export declare function discoverAndInstallAgents(lisaDir: string, destDir: string, previousManagedFiles: readonly string[], detectedTypes?: readonly ProjectType[]): Promise<AgentInstallResult>;
52
58
  //# sourceMappingURL=agent-installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-installer.d.ts","sourceRoot":"","sources":["../../src/opencode/agent-installer.ts"],"names":[],"mappings":"AA0BA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EACL,KAAK,WAAW,EAChB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,kBAAkB,CAAC,CAsB7B;AAuDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,kBAAkB,CAAC,CAM7B"}
1
+ {"version":3,"file":"agent-installer.d.ts","sourceRoot":"","sources":["../../src/opencode/agent-installer.ts"],"names":[],"mappings":"AA0BA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,EACL,KAAK,WAAW,EAChB,kBAAkB,GACnB,MAAM,6BAA6B,CAAC;AAErC,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,2CAA2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,SAAS,WAAW,EAAE,EAC/B,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,kBAAkB,CAAC,CAsB7B;AAuDD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,EACvC,aAAa,GAAE,SAAS,WAAW,EAAO,GACzC,OAAO,CAAC,kBAAkB,CAAC,CAM7B"}
@@ -25,7 +25,7 @@ import * as fse from "fs-extra";
25
25
  import { readFile, unlink, writeFile } from "node:fs/promises";
26
26
  import * as path from "node:path";
27
27
  import { discoverLisaAgents, } from "../codex/agent-installer.js";
28
- import { isHarnessVariantPlugin } from "../core/lisa-skill-sources.js";
28
+ import { opencodeProjectPluginFilter } from "./project-plugin-gate.js";
29
29
  import { transformAgentMarkdownToOpencode } from "./agent-transformer.js";
30
30
  import { OPENCODE_CONFIG_DIR } from "./manifest.js";
31
31
  export { discoverLisaAgents, } from "../codex/agent-installer.js";
@@ -103,18 +103,23 @@ async function deleteStaleAgents(previousManagedFiles, currentManagedFiles, dest
103
103
  /**
104
104
  * Convenience one-shot: discover Lisa agents from `lisaDir` and install them.
105
105
  *
106
- * Discovery is restricted to canonical plugins — the per-harness fanout variants
107
- * (`*-agy`, `*-copilot`, `*-cursor`) are skipped. The copilot variants rename
106
+ * Discovery is restricted to canonical plugins applicable to THIS project — the
107
+ * per-harness fanout variants (`*-agy`, `*-copilot`, `*-cursor`) are skipped,
108
+ * and so are stack plugins the host does not use. The copilot variants rename
108
109
  * agents to `*.agent.md`, which would otherwise slip past id-dedup and ship a
109
110
  * duplicate `lisa-<name>.agent` for every agent; the cursor/agy variants are
110
- * just reformatted copies of the base agents.
111
+ * just reformatted copies of the base agents. See `opencodeProjectPluginFilter`
112
+ * for why both gates compose.
111
113
  * @param lisaDir - Absolute path to the Lisa repo / installed package
112
114
  * @param destDir - Absolute path to the destination project root
113
115
  * @param previousManagedFiles - Files Lisa managed on the previous run
116
+ * @param detectedTypes - Expanded project types Lisa detected for the host.
117
+ * Gates stack plugins so an infrastructure repo never receives the
118
+ * game-development agents from the Phaser plugin.
114
119
  * @returns Result describing installed/deleted/managedFiles
115
120
  */
116
- export async function discoverAndInstallAgents(lisaDir, destDir, previousManagedFiles) {
117
- const sources = await discoverLisaAgents(lisaDir, name => !isHarnessVariantPlugin(name));
121
+ export async function discoverAndInstallAgents(lisaDir, destDir, previousManagedFiles, detectedTypes = []) {
122
+ const sources = await discoverLisaAgents(lisaDir, await opencodeProjectPluginFilter(destDir, detectedTypes));
118
123
  return installAgents(sources, destDir, previousManagedFiles);
119
124
  }
120
125
  //# sourceMappingURL=agent-installer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-installer.js","sourceRoot":"","sources":["../../src/opencode/agent-installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-installer.js","sourceRoot":"","sources":["../../src/opencode/agent-installer.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { type LisaCommandSource } from "../core/lisa-skill-sources.js";
2
+ import type { ProjectType } from "../core/config.js";
2
3
  export { type LisaCommandSource, discoverLisaCommands, } from "../core/lisa-skill-sources.js";
3
4
  /** Subdirectory inside `.opencode/` where Lisa-owned commands live */
4
5
  export declare const LISA_COMMANDS_SUBDIR = "commands";
@@ -34,13 +35,18 @@ export declare function installCommands(sources: readonly LisaCommandSource[], d
34
35
  /**
35
36
  * Convenience one-shot: discover Lisa commands from `lisaDir` and install them.
36
37
  *
37
- * Discovery is restricted to canonical plugins — the per-harness fanout variants
38
- * (`*-agy`, `*-copilot`, `*-cursor`) are skipped so a reformatted variant copy
39
- * of a command body never wins the last-wins dedup over the canonical source.
38
+ * Discovery is restricted to canonical plugins applicable to THIS project — the
39
+ * per-harness fanout variants (`*-agy`, `*-copilot`, `*-cursor`) are skipped so
40
+ * a reformatted variant copy of a command body never wins the last-wins dedup
41
+ * over the canonical source, and stack plugins the host does not use are
42
+ * skipped too. See `opencodeProjectPluginFilter` for why both gates compose.
40
43
  * @param lisaDir - Absolute path to the Lisa repo / installed package
41
44
  * @param destDir - Absolute path to the destination project root
42
45
  * @param previousManagedFiles - Files Lisa managed on the previous run
46
+ * @param detectedTypes - Expanded project types Lisa detected for the host.
47
+ * Gates stack plugins so a host never receives commands for a stack it does
48
+ * not have.
43
49
  * @returns Result describing installed/deleted/managedFiles
44
50
  */
45
- export declare function discoverAndInstallCommands(lisaDir: string, destDir: string, previousManagedFiles: readonly string[]): Promise<CommandInstallResult>;
51
+ export declare function discoverAndInstallCommands(lisaDir: string, destDir: string, previousManagedFiles: readonly string[], detectedTypes?: readonly ProjectType[]): Promise<CommandInstallResult>;
46
52
  //# sourceMappingURL=command-installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-installer.d.ts","sourceRoot":"","sources":["../../src/opencode/command-installer.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,KAAK,iBAAiB,EAIvB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,EACL,KAAK,iBAAiB,EACtB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,UAA8B,CAAC;AAKpE,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,oBAAoB,CAAC,CA0B/B;AA8DD;;;;;;;;;;GAUG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,oBAAoB,CAAC,CAM/B"}
1
+ {"version":3,"file":"command-installer.d.ts","sourceRoot":"","sources":["../../src/opencode/command-installer.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKrD,OAAO,EACL,KAAK,iBAAiB,EACtB,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,aAAa,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,wBAAwB,UAA8B,CAAC;AAKpE,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,2CAA2C;AAC3C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,oBAAoB,CAAC,CA0B/B;AA8DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,EACvC,aAAa,GAAE,SAAS,WAAW,EAAO,GACzC,OAAO,CAAC,oBAAoB,CAAC,CAM/B"}
@@ -25,7 +25,8 @@
25
25
  import * as fse from "fs-extra";
26
26
  import { readFile, unlink, writeFile } from "node:fs/promises";
27
27
  import * as path from "node:path";
28
- import { LISA_COMMAND_DISPLAY_PREFIX, discoverLisaCommands, isHarnessVariantPlugin, } from "../core/lisa-skill-sources.js";
28
+ import { LISA_COMMAND_DISPLAY_PREFIX, discoverLisaCommands, } from "../core/lisa-skill-sources.js";
29
+ import { opencodeProjectPluginFilter } from "./project-plugin-gate.js";
29
30
  import { transformCommandToOpencode } from "./command-transformer.js";
30
31
  import { OPENCODE_CONFIG_DIR } from "./manifest.js";
31
32
  export { discoverLisaCommands, } from "../core/lisa-skill-sources.js";
@@ -104,16 +105,21 @@ async function deleteStaleCommands(previousManagedFiles, currentManagedFiles, de
104
105
  /**
105
106
  * Convenience one-shot: discover Lisa commands from `lisaDir` and install them.
106
107
  *
107
- * Discovery is restricted to canonical plugins — the per-harness fanout variants
108
- * (`*-agy`, `*-copilot`, `*-cursor`) are skipped so a reformatted variant copy
109
- * of a command body never wins the last-wins dedup over the canonical source.
108
+ * Discovery is restricted to canonical plugins applicable to THIS project — the
109
+ * per-harness fanout variants (`*-agy`, `*-copilot`, `*-cursor`) are skipped so
110
+ * a reformatted variant copy of a command body never wins the last-wins dedup
111
+ * over the canonical source, and stack plugins the host does not use are
112
+ * skipped too. See `opencodeProjectPluginFilter` for why both gates compose.
110
113
  * @param lisaDir - Absolute path to the Lisa repo / installed package
111
114
  * @param destDir - Absolute path to the destination project root
112
115
  * @param previousManagedFiles - Files Lisa managed on the previous run
116
+ * @param detectedTypes - Expanded project types Lisa detected for the host.
117
+ * Gates stack plugins so a host never receives commands for a stack it does
118
+ * not have.
113
119
  * @returns Result describing installed/deleted/managedFiles
114
120
  */
115
- export async function discoverAndInstallCommands(lisaDir, destDir, previousManagedFiles) {
116
- const sources = await discoverLisaCommands(lisaDir, name => !isHarnessVariantPlugin(name));
121
+ export async function discoverAndInstallCommands(lisaDir, destDir, previousManagedFiles, detectedTypes = []) {
122
+ const sources = await discoverLisaCommands(lisaDir, await opencodeProjectPluginFilter(destDir, detectedTypes));
117
123
  return installCommands(sources, destDir, previousManagedFiles);
118
124
  }
119
125
  //# sourceMappingURL=command-installer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command-installer.js","sourceRoot":"","sources":["../../src/opencode/command-installer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-installer.js","sourceRoot":"","sources":["../../src/opencode/command-installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * The discovery predicate every OpenCode vendoring installer shares.
3
+ *
4
+ * OpenCode is the one agent surface where Lisa copies skills, agents, and
5
+ * commands verbatim into the host repo (`.opencode/`), so an ungated emit puts
6
+ * the entire bundled catalogue in front of the model — Expo/React skills with
7
+ * JSX worked examples in an infrastructure repo, game-design agents in a
8
+ * backend. That is not cosmetic noise: a reviewer agent will cite a vendored
9
+ * skill as if it were the host repo's own convention.
10
+ *
11
+ * Two independent concerns compose into one predicate here:
12
+ * 1. **Harness-variant exclusion** (#1412) — the `*-agy` / `*-copilot` /
13
+ * `*-cursor` fanout directories are reformatted copies of canonical
14
+ * sources; letting them into discovery ships duplicates and lets a variant
15
+ * body win the last-wins dedup.
16
+ * 2. **Project-type gating** (#3437) — only the base plugin, the detected
17
+ * stack plugins, and explicitly configured standalone plugins belong in a
18
+ * given host repo. This is the same gate the Codex skills installer
19
+ * (`codex/skills-installer`), the Codex project overlay, the OpenCode
20
+ * hooks installer, and the OpenCode MCP collector already apply.
21
+ *
22
+ * Both are kept: the project filter alone would already fail closed on variant
23
+ * directories (they are never in the selected set), but the harness-variant
24
+ * predicate states the #1412 intent independently so removing one gate does not
25
+ * silently take the other with it.
26
+ * @module opencode/project-plugin-gate
27
+ */
28
+ import type { ProjectType } from "../core/config.js";
29
+ /**
30
+ * Build the plugin-discovery predicate for one host project's OpenCode emit.
31
+ * @param destDir - Absolute path to the host project root.
32
+ * @param detectedTypes - Expanded, ordered project types Lisa detected.
33
+ * @returns Predicate accepting only canonical plugins applicable to the project.
34
+ */
35
+ export declare function opencodeProjectPluginFilter(destDir: string, detectedTypes: readonly ProjectType[]): Promise<(pluginName: string) => boolean>;
36
+ //# sourceMappingURL=project-plugin-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-plugin-gate.d.ts","sourceRoot":"","sources":["../../src/opencode/project-plugin-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,SAAS,WAAW,EAAE,GACpC,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,CAM1C"}
@@ -0,0 +1,13 @@
1
+ import { projectPluginFilter, selectProjectLisaPlugins, } from "../core/lisa-plugin-selection.js";
2
+ import { isHarnessVariantPlugin } from "../core/lisa-skill-sources.js";
3
+ /**
4
+ * Build the plugin-discovery predicate for one host project's OpenCode emit.
5
+ * @param destDir - Absolute path to the host project root.
6
+ * @param detectedTypes - Expanded, ordered project types Lisa detected.
7
+ * @returns Predicate accepting only canonical plugins applicable to the project.
8
+ */
9
+ export async function opencodeProjectPluginFilter(destDir, detectedTypes) {
10
+ const inProject = projectPluginFilter(await selectProjectLisaPlugins(destDir, detectedTypes));
11
+ return pluginName => !isHarnessVariantPlugin(pluginName) && inProject(pluginName);
12
+ }
13
+ //# sourceMappingURL=project-plugin-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-plugin-gate.js","sourceRoot":"","sources":["../../src/opencode/project-plugin-gate.ts"],"names":[],"mappings":"AA4BA,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAe,EACf,aAAqC;IAErC,MAAM,SAAS,GAAG,mBAAmB,CACnC,MAAM,wBAAwB,CAAC,OAAO,EAAE,aAAa,CAAC,CACvD,CAAC;IACF,OAAO,UAAU,CAAC,EAAE,CAClB,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC;AACjE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { ProjectType } from "../core/config.js";
1
2
  /** Subdirectory inside `.opencode/skills/` where Lisa-owned skills live */
2
3
  export declare const LISA_SKILLS_SUBDIR: string;
3
4
  /** Result of one skill copy */
@@ -26,7 +27,10 @@ export interface SkillsInstallResult {
26
27
  * @param destDir - Absolute path to the host project root.
27
28
  * @param previousManagedFiles - Files Lisa managed on the previous run
28
29
  * (relative to `.opencode/`); used to detect stale skill directories.
30
+ * @param detectedTypes - Expanded project types Lisa detected for the host.
31
+ * Gates stack plugins so a non-Expo repo never receives Expo skills; an
32
+ * empty list selects the base plugin plus configured standalone plugins only.
29
33
  * @returns Result describing installed skills + managed files + deletions.
30
34
  */
31
- export declare function installSkills(lisaDir: string, destDir: string, previousManagedFiles: readonly string[]): Promise<SkillsInstallResult>;
35
+ export declare function installSkills(lisaDir: string, destDir: string, previousManagedFiles: readonly string[], detectedTypes?: readonly ProjectType[]): Promise<SkillsInstallResult>;
32
36
  //# sourceMappingURL=skills-installer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills-installer.d.ts","sourceRoot":"","sources":["../../src/opencode/skills-installer.ts"],"names":[],"mappings":"AAuCA,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAW9D,+BAA+B;AAC/B,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAwB;AACxB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,mBAAmB,CAAC,CAwD9B"}
1
+ {"version":3,"file":"skills-installer.d.ts","sourceRoot":"","sources":["../../src/opencode/skills-installer.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,QAA8B,CAAC;AAW9D,+BAA+B;AAC/B,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IACvC,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAwB;AACxB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,SAAS,MAAM,EAAE,EACvC,aAAa,GAAE,SAAS,WAAW,EAAO,GACzC,OAAO,CAAC,mBAAmB,CAAC,CAyD9B"}
@@ -23,8 +23,9 @@
23
23
  import * as fse from "fs-extra";
24
24
  import { mkdir, copyFile, readFile, rm, writeFile } from "node:fs/promises";
25
25
  import * as path from "node:path";
26
- import { discoverBundledSkills, discoverLisaCommands, isHarnessVariantPlugin, loadSkillDenylist, } from "../core/lisa-skill-sources.js";
26
+ import { discoverBundledSkills, discoverLisaCommands, loadSkillDenylist, } from "../core/lisa-skill-sources.js";
27
27
  import { convertCommandToSkill } from "../codex/command-skill-transformer.js";
28
+ import { opencodeProjectPluginFilter } from "./project-plugin-gate.js";
28
29
  import { OPENCODE_CONFIG_DIR } from "./manifest.js";
29
30
  /** Runtime label threaded into generated command-as-skill compatibility notes */
30
31
  const OPENCODE_RUNTIME_LABEL = "OpenCode";
@@ -44,20 +45,24 @@ const INTERNAL_OPENCODE_SKILL_POLICY_RELATIVE_PATH = path.join("scripts", "inter
44
45
  * @param destDir - Absolute path to the host project root.
45
46
  * @param previousManagedFiles - Files Lisa managed on the previous run
46
47
  * (relative to `.opencode/`); used to detect stale skill directories.
48
+ * @param detectedTypes - Expanded project types Lisa detected for the host.
49
+ * Gates stack plugins so a non-Expo repo never receives Expo skills; an
50
+ * empty list selects the base plugin plus configured standalone plugins only.
47
51
  * @returns Result describing installed skills + managed files + deletions.
48
52
  */
49
- export async function installSkills(lisaDir, destDir, previousManagedFiles) {
53
+ export async function installSkills(lisaDir, destDir, previousManagedFiles, detectedTypes = []) {
50
54
  const skillsDir = path.join(destDir, OPENCODE_CONFIG_DIR, LISA_SKILLS_SUBDIR);
51
55
  await fse.ensureDir(skillsDir);
52
56
  const denylistedSkills = await loadSkillDenylist(lisaDir, INTERNAL_OPENCODE_SKILL_POLICY_RELATIVE_PATH);
57
+ const pluginFilter = await opencodeProjectPluginFilter(destDir, detectedTypes);
53
58
  // Step 1: bundled skills
54
- const bundled = await discoverBundledSkills(lisaDir, denylistedSkills, pluginName => !isHarnessVariantPlugin(pluginName));
59
+ const bundled = await discoverBundledSkills(lisaDir, denylistedSkills, pluginFilter);
55
60
  const bundledInstalls = await Promise.all(bundled.map(source => copyBundledSkill(source, skillsDir)));
56
61
  const bundledFiles = bundled.flatMap(source => source.files.map(file => path.join(LISA_SKILLS_SUBDIR, source.skillName, file)));
57
62
  // Step 2: command-as-skill conversions (skip when the bundled skill already
58
63
  // owns the target name — native `/lisa:*` commands cover Claude-style entry).
59
64
  const bundledSkillNames = new Set(bundled.map(source => source.skillName));
60
- const commandSkills = (await discoverLisaCommands(lisaDir, pluginName => !isHarnessVariantPlugin(pluginName))).filter(cmd => !bundledSkillNames.has(cmd.skillName));
65
+ const commandSkills = (await discoverLisaCommands(lisaDir, pluginFilter)).filter(cmd => !bundledSkillNames.has(cmd.skillName));
61
66
  const commandInstalls = await Promise.all(commandSkills.map(cmd => emitCommandAsSkill(cmd, skillsDir)));
62
67
  const commandFiles = commandInstalls.map(install => path.join(LISA_SKILLS_SUBDIR, install.name, SKILL_MD_FILENAME));
63
68
  const installed = [
@@ -1 +1 @@
1
- {"version":3,"file":"skills-installer.js","sourceRoot":"","sources":["../../src/opencode/skills-installer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAGL,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,iFAAiF;AACjF,MAAM,sBAAsB,GAAG,UAAU,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAE9D,uEAAuE;AACvE,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAErC,gFAAgF;AAChF,MAAM,4CAA4C,GAAG,IAAI,CAAC,IAAI,CAC5D,SAAS,EACT,qCAAqC,CACtC,CAAC;AAoBF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,OAAe,EACf,oBAAuC;IAEvC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IAC9E,MAAM,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,gBAAgB,GAAG,MAAM,iBAAiB,CAC9C,OAAO,EACP,4CAA4C,CAC7C,CAAC;IAEF,yBAAyB;IACzB,MAAM,OAAO,GAAG,MAAM,qBAAqB,CACzC,OAAO,EACP,gBAAgB,EAChB,UAAU,CAAC,EAAE,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAClD,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAC3D,CAAC;IACF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CACtB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CACtD,CACF,CAAC;IAEF,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG,CACpB,MAAM,oBAAoB,CACxB,OAAO,EACP,UAAU,CAAC,EAAE,CAAC,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAClD,CACF,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAC7D,CAAC;IACF,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CACjD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAC/D,CAAC;IAEF,MAAM,SAAS,GAA8B;QAC3C,GAAG,eAAe;QAClB,GAAG,eAAe;KACnB,CAAC;IAEF,yCAAyC;IACzC,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,oBAAoB,EACpB,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EACnC,OAAO,CACR,CAAC;IAEF,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACnC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,EAAE,GAAG,YAAY,CAAC,CAAC;QAC/D,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;KAChC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,iBAAiB,CAC9B,oBAAuC,EACvC,iBAAsC,EACtC,OAAe;IAEf,MAAM,gBAAgB,GAAG,GAAG,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5D,MAAM,kBAAkB,GAAG,yBAAyB,CAClD,oBAAoB,EACpB,gBAAgB,CACjB,CAAC;IACF,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CACvB,OAAO,EACP,mBAAmB,EACnB,kBAAkB,EAClB,IAAI,CACL,CAAC;QACF,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,yBAAyB,CAChC,oBAAuC,EACvC,gBAAwB;IAExB,MAAM,KAAK,GAAG,oBAAoB;SAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;SACjD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACnE,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAC7B,MAA0B,EAC1B,SAAiB;IAEjB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5D,4EAA4E;IAC5E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,CACH,CAAC;IACF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,SAAS;QACtB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,SAAS,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,kBAAkB,CAC/B,GAAsB,EACtB,SAAiB;IAEjB,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,qBAAqB,CACxC,aAAa,EACb,GAAG,CAAC,SAAS,EACb,GAAG,CAAC,WAAW,EACf,sBAAsB,CACvB,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAClC,MAAM,SAAS,CACb,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAC1C,YAAY,EACZ,MAAM,CACP,CAAC;IACF,OAAO;QACL,IAAI,EAAE,GAAG,CAAC,SAAS;QACnB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,SAAS,CAAC;KAC3D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"skills-installer.js","sourceRoot":"","sources":["../../src/opencode/skills-installer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -161,7 +161,7 @@
161
161
  "zod-validation-error": "^4.0.0"
162
162
  },
163
163
  "name": "@codyswann/lisa",
164
- "version": "4.25.1",
164
+ "version": "4.25.3",
165
165
  "description": "Claude Code governance framework that applies guardrails, guidance, and automated enforcement to projects",
166
166
  "main": "dist/index.js",
167
167
  "exports": {
@@ -305,6 +305,6 @@
305
305
  "test": "tests"
306
306
  },
307
307
  "types": "./dist/index.d.ts",
308
- "lisaReleaseCommit": "34f952a5bc2859b3e8e9757d1307bbbd9eef13dd",
309
- "gitHead": "34f952a5bc2859b3e8e9757d1307bbbd9eef13dd"
308
+ "lisaReleaseCommit": "1a8e48bd7dd767fb4ebce142a7e173121d0d734a",
309
+ "gitHead": "1a8e48bd7dd767fb4ebce142a7e173121d0d734a"
310
310
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Universal governance: agents, skills, commands, hooks, and rules for all projects.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "AWS CDK-specific Lisa plugin.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-cdk",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "AWS CDK-specific plugin",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Universal governance — agents, skills, commands, hooks, and rules for all projects",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Expo and React Native-specific skills, agents, rules, and MCP servers.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-expo",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Expo/React Native-specific skills, agents, rules, and MCP servers",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Harper/Fabric-specific Lisa rules for TypeScript component apps.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-harper-fabric",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "Harper/Fabric-specific rules for TypeScript component apps",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "NestJS-specific skills and migration write-protection hooks.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-nestjs",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
4
4
  "description": "NestJS-specific skills (GraphQL, TypeORM) and hooks (migration write-protection)",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-openclaw",
3
- "version": "4.25.1",
3
+ "version": "4.25.3",
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"