@diff-review-system/drs 1.1.2 → 2.0.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 (229) hide show
  1. package/.opencode/agent/describe/pr-describer.md +221 -0
  2. package/.opencode/agent/review/documentation.md +56 -0
  3. package/.opencode/agent/review/performance.md +32 -139
  4. package/.opencode/agent/review/quality.md +36 -113
  5. package/.opencode/agent/review/security.md +32 -97
  6. package/.opencode/agent/review/style.md +4 -0
  7. package/.opencode/agent/review/unified-reviewer.md +74 -0
  8. package/.opencode/opencode.jsonc +4 -29
  9. package/.opencode/tool/write_json_output.ts +24 -0
  10. package/README.md +48 -21
  11. package/dist/ci/runner.d.ts.map +1 -1
  12. package/dist/ci/runner.js +2 -0
  13. package/dist/ci/runner.js.map +1 -1
  14. package/dist/cli/describe-mr.d.ts +11 -0
  15. package/dist/cli/describe-mr.d.ts.map +1 -0
  16. package/dist/cli/describe-mr.js +104 -0
  17. package/dist/cli/describe-mr.js.map +1 -0
  18. package/dist/cli/describe-pr.d.ts +12 -0
  19. package/dist/cli/describe-pr.d.ts.map +1 -0
  20. package/dist/cli/describe-pr.js +105 -0
  21. package/dist/cli/describe-pr.js.map +1 -0
  22. package/dist/cli/index.js +220 -16
  23. package/dist/cli/index.js.map +1 -1
  24. package/dist/cli/init.d.ts +1 -1
  25. package/dist/cli/init.d.ts.map +1 -1
  26. package/dist/cli/init.js +273 -145
  27. package/dist/cli/init.js.map +1 -1
  28. package/dist/cli/post-comments.d.ts +15 -0
  29. package/dist/cli/post-comments.d.ts.map +1 -0
  30. package/dist/cli/post-comments.js +216 -0
  31. package/dist/cli/post-comments.js.map +1 -0
  32. package/dist/cli/review-local.d.ts +3 -0
  33. package/dist/cli/review-local.d.ts.map +1 -1
  34. package/dist/cli/review-local.js +44 -18
  35. package/dist/cli/review-local.js.map +1 -1
  36. package/dist/cli/review-mr.d.ts +6 -0
  37. package/dist/cli/review-mr.d.ts.map +1 -1
  38. package/dist/cli/review-mr.js +63 -7
  39. package/dist/cli/review-mr.js.map +1 -1
  40. package/dist/cli/review-pr.d.ts +6 -0
  41. package/dist/cli/review-pr.d.ts.map +1 -1
  42. package/dist/cli/review-pr.js +8 -1
  43. package/dist/cli/review-pr.js.map +1 -1
  44. package/dist/cli/show-changes.d.ts +15 -0
  45. package/dist/cli/show-changes.d.ts.map +1 -0
  46. package/dist/cli/show-changes.js +184 -0
  47. package/dist/cli/show-changes.js.map +1 -0
  48. package/dist/github/platform-adapter.d.ts.map +1 -1
  49. package/dist/github/platform-adapter.js +4 -2
  50. package/dist/github/platform-adapter.js.map +1 -1
  51. package/dist/gitlab/client.d.ts.map +1 -1
  52. package/dist/gitlab/client.js +1 -1
  53. package/dist/gitlab/client.js.map +1 -1
  54. package/dist/gitlab/platform-adapter.d.ts.map +1 -1
  55. package/dist/gitlab/platform-adapter.js +6 -5
  56. package/dist/gitlab/platform-adapter.js.map +1 -1
  57. package/dist/lib/change-summary.d.ts +8 -0
  58. package/dist/lib/change-summary.d.ts.map +1 -0
  59. package/dist/lib/change-summary.js +2 -0
  60. package/dist/lib/change-summary.js.map +1 -0
  61. package/dist/lib/comment-formatter.d.ts +3 -2
  62. package/dist/lib/comment-formatter.d.ts.map +1 -1
  63. package/dist/lib/comment-formatter.js +16 -2
  64. package/dist/lib/comment-formatter.js.map +1 -1
  65. package/dist/lib/comment-formatter.test.d.ts +2 -0
  66. package/dist/lib/comment-formatter.test.d.ts.map +1 -0
  67. package/dist/lib/comment-formatter.test.js +607 -0
  68. package/dist/lib/comment-formatter.test.js.map +1 -0
  69. package/dist/lib/comment-manager.test.d.ts +2 -0
  70. package/dist/lib/comment-manager.test.d.ts.map +1 -0
  71. package/dist/lib/comment-manager.test.js +618 -0
  72. package/dist/lib/comment-manager.test.js.map +1 -0
  73. package/dist/lib/comment-poster.d.ts +21 -0
  74. package/dist/lib/comment-poster.d.ts.map +1 -0
  75. package/dist/lib/comment-poster.js +96 -0
  76. package/dist/lib/comment-poster.js.map +1 -0
  77. package/dist/lib/comment-poster.test.d.ts +5 -0
  78. package/dist/lib/comment-poster.test.d.ts.map +1 -0
  79. package/dist/lib/comment-poster.test.js +215 -0
  80. package/dist/lib/comment-poster.test.js.map +1 -0
  81. package/dist/lib/config-model-overrides.test.js +71 -41
  82. package/dist/lib/config-model-overrides.test.js.map +1 -1
  83. package/dist/lib/config.d.ts +63 -7
  84. package/dist/lib/config.d.ts.map +1 -1
  85. package/dist/lib/config.js +116 -22
  86. package/dist/lib/config.js.map +1 -1
  87. package/dist/lib/config.test.js +10 -2
  88. package/dist/lib/config.test.js.map +1 -1
  89. package/dist/lib/context-compression.d.ts +19 -0
  90. package/dist/lib/context-compression.d.ts.map +1 -0
  91. package/dist/lib/context-compression.js +170 -0
  92. package/dist/lib/context-compression.js.map +1 -0
  93. package/dist/lib/context-compression.test.d.ts +2 -0
  94. package/dist/lib/context-compression.test.d.ts.map +1 -0
  95. package/dist/lib/context-compression.test.js +33 -0
  96. package/dist/lib/context-compression.test.js.map +1 -0
  97. package/dist/lib/context-loader.d.ts.map +1 -1
  98. package/dist/lib/context-loader.js +8 -1
  99. package/dist/lib/context-loader.js.map +1 -1
  100. package/dist/lib/context-loader.test.d.ts +2 -0
  101. package/dist/lib/context-loader.test.d.ts.map +1 -0
  102. package/dist/lib/context-loader.test.js +207 -0
  103. package/dist/lib/context-loader.test.js.map +1 -0
  104. package/dist/lib/describe-core.d.ts +9 -0
  105. package/dist/lib/describe-core.d.ts.map +1 -0
  106. package/dist/lib/describe-core.js +71 -0
  107. package/dist/lib/describe-core.js.map +1 -0
  108. package/dist/lib/describe-core.test.d.ts +2 -0
  109. package/dist/lib/describe-core.test.d.ts.map +1 -0
  110. package/dist/lib/describe-core.test.js +208 -0
  111. package/dist/lib/describe-core.test.js.map +1 -0
  112. package/dist/lib/describe-output-path.test.d.ts +2 -0
  113. package/dist/lib/describe-output-path.test.d.ts.map +1 -0
  114. package/dist/lib/describe-output-path.test.js +51 -0
  115. package/dist/lib/describe-output-path.test.js.map +1 -0
  116. package/dist/lib/describe-parser.d.ts +3 -0
  117. package/dist/lib/describe-parser.d.ts.map +1 -0
  118. package/dist/lib/describe-parser.js +163 -0
  119. package/dist/lib/describe-parser.js.map +1 -0
  120. package/dist/lib/describe-parser.test.d.ts +2 -0
  121. package/dist/lib/describe-parser.test.d.ts.map +1 -0
  122. package/dist/lib/describe-parser.test.js +282 -0
  123. package/dist/lib/describe-parser.test.js.map +1 -0
  124. package/dist/lib/description-executor.d.ts +22 -0
  125. package/dist/lib/description-executor.d.ts.map +1 -0
  126. package/dist/lib/description-executor.js +72 -0
  127. package/dist/lib/description-executor.js.map +1 -0
  128. package/dist/lib/description-formatter.d.ts +37 -0
  129. package/dist/lib/description-formatter.d.ts.map +1 -0
  130. package/dist/lib/description-formatter.js +219 -0
  131. package/dist/lib/description-formatter.js.map +1 -0
  132. package/dist/lib/diff-parser.d.ts +11 -0
  133. package/dist/lib/diff-parser.d.ts.map +1 -1
  134. package/dist/lib/diff-parser.js +37 -0
  135. package/dist/lib/diff-parser.js.map +1 -1
  136. package/dist/lib/issue-parser.d.ts +1 -1
  137. package/dist/lib/issue-parser.d.ts.map +1 -1
  138. package/dist/lib/issue-parser.js +16 -14
  139. package/dist/lib/issue-parser.js.map +1 -1
  140. package/dist/lib/json-output-schema.d.ts +207 -0
  141. package/dist/lib/json-output-schema.d.ts.map +1 -0
  142. package/dist/lib/json-output-schema.js +124 -0
  143. package/dist/lib/json-output-schema.js.map +1 -0
  144. package/dist/lib/json-output-schema.test.d.ts +2 -0
  145. package/dist/lib/json-output-schema.test.d.ts.map +1 -0
  146. package/dist/lib/json-output-schema.test.js +92 -0
  147. package/dist/lib/json-output-schema.test.js.map +1 -0
  148. package/dist/lib/json-output.d.ts +43 -0
  149. package/dist/lib/json-output.d.ts.map +1 -0
  150. package/dist/lib/json-output.js +34 -0
  151. package/dist/lib/json-output.js.map +1 -0
  152. package/dist/lib/output-paths.d.ts +6 -0
  153. package/dist/lib/output-paths.d.ts.map +1 -0
  154. package/dist/lib/output-paths.js +5 -0
  155. package/dist/lib/output-paths.js.map +1 -0
  156. package/dist/lib/platform-client.d.ts +1 -1
  157. package/dist/lib/platform-client.d.ts.map +1 -1
  158. package/dist/lib/repository-validator.d.ts +52 -0
  159. package/dist/lib/repository-validator.d.ts.map +1 -0
  160. package/dist/lib/repository-validator.js +219 -0
  161. package/dist/lib/repository-validator.js.map +1 -0
  162. package/dist/lib/repository-validator.test.d.ts +5 -0
  163. package/dist/lib/repository-validator.test.d.ts.map +1 -0
  164. package/dist/lib/repository-validator.test.js +341 -0
  165. package/dist/lib/repository-validator.test.js.map +1 -0
  166. package/dist/lib/review-core.d.ts +66 -0
  167. package/dist/lib/review-core.d.ts.map +1 -0
  168. package/dist/lib/review-core.js +449 -0
  169. package/dist/lib/review-core.js.map +1 -0
  170. package/dist/lib/review-core.test.d.ts +2 -0
  171. package/dist/lib/review-core.test.d.ts.map +1 -0
  172. package/dist/lib/review-core.test.js +552 -0
  173. package/dist/lib/review-core.test.js.map +1 -0
  174. package/dist/lib/review-orchestrator.d.ts +27 -10
  175. package/dist/lib/review-orchestrator.d.ts.map +1 -1
  176. package/dist/lib/review-orchestrator.js +51 -110
  177. package/dist/lib/review-orchestrator.js.map +1 -1
  178. package/dist/lib/review-orchestrator.test.d.ts +2 -0
  179. package/dist/lib/review-orchestrator.test.d.ts.map +1 -0
  180. package/dist/lib/review-orchestrator.test.js +413 -0
  181. package/dist/lib/review-orchestrator.test.js.map +1 -0
  182. package/dist/lib/review-output-path.test.d.ts +2 -0
  183. package/dist/lib/review-output-path.test.d.ts.map +1 -0
  184. package/dist/lib/review-output-path.test.js +83 -0
  185. package/dist/lib/review-output-path.test.js.map +1 -0
  186. package/dist/lib/review-parser.d.ts +2 -0
  187. package/dist/lib/review-parser.d.ts.map +1 -0
  188. package/dist/lib/review-parser.js +100 -0
  189. package/dist/lib/review-parser.js.map +1 -0
  190. package/dist/lib/unified-review-executor.d.ts +21 -4
  191. package/dist/lib/unified-review-executor.d.ts.map +1 -1
  192. package/dist/lib/unified-review-executor.js +81 -151
  193. package/dist/lib/unified-review-executor.js.map +1 -1
  194. package/dist/lib/unified-review-executor.test.d.ts +5 -0
  195. package/dist/lib/unified-review-executor.test.d.ts.map +1 -0
  196. package/dist/lib/unified-review-executor.test.js +344 -0
  197. package/dist/lib/unified-review-executor.test.js.map +1 -0
  198. package/dist/lib/write-json-output.d.ts +13 -0
  199. package/dist/lib/write-json-output.d.ts.map +1 -0
  200. package/dist/lib/write-json-output.js +37 -0
  201. package/dist/lib/write-json-output.js.map +1 -0
  202. package/dist/opencode/agent-loader.d.ts +3 -4
  203. package/dist/opencode/agent-loader.d.ts.map +1 -1
  204. package/dist/opencode/agent-loader.js +48 -34
  205. package/dist/opencode/agent-loader.js.map +1 -1
  206. package/dist/opencode/agent-skill-overlay.d.ts +11 -0
  207. package/dist/opencode/agent-skill-overlay.d.ts.map +1 -0
  208. package/dist/opencode/agent-skill-overlay.js +164 -0
  209. package/dist/opencode/agent-skill-overlay.js.map +1 -0
  210. package/dist/opencode/client.d.ts +11 -3
  211. package/dist/opencode/client.d.ts.map +1 -1
  212. package/dist/opencode/client.js +237 -71
  213. package/dist/opencode/client.js.map +1 -1
  214. package/dist/opencode/client.test.d.ts +2 -0
  215. package/dist/opencode/client.test.d.ts.map +1 -0
  216. package/dist/opencode/client.test.js +317 -0
  217. package/dist/opencode/client.test.js.map +1 -0
  218. package/dist/opencode/opencode-paths.d.ts +2 -0
  219. package/dist/opencode/opencode-paths.d.ts.map +1 -0
  220. package/dist/opencode/opencode-paths.js +7 -0
  221. package/dist/opencode/opencode-paths.js.map +1 -0
  222. package/dist/opencode/skill-loader.d.ts +6 -0
  223. package/dist/opencode/skill-loader.d.ts.map +1 -0
  224. package/dist/opencode/skill-loader.js +36 -0
  225. package/dist/opencode/skill-loader.js.map +1 -0
  226. package/package.json +7 -7
  227. package/.opencode/agent/github-reviewer.md +0 -77
  228. package/.opencode/agent/gitlab-reviewer.md +0 -77
  229. package/.opencode/agent/local-reviewer.md +0 -63
