@codyswann/lisa 4.55.29 → 4.55.31

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 (66) hide show
  1. package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
  2. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  3. package/dist/core/upstream-evidence-manifest.js +4 -2
  4. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  5. package/package.json +4 -4
  6. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  7. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  8. package/plugins/lisa-agy/plugin.json +1 -1
  9. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  10. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  11. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  12. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  13. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  14. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  15. package/plugins/lisa-copilot/agents/test-specialist.agent.md +1 -1
  16. package/plugins/lisa-copilot/agents/verification-specialist.agent.md +4 -4
  17. package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -2
  18. package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +1 -1
  19. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  20. package/plugins/lisa-cursor/agents/test-specialist.md +1 -1
  21. package/plugins/lisa-cursor/agents/verification-specialist.md +4 -4
  22. package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -2
  23. package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +1 -1
  24. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  25. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  26. package/plugins/lisa-expo-agy/plugin.json +1 -1
  27. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  28. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  29. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  30. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  31. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  32. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  33. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  35. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  36. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  37. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  38. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  39. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  40. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  41. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  42. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  43. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  44. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  45. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  46. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  47. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  48. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  49. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  50. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  51. package/plugins/lisa-rails-agy/plugin.json +1 -1
  52. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  53. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  54. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  55. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  56. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  57. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  59. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  60. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  61. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  62. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  64. package/scripts/generate-copilot-plugin-artifacts.mjs +2 -0
  65. package/scripts/generate-cursor-plugin-artifacts.mjs +2 -0
  66. package/scripts/lib/plugin-rule-citations.mjs +49 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.29",
3
+ "version": "4.55.31",
4
4
  "description": "Distributable LLM Wiki kernel — ingest, query, lint, and maintain a git-native markdown knowledge base across Claude and Codex.",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.29",
3
+ "version": "4.55.31",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.29",
3
+ "version": "4.55.31",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lisa-wiki",
3
- "version": "4.55.29",
3
+ "version": "4.55.31",
4
4
  "description": "LLM Wiki — a distributable, git-native markdown knowledge base for Claude Code and Codex",
5
5
  "author": {
6
6
  "name": "Cody Swann"
@@ -32,6 +32,7 @@ import {
32
32
  } from "./lib/per-agent-hook-filter.mjs";
33
33
  import { nestCommandsUnderLisa } from "./lib/nest-plugin-commands.mjs";
34
34
  import { invokedAsScript } from "./lib/invoked-as-script.mjs";
35
+ import { rewritePluginRuleCitations } from "./lib/plugin-rule-citations.mjs";
35
36
 
36
37
  const REPO_ROOT = path.resolve(
37
38
  path.dirname(fileURLToPath(import.meta.url)),
@@ -268,6 +269,7 @@ export function generateCopilotVariant(srcDir, outDir, version) {
268
269
  fs.rmdirSync(hooksDir);
269
270
  }
270
271
  }
272
+ rewritePluginRuleCitations(outDir, "copilot");
271
273
  }
272
274
 
273
275
  // CLI entrypoint.
@@ -51,6 +51,7 @@ import {
51
51
  } from "./lib/per-agent-hook-filter.mjs";
52
52
  import { nestCommandsUnderLisa } from "./lib/nest-plugin-commands.mjs";
53
53
  import { invokedAsScript } from "./lib/invoked-as-script.mjs";
54
+ import { rewritePluginRuleCitations } from "./lib/plugin-rule-citations.mjs";
54
55
 
55
56
  const REPO_ROOT = path.resolve(
56
57
  path.dirname(fileURLToPath(import.meta.url)),
@@ -364,6 +365,7 @@ export function generateCursorVariant(srcDir, outDir, version) {
364
365
  fs.rmdirSync(hooksDir);
365
366
  }
366
367
  }
368
+ rewritePluginRuleCitations(outDir, "cursor");
367
369
  }
368
370
 
369
371
  // CLI entrypoint.
@@ -0,0 +1,49 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+
4
+ /**
5
+ * Link inline citations of bundled rules after variant paths are finalized.
6
+ * Unknown and host-owned paths stay literal. A bare rule name prefers the
7
+ * complete reference rule when the plugin also has an eager summary.
8
+ *
9
+ * Parity limit: Codex and OpenCode copy skills into separate installed trees
10
+ * and still retain these legacy source citations. This variant-local rewrite
11
+ * does not repair those installer paths; it covers Copilot and Cursor only.
12
+ * @param {string} root Generated plugin directory.
13
+ * @param {"copilot" | "cursor"} variant Target rule layout.
14
+ * @returns {void}
15
+ */
16
+ export function rewritePluginRuleCitations(root, variant) {
17
+ const walk = directory => {
18
+ for (const entry of fs.readdirSync(directory, { withFileTypes: true })) {
19
+ const file = path.join(directory, entry.name);
20
+ if (entry.isDirectory()) {
21
+ walk(file);
22
+ } else if (entry.isFile() && /\.mdc?$/.test(entry.name)) {
23
+ const source = fs.readFileSync(file, "utf8");
24
+ const rewritten = source.replace(
25
+ /`\.claude\/rules\/(?:(eager|reference)\/)?([A-Za-z0-9._-]+)\.md(#[^`]+)?`/g,
26
+ (citation, tier, name, fragment = "") => {
27
+ const candidates = (tier ? [tier] : ["reference", "eager", ""]).map(
28
+ candidate =>
29
+ variant === "cursor"
30
+ ? `rules/${name}${candidate === "reference" ? "-reference" : ""}.mdc`
31
+ : `rules/${candidate ? `${candidate}/` : ""}${name}.md`
32
+ );
33
+ const target = candidates.find(candidate =>
34
+ fs.existsSync(path.join(root, candidate))
35
+ );
36
+ if (!target) return citation;
37
+ const relative = path
38
+ .relative(path.dirname(file), path.join(root, target))
39
+ .split(path.sep)
40
+ .join("/");
41
+ return `[\`${target}${fragment}\`](${relative}${fragment})`;
42
+ }
43
+ );
44
+ if (rewritten !== source) fs.writeFileSync(file, rewritten);
45
+ }
46
+ }
47
+ };
48
+ walk(root);
49
+ }