autodev-cli 1.4.131 → 1.4.133

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 (265) hide show
  1. package/LICENSE.md +21 -0
  2. package/media/profile/00b-self-verifiable-work.md +62 -0
  3. package/media/profile/00c-verifiable-threads.md +78 -0
  4. package/media/profile/00d-turn-end-retrospective.md +61 -0
  5. package/media/profile/00e-long-horizon-planning.md +83 -0
  6. package/out/commands/office.js +4 -0
  7. package/out/commands/office.js.map +1 -1
  8. package/out/commands/start.js +1 -1
  9. package/out/commands/start.js.map +1 -1
  10. package/out/core/claudeUsage.d.ts +1 -26
  11. package/out/core/claudeUsage.js +15 -91
  12. package/out/core/claudeUsage.js.map +1 -1
  13. package/out/core/modelInfo.d.ts +1 -28
  14. package/out/core/modelInfo.js +15 -94
  15. package/out/core/modelInfo.js.map +1 -1
  16. package/out/core/provider/BaseProvider.d.ts +1 -14
  17. package/out/core/provider/BaseProvider.js +15 -22
  18. package/out/core/provider/BaseProvider.js.map +1 -1
  19. package/out/core/provider/ProviderRegistry.d.ts +1 -12
  20. package/out/core/provider/ProviderRegistry.js +15 -38
  21. package/out/core/provider/ProviderRegistry.js.map +1 -1
  22. package/out/core/provider/contract.d.ts +1 -62
  23. package/out/core/provider/contract.js +15 -6
  24. package/out/core/provider/contract.js.map +1 -1
  25. package/out/core/provider/implementations.d.ts +1 -65
  26. package/out/core/provider/implementations.js +4 -169
  27. package/out/core/provider/implementations.js.map +1 -1
  28. package/out/dispatcher.js +7 -0
  29. package/out/dispatcher.js.map +1 -1
  30. package/out/hookEventNormalizer.d.ts +1 -33
  31. package/out/hookEventNormalizer.js +15 -424
  32. package/out/hookEventNormalizer.js.map +1 -1
  33. package/out/profileBuilder.js +32 -0
  34. package/out/profileBuilder.js.map +1 -1
  35. package/out/providers/base/BaseProvider.d.ts +14 -0
  36. package/out/providers/base/BaseProvider.js +25 -0
  37. package/out/providers/base/BaseProvider.js.map +1 -0
  38. package/out/providers/base/ProviderEvents.d.ts +12 -0
  39. package/out/providers/base/ProviderEvents.js +81 -0
  40. package/out/providers/base/ProviderEvents.js.map +1 -0
  41. package/out/providers/base/ProviderManager.d.ts +25 -0
  42. package/out/providers/base/ProviderManager.js +22 -0
  43. package/out/providers/base/ProviderManager.js.map +1 -0
  44. package/out/providers/base/ProviderModels.d.ts +28 -0
  45. package/out/providers/base/ProviderModels.js +89 -0
  46. package/out/providers/base/ProviderModels.js.map +1 -0
  47. package/out/providers/base/ProviderNormalizer.d.ts +42 -0
  48. package/out/providers/base/ProviderNormalizer.js +439 -0
  49. package/out/providers/base/ProviderNormalizer.js.map +1 -0
  50. package/out/providers/base/ProviderRegistry.d.ts +12 -0
  51. package/out/providers/base/ProviderRegistry.js +42 -0
  52. package/out/providers/base/ProviderRegistry.js.map +1 -0
  53. package/out/providers/base/ProviderSessions.d.ts +15 -0
  54. package/out/providers/base/ProviderSessions.js +15 -0
  55. package/out/providers/base/ProviderSessions.js.map +1 -0
  56. package/out/providers/base/ProviderState.d.ts +9 -0
  57. package/out/providers/base/ProviderState.js +16 -0
  58. package/out/providers/base/ProviderState.js.map +1 -0
  59. package/out/providers/base/ProviderUsage.d.ts +12 -0
  60. package/out/providers/base/ProviderUsage.js +33 -0
  61. package/out/providers/base/ProviderUsage.js.map +1 -0
  62. package/out/providers/base/contract.d.ts +62 -0
  63. package/out/providers/base/contract.js +9 -0
  64. package/out/providers/base/contract.js.map +1 -0
  65. package/out/providers/base/factories.d.ts +64 -0
  66. package/out/providers/base/factories.js +265 -0
  67. package/out/providers/base/factories.js.map +1 -0
  68. package/out/providers/base/implementations.d.ts +5 -0
  69. package/out/providers/base/implementations.js +23 -0
  70. package/out/providers/base/implementations.js.map +1 -0
  71. package/out/providers/base/index.d.ts +13 -0
  72. package/out/providers/base/index.js +29 -0
  73. package/out/providers/base/index.js.map +1 -0
  74. package/out/providers/base/types.d.ts +30 -0
  75. package/out/providers/base/types.js +8 -0
  76. package/out/providers/base/types.js.map +1 -0
  77. package/out/providers/claude/ProviderEvents.d.ts +5 -0
  78. package/out/providers/claude/ProviderEvents.js +18 -0
  79. package/out/providers/claude/ProviderEvents.js.map +1 -0
  80. package/out/providers/claude/ProviderManager.d.ts +39 -0
  81. package/out/providers/claude/ProviderManager.js +50 -0
  82. package/out/providers/claude/ProviderManager.js.map +1 -0
  83. package/out/providers/claude/ProviderModels.d.ts +8 -0
  84. package/out/providers/claude/ProviderModels.js +23 -0
  85. package/out/providers/claude/ProviderModels.js.map +1 -0
  86. package/out/providers/claude/ProviderNormalizer.d.ts +5 -0
  87. package/out/providers/claude/ProviderNormalizer.js +10 -0
  88. package/out/providers/claude/ProviderNormalizer.js.map +1 -0
  89. package/out/providers/claude/ProviderSessions.d.ts +14 -0
  90. package/out/providers/claude/ProviderSessions.js +35 -0
  91. package/out/providers/claude/ProviderSessions.js.map +1 -0
  92. package/out/providers/claude/ProviderState.d.ts +13 -0
  93. package/out/providers/claude/ProviderState.js +19 -0
  94. package/out/providers/claude/ProviderState.js.map +1 -0
  95. package/out/providers/claude/ProviderUsage.d.ts +13 -0
  96. package/out/providers/claude/ProviderUsage.js +59 -0
  97. package/out/providers/claude/ProviderUsage.js.map +1 -0
  98. package/out/providers/claude/cli.d.ts +95 -0
  99. package/out/providers/claude/cli.js +674 -0
  100. package/out/providers/claude/cli.js.map +1 -0
  101. package/out/providers/claude/index.d.ts +9 -0
  102. package/out/providers/claude/index.js +26 -0
  103. package/out/providers/claude/index.js.map +1 -0
  104. package/out/providers/claude/tui.d.ts +38 -0
  105. package/out/providers/claude/tui.js +346 -0
  106. package/out/providers/claude/tui.js.map +1 -0
  107. package/out/providers/claudeCliProvider.d.ts +1 -95
  108. package/out/providers/claudeCliProvider.js +4 -660
  109. package/out/providers/claudeCliProvider.js.map +1 -1
  110. package/out/providers/claudeTuiProvider.d.ts +1 -38
  111. package/out/providers/claudeTuiProvider.js +4 -332
  112. package/out/providers/claudeTuiProvider.js.map +1 -1
  113. package/out/providers/copilot/ProviderEvents.d.ts +6 -0
  114. package/out/providers/copilot/ProviderEvents.js +18 -0
  115. package/out/providers/copilot/ProviderEvents.js.map +1 -0
  116. package/out/providers/copilot/ProviderManager.d.ts +39 -0
  117. package/out/providers/copilot/ProviderManager.js +98 -0
  118. package/out/providers/copilot/ProviderManager.js.map +1 -0
  119. package/out/providers/copilot/ProviderModels.d.ts +7 -0
  120. package/out/providers/copilot/ProviderModels.js +18 -0
  121. package/out/providers/copilot/ProviderModels.js.map +1 -0
  122. package/out/providers/copilot/ProviderNormalizer.d.ts +5 -0
  123. package/out/providers/copilot/ProviderNormalizer.js +10 -0
  124. package/out/providers/copilot/ProviderNormalizer.js.map +1 -0
  125. package/out/providers/copilot/ProviderSessions.d.ts +12 -0
  126. package/out/providers/copilot/ProviderSessions.js +39 -0
  127. package/out/providers/copilot/ProviderSessions.js.map +1 -0
  128. package/out/providers/copilot/ProviderState.d.ts +11 -0
  129. package/out/providers/copilot/ProviderState.js +17 -0
  130. package/out/providers/copilot/ProviderState.js.map +1 -0
  131. package/out/providers/copilot/ProviderUsage.d.ts +12 -0
  132. package/out/providers/copilot/ProviderUsage.js +41 -0
  133. package/out/providers/copilot/ProviderUsage.js.map +1 -0
  134. package/out/providers/copilot/cli.d.ts +16 -0
  135. package/out/providers/copilot/cli.js +52 -0
  136. package/out/providers/copilot/cli.js.map +1 -0
  137. package/out/providers/copilot/index.d.ts +10 -0
  138. package/out/providers/copilot/index.js +27 -0
  139. package/out/providers/copilot/index.js.map +1 -0
  140. package/out/providers/copilot/sdk.d.ts +22 -0
  141. package/out/providers/copilot/sdk.js +489 -0
  142. package/out/providers/copilot/sdk.js.map +1 -0
  143. package/out/providers/copilot/sessions.d.ts +25 -0
  144. package/out/providers/copilot/sessions.js +214 -0
  145. package/out/providers/copilot/sessions.js.map +1 -0
  146. package/out/providers/copilotCliProvider.d.ts +1 -16
  147. package/out/providers/copilotCliProvider.js +15 -49
  148. package/out/providers/copilotCliProvider.js.map +1 -1
  149. package/out/providers/copilotSdkProvider.d.ts +1 -22
  150. package/out/providers/copilotSdkProvider.js +4 -475
  151. package/out/providers/copilotSdkProvider.js.map +1 -1
  152. package/out/providers/copilotSessions.d.ts +1 -25
  153. package/out/providers/copilotSessions.js +4 -200
  154. package/out/providers/copilotSessions.js.map +1 -1
  155. package/out/providers/dummy/ProviderEvents.d.ts +5 -0
  156. package/out/providers/dummy/ProviderEvents.js +16 -0
  157. package/out/providers/dummy/ProviderEvents.js.map +1 -0
  158. package/out/providers/dummy/ProviderManager.d.ts +31 -0
  159. package/out/providers/dummy/ProviderManager.js +115 -0
  160. package/out/providers/dummy/ProviderManager.js.map +1 -0
  161. package/out/providers/dummy/ProviderModels.d.ts +7 -0
  162. package/out/providers/dummy/ProviderModels.js +15 -0
  163. package/out/providers/dummy/ProviderModels.js.map +1 -0
  164. package/out/providers/dummy/ProviderNormalizer.d.ts +4 -0
  165. package/out/providers/dummy/ProviderNormalizer.js +9 -0
  166. package/out/providers/dummy/ProviderNormalizer.js.map +1 -0
  167. package/out/providers/dummy/ProviderSessions.d.ts +12 -0
  168. package/out/providers/dummy/ProviderSessions.js +105 -0
  169. package/out/providers/dummy/ProviderSessions.js.map +1 -0
  170. package/out/providers/dummy/ProviderState.d.ts +12 -0
  171. package/out/providers/dummy/ProviderState.js +23 -0
  172. package/out/providers/dummy/ProviderState.js.map +1 -0
  173. package/out/providers/dummy/ProviderUsage.d.ts +9 -0
  174. package/out/providers/dummy/ProviderUsage.js +27 -0
  175. package/out/providers/dummy/ProviderUsage.js.map +1 -0
  176. package/out/providers/dummy/commands.d.ts +9 -0
  177. package/out/providers/dummy/commands.js +48 -0
  178. package/out/providers/dummy/commands.js.map +1 -0
  179. package/out/providers/dummy/index.d.ts +10 -0
  180. package/out/providers/dummy/index.js +27 -0
  181. package/out/providers/dummy/index.js.map +1 -0
  182. package/out/providers/dummy/office.d.ts +23 -0
  183. package/out/providers/dummy/office.js +66 -0
  184. package/out/providers/dummy/office.js.map +1 -0
  185. package/out/providers/dummy/traces.d.ts +8 -0
  186. package/out/providers/dummy/traces.js +174 -0
  187. package/out/providers/dummy/traces.js.map +1 -0
  188. package/out/providers/grok/ProviderEvents.d.ts +6 -0
  189. package/out/providers/grok/ProviderEvents.js +17 -0
  190. package/out/providers/grok/ProviderEvents.js.map +1 -0
  191. package/out/providers/grok/ProviderManager.d.ts +42 -0
  192. package/out/providers/grok/ProviderManager.js +48 -0
  193. package/out/providers/grok/ProviderManager.js.map +1 -0
  194. package/out/providers/grok/ProviderModels.d.ts +7 -0
  195. package/out/providers/grok/ProviderModels.js +16 -0
  196. package/out/providers/grok/ProviderModels.js.map +1 -0
  197. package/out/providers/grok/ProviderNormalizer.d.ts +5 -0
  198. package/out/providers/grok/ProviderNormalizer.js +10 -0
  199. package/out/providers/grok/ProviderNormalizer.js.map +1 -0
  200. package/out/providers/grok/ProviderSessions.d.ts +12 -0
  201. package/out/providers/grok/ProviderSessions.js +27 -0
  202. package/out/providers/grok/ProviderSessions.js.map +1 -0
  203. package/out/providers/grok/ProviderState.d.ts +10 -0
  204. package/out/providers/grok/ProviderState.js +15 -0
  205. package/out/providers/grok/ProviderState.js.map +1 -0
  206. package/out/providers/grok/ProviderUsage.d.ts +7 -0
  207. package/out/providers/grok/ProviderUsage.js +20 -0
  208. package/out/providers/grok/ProviderUsage.js.map +1 -0
  209. package/out/providers/grok/index.d.ts +9 -0
  210. package/out/providers/grok/index.js +26 -0
  211. package/out/providers/grok/index.js.map +1 -0
  212. package/out/providers/grok/sessions.d.ts +27 -0
  213. package/out/providers/grok/sessions.js +246 -0
  214. package/out/providers/grok/sessions.js.map +1 -0
  215. package/out/providers/grok/tui.d.ts +38 -0
  216. package/out/providers/grok/tui.js +1630 -0
  217. package/out/providers/grok/tui.js.map +1 -0
  218. package/out/providers/grokSessions.d.ts +1 -27
  219. package/out/providers/grokSessions.js +4 -232
  220. package/out/providers/grokSessions.js.map +1 -1
  221. package/out/providers/grokTuiProvider.d.ts +1 -38
  222. package/out/providers/grokTuiProvider.js +4 -1616
  223. package/out/providers/grokTuiProvider.js.map +1 -1
  224. package/out/providers/opencode/ProviderEvents.d.ts +6 -0
  225. package/out/providers/opencode/ProviderEvents.js +18 -0
  226. package/out/providers/opencode/ProviderEvents.js.map +1 -0
  227. package/out/providers/opencode/ProviderManager.d.ts +39 -0
  228. package/out/providers/opencode/ProviderManager.js +90 -0
  229. package/out/providers/opencode/ProviderManager.js.map +1 -0
  230. package/out/providers/opencode/ProviderModels.d.ts +7 -0
  231. package/out/providers/opencode/ProviderModels.js +17 -0
  232. package/out/providers/opencode/ProviderModels.js.map +1 -0
  233. package/out/providers/opencode/ProviderNormalizer.d.ts +5 -0
  234. package/out/providers/opencode/ProviderNormalizer.js +10 -0
  235. package/out/providers/opencode/ProviderNormalizer.js.map +1 -0
  236. package/out/providers/opencode/ProviderSessions.d.ts +11 -0
  237. package/out/providers/opencode/ProviderSessions.js +28 -0
  238. package/out/providers/opencode/ProviderSessions.js.map +1 -0
  239. package/out/providers/opencode/ProviderState.d.ts +14 -0
  240. package/out/providers/opencode/ProviderState.js +20 -0
  241. package/out/providers/opencode/ProviderState.js.map +1 -0
  242. package/out/providers/opencode/ProviderUsage.d.ts +7 -0
  243. package/out/providers/opencode/ProviderUsage.js +20 -0
  244. package/out/providers/opencode/ProviderUsage.js.map +1 -0
  245. package/out/providers/opencode/cli.d.ts +29 -0
  246. package/out/providers/opencode/cli.js +199 -0
  247. package/out/providers/opencode/cli.js.map +1 -0
  248. package/out/providers/opencode/index.d.ts +9 -0
  249. package/out/providers/opencode/index.js +26 -0
  250. package/out/providers/opencode/index.js.map +1 -0
  251. package/out/providers/opencode/sdk.d.ts +32 -0
  252. package/out/providers/opencode/sdk.js +610 -0
  253. package/out/providers/opencode/sdk.js.map +1 -0
  254. package/out/providers/opencodeCliProvider.d.ts +1 -29
  255. package/out/providers/opencodeCliProvider.js +15 -196
  256. package/out/providers/opencodeCliProvider.js.map +1 -1
  257. package/out/providers/opencodeSdkProvider.d.ts +1 -32
  258. package/out/providers/opencodeSdkProvider.js +4 -596
  259. package/out/providers/opencodeSdkProvider.js.map +1 -1
  260. package/out/providers.d.ts +1 -1
  261. package/out/providers.js +5 -0
  262. package/out/providers.js.map +1 -1
  263. package/out/sdk/index.js +5 -0
  264. package/out/sdk/index.js.map +1 -1
  265. package/package.json +2 -2
