@codyswann/lisa 2.296.0 → 2.297.0

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 (124) hide show
  1. package/dist/cli/doctor-sonar.d.ts +15 -0
  2. package/dist/cli/doctor-sonar.d.ts.map +1 -0
  3. package/dist/cli/doctor-sonar.js +28 -0
  4. package/dist/cli/doctor-sonar.js.map +1 -0
  5. package/dist/cli/doctor.d.ts +2 -0
  6. package/dist/cli/doctor.d.ts.map +1 -1
  7. package/dist/cli/doctor.js +4 -0
  8. package/dist/cli/doctor.js.map +1 -1
  9. package/dist/core/learnings-contract.d.ts +23 -1
  10. package/dist/core/learnings-contract.d.ts.map +1 -1
  11. package/dist/core/learnings-contract.js +26 -2
  12. package/dist/core/learnings-contract.js.map +1 -1
  13. package/dist/core/lisa.d.ts +13 -0
  14. package/dist/core/lisa.d.ts.map +1 -1
  15. package/dist/core/lisa.js +44 -0
  16. package/dist/core/lisa.js.map +1 -1
  17. package/dist/core/project-config-kane.d.ts +9 -0
  18. package/dist/core/project-config-kane.d.ts.map +1 -1
  19. package/dist/core/project-config-kane.js +35 -3
  20. package/dist/core/project-config-kane.js.map +1 -1
  21. package/dist/core/sonar-integration.d.ts +30 -0
  22. package/dist/core/sonar-integration.d.ts.map +1 -0
  23. package/dist/core/sonar-integration.js +55 -0
  24. package/dist/core/sonar-integration.js.map +1 -0
  25. package/dist/core/upstream-evidence-manifest.d.ts.map +1 -1
  26. package/dist/core/upstream-evidence-manifest.js +26 -5
  27. package/dist/core/upstream-evidence-manifest.js.map +1 -1
  28. package/dist/sonar/sonar-installer.d.ts +19 -0
  29. package/dist/sonar/sonar-installer.d.ts.map +1 -0
  30. package/dist/sonar/sonar-installer.js +69 -0
  31. package/dist/sonar/sonar-installer.js.map +1 -0
  32. package/package.json +1 -1
  33. package/plugins/lisa/.claude-plugin/plugin.json +1 -1
  34. package/plugins/lisa/.codex-plugin/plugin.json +1 -1
  35. package/plugins/lisa/.codex-plugin/skills/lisa-analyze-claude-remote/SKILL.md +6 -6
  36. package/plugins/lisa/.codex-plugin/skills/lisa-generate-claude-remote-build-script/SKILL.md +14 -6
  37. package/plugins/lisa/.codex-plugin/skills/lisa-persist-learning/SKILL.md +14 -0
  38. package/plugins/lisa/.codex-plugin/skills/lisa-setup-sonar/SKILL.md +108 -0
  39. package/plugins/lisa/.codex-plugin/skills/lisa-setup-sonar/agents/openai.yaml +4 -0
  40. package/plugins/lisa/.codex-plugin/skills/lisa-sonarcloud-access/SKILL.md +51 -46
  41. package/plugins/lisa/commands/setup/sonar.md +7 -0
  42. package/plugins/lisa/rules/reference/integration-access-layer.md +10 -2
  43. package/plugins/lisa/skills/lisa-analyze-claude-remote/SKILL.md +6 -6
  44. package/plugins/lisa/skills/lisa-generate-claude-remote-build-script/SKILL.md +14 -6
  45. package/plugins/lisa/skills/lisa-persist-learning/SKILL.md +14 -0
  46. package/plugins/lisa/skills/lisa-setup-sonar/SKILL.md +108 -0
  47. package/plugins/lisa/skills/lisa-setup-sonar/agents/openai.yaml +4 -0
  48. package/plugins/lisa/skills/lisa-sonarcloud-access/SKILL.md +52 -47
  49. package/plugins/lisa/skills/lisa-sonarcloud-access/agents/openai.yaml +2 -2
  50. package/plugins/lisa-agy/commands/lisa/setup/sonar.md +7 -0
  51. package/plugins/lisa-agy/plugin.json +1 -1
  52. package/plugins/lisa-agy/skills/lisa-analyze-claude-remote/SKILL.md +6 -6
  53. package/plugins/lisa-agy/skills/lisa-generate-claude-remote-build-script/SKILL.md +14 -6
  54. package/plugins/lisa-agy/skills/lisa-persist-learning/SKILL.md +14 -0
  55. package/plugins/lisa-agy/skills/lisa-setup-sonar/SKILL.md +108 -0
  56. package/plugins/lisa-agy/skills/lisa-sonarcloud-access/SKILL.md +52 -47
  57. package/plugins/lisa-cdk/.claude-plugin/plugin.json +1 -1
  58. package/plugins/lisa-cdk/.codex-plugin/plugin.json +1 -1
  59. package/plugins/lisa-cdk-agy/plugin.json +1 -1
  60. package/plugins/lisa-cdk-copilot/.claude-plugin/plugin.json +1 -1
  61. package/plugins/lisa-cdk-cursor/.claude-plugin/plugin.json +1 -1
  62. package/plugins/lisa-copilot/.claude-plugin/plugin.json +1 -1
  63. package/plugins/lisa-copilot/commands/lisa/setup/sonar.md +7 -0
  64. package/plugins/lisa-copilot/rules/reference/integration-access-layer.md +10 -2
  65. package/plugins/lisa-copilot/skills/lisa-analyze-claude-remote/SKILL.md +6 -6
  66. package/plugins/lisa-copilot/skills/lisa-generate-claude-remote-build-script/SKILL.md +14 -6
  67. package/plugins/lisa-copilot/skills/lisa-persist-learning/SKILL.md +14 -0
  68. package/plugins/lisa-copilot/skills/lisa-setup-sonar/SKILL.md +108 -0
  69. package/plugins/lisa-copilot/skills/lisa-sonarcloud-access/SKILL.md +52 -47
  70. package/plugins/lisa-cursor/.claude-plugin/plugin.json +1 -1
  71. package/plugins/lisa-cursor/commands/lisa/setup/sonar.md +7 -0
  72. package/plugins/lisa-cursor/rules/integration-access-layer-reference.mdc +10 -2
  73. package/plugins/lisa-cursor/skills/lisa-analyze-claude-remote/SKILL.md +6 -6
  74. package/plugins/lisa-cursor/skills/lisa-generate-claude-remote-build-script/SKILL.md +14 -6
  75. package/plugins/lisa-cursor/skills/lisa-persist-learning/SKILL.md +14 -0
  76. package/plugins/lisa-cursor/skills/lisa-setup-sonar/SKILL.md +108 -0
  77. package/plugins/lisa-cursor/skills/lisa-sonarcloud-access/SKILL.md +52 -47
  78. package/plugins/lisa-expo/.claude-plugin/plugin.json +1 -1
  79. package/plugins/lisa-expo/.codex-plugin/plugin.json +1 -1
  80. package/plugins/lisa-expo-agy/plugin.json +1 -1
  81. package/plugins/lisa-expo-copilot/.claude-plugin/plugin.json +1 -1
  82. package/plugins/lisa-expo-cursor/.claude-plugin/plugin.json +1 -1
  83. package/plugins/lisa-harper-fabric/.claude-plugin/plugin.json +1 -1
  84. package/plugins/lisa-harper-fabric/.codex-plugin/plugin.json +1 -1
  85. package/plugins/lisa-harper-fabric-agy/plugin.json +1 -1
  86. package/plugins/lisa-harper-fabric-copilot/.claude-plugin/plugin.json +1 -1
  87. package/plugins/lisa-harper-fabric-cursor/.claude-plugin/plugin.json +1 -1
  88. package/plugins/lisa-nestjs/.claude-plugin/plugin.json +1 -1
  89. package/plugins/lisa-nestjs/.codex-plugin/plugin.json +1 -1
  90. package/plugins/lisa-nestjs-agy/plugin.json +1 -1
  91. package/plugins/lisa-nestjs-copilot/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lisa-nestjs-cursor/.claude-plugin/plugin.json +1 -1
  93. package/plugins/lisa-openclaw/.claude-plugin/plugin.json +1 -1
  94. package/plugins/lisa-openclaw/.codex-plugin/plugin.json +1 -1
  95. package/plugins/lisa-openclaw-agy/plugin.json +1 -1
  96. package/plugins/lisa-openclaw-copilot/.claude-plugin/plugin.json +1 -1
  97. package/plugins/lisa-openclaw-cursor/.claude-plugin/plugin.json +1 -1
  98. package/plugins/lisa-phaser/.claude-plugin/plugin.json +1 -1
  99. package/plugins/lisa-phaser/.codex-plugin/plugin.json +1 -1
  100. package/plugins/lisa-phaser-agy/plugin.json +1 -1
  101. package/plugins/lisa-phaser-copilot/.claude-plugin/plugin.json +1 -1
  102. package/plugins/lisa-phaser-cursor/.claude-plugin/plugin.json +1 -1
  103. package/plugins/lisa-rails/.claude-plugin/plugin.json +1 -1
  104. package/plugins/lisa-rails/.codex-plugin/plugin.json +1 -1
  105. package/plugins/lisa-rails-agy/plugin.json +1 -1
  106. package/plugins/lisa-rails-copilot/.claude-plugin/plugin.json +1 -1
  107. package/plugins/lisa-rails-cursor/.claude-plugin/plugin.json +1 -1
  108. package/plugins/lisa-typescript/.claude-plugin/plugin.json +1 -1
  109. package/plugins/lisa-typescript/.codex-plugin/plugin.json +1 -1
  110. package/plugins/lisa-typescript-agy/plugin.json +1 -1
  111. package/plugins/lisa-typescript-copilot/.claude-plugin/plugin.json +1 -1
  112. package/plugins/lisa-typescript-cursor/.claude-plugin/plugin.json +1 -1
  113. package/plugins/lisa-wiki/.claude-plugin/plugin.json +1 -1
  114. package/plugins/lisa-wiki/.codex-plugin/plugin.json +1 -1
  115. package/plugins/lisa-wiki-agy/plugin.json +1 -1
  116. package/plugins/lisa-wiki-copilot/.claude-plugin/plugin.json +1 -1
  117. package/plugins/lisa-wiki-cursor/.claude-plugin/plugin.json +1 -1
  118. package/plugins/src/base/commands/setup/sonar.md +7 -0
  119. package/plugins/src/base/rules/reference/integration-access-layer.md +10 -2
  120. package/plugins/src/base/skills/lisa-analyze-claude-remote/SKILL.md +6 -6
  121. package/plugins/src/base/skills/lisa-generate-claude-remote-build-script/SKILL.md +14 -6
  122. package/plugins/src/base/skills/lisa-persist-learning/SKILL.md +14 -0
  123. package/plugins/src/base/skills/lisa-setup-sonar/SKILL.md +108 -0
  124. package/plugins/src/base/skills/lisa-sonarcloud-access/SKILL.md +52 -47
