autodev-cli 1.4.0 → 1.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +447 -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 +34 -0
  77. package/out/core/projectMcp.js +160 -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,445 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // copilotSdkProvider - GitHub Copilot in-process SDK integration.
4
+ //
5
+ // Uses @github/copilot sdk/index.js (LocalSession) directly - no subprocess,
6
+ // no PTY, no hooks file watching. Auth is read from the Windows Credential
7
+ // Manager (via keytar) or from the GITHUB_TOKEN / GH_TOKEN env var.
8
+ //
9
+ // Completion detection: session.on('session.idle', ...) fires when the agent
10
+ // finishes each turn. The exitFile is written at that point.
11
+ //
12
+ // Multi-turn: LocalSession persists conversation history. The same session
13
+ // object is reused for all tasks within a workspace root.
14
+ // ---------------------------------------------------------------------------
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.setCopilotSettingsToken = setCopilotSettingsToken;
50
+ exports.clearCopilotAuthCache = clearCopilotAuthCache;
51
+ exports.copilotNpmRoot = copilotNpmRoot;
52
+ exports.clearCopilotSdkCache = clearCopilotSdkCache;
53
+ exports.isCopilotSdkBusy = isCopilotSdkBusy;
54
+ exports.getLatestCopilotSdkSessionId = getLatestCopilotSdkSessionId;
55
+ exports.readCopilotSdkOutputSince = readCopilotSdkOutputSince;
56
+ exports.sendCopilotSdkPrompt = sendCopilotSdkPrompt;
57
+ exports.closeCopilotSdkSession = closeCopilotSdkSession;
58
+ exports.closeAllCopilotSdkSessions = closeAllCopilotSdkSessions;
59
+ const fs = __importStar(require("fs"));
60
+ const os = __importStar(require("os"));
61
+ const path = __importStar(require("path"));
62
+ const hookEventNormalizer_1 = require("../hookEventNormalizer");
63
+ // ---------------------------------------------------------------------------
64
+ // SDK + keytar path resolution
65
+ // ---------------------------------------------------------------------------
66
+ function _copilotNpmRoot() {
67
+ if (process.platform === 'win32') {
68
+ return path.join(os.homedir(), 'AppData', 'Roaming', 'npm', 'node_modules', '@github', 'copilot');
69
+ }
70
+ for (const candidate of [
71
+ '/usr/local/lib/node_modules/@github/copilot',
72
+ '/usr/lib/node_modules/@github/copilot',
73
+ path.join(os.homedir(), '.npm', 'node_modules', '@github', 'copilot'),
74
+ ]) {
75
+ if (fs.existsSync(candidate)) {
76
+ return candidate;
77
+ }
78
+ }
79
+ return '/usr/local/lib/node_modules/@github/copilot';
80
+ }
81
+ function _sdkPath() {
82
+ return path.join(_copilotNpmRoot(), 'sdk', 'index.js');
83
+ }
84
+ function _keytarPath() {
85
+ const p = path.join(_copilotNpmRoot(), 'prebuilds', process.platform + '-' + process.arch, 'keytar.node');
86
+ return fs.existsSync(p) ? p : null;
87
+ }
88
+ let _authCache;
89
+ let _authLoadingPromise = null;
90
+ async function _fetchCopilotUser(token) {
91
+ const res = await fetch('https://api.github.com/copilot_internal/user', {
92
+ headers: { 'Authorization': 'token ' + token, 'User-Agent': 'GitHubCopilotCLI/1.0' },
93
+ });
94
+ if (!res.ok) {
95
+ throw new Error('HTTP ' + res.status);
96
+ }
97
+ return res.json();
98
+ }
99
+ // Settings-derived token set by the extension before each send.
100
+ let _settingsToken;
101
+ function setCopilotSettingsToken(token) {
102
+ _settingsToken = token || undefined;
103
+ }
104
+ async function _loadAuth() {
105
+ const envToken = _settingsToken ||
106
+ process.env['COPILOT_GITHUB_TOKEN'] ||
107
+ process.env['GITHUB_COPILOT_GITHUB_TOKEN'] ||
108
+ process.env['GH_TOKEN'] ||
109
+ process.env['GITHUB_TOKEN'];
110
+ if (envToken) {
111
+ const copilotUser = await _fetchCopilotUser(envToken).catch(() => undefined);
112
+ return { type: 'gh-cli', host: 'https://github.com', login: 'unknown', token: envToken, copilotUser };
113
+ }
114
+ const kp = _keytarPath();
115
+ if (kp) {
116
+ try {
117
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
118
+ const keytar = require(kp);
119
+ const creds = await keytar.findCredentials('copilot-cli');
120
+ if (creds.length > 0) {
121
+ const { account, password: token } = creds[0];
122
+ const loginMatch = account.match(/:([^:]+)$/);
123
+ const login = loginMatch ? loginMatch[1] : 'unknown';
124
+ const copilotUser = await _fetchCopilotUser(token).catch(() => undefined);
125
+ return { type: 'gh-cli', host: 'https://github.com', login, token, copilotUser };
126
+ }
127
+ }
128
+ catch { /* keytar unavailable */ }
129
+ }
130
+ return undefined;
131
+ }
132
+ function _getAuth() {
133
+ if (_authCache) {
134
+ return Promise.resolve(_authCache);
135
+ }
136
+ if (!_authLoadingPromise) {
137
+ _authLoadingPromise = _loadAuth().then(a => {
138
+ _authCache = a;
139
+ _authLoadingPromise = null;
140
+ return a;
141
+ });
142
+ }
143
+ return _authLoadingPromise;
144
+ }
145
+ function clearCopilotAuthCache() {
146
+ _authCache = undefined;
147
+ _authLoadingPromise = null;
148
+ }
149
+ /** Expose the npm root path so callers can run `npm rebuild` there. */
150
+ function copilotNpmRoot() {
151
+ return _copilotNpmRoot();
152
+ }
153
+ /** Clear the cached SDK dynamic import so the next call to _getSdk() re-imports it. */
154
+ function clearCopilotSdkCache() {
155
+ _sdkPromise = null;
156
+ }
157
+ // ---------------------------------------------------------------------------
158
+ // SDK module loading (cached after first import)
159
+ // ---------------------------------------------------------------------------
160
+ let _sdkPromise = null;
161
+ function _getSdk() {
162
+ if (!_sdkPromise) {
163
+ const p = _sdkPath();
164
+ const url = p.startsWith('/') ? 'file://' + p : 'file:///' + p.replace(/\\/g, '/');
165
+ // Use Function() wrapper to prevent esbuild from transforming import() → require().
166
+ // require() does not support file:// URLs; real dynamic import() does.
167
+ _sdkPromise = (Function('u', 'return import(u)')(url)).catch(e => {
168
+ _sdkPromise = null;
169
+ throw new Error('Failed to load Copilot SDK from ' + p + ': ' + (e?.message ?? e));
170
+ });
171
+ }
172
+ return _sdkPromise;
173
+ }
174
+ const _sessions = new Map();
175
+ const _busyRoots = new Set();
176
+ // ---------------------------------------------------------------------------
177
+ // Public interface (same shape as the old PTY-based provider)
178
+ // ---------------------------------------------------------------------------
179
+ function isCopilotSdkBusy(root) {
180
+ return _busyRoots.has(root);
181
+ }
182
+ function getLatestCopilotSdkSessionId(root) {
183
+ return _sessions.has(root) ? 'copilot-sdk:' + path.basename(root) : undefined;
184
+ }
185
+ function readCopilotSdkOutputSince(stdoutFile, fromByte) {
186
+ try {
187
+ const raw = fs.readFileSync(stdoutFile, 'utf8');
188
+ return fromByte > 0 ? raw.slice(fromByte) : raw;
189
+ }
190
+ catch {
191
+ return '';
192
+ }
193
+ }
194
+ // ---------------------------------------------------------------------------
195
+ // sendCopilotSdkPrompt - fire-and-forget entry point
196
+ // ---------------------------------------------------------------------------
197
+ function sendCopilotSdkPrompt(root, promptFilePath, _resolvedSessionId, stdoutFile, exitFile, log, showOutput) {
198
+ showOutput?.();
199
+ try {
200
+ fs.writeFileSync(stdoutFile, '', 'utf8');
201
+ }
202
+ catch { /* ignore */ }
203
+ try {
204
+ fs.writeFileSync(exitFile, '', 'utf8');
205
+ }
206
+ catch { /* ignore */ }
207
+ _busyRoots.add(root);
208
+ _sendAsync(root, promptFilePath, stdoutFile, exitFile, log).catch(e => {
209
+ log('Copilot SDK error: ' + (e?.message ?? String(e)));
210
+ _busyRoots.delete(root);
211
+ try {
212
+ fs.writeFileSync(exitFile, '1\n', 'utf8');
213
+ }
214
+ catch { /* ignore */ }
215
+ });
216
+ }
217
+ // ---------------------------------------------------------------------------
218
+ // Core async implementation
219
+ // ---------------------------------------------------------------------------
220
+ async function _sendAsync(root, promptFilePath, stdoutFile, exitFile, log) {
221
+ let promptText;
222
+ try {
223
+ promptText = fs.readFileSync(promptFilePath, 'utf8');
224
+ }
225
+ catch (e) {
226
+ throw new Error('Cannot read prompt file ' + promptFilePath + ': ' + e.message);
227
+ }
228
+ const [authInfo, sdk] = await Promise.all([_getAuth(), _getSdk()]);
229
+ if (!authInfo) {
230
+ throw new Error('No GitHub Copilot credentials found. ' +
231
+ 'Set the GITHUB_TOKEN env var or run copilot auth login.');
232
+ }
233
+ let state = _sessions.get(root);
234
+ if (!state) {
235
+ log('Copilot SDK: creating LocalSession for ' + path.basename(root));
236
+ // SDK v1.0.48+ constructor is (coreServices, options) — two args.
237
+ // Passing everything as one arg puts authInfo in the coreServices slot
238
+ // where it is ignored, so this.authInfo is never set → session.error.
239
+ const coreServices = sdk.createCoreServices ? sdk.createCoreServices({}) : {};
240
+ // Pass permissionRequestHandler in the constructor options so it is stored as
241
+ // this.permissionRequestHandler on the session. The agent loop checks it BEFORE
242
+ // routing through the PermissionService (which has a path-manager check that
243
+ // returns "user-not-available" / denied when permissionRequestEventsEnabled=false).
244
+ // This is the only reliable way to auto-approve all tool permissions in headless mode.
245
+ const session = new sdk.LocalSession(coreServices, {
246
+ authInfo,
247
+ workingDirectory: root,
248
+ runningInInteractiveMode: false,
249
+ askUserDisabled: true,
250
+ permissionRequestHandler: async (_req) => ({ kind: 'approved' }),
251
+ });
252
+ state = { session, stdoutFile: null, exitFile: null, log: null, offIdle: null, deltasSeen: false, sessionErrored: false };
253
+ _sessions.set(root, state);
254
+ // Wire up output streaming to stdoutFile (registered once per session)
255
+ const localState = state;
256
+ const hooksJsonlDir = path.join(root, '.autodev');
257
+ const hooksJsonlPath = path.join(hooksJsonlDir, 'hooks-events.jsonl');
258
+ log('Copilot SDK: hooks-events.jsonl → ' + hooksJsonlPath);
259
+ session.on('*', (ev) => {
260
+ // Auto-approve all permission requests (yolo / allow-all mode)
261
+ if (ev.type === 'permission.requested' && ev.data?.['requestId']) {
262
+ try {
263
+ session.respondToPermission(ev.data['requestId'], { kind: 'approved' });
264
+ }
265
+ catch { /* ignore */ }
266
+ }
267
+ // Auto-respond to user_input requests
268
+ if (ev.type === 'user_input.requested' && ev.data?.['requestId']) {
269
+ try {
270
+ session.respondToUserInput(ev.data['requestId'], { kind: 'accept', text: '' });
271
+ }
272
+ catch { /* ignore */ }
273
+ }
274
+ if (!ev.ephemeral) {
275
+ const d = ev.data ?? {};
276
+ const toolName = (d['toolName'] ?? d['name']);
277
+ const extra = (ev.type === 'tool.execution_start' || ev.type === 'tool.execution_complete')
278
+ ? ' [' + (toolName ?? '?') + ']'
279
+ : '';
280
+ localState.log?.('Copilot SDK [event]: ' + ev.type + extra);
281
+ // Track session errors so the next idle disposes the broken session
282
+ if (ev.type === 'session.error') {
283
+ localState.sessionErrored = true;
284
+ localState.log?.('Copilot SDK: session.error — will dispose session on next idle');
285
+ }
286
+ (0, hookEventNormalizer_1.appendHookEvent)(hooksJsonlPath, 'copilot-sdk', ev, fs, path, (e) => localState.log?.('Copilot SDK [hooks write error]: ' + String(e)));
287
+ }
288
+ if (!localState.stdoutFile) {
289
+ return;
290
+ }
291
+ if (ev.type === 'assistant.turn_start') {
292
+ localState.deltasSeen = false;
293
+ }
294
+ else if (ev.type === 'assistant.message_delta') {
295
+ const chunk = ev.data?.['deltaContent'];
296
+ if (chunk) {
297
+ localState.deltasSeen = true;
298
+ try {
299
+ fs.appendFileSync(localState.stdoutFile, chunk, 'utf8');
300
+ }
301
+ catch { /* ignore */ }
302
+ }
303
+ }
304
+ else if (ev.type === 'assistant.message' && !localState.deltasSeen) {
305
+ const content = ev.data?.['content'];
306
+ if (content) {
307
+ try {
308
+ fs.appendFileSync(localState.stdoutFile, content + '\n', 'utf8');
309
+ }
310
+ catch { /* ignore */ }
311
+ }
312
+ }
313
+ });
314
+ }
315
+ // Detach any leftover idle handler from a previous task
316
+ state.offIdle?.();
317
+ state.offIdle = null;
318
+ state.deltasSeen = false;
319
+ // Reset per-task error flag
320
+ state.sessionErrored = false;
321
+ state.stdoutFile = stdoutFile;
322
+ state.exitFile = exitFile;
323
+ state.log = log;
324
+ // Completion helper — safe to call multiple times (no-ops after first call)
325
+ let completionFired = false;
326
+ let offIdleHandle = null;
327
+ let offTaskComplete = null;
328
+ let timeoutHandle = null;
329
+ const _complete = (reason, exitCode = 0) => {
330
+ if (completionFired) {
331
+ return;
332
+ }
333
+ completionFired = true;
334
+ offIdleHandle?.();
335
+ offIdleHandle = null;
336
+ offTaskComplete?.();
337
+ offTaskComplete = null;
338
+ if (timeoutHandle !== null) {
339
+ clearTimeout(timeoutHandle);
340
+ timeoutHandle = null;
341
+ }
342
+ log('Copilot SDK: task complete (' + reason + ')');
343
+ const ef = state.exitFile;
344
+ state.exitFile = null;
345
+ state.stdoutFile = null;
346
+ state.log = null;
347
+ _busyRoots.delete(root);
348
+ if (ef) {
349
+ try {
350
+ fs.writeFileSync(ef, exitCode + '\n', 'utf8');
351
+ }
352
+ catch { /* ignore */ }
353
+ }
354
+ };
355
+ // 3-minute timeout: dispose the stuck session so the next task gets a fresh one
356
+ timeoutHandle = setTimeout(() => {
357
+ log('Copilot SDK: timeout (3min) — disposing stuck session');
358
+ completionFired = true;
359
+ offIdleHandle?.();
360
+ offIdleHandle = null;
361
+ offTaskComplete?.();
362
+ offTaskComplete = null;
363
+ // Dispose the session (it's stuck on a tool execution — can't recover)
364
+ const s = _sessions.get(root);
365
+ if (s) {
366
+ try {
367
+ s.session.dispose();
368
+ }
369
+ catch { /* ignore */ }
370
+ _sessions.delete(root);
371
+ }
372
+ _busyRoots.delete(root);
373
+ const ef = state.exitFile;
374
+ state.exitFile = null;
375
+ state.stdoutFile = null;
376
+ state.log = null;
377
+ if (ef) {
378
+ try {
379
+ fs.writeFileSync(ef, '1\n', 'utf8');
380
+ }
381
+ catch { /* ignore */ }
382
+ }
383
+ }, 3 * 60 * 1000);
384
+ // session.idle fires when the agent finishes a turn
385
+ offIdleHandle = state.session.on('session.idle', () => {
386
+ if (state.sessionErrored) {
387
+ log('Copilot SDK: session.idle after error — disposing broken session');
388
+ // Dispose so the next task creates a fresh session
389
+ const s = _sessions.get(root);
390
+ if (s) {
391
+ try {
392
+ s.session.dispose();
393
+ }
394
+ catch { /* ignore */ }
395
+ _sessions.delete(root);
396
+ }
397
+ _complete('session.error', 1);
398
+ }
399
+ else {
400
+ log('Copilot SDK: session.idle fired');
401
+ _complete('session.idle');
402
+ }
403
+ });
404
+ // session.task_complete is an additional completion signal
405
+ offTaskComplete = state.session.on('session.task_complete', () => {
406
+ log('Copilot SDK: session.task_complete fired');
407
+ _complete('session.task_complete');
408
+ });
409
+ state.offIdle = () => { completionFired = true; offIdleHandle?.(); offIdleHandle = null; offTaskComplete?.(); offTaskComplete = null; };
410
+ log('Copilot SDK: sending prompt (' + promptText.length + ' chars)');
411
+ await state.session.send({ prompt: promptText });
412
+ // send() resolves when the prompt is submitted, not when the agent finishes.
413
+ // Do NOT call _complete here — the session is still executing. Wait for
414
+ // session.idle (or the 3-minute timeout) so the loop doesn't proceed while
415
+ // the agent is still making tool calls and editing TODO.md.
416
+ log('Copilot SDK: send() resolved — waiting for session.idle');
417
+ }
418
+ // ---------------------------------------------------------------------------
419
+ // Close helpers
420
+ // ---------------------------------------------------------------------------
421
+ function closeCopilotSdkSession(root, log) {
422
+ const s = _sessions.get(root);
423
+ if (s) {
424
+ log('Copilot SDK: disposing session');
425
+ s.offIdle?.();
426
+ try {
427
+ s.session.dispose();
428
+ }
429
+ catch { /* ignore */ }
430
+ _sessions.delete(root);
431
+ _busyRoots.delete(root);
432
+ }
433
+ }
434
+ function closeAllCopilotSdkSessions() {
435
+ for (const [root, s] of _sessions) {
436
+ s.offIdle?.();
437
+ try {
438
+ s.session.dispose();
439
+ }
440
+ catch { /* ignore */ }
441
+ _sessions.delete(root);
442
+ }
443
+ _busyRoots.clear();
444
+ }
445
+ //# sourceMappingURL=copilotSdkProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copilotSdkProvider.js","sourceRoot":"","sources":["../../src/providers/copilotSdkProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { RateLimitDetector } from '../rateLimit';
2
+ /** Default model. Override via settings.grokModel. */
3
+ export declare const GROK_DEFAULT_MODEL = "sxs-claude-opus-4-6";
4
+ /** True while a grok turn is running for the given workspace root. */
5
+ export declare function isGrokTuiBusy(root: string): boolean;
6
+ export declare function sendGrokTuiPrompt(root: string,
7
+ /** Absolute path to the combined agent-profile + message file. */
8
+ promptFilePath: string, stdoutFile: string, exitFile: string, log: (msg: string) => void, model?: string,
9
+ /** Optional callback invoked once to reveal the output panel to the user. */
10
+ showOutput?: () => void): void;
11
+ export declare function closeGrokTuiSession(root: string, _log: (msg: string) => void): void;
12
+ /** Kill all active grok processes — called on extension deactivate. */
13
+ export declare function closeAllGrokTuiSessions(): void;
14
+ export declare function detectGrokTuiRateLimit(stdoutContent: string): ReturnType<typeof RateLimitDetector.detect>;