autodev-cli 1.4.0 → 1.4.3

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 (237) hide show
  1. package/bin/autodev.js +0 -0
  2. package/out/agentBackup/archive.d.ts +44 -0
  3. package/out/agentBackup/archive.js +131 -0
  4. package/out/agentBackup/archive.js.map +1 -0
  5. package/out/agentBackup/export.d.ts +18 -0
  6. package/out/agentBackup/export.js +92 -0
  7. package/out/agentBackup/export.js.map +1 -0
  8. package/out/agentBackup/import.d.ts +21 -0
  9. package/out/agentBackup/import.js +40 -0
  10. package/out/agentBackup/import.js.map +1 -0
  11. package/out/agentBackup/index.d.ts +6 -0
  12. package/out/agentBackup/index.js +11 -0
  13. package/out/agentBackup/index.js.map +1 -0
  14. package/out/agentBackup/layout.d.ts +30 -0
  15. package/out/agentBackup/layout.js +126 -0
  16. package/out/agentBackup/layout.js.map +1 -0
  17. package/out/agentBackup/manifest.d.ts +24 -0
  18. package/out/agentBackup/manifest.js +70 -0
  19. package/out/agentBackup/manifest.js.map +1 -0
  20. package/out/agentBackup/opencodeDb.d.ts +20 -0
  21. package/out/agentBackup/opencodeDb.js +213 -0
  22. package/out/agentBackup/opencodeDb.js.map +1 -0
  23. package/out/agentBackup/sessionProviders.d.ts +35 -0
  24. package/out/agentBackup/sessionProviders.js +263 -0
  25. package/out/agentBackup/sessionProviders.js.map +1 -0
  26. package/out/agentBackup/upload.d.ts +9 -0
  27. package/out/agentBackup/upload.js +121 -0
  28. package/out/agentBackup/upload.js.map +1 -0
  29. package/out/cli.d.ts +1 -0
  30. package/out/cli.js +8 -0
  31. package/out/cli.js.map +1 -1
  32. package/out/cliExit.d.ts +34 -0
  33. package/out/cliExit.js +159 -0
  34. package/out/cliExit.js.map +1 -0
  35. package/out/commands/config.d.ts +2 -0
  36. package/out/commands/config.js +7 -7
  37. package/out/commands/config.js.map +1 -1
  38. package/out/commands/connect.d.ts +2 -0
  39. package/out/commands/connect.js +11 -0
  40. package/out/commands/connect.js.map +1 -1
  41. package/out/commands/export.d.ts +2 -0
  42. package/out/commands/export.js +79 -0
  43. package/out/commands/export.js.map +1 -0
  44. package/out/commands/import.d.ts +2 -0
  45. package/out/commands/import.js +92 -0
  46. package/out/commands/import.js.map +1 -0
  47. package/out/commands/init.d.ts +16 -0
  48. package/out/commands/init.js +9 -5
  49. package/out/commands/init.js.map +1 -1
  50. package/out/commands/resume.d.ts +2 -0
  51. package/out/commands/resume.js +65 -0
  52. package/out/commands/resume.js.map +1 -0
  53. package/out/commands/sessions.d.ts +2 -0
  54. package/out/commands/sessions.js +64 -0
  55. package/out/commands/sessions.js.map +1 -0
  56. package/out/commands/start.d.ts +2 -0
  57. package/out/commands/start.js +40 -7
  58. package/out/commands/start.js.map +1 -1
  59. package/out/commands/status.d.ts +2 -0
  60. package/out/commands/status.js +3 -3
  61. package/out/commands/status.js.map +1 -1
  62. package/out/commands/tailOutput.d.ts +12 -0
  63. package/out/commands/up.d.ts +3 -0
  64. package/out/configManager.d.ts +42 -0
  65. package/out/configManager.js +430 -0
  66. package/out/configManager.js.map +1 -0
  67. package/out/connect.d.ts +4 -0
  68. package/out/connect.js +7 -7
  69. package/out/connect.js.map +1 -1
  70. package/out/core/adapters.d.ts +34 -0
  71. package/out/core/adapters.js +84 -0
  72. package/out/core/adapters.js.map +1 -0
  73. package/out/core/commandHelpers.d.ts +12 -0
  74. package/out/core/commandHelpers.js +96 -0
  75. package/out/core/commandHelpers.js.map +1 -0
  76. package/out/core/projectMcp.d.ts +25 -0
  77. package/out/core/projectMcp.js +144 -0
  78. package/out/core/projectMcp.js.map +1 -0
  79. package/out/core/provider/BaseProvider.d.ts +14 -0
  80. package/out/core/provider/BaseProvider.js +25 -0
  81. package/out/core/provider/BaseProvider.js.map +1 -0
  82. package/out/core/provider/ProviderRegistry.d.ts +12 -0
  83. package/out/core/provider/ProviderRegistry.js +40 -0
  84. package/out/core/provider/ProviderRegistry.js.map +1 -0
  85. package/out/core/provider/contract.d.ts +62 -0
  86. package/out/core/provider/contract.js +9 -0
  87. package/out/core/provider/contract.js.map +1 -0
  88. package/out/core/provider/implementations.d.ts +54 -0
  89. package/out/core/provider/implementations.js +147 -0
  90. package/out/core/provider/implementations.js.map +1 -0
  91. package/out/core/settingsLoader.d.ts +221 -0
  92. package/out/core/settingsLoader.js +176 -0
  93. package/out/core/settingsLoader.js.map +1 -0
  94. package/out/discordGateway.d.ts +26 -0
  95. package/out/discordGateway.js +230 -0
  96. package/out/discordGateway.js.map +1 -0
  97. package/out/discordPoller.d.ts +28 -0
  98. package/out/discordPoller.js +247 -0
  99. package/out/discordPoller.js.map +1 -0
  100. package/out/dispatcher.d.ts +12 -0
  101. package/out/dispatcher.js +214 -0
  102. package/out/dispatcher.js.map +1 -0
  103. package/out/emailPoller.d.ts +42 -0
  104. package/out/emailPoller.js +221 -0
  105. package/out/emailPoller.js.map +1 -0
  106. package/out/git/gitService.d.ts +36 -0
  107. package/out/git/gitService.js +165 -0
  108. package/out/git/gitService.js.map +1 -0
  109. package/out/hookEventNormalizer.d.ts +39 -0
  110. package/out/hookEventNormalizer.js +397 -0
  111. package/out/hookEventNormalizer.js.map +1 -0
  112. package/out/hooksManager.d.ts +25 -0
  113. package/out/hooksManager.js +471 -0
  114. package/out/hooksManager.js.map +1 -0
  115. package/out/launchIde.d.ts +14 -0
  116. package/out/logger.d.ts +12 -0
  117. package/out/mcpEmailTest.d.ts +29 -0
  118. package/out/mcpEmailTest.js +245 -0
  119. package/out/mcpEmailTest.js.map +1 -0
  120. package/out/mcpInstallCheck.d.ts +23 -0
  121. package/out/mcpInstallCheck.js +219 -0
  122. package/out/mcpInstallCheck.js.map +1 -0
  123. package/out/mcpManager.d.ts +35 -0
  124. package/out/mcpManager.js +371 -0
  125. package/out/mcpManager.js.map +1 -0
  126. package/out/messageBuilder.d.ts +54 -0
  127. package/out/messageBuilder.js +373 -0
  128. package/out/messageBuilder.js.map +1 -0
  129. package/out/openCodeHooksManager.d.ts +23 -0
  130. package/out/openCodeHooksManager.js +511 -0
  131. package/out/openCodeHooksManager.js.map +1 -0
  132. package/out/periodicActions.d.ts +63 -0
  133. package/out/periodicActions.js +237 -0
  134. package/out/periodicActions.js.map +1 -0
  135. package/out/profileBuilder.d.ts +29 -0
  136. package/out/profileBuilder.js +366 -0
  137. package/out/profileBuilder.js.map +1 -0
  138. package/out/prompt.d.ts +12 -0
  139. package/out/prompt.js +18 -0
  140. package/out/prompt.js.map +1 -0
  141. package/out/protocolSections.d.ts +26 -0
  142. package/out/protocolSections.js +209 -0
  143. package/out/protocolSections.js.map +1 -0
  144. package/out/providers/claudeCliProvider.d.ts +71 -0
  145. package/out/providers/claudeCliProvider.js +425 -0
  146. package/out/providers/claudeCliProvider.js.map +1 -0
  147. package/out/providers/claudeTuiProvider.d.ts +23 -0
  148. package/out/providers/claudeTuiProvider.js +296 -0
  149. package/out/providers/claudeTuiProvider.js.map +1 -0
  150. package/out/providers/copilotCliProvider.d.ts +16 -0
  151. package/out/providers/copilotCliProvider.js +44 -0
  152. package/out/providers/copilotCliProvider.js.map +1 -0
  153. package/out/providers/copilotSdkProvider.d.ts +12 -0
  154. package/out/providers/copilotSdkProvider.js +445 -0
  155. package/out/providers/copilotSdkProvider.js.map +1 -0
  156. package/out/providers/grokTuiProvider.d.ts +14 -0
  157. package/out/providers/grokTuiProvider.js +271 -0
  158. package/out/providers/grokTuiProvider.js.map +1 -0
  159. package/out/providers/opencodeCliProvider.d.ts +29 -0
  160. package/out/providers/opencodeCliProvider.js +199 -0
  161. package/out/providers/opencodeCliProvider.js.map +1 -0
  162. package/out/providers/opencodeSdkProvider.d.ts +22 -0
  163. package/out/providers/opencodeSdkProvider.js +557 -0
  164. package/out/providers/opencodeSdkProvider.js.map +1 -0
  165. package/out/providers.d.ts +9 -0
  166. package/out/providers.js +44 -0
  167. package/out/providers.js.map +1 -0
  168. package/out/rateLimit.d.ts +18 -0
  169. package/out/rateLimit.js +90 -0
  170. package/out/rateLimit.js.map +1 -0
  171. package/out/rdp/auth.d.ts +55 -0
  172. package/out/rdp/auth.js +197 -0
  173. package/out/rdp/auth.js.map +1 -0
  174. package/out/rdp/bridge.d.ts +86 -0
  175. package/out/rdp/bridge.js +1398 -0
  176. package/out/rdp/bridge.js.map +1 -0
  177. package/out/rdp/constants.d.ts +86 -0
  178. package/out/rdp/constants.js +182 -0
  179. package/out/rdp/constants.js.map +1 -0
  180. package/out/rdp/index.d.ts +7 -0
  181. package/out/rdp/index.js +14 -0
  182. package/out/rdp/index.js.map +1 -0
  183. package/out/rdp/session.d.ts +30 -0
  184. package/out/rdp/session.js +196 -0
  185. package/out/rdp/session.js.map +1 -0
  186. package/out/rdp/types.d.ts +27 -0
  187. package/out/rdp/types.js +6 -0
  188. package/out/rdp/types.js.map +1 -0
  189. package/out/sdk/index.d.ts +22 -0
  190. package/out/sdk/index.js +81 -0
  191. package/out/sdk/index.js.map +1 -0
  192. package/out/sessionState.d.ts +54 -0
  193. package/out/sessionState.js +284 -0
  194. package/out/sessionState.js.map +1 -0
  195. package/out/sessions.d.ts +11 -0
  196. package/out/sessions.js +32 -0
  197. package/out/sessions.js.map +1 -0
  198. package/out/taskLoop.d.ts +152 -0
  199. package/out/taskLoop.js +2505 -0
  200. package/out/taskLoop.js.map +1 -0
  201. package/out/todo.d.ts +42 -0
  202. package/out/todo.js +311 -0
  203. package/out/todo.js.map +1 -0
  204. package/out/todoWriteManager.d.ts +26 -0
  205. package/out/todoWriteManager.js +44 -0
  206. package/out/todoWriteManager.js.map +1 -0
  207. package/out/vnc/auth.d.ts +52 -0
  208. package/out/vnc/auth.js +181 -0
  209. package/out/vnc/auth.js.map +1 -0
  210. package/out/vnc/bridge.d.ts +40 -0
  211. package/out/vnc/bridge.js +540 -0
  212. package/out/vnc/bridge.js.map +1 -0
  213. package/out/vnc/constants.d.ts +8 -0
  214. package/out/vnc/constants.js +34 -0
  215. package/out/vnc/constants.js.map +1 -0
  216. package/out/vnc/des.d.ts +6 -0
  217. package/out/vnc/des.js +93 -0
  218. package/out/vnc/des.js.map +1 -0
  219. package/out/vnc/index.d.ts +7 -0
  220. package/out/vnc/index.js +13 -0
  221. package/out/vnc/index.js.map +1 -0
  222. package/out/vnc/session.d.ts +18 -0
  223. package/out/vnc/session.js +193 -0
  224. package/out/vnc/session.js.map +1 -0
  225. package/out/vnc/types.d.ts +16 -0
  226. package/out/vnc/types.js +6 -0
  227. package/out/vnc/types.js.map +1 -0
  228. package/out/webSocketPoller.d.ts +95 -0
  229. package/out/webSocketPoller.js +986 -0
  230. package/out/webSocketPoller.js.map +1 -0
  231. package/out/webhook.d.ts +37 -0
  232. package/out/webhook.js +265 -0
  233. package/out/webhook.js.map +1 -0
  234. package/out/webhookPoller.d.ts +40 -0
  235. package/out/webhookPoller.js +378 -0
  236. package/out/webhookPoller.js.map +1 -0
  237. package/package.json +54 -41