@@ -126,6 +126,35 @@ function validateKaneConfig(value, source) {
126
126
  ...(timeoutSeconds === undefined ? {} : { timeoutSeconds }),
127
127
  };
128
128
  }
129
+ /**
130
+ * Validate the optional SonarQube MCP provider config (single Sonar substrate).
131
+ * @param value - Untrusted sonar value
132
+ * @param source - Config source shown in errors
133
+ * @returns Valid sonar config or undefined
134
+ */
135
+ function validateSonarConfig(value, source) {
136
+ if (value === undefined)
137
+ return undefined;
138
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
139
+ throw new Error(`Invalid verification.sonar in ${source}: expected an object`);
140
+ }
141
+ const input = value;
142
+ const enabled = optionalBoolean(input.enabled, source, "verification.sonar.enabled");
143
+ const edition = optionalString(input.edition, source, "verification.sonar.edition");
144
+ if (edition !== undefined && edition !== "cloud" && edition !== "server") {
145
+ throw new Error(`Invalid verification.sonar.edition in ${source}: expected "cloud" or "server"`);
146
+ }
147
+ const organization = optionalString(input.organization, source, "verification.sonar.organization");
148
+ const projectKey = optionalString(input.projectKey, source, "verification.sonar.projectKey");
149
+ const serverUrl = optionalString(input.serverUrl, source, "verification.sonar.serverUrl");
150
+ return {
151
+ ...(enabled === undefined ? {} : { enabled }),
152
+ ...(edition === undefined ? {} : { edition }),
153
+ ...(organization === undefined ? {} : { organization }),
154
+ ...(projectKey === undefined ? {} : { projectKey }),
155
+ ...(serverUrl === undefined ? {} : { serverUrl }),
156
+ };
157
+ }
129
158
  /**
130
159
  * Validate the optional verification tree.
131
160
  * @param value - Untrusted verification value
@@ -138,15 +167,18 @@ export function validateVerificationConfig(value, source) {
138
167
  if (value === null || typeof value !== "object" || Array.isArray(value)) {
139
168
  throw new Error(`Invalid verification in ${source}: expected an object`);
140
169
  }
141
- const browser = value.browser;
170
+ const record = value;
171
+ const sonar = validateSonarConfig(record.sonar, source);
172
+ const sonarPart = sonar === undefined ? {} : { sonar };
173
+ const browser = record.browser;
142
174
  if (browser === undefined)
143
- return {};
175
+ return sonarPart;
144
176
  if (browser === null ||
145
177
  typeof browser !== "object" ||
146
178
  Array.isArray(browser)) {
147
179
  throw new Error(`Invalid verification.browser in ${source}: expected an object`);
148
180
  }
149
181
  const kane = validateKaneConfig(browser.kane, source);
150
- return { browser: kane === undefined ? {} : { kane } };
182
+ return { browser: kane === undefined ? {} : { kane }, ...sonarPart };
151
183
  }
152
184
  //# sourceMappingURL=project-config-kane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-config-kane.js","sourceRoot":"","sources":["../../src/core/project-config-kane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config-kane.js","sourceRoot":"","sources":["../../src/core/project-config-kane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /** Outcome of a single read-only `sonar` CLI probe. */
