@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
@@ -6,8 +6,10 @@
6
6
  * 2. Start an OpenCode server in-process (when baseUrl is not provided)
7
7
  */
8
8
  import { createOpencode, createOpencodeClient as createSDKClient } from '@opencode-ai/sdk';
9
- import * as fs from 'fs';
10
- import * as path from 'path';
9
+ import net from 'net';
10
+ import { getDefaultSkills, normalizeAgentConfig } from '../lib/config.js';
11
+ import { createAgentSkillOverlay } from './agent-skill-overlay.js';
12
+ const SERVER_START_TIMEOUT_MS = 10000;
11
13
  /**
12
14
  * OpenCode client that can start a server in-process or connect to remote
13
15
  */
@@ -17,6 +19,8 @@ export class OpencodeClient {
17
19
  inProcessServer;
18
20
  client;
19
21
  config;
22
+ overlay;
23
+ projectRootEnv;
20
24
  constructor(config) {
21
25
  this.baseUrl = config.baseUrl;
22
26
  this.directory = config.directory;
@@ -35,87 +39,165 @@ export class OpencodeClient {
35
39
  }
36
40
  else {
37
41
  // Start server in-process
38
- // OpenCode SDK handles provider authentication automatically via environment variables
39
- // (e.g., ANTHROPIC_API_KEY, ZHIPU_API_KEY, OPENAI_API_KEY, etc.)
40
- // Load OpenCode configuration from .opencode/opencode.jsonc
41
- let opencodeConfig = {
42
- model: 'anthropic/claude-opus-4-20250514',
42
+ // Build OpenCode config programmatically from DRS config
43
+ const opencodeConfig = {
44
+ // Tools available to DRS review agents
45
+ tools: {
46
+ Read: true,
47
+ Glob: true,
48
+ Grep: true,
49
+ Bash: true,
50
+ write_json_output: true,
51
+ Write: false,
52
+ Edit: false,
53
+ },
43
54
  };
44
- try {
45
- const configPath = path.join(this.directory || process.cwd(), '.opencode', 'opencode.jsonc');
46
- if (fs.existsSync(configPath)) {
47
- const configContent = fs.readFileSync(configPath, 'utf-8');
48
- // Strip JSONC to valid JSON
49
- const lines = configContent.split('\n');
50
- const cleanedLines = lines
51
- .map((line) => {
52
- // Remove single-line comments
53
- const commentIndex = line.indexOf('//');
54
- if (commentIndex !== -1) {
55
- // Check if // is inside a string
56
- const beforeComment = line.substring(0, commentIndex);
57
- const quoteCount = (beforeComment.match(/"/g) || []).length;
58
- // If odd number of quotes, // is inside a string, keep it
59
- if (quoteCount % 2 === 0) {
60
- line = line.substring(0, commentIndex);
61
- }
62
- }
63
- return line;
64
- })
65
- .filter((line) => line.trim().length > 0); // Remove empty lines
66
- let jsonContent = cleanedLines.join('\n');
67
- // Remove multi-line comments
68
- jsonContent = jsonContent.replace(/\/\*[\s\S]*?\*\//g, '');
69
- // Remove trailing commas
70
- jsonContent = jsonContent.replace(/,(\s*[}\]])/g, '$1');
71
- opencodeConfig = JSON.parse(jsonContent);
72
- }
55
+ // Set log level to DEBUG when --debug flag is used
56
+ // This shows full system prompts, tools, API calls, etc. from OpenCode
57
+ if (this.config.debug) {
58
+ opencodeConfig.logLevel = 'DEBUG';
59
+ console.log('🔍 OpenCode debug logging enabled');
73
60
  }
74
- catch (error) {
75
- console.error(`Failed to load OpenCode config: ${error}`);
61
+ // Add custom provider if configured in DRS config
62
+ if (this.config.provider && Object.keys(this.config.provider).length > 0) {
63
+ // Deep clone and resolve environment variable references
64
+ opencodeConfig.provider = this.resolveEnvReferences(this.config.provider);
65
+ const providerNames = Object.keys(this.config.provider);
66
+ console.log(`📦 Custom provider configured: ${providerNames.join(', ')}`);
76
67
  }
77
68
  // Apply model overrides from DRS config
78
69
  if (this.config.modelOverrides && Object.keys(this.config.modelOverrides).length > 0) {
79
- if (!opencodeConfig.agent) {
80
- opencodeConfig.agent = {};
81
- }
82
- console.log('📋 Applying model overrides from DRS config:');
70
+ const agentConfig = {};
71
+ console.log('📋 Agent model configuration:');
83
72
  // Merge model overrides into agent configuration
84
73
  for (const [agentName, model] of Object.entries(this.config.modelOverrides)) {
85
- if (!opencodeConfig.agent[agentName]) {
86
- opencodeConfig.agent[agentName] = {};
74
+ agentConfig[agentName] = { model };
75
+ console.log(` • ${agentName}: ${model}`);
76
+ }
77
+ opencodeConfig.agent = agentConfig;
78
+ console.log('');
79
+ }
80
+ if (this.config.config) {
81
+ const normalizedAgents = normalizeAgentConfig(this.config.config.review.agents);
82
+ const defaultSkills = getDefaultSkills(this.config.config);
83
+ const agentSkills = normalizedAgents
84
+ .map((agent) => {
85
+ const combined = new Set([
86
+ ...defaultSkills,
87
+ ...(agent.skills ? agent.skills.map(String) : []),
88
+ ]);
89
+ return {
90
+ name: agent.name,
91
+ skills: Array.from(combined).filter((skill) => skill.length > 0),
92
+ };
93
+ })
94
+ .filter((agent) => agent.skills.length > 0);
95
+ if (agentSkills.length > 0) {
96
+ console.log('🧩 Agent skill configuration:');
97
+ for (const agent of agentSkills) {
98
+ console.log(` • review/${agent.name}: ${agent.skills.join(', ')}`);
87
99
  }
88
- opencodeConfig.agent[agentName].model = model;
89
- // Log each agent's model (only show review/* agents to avoid duplication)
90
- if (agentName.startsWith('review/')) {
91
- console.log(` - ${agentName}: ${model}`);
100
+ console.log('');
101
+ }
102
+ }
103
+ // Debug: Print final OpenCode config
104
+ if (this.config.debug) {
105
+ console.log('🔧 DEBUG: Final OpenCode configuration (after env resolution):');
106
+ console.log('─'.repeat(50));
107
+ // Show environment variable status for custom providers
108
+ if (this.config.provider) {
109
+ console.log('\n📍 Environment variable status:');
110
+ for (const [providerName, provider] of Object.entries(this.config.provider)) {
111
+ const apiKeyConfig = provider.options?.apiKey;
112
+ if (apiKeyConfig && typeof apiKeyConfig === 'string') {
113
+ const envMatch = apiKeyConfig.match(/^\{env:([^}]+)\}$/);
114
+ if (envMatch) {
115
+ const envVarName = envMatch[1];
116
+ const envValue = process.env[envVarName];
117
+ if (envValue) {
118
+ console.log(` ✓ ${envVarName}: SET (${envValue.substring(0, 8)}...)`);
119
+ }
120
+ else {
121
+ console.log(` ✗ ${envVarName}: NOT SET`);
122
+ }
123
+ }
124
+ else {
125
+ console.log(` • ${providerName}: API key is hardcoded (not env var)`);
126
+ }
127
+ }
128
+ }
129
+ console.log('');
130
+ }
131
+ // Sanitize config to hide API keys
132
+ const sanitizedConfig = JSON.parse(JSON.stringify(opencodeConfig));
133
+ if (sanitizedConfig.provider) {
134
+ for (const providerName of Object.keys(sanitizedConfig.provider)) {
135
+ if (sanitizedConfig.provider[providerName]?.options?.apiKey) {
136
+ const apiKey = sanitizedConfig.provider[providerName].options.apiKey;
137
+ // Always redact since we've resolved env vars
138
+ if (apiKey && apiKey.length > 0) {
139
+ sanitizedConfig.provider[providerName].options.apiKey =
140
+ `***REDACTED (${apiKey.length} chars)***`;
141
+ }
142
+ else {
143
+ sanitizedConfig.provider[providerName].options.apiKey = '***EMPTY***';
144
+ }
145
+ }
146
+ }
147
+ }
148
+ console.log('Config being passed to OpenCode:');
149
+ console.log(JSON.stringify(sanitizedConfig, null, 2));
150
+ if (this.config.config) {
151
+ const normalizedAgents = normalizeAgentConfig(this.config.config.review.agents);
152
+ const defaultSkills = getDefaultSkills(this.config.config);
153
+ const agentSkills = normalizedAgents
154
+ .map((agent) => {
155
+ const combined = new Set([
156
+ ...defaultSkills,
157
+ ...(agent.skills ? agent.skills.map(String) : []),
158
+ ]);
159
+ return {
160
+ name: `review/${agent.name}`,
161
+ skills: Array.from(combined).filter((skill) => skill.length > 0),
162
+ };
163
+ })
164
+ .filter((agent) => agent.skills.length > 0);
165
+ if (agentSkills.length > 0) {
166
+ console.log('Agent skills (applied via overlay frontmatter):');
167
+ console.log(JSON.stringify(agentSkills, null, 2));
92
168
  }
93
169
  }
170
+ console.log('─'.repeat(50));
94
171
  console.log('');
95
172
  }
96
- else {
97
- console.log('ℹ️ No model overrides from DRS config. Using models from .opencode/opencode.jsonc\n');
98
- }
99
173
  // Change to project directory so OpenCode can discover agents
100
174
  const originalCwd = process.cwd();
101
175
  const projectDir = this.directory || originalCwd;
102
- if (projectDir !== originalCwd) {
103
- process.chdir(projectDir);
176
+ this.projectRootEnv = process.env.DRS_PROJECT_ROOT;
177
+ process.env.DRS_PROJECT_ROOT = projectDir;
178
+ if (this.config.config) {
179
+ this.overlay = await createAgentSkillOverlay(projectDir, this.config.config);
180
+ }
181
+ const discoveryRoot = this.overlay?.root ?? projectDir;
182
+ if (discoveryRoot !== originalCwd) {
183
+ process.chdir(discoveryRoot);
104
184
  }
105
185
  // OpenCode SDK reads provider-specific API keys from environment automatically
106
186
  // (ANTHROPIC_API_KEY, ZHIPU_API_KEY, OPENAI_API_KEY, etc.)
107
187
  this.inProcessServer = await createOpencode({
108
- hostname: this.config.serverHostname || '127.0.0.1',
109
- port: this.config.serverPort || 4096,
110
- timeout: 10000,
188
+ timeout: SERVER_START_TIMEOUT_MS,
111
189
  config: opencodeConfig,
112
190
  });
113
191
  // Restore original working directory
114
- if (projectDir !== originalCwd) {
192
+ if (discoveryRoot !== originalCwd) {
115
193
  process.chdir(originalCwd);
116
194
  }
117
195
  this.client = this.inProcessServer.client;
118
196
  this.baseUrl = this.inProcessServer.server.url;
197
+ const ready = await waitForServerReady(this.baseUrl);
198
+ if (!ready) {
199
+ console.warn(`⚠️ OpenCode server did not become ready at ${this.baseUrl}. Review requests may fail.`);
200
+ }
119
201
  }
120
202
  }
121
203
  /**
@@ -127,11 +209,11 @@ export class OpencodeClient {
127
209
  }
128
210
  try {
129
211
  // Step 1: Create empty session
130
- const createResponse = await this.client.session.create({
212
+ const createResponse = (await this.client.session.create({
131
213
  query: {
132
214
  directory: this.directory,
133
215
  },
134
- });
216
+ }));
135
217
  const sessionId = createResponse.data?.id;
136
218
  if (!sessionId) {
137
219
  throw new Error('Failed to get session ID from create response');
@@ -159,7 +241,11 @@ export class OpencodeClient {
159
241
  };
160
242
  }
161
243
  catch (error) {
162
- throw new Error(`Failed to create session: ${error instanceof Error ? error.message : String(error)}`);
244
+ const message = error instanceof Error ? error.message : String(error);
245
+ const connectionHint = message.includes('fetch failed') || message.includes('ECONNREFUSED')
246
+ ? ` Check the OpenCode server URL (${this.baseUrl ?? 'in-process'}) and ensure it is reachable.`
247
+ : '';
248
+ throw new Error(`Failed to create session: ${message}${connectionHint}`);
163
249
  }
164
250
  }
165
251
  /**
@@ -176,31 +262,28 @@ export class OpencodeClient {
176
262
  const maxAttempts = 60; // 60 attempts * 2s = 2 minutes max
177
263
  while (attempts < maxAttempts) {
178
264
  attempts++;
179
- // Get current messages
180
- const messagesResponse = await this.client.session.messages({
265
+ const messagesResponse = (await this.client.session.messages({
181
266
  path: { id: sessionId },
182
- });
183
- const messages = messagesResponse.data || [];
267
+ }));
268
+ const messages = messagesResponse.data ?? [];
184
269
  // Yield any new messages
185
270
  for (let i = lastMessageCount; i < messages.length; i++) {
186
271
  const msg = messages[i];
187
272
  yield {
188
- id: msg.info?.id || 'msg-' + Date.now(),
189
- role: (msg.info?.role || 'assistant'),
190
- content: msg.parts?.map((p) => p.text || '').join('') || '',
273
+ id: msg.info?.id ?? 'msg-' + Date.now(),
274
+ role: (msg.info?.role ?? 'assistant'),
275
+ content: msg.parts?.map((p) => p.text ?? '').join('') ?? '',
191
276
  timestamp: new Date(),
192
277
  };
193
278
  }
194
279
  lastMessageCount = messages.length;
195
280
  // Check if the last assistant message has completed
196
- const lastAssistantMsg = [...messages]
197
- .reverse()
198
- .find((m) => m.info?.role === 'assistant');
281
+ const lastAssistantMsg = [...messages].reverse().find((m) => m.info?.role === 'assistant');
199
282
  if (lastAssistantMsg) {
200
283
  const isComplete = lastAssistantMsg.info?.time?.completed !== undefined;
201
284
  const hasError = lastAssistantMsg.info?.error !== undefined;
202
285
  if (hasError) {
203
- throw new Error(`Agent error: ${JSON.stringify(lastAssistantMsg.info.error)}`);
286
+ throw new Error(`Agent error: ${JSON.stringify(lastAssistantMsg.info?.error)}`);
204
287
  }
205
288
  if (isComplete) {
206
289
  break;
@@ -266,7 +349,20 @@ export class OpencodeClient {
266
349
  */
267
350
  async shutdown() {
268
351
  if (this.inProcessServer) {
352
+ // Close the OpenCode server
269
353
  this.inProcessServer.server.close();
354
+ // Give server time to clean up connections
355
+ await new Promise((resolve) => setTimeout(resolve, 100));
356
+ }
357
+ if (this.overlay) {
358
+ await this.overlay.cleanup();
359
+ this.overlay = undefined;
360
+ }
361
+ if (this.projectRootEnv === undefined) {
362
+ delete process.env.DRS_PROJECT_ROOT;
363
+ }
364
+ else {
365
+ process.env.DRS_PROJECT_ROOT = this.projectRootEnv;
270
366
  }
271
367
  }
272
368
  /**
@@ -278,6 +374,76 @@ export class OpencodeClient {
278
374
  }
279
375
  return this.baseUrl;
280
376
  }
377
+ /**
378
+ * Resolve {env:VAR_NAME} references to actual environment variable values
379
+ */
380
+ resolveEnvReferences(obj) {
381
+ if (typeof obj === 'string') {
382
+ // Check for {env:VAR_NAME} pattern
383
+ const envMatch = obj.match(/^\{env:([^}]+)\}$/);
384
+ if (envMatch) {
385
+ const envVarName = envMatch[1];
386
+ const envValue = process.env[envVarName];
387
+ if (!envValue) {
388
+ console.warn(`⚠️ Environment variable ${envVarName} is not set`);
389
+ return '';
390
+ }
391
+ return envValue;
392
+ }
393
+ return obj;
394
+ }
395
+ if (Array.isArray(obj)) {
396
+ return obj.map((item) => this.resolveEnvReferences(item));
397
+ }
398
+ if (obj !== null && typeof obj === 'object') {
399
+ const resolved = {};
400
+ for (const [key, value] of Object.entries(obj)) {
401
+ resolved[key] = this.resolveEnvReferences(value);
402
+ }
403
+ return resolved;
404
+ }
405
+ return obj;
406
+ }
407
+ }
408
+ function parseServerEndpoint(baseUrl) {
409
+ try {
410
+ const url = new URL(baseUrl);
411
+ const port = url.port !== '' ? Number(url.port) : url.protocol === 'https:' ? 443 : 80;
412
+ if (!url.hostname || Number.isNaN(port)) {
413
+ return null;
414
+ }
415
+ return { host: url.hostname, port };
416
+ }
417
+ catch {
418
+ return null;
419
+ }
420
+ }
421
+ async function isServerReachable(baseUrl) {
422
+ const endpoint = parseServerEndpoint(baseUrl);
423
+ if (!endpoint) {
424
+ return false;
425
+ }
426
+ return new Promise((resolve) => {
427
+ const socket = net.createConnection(endpoint, () => {
428
+ socket.end();
429
+ resolve(true);
430
+ });
431
+ socket.setTimeout(1000);
432
+ socket.on('timeout', () => {
433
+ socket.destroy();
434
+ resolve(false);
435
+ });
436
+ socket.on('error', () => resolve(false));
437
+ });
438
+ }
439
+ async function waitForServerReady(baseUrl, attempts = 10, delayMs = 200) {
440
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
441
+ if (await isServerReachable(baseUrl)) {
442
+ return true;
443
+ }
444
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
445
+ }
446
+ return false;
281
447
  }
282
448
  /**
283
449
  * Create an OpenCode client with the given configuration
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/opencode/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/opencode/client.test.ts"],"names":[],"mappings":""}