@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.
- package/dist/core/nightly-e2e-guard-behavior-certificate.js +2 -2
- package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
- package/dist/core/upstream-evidence-manifest.js +4 -2
- package/dist/core/upstream-evidence-manifest.js.map +1 -1
- package/package.json +4 -4
- package/plugins/lisa/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa/.codex-plugin/plugin.json +1 -1
- package/plugins/lisa-agy/plugin.json +1 -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/agents/test-specialist.agent.md +1 -1
- package/plugins/lisa-copilot/agents/verification-specialist.agent.md +4 -4
- package/plugins/lisa-copilot/skills/lisa-codify-verification/SKILL.md +2 -2
- package/plugins/lisa-copilot/skills/lisa-verification-lifecycle/SKILL.md +1 -1
- package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
- package/plugins/lisa-cursor/agents/test-specialist.md +1 -1
- package/plugins/lisa-cursor/agents/verification-specialist.md +4 -4
- package/plugins/lisa-cursor/skills/lisa-codify-verification/SKILL.md +2 -2
- package/plugins/lisa-cursor/skills/lisa-verification-lifecycle/SKILL.md +1 -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/scripts/generate-copilot-plugin-artifacts.mjs +2 -0
- package/scripts/generate-cursor-plugin-artifacts.mjs +2 -0
- package/scripts/lib/plugin-rule-citations.mjs +49 -0
|
@@ -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
|
+
}
|