2
+ export interface SonarProbeResult {
3
+ /** True when the command exited zero. */
4
+ readonly ok: boolean;
5
+ }
6
+ /** Injectable fixed-argv `sonar` CLI runner. */
7
+ export type SonarCommandRunner = (args: readonly string[]) => Promise<SonarProbeResult>;
8
+ /** Readiness status for the optional Sonar provider. */
9
+ export interface SonarReadiness {
10
+ readonly status: "ready" | "warn" | "fail" | "disabled";
11
+ readonly detail: string;
12
+ }
13
+ /**
14
+ * Run a fixed-argv read-only `sonar` command without a shell.
15
+ * @param args - Fixed argument vector
16
+ * @returns Whether the command exited zero
17
+ */
18
+ export declare const runSonarCommand: SonarCommandRunner;
19
+ /**
20
+ * Probe readiness of the official SonarQube MCP provider.
21
+ *
22
+ * Disabled (no `verification.sonar.enabled`) is healthy — the provider is
23
+ * optional. When enabled, prove the `sonar` CLI is installed and authenticated
24
+ * (`sonar auth status`, which honors either a login session or `SONARQUBE_TOKEN`).
25
+ * @param projectRoot - Downstream project root
26
+ * @param runner - Injectable process runner
27
+ * @returns Readiness status for doctor and setup
28
+ */
29
+ export declare function probeSonarReadiness(projectRoot: string, runner?: SonarCommandRunner): Promise<SonarReadiness>;
30
+ //# sourceMappingURL=sonar-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonar-integration.d.ts","sourceRoot":"","sources":["../../src/core/sonar-integration.ts"],"names":[],"mappings":"AAOA,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;CACtB;AAED,gDAAgD;AAChD,MAAM,MAAM,kBAAkB,GAAG,CAC/B,IAAI,EAAE,SAAS,MAAM,EAAE,KACpB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,kBAO7B,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,kBAAoC,GAC3C,OAAO,CAAC,cAAc,CAAC,CA2BzB"}
@@ -0,0 +1,55 @@
1
+ /** Lisa readiness probe for the official SonarQube MCP provider. */
2
+ import { execFile } from "node:child_process";
3
+ import { promisify } from "node:util";
4
+ import { readProjectConfig } from "./project-config.js";
5
+ const execFileAsync = promisify(execFile);
6
+ /**
7
+ * Run a fixed-argv read-only `sonar` command without a shell.
8
+ * @param args - Fixed argument vector
9
+ * @returns Whether the command exited zero
10
+ */
11
+ export const runSonarCommand = async (args) => {
12
+ try {
13
+ await execFileAsync("sonar", [...args], { timeout: 15_000 });
14
+ return { ok: true };
15
+ }
16
+ catch {
17
+ return { ok: false };
18
+ }
19
+ };
20
+ /**
21
+ * Probe readiness of the official SonarQube MCP provider.
22
+ *
23
+ * Disabled (no `verification.sonar.enabled`) is healthy — the provider is
24
+ * optional. When enabled, prove the `sonar` CLI is installed and authenticated
25
+ * (`sonar auth status`, which honors either a login session or `SONARQUBE_TOKEN`).
26
+ * @param projectRoot - Downstream project root
27
+ * @param runner - Injectable process runner
28
+ * @returns Readiness status for doctor and setup
29
+ */
30
+ export async function probeSonarReadiness(projectRoot, runner = runSonarCommand) {
31
+ const config = (await readProjectConfig(projectRoot)).verification?.sonar;
32
+ if (config?.enabled !== true) {
33
+ return {
34
+ status: "disabled",
35
+ detail: "SonarQube MCP provider is not enabled",
36
+ };
37
+ }
38
+ const version = await runner(["--version"]);
39
+ if (!version.ok) {
40
+ return {
41
+ status: "fail",
42
+ detail: "SonarQube CLI unavailable; run /lisa:setup:sonar to install and wire it",
43
+ };
44
+ }
45
+ const auth = await runner(["auth", "status"]);
46
+ if (!auth.ok) {
47
+ return {
48
+ status: "fail",
49
+ detail: "SonarQube CLI not authenticated; run `sonar auth login` or set SONARQUBE_TOKEN (+ SONARQUBE_ORG for Cloud / SONARQUBE_URL for Server)",
50
+ };
51
+ }
52
+ const target = config.projectKey ?? config.organization ?? "the configured project";
53
+ return { status: "ready", detail: `SonarQube MCP ready for ${target}` };
54
+ }
55
+ //# sourceMappingURL=sonar-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonar-integration.js","sourceRoot":"","sources":["../../src/core/sonar-integration.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAmB1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAuB,KAAK,EAAC,IAAI,EAAC,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,SAA6B,eAAe;IAE5C,MAAM,MAAM,GAAG,CAAC,MAAM,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC;IAC1E,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE,uCAAuC;SAChD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EACJ,yEAAyE;SAC5E,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,MAAM;YACd,MAAM,EACJ,uIAAuI;SAC1I,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GACV,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,YAAY,IAAI,wBAAwB,CAAC;IACvE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,2BAA2B,MAAM,EAAE,EAAE,CAAC;AAC1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4hEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAsvMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
1
+ {"version":3,"file":"upstream-evidence-manifest.d.ts","sourceRoot":"","sources":["../../src/core/upstream-evidence-manifest.ts"],"names":[],"mappings":"AACA,iFAAiF;AACjF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgiEpE,CAAC;AAEL,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAywMjE,CAAC;AAEL,sFAAsF;AACtF,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAk6I/D,CAAC"}
@@ -273,6 +273,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
273
273
  "plugins/src/base/commands/setup/jira.md": "6eb95e989b25fe2ed72ec7d361a66b1c7eece6b9950ac0e841d00f6fd8f16d8a",