@@ -0,0 +1,430 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ConfigManager = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const os = __importStar(require("os"));
39
+ const path = __importStar(require("path"));
40
+ const mcpManager_1 = require("./mcpManager");
41
+ const settingsLoader_1 = require("./core/settingsLoader");
42
+ const projectMcp_1 = require("./core/projectMcp");
43
+ // ---------------------------------------------------------------------------
44
+ // ConfigManager — applies permission/settings files for each CLI provider
45
+ // and syncs default MCP servers to all of them.
46
+ //
47
+ // Covers:
48
+ // Claude CLI : ~/.claude/settings.json (permissions)
49
+ // <root>/.claude/settings.json (project-level allow:*)
50
+ // Copilot CLI : ~/.copilot/mcp-config.json (MCP only — no extra perms)
51
+ // OpenCode CLI: %APPDATA%/opencode/config.json (permission: {"*":"allow"})
52
+ // <root>/opencode.json (project-level)
53
+ //
54
+ // MCP entries are merged in via McpServerManager.addDefaults().
55
+ // This class is vscode-free so it can be tested or called independently.
56
+ // ---------------------------------------------------------------------------
57
+ class ConfigManager {
58
+ // -------------------------------------------------------------------------
59
+ // Claude CLI
60
+ // -------------------------------------------------------------------------
61
+ /**
62
+ * Write bypassPermissions to ~/.claude/settings.json and, if a workspace
63
+ * root is provided, allow:* to <root>/.claude/settings.json.
64
+ */
65
+ static applyClaudePermissions(root, log) {
66
+ // User-level: bypass all permission prompts
67
+ const userFile = path.join(os.homedir(), '.claude', 'settings.json');
68
+ _mergeJson(userFile, (cfg) => {
69
+ const perms = _obj(cfg['permissions']);
70
+ perms['defaultMode'] = 'bypassPermissions';
71
+ perms['skipDangerousModePermissionPrompt'] = true;
72
+ cfg['permissions'] = perms;
73
+ }, log, 'Claude user settings');
74
+ // Project-level: allow all tools
75
+ if (root) {
76
+ const projectFile = path.join(root, '.claude', 'settings.json');
77
+ _mergeJson(projectFile, (cfg) => {
78
+ const perms = _obj(cfg['permissions']);
79
+ perms['allow'] = ['*'];
80
+ cfg['permissions'] = perms;
81
+ }, log, 'Claude project settings');
82
+ }
83
+ }
84
+ // -------------------------------------------------------------------------
85
+ // OpenCode CLI
86
+ // -------------------------------------------------------------------------
87
+ /**
88
+ * Write permission:{"*":"allow"} to the OpenCode user config and optionally
89
+ * to <root>/opencode.json (project-level).
90
+ */
91
+ static applyOpenCodePermissions(root, log) {
92
+ // User-level config path reused from McpServerManager
93
+ const userFile = mcpManager_1.McpServerManager.configPathFor('opencode-cli');
94
+ _mergeJson(userFile, (cfg) => {
95
+ cfg['permission'] = { '*': 'allow' };
96
+ }, log, 'OpenCode user config');
97
+ // Project-level
98
+ if (root) {
99
+ const projectFile = path.join(root, 'opencode.json');
100
+ _mergeJson(projectFile, (cfg) => {
101
+ // Preserve any existing provider/model keys, only touch permission
102
+ cfg['permission'] = { '*': 'allow' };
103
+ }, log, 'OpenCode project config');
104
+ }
105
+ }
106
+ /**
107
+ * Enable or disable `setCacheKey: true` for all provider sections in the
108
+ * project-level `opencode.json`. When `enabled` is true, every existing
109
+ * provider entry gets `options.setCacheKey = true` added. When false, the
110
+ * key is deleted (options object is pruned if it becomes empty).
111
+ */
112
+ static applyOpenCodeCacheSettings(root, enabled, log) {
113
+ const projectFile = path.join(root, 'opencode.json');
114
+ _mergeJson(projectFile, (cfg) => {
115
+ const provider = _obj(cfg['provider']);
116
+ // Apply to every provider section that already exists in the file.
117
+ // We don't create new provider entries — only touch what's there so
118
+ // we don't accidentally set a key for a provider that isn't configured.
119
+ for (const providerName of Object.keys(provider)) {
120
+ const prov = _obj(provider[providerName]);
121
+ if (enabled) {
122
+ const opts = _obj(prov['options']);
123
+ opts['setCacheKey'] = true;
124
+ prov['options'] = opts;
125
+ }
126
+ else {
127
+ const opts = prov['options'];
128
+ if (opts && typeof opts === 'object') {
129
+ delete opts['setCacheKey'];
130
+ if (Object.keys(opts).length === 0) {
131
+ delete prov['options'];
132
+ }
133
+ }
134
+ }
135
+ provider[providerName] = prov;
136
+ }
137
+ cfg['provider'] = provider;
138
+ }, log, 'OpenCode cache settings');
139
+ }
140
+ /**
141
+ * Apply `timeout` and `chunkTimeout` to every provider section in the
142
+ * project-level `opencode.json`. Values of 0 mean "remove the key" so the
143
+ * OpenCode default applies.
144
+ */
145
+ static applyOpenCodeTimeoutSettings(root, timeoutMs, chunkTimeoutMs, log) {
146
+ const projectFile = path.join(root, 'opencode.json');
147
+ _mergeJson(projectFile, (cfg) => {
148
+ const provider = _obj(cfg['provider']);
149
+ for (const providerName of Object.keys(provider)) {
150
+ const prov = _obj(provider[providerName]);
151
+ const opts = _obj(prov['options']);
152
+ if (timeoutMs > 0) {
153
+ opts['timeout'] = timeoutMs;
154
+ }
155
+ else {
156
+ delete opts['timeout'];
157
+ }
158
+ if (chunkTimeoutMs > 0) {
159
+ opts['chunkTimeout'] = chunkTimeoutMs;
160
+ }
161
+ else {
162
+ delete opts['chunkTimeout'];
163
+ }
164
+ if (Object.keys(opts).length > 0) {
165
+ prov['options'] = opts;
166
+ }
167
+ else if ('options' in prov && Object.keys(_obj(prov['options'])).length === 0) {
168
+ delete prov['options'];
169
+ }
170
+ provider[providerName] = prov;
171
+ }
172
+ cfg['provider'] = provider;
173
+ }, log, 'OpenCode timeout settings');
174
+ }
175
+ // -------------------------------------------------------------------------
176
+ // MCP sync — project-local only (no global config modifications)
177
+ // -------------------------------------------------------------------------
178
+ /**
179
+ * Write MCP server definitions to project-local config files only.
180
+ * Covers: .claude/settings.local.json, .vscode/mcp.json, opencode.json, .mcp.json
181
+ * The memory server uses <root>/.autodev/memories/.mcp-graph.json as its storage file.
182
+ *
183
+ * The full server set is `DEFAULT_MCP_SERVERS` ∪ user-defined entries from
184
+ * `.autodev/settings.json:mcpServers`. User entries with the same name as
185
+ * a default override the default — that lets users tune env vars / args of
186
+ * the built-in servers (e.g. point `memory` at a different file).
187
+ */
188
+ static syncProjectMcpServers(root, log) {
189
+ const baseServers = [
190
+ ...mcpManager_1.DEFAULT_MCP_SERVERS,
191
+ {
192
+ name: 'memory',
193
+ command: 'npx',
194
+ args: ['-y', '@modelcontextprotocol/server-memory'],
195
+ env: {
196
+ MEMORY_FILE_PATH: '.autodev/memories/.mcp-graph.json',
197
+ },
198
+ tools: ['*'],
199
+ },
200
+ ];
201
+ // One-time migration: if .autodev/settings.json still carries an
202
+ // mcpServers block from before .mcp.json was the source of truth, copy
203
+ // the user entries into .mcp.json and strip them from settings.
204
+ let disabledBuiltins = [];
205
+ try {
206
+ const s = (0, settingsLoader_1.loadSettingsForRoot)(root);
207
+ disabledBuiltins = s.disabledBuiltinMcp ?? [];
208
+ const stale = s.mcpServers;
209
+ if (stale && Object.keys(stale).length > 0) {
210
+ _migrateLegacyMcpServers(root, stale, log);
211
+ }
212
+ }
213
+ catch { /* ignore */ }
214
+ // User entries now live in .mcp.json — read them straight from there.
215
+ let userMcp = (0, projectMcp_1.loadProjectUserMcp)(root);
216
+ // Heal mis-tagged migrations: any entry whose name matches a default
217
+ // server is a built-in, not a user entry — even if a previous migration
218
+ // tagged it _meta.kind="user". Re-tagging here lets the built-in toggle
219
+ // (disabledBuiltinMcp) actually take effect for these entries.
220
+ const defaultNames = new Set(baseServers.map(s => s.name));
221
+ const misTagged = Object.keys(userMcp).filter(n => defaultNames.has(n));
222
+ if (misTagged.length > 0) {
223
+ const cleaned = {};
224
+ for (const [name, e] of Object.entries(userMcp)) {
225
+ if (defaultNames.has(name))
226
+ continue;
227
+ cleaned[name] = { command: e.command, args: e.args, ...(e.env ? { env: e.env } : {}) };
228
+ }
229
+ try {
230
+ (0, projectMcp_1.saveProjectUserMcp)(root, cleaned);
231
+ log?.(`ConfigManager: re-tagged ${misTagged.length} mis-classified built-in entr${misTagged.length === 1 ? 'y' : 'ies'} (${misTagged.join(', ')})`);
232
+ userMcp = (0, projectMcp_1.loadProjectUserMcp)(root);
233
+ }
234
+ catch (e) {
235
+ log?.(`ConfigManager: failed re-tagging built-ins: ${e}`);
236
+ }
237
+ }
238
+ const builtinByName = new Map();
239
+ for (const s of baseServers) {
240
+ if (disabledBuiltins.includes(s.name))
241
+ continue;
242
+ builtinByName.set(s.name, s);
243
+ }
244
+ // User entries override built-ins (so a user can re-tune a default).
245
+ // Disabled entries (enabled:false) don't override — the builtin still syncs.
246
+ for (const [userName, userEntry] of Object.entries(userMcp)) {
247
+ if (userEntry.enabled === false)
248
+ continue;
249
+ builtinByName.delete(userName);
250
+ }
251
+ // Persist built-ins back to .mcp.json with _meta.kind="builtin" so the
252
+ // sidebar can tell them apart from user entries on the next read.
253
+ const builtinsForJson = {};
254
+ for (const [name, s] of builtinByName) {
255
+ builtinsForJson[name] = { command: s.command, args: s.args, ...(s.env ? { env: s.env } : {}) };
256
+ }
257
+ try {
258
+ (0, projectMcp_1.replaceProjectBuiltinMcp)(root, builtinsForJson);
259
+ }
260
+ catch (e) {
261
+ log?.(`ConfigManager: failed updating .mcp.json built-ins: ${e}`);
262
+ }
263
+ // Combined set fed to the legacy fan-out files (.vscode/mcp.json + opencode.json).
264
+ // Disabled user entries (enabled:false) are kept in .mcp.json for credential
265
+ // preservation but must NOT be propagated to other provider configs.
266
+ const servers = [
267
+ ...builtinByName.values(),
268
+ ...Object.entries(userMcp)
269
+ .filter(([, raw]) => raw.enabled !== false)
270
+ .map(([name, raw]) => ({
271
+ name,
272
+ command: raw.command,
273
+ args: Array.isArray(raw.args) ? raw.args : [],
274
+ ...(raw.env && typeof raw.env === 'object' ? { env: raw.env } : {}),
275
+ tools: ['*'],
276
+ })),
277
+ ];
278
+ // Strip any stale mcpServers we previously wrote into .claude/settings.json
279
+ // or .claude/settings.local.json so they don't shadow .mcp.json.
280
+ for (const stale of ['settings.json', 'settings.local.json']) {
281
+ const p = path.join(root, '.claude', stale);
282
+ if (!fs.existsSync(p))
283
+ continue;
284
+ try {
285
+ const cfg = JSON.parse(fs.readFileSync(p, 'utf8'));
286
+ if (cfg && typeof cfg.mcpServers === 'object' && cfg.mcpServers) {
287
+ delete cfg.mcpServers;
288
+ fs.writeFileSync(p, JSON.stringify(cfg, null, 2) + '\n', 'utf8');
289
+ log?.(`ConfigManager: removed stale mcpServers from .claude/${stale}`);
290
+ }
291
+ }
292
+ catch { /* ignore */ }
293
+ }
294
+ // VS Code workspace MCP: .vscode/mcp.json
295
+ _mergeJson(path.join(root, '.vscode', 'mcp.json'), (cfg) => {
296
+ const srv = _obj(cfg['servers']);
297
+ for (const s of servers) {
298
+ srv[s.name] = { command: s.command, args: s.args, ...(s.env ? { env: s.env } : {}) };
299
+ }
300
+ cfg['servers'] = srv;
301
+ }, log, 'VS Code MCP (.vscode/mcp.json)');
302
+ // OpenCode project config: opencode.json (merged with existing permission key)
303
+ _mergeJson(path.join(root, 'opencode.json'), (cfg) => {
304
+ const mcp = _obj(cfg['mcp']);
305
+ for (const s of servers) {
306
+ const entry = {
307
+ type: 'local',
308
+ command: [s.command, ...s.args],
309
+ enabled: true,
310
+ };
311
+ if (s.env && Object.keys(s.env).length > 0) {
312
+ entry['environment'] = s.env;
313
+ }
314
+ mcp[s.name] = entry;
315
+ }
316
+ cfg['mcp'] = mcp;
317
+ }, log, 'OpenCode project MCP (opencode.json)');
318
+ }
319
+ /**
320
+ * @deprecated Use syncProjectMcpServers(root) instead.
321
+ * Kept for backwards compat — no longer called from applyAll.
322
+ */
323
+ static syncDefaultMcpServers(log) {
324
+ mcpManager_1.McpServerManager.addDefaults(undefined, log);
325
+ }
326
+ // -------------------------------------------------------------------------
327
+ // Master entry point — call once at extension activation
328
+ // -------------------------------------------------------------------------
329
+ static applyAll(root, log) {
330
+ try {
331
+ ConfigManager.applyClaudePermissions(root, log);
332
+ }
333
+ catch (err) {
334
+ log?.(`ConfigManager: Claude permissions error: ${err}`);
335
+ }
336
+ try {
337
+ ConfigManager.applyOpenCodePermissions(root, log);
338
+ }
339
+ catch (err) {
340
+ log?.(`ConfigManager: OpenCode permissions error: ${err}`);
341
+ }
342
+ // Project-local MCP sync — no global config files are modified
343
+ if (root) {
344
+ try {
345
+ ConfigManager.syncProjectMcpServers(root, log);
346
+ }
347
+ catch (err) {
348
+ log?.(`ConfigManager: Project MCP sync error: ${err}`);
349
+ }
350
+ }
351
+ }
352
+ }
353
+ exports.ConfigManager = ConfigManager;
354
+ // ---------------------------------------------------------------------------
355
+ // Internal helpers
356
+ // ---------------------------------------------------------------------------
357
+ function _obj(val) {
358
+ return (typeof val === 'object' && val !== null ? val : {});
359
+ }
360
+ /**
361
+ * Move any user-defined `mcpServers` block from .autodev/settings.json into
362
+ * .mcp.json (one-time, idempotent — once stripped from settings it doesn't run
363
+ * again). Existing user entries already in .mcp.json take precedence.
364
+ */
365
+ function _migrateLegacyMcpServers(root, legacy, log) {
366
+ try {
367
+ const existing = (0, projectMcp_1.loadProjectUserMcp)(root);
368
+ const merged = { ...existing };
369
+ let migratedCount = 0;
370
+ const defaultNames = new Set(mcpManager_1.DEFAULT_MCP_SERVERS.map(s => s.name).concat('memory'));
371
+ for (const [name, raw] of Object.entries(legacy)) {
372
+ if (!raw || typeof raw.command !== 'string')
373
+ continue;
374
+ if (raw.enabled === false)
375
+ continue; // disabled = drop, per the new model
376
+ if (defaultNames.has(name))
377
+ continue; // built-in — never a user entry
378
+ if (existing[name])
379
+ continue; // .mcp.json wins
380
+ merged[name] = { command: raw.command, args: raw.args, ...(raw.env ? { env: raw.env } : {}) };
381
+ migratedCount += 1;
382
+ }
383
+ if (migratedCount > 0) {
384
+ (0, projectMcp_1.saveProjectUserMcp)(root, merged);
385
+ log?.(`ConfigManager: migrated ${migratedCount} mcpServers entr${migratedCount === 1 ? 'y' : 'ies'} from .autodev/settings.json → .mcp.json`);
386
+ }
387
+ }
388
+ catch (e) {
389
+ log?.(`ConfigManager: legacy MCP migration failed: ${e}`);
390
+ }
391
+ // Strip the field from settings.json regardless — the file is no longer the source.
392
+ try {
393
+ const settingsFile = path.join(root, '.autodev', 'settings.json');
394
+ if (!fs.existsSync(settingsFile))
395
+ return;
396
+ const cfg = JSON.parse(fs.readFileSync(settingsFile, 'utf8'));
397
+ if (cfg && 'mcpServers' in cfg) {
398
+ delete cfg['mcpServers'];
399
+ fs.writeFileSync(settingsFile, JSON.stringify(cfg, null, 2), 'utf8');
400
+ log?.('ConfigManager: stripped legacy mcpServers from .autodev/settings.json');
401
+ }
402
+ }
403
+ catch { /* ignore */ }
404
+ }
405
+ /**
406
+ * Read a JSON file, apply a mutation, and write it back.
407
+ * Creates missing parent directories automatically.
408
+ */
409
+ function _mergeJson(filePath, mutate, log, label) {
410
+ try {
411
+ const dir = path.dirname(filePath);
412
+ if (!fs.existsSync(dir)) {
413
+ fs.mkdirSync(dir, { recursive: true });
414
+ }
415
+ let cfg = {};
416
+ if (fs.existsSync(filePath)) {
417
+ try {
418
+ cfg = JSON.parse(fs.readFileSync(filePath, 'utf8'));
419
+ }
420
+ catch { }
421
+ }
422
+ mutate(cfg);
423
+ fs.writeFileSync(filePath, JSON.stringify(cfg, null, 2) + '\n', 'utf8');
424
+ log?.(`ConfigManager: applied ${label}`);
425
+ }
426
+ catch (err) {
427
+ log?.(`ConfigManager: failed ${label}: ${err}`);
428
+ }
429
+ }
430
+ //# sourceMappingURL=configManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../src/configManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** Save a full WS URL (with token+endpoint query params) into the workspace settings. */
2
+ export declare function applyWsUrl(cwd: string, wsUrl: string): void;
3
+ /** Fetch credentials from a signed setup URL and apply them to the workspace. */
4
+ export declare function applySetupUrl(cwd: string, setupUrl: string): Promise<void>;
package/out/connect.js CHANGED
@@ -41,8 +41,8 @@ const http = __importStar(require("http"));
41
41
  const https = __importStar(require("https"));
