@diff-review-system/drs 3.3.0 → 4.0.0-rc.4

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 (203) hide show
  1. package/.pi/agents/task/agents-md-updater.md +24 -0
  2. package/.pi/agents/task/changelog-updater.md +29 -0
  3. package/.pi/agents/task/review-issue-fixer.md +25 -0
  4. package/.pi/workflows/github-pr-describe-post.yaml +24 -0
  5. package/.pi/workflows/github-pr-describe.yaml +23 -0
  6. package/.pi/workflows/github-pr-post-comment.yaml +19 -0
  7. package/.pi/workflows/github-pr-review-post.yaml +32 -0
  8. package/.pi/workflows/github-pr-review.yaml +23 -0
  9. package/.pi/workflows/github-pr-show-changes.yaml +25 -0
  10. package/.pi/workflows/gitlab-mr-describe-post.yaml +22 -0
  11. package/.pi/workflows/gitlab-mr-describe.yaml +21 -0
  12. package/.pi/workflows/gitlab-mr-post-comment.yaml +17 -0
  13. package/.pi/workflows/gitlab-mr-review-code-quality.yaml +31 -0
  14. package/.pi/workflows/gitlab-mr-review-post-code-quality.yaml +40 -0
  15. package/.pi/workflows/gitlab-mr-review-post.yaml +30 -0
  16. package/.pi/workflows/gitlab-mr-review.yaml +21 -0
  17. package/.pi/workflows/gitlab-mr-show-changes.yaml +23 -0
  18. package/.pi/workflows/local-changelog-update.yaml +23 -0
  19. package/.pi/workflows/local-fix-review-issues.yaml +42 -0
  20. package/.pi/workflows/local-review.yaml +17 -0
  21. package/.pi/workflows/local-staged-review.yaml +17 -0
  22. package/.pi/workflows/local-update-agents-md.yaml +24 -0
  23. package/.pi/workflows/tag-changelog-update.yaml +26 -0
  24. package/README.md +215 -106
  25. package/dist/ci/runner.d.ts.map +1 -1
  26. package/dist/ci/runner.js +7 -8
  27. package/dist/ci/runner.js.map +1 -1
  28. package/dist/cli/index.js +69 -341
  29. package/dist/cli/index.js.map +1 -1
  30. package/dist/cli/init.d.ts.map +1 -1
  31. package/dist/cli/init.js +25 -23
  32. package/dist/cli/init.js.map +1 -1
  33. package/dist/cli/run-agent.d.ts +24 -0
  34. package/dist/cli/run-agent.d.ts.map +1 -0
  35. package/dist/cli/run-agent.js +139 -0
  36. package/dist/cli/run-agent.js.map +1 -0
  37. package/dist/cli/run-agent.test.d.ts +2 -0
  38. package/dist/cli/run-agent.test.d.ts.map +1 -0
  39. package/dist/cli/run-agent.test.js +204 -0
  40. package/dist/cli/run-agent.test.js.map +1 -0
  41. package/dist/cli/workflow.d.ts +51 -0
  42. package/dist/cli/workflow.d.ts.map +1 -0
  43. package/dist/cli/workflow.js +1229 -0
  44. package/dist/cli/workflow.js.map +1 -0
  45. package/dist/cli/workflow.test.d.ts +2 -0
  46. package/dist/cli/workflow.test.d.ts.map +1 -0
  47. package/dist/cli/workflow.test.js +1410 -0
  48. package/dist/cli/workflow.test.js.map +1 -0
  49. package/dist/lib/agent-id.d.ts +9 -0
  50. package/dist/lib/agent-id.d.ts.map +1 -0
  51. package/dist/lib/agent-id.js +32 -0
  52. package/dist/lib/agent-id.js.map +1 -0
  53. package/dist/lib/comment-formatter.d.ts +7 -1
  54. package/dist/lib/comment-formatter.d.ts.map +1 -1
  55. package/dist/lib/comment-formatter.js +42 -1
  56. package/dist/lib/comment-formatter.js.map +1 -1
  57. package/dist/lib/comment-formatter.test.js +33 -0
  58. package/dist/lib/comment-formatter.test.js.map +1 -1
  59. package/dist/lib/comment-manager.d.ts +4 -0
  60. package/dist/lib/comment-manager.d.ts.map +1 -1
  61. package/dist/lib/comment-manager.js +7 -1
  62. package/dist/lib/comment-manager.js.map +1 -1
  63. package/dist/lib/comment-poster.d.ts +2 -2
  64. package/dist/lib/comment-poster.d.ts.map +1 -1
  65. package/dist/lib/comment-poster.js +3 -3
  66. package/dist/lib/comment-poster.js.map +1 -1
  67. package/dist/lib/comment-poster.test.js +13 -3
  68. package/dist/lib/comment-poster.test.js.map +1 -1
  69. package/dist/lib/config-model-overrides.test.d.ts +0 -10
  70. package/dist/lib/config-model-overrides.test.d.ts.map +1 -1
  71. package/dist/lib/config-model-overrides.test.js +174 -210
  72. package/dist/lib/config-model-overrides.test.js.map +1 -1
  73. package/dist/lib/config.d.ts +111 -34
  74. package/dist/lib/config.d.ts.map +1 -1
  75. package/dist/lib/config.js +322 -83
  76. package/dist/lib/config.js.map +1 -1
  77. package/dist/lib/config.test.js +282 -2
  78. package/dist/lib/config.test.js.map +1 -1
  79. package/dist/lib/context-loader.d.ts +4 -4
  80. package/dist/lib/context-loader.d.ts.map +1 -1
  81. package/dist/lib/context-loader.js +10 -7
  82. package/dist/lib/context-loader.js.map +1 -1
  83. package/dist/lib/context-loader.test.js +31 -26
  84. package/dist/lib/context-loader.test.js.map +1 -1
  85. package/dist/lib/description-executor.js +1 -1
  86. package/dist/lib/description-executor.js.map +1 -1
  87. package/dist/lib/description-executor.test.js +10 -3
  88. package/dist/lib/description-executor.test.js.map +1 -1
  89. package/dist/lib/diff-lines.d.ts +9 -0
  90. package/dist/lib/diff-lines.d.ts.map +1 -0
  91. package/dist/lib/diff-lines.js +32 -0
  92. package/dist/lib/diff-lines.js.map +1 -0
  93. package/dist/lib/diff-lines.test.d.ts +2 -0
  94. package/dist/lib/diff-lines.test.d.ts.map +1 -0
  95. package/dist/lib/diff-lines.test.js +13 -0
  96. package/dist/lib/diff-lines.test.js.map +1 -0
  97. package/dist/lib/logger.d.ts +1 -1
  98. package/dist/lib/logger.d.ts.map +1 -1
  99. package/dist/lib/review-core.d.ts.map +1 -1
  100. package/dist/lib/review-core.js +22 -27
  101. package/dist/lib/review-core.js.map +1 -1
  102. package/dist/lib/review-core.test.js +37 -23
  103. package/dist/lib/review-core.test.js.map +1 -1
  104. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  105. package/dist/lib/review-orchestrator.js +11 -8
  106. package/dist/lib/review-orchestrator.js.map +1 -1
  107. package/dist/lib/review-orchestrator.test.js +27 -6
  108. package/dist/lib/review-orchestrator.test.js.map +1 -1
  109. package/dist/lib/unified-review-executor.d.ts +0 -2
  110. package/dist/lib/unified-review-executor.d.ts.map +1 -1
  111. package/dist/lib/unified-review-executor.js +7 -13
  112. package/dist/lib/unified-review-executor.js.map +1 -1
  113. package/dist/lib/unified-review-executor.test.js +2 -2
  114. package/dist/lib/unified-review-executor.test.js.map +1 -1
  115. package/dist/pi/sdk.d.ts.map +1 -1
  116. package/dist/pi/sdk.js +37 -12
  117. package/dist/pi/sdk.js.map +1 -1
  118. package/dist/pi/sdk.test.js +83 -10
  119. package/dist/pi/sdk.test.js.map +1 -1
  120. package/dist/runtime/agent-loader.d.ts +10 -6
  121. package/dist/runtime/agent-loader.d.ts.map +1 -1
  122. package/dist/runtime/agent-loader.js +53 -27
  123. package/dist/runtime/agent-loader.js.map +1 -1
  124. package/dist/runtime/agent-loader.test.js +116 -119
  125. package/dist/runtime/agent-loader.test.js.map +1 -1
  126. package/dist/runtime/built-in-paths.d.ts +1 -0
  127. package/dist/runtime/built-in-paths.d.ts.map +1 -1
  128. package/dist/runtime/built-in-paths.js +7 -0
  129. package/dist/runtime/built-in-paths.js.map +1 -1
  130. package/dist/runtime/client.d.ts +12 -0
  131. package/dist/runtime/client.d.ts.map +1 -1
  132. package/dist/runtime/client.js +83 -58
  133. package/dist/runtime/client.js.map +1 -1
  134. package/dist/runtime/client.test.js +264 -15
  135. package/dist/runtime/client.test.js.map +1 -1
  136. package/dist/runtime/path-config.d.ts +2 -2
  137. package/dist/runtime/path-config.d.ts.map +1 -1
  138. package/dist/runtime/path-config.js +8 -8
  139. package/dist/runtime/path-config.js.map +1 -1
  140. package/dist/runtime/path-config.test.js +14 -14
  141. package/dist/runtime/path-config.test.js.map +1 -1
  142. package/package.json +3 -4
  143. package/.pi/agents/review/documentation.md +0 -56
  144. package/.pi/agents/review/performance.md +0 -53
  145. package/.pi/agents/review/quality.md +0 -59
  146. package/.pi/agents/review/security.md +0 -53
  147. package/.pi/agents/review/style.md +0 -132
  148. package/dist/cli/describe-mr.d.ts +0 -11
  149. package/dist/cli/describe-mr.d.ts.map +0 -1
  150. package/dist/cli/describe-mr.js +0 -134
  151. package/dist/cli/describe-mr.js.map +0 -1
  152. package/dist/cli/describe-pr.d.ts +0 -12
  153. package/dist/cli/describe-pr.d.ts.map +0 -1
  154. package/dist/cli/describe-pr.js +0 -135
  155. package/dist/cli/describe-pr.js.map +0 -1
  156. package/dist/cli/post-comments.d.ts +0 -20
  157. package/dist/cli/post-comments.d.ts.map +0 -1
  158. package/dist/cli/post-comments.js +0 -225
  159. package/dist/cli/post-comments.js.map +0 -1
  160. package/dist/cli/review-local.d.ts +0 -13
  161. package/dist/cli/review-local.d.ts.map +0 -1
  162. package/dist/cli/review-local.integration.test.d.ts +0 -2
  163. package/dist/cli/review-local.integration.test.d.ts.map +0 -1
  164. package/dist/cli/review-local.integration.test.js +0 -343
  165. package/dist/cli/review-local.integration.test.js.map +0 -1
  166. package/dist/cli/review-local.js +0 -90
  167. package/dist/cli/review-local.js.map +0 -1
  168. package/dist/cli/review-local.live.e2e.test.d.ts +0 -2
  169. package/dist/cli/review-local.live.e2e.test.d.ts.map +0 -1
  170. package/dist/cli/review-local.live.e2e.test.js +0 -153
  171. package/dist/cli/review-local.live.e2e.test.js.map +0 -1
  172. package/dist/cli/review-local.test.d.ts +0 -2
  173. package/dist/cli/review-local.test.d.ts.map +0 -1
  174. package/dist/cli/review-local.test.js +0 -164
  175. package/dist/cli/review-local.test.js.map +0 -1
  176. package/dist/cli/review-mr.d.ts +0 -22
  177. package/dist/cli/review-mr.d.ts.map +0 -1
  178. package/dist/cli/review-mr.js +0 -181
  179. package/dist/cli/review-mr.js.map +0 -1
  180. package/dist/cli/review-mr.test.d.ts +0 -2
  181. package/dist/cli/review-mr.test.d.ts.map +0 -1
  182. package/dist/cli/review-mr.test.js +0 -142
  183. package/dist/cli/review-mr.test.js.map +0 -1
  184. package/dist/cli/review-pr.d.ts +0 -22
  185. package/dist/cli/review-pr.d.ts.map +0 -1
  186. package/dist/cli/review-pr.js +0 -181
  187. package/dist/cli/review-pr.js.map +0 -1
  188. package/dist/cli/review-pr.test.d.ts +0 -2
  189. package/dist/cli/review-pr.test.d.ts.map +0 -1
  190. package/dist/cli/review-pr.test.js +0 -137
  191. package/dist/cli/review-pr.test.js.map +0 -1
  192. package/dist/cli/review-url.d.ts +0 -35
  193. package/dist/cli/review-url.d.ts.map +0 -1
  194. package/dist/cli/review-url.js +0 -110
  195. package/dist/cli/review-url.js.map +0 -1
  196. package/dist/cli/review-url.test.d.ts +0 -2
  197. package/dist/cli/review-url.test.d.ts.map +0 -1
  198. package/dist/cli/review-url.test.js +0 -132
  199. package/dist/cli/review-url.test.js.map +0 -1
  200. package/dist/cli/show-changes.d.ts +0 -15
  201. package/dist/cli/show-changes.d.ts.map +0 -1
  202. package/dist/cli/show-changes.js +0 -184
  203. package/dist/cli/show-changes.js.map +0 -1