274
274
  "plugins/src/base/commands/setup/linear.md": "5c25e3140d40140b5b6024de64a0bb808c48d966d88537baa0a37444cc043dbb",
275
275
  "plugins/src/base/commands/setup/notion.md": "2d705679db0dbb6c77728592a020430a529af9d0ef24ac7c434969d590d9f5a6",
276
+ "plugins/src/base/commands/setup/sonar.md": "d79ffe15f5fc340a5c5ffcaff4c9a7893391b4129df592a45d2b0c7e508e8c44",
276
277
  "plugins/src/base/commands/sync-down.md": "4e974cb9745a4fd680f4a55f859d31fa8cf3cb28afa739b40a2e1a99de31e034",
277
278
  "plugins/src/base/commands/tear-down-automations.md": "969f28850326f0ceab5c09763266c60265951db30e88c738d2425ff82f088aac",
278
279
  "plugins/src/base/commands/track.md": "ae655031c3698f9bf449c4b9d8654cfab2586ca82164a710ae3f66be37c831fb",
@@ -349,7 +350,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
349
350
  "plugins/src/base/rules/reference/empirical-inquiry.md": "85f4552aa4c561677de40fd01bc6cccf5dbcf13865647db9df819d11f3cc3389",
350
351
  "plugins/src/base/rules/reference/factory-model.md": "b28a2ea4df7c33390111667a2807d9003cf8c9a14829f6fb0dbc929b05bfed3a",
