@diff-review-system/drs 2.2.1 → 3.0.0-rc.1

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 (240) hide show
  1. package/README.md +228 -92
  2. package/dist/ci/runner.d.ts.map +1 -1
  3. package/dist/ci/runner.js +19 -22
  4. package/dist/ci/runner.js.map +1 -1
  5. package/dist/cli/describe-mr.d.ts.map +1 -1
  6. package/dist/cli/describe-mr.js +39 -20
  7. package/dist/cli/describe-mr.js.map +1 -1
  8. package/dist/cli/describe-pr.d.ts.map +1 -1
  9. package/dist/cli/describe-pr.js +39 -20
  10. package/dist/cli/describe-pr.js.map +1 -1
  11. package/dist/cli/index.js +11 -7
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/cli/init.d.ts.map +1 -1
  14. package/dist/cli/init.js +30 -2
  15. package/dist/cli/init.js.map +1 -1
  16. package/dist/cli/post-comments.d.ts.map +1 -1
  17. package/dist/cli/post-comments.js +5 -5
  18. package/dist/cli/post-comments.js.map +1 -1
  19. package/dist/cli/review-local.d.ts.map +1 -1
  20. package/dist/cli/review-local.integration.test.d.ts +2 -0
  21. package/dist/cli/review-local.integration.test.d.ts.map +1 -0
  22. package/dist/cli/review-local.integration.test.js +343 -0
  23. package/dist/cli/review-local.integration.test.js.map +1 -0
  24. package/dist/cli/review-local.js +5 -4
  25. package/dist/cli/review-local.js.map +1 -1
  26. package/dist/cli/review-local.live.e2e.test.d.ts +2 -0
  27. package/dist/cli/review-local.live.e2e.test.d.ts.map +1 -0
  28. package/dist/cli/review-local.live.e2e.test.js +154 -0
  29. package/dist/cli/review-local.live.e2e.test.js.map +1 -0
  30. package/dist/cli/review-local.test.d.ts +2 -0
  31. package/dist/cli/review-local.test.d.ts.map +1 -0
  32. package/dist/cli/review-local.test.js +164 -0
  33. package/dist/cli/review-local.test.js.map +1 -0
  34. package/dist/cli/review-mr.d.ts +1 -1
  35. package/dist/cli/review-mr.d.ts.map +1 -1
  36. package/dist/cli/review-mr.js +92 -17
  37. package/dist/cli/review-mr.js.map +1 -1
  38. package/dist/cli/review-mr.test.d.ts +2 -0
  39. package/dist/cli/review-mr.test.d.ts.map +1 -0
  40. package/dist/cli/review-mr.test.js +142 -0
  41. package/dist/cli/review-mr.test.js.map +1 -0
  42. package/dist/cli/review-pr.d.ts +1 -1
  43. package/dist/cli/review-pr.d.ts.map +1 -1
  44. package/dist/cli/review-pr.js +96 -13
  45. package/dist/cli/review-pr.js.map +1 -1
  46. package/dist/cli/review-pr.test.d.ts +2 -0
  47. package/dist/cli/review-pr.test.d.ts.map +1 -0
  48. package/dist/cli/review-pr.test.js +137 -0
  49. package/dist/cli/review-pr.test.js.map +1 -0
  50. package/dist/cli/show-changes.js +4 -4
  51. package/dist/github/platform-adapter.js +2 -2
  52. package/dist/gitlab/client.js +1 -1
  53. package/dist/lib/code-quality-report.js +1 -1
  54. package/dist/lib/comment-formatter.d.ts +2 -1
  55. package/dist/lib/comment-formatter.d.ts.map +1 -1
  56. package/dist/lib/comment-formatter.js +33 -1
  57. package/dist/lib/comment-formatter.js.map +1 -1
  58. package/dist/lib/comment-formatter.test.js +43 -0
  59. package/dist/lib/comment-formatter.test.js.map +1 -1
  60. package/dist/lib/comment-manager.d.ts.map +1 -1
  61. package/dist/lib/comment-manager.js +4 -3
  62. package/dist/lib/comment-manager.js.map +1 -1
  63. package/dist/lib/comment-poster.d.ts +2 -1
  64. package/dist/lib/comment-poster.d.ts.map +1 -1
  65. package/dist/lib/comment-poster.js +2 -2
  66. package/dist/lib/comment-poster.js.map +1 -1
  67. package/dist/lib/comment-poster.test.js +27 -11
  68. package/dist/lib/comment-poster.test.js.map +1 -1
  69. package/dist/lib/config-model-overrides.test.d.ts +1 -1
  70. package/dist/lib/config-model-overrides.test.js +2 -2
  71. package/dist/lib/config-model-overrides.test.js.map +1 -1
  72. package/dist/lib/config.d.ts +34 -7
  73. package/dist/lib/config.d.ts.map +1 -1
  74. package/dist/lib/config.js +35 -13
  75. package/dist/lib/config.js.map +1 -1
  76. package/dist/lib/config.test.js +16 -0
  77. package/dist/lib/config.test.js.map +1 -1
  78. package/dist/lib/context-compression.d.ts +27 -1
  79. package/dist/lib/context-compression.d.ts.map +1 -1
  80. package/dist/lib/context-compression.js +106 -4
  81. package/dist/lib/context-compression.js.map +1 -1
  82. package/dist/lib/context-compression.test.js +305 -1
  83. package/dist/lib/context-compression.test.js.map +1 -1
  84. package/dist/lib/context-loader.d.ts +3 -2
  85. package/dist/lib/context-loader.d.ts.map +1 -1
  86. package/dist/lib/context-loader.js +11 -11
  87. package/dist/lib/context-loader.js.map +1 -1
  88. package/dist/lib/description-executor.d.ts +19 -2
  89. package/dist/lib/description-executor.d.ts.map +1 -1
  90. package/dist/lib/description-executor.js +52 -21
  91. package/dist/lib/description-executor.js.map +1 -1
  92. package/dist/lib/description-executor.test.d.ts +2 -0
  93. package/dist/lib/description-executor.test.d.ts.map +1 -0
  94. package/dist/lib/description-executor.test.js +120 -0
  95. package/dist/lib/description-executor.test.js.map +1 -0
  96. package/dist/lib/description-formatter.d.ts +8 -3
  97. package/dist/lib/description-formatter.d.ts.map +1 -1
  98. package/dist/lib/description-formatter.js +88 -13
  99. package/dist/lib/description-formatter.js.map +1 -1
  100. package/dist/lib/description-formatter.test.d.ts +2 -0
  101. package/dist/lib/description-formatter.test.d.ts.map +1 -0
  102. package/dist/lib/description-formatter.test.js +57 -0
  103. package/dist/lib/description-formatter.test.js.map +1 -0
  104. package/dist/lib/diff-parser.test.d.ts +2 -0
  105. package/dist/lib/diff-parser.test.d.ts.map +1 -0
  106. package/dist/lib/diff-parser.test.js +335 -0
  107. package/dist/lib/diff-parser.test.js.map +1 -0
  108. package/dist/lib/exit.d.ts +35 -0
  109. package/dist/lib/exit.d.ts.map +1 -0
  110. package/dist/lib/exit.js +53 -0
  111. package/dist/lib/exit.js.map +1 -0
  112. package/dist/lib/exit.test.d.ts +2 -0
  113. package/dist/lib/exit.test.d.ts.map +1 -0
  114. package/dist/lib/exit.test.js +120 -0
  115. package/dist/lib/exit.test.js.map +1 -0
  116. package/dist/lib/format-utils.d.ts +3 -0
  117. package/dist/lib/format-utils.d.ts.map +1 -0
  118. package/dist/lib/format-utils.js +7 -0
  119. package/dist/lib/format-utils.js.map +1 -0
  120. package/dist/lib/json-output.d.ts +4 -1
  121. package/dist/lib/json-output.d.ts.map +1 -1
  122. package/dist/lib/json-output.js +2 -1
  123. package/dist/lib/json-output.js.map +1 -1
  124. package/dist/lib/json-output.test.d.ts +2 -0
  125. package/dist/lib/json-output.test.d.ts.map +1 -0
  126. package/dist/lib/json-output.test.js +135 -0
  127. package/dist/lib/json-output.test.js.map +1 -0
  128. package/dist/lib/logger.d.ts +10 -2
  129. package/dist/lib/logger.d.ts.map +1 -1
  130. package/dist/lib/logger.js +22 -4
  131. package/dist/lib/logger.js.map +1 -1
  132. package/dist/lib/logger.test.d.ts +2 -0
  133. package/dist/lib/logger.test.d.ts.map +1 -0
  134. package/dist/lib/logger.test.js +324 -0
  135. package/dist/lib/logger.test.js.map +1 -0
  136. package/dist/lib/position-validator.test.d.ts +2 -0
  137. package/dist/lib/position-validator.test.d.ts.map +1 -0
  138. package/dist/lib/position-validator.test.js +128 -0
  139. package/dist/lib/position-validator.test.js.map +1 -0
  140. package/dist/lib/repository-validator.js +1 -1
  141. package/dist/lib/review-core.d.ts +9 -4
  142. package/dist/lib/review-core.d.ts.map +1 -1
  143. package/dist/lib/review-core.js +207 -112
  144. package/dist/lib/review-core.js.map +1 -1
  145. package/dist/lib/review-core.test.js +76 -30
  146. package/dist/lib/review-core.test.js.map +1 -1
  147. package/dist/lib/review-orchestrator.d.ts +12 -7
  148. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  149. package/dist/lib/review-orchestrator.js +78 -22
  150. package/dist/lib/review-orchestrator.js.map +1 -1
  151. package/dist/lib/review-orchestrator.test.js +160 -42
  152. package/dist/lib/review-orchestrator.test.js.map +1 -1
  153. package/dist/lib/review-parser.test.d.ts +2 -0
  154. package/dist/lib/review-parser.test.d.ts.map +1 -0
  155. package/dist/lib/review-parser.test.js +130 -0
  156. package/dist/lib/review-parser.test.js.map +1 -0
  157. package/dist/lib/review-usage.d.ts +32 -0
  158. package/dist/lib/review-usage.d.ts.map +1 -0
  159. package/dist/lib/review-usage.js +72 -0
  160. package/dist/lib/review-usage.js.map +1 -0
  161. package/dist/lib/review-usage.test.d.ts +2 -0
  162. package/dist/lib/review-usage.test.d.ts.map +1 -0
  163. package/dist/lib/review-usage.test.js +83 -0
  164. package/dist/lib/review-usage.test.js.map +1 -0
  165. package/dist/lib/unified-review-executor.d.ts +6 -2
  166. package/dist/lib/unified-review-executor.d.ts.map +1 -1
  167. package/dist/lib/unified-review-executor.js +54 -28
  168. package/dist/lib/unified-review-executor.js.map +1 -1
  169. package/dist/lib/unified-review-executor.test.js +138 -16
  170. package/dist/lib/unified-review-executor.test.js.map +1 -1
  171. package/dist/lib/write-json-output.test.d.ts +2 -0
  172. package/dist/lib/write-json-output.test.d.ts.map +1 -0
  173. package/dist/lib/write-json-output.test.js +259 -0
  174. package/dist/lib/write-json-output.test.js.map +1 -0
  175. package/dist/pi/sdk.d.ts +94 -0
  176. package/dist/pi/sdk.d.ts.map +1 -0
  177. package/dist/pi/sdk.js +486 -0
  178. package/dist/pi/sdk.js.map +1 -0
  179. package/dist/pi/sdk.test.d.ts +2 -0
  180. package/dist/pi/sdk.test.d.ts.map +1 -0
  181. package/dist/pi/sdk.test.js +331 -0
  182. package/dist/pi/sdk.test.js.map +1 -0
  183. package/dist/{opencode → runtime}/agent-loader.d.ts +7 -5
  184. package/dist/runtime/agent-loader.d.ts.map +1 -0
  185. package/dist/{opencode → runtime}/agent-loader.js +24 -19
  186. package/dist/runtime/agent-loader.js.map +1 -0
  187. package/dist/runtime/agent-loader.test.d.ts +2 -0
  188. package/dist/runtime/agent-loader.test.d.ts.map +1 -0
  189. package/dist/runtime/agent-loader.test.js +280 -0
  190. package/dist/runtime/agent-loader.test.js.map +1 -0
  191. package/dist/runtime/built-in-paths.d.ts +2 -0
  192. package/dist/runtime/built-in-paths.d.ts.map +1 -0
  193. package/dist/runtime/built-in-paths.js +14 -0
  194. package/dist/runtime/built-in-paths.js.map +1 -0
  195. package/dist/{opencode → runtime}/client.d.ts +35 -18
  196. package/dist/runtime/client.d.ts.map +1 -0
  197. package/dist/runtime/client.js +486 -0
  198. package/dist/runtime/client.js.map +1 -0
  199. package/dist/{opencode → runtime}/client.test.d.ts.map +1 -1
  200. package/dist/runtime/client.test.js +392 -0
  201. package/dist/runtime/client.test.js.map +1 -0
  202. package/dist/runtime/path-config.d.ts +8 -0
  203. package/dist/runtime/path-config.d.ts.map +1 -0
  204. package/dist/runtime/path-config.js +68 -0
  205. package/dist/runtime/path-config.js.map +1 -0
  206. package/dist/runtime/path-config.test.d.ts +2 -0
  207. package/dist/runtime/path-config.test.d.ts.map +1 -0
  208. package/dist/runtime/path-config.test.js +103 -0
  209. package/dist/runtime/path-config.test.js.map +1 -0
  210. package/package.json +5 -5
  211. package/.opencode/opencode.jsonc +0 -15
  212. package/.opencode/tool/write_json_output.ts +0 -24
  213. package/.opencode/tools/drs_skill.ts +0 -67
  214. package/dist/lib/skills-prompt.d.ts +0 -3
  215. package/dist/lib/skills-prompt.d.ts.map +0 -1
  216. package/dist/lib/skills-prompt.js +0 -70
  217. package/dist/lib/skills-prompt.js.map +0 -1
  218. package/dist/opencode/agent-loader.d.ts.map +0 -1
  219. package/dist/opencode/agent-loader.js.map +0 -1
  220. package/dist/opencode/client.d.ts.map +0 -1
  221. package/dist/opencode/client.js +0 -456
  222. package/dist/opencode/client.js.map +0 -1
  223. package/dist/opencode/client.test.js +0 -317
  224. package/dist/opencode/client.test.js.map +0 -1
  225. package/dist/opencode/opencode-paths.d.ts +0 -2
  226. package/dist/opencode/opencode-paths.d.ts.map +0 -1
  227. package/dist/opencode/opencode-paths.js +0 -7
  228. package/dist/opencode/opencode-paths.js.map +0 -1
  229. package/dist/opencode/skill-loader.d.ts +0 -15
  230. package/dist/opencode/skill-loader.d.ts.map +0 -1
  231. package/dist/opencode/skill-loader.js +0 -88
  232. package/dist/opencode/skill-loader.js.map +0 -1
  233. /package/{.opencode/agent → .pi/agents}/describe/pr-describer.md +0 -0
  234. /package/{.opencode/agent → .pi/agents}/review/documentation.md +0 -0
  235. /package/{.opencode/agent → .pi/agents}/review/performance.md +0 -0
  236. /package/{.opencode/agent → .pi/agents}/review/quality.md +0 -0
  237. /package/{.opencode/agent → .pi/agents}/review/security.md +0 -0
  238. /package/{.opencode/agent → .pi/agents}/review/style.md +0 -0
  239. /package/{.opencode/agent → .pi/agents}/review/unified-reviewer.md +0 -0
  240. /package/dist/{opencode → runtime}/client.test.d.ts +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@diff-review-system/drs",