@@ -1,8 +1,16 @@
1
- import { readFileSync, existsSync } from 'fs';
2
- import { resolve } from 'path';
1
+ import { readFileSync, existsSync, readdirSync, statSync } from 'fs';
2
+ import { basename, extname, join, resolve } from 'path';
3
3
  import * as yaml from 'yaml';
4
+ import { requireAgentId } from './agent-id.js';
5
+ import { getBuiltInWorkflowPaths } from '../runtime/built-in-paths.js';
4
6
  const DEFAULT_CONFIG = {
5
7
  pi: {},
8
+ agents: {
9
+ default: {
10
+ model: getDefaultModelEnv() ?? 'anthropic/claude-sonnet-4-5-20250929',
11
+ skills: [],
12
+ },
13
+ },
6
14
  gitlab: {
7
15
  url: process.env.GITLAB_URL ?? 'https://gitlab.com',
8
16
  token: process.env.GITLAB_TOKEN ?? '',
@@ -11,11 +19,7 @@ const DEFAULT_CONFIG = {
11
19
  token: process.env.GITHUB_TOKEN ?? '',
12
20
  },
13
21
  review: {
14
- agents: ['security', 'quality', 'style', 'performance', 'documentation'],
15
- default: {
16
- model: process.env.REVIEW_DEFAULT_MODEL ?? 'anthropic/claude-sonnet-4-5-20250929',
17
- skills: [],
18
- },
22
+ agents: ['review/unified-reviewer'],
19
23
  ignorePatterns: [
20
24
  '*.test.ts',
21
25
  '*.spec.ts',
@@ -27,12 +31,10 @@ const DEFAULT_CONFIG = {
27
31
  ],
28
32
  describe: {
29
33
  enabled: false,
30
- postDescription: false,
31
34
  },
32
35
  cursorFixLinks: {
33
36
  enabled: false,
34
37
  },
35
- postErrorComment: false,
36
38
  },
37
39
  contextCompression: {
38
40
  enabled: true,
@@ -46,27 +48,126 @@ const DEFAULT_CONFIG = {
46
48
  includeProjectContext: true,
47
49
  },
48
50
  };
51
+ function isRecord(value) {
52
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
53
+ }
54
+ function isWorkflowFileName(fileName) {
55
+ return fileName.endsWith('.yaml') || fileName.endsWith('.yml');
56
+ }
57
+ function validateWorkflowDefinition(workflowName, workflow, sourcePath) {
58
+ if (!isRecord(workflow) || !isRecord(workflow.nodes)) {
59
+ throw new Error(`Workflow "${workflowName}" in ${sourcePath} must define a nodes object.`);
60
+ }
61
+ return workflow;
62
+ }
63
+ function loadWorkflowFile(filePath) {
64
+ const parsed = yaml.parse(readFileSync(filePath, 'utf-8')) ?? {};
65
+ if (!isRecord(parsed)) {
66
+ throw new Error(`Workflow file ${filePath} must contain a YAML object.`);
67
+ }
68
+ if (parsed.workflows !== undefined) {
69
+ throw new Error(`Workflow file ${filePath} must define one workflow directly.`);
70
+ }
71
+ const workflowName = parsed.name === undefined ? basename(filePath, extname(filePath)) : parsed.name;
72
+ if (typeof workflowName !== 'string' || !workflowName.trim()) {
73
+ throw new Error(`Workflow file ${filePath} must use a non-empty string name.`);
74
+ }
75
+ const workflow = { ...parsed };
76
+ delete workflow.name;
77
+ return {
78
+ [workflowName.trim()]: validateWorkflowDefinition(workflowName.trim(), workflow, filePath),
79
+ };
80
+ }
81
+ function loadWorkflowFilesFromDirectory(directoryPath, source) {
82
+ if (!existsSync(directoryPath)) {
83
+ return { workflows: {}, sources: {} };
84
+ }
85
+ if (!statSync(directoryPath).isDirectory()) {
86
+ throw new Error(`Workflow path ${directoryPath} exists but is not a directory.`);
87
+ }
88
+ const workflows = {};
89
+ const sources = {};
90
+ for (const fileName of readdirSync(directoryPath).filter(isWorkflowFileName).sort()) {
91
+ const fileWorkflows = loadWorkflowFile(join(directoryPath, fileName));
92
+ for (const workflowName of Object.keys(fileWorkflows)) {
93
+ sources[workflowName] = source;
94
+ }
95
+ Object.assign(workflows, fileWorkflows);
96
+ }
97
+ return { workflows, sources };
98
+ }
99
+ function loadBuiltInWorkflowFiles() {
100
+ const result = {
101
+ workflows: {},
102
+ sources: {},
103
+ };
104
+ for (const directory of getBuiltInWorkflowPaths()) {
105
+ const loaded = loadWorkflowFilesFromDirectory(directory, 'packaged');
106
+ Object.assign(result.workflows, loaded.workflows);
107
+ Object.assign(result.sources, loaded.sources);
108
+ }
109
+ return result;
110
+ }
111
+ /**
112
+ * Load map of workflow names to their source origin (packaged or project).
113
+ */
114
+ export function loadWorkflowSources(projectPath) {
115
+ const basePath = projectPath ?? process.cwd();
116
+ const builtIn = loadBuiltInWorkflowFiles();
117
+ const project = loadWorkflowFilesFromDirectory(resolve(basePath, '.drs/workflows'), 'project');
118
+ // Project workflows take precedence, so they override packaged sources.
119
+ return { ...builtIn.sources, ...project.sources };
120
+ }
121
+ /**
122
+ * Load map of workflow names to their source origin, including whether
123
+ * a project workflow is overriding an existing packaged workflow.
124
+ */
125
+ export function loadWorkflowSourceInfo(projectPath) {
126
+ const basePath = projectPath ?? process.cwd();
127
+ const builtIn = loadBuiltInWorkflowFiles();
128
+ const project = loadWorkflowFilesFromDirectory(resolve(basePath, '.drs/workflows'), 'project');
129
+ const info = {};
130
+ for (const name of Object.keys(builtIn.sources)) {
131
+ info[name] = { source: 'packaged', overridesPackaged: false };
132
+ }
133
+ for (const name of Object.keys(project.sources)) {
134
+ info[name] = { source: 'project', overridesPackaged: name in builtIn.sources };
135
+ }
136
+ return info;
137
+ }
49
138
  /**
50
139
  * Load configuration from various sources with precedence:
51
- * 1. CLI arguments (passed as overrides)
52
- * 2. Environment variables
53
- * 3. .drs/drs.config.yaml or .drs/drs.config.json
54
- * 4. .gitlab-review.yml
55
- * 5. Default values
140
+ * 1. Default values
141
+ * 2. Built-in workflow files
142
+ * 3. .drs/workflows/*.yaml
143
+ * 4. .drs/drs.config.yaml
144
+ * 5. .gitlab-review.yml
145
+ * 6. Environment variables
146
+ * 7. CLI arguments (passed as overrides)
56
147
  */
57
148
  export function loadConfig(projectPath, overrides) {
58
149
  const basePath = projectPath ?? process.cwd();
59
- let config = { ...DEFAULT_CONFIG };
150
+ const builtIn = loadBuiltInWorkflowFiles();
151
+ let config = mergeConfig({ ...DEFAULT_CONFIG }, { workflows: builtIn.workflows });
152
+ const projectWorkflowPath = resolve(basePath, '.drs/workflows');
153
+ const project = loadWorkflowFilesFromDirectory(projectWorkflowPath, 'project');
154
+ config = mergeConfig(config, { workflows: project.workflows });
60
155
  // Try loading from .drs/drs.config.yaml
61
156
  const drsConfigPath = resolve(basePath, '.drs/drs.config.yaml');
62
157
  if (existsSync(drsConfigPath)) {
63
- const fileConfig = yaml.parse(readFileSync(drsConfigPath, 'utf-8'));
158
+ const fileConfig = yaml.parse(readFileSync(drsConfigPath, 'utf-8')) ?? {};
159
+ rejectLegacyAgentConfigKeys(fileConfig, drsConfigPath);
160
+ rejectRemovedReviewPostingConfigKeys(fileConfig, drsConfigPath);
161
+ rejectInlineWorkflowConfig(fileConfig, drsConfigPath);
64
162
  config = mergeConfig(config, fileConfig);
65
163
  }
66
164
  // Try loading from .gitlab-review.yml
67
165
  const gitlabReviewPath = resolve(basePath, '.gitlab-review.yml');
68
166
  if (existsSync(gitlabReviewPath)) {
69
- const fileConfig = yaml.parse(readFileSync(gitlabReviewPath, 'utf-8'));
167
+ const fileConfig = yaml.parse(readFileSync(gitlabReviewPath, 'utf-8')) ?? {};
168
+ rejectLegacyAgentConfigKeys(fileConfig, gitlabReviewPath);
169
+ rejectRemovedReviewPostingConfigKeys(fileConfig, gitlabReviewPath);
170
+ rejectInlineWorkflowConfig(fileConfig, gitlabReviewPath);
70
171
  config = mergeConfig(config, fileConfig);
71
172
  }
72
173
  // Apply environment variable overrides
@@ -83,14 +184,14 @@ export function loadConfig(projectPath, overrides) {
83
184
  // Environment variable is always simple string format (comma-separated)
84
185
  config.review.agents = process.env.REVIEW_AGENTS.split(',').map((a) => a.trim());
85
186
  }
86
- if (process.env.REVIEW_DEFAULT_MODEL) {
87
- config.review.defaultModel = process.env.REVIEW_DEFAULT_MODEL;
88
- config.review.default = mergeSection(config.review.default, {
89
- model: process.env.REVIEW_DEFAULT_MODEL,
187
+ const defaultModelEnv = getDefaultModelEnv();
188
+ if (defaultModelEnv) {
189
+ config.agents.default = mergeSection(config.agents.default, {
190
+ model: defaultModelEnv,
90
191
  });
91
192
  }
92
193
  if (process.env.REVIEW_MODE) {
93
- console.warn('⚠ REVIEW_MODE is deprecated. Configure review.agents explicitly (include unified-reviewer when needed).');
194
+ console.warn('⚠ REVIEW_MODE is deprecated. Configure review.agents explicitly (include review/unified-reviewer when needed).');
94
195
  config.review.mode = process.env.REVIEW_MODE;
95
196
  }
96
197
  if (process.env.REVIEW_UNIFIED_MODEL) {
@@ -107,7 +208,7 @@ export function loadConfig(projectPath, overrides) {
107
208
  };
108
209
  }
109
210
  if (process.env.REVIEW_THINKING_LEVEL) {
110
- config.review.default = mergeSection(config.review.default, {
211
+ config.agents.default = mergeSection(config.agents.default, {
111
212
  thinkingLevel: process.env.REVIEW_THINKING_LEVEL,
112
213
  });
113
214
  }
@@ -117,12 +218,9 @@ export function loadConfig(projectPath, overrides) {
117
218
  if (process.env.REVIEW_SKIP_BRANCH_CHECK === 'true') {
118
219
  config.review.skipBranchCheck = true;
119
220
  }
120
- if (process.env.REVIEW_POST_ERROR_COMMENT === 'true') {
121
- config.review.postErrorComment = true;
122
- }
123
221
  // Validate required fields
124
222
  if (!getDefaultModel(config)) {
125
- throw new Error('Default model is required. Set review.default.model or defaultModel in .drs/drs.config.yaml or REVIEW_DEFAULT_MODEL environment variable.\n' +
223
+ throw new Error('Default model is required. Set agents.default.model in .drs/drs.config.yaml or DRS_DEFAULT_MODEL environment variable.\n' +
126
224
  'Run "drs init" to configure your project.');
127
225
  }
128
226
  // Apply CLI overrides
@@ -130,7 +228,7 @@ export function loadConfig(projectPath, overrides) {
130
228
  config = mergeConfig(config, overrides);
131
229
  }
132
230
  if (config.review.mode) {
133
- console.warn('⚠ review.mode is deprecated. Configure review.agents explicitly (include unified-reviewer when needed).');
231
+ console.warn('⚠ review.mode is deprecated. Configure review.agents explicitly (include review/unified-reviewer when needed).');
134
232
  const validModes = ['multi-agent', 'unified', 'hybrid'];
135
233
  if (!validModes.includes(config.review.mode)) {
136
234
  throw new Error(`Invalid review mode "${config.review.mode}". Valid options: ${validModes.join(', ')}`);
@@ -141,6 +239,46 @@ export function loadConfig(projectPath, overrides) {
141
239
  }
142
240
  return normalizeRuntimeConfig(config);
143
241
  }
242
+ function rejectLegacyAgentConfigKeys(fileConfig, sourcePath) {
243
+ const reviewConfig = fileConfig.review;
244
+ if (!reviewConfig || typeof reviewConfig !== 'object') {
245
+ return;
246
+ }
247
+ const migrations = [];
248
+ if ('default' in reviewConfig)
249
+ migrations.push('review.default -> agents.default');
250
+ if ('defaultModel' in reviewConfig)
251
+ migrations.push('review.defaultModel -> agents.default.model');
252
+ if ('paths' in reviewConfig)
253
+ migrations.push('review.paths -> agents.paths');
254
+ if (migrations.length > 0) {
255
+ throw new Error(`Config file ${sourcePath} uses legacy DRS 3.x agent config keys: ${migrations.join(', ')}. ` +
256
+ 'DRS 4.0 requires top-level agent configuration. Move model/skill defaults to agents.default and custom paths to agents.paths.');
257
+ }
258
+ }
259
+ function rejectInlineWorkflowConfig(fileConfig, sourcePath) {
260
+ if (!isRecord(fileConfig) || fileConfig.workflows === undefined) {
261
+ return;
262
+ }
263
+ throw new Error(`Config file ${sourcePath} cannot define top-level workflows.`);
264
+ }
265
+ function rejectRemovedReviewPostingConfigKeys(fileConfig, sourcePath) {
266
+ if (!isRecord(fileConfig) || !isRecord(fileConfig.review)) {
267
+ return;
268
+ }
269
+ const removedKeys = [];
270
+ if (Object.prototype.hasOwnProperty.call(fileConfig.review, 'postErrorComment')) {
271
+ removedKeys.push('review.postErrorComment');
272
+ }
273
+ if (isRecord(fileConfig.review.describe) &&
274
+ Object.prototype.hasOwnProperty.call(fileConfig.review.describe, 'postDescription')) {
275
+ removedKeys.push('review.describe.postDescription');
276
+ }
277
+ if (removedKeys.length > 0) {
278
+ throw new Error(`Config file ${sourcePath} uses removed DRS 4.0 review posting keys: ${removedKeys.join(', ')}. ` +
279
+ 'Run posting explicitly with workflows, or use github-pr-describe-post/gitlab-mr-describe-post when updating PR/MR descriptions.');
280
+ }
281
+ }
144
282
  /**
145
283
  * Deep merge two config objects, skipping undefined values
146
284
  */
@@ -148,6 +286,9 @@ function mergeConfig(base, override) {
148
286
  return {
149
287
  pi: mergeSection(base.pi, override.pi),
150
288
  opencode: mergeSection(base.opencode, override.opencode),
289
+ agents: mergeSection(base.agents, override.agents),
290
+ workflows: mergeSection(base.workflows, override.workflows),
291
+ workflow: mergeSection(base.workflow, override.workflow),
151
292
  gitlab: mergeSection(base.gitlab, override.gitlab),
152
293
  github: mergeSection(base.github, override.github),
153
294
  review: mergeSection(base.review, override.review),
@@ -168,8 +309,27 @@ function normalizeRuntimeConfig(config) {
168
309
  ...(legacyRuntime.provider ?? {}),
169
310
  ...(piRuntime.provider ?? {}),
170
311
  };
312
+ const mergedRuntimeTimeouts = {
313
+ ...(legacyRuntime.runtime ?? {}),
314
+ ...(piRuntime.runtime ?? {}),
315
+ };
316
+ const legacyProviderRetry = legacyRuntime.retry
317
+ ?.provider;
318
+ const piProviderRetry = piRuntime.retry?.provider;
319
+ const mergedProviderRetry = {
320
+ ...(legacyProviderRetry ?? {}),
321
+ ...(piProviderRetry ?? {}),
322
+ };
171
323
  const normalizedRuntime = {
172
324
  provider: Object.keys(mergedProvider).length > 0 ? mergedProvider : undefined,
325
+ runtime: Object.keys(mergedRuntimeTimeouts).length > 0
326
+ ? mergedRuntimeTimeouts
327
+ : undefined,
328
+ retry: Object.keys(mergedProviderRetry).length > 0
329
+ ? {
330
+ provider: mergedProviderRetry,
331
+ }
332
+ : undefined,
173
333
  };
174
334
  return {
175
335
  ...config,
@@ -191,7 +351,6 @@ function mergeSection(base, override) {
191
351
  for (const key in override) {
192
352
  const value = override[key];
193
353
  if (value !== undefined) {
194
- // TypeScript knows that value is T[Extract<keyof T, string>] which is assignable to T[keyof T]
195
354
  result[key] = value;
196
355
  }
197
356
  }
@@ -208,11 +367,11 @@ export function validateConfig(config, platform) {
208
367
  if (platform === 'github' && !config.github.token) {
209
368
  throw new Error('GitHub token is required. Set GITHUB_TOKEN environment variable or configure in config file');
210
369
  }
211
- if (getAgentNames(config).length === 0) {
370
+ if (getReviewAgentIds(config).length === 0) {
212
371
  throw new Error('At least one review agent must be configured');
213
372
  }
214
373
  if (!getDefaultModel(config)) {
215
- throw new Error('Default model is required. Run "drs init" to configure or set REVIEW_DEFAULT_MODEL environment variable.');
374
+ throw new Error('Default model is required. Run "drs init" to configure agents.default.model or set DRS_DEFAULT_MODEL environment variable.');
216
375
  }
217
376
  }
218
377
  /**
@@ -255,69 +414,144 @@ export function normalizeAgentConfig(agents) {
255
414
  return agent;
256
415
  });
257
416
  }
417
+ function dedupeStrings(values) {
418
+ return Array.from(new Set(values.map((value) => value.trim()).filter((value) => value.length > 0)));
419
+ }
420
+ function getNamespaceDefaults(config, namespace) {
421
+ return config.agents.namespaces?.[namespace] ?? {};
422
+ }
423
+ function getAgentOverride(config, agentId) {
424
+ return config.agents.overrides?.[agentId] ?? {};
425
+ }
426
+ function getDefaultModelEnv() {
427
+ return process.env.DRS_DEFAULT_MODEL ?? process.env.REVIEW_DEFAULT_MODEL ?? undefined;
428
+ }
429
+ function getAgentModelEnv(agentId) {
430
+ const suffix = agentId.toUpperCase().replace(/[^A-Z0-9]/g, '_');
431
+ return process.env[`DRS_AGENT_${suffix}_MODEL`] ?? process.env[`REVIEW_AGENT_${suffix}_MODEL`];
432
+ }
433
+ function mergeToolSettings(...settings) {
434
+ const merged = {};
435
+ for (const setting of settings) {
436
+ if (!setting) {
437
+ continue;
438
+ }
439
+ for (const [toolName, enabled] of Object.entries(setting)) {
440
+ if (typeof enabled === 'boolean') {
441
+ merged[toolName] = enabled;
442
+ }
443
+ }
444
+ }
445
+ return Object.keys(merged).length > 0 ? merged : undefined;
446
+ }
447
+ function mergeRunSettings(...settings) {
448
+ const merged = {};
449
+ for (const setting of settings) {
450
+ if (!setting) {
451
+ continue;
452
+ }
453
+ if (setting.prompt !== undefined)
454
+ merged.prompt = setting.prompt;
455
+ if (setting.promptFile !== undefined)
456
+ merged.promptFile = setting.promptFile;
457
+ if (setting.output !== undefined)
458
+ merged.output = setting.output;
459
+ if (setting.json !== undefined)
460
+ merged.json = setting.json;
461
+ }
462
+ return merged;
463
+ }
258
464
  export function getDefaultModel(config) {
259
- return (config.review.default?.model ??
260
- config.review.defaultModel ??
261
- process.env.REVIEW_DEFAULT_MODEL ??
262
- undefined);
465
+ return config.agents.default?.model ?? getDefaultModelEnv();
263
466
  }
264
467
  export function getDefaultThinkingLevel(config) {
265
- return config.review.default?.thinkingLevel;
468
+ return config.agents.default?.thinkingLevel;
469
+ }
470
+ export function resolveAgentThinkingLevel(config, agentId) {
471
+ const { namespace } = requireAgentId(agentId);
472
+ return (getAgentOverride(config, agentId).thinkingLevel ??
473
+ getNamespaceDefaults(config, namespace).thinkingLevel ??
474
+ getDefaultThinkingLevel(config));
266
475
  }
267
476
  export function getDefaultSkills(config) {
268
- if (!Array.isArray(config.review.default?.skills)) {
269
- return [];
270
- }
271
- return config.review.default.skills.map(String).filter((skill) => skill.length > 0);
477
+ return dedupeStrings((config.agents.default?.skills ?? []).map(String));
272
478
  }
273
- function applyLegacyModeAgentFallback(config, agentNames) {
274
- const deduped = Array.from(new Set(agentNames));
275
- const mode = config.review.mode;
276
- if (mode === 'unified' && !deduped.includes('unified-reviewer')) {
277
- return ['unified-reviewer'];
278
- }
279
- if (mode === 'hybrid' && !deduped.includes('unified-reviewer')) {
280
- return ['unified-reviewer', ...deduped];
281
- }
282
- return deduped;
479
+ export function resolveAgentSkills(config, agentId, definitionSkills = [], additionalSkills = [], precomputedReviewAgentConfig) {
480
+ const { namespace } = requireAgentId(agentId);
481
+ const namespaceDefaults = getNamespaceDefaults(config, namespace);
482
+ const agentOverride = getAgentOverride(config, agentId);
483
+ const reviewAgentConfig = precomputedReviewAgentConfig === undefined
484
+ ? normalizeAgentConfig(config.review.agents).find((agent) => agent.name === agentId)
485
+ : precomputedReviewAgentConfig;
486
+ return dedupeStrings([
487
+ ...(config.agents.default?.skills ?? []),
488
+ ...(namespaceDefaults.skills ?? []),
489
+ ...definitionSkills,
490
+ ...(agentOverride.skills ?? []),
491
+ ...(reviewAgentConfig?.skills ?? []),
492
+ ...additionalSkills,
493
+ ]);
494
+ }
495
+ export function resolveAgentModel(config, agentId, explicitModel) {
496
+ const { namespace } = requireAgentId(agentId);
497
+ const envModel = getAgentModelEnv(agentId);
498
+ return (explicitModel ??
499
+ envModel ??
500
+ getAgentOverride(config, agentId).model ??
501
+ getNamespaceDefaults(config, namespace).model ??
502
+ getDefaultModel(config));
503
+ }
504
+ export function resolveRuntimeAgentModel(config, agentId, definitionModel) {
505
+ const { namespace } = requireAgentId(agentId);
506
+ return (getAgentModelEnv(agentId) ??
507
+ getAgentOverride(config, agentId).model ??
508
+ definitionModel ??
509
+ getNamespaceDefaults(config, namespace).model ??
510
+ getDefaultModel(config));
511
+ }
512
+ export function resolveAgentTools(config, agentId, definitionTools) {
513
+ const { namespace } = requireAgentId(agentId);
514
+ return mergeToolSettings(config.agents.default?.tools, getNamespaceDefaults(config, namespace).tools, definitionTools, getAgentOverride(config, agentId).tools);
515
+ }
516
+ export function resolveAgentRunConfig(config, agentId) {
517
+ const { namespace } = requireAgentId(agentId);
518
+ return mergeRunSettings(config.agents.default?.run, getNamespaceDefaults(config, namespace).run, getAgentOverride(config, agentId).run);
283
519
  }
284
520
  /**
285
- * Extract effective agent names from configuration.
286
- *
287
- * Primary model: review.agents controls execution order and composition.
288
- * Legacy compatibility:
289
- * - mode=unified forces unified-reviewer when not explicitly configured.
290
- * - mode=hybrid prepends unified-reviewer when not explicitly configured.
521
+ * Extract effective review agent ids from configuration.
291
522
  */
292
- export function getAgentNames(config) {
293
- const configuredAgentNames = normalizeAgentConfig(config.review.agents).map((agent) => agent.name);
294
- return applyLegacyModeAgentFallback(config, configuredAgentNames);
523
+ export function getReviewAgentIds(config) {
524
+ return getReviewAgentIdsFromNormalized(normalizeAgentConfig(config.review.agents));
525
+ }
526
+ function getReviewAgentIdsFromNormalized(normalizedAgents) {
527
+ const configuredAgentIds = normalizedAgents.map((agent) => agent.name);
528
+ const deduped = dedupeStrings(configuredAgentIds);
529
+ for (const agentId of deduped) {
530
+ const { namespace } = requireAgentId(agentId);
531
+ if (namespace !== 'review') {
532
+ throw new Error(`Invalid review agent "${agentId}". Review agents must be in the "review" namespace.`);
533
+ }
534
+ }
535
+ return deduped;
295
536
  }
296
537
  /**
297
538
  * Build model overrides from config and environment variables
298
539
  * Precedence:
299
540
  * 1. Per-agent model in config
300
- * 2. Environment variable REVIEW_AGENT_<NAME>_MODEL (e.g., REVIEW_AGENT_SECURITY_MODEL)
301
- * 3. defaultModel in config
302
- * 4. Environment variable REVIEW_DEFAULT_MODEL
303
- *
541
+ * 2. Environment variable DRS_AGENT_<NAMESPACE>_<NAME>_MODEL
542
+ * 3. agents.overrides.<agent>.model
543
+ * 4. agents.namespaces.<namespace>.model
544
+ * 5. agents.default.model (falls back to DRS_DEFAULT_MODEL)
304
545
  */
305
546
  export function getModelOverrides(config) {
306
547
  const overrides = {};
307
548
  const normalizedAgents = normalizeAgentConfig(config.review.agents);
308
549
  const agentConfigByName = new Map(normalizedAgents.map((agent) => [agent.name, agent]));
309
- // Get default model from config or environment
310
- const defaultModel = getDefaultModel(config);
311
- for (const agentName of getAgentNames(config)) {
312
- const configuredAgent = agentConfigByName.get(agentName);
313
- // Check per-agent environment variable (e.g., REVIEW_AGENT_SECURITY_MODEL)
314
- const envVarName = `REVIEW_AGENT_${agentName.toUpperCase().replace(/[^A-Z0-9]/g, '_')}_MODEL`;
315
- const envModel = process.env[envVarName];
316
- // Precedence: agent.model > env var > defaultModel
317
- const model = configuredAgent?.model ?? envModel ?? defaultModel;
550
+ for (const agentId of getReviewAgentIdsFromNormalized(normalizedAgents)) {
551
+ const configuredAgent = agentConfigByName.get(agentId);
552
+ const model = resolveAgentModel(config, agentId, configuredAgent?.model);
318
553
  if (model) {
319
- // Use review/<agent> format which matches how agents are invoked
320
- overrides[`review/${agentName}`] = model;
554
+ overrides[agentId] = model;
321
555
  }
322
556
  }
323
557
  return overrides;
@@ -327,14 +561,13 @@ export function getModelOverrides(config) {
327
561
  * Precedence:
328
562
  * 1. review.unified.model in config
329
563
  * 2. Environment variable REVIEW_UNIFIED_MODEL
330
- * 3. review.defaultModel in config (fallback)
331
- * 4. Environment variable REVIEW_DEFAULT_MODEL (fallback)
332
564
  */
333
565
  export function getUnifiedModelOverride(config) {
334
566
  const overrides = {};
335
- const unifiedModel = config.review.unified?.model ?? process.env.REVIEW_UNIFIED_MODEL ?? getDefaultModel(config);
567
+ const agentId = 'review/unified-reviewer';
568
+ const unifiedModel = config.review.unified?.model ?? process.env.REVIEW_UNIFIED_MODEL;
336
569
  if (unifiedModel) {
337
- overrides['review/unified-reviewer'] = unifiedModel;
570
+ overrides[agentId] = unifiedModel;
338
571
  }
339
572
  return overrides;
340
573
  }
@@ -343,15 +576,21 @@ export function getUnifiedModelOverride(config) {
343
576
  * Precedence:
344
577
  * 1. describe.model in config
345
578
  * 2. Environment variable DESCRIBE_MODEL
346
- * 3. review.defaultModel in config (fallback)
347
- * 4. Environment variable REVIEW_DEFAULT_MODEL (fallback)
579
+ * 3. agents.overrides["describe/pr-describer"].model
580
+ * 4. agents.namespaces.describe.model
581
+ * 5. agents.default.model (falls back to DRS_DEFAULT_MODEL)
348
582
  */
349
583
  export function getDescriberModelOverride(config) {
350
584
  const overrides = {};
351
- // Check for describer-specific model
352
- const describerModel = config.describe?.model ?? process.env.DESCRIBE_MODEL ?? getDefaultModel(config);
585
+ const agentId = 'describe/pr-describer';
586
+ const describerModel = config.describe?.model ?? process.env.DESCRIBE_MODEL;
353
587
  if (describerModel) {
354
- overrides['describe/pr-describer'] = describerModel;
588
+ overrides[agentId] = describerModel;
589
+ return overrides;
590
+ }
591
+ const genericModel = resolveAgentModel(config, agentId);
592
+ if (genericModel) {
593
+ overrides[agentId] = genericModel;
355
594
  }
356
595
  return overrides;
357
596
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}