351
352
  "plugins/src/base/rules/reference/history-audit.md": "20a46390f71fadda499c61193d430c3d53df49b55a4cefa50a112f82fa4b05ef",
352
- "plugins/src/base/rules/reference/integration-access-layer.md": "afad63926db452c7d32b473480abda647a4388182c96ed3bfa384eb5ad5f0424",
353
+ "plugins/src/base/rules/reference/integration-access-layer.md": "be38ab7dd57eeda554f1d984c719516badef496b8a228a74144ff4d63bdfcd71",
353
354
  "plugins/src/base/rules/reference/intent-routing.md": "8d2750f30b82ff9a84c5273954b0055e37bc305e3e83e4aef50f5ce47942df45",
354
355
  "plugins/src/base/rules/reference/leaf-only-lifecycle.md": "3d6d531fdca61a348fa1dd1bdb4c28fe66c85fb955238ef668a78cce4a36a7a1",
355
356
  "plugins/src/base/rules/reference/observability-audit.md": "98cf4c849baf0801bd2c46a90e7a072196649d506fbda577cc5c4019d2194551",
@@ -387,7 +388,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
387
388
  "plugins/src/base/skills/lisa-acceptance-criteria/SKILL.md": "b4289ec04de657f0eeefaed56939fa171c2f8a11086bd225db39130f4a609e95",
388
389
  "plugins/src/base/skills/lisa-agent-design-best-practices/SKILL.md": "5c7414198d5c747d2cda554c85784164afb2f6fe04fd28fb4d7674857dfd4801",
389
390
  "plugins/src/base/skills/lisa-agent-ready/SKILL.md": "13f2e0f50287a04ed9a036ef1c547563b5f6f6325b2b35f6746d46a5ed4d15df",
390
- "plugins/src/base/skills/lisa-analyze-claude-remote/SKILL.md": "a57efbb0d7f5c76b96d39633b8a8a6109ecc27791411b1f8dd2903d7256432a0",
391
+ "plugins/src/base/skills/lisa-analyze-claude-remote/SKILL.md": "661ddf014a60ff4bf16b2ef6582cb5eb94d14fddcdeeeb69ca1f1fabe269e347",
391
392
  "plugins/src/base/skills/lisa-atlassian-access/SKILL.md": "f58707d8689764ac68c79dbe5b6c548e2933cc656c5f4df03ae71c863f61b022",
392
393
  "plugins/src/base/skills/lisa-atlassian-access/scripts/markdown-to-adf.mjs": "538e5a3d91482b9e2a055e133b7c1fcf809be51d4ae72a10776aaeeb8df4832a",
393
394
  "plugins/src/base/skills/lisa-attribute-failure/SKILL.md": "5d737b9fda916f02aaf13b208316cd54995d83aa06d27ba5daa19b6ebed6b4d9",
@@ -406,7 +407,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
406
407
  "plugins/src/base/skills/lisa-epic-triage/SKILL.md": "d02760411249bddbd396f283191fe3e82bb7b95bf9393a19a7025dc5a57c3ab7",
407
408
  "plugins/src/base/skills/lisa-exploratory-qa/SKILL.md": "bc34dfc6418bff6eb5bc03f0c5cd98c7b6164ca3f4f80774d981f681321119b0",
408
409
  "plugins/src/base/skills/lisa-fix-linter-error/SKILL.md": "3a8f01f014ac7f7ac37024c67df1ba07202331542d269d27da3356a7fa0a5599",
409
- "plugins/src/base/skills/lisa-generate-claude-remote-build-script/SKILL.md": "f10aae4fabebbb139244fe14594d0675c3c52690ee341bf15f3bca29ff214de4",
410
+ "plugins/src/base/skills/lisa-generate-claude-remote-build-script/SKILL.md": "632ed5f64c4014d9f2d1baebdb63f7a2e0e75e285f5eab1187805c8afe7ffe07",
410
411
  "plugins/src/base/skills/lisa-git-commit/SKILL.md": "56320566e9278fb43b4d51c00854f3714dc61edc960292d51962a6f49116ac0f",