@@ -0,0 +1,489 @@
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.steerCopilotSdk = steerCopilotSdk;
56
+ exports.readCopilotSdkOutputSince = readCopilotSdkOutputSince;
57
+ exports.sendCopilotSdkPrompt = sendCopilotSdkPrompt;
58
+ exports.closeCopilotSdkSession = closeCopilotSdkSession;
59
+ exports.closeAllCopilotSdkSessions = closeAllCopilotSdkSessions;
60
+ const fs = __importStar(require("fs"));
61
+ const os = __importStar(require("os"));
62
+ const path = __importStar(require("path"));
63
+ const hookEventNormalizer_1 = require("../../hookEventNormalizer");
64
+ const liveNarration_1 = require("../../core/liveNarration");
65
+ // ---------------------------------------------------------------------------
66
+ // SDK + keytar path resolution
67
+ // ---------------------------------------------------------------------------
68
+ function _copilotNpmRoot() {
69
+ if (process.platform === 'win32') {
70
+ return path.join(os.homedir(), 'AppData', 'Roaming', 'npm', 'node_modules', '@github', 'copilot');
71
+ }
72
+ for (const candidate of [
73
+ '/usr/local/lib/node_modules/@github/copilot',
74
+ '/usr/lib/node_modules/@github/copilot',
75
+ path.join(os.homedir(), '.npm', 'node_modules', '@github', 'copilot'),
76
+ ]) {
77
+ if (fs.existsSync(candidate)) {
78
+ return candidate;
79
+ }
80
+ }
81
+ return '/usr/local/lib/node_modules/@github/copilot';
82
+ }
83
+ function _sdkPath() {
84
+ return path.join(_copilotNpmRoot(), 'sdk', 'index.js');
85
+ }
86
+ function _keytarPath() {
87
+ const p = path.join(_copilotNpmRoot(), 'prebuilds', process.platform + '-' + process.arch, 'keytar.node');
88
+ return fs.existsSync(p) ? p : null;
89
+ }
90
+ let _authCache;
91
+ let _authLoadingPromise = null;
92
+ async function _fetchCopilotUser(token) {
93
+ const res = await fetch('https://api.github.com/copilot_internal/user', {
94
+ headers: { 'Authorization': 'token ' + token, 'User-Agent': 'GitHubCopilotCLI/1.0' },
95
+ });
96
+ if (!res.ok) {
97
+ throw new Error('HTTP ' + res.status);
98
+ }
99
+ return res.json();
100
+ }
101
+ // Settings-derived token set by the extension before each send.
102
+ let _settingsToken;
103
+ function setCopilotSettingsToken(token) {
104
+ _settingsToken = token || undefined;
105
+ }
106
+ async function _loadAuth() {
107
+ const envToken = _settingsToken ||
108
+ process.env['COPILOT_GITHUB_TOKEN'] ||
109
+ process.env['GITHUB_COPILOT_GITHUB_TOKEN'] ||
110
+ process.env['GH_TOKEN'] ||
111
+ process.env['GITHUB_TOKEN'];
112
+ if (envToken) {
113
+ const copilotUser = await _fetchCopilotUser(envToken).catch(() => undefined);
114
+ return { type: 'gh-cli', host: 'https://github.com', login: 'unknown', token: envToken, copilotUser };
115
+ }
116
+ const kp = _keytarPath();
117
+ if (kp) {
118
+ try {
119
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
120
+ const keytar = require(kp);
121
+ const creds = await keytar.findCredentials('copilot-cli');
122
+ if (creds.length > 0) {
123
+ const { account, password: token } = creds[0];
124
+ const loginMatch = account.match(/:([^:]+)$/);
125
+ const login = loginMatch ? loginMatch[1] : 'unknown';
126
+ const copilotUser = await _fetchCopilotUser(token).catch(() => undefined);
127
+ return { type: 'gh-cli', host: 'https://github.com', login, token, copilotUser };
128
+ }
129
+ }
130
+ catch { /* keytar unavailable */ }
131
+ }
132
+ return undefined;
133
+ }
134
+ function _getAuth() {
135
+ if (_authCache) {
136
+ return Promise.resolve(_authCache);
137
+ }
138
+ if (!_authLoadingPromise) {
139
+ _authLoadingPromise = _loadAuth().then(a => {
140
+ _authCache = a;
141
+ _authLoadingPromise = null;
142
+ return a;
143
+ });
144
+ }
145
+ return _authLoadingPromise;
146
+ }
147
+ function clearCopilotAuthCache() {
148
+ _authCache = undefined;
149
+ _authLoadingPromise = null;
150
+ }
151
+ /** Expose the npm root path so callers can run `npm rebuild` there. */
152
+ function copilotNpmRoot() {
153
+ return _copilotNpmRoot();
154
+ }
155
+ /** Clear the cached SDK dynamic import so the next call to _getSdk() re-imports it. */
156
+ function clearCopilotSdkCache() {
157
+ _sdkPromise = null;
158
+ }
159
+ // ---------------------------------------------------------------------------
160
+ // SDK module loading (cached after first import)
161
+ // ---------------------------------------------------------------------------
162
+ let _sdkPromise = null;
163
+ function _getSdk() {
164
+ if (!_sdkPromise) {
165
+ const p = _sdkPath();
166
+ const url = p.startsWith('/') ? 'file://' + p : 'file:///' + p.replace(/\\/g, '/');
167
+ // Use Function() wrapper to prevent esbuild from transforming import() → require().
168
+ // require() does not support file:// URLs; real dynamic import() does.
169
+ _sdkPromise = (Function('u', 'return import(u)')(url)).catch(e => {
170
+ _sdkPromise = null;
171
+ throw new Error('Failed to load Copilot SDK from ' + p + ': ' + (e?.message ?? e));
172
+ });
173
+ }
174
+ return _sdkPromise;
175
+ }
176
+ const _sessions = new Map();
177
+ const _busyRoots = new Set();
178
+ // ---------------------------------------------------------------------------
179
+ // Public interface (same shape as the old PTY-based provider)
180
+ // ---------------------------------------------------------------------------
181
+ function isCopilotSdkBusy(root) {
182
+ return _busyRoots.has(root);
183
+ }
184
+ function getLatestCopilotSdkSessionId(root) {
185
+ return _sessions.has(root) ? 'copilot-sdk:' + path.basename(root) : undefined;
186
+ }
187
+ /**
188
+ * Steer the live Copilot SDK session MID-TURN. Unlike copilot-cli (a one-shot
189
+ * subprocess), the SDK holds a persistent LocalSession whose send() accepts
190
+ * mode:'immediate' — the message is injected into the CURRENTLY-RUNNING turn
191
+ * (the model's next call includes it) instead of the default 'enqueue' which
192
+ * waits for the next turn. Returns true only if there's a live/busy session to
193
+ * inject into; false otherwise, so the caller falls back to the durable TODO
194
+ * queue (at-least-once delivery preserved).
195
+ */
196
+ async function steerCopilotSdk(root, text, log) {
197
+ const state = _sessions.get(root);
198
+ if (!state || !_busyRoots.has(root)) {
199
+ return false;
200
+ }
201
+ try {
202
+ await state.session.send({ prompt: text, mode: 'immediate' });
203
+ log('Copilot SDK: steered mid-turn (' + text.length + ' chars) — injected into current turn');
204
+ return true;
205
+ }
206
+ catch (e) {
207
+ log('Copilot SDK: mid-turn steer failed: ' + (e?.message ?? String(e)));
208
+ return false;
209
+ }
210
+ }
211
+ function readCopilotSdkOutputSince(stdoutFile, fromByte) {
212
+ try {
213
+ const raw = fs.readFileSync(stdoutFile, 'utf8');
214
+ return fromByte > 0 ? raw.slice(fromByte) : raw;
215
+ }
216
+ catch {
217
+ return '';
218
+ }
219
+ }
220
+ // ---------------------------------------------------------------------------
221
+ // sendCopilotSdkPrompt - fire-and-forget entry point
222
+ // ---------------------------------------------------------------------------
223
+ function sendCopilotSdkPrompt(root, promptFilePath, _resolvedSessionId, stdoutFile, exitFile, log, showOutput) {
224
+ showOutput?.();
225
+ try {
226
+ fs.writeFileSync(stdoutFile, '', 'utf8');
227
+ }
228
+ catch { /* ignore */ }
229
+ try {
230
+ fs.writeFileSync(exitFile, '', 'utf8');
231
+ }
232
+ catch { /* ignore */ }
233
+ _busyRoots.add(root);
234
+ _sendAsync(root, promptFilePath, stdoutFile, exitFile, log).catch(e => {
235
+ log('Copilot SDK error: ' + (e?.message ?? String(e)));
236
+ _busyRoots.delete(root);
237
+ try {
238
+ fs.writeFileSync(exitFile, '1\n', 'utf8');
239
+ }
240
+ catch { /* ignore */ }
241
+ });
242
+ }
243
+ // ---------------------------------------------------------------------------
244
+ // Core async implementation
245
+ // ---------------------------------------------------------------------------
246
+ async function _sendAsync(root, promptFilePath, stdoutFile, exitFile, log) {
247
+ let promptText;
248
+ try {
249
+ promptText = fs.readFileSync(promptFilePath, 'utf8');
250
+ }
251
+ catch (e) {
252
+ throw new Error('Cannot read prompt file ' + promptFilePath + ': ' + e.message);
253
+ }
254
+ const [authInfo, sdk] = await Promise.all([_getAuth(), _getSdk()]);
255
+ if (!authInfo) {
256
+ throw new Error('No GitHub Copilot credentials found. ' +
257
+ 'Set the GITHUB_TOKEN env var or run copilot auth login.');
258
+ }
259
+ let state = _sessions.get(root);
260
+ if (!state) {
261
+ log('Copilot SDK: creating LocalSession for ' + path.basename(root));
262
+ // SDK v1.0.48+ constructor is (coreServices, options) — two args.
263
+ // Passing everything as one arg puts authInfo in the coreServices slot
264
+ // where it is ignored, so this.authInfo is never set → session.error.
265
+ const coreServices = sdk.createCoreServices ? sdk.createCoreServices({}) : {};
266
+ // Pass permissionRequestHandler in the constructor options so it is stored as
267
+ // this.permissionRequestHandler on the session. The agent loop checks it BEFORE
268
+ // routing through the PermissionService (which has a path-manager check that
269
+ // returns "user-not-available" / denied when permissionRequestEventsEnabled=false).
270
+ // This is the only reliable way to auto-approve all tool permissions in headless mode.
271
+ const session = new sdk.LocalSession(coreServices, {
272
+ authInfo,
273
+ workingDirectory: root,
274
+ runningInInteractiveMode: false,
275
+ askUserDisabled: true,
276
+ permissionRequestHandler: async (_req) => ({ kind: 'approved' }),
277
+ });
278
+ state = { session, stdoutFile: null, exitFile: null, log: null, offIdle: null, deltasSeen: false, sessionErrored: false, narrator: null };
279
+ _sessions.set(root, state);
280
+ // Wire up output streaming to stdoutFile (registered once per session)
281
+ const localState = state;
282
+ const hooksJsonlDir = path.join(root, '.autodev');
283
+ const hooksJsonlPath = path.join(hooksJsonlDir, 'hooks-events.jsonl');
284
+ log('Copilot SDK: hooks-events.jsonl → ' + hooksJsonlPath);
285
+ session.on('*', (ev) => {
286
+ // Auto-approve all permission requests (yolo / allow-all mode)
287
+ if (ev.type === 'permission.requested' && ev.data?.['requestId']) {
288
+ try {
289
+ session.respondToPermission(ev.data['requestId'], { kind: 'approved' });
290
+ }
291
+ catch { /* ignore */ }
292
+ }
293
+ // Auto-respond to user_input requests
294
+ if (ev.type === 'user_input.requested' && ev.data?.['requestId']) {
295
+ try {
296
+ session.respondToUserInput(ev.data['requestId'], { kind: 'accept', text: '' });
297
+ }
298
+ catch { /* ignore */ }
299
+ }
300
+ if (!ev.ephemeral) {
301
+ const d = ev.data ?? {};
302
+ const toolName = (d['toolName'] ?? d['name']);
303
+ const extra = (ev.type === 'tool.execution_start' || ev.type === 'tool.execution_complete')
304
+ ? ' [' + (toolName ?? '?') + ']'
305
+ : '';
306
+ localState.log?.('Copilot SDK [event]: ' + ev.type + extra);
307
+ // Track session errors so the next idle disposes the broken session
308
+ if (ev.type === 'session.error') {
309
+ localState.sessionErrored = true;
310
+ localState.log?.('Copilot SDK: session.error — will dispose session on next idle');
311
+ }
312
+ // Skip the final full-text AgentMessage when we already streamed the same
313
+ // text live via delta-driven Notification events (below) — otherwise the
314
+ // chat shows the whole message a second time as one big trailing bubble.
315
+ const isStreamedAssistantMessage = ev.type === 'assistant.message' && localState.deltasSeen;
316
+ if (!isStreamedAssistantMessage) {
317
+ (0, hookEventNormalizer_1.appendHookEvent)(hooksJsonlPath, 'copilot-sdk', ev, fs, path, (e) => localState.log?.('Copilot SDK [hooks write error]: ' + String(e)));
318
+ }
319
+ }
320
+ if (!localState.stdoutFile) {
321
+ return;
322
+ }
323
+ if (ev.type === 'assistant.turn_start') {
324
+ localState.deltasSeen = false;
325
+ }
326
+ else if (ev.type === 'assistant.message_delta') {
327
+ const chunk = ev.data?.['deltaContent'];
328
+ if (chunk) {
329
+ localState.deltasSeen = true;
330
+ try {
331
+ fs.appendFileSync(localState.stdoutFile, chunk, 'utf8');
332
+ }
333
+ catch { /* ignore */ }
334
+ // Stream the assistant's text to the chat live (coalesced Notifications).
335
+ localState.narrator?.push(chunk);
336
+ }
337
+ }
338
+ else if (ev.type === 'assistant.message' && !localState.deltasSeen) {
339
+ const content = ev.data?.['content'];
340
+ if (content) {
341
+ try {
342
+ fs.appendFileSync(localState.stdoutFile, content + '\n', 'utf8');
343
+ }
344
+ catch { /* ignore */ }
345
+ }
346
+ }
347
+ });
348
+ }
349
+ // Detach any leftover idle handler from a previous task
350
+ state.offIdle?.();
351
+ state.offIdle = null;
352
+ state.deltasSeen = false;
353
+ // Reset per-task error flag
354
+ state.sessionErrored = false;
355
+ state.stdoutFile = stdoutFile;
356
+ state.exitFile = exitFile;
357
+ state.log = log;
358
+ // Fresh per-task narrator: streams this turn's assistant text to the chat live.
359
+ state.narrator?.dispose();
360
+ state.narrator = new liveNarration_1.LiveNarrationStreamer('copilot-sdk', root, ev => (0, liveNarration_1.appendHookEventLine)(root, ev));
361
+ // Completion helper — safe to call multiple times (no-ops after first call)
362
+ let completionFired = false;
363
+ let offIdleHandle = null;
364
+ let offTaskComplete = null;
365
+ let timeoutHandle = null;
366
+ const _complete = (reason, exitCode = 0) => {
367
+ if (completionFired) {
368
+ return;
369
+ }
370
+ completionFired = true;
371
+ offIdleHandle?.();
372
+ offIdleHandle = null;
373
+ offTaskComplete?.();
374
+ offTaskComplete = null;
375
+ if (timeoutHandle !== null) {
376
+ clearTimeout(timeoutHandle);
377
+ timeoutHandle = null;
378
+ }
379
+ // Flush any assistant text still buffered so the turn's final words reach the chat.
380
+ state.narrator?.flush();
381
+ state.narrator = null;
382
+ log('Copilot SDK: task complete (' + reason + ')');
383
+ const ef = state.exitFile;
384
+ state.exitFile = null;
385
+ state.stdoutFile = null;
386
+ state.log = null;
387
+ _busyRoots.delete(root);
388
+ if (ef) {
389
+ try {
390
+ fs.writeFileSync(ef, exitCode + '\n', 'utf8');
391
+ }
392
+ catch { /* ignore */ }
393
+ }
394
+ };
395
+ // 3-minute timeout: dispose the stuck session so the next task gets a fresh one
396
+ timeoutHandle = setTimeout(() => {
397
+ log('Copilot SDK: timeout (3min) — disposing stuck session');
398
+ completionFired = true;
399
+ offIdleHandle?.();
400
+ offIdleHandle = null;
401
+ offTaskComplete?.();
402
+ offTaskComplete = null;
403
+ state.narrator?.flush();
404
+ state.narrator = null;
405
+ // Dispose the session (it's stuck on a tool execution — can't recover)
406
+ const s = _sessions.get(root);
407
+ if (s) {
408
+ try {
409
+ s.session.dispose();
410
+ }
411
+ catch { /* ignore */ }
412
+ _sessions.delete(root);
413
+ }
414
+ _busyRoots.delete(root);
415
+ const ef = state.exitFile;
416
+ state.exitFile = null;
417
+ state.stdoutFile = null;
418
+ state.log = null;
419
+ if (ef) {
420
+ try {
421
+ fs.writeFileSync(ef, '1\n', 'utf8');
422
+ }
423
+ catch { /* ignore */ }
424
+ }
425
+ }, 3 * 60 * 1000);
426
+ // session.idle fires when the agent finishes a turn
427
+ offIdleHandle = state.session.on('session.idle', () => {
428
+ if (state.sessionErrored) {
429
+ log('Copilot SDK: session.idle after error — disposing broken session');
430
+ // Dispose so the next task creates a fresh session
431
+ const s = _sessions.get(root);
432
+ if (s) {
433
+ try {
434
+ s.session.dispose();
435
+ }
436
+ catch { /* ignore */ }
437
+ _sessions.delete(root);
438
+ }
439
+ _complete('session.error', 1);
440
+ }
441
+ else {
442
+ log('Copilot SDK: session.idle fired');
443
+ _complete('session.idle');
444
+ }
445
+ });
446
+ // session.task_complete is an additional completion signal
447
+ offTaskComplete = state.session.on('session.task_complete', () => {
448
+ log('Copilot SDK: session.task_complete fired');
449
+ _complete('session.task_complete');
450
+ });
451
+ state.offIdle = () => { completionFired = true; offIdleHandle?.(); offIdleHandle = null; offTaskComplete?.(); offTaskComplete = null; };
452
+ log('Copilot SDK: sending prompt (' + promptText.length + ' chars)');
453
+ await state.session.send({ prompt: promptText });
454
+ // send() resolves when the prompt is submitted, not when the agent finishes.
455
+ // Do NOT call _complete here — the session is still executing. Wait for
456
+ // session.idle (or the 3-minute timeout) so the loop doesn't proceed while
457
+ // the agent is still making tool calls and editing TODO.md.
458
+ log('Copilot SDK: send() resolved — waiting for session.idle');
459
+ }
460
+ // ---------------------------------------------------------------------------
461
+ // Close helpers
462
+ // ---------------------------------------------------------------------------
463
+ function closeCopilotSdkSession(root, log) {
464
+ const s = _sessions.get(root);
465
+ if (s) {
466
+ log('Copilot SDK: disposing session');
467
+ s.offIdle?.();
468
+ s.narrator?.dispose();
469
+ try {
470
+ s.session.dispose();
471
+ }
472
+ catch { /* ignore */ }
473
+ _sessions.delete(root);
474
+ _busyRoots.delete(root);
475
+ }
476
+ }
477
+ function closeAllCopilotSdkSessions() {
478
+ for (const [root, s] of _sessions) {
479
+ s.offIdle?.();
480
+ s.narrator?.dispose();
481
+ try {
482
+ s.session.dispose();
483
+ }
484
+ catch { /* ignore */ }
485
+ _sessions.delete(root);
486
+ }
487
+ _busyRoots.clear();
488
+ }
489
+ //# sourceMappingURL=sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../../src/providers/copilot/sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export interface CopilotSessionInfo {
2
+ id: string;
3
+ name: string;
4
+ cwd: string;
5
+ updated: number;
6
+ }
7
+ /** All Copilot sessions on this machine (newest first). `updated` is epoch ms
8
+ * from events.jsonl mtime (falls back to workspace.yaml / the folder mtime). */
9
+ export declare function listAllCopilotSessions(): CopilotSessionInfo[];
10
+ /** Copilot sessions whose cwd matches `root` (for per-workspace collectSessions). */
11
+ export declare function listCopilotSessions(root: string): Array<{
12
+ id: string;
13
+ title: string;
14
+ updated: number;
15
+ }>;
16
+ export interface TranscriptMsg {
17
+ role: 'user' | 'assistant' | 'system' | 'tool';
18
+ text: string;
19
+ ts?: number;
20
+ }
21
+ /** Parse a copilot session's events.jsonl into a normalized message array.
22
+ * Renders user/assistant prose, tool calls (assistant.message.toolRequests +
23
+ * tool.execution_complete results) and the system prompt (heavily truncated).
24
+ * Returns at most `limit` messages (the tail). */
25
+ export declare function readCopilotTranscript(id: string, limit?: number): TranscriptMsg[];