3
- "version": "2.2.1",
3
+ "version": "3.0.0-rc.1",
4
4
  "description": "Intelligent code review platform for GitLab and GitHub - Enterprise-grade automated analysis",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,6 +13,7 @@
13
13
  "dev": "tsx watch src/cli/index.ts",
14
14
  "start": "node dist/cli/index.js",
15
15
  "test": "vitest run",
16
+ "test:e2e": "DRS_E2E_LIVE=1 vitest run src/cli/review-local.live.e2e.test.ts",
16
17
  "lint": "eslint 'src/**/*.ts'",
17
18
  "lint:fix": "eslint 'src/**/*.ts' --fix",
18
19
  "format": "prettier --write 'src/**/*.{ts,json}'",
@@ -25,7 +26,7 @@
25
26
  "dist",
26
27
  "README.md",
27
28
  "LICENSE",
28
- ".opencode"
29
+ ".pi"
29
30
  ],
30
31
  "repository": {
31
32
  "type": "git",
@@ -39,7 +40,7 @@
39
40
  "gitlab",
40
41
  "github",
41
42
  "code-review",
42
- "opencode",
43
+ "pi",
43
44
  "diff-review",
44
45
  "merge-request",
45
46
  "pull-request",
@@ -51,9 +52,8 @@
51
52
  "dependencies": {
52
53
  "@anthropic-ai/sdk": "^0.32.0",
53
54
  "@gitbeaker/node": "^35.8.1",
55
+ "@mariozechner/pi-coding-agent": "0.54.0",
54
56
  "@octokit/rest": "^21.0.0",
55
- "@opencode-ai/plugin": "1.2.6",
56
- "@opencode-ai/sdk": "1.2.6",
57
57
  "ajv": "^8.17.1",
58
58
  "chalk": "^5.3.0",
59
59
  "commander": "^12.0.0",
@@ -1,15 +0,0 @@
1
- {
2
- "$schema": "https://opencode.ai/config.json",
3
-
4
- // Tools available to DRS review agents
5
- // Note: Agent model configuration is done via .drs/drs.config.yaml
6
- "tools": {
7
- "Read": true,
8
- "Glob": true,
9
- "Grep": true,
10
- "Bash": true,
11
- "write_json_output": true,
12
- "Write": false,
13
- "Edit": false
14
- }
15
- }
@@ -1,24 +0,0 @@
1
- import { tool } from '@opencode-ai/plugin';
2
- import { writeJsonOutput } from '../../src/lib/write-json-output.js';
3
-
4
- export default tool({
5
- description: 'Write validated JSON output for DRS agents.',
6
- args: {
7
- outputType: tool.schema
8
- .enum(['describe_output', 'review_output'])
9
- .describe('The DRS output type to validate and write'),
10
- payload: tool.schema.any().describe('JSON value or JSON string to write'),
11
- pretty: tool.schema.boolean().optional().describe('Pretty-print JSON output'),
12
- indent: tool.schema
13
- .number()
14
- .int()
15
- .min(2)
16
- .max(8)
17
- .optional()
18
- .describe('Indent size when pretty-printing'),
19
- },
20
- async execute({ outputType, payload, pretty, indent }) {
21
- const pointer = await writeJsonOutput({ outputType, payload, pretty, indent });
22
- return JSON.stringify(pointer);
23
- },
24
- });
@@ -1,67 +0,0 @@
1
- import { existsSync, readFileSync } from 'node:fs';
2
- import { dirname, join } from 'node:path';
3
- import { tool } from '@opencode-ai/plugin';
4
-
5
- type SkillPayload = {
6
- _tool: 'drs_skill'; // Tool identifier for log parsing
7
- skill_name: string;
8
- instructions: string;
9
- base_directory: string;
10
- has_scripts: boolean;
11
- has_references: boolean;
12
- has_assets: boolean;
13
- };
14
-
15
- const skillFileNames = ['SKILL.md', 'skill.md'];
16
-
17
- function resolveSkillPath(skillRoot: string): string | null {
18
- for (const fileName of skillFileNames) {
19
- const candidate = join(skillRoot, fileName);
20
- if (existsSync(candidate)) {
21
- return candidate;
22
- }
23
- }
24
- return null;
25
- }
26
-
27
- function parseSkillInstructions(content: string): string {
28
- const frontmatterMatch = content.match(/^---\n[\s\S]*?\n---\n?/);
29
- if (!frontmatterMatch) {
30
- return content.trim();
31
- }
32
- return content.slice(frontmatterMatch[0].length).trim();
33
- }
34
-
35
- function readSkill(skillName: string): SkillPayload {
36
- const projectRoot = process.env.DRS_PROJECT_ROOT ?? process.cwd();
37
- const skillRoot = join(projectRoot, '.drs', 'skills', skillName);
38
- const skillPath = resolveSkillPath(skillRoot);
39
- if (!skillPath) {
40
- throw new Error(`Skill "${skillName}" not found in ${skillRoot}`);
41
- }
42
-
43
- const content = readFileSync(skillPath, 'utf-8');
44
- const instructions = parseSkillInstructions(content);
45
- const skillDir = dirname(skillPath);
46
- console.log(`[drs_skill] Loaded skill "${skillName}" from ${skillPath}`);
47
-
48
- return {
49
- _tool: 'drs_skill',
50
- skill_name: skillName,
51
- instructions,
52
- base_directory: skillDir,
53
- has_scripts: existsSync(join(skillDir, 'scripts')),
54
- has_references: existsSync(join(skillDir, 'references')),
55
- has_assets: existsSync(join(skillDir, 'assets')),
56
- };
57
- }
58
-
59
- export default tool({
60
- description: 'Load a DRS skill on-demand from .drs/skills.',
61
- args: {
62
- name: tool.schema.string().describe('Skill name to activate'),
63
- },
64
- async execute({ name }): Promise<SkillPayload> {
65
- return readSkill(name);
66
- },
67
- });
@@ -1,3 +0,0 @@
1
- import type { DRSConfig } from './config.js';
2
- export declare function buildSkillPromptSection(config: DRSConfig, agentName: string, projectRoot: string): string | null;
3
- //# sourceMappingURL=skills-prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-prompt.d.ts","sourceRoot":"","sources":["../../src/lib/skills-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAqE7C,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,IAAI,CAoBf"}
@@ -1,70 +0,0 @@
1
- import { getDefaultSkills, normalizeAgentConfig } from './config.js';
2
- import { loadProjectSkills } from '../opencode/skill-loader.js';
3
- const TOOL_NAME = 'drs_skill';
4
- function normalizeSkillList(skills) {
5
- if (!Array.isArray(skills)) {
6
- return [];
7
- }
8
- return skills.map(String).filter((skill) => skill.length > 0);
9
- }
10
- function resolveConfiguredSkills(config, agentName) {
11
- const normalizedAgents = normalizeAgentConfig(config.review.agents);
12
- const normalizedName = agentName.startsWith('review/') ? agentName.slice(7) : agentName;
13
- const entry = normalizedAgents.find((agent) => agent.name === normalizedName) ??
14
- normalizedAgents.find((agent) => agent.name === agentName);
15
- const defaultSkills = normalizeSkillList(getDefaultSkills(config));
16
- const agentSkills = entry ? normalizeSkillList(entry.skills) : [];
17
- const mergedSkills = new Set([...defaultSkills, ...agentSkills]);
18
- return Array.from(mergedSkills);
19
- }
20
- function buildAvailableSkillsXml(skills) {
21
- if (skills.length === 0) {
22
- return '<available_skills>\nNo skills available.\n</available_skills>';
23
- }
24
- const lines = ['<available_skills>'];
25
- for (const skill of skills) {
26
- const description = skill.description
27
- .replace(/&/g, '&amp;')
28
- .replace(/</g, '&lt;')
29
- .replace(/>/g, '&gt;');
30
- lines.push(' <skill>');
31
- lines.push(` <name>${skill.name}</name>`);
32
- lines.push(` <description>${description}</description>`);
33
- lines.push(' </skill>');
34
- }
35
- lines.push('</available_skills>');
36
- return lines.join('\n');
37
- }
38
- function buildAvailableSkillsText(skills) {
39
- if (skills.length === 0) {
40
- return 'No skills available.';
41
- }
42
- const lines = ['Available Skills:'];
43
- for (const skill of skills) {
44
- const description = skill.description ? `: ${skill.description}` : '';
45
- lines.push(`- ${skill.name}${description}`);
46
- }
47
- return lines.join('\n');
48
- }
49
- function buildSkillsPrompt(skills, format) {
50
- return format === 'xml' ? buildAvailableSkillsXml(skills) : buildAvailableSkillsText(skills);
51
- }
52
- export function buildSkillPromptSection(config, agentName, projectRoot) {
53
- const configuredSkills = resolveConfiguredSkills(config, agentName);
54
- if (configuredSkills.length === 0) {
55
- return null;
56
- }
57
- const promptFormat = config.review.default?.skillsPromptFormat === 'text' ? 'text' : 'xml';
58
- const projectSkills = new Map(loadProjectSkills(projectRoot).map((skill) => [skill.name, skill]));
59
- const availableSkills = configuredSkills
60
- .map((skillName) => projectSkills.get(skillName))
61
- .filter((skill) => Boolean(skill))
62
- .map((skill) => ({ name: skill.name, description: skill.description }));
63
- const missingSkills = configuredSkills.filter((skillName) => !projectSkills.has(skillName));
64
- if (missingSkills.length > 0) {
65
- console.warn(`⚠️ Missing skill definitions for: ${missingSkills.join(', ')}`);
66
- }
67
- const prompt = buildSkillsPrompt(availableSkills, promptFormat);
68
- return `# Skills\n\n${prompt}\n\nBefore reviewing, you MUST call the ${TOOL_NAME} tool for the most relevant skill based on the files changed and the type of work being reviewed.`;
69
- }
70
- //# sourceMappingURL=skills-prompt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills-prompt.js","sourceRoot":"","sources":["../../src/lib/skills-prompt.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-loader.d.ts","sourceRoot":"","sources":["../../src/opencode/agent-loader.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,CAuBvE;AAgGD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAGvF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,EAAE,CAGtE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAGxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-loader.js","sourceRoot":"","sources":["../../src/opencode/agent-loader.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlE,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAID,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAC,CAA6C;IACrE,OAAO,CAAC,MAAM,CAAC,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEpB,MAAM,EAAE,cAAc;IAMlC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4LjC;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmDpE;;OAEG;IACI,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC;IAyExE;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAQrE;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBpE;;OAEG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B;;OAEG;IACH,YAAY,IAAI,MAAM;IAOtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CA8B7B;AAgDD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAE3E;AAED;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CAIzB"}