411
412
  "plugins/src/base/skills/lisa-git-prune/SKILL.md": "11fad06d109538f1a8ee4ef8043bb0e083672e3c9a7cb7ae8a7233c5411d6dd2",
412
413
  "plugins/src/base/skills/lisa-git-submit-pr/SKILL.md": "e70da3ced1a233ff094f70284c5e2ff9ff238b8c59b3eee722414dfe8a668406",
@@ -485,7 +486,7 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
485
486
  "plugins/src/base/skills/lisa-parity-sentry-seer/SKILL.md": "f44216fa7c8f0c3c3371c65ff73bbeadd1717579502a5603f16b3b33291cab7a",
486
487
  "plugins/src/base/skills/lisa-parity-skill-creator/SKILL.md": "616e0493f75fe92c18137548d7c86a91a9b04d9844ca76fa3f14156e3e7814e5",
487
488
  "plugins/src/base/skills/lisa-performance-review/SKILL.md": "351542c256e54940e6d672a70606b8414425c6435ae6f026841bcc02f9fce9c4",
488
- "plugins/src/base/skills/lisa-persist-learning/SKILL.md": "79fe00903541330b7ca088ad3fde4fec32a2cff8954974bf0bd71910e0ff0eb8",
489
+ "plugins/src/base/skills/lisa-persist-learning/SKILL.md": "d682b944ae099cdad8c91762b6665b8ef613b58bb8b041335841c116c94dd891",
489
490
  "plugins/src/base/skills/lisa-plan/SKILL.md": "9c372e106afd53ff988046119cf36b0f6519c4426775dd8ad3c9d9baeee5d3e2",
490
491
  "plugins/src/base/skills/lisa-plugin-sync-explain/SKILL.md": "b41619f3d0d342af2438afd54cb97db7d2445e54e3fc7bb012292079acbc6a4f",
491
492
  "plugins/src/base/skills/lisa-posthog-access/SKILL.md": "977aef803160b04312c0408136882ac106d8357caf5063a523e72f265bf20cb1",
