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,371 @@
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.McpServerManager = exports.DEFAULT_MCP_SERVERS = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const os = __importStar(require("os"));
39
+ const path = __importStar(require("path"));
40
+ // ---------------------------------------------------------------------------
41
+ // McpServerManager — unified MCP server configuration across all CLI providers
42
+ //
43
+ // Each provider stores MCP server definitions in its own config file with a
44
+ // slightly different schema. This class normalises them into a single
45
+ // McpServerEntry type and provides add / remove / list / syncAll operations
46
+ // that write to every provider at once.
47
+ //
48
+ // Config file locations:
49
+ // Claude CLI : ~/.claude/settings.json (key: mcpServers)
50
+ // Copilot CLI : ~/.copilot/mcp-config.json (key: mcpServers, has "type"/"tools")
51
+ // OpenCode CLI: %APPDATA%/opencode/config.json (key: mcp, command is an array)
52
+ // ---------------------------------------------------------------------------
53
+ /**
54
+ * Default MCP servers applied to every CLI provider on extension activation.
55
+ * Add entries here to have them automatically synced to Claude, Copilot, and OpenCode.
56
+ */
57
+ exports.DEFAULT_MCP_SERVERS = [
58
+ {
59
+ name: 'memory',
60
+ command: 'npx',
61
+ args: ['-y', '@modelcontextprotocol/server-memory'],
62
+ env: {
63
+ MEMORY_FILE_PATH: '.autodev/memories/.mcp-graph.json',
64
+ },
65
+ tools: ['*'],
66
+ },
67
+ {
68
+ name: 'playwright',
69
+ command: 'npx',
70
+ args: ['-y', '@playwright/mcp@latest'],
71
+ tools: ['*'],
72
+ },
73
+ {
74
+ name: 'sequential-thinking',
75
+ command: 'npx',
76
+ args: ['-y', '@modelcontextprotocol/server-sequential-thinking'],
77
+ tools: ['*'],
78
+ },
79
+ {
80
+ name: 'computer-use-mcp',
81
+ command: 'npx',
82
+ args: ['-y', 'computer-use-mcp'],
83
+ tools: ['*'],
84
+ },
85
+ ];
86
+ // ---------------------------------------------------------------------------
87
+ // Path helpers
88
+ // ---------------------------------------------------------------------------
89
+ function claudeConfigPath() {
90
+ // Claude CLI reads mcpServers from ~/.claude/settings.json
91
+ return path.join(os.homedir(), '.claude', 'settings.json');
92
+ }
93
+ /** ~/.claude.json — stores per-project enabledMcpjsonServers */
94
+ function claudeDotJsonPath() {
95
+ return path.join(os.homedir(), '.claude.json');
96
+ }
97
+ function copilotConfigPath() {
98
+ return path.join(os.homedir(), '.copilot', 'mcp-config.json');
99
+ }
100
+ function opencodeConfigPath() {
101
+ // Windows: %APPDATA%\opencode\config.json
102
+ // Linux/macOS: ~/.config/opencode/config.json
103
+ const base = process.platform === 'win32'
104
+ ? (process.env['APPDATA'] ?? path.join(os.homedir(), 'AppData', 'Roaming'))
105
+ : path.join(os.homedir(), '.config');
106
+ return path.join(base, 'opencode', 'config.json');
107
+ }
108
+ // ---------------------------------------------------------------------------
109
+ // Generic JSON read / write helpers
110
+ // ---------------------------------------------------------------------------
111
+ function readJson(filePath, fallback) {
112
+ try {
113
+ if (fs.existsSync(filePath)) {
114
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
115
+ }
116
+ }
117
+ catch { /* treat missing / corrupt file as empty */ }
118
+ return fallback;
119
+ }
120
+ function writeJson(filePath, data) {
121
+ const dir = path.dirname(filePath);
122
+ if (!fs.existsSync(dir)) {
123
+ fs.mkdirSync(dir, { recursive: true });
124
+ }
125
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + '\n', 'utf8');
126
+ }
127
+ // ---------------------------------------------------------------------------
128
+ // Per-provider read / write
129
+ // ---------------------------------------------------------------------------
130
+ function readClaudeServers() {
131
+ const cfg = readJson(claudeConfigPath(), {});
132
+ const result = {};
133
+ for (const [name, s] of Object.entries(cfg.mcpServers ?? {})) {
134
+ result[name] = {
135
+ name,
136
+ command: s.command,
137
+ args: s.args ?? [],
138
+ ...(s.env ? { env: s.env } : {}),
139
+ };
140
+ }
141
+ return result;
142
+ }
143
+ function writeClaudeServers(servers) {
144
+ const cfg = readJson(claudeConfigPath(), {});
145
+ cfg.mcpServers = {};
146
+ for (const [name, s] of Object.entries(servers)) {
147
+ cfg.mcpServers[name] = {
148
+ command: s.command,
149
+ args: s.args,
150
+ ...(s.env ? { env: s.env } : {}),
151
+ };
152
+ }
153
+ writeJson(claudeConfigPath(), cfg);
154
+ }
155
+ function readCopilotServers() {
156
+ const cfg = readJson(copilotConfigPath(), {});
157
+ const result = {};
158
+ for (const [name, s] of Object.entries(cfg.mcpServers ?? {})) {
159
+ result[name] = {
160
+ name,
161
+ command: s.command,
162
+ args: s.args ?? [],
163
+ ...(s.env ? { env: s.env } : {}),
164
+ tools: s.tools ?? ['*'],
165
+ };
166
+ }
167
+ return result;
168
+ }
169
+ function writeCopilotServers(servers) {
170
+ const cfg = readJson(copilotConfigPath(), {});
171
+ cfg.mcpServers = {};
172
+ for (const [name, s] of Object.entries(servers)) {
173
+ cfg.mcpServers[name] = {
174
+ type: 'local',
175
+ command: s.command,
176
+ args: s.args,
177
+ env: s.env ?? {},
178
+ tools: s.tools ?? ['*'],
179
+ };
180
+ }
181
+ writeJson(copilotConfigPath(), cfg);
182
+ }
183
+ function readOpenCodeServers() {
184
+ const cfg = readJson(opencodeConfigPath(), {});
185
+ const result = {};
186
+ for (const [name, s] of Object.entries(cfg.mcp ?? {})) {
187
+ const [command, ...args] = s.command;
188
+ result[name] = {
189
+ name,
190
+ command: command ?? '',
191
+ args,
192
+ ...(s.environment ? { env: s.environment } : s['env'] ? { env: s['env'] } : {}),
193
+ };
194
+ }
195
+ return result;
196
+ }
197
+ function writeOpenCodeServers(servers) {
198
+ const cfg = readJson(opencodeConfigPath(), {});
199
+ cfg.mcp = {};
200
+ for (const [name, s] of Object.entries(servers)) {
201
+ const entry = {
202
+ type: 'local',
203
+ command: [s.command, ...s.args],
204
+ enabled: true,
205
+ };
206
+ if (s.env && Object.keys(s.env).length > 0) {
207
+ entry.environment = s.env;
208
+ }
209
+ cfg.mcp[name] = entry;
210
+ }
211
+ // Remove any legacy top-level keys that opencode no longer accepts
212
+ // (e.g. "env" was renamed to "environment" in the mcp server schema).
213
+ for (const server of Object.values(cfg.mcp)) {
214
+ const s = server;
215
+ delete s['env'];
216
+ }
217
+ writeJson(opencodeConfigPath(), cfg);
218
+ }
219
+ const ALL_PROVIDERS = ['claude-cli', 'copilot-cli', 'opencode-cli'];
220
+ class McpServerManager {
221
+ // -------------------------------------------------------------------------
222
+ // Path accessors (static, for display/info purposes)
223
+ // -------------------------------------------------------------------------
224
+ static configPathFor(provider) {
225
+ if (provider === 'claude-cli') {
226
+ return claudeConfigPath();
227
+ }
228
+ if (provider === 'copilot-cli') {
229
+ return copilotConfigPath();
230
+ }
231
+ /* opencode-cli */ return opencodeConfigPath();
232
+ }
233
+ // -------------------------------------------------------------------------
234
+ // Per-provider read
235
+ // -------------------------------------------------------------------------
236
+ static readServers(provider) {
237
+ if (provider === 'claude-cli') {
238
+ return readClaudeServers();
239
+ }
240
+ if (provider === 'copilot-cli') {
241
+ return readCopilotServers();
242
+ }
243
+ /* opencode-cli */ return readOpenCodeServers();
244
+ }
245
+ // -------------------------------------------------------------------------
246
+ // Per-provider write (replaces all servers for that provider)
247
+ // -------------------------------------------------------------------------
248
+ static writeServers(provider, servers) {
249
+ if (provider === 'claude-cli') {
250
+ writeClaudeServers(servers);
251
+ return;
252
+ }
253
+ if (provider === 'copilot-cli') {
254
+ writeCopilotServers(servers);
255
+ return;
256
+ }
257
+ /* opencode-cli */ writeOpenCodeServers(servers);
258
+ }
259
+ // -------------------------------------------------------------------------
260
+ // Unified list — union of servers across all providers
261
+ // -------------------------------------------------------------------------
262
+ static listAll() {
263
+ const merged = {};
264
+ for (const provider of ALL_PROVIDERS) {
265
+ for (const [name, entry] of Object.entries(McpServerManager.readServers(provider))) {
266
+ if (!merged[name]) {
267
+ merged[name] = entry;
268
+ }
269
+ }
270
+ }
271
+ return Object.values(merged);
272
+ }
273
+ // -------------------------------------------------------------------------
274
+ // Add a server to all providers (or a specific subset)
275
+ // -------------------------------------------------------------------------
276
+ static addServer(entry, targets = ALL_PROVIDERS) {
277
+ for (const provider of targets) {
278
+ const servers = McpServerManager.readServers(provider);
279
+ servers[entry.name] = entry;
280
+ McpServerManager.writeServers(provider, servers);
281
+ }
282
+ }
283
+ // -------------------------------------------------------------------------
284
+ // Remove a server from all providers (or a specific subset)
285
+ // -------------------------------------------------------------------------
286
+ static removeServer(name, targets = ALL_PROVIDERS) {
287
+ for (const provider of targets) {
288
+ const servers = McpServerManager.readServers(provider);
289
+ if (name in servers) {
290
+ delete servers[name];
291
+ McpServerManager.writeServers(provider, servers);
292
+ }
293
+ }
294
+ }
295
+ // -------------------------------------------------------------------------
296
+ // Sync a full list of servers to all providers (replaces existing entries)
297
+ // -------------------------------------------------------------------------
298
+ static syncAll(servers, targets = ALL_PROVIDERS) {
299
+ const map = {};
300
+ for (const s of servers) {
301
+ map[s.name] = s;
302
+ }
303
+ for (const provider of targets) {
304
+ McpServerManager.writeServers(provider, map);
305
+ }
306
+ }
307
+ // -------------------------------------------------------------------------
308
+ // Add defaults — only inserts entries that aren't already present
309
+ // -------------------------------------------------------------------------
310
+ static addDefaults(targets = ALL_PROVIDERS, log) {
311
+ for (const server of exports.DEFAULT_MCP_SERVERS) {
312
+ for (const provider of targets) {
313
+ const current = McpServerManager.readServers(provider);
314
+ if (!current[server.name]) {
315
+ current[server.name] = server;
316
+ McpServerManager.writeServers(provider, current);
317
+ log?.(`MCP: added '${server.name}' to ${provider}`);
318
+ }
319
+ }
320
+ }
321
+ }
322
+ // -------------------------------------------------------------------------
323
+ // enableForClaudeProject — writes enabledMcpjsonServers into ~/.claude.json
324
+ // under projects[workspaceRoot] so Claude Code actually loads them.
325
+ // See: https://github.com/anthropics/claude-code/issues/24657
326
+ // -------------------------------------------------------------------------
327
+ static enableForClaudeProject(workspaceRoot, serverNames, log) {
328
+ const dotJson = readJson(claudeDotJsonPath(), {});
329
+ dotJson.projects ??= {};
330
+ const proj = dotJson.projects[workspaceRoot] ?? {};
331
+ const existing = new Set(proj.enabledMcpjsonServers ?? []);
332
+ const added = [];
333
+ for (const name of serverNames) {
334
+ if (!existing.has(name)) {
335
+ existing.add(name);
336
+ added.push(name);
337
+ }
338
+ }
339
+ if (added.length === 0) {
340
+ return;
341
+ }
342
+ proj.enabledMcpjsonServers = [...existing];
343
+ dotJson.projects[workspaceRoot] = proj;
344
+ writeJson(claudeDotJsonPath(), dotJson);
345
+ log?.(`MCP: enabled [${added.join(', ')}] for Claude project ${workspaceRoot}`);
346
+ }
347
+ // -------------------------------------------------------------------------
348
+ // disableAttribution — removes "Co-Authored-By" / "Generated with Claude Code"
349
+ // footers by writing attribution settings to .claude/settings.json in the
350
+ // project root.
351
+ // -------------------------------------------------------------------------
352
+ static disableAttribution(workspaceRoot, log) {
353
+ const settingsPath = path.join(workspaceRoot, '.claude', 'settings.json');
354
+ const cfg = readJson(settingsPath, {});
355
+ cfg.attribution = { commit: '', pr: '' };
356
+ cfg.includeCoAuthoredBy = false;
357
+ writeJson(settingsPath, cfg);
358
+ log?.(`MCP: wrote attribution=off to ${settingsPath}`);
359
+ }
360
+ // -------------------------------------------------------------------------
361
+ // addDefaultsAndEnable — addDefaults + enableForClaudeProject in one call
362
+ // -------------------------------------------------------------------------
363
+ static addDefaultsAndEnable(workspaceRoot, targets = ALL_PROVIDERS, log) {
364
+ McpServerManager.addDefaults(targets, log);
365
+ if (targets.includes('claude-cli')) {
366
+ McpServerManager.enableForClaudeProject(workspaceRoot, exports.DEFAULT_MCP_SERVERS.map(s => s.name), log);
367
+ }
368
+ }
369
+ }
370
+ exports.McpServerManager = McpServerManager;
371
+ //# sourceMappingURL=mcpManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpManager.js","sourceRoot":"","sources":["../src/mcpManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { Task } from './todo';
2
+ /** Agent profile instructions written for each task run */
3
+ export declare const AGENT_PROFILE_FILE = ".autodev/AGENT_PROFILE.md";
4
+ /** Directory where per-task message files are stored */
5
+ export declare const MESSAGES_DIR = ".autodev/messages";
6
+ /** Directory where attachments are saved, grouped by timestamp+hash */
7
+ export declare const ATTACHMENTS_DIR = ".autodev/messages/attachments";
8
+ export interface ProfileMeta {
9
+ title?: string;
10
+ description?: string;
11
+ /** When true, the task instruction omits the commit step */
12
+ noCommit?: boolean;
13
+ }
14
+ /**
15
+ * Parse YAML-like frontmatter from a markdown file.
16
+ * Returns metadata and the body with frontmatter stripped.
17
+ */
18
+ export declare function parseFrontmatter(content: string): {
19
+ meta: ProfileMeta;
20
+ body: string;
21
+ };
22
+ /**
23
+ * Save an attachment to `.autodev/messages/attachments/<groupId>/filename`.
24
+ * If `groupId` is omitted a new `<timestamp>_<hex>` folder is created.
25
+ * Returns the workspace-relative forward-slash path (suitable for embedding in .md).
26
+ */
27
+ export declare function saveAttachment(workspaceRoot: string, filename: string, data: Buffer | string, groupId?: string): string;
28
+ /**
29
+ * Write arbitrary content to a timestamped message file and return the full path.
30
+ * Used for reminder/check-in messages that bypass buildMessage().
31
+ */
32
+ export declare function writeMessageFile(root: string, content: string): string;
33
+ /**
34
+ * Builds the agent message for a task, writing two separate files:
35
+ * - `.autodev/AGENT_PROFILE.md` — profile instructions (frontmatter stripped)
36
+ * - `.autodev/messages/MESSAGE_<timestamp>.md` — task + current TODO
37
+ *
38
+ * Returns `{ prompt, messageFile }` where `prompt` is the combined string for UI
39
+ * providers that cannot read files via @-references, and `messageFile` is the
40
+ * absolute path of the written message file for CLI providers.
41
+ */
42
+ /**
43
+ * Assembles and writes `.autodev/AGENT_PROFILE.md` from the currently enabled
44
+ * profile sections + any active MCP protocol injections. Also deploys / removes
45
+ * Claude skill files for enabled / disabled MCPs.
46
+ *
47
+ * Called directly from the sidebar "Save & Rebuild Profile" button so the file
48
+ * is updated immediately without waiting for a task run.
49
+ */
50
+ export declare function rebuildProfile(root: string): void;
51
+ export declare function buildMessage(task: Task, root: string, todoDir: string, includeProfile?: boolean): {
52
+ prompt: string;
53
+ messageFile: string;
54
+ };