@@ -4,14 +4,30 @@
4
4
  export interface AgentConfig {
5
5
  name: string;
6
6
  model?: string;
7
+ skills?: string[];
7
8
  }
8
9
  /**
9
10
  * Model override mapping from agent name to model identifier
10
11
  */
11
12
  export type ModelOverrides = Record<string, string>;
13
+ /**
14
+ * Custom OpenAI-compatible provider configuration
15
+ */
16
+ export interface CustomProvider {
17
+ npm: string;
18
+ name: string;
19
+ options: {
20
+ baseURL: string;
21
+ apiKey: string;
22
+ };
23
+ models: Record<string, {
24
+ name: string;
25
+ }>;
26
+ }
12
27
  export interface DRSConfig {
13
28
  opencode: {
14
- serverUrl: string;
29
+ serverUrl?: string;
30
+ provider?: Record<string, CustomProvider>;
15
31
  };
16
32
  gitlab: {
17
33
  url: string;
@@ -22,18 +38,37 @@ export interface DRSConfig {
22
38
  };
23
39
  review: {
24
40
  agents: (string | AgentConfig)[];
41
+ default?: {
42
+ model?: string;
43
+ skills?: string[];
44
+ };
25
45
  defaultModel?: string;
26
- autoReview: boolean;
27
- reviewOnMention: boolean;
28
- reviewOnLabel: string[];
29
46
  ignorePatterns: string[];
30
47
  includePatterns?: string[];
48
+ mode?: ReviewMode;
49
+ unified?: {
50
+ model?: string;
51
+ severityThreshold?: ReviewSeverity;
52
+ };
53
+ describe?: {
54
+ enabled?: boolean;
55
+ postDescription?: boolean;
56
+ };
57
+ };
58
+ describe?: {
59
+ model?: string;
60
+ includeProjectContext?: boolean;
31
61
  };
32
- output: {
33
- format: 'gitlab' | 'github' | 'terminal' | 'json' | 'markdown';
34
- verbosity: 'minimal' | 'normal' | 'detailed';
62
+ contextCompression?: {
63
+ enabled?: boolean;
64
+ maxTokens?: number;
65
+ softBufferTokens?: number;
66
+ hardBufferTokens?: number;
67
+ tokenEstimateDivisor?: number;
35
68
  };
36
69
  }
70
+ export type ReviewMode = 'multi-agent' | 'unified' | 'hybrid';
71
+ export type ReviewSeverity = 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL';
37
72
  /**
38
73
  * Load configuration from various sources with precedence:
39
74
  * 1. CLI arguments (passed as overrides)
@@ -55,6 +90,8 @@ export declare function shouldIgnoreFile(filePath: string, config: DRSConfig): b
55
90
  * Normalize agent configuration from mixed format to AgentConfig array
56
91
  */
57
92
  export declare function normalizeAgentConfig(agents: (string | AgentConfig)[]): AgentConfig[];
93
+ export declare function getDefaultModel(config: DRSConfig): string | undefined;
94
+ export declare function getDefaultSkills(config: DRSConfig): string[];
58
95
  /**
59
96
  * Extract agent names from configuration
60
97
  */
@@ -66,6 +103,25 @@ export declare function getAgentNames(config: DRSConfig): string[];
66
103
  * 2. Environment variable REVIEW_AGENT_<NAME>_MODEL (e.g., REVIEW_AGENT_SECURITY_MODEL)
67
104
  * 3. defaultModel in config
68
105
  * 4. Environment variable REVIEW_DEFAULT_MODEL
106
+ *
69
107
  */
70
108
  export declare function getModelOverrides(config: DRSConfig): ModelOverrides;
109
+ /**
110
+ * Get model override for the unified reviewer agent
111
+ * Precedence:
112
+ * 1. review.unified.model in config
113
+ * 2. Environment variable REVIEW_UNIFIED_MODEL
114
+ * 3. review.defaultModel in config (fallback)
115
+ * 4. Environment variable REVIEW_DEFAULT_MODEL (fallback)
116
+ */
117
+ export declare function getUnifiedModelOverride(config: DRSConfig): ModelOverrides;
118
+ /**
119
+ * Get model override for the describer agent
120
+ * Precedence:
121
+ * 1. describe.model in config
122
+ * 2. Environment variable DESCRIBE_MODEL
123
+ * 3. review.defaultModel in config (fallback)
124
+ * 4. Environment variable REVIEW_DEFAULT_MODEL (fallback)
125
+ */
126
+ export declare function getDescriberModelOverride(config: DRSConfig): ModelOverrides;
71
127
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,SAAS;IAExB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAGF,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAGF,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAGF,MAAM,EAAE;QACN,MAAM,EAAE,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC;QACjC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,eAAe,EAAE,OAAO,CAAC;QACzB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IAGF,MAAM,EAAE;QACN,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;QAC/D,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;KAC9C,CAAC;CACH;AAmCD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CA6C1F;AA8BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAsBtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAqB7E;AAUD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,GAAG,WAAW,EAAE,CAOpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,CAEzD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc,CAuBnE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { resolve } from 'path';
3
3
  import * as yaml from 'yaml';
4
4
  const DEFAULT_CONFIG = {
5
5
  opencode: {
6
- serverUrl: process.env.OPENCODE_SERVER || '', // Empty string means use in-process server
6
+ serverUrl: process.env.OPENCODE_SERVER || undefined,
7
7
  },
8
8
  gitlab: {
9
9
  url: process.env.GITLAB_URL || 'https://gitlab.com',
@@ -13,24 +13,38 @@ const DEFAULT_CONFIG = {
13
13
  token: process.env.GITHUB_TOKEN || '',
14
14
  },
15
15
  review: {
16
- agents: ['security', 'quality', 'style', 'performance'],
17
- autoReview: true,
18
- reviewOnMention: true,
19
- reviewOnLabel: ['needs-review', 'security-review'],
16
+ agents: ['security', 'quality', 'style', 'performance', 'documentation'],
17
+ default: {
18
+ model: process.env.REVIEW_DEFAULT_MODEL || 'anthropic/claude-sonnet-4-5-20250929',
19
+ skills: [],
20
+ },
20
21
  ignorePatterns: [
21
22
  '*.test.ts',
22
23
  '*.spec.ts',
23
24
  '**/__tests__/**',
24
25
  '**/__mocks__/**',
25
- '*.md',
26
26
  'package-lock.json',
27
27
  'yarn.lock',
28
28
  'pnpm-lock.yaml',
29
29
  ],
30
+ mode: 'multi-agent',
31
+ unified: {
32
+ severityThreshold: 'HIGH',
33
+ },
34
+ describe: {
35
+ enabled: false,
36
+ postDescription: false,
37
+ },
30
38
  },
31
- output: {
32
- format: 'terminal',
33
- verbosity: 'normal',
39
+ contextCompression: {
40
+ enabled: true,
41
+ maxTokens: 32000,
42
+ softBufferTokens: 1500,
43
+ hardBufferTokens: 1000,
44
+ tokenEstimateDivisor: 4,
45
+ },
46
+ describe: {
47
+ includeProjectContext: true,
34
48
  },
35
49
  };
36
50
  /**
@@ -75,11 +89,41 @@ export function loadConfig(projectPath, overrides) {
75
89
  }
76
90
  if (process.env.REVIEW_DEFAULT_MODEL) {
77
91
  config.review.defaultModel = process.env.REVIEW_DEFAULT_MODEL;
92
+ config.review.default = mergeSection(config.review.default, {
93
+ model: process.env.REVIEW_DEFAULT_MODEL,
94
+ });
95
+ }
96
+ if (process.env.REVIEW_MODE) {
97
+ config.review.mode = process.env.REVIEW_MODE;
98
+ }
99
+ if (process.env.REVIEW_UNIFIED_MODEL) {
100
+ config.review.unified = {
101
+ ...config.review.unified,
102
+ model: process.env.REVIEW_UNIFIED_MODEL,
103
+ };
104
+ }
105
+ if (process.env.REVIEW_UNIFIED_THRESHOLD) {
106
+ config.review.unified = {
107
+ ...config.review.unified,
108
+ severityThreshold: process.env.REVIEW_UNIFIED_THRESHOLD,
109
+ };
110
+ }
111
+ // Validate required fields
112
+ if (!getDefaultModel(config)) {
113
+ 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' +
114
+ 'Run "drs init" to configure your project.');
78
115
  }
79
116
  // Apply CLI overrides
80
117
  if (overrides) {
81
118
  config = mergeConfig(config, overrides);
82
119
  }
120
+ if (!config.review.mode) {
121
+ config.review.mode = 'multi-agent';
122
+ }
123
+ const validModes = ['multi-agent', 'unified', 'hybrid'];
124
+ if (!validModes.includes(config.review.mode)) {
125
+ throw new Error(`Invalid review mode "${config.review.mode}". Valid options: ${validModes.join(', ')}`);
126
+ }
83
127
  return config;
84
128
  }
85
129
  /**
@@ -91,19 +135,23 @@ function mergeConfig(base, override) {
91
135
  gitlab: mergeSection(base.gitlab, override.gitlab),
92
136
  github: mergeSection(base.github, override.github),
93
137
  review: mergeSection(base.review, override.review),
94
- output: mergeSection(base.output, override.output),
138
+ describe: mergeSection(base.describe, override.describe),
139
+ contextCompression: mergeSection(base.contextCompression, override.contextCompression),
95
140
  };
96
141
  }
97
142
  /**
98
143
  * Merge a config section, skipping undefined values
99
144
  */
100
145
  function mergeSection(base, override) {
146
+ const safeBase = (base ?? {});
101
147
  if (!override)
102
- return base;
103
- const result = { ...base };
148
+ return safeBase;
149
+ const result = { ...safeBase };
104
150
  for (const key in override) {
105
- if (override[key] !== undefined) {
106
- result[key] = override[key];
151
+ const value = override[key];
152
+ if (value !== undefined) {
153
+ // TypeScript knows that value is T[Extract<keyof T, string>] which is assignable to T[keyof T]
154
+ result[key] = value;
107
155
  }
108
156
  }
109
157
  return result;
@@ -119,12 +167,13 @@ export function validateConfig(config, platform) {
119
167
  if (platform === 'github' && !config.github.token) {
120
168
  throw new Error('GitHub token is required. Set GITHUB_TOKEN environment variable or configure in config file');
121
169
  }
122
- // OPENCODE_SERVER is now optional - we'll start in-process if not provided
123
- if (!config.opencode.serverUrl) {
124
- console.log('ℹ️ OPENCODE_SERVER not set. Will start OpenCode server in-process.');
125
- }
126
170
  if (config.review.agents.length === 0) {
127
- throw new Error('At least one review agent must be configured');
171
+ if (config.review.mode !== 'unified') {
172
+ throw new Error('At least one review agent must be configured');
173
+ }
174
+ }
175
+ if (!getDefaultModel(config)) {
176
+ throw new Error('Default model is required. Run "drs init" to configure or set REVIEW_DEFAULT_MODEL environment variable.');
128
177
  }
129
178
  }
130
179
  /**
@@ -167,6 +216,18 @@ export function normalizeAgentConfig(agents) {
167
216
  return agent;
168
217
  });
169
218
  }
219
+ export function getDefaultModel(config) {
220
+ return (config.review.default?.model ??
221
+ config.review.defaultModel ??
222
+ process.env.REVIEW_DEFAULT_MODEL ??
223
+ undefined);
224
+ }
225
+ export function getDefaultSkills(config) {
226
+ if (!Array.isArray(config.review.default?.skills)) {
227
+ return [];
228
+ }
229
+ return config.review.default.skills.map(String).filter((skill) => skill.length > 0);
230
+ }
170
231
  /**
171
232
  * Extract agent names from configuration
172
233
  */
@@ -180,12 +241,13 @@ export function getAgentNames(config) {
180
241
  * 2. Environment variable REVIEW_AGENT_<NAME>_MODEL (e.g., REVIEW_AGENT_SECURITY_MODEL)
181
242
  * 3. defaultModel in config
182
243
  * 4. Environment variable REVIEW_DEFAULT_MODEL
244
+ *
183
245
  */
184
246
  export function getModelOverrides(config) {
185
247
  const overrides = {};
186
248
  const normalizedAgents = normalizeAgentConfig(config.review.agents);
187
249
  // Get default model from config or environment
188
- const defaultModel = config.review.defaultModel || process.env.REVIEW_DEFAULT_MODEL || undefined;
250
+ const defaultModel = getDefaultModel(config);
189
251
  for (const agent of normalizedAgents) {
190
252
  // Check per-agent environment variable (e.g., REVIEW_AGENT_SECURITY_MODEL)
191
253
  const envVarName = `REVIEW_AGENT_${agent.name.toUpperCase().replace(/[^A-Z0-9]/g, '_')}_MODEL`;
@@ -193,11 +255,43 @@ export function getModelOverrides(config) {
193
255
  // Precedence: agent.model > env var > defaultModel
194
256
  const model = agent.model || envModel || defaultModel;
195
257
  if (model) {
196
- // Map both the agent name and the review/<agent> format
197
- overrides[agent.name] = model;
258
+ // Use review/<agent> format which matches how agents are invoked
198
259
  overrides[`review/${agent.name}`] = model;
199
260
  }
200
261
  }
201
262
  return overrides;
202
263
  }
264
+ /**
265
+ * Get model override for the unified reviewer agent
266
+ * Precedence:
267
+ * 1. review.unified.model in config
268
+ * 2. Environment variable REVIEW_UNIFIED_MODEL
269
+ * 3. review.defaultModel in config (fallback)
270
+ * 4. Environment variable REVIEW_DEFAULT_MODEL (fallback)
271
+ */
272
+ export function getUnifiedModelOverride(config) {
273
+ const overrides = {};
274
+ const unifiedModel = config.review.unified?.model ?? process.env.REVIEW_UNIFIED_MODEL ?? getDefaultModel(config);
275
+ if (unifiedModel) {
276
+ overrides['review/unified-reviewer'] = unifiedModel;
277
+ }
278
+ return overrides;
279
+ }
280
+ /**
281
+ * Get model override for the describer agent
282
+ * Precedence:
283
+ * 1. describe.model in config
284
+ * 2. Environment variable DESCRIBE_MODEL
285
+ * 3. review.defaultModel in config (fallback)
286
+ * 4. Environment variable REVIEW_DEFAULT_MODEL (fallback)
287
+ */
288
+ export function getDescriberModelOverride(config) {
289
+ const overrides = {};
290
+ // Check for describer-specific model
291
+ const describerModel = config.describe?.model ?? process.env.DESCRIBE_MODEL ?? getDefaultModel(config);
292
+ if (describerModel) {
293
+ overrides['describe/pr-describer'] = describerModel;
294
+ }
295
+ return overrides;
296
+ }
203
297
  //# sourceMappingURL=config.js.map
@@ -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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"}
@@ -20,9 +20,17 @@ describe('Config', () => {
20
20
  });
21
21
  expect(config.review.agents).toEqual(['security']);
22
22
  });
23
- it('should use default agents when no override provided', () => {
23
+ it('should load agents from config file when no override provided', () => {
24
24
  const config = loadConfig(process.cwd());
25
- expect(config.review.agents).toEqual(['security', 'quality', 'style', 'performance']);
25
+ // Should load whatever is configured in the project's .drs/drs.config.yaml
26
+ expect(config.review.agents).toBeDefined();
27
+ expect(Array.isArray(config.review.agents)).toBe(true);
28
+ expect(config.review.agents.length).toBeGreaterThan(0);
29
+ // Verify each agent is a string (simple format) or object (detailed format)
30
+ config.review.agents.forEach((agent) => {
31
+ const isValid = typeof agent === 'string' || (typeof agent === 'object' && 'name' in agent);
32
+ expect(isValid).toBe(true);
33
+ });
26
34
  });
27
35
  });
28
36
  //# sourceMappingURL=config.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/lib/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS;aAClB;SACK,CAAC,CAAC;QAEV,2DAA2D;QAC3D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,UAAU,CAAC;aACd;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAEzC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/lib/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,SAAS;aAClB;SACK,CAAC,CAAC;QAEV,2DAA2D;QAC3D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,CAAC,UAAU,CAAC;aACd;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAEzC,2EAA2E;QAC3E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAEvD,4EAA4E;QAC5E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC;YAC5F,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { FileWithDiff } from './review-core.js';
2
+ export interface ContextCompressionOptions {
3
+ enabled?: boolean;
4
+ maxTokens?: number;
5
+ softBufferTokens?: number;
6
+ hardBufferTokens?: number;
7
+ tokenEstimateDivisor?: number;
8
+ }
9
+ export interface ContextCompressionResult {
10
+ files: FileWithDiff[];
11
+ omitted: {
12
+ deletionsOnly: string[];
13
+ dueToBudget: string[];
14
+ };
15
+ }
16
+ export declare function stripDeletionOnlyHunks(patch: string): string;
17
+ export declare function compressFilesWithDiffs(files: FileWithDiff[], options?: ContextCompressionOptions): ContextCompressionResult;
18
+ export declare function formatCompressionSummary(result: ContextCompressionResult): string;
19
+ //# sourceMappingURL=context-compression.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compression.d.ts","sourceRoot":"","sources":["../../src/lib/context-compression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AA6BD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgD5D;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,CAAC,EAAE,yBAAyB,GAClC,wBAAwB,CAsG1B;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAwBjF"}
@@ -0,0 +1,170 @@
1
+ const DEFAULT_COMPRESSION_OPTIONS = {
2
+ enabled: true,
3
+ maxTokens: 8000,
4
+ softBufferTokens: 1500,
5
+ hardBufferTokens: 1000,
6
+ tokenEstimateDivisor: 4,
7
+ };
8
+ function normalizeOptions(options) {
9
+ return {
10
+ ...DEFAULT_COMPRESSION_OPTIONS,
11
+ ...options,
12
+ };
13
+ }
14
+ function estimateTokens(text, divisor) {
15
+ const normalizedDivisor = divisor > 0 ? divisor : DEFAULT_COMPRESSION_OPTIONS.tokenEstimateDivisor;
16
+ return Math.ceil(text.length / normalizedDivisor);
17
+ }
18
+ function buildDiffEntry(file) {
19
+ return `### ${file.filename}\n\n\`\`\`diff\n${file.patch}\n\`\`\``;
20
+ }
21
+ export function stripDeletionOnlyHunks(patch) {
22
+ const lines = patch.split('\n');
23
+ const preserved = [];
24
+ const prefix = [];
25
+ let currentHunk = [];
26
+ let sawHunk = false;
27
+ let hunkHasAddition = false;
28
+ const flushHunk = () => {
29
+ if (currentHunk.length > 0) {
30
+ if (hunkHasAddition) {
31
+ preserved.push(...currentHunk);
32
+ }
33
+ currentHunk = [];
34
+ hunkHasAddition = false;
35
+ }
36
+ };
37
+ for (const line of lines) {
38
+ if (line.startsWith('@@')) {
39
+ sawHunk = true;
40
+ flushHunk();
41
+ currentHunk.push(line);
42
+ continue;
43
+ }
44
+ if (!sawHunk) {
45
+ prefix.push(line);
46
+ continue;
47
+ }
48
+ currentHunk.push(line);
49
+ if (line.startsWith('+') && !line.startsWith('+++')) {
50
+ hunkHasAddition = true;
51
+ }
52
+ }
53
+ flushHunk();
54
+ if (!sawHunk) {
55
+ return patch.trim();
56
+ }
57
+ if (preserved.length === 0) {
58
+ return '';
59
+ }
60
+ return [...prefix, ...preserved].join('\n').trim();
61
+ }
62
+ export function compressFilesWithDiffs(files, options) {
63
+ const resolvedOptions = normalizeOptions(options);
64
+ if (!resolvedOptions.enabled) {
65
+ return {
66
+ files,
67
+ omitted: {
68
+ deletionsOnly: [],
69
+ dueToBudget: [],
70
+ },
71
+ };
72
+ }
73
+ const deletionsOnly = [];
74
+ const budgetOmitted = [];
75
+ const filesWithDiffs = [];
76
+ for (const file of files) {
77
+ if (!file.patch)
78
+ continue;
79
+ const trimmedPatch = stripDeletionOnlyHunks(file.patch ?? '');
80
+ if (!trimmedPatch.trim()) {
81
+ deletionsOnly.push(file.filename);
82
+ continue;
83
+ }
84
+ filesWithDiffs.push({
85
+ filename: file.filename,
86
+ patch: trimmedPatch,
87
+ });
88
+ }
89
+ if (filesWithDiffs.length === 0) {
90
+ return {
91
+ files,
92
+ omitted: {
93
+ deletionsOnly,
94
+ dueToBudget: [],
95
+ },
96
+ };
97
+ }
98
+ const entries = filesWithDiffs.map((file) => {
99
+ const entryText = buildDiffEntry(file);
100
+ return {
101
+ file,
102
+ entryText,
103
+ tokens: estimateTokens(entryText, resolvedOptions.tokenEstimateDivisor),
104
+ };
105
+ });
106
+ const totalTokens = entries.reduce((sum, entry) => sum + entry.tokens, 0);
107
+ const softLimit = resolvedOptions.maxTokens - resolvedOptions.softBufferTokens;
108
+ const hardLimit = resolvedOptions.maxTokens - resolvedOptions.hardBufferTokens;
109
+ if (totalTokens <= softLimit) {
110
+ const patchLookup = new Map(filesWithDiffs.map((file) => [file.filename, file.patch]));
111
+ return {
112
+ files: files.map((file) => file.patch ? { filename: file.filename, patch: patchLookup.get(file.filename) } : file),
113
+ omitted: {
114
+ deletionsOnly,
115
+ dueToBudget: [],
116
+ },
117
+ };
118
+ }
119
+ const sorted = [...entries].sort((a, b) => {
120
+ if (b.tokens !== a.tokens)
121
+ return b.tokens - a.tokens;
122
+ return a.file.filename.localeCompare(b.file.filename);
123
+ });
124
+ const kept = [];
125
+ let currentTokens = 0;
126
+ for (const entry of sorted) {
127
+ if (currentTokens > hardLimit) {
128
+ budgetOmitted.push(entry.file.filename);
129
+ continue;
130
+ }
131
+ if (currentTokens + entry.tokens > softLimit) {
132
+ budgetOmitted.push(entry.file.filename);
133
+ continue;
134
+ }
135
+ kept.push(entry.file);
136
+ currentTokens += entry.tokens;
137
+ }
138
+ const keptLookup = new Map(kept.map((entry) => [entry.filename, entry.patch]));
139
+ const keptFiles = files.map((file) => {
140
+ if (!file.patch)
141
+ return file;
142
+ const keptPatch = keptLookup.get(file.filename);
143
+ return keptPatch ? { filename: file.filename, patch: keptPatch } : { filename: file.filename };
144
+ });
145
+ return {
146
+ files: keptFiles,
147
+ omitted: {
148
+ deletionsOnly,
149
+ dueToBudget: budgetOmitted,
150
+ },
151
+ };
152
+ }
153
+ export function formatCompressionSummary(result) {
154
+ const sections = [];
155
+ if (result.omitted.deletionsOnly.length > 0) {
156
+ sections.push(`- Deletions-only changes (omitted from diff content):\n${result.omitted.deletionsOnly
157
+ .map((name) => ` - ${name}`)
158
+ .join('\n')}`);
159
+ }
160
+ if (result.omitted.dueToBudget.length > 0) {
161
+ sections.push(`- Omitted due to token budget:\n${result.omitted.dueToBudget
162
+ .map((name) => ` - ${name}`)
163
+ .join('\n')}`);
164
+ }
165
+ if (sections.length === 0) {
166
+ return '';
167
+ }
168
+ return `## Omitted Files\n\n${sections.join('\n\n')}`;
169
+ }
170
+ //# sourceMappingURL=context-compression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compression.js","sourceRoot":"","sources":["../../src/lib/context-compression.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=context-compression.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-compression.test.d.ts","sourceRoot":"","sources":["../../src/lib/context-compression.test.ts"],"names":[],"mappings":""}