@@ -527,7 +528,8 @@ export const UPSTREAM_EVIDENCE_MANIFEST = Object.freeze({
527
528
  "plugins/src/base/skills/lisa-setup-linear/SKILL.md": "ec76f832a6df6f58b163f7f5ba6826ed2fcbddc91e44a8372e874858e4d0c518",
528
529
  "plugins/src/base/skills/lisa-setup-notion/SKILL.md": "f5a1e9290789fd1c33675168d30461fb24a11c98a433ef777c1f536bc2f905ef",
529
530
  "plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": "7a134f6ce7857152076c2a85e0777d88f1f22b0ecfe607dd2fc6f8a286547910",
530
- "plugins/src/base/skills/lisa-sonarcloud-access/SKILL.md": "924b6f54e38bf000625fcbecef828e78f7b4a401c36a5353b7c22ff12d530d5c",
531
+ "plugins/src/base/skills/lisa-setup-sonar/SKILL.md": "a00ec455df6aeb6e5b436acc0265fcfa4659a546dec2e8ae2b1c8eca488bf9d7",
532
+ "plugins/src/base/skills/lisa-sonarcloud-access/SKILL.md": "e0124aab451021f39dc3b4edfa74f5f9e32ef01d020b317531827a544150fb16",
531
533
  "plugins/src/base/skills/lisa-spec-conformance/SKILL.md": "3bcaf6d3b47917d00732542e30a8a302c3e293a9957faf79cac5b1d75cc538a2",
532
534
  "plugins/src/base/skills/lisa-sync-down/SKILL.md": "c32e6a4e3115ca32b7d335e90d0a73b243c6c631a2d192568423be0cb5944e84",
533
535
  "plugins/src/base/skills/lisa-task-decomposition/SKILL.md": "d4c8bd6b36d827e609178e5192270a21bb392aa825a902f61e33a9fe73cda10c",
@@ -1937,6 +1939,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
1937
1939
  "plugins/lisa-agy/commands/lisa/setup/jira.md": true,
1938
1940
  "plugins/lisa-agy/commands/lisa/setup/linear.md": true,
1939
1941
  "plugins/lisa-agy/commands/lisa/setup/notion.md": true,
1942
+ "plugins/lisa-agy/commands/lisa/setup/sonar.md": true,
1940
1943
  "plugins/lisa-agy/commands/lisa/sync-down.md": true,
1941
1944
  "plugins/lisa-agy/commands/lisa/tear-down-automations.md": true,
1942
1945
  "plugins/lisa-agy/commands/lisa/track.md": true,
@@ -2112,6 +2115,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2112
2115
  "plugins/lisa-agy/skills/lisa-setup-linear/SKILL.md": true,
2113
2116
  "plugins/lisa-agy/skills/lisa-setup-notion/SKILL.md": true,
2114
2117
  "plugins/lisa-agy/skills/lisa-setup-remote-aws/SKILL.md": true,
2118
+ "plugins/lisa-agy/skills/lisa-setup-sonar/SKILL.md": true,
2115
2119
  "plugins/lisa-agy/skills/lisa-sonarcloud-access/SKILL.md": true,
2116
2120
  "plugins/lisa-agy/skills/lisa-spec-conformance/SKILL.md": true,
2117
2121
  "plugins/lisa-agy/skills/lisa-sync-down/SKILL.md": true,
@@ -2244,6 +2248,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2244
2248
  "plugins/lisa-copilot/commands/lisa/setup/jira.md": true,
2245
2249
  "plugins/lisa-copilot/commands/lisa/setup/linear.md": true,
2246
2250
  "plugins/lisa-copilot/commands/lisa/setup/notion.md": true,
2251
+ "plugins/lisa-copilot/commands/lisa/setup/sonar.md": true,
2247
2252
  "plugins/lisa-copilot/commands/lisa/sync-down.md": true,
2248
2253
  "plugins/lisa-copilot/commands/lisa/tear-down-automations.md": true,
2249
2254
  "plugins/lisa-copilot/commands/lisa/track.md": true,
@@ -2489,6 +2494,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2489
2494
  "plugins/lisa-copilot/skills/lisa-setup-linear/SKILL.md": true,
2490
2495
  "plugins/lisa-copilot/skills/lisa-setup-notion/SKILL.md": true,
2491
2496
  "plugins/lisa-copilot/skills/lisa-setup-remote-aws/SKILL.md": true,
2497
+ "plugins/lisa-copilot/skills/lisa-setup-sonar/SKILL.md": true,
2492
2498
  "plugins/lisa-copilot/skills/lisa-sonarcloud-access/SKILL.md": true,
2493
2499
  "plugins/lisa-copilot/skills/lisa-spec-conformance/SKILL.md": true,
2494
2500
  "plugins/lisa-copilot/skills/lisa-sync-down/SKILL.md": true,
@@ -2606,6 +2612,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2606
2612
  "plugins/lisa-cursor/commands/lisa/setup/jira.md": true,
2607
2613
  "plugins/lisa-cursor/commands/lisa/setup/linear.md": true,
2608
2614
  "plugins/lisa-cursor/commands/lisa/setup/notion.md": true,
2615
+ "plugins/lisa-cursor/commands/lisa/setup/sonar.md": true,
2609
2616
  "plugins/lisa-cursor/commands/lisa/sync-down.md": true,
2610
2617
  "plugins/lisa-cursor/commands/lisa/tear-down-automations.md": true,
2611
2618
  "plugins/lisa-cursor/commands/lisa/track.md": true,
@@ -2852,6 +2859,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
2852
2859
  "plugins/lisa-cursor/skills/lisa-setup-linear/SKILL.md": true,
2853
2860
  "plugins/lisa-cursor/skills/lisa-setup-notion/SKILL.md": true,
2854
2861
  "plugins/lisa-cursor/skills/lisa-setup-remote-aws/SKILL.md": true,
2862
+ "plugins/lisa-cursor/skills/lisa-setup-sonar/SKILL.md": true,
2855
2863
  "plugins/lisa-cursor/skills/lisa-sonarcloud-access/SKILL.md": true,
2856
2864
  "plugins/lisa-cursor/skills/lisa-spec-conformance/SKILL.md": true,
2857
2865
  "plugins/lisa-cursor/skills/lisa-sync-down/SKILL.md": true,
@@ -4856,6 +4864,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
4856
4864
  "plugins/lisa/.codex-plugin/skills/lisa-setup-notion/agents/openai.yaml": true,
4857
4865
  "plugins/lisa/.codex-plugin/skills/lisa-setup-remote-aws/SKILL.md": true,
4858
4866
  "plugins/lisa/.codex-plugin/skills/lisa-setup-remote-aws/agents/openai.yaml": true,
4867
+ "plugins/lisa/.codex-plugin/skills/lisa-setup-sonar/SKILL.md": true,
4868
+ "plugins/lisa/.codex-plugin/skills/lisa-setup-sonar/agents/openai.yaml": true,
4859
4869
  "plugins/lisa/.codex-plugin/skills/lisa-sonarcloud-access/SKILL.md": true,
4860
4870
  "plugins/lisa/.codex-plugin/skills/lisa-sonarcloud-access/agents/openai.yaml": true,
4861
4871
  "plugins/lisa/.codex-plugin/skills/lisa-spec-conformance/SKILL.md": true,
@@ -5003,6 +5013,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5003
5013
  "plugins/lisa/commands/setup/jira.md": true,
5004
5014
  "plugins/lisa/commands/setup/linear.md": true,
5005
5015
  "plugins/lisa/commands/setup/notion.md": true,
5016
+ "plugins/lisa/commands/setup/sonar.md": true,
5006
5017
  "plugins/lisa/commands/sync-down.md": true,
5007
5018
  "plugins/lisa/commands/tear-down-automations.md": true,
5008
5019
  "plugins/lisa/commands/track.md": true,
@@ -5388,6 +5399,8 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5388
5399
  "plugins/lisa/skills/lisa-setup-notion/agents/openai.yaml": true,
5389
5400
  "plugins/lisa/skills/lisa-setup-remote-aws/SKILL.md": true,
5390
5401
  "plugins/lisa/skills/lisa-setup-remote-aws/agents/openai.yaml": true,
5402
+ "plugins/lisa/skills/lisa-setup-sonar/SKILL.md": true,
5403
+ "plugins/lisa/skills/lisa-setup-sonar/agents/openai.yaml": true,
5391
5404
  "plugins/lisa/skills/lisa-sonarcloud-access/SKILL.md": true,
5392
5405
  "plugins/lisa/skills/lisa-sonarcloud-access/agents/openai.yaml": true,
5393
5406
  "plugins/lisa/skills/lisa-spec-conformance/SKILL.md": true,
@@ -5535,6 +5548,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5535
5548
  "plugins/src/base/commands/setup/jira.md": true,
5536
5549
  "plugins/src/base/commands/setup/linear.md": true,
5537
5550
  "plugins/src/base/commands/setup/notion.md": true,
5551
+ "plugins/src/base/commands/setup/sonar.md": true,
5538
5552
  "plugins/src/base/commands/sync-down.md": true,
5539
5553
  "plugins/src/base/commands/tear-down-automations.md": true,
5540
5554
  "plugins/src/base/commands/track.md": true,
@@ -5789,6 +5803,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
5789
5803
  "plugins/src/base/skills/lisa-setup-linear/SKILL.md": true,
5790
5804
  "plugins/src/base/skills/lisa-setup-notion/SKILL.md": true,
5791
5805
  "plugins/src/base/skills/lisa-setup-remote-aws/SKILL.md": true,
5806
+ "plugins/src/base/skills/lisa-setup-sonar/SKILL.md": true,
5792
5807
  "plugins/src/base/skills/lisa-sonarcloud-access/SKILL.md": true,
5793
5808
  "plugins/src/base/skills/lisa-spec-conformance/SKILL.md": true,
5794
5809
  "plugins/src/base/skills/lisa-sync-down/SKILL.md": true,
@@ -6330,6 +6345,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6330
6345
  "src/cli/doctor-readiness-workflows.ts": true,
6331
6346
  "src/cli/doctor-readiness-workspaces.ts": true,
6332
6347
  "src/cli/doctor-readiness.ts": true,
6348
+ "src/cli/doctor-sonar.ts": true,
6333
6349
  "src/cli/doctor-worker-epoch.ts": true,
6334
6350
  "src/cli/doctor-worker-journey.ts": true,
6335
6351
  "src/cli/doctor.ts": true,
@@ -6460,6 +6476,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6460
6476
  "src/core/project-config-kane.ts": true,
6461
6477
  "src/core/project-config.ts": true,
6462
6478
  "src/core/self-apply.ts": true,
6479
+ "src/core/sonar-integration.ts": true,
6463
6480
  "src/core/template-ownership.ts": true,
6464
6481
  "src/core/upstream-attribution-body.ts": true,
6465
6482
  "src/detection/detector.interface.ts": true,
@@ -6525,6 +6542,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6525
6542
  "src/opencode/settings-installer.ts": true,
6526
6543
  "src/opencode/skills-installer.ts": true,
6527
6544
  "src/opencode/support-file-resolver.ts": true,
6545
+ "src/sonar/sonar-installer.ts": true,
6528
6546
  "src/standards/capture.ts": true,
6529
6547
  "src/standards/contract.ts": true,
6530
6548
  "src/standards/git-state.ts": true,
@@ -6696,6 +6714,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6696
6714
  "tests/unit/cli/doctor-readiness-supply-chain.test.ts": true,
6697
6715
  "tests/unit/cli/doctor-readiness-workflows.test.ts": true,
6698
6716
  "tests/unit/cli/doctor-readiness.test.ts": true,
6717
+ "tests/unit/cli/doctor-sonar.test.ts": true,
6699
6718
  "tests/unit/cli/doctor-worker-epoch.test.ts": true,
6700
6719
  "tests/unit/cli/doctor-worker-journey.test.ts": true,
6701
6720
  "tests/unit/cli/doctor.test.ts": true,
@@ -6821,6 +6840,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6821
6840
  "tests/unit/core/role-agent-template-contract.test.ts": true,
6822
6841
  "tests/unit/core/self-apply.test.ts": true,
6823
6842
  "tests/unit/core/skill-frontmatter-contract.test.ts": true,
6843
+ "tests/unit/core/sonar-integration.test.ts": true,
6824
6844
  "tests/unit/core/upstream-attribution-body-hardening.test.ts": true,
6825
6845
  "tests/unit/core/upstream-attribution-body.test.ts": true,
6826
6846
  "tests/unit/core/upstream-attribution-file-safety.test.ts": true,
@@ -6918,6 +6938,7 @@ export const UPSTREAM_SURFACE_MANIFEST = Object.freeze({
6918
6938
  "tests/unit/scripts/threshold-ratchet.test.ts": true,
6919
6939
  "tests/unit/scripts/upstream-evidence-manifest.test.ts": true,
6920
6940
  "tests/unit/scripts/verification-coverage.test.ts": true,
6941
+ "tests/unit/sonar/sonar-installer.test.ts": true,
6921
6942
  "tests/unit/standards/capture.test.ts": true,
6922
6943
  "tests/unit/standards/contract.test.ts": true,
6923
6944
  "tests/unit/standards/git-state.test.ts": true,