42
42
  const url_1 = require("url");
43
43
  const logger_1 = require("./logger");
44
- const settings_1 = require("autoaidev/settings");
45
- const hooks_1 = require("autoaidev/hooks");
44
+ const settingsLoader_1 = require("./core/settingsLoader");
45
+ const hooksManager_1 = require("./hooksManager");
46
46
  function configWritePath(cwd) {
47
47
  return path.join(cwd, '.autodev', 'settings.json');
48
48
  }
@@ -55,7 +55,7 @@ function saveSettings(cwd, settings) {
55
55
  fs.writeFileSync(file, JSON.stringify(settings, null, 2) + '\n', 'utf8');
56
56
  }
57
57
  function loadOrDefault(cwd) {
58
- return { ...settings_1.SETTINGS_DEFAULTS, ...(0, settings_1.loadSettingsForRoot)(cwd) };
58
+ return { ...settingsLoader_1.SETTINGS_DEFAULTS, ...(0, settingsLoader_1.loadSettingsForRoot)(cwd) };
59
59
  }
60
60
  /** Fetch JSON from a URL using the built-in http/https module (no deps). */
61
61
  function fetchJson(url, timeoutMs = 15_000) {
@@ -97,7 +97,7 @@ function fetchJson(url, timeoutMs = 15_000) {
97
97
  }
98
98
  /** Save a full WS URL (with token+endpoint query params) into the workspace settings. */
99
99
  function applyWsUrl(cwd, wsUrl) {
100
- const parsed = (0, settings_1.parseWsUrl)(wsUrl);
100
+ const parsed = (0, settingsLoader_1.parseWsUrl)(wsUrl);
101
101
  if (!parsed) {
102
102
  throw new Error(`--connect URL must be a ws:// or wss:// URL with token & endpoint params, got: ${wsUrl}`);
103
103
  }
@@ -118,8 +118,8 @@ function applyWsUrl(cwd, wsUrl) {
118
118
  }
119
119
  function ensureHooksInstalled(cwd) {
120
120
  try {
121
- if (!(0, hooks_1.areHooksInstalled)('project', cwd)) {
122
- (0, hooks_1.installHooks)('project', cwd);
121
+ if (!(0, hooksManager_1.areHooksInstalled)('project', cwd)) {
122
+ (0, hooksManager_1.installHooks)('project', cwd);
123
123
  logger_1.log.gray(' hooks installed (Claude + Copilot)');
124
124
  }
125
125
  }
@@ -151,7 +151,7 @@ async function applySetupUrl(cwd, setupUrl) {
151
151
  }
152
152
  // Override the parsed values from the wsUrl (in case the server reports a
153
153
  // different externally-visible base URL than the WS URL host).
154
- const parsed = (0, settings_1.parseWsUrl)(d.wsUrl);
154
+ const parsed = (0, settingsLoader_1.parseWsUrl)(d.wsUrl);
155
155
  if (parsed && !d.serverBaseUrl) {
156
156
  settings.serverBaseUrl = parsed.serverBaseUrl;
157
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFA,gCAmBC;AAcD,sCA8BC;AAnJD,uCAAyB;AACzB,2CAA6B;AAC7B,2CAA6B;AAC7B,6CAA+B;AAC/B,6BAA0B;AAC1B,qCAA+B;AAC/B,iDAAyG;AACzG,2CAAkE;AA2BlE,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,QAAyB;IAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,GAAG,GAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IACpE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,OAAO,EAAE,GAAG,4BAAiB,EAAE,GAAG,IAAA,8BAAmB,EAAC,GAAG,CAAC,EAAE,CAAC;AAC/D,CAAC;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAI,GAAW,EAAE,SAAS,GAAG,MAAM;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,SAAG,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAC9B,MAAM,CAAC;YAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAE3D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CACrB,GAAG,EACH;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE;SACvE,EACD,CAAC,GAAG,EAAE,EAAE;YACN,MAAM,MAAM,GAAa,EAAE,CAAC;YAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;oBACpE,IAAI,CAAC;wBAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC,CAAC;oBAAC,CAAC;oBACvC,OAAO,CAAC,EAAE,CAAC;wBAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,GAAG,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC;gBACvF,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,UAAU,SAAS,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,mBAAmB,SAAS,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/G,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yFAAyF;AACzF,SAAgB,UAAU,CAAC,GAAW,EAAE,KAAa;IACnD,MAAM,MAAM,GAAG,IAAA,qBAAU,EAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kFAAkF,KAAK,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,GAAW,KAAK,CAAC;IAC/B,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC9C,QAAQ,CAAC,YAAY,GAAI,MAAM,CAAC,YAAY,CAAC;IAC7C,QAAQ,CAAC,WAAW,GAAK,MAAM,CAAC,WAAW,CAAC;IAC5C,0EAA0E;IAC1E,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,GAAI,IAAI,CAAC;IAC9B,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5B,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1B,YAAG,CAAC,OAAO,CAAC,eAAe,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACnD,YAAG,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,YAAG,CAAC,IAAI,CAAC,eAAe,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,IAAA,yBAAiB,EAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YACvC,IAAA,oBAAY,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAC7B,YAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAG,CAAC,IAAI,CAAC,4BAA6B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,iFAAiF;AAC1E,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,QAAgB;IAC/D,YAAG,CAAC,IAAI,CAAC,6BAA6B,QAAQ,GAAG,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAgB,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,kCAAkC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;IACpB,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;IACzB,IAAI,CAAC,CAAC,MAAM,EAAS,CAAC;QAAC,QAAQ,CAAC,YAAY,GAAI,CAAC,CAAC,MAAM,CAAC;IAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,IAAI,EAAW,CAAC;QAAC,QAAQ,CAAC,WAAW,GAAK,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IACzD,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;QAAC,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;IAAC,CAAC;IAClE,0EAA0E;IAC1E,+DAA+D;IAC/D,MAAM,MAAM,GAAG,IAAA,qBAAU,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QAAC,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAAC,CAAC;IAClF,uEAAuE;IACvE,6DAA6D;IAC7D,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,aAAa,GAAG,IAAI,CAAC;IAE9B,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5B,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1B,YAAG,CAAC,OAAO,CAAC,eAAe,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IACrD,YAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,YAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1D,YAAG,CAAC,IAAI,CAAC,eAAe,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../src/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export interface IDisposable {
2
+ dispose(): void;
3
+ }
4
+ /**
5
+ * Watches a file path for change/create events.
6
+ * VS Code implementation uses `vscode.workspace.createFileSystemWatcher`.
7
+ * Node.js implementation uses `fs.watch` on the parent directory.
8
+ */
9
+ export interface IFileWatcher {
10
+ watch(filePath: string, onChange: () => void): IDisposable;
11
+ }
12
+ /**
13
+ * Launches a shell command in a named context.
14
+ * VS Code implementation creates an integrated terminal.
15
+ * Node.js implementation uses `child_process.spawn`.
16
+ */
17
+ export interface IProcessLauncher {
18
+ launch(cmd: string, name: string, cwd: string): void;
19
+ }
20
+ /**
21
+ * Watches the parent directory of `filePath` and fires `onChange` whenever
22
+ * the target file changes or is created. Handles non-existent directories
23
+ * gracefully (watcher is a no-op until the directory appears).
24
+ */
25
+ export declare class NodeFileWatcher implements IFileWatcher {
26
+ watch(filePath: string, onChange: () => void): IDisposable;
27
+ }
28
+ /**
29
+ * Spawns a shell process (stdout/stderr inherited to the parent process).
30
+ * On Windows uses `powershell -Command`; on Unix uses `/bin/sh -c`.
31
+ */
32
+ export declare class NodeProcessLauncher implements IProcessLauncher {
33
+ launch(cmd: string, name: string, cwd: string): void;
34
+ }
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.NodeProcessLauncher = exports.NodeFileWatcher = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
40
+ // ---------------------------------------------------------------------------
41
+ // Node.js implementations
42
+ // ---------------------------------------------------------------------------
43
+ /**
44
+ * Watches the parent directory of `filePath` and fires `onChange` whenever
45
+ * the target file changes or is created. Handles non-existent directories
46
+ * gracefully (watcher is a no-op until the directory appears).
47
+ */
48
+ class NodeFileWatcher {
49
+ watch(filePath, onChange) {
50
+ const dir = path.dirname(filePath);
51
+ const base = path.basename(filePath);
52
+ let watcher;
53
+ try {
54
+ if (fs.existsSync(dir)) {
55
+ watcher = fs.watch(dir, { persistent: false }, (_event, filename) => {
56
+ if (filename === base) {
57
+ onChange();
58
+ }
59
+ });
60
+ }
61
+ }
62
+ catch { /* directory may not exist yet — no-op watcher */ }
63
+ return { dispose: () => { try {
64
+ watcher?.close();
65
+ }
66
+ catch { /* ignore */ } } };
67
+ }
68
+ }
69
+ exports.NodeFileWatcher = NodeFileWatcher;
70
+ /**
71
+ * Spawns a shell process (stdout/stderr inherited to the parent process).
72
+ * On Windows uses `powershell -Command`; on Unix uses `/bin/sh -c`.
73
+ */
74
+ class NodeProcessLauncher {
75
+ launch(cmd, name, cwd) {
76
+ const [shell, flag] = process.platform === 'win32'
77
+ ? ['powershell', '-Command']
78
+ : ['/bin/sh', '-c'];
79
+ const proc = (0, child_process_1.spawn)(shell, [flag, cmd], { cwd, stdio: 'inherit', detached: false });
80
+ proc.on('error', (err) => console.error(`[${name}] spawn error:`, err.message));
81
+ }
82
+ }
83
+ exports.NodeProcessLauncher = NodeProcessLauncher;
84
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/core/adapters.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAsC;AA6BtC,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;;GAIG;AACH,MAAa,eAAe;IAC1B,KAAK,CAAC,QAAgB,EAAE,QAAoB;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,OAAiC,CAAC;QACtC,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;oBAClE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;wBAAC,QAAQ,EAAE,CAAC;oBAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,CAAC;CACF;AAdD,0CAcC;AAED;;;GAGG;AACH,MAAa,mBAAmB;IAC9B,MAAM,CAAC,GAAW,EAAE,IAAY,EAAE,GAAW;QAC3C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;YAChD,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC;YAC5B,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC;CACF;AARD,kDAQC"}