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,425 @@
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.claudeProjectFolder = claudeProjectFolder;
37
+ exports.getClaudeProjectDir = getClaudeProjectDir;
38
+ exports.listClaudeSessionFiles = listClaudeSessionFiles;
39
+ exports.listClaudeSessions = listClaudeSessions;
40
+ exports.findLatestClaudeSession = findLatestClaudeSession;
41
+ exports.getClaudeSessionDisplay = getClaudeSessionDisplay;
42
+ exports.setClaudeSessionName = setClaudeSessionName;
43
+ exports.getClaudeSessionCursor = getClaudeSessionCursor;
44
+ exports.parseClaudeStateSince = parseClaudeStateSince;
45
+ exports.hasClaudeEndTurnSince = hasClaudeEndTurnSince;
46
+ exports.readClaudeOutputSince = readClaudeOutputSince;
47
+ exports.buildClaudeCliCommand = buildClaudeCliCommand;
48
+ exports.probeClaudeSession = probeClaudeSession;
49
+ exports.runClaudeCompact = runClaudeCompact;
50
+ exports.runClaudeClear = runClaudeClear;
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ const os = __importStar(require("os"));
54
+ const child_process_1 = require("child_process");
55
+ // ---------------------------------------------------------------------------
56
+ // Claude project-folder / JSONL session helpers
57
+ // ---------------------------------------------------------------------------
58
+ /**
59
+ * Encode a workspace path the way Claude Code names its `~/.claude/projects/`
60
+ * folders: every `:`, `\`, `/` becomes `-`, and runs of dashes are collapsed.
61
+ * Note: Claude **keeps the leading dash** that comes from a leading slash on
62
+ * POSIX paths (e.g. `/home/x/foo` → `-home-x-foo`), so we don't strip `^-`.
63
+ * Trailing dashes are dropped.
64
+ */
65
+ function claudeProjectFolder(workspacePath) {
66
+ return workspacePath.replace(/[:\\/]/g, '-').replace(/-+/g, '-').replace(/-$/g, '');
67
+ }
68
+ /**
69
+ * Compute the `~/.claude/projects/<encoded>` directory for a workspace,
70
+ * regardless of whether it already exists. Used when restoring an agent
71
+ * backup into a new folder: the destination's session traces must land in
72
+ * the project dir that Claude will look up for that folder.
73
+ */
74
+ function getClaudeProjectDir(workspacePath) {
75
+ const claudeDir = process.env['CLAUDE_CONFIG_DIR'] ?? path.join(os.homedir(), '.claude');
76
+ return path.join(claudeDir, 'projects', claudeProjectFolder(workspacePath));
77
+ }
78
+ /**
79
+ * Resolve the Claude `~/.claude/projects/<encoded>` folder for this workspace.
80
+ * Match is **exact** (case-insensitive only on Windows). We try the primary
81
+ * encoding and a no-leading-dash fallback so historical folders created by
82
+ * older Claude versions still resolve. Prefix matching is intentionally NOT
83
+ * used — the previous fuzzy match (`startsWith(encoded.slice(0,8))`) caused
84
+ * two VS Code instances opened in sibling directories like
85
+ * `-home-code-foo` and `-home-code1-bar` (sharing prefix `-home-cod`) to
86
+ * pick up each other's session JSONLs and end up resuming the same Claude
87
+ * session.
88
+ */
89
+ function findClaudeProjectDir(workspacePath) {
90
+ try {
91
+ const claudeDir = process.env['CLAUDE_CONFIG_DIR'] ?? path.join(os.homedir(), '.claude');
92
+ const projectsDir = path.join(claudeDir, 'projects');
93
+ const encoded = claudeProjectFolder(workspacePath);
94
+ const candidates = [encoded, encoded.replace(/^-+/, '')];
95
+ const folders = fs.readdirSync(projectsDir);
96
+ const isWindows = process.platform === 'win32';
97
+ const norm = (s) => (isWindows ? s.toLowerCase() : s);
98
+ const targets = new Set(candidates.map(norm));
99
+ const match = folders.find(f => targets.has(norm(f)));
100
+ return match ? path.join(projectsDir, match) : undefined;
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ }
106
+ function listClaudeSessionFiles(workspacePath) {
107
+ const sessionsDir = findClaudeProjectDir(workspacePath);
108
+ if (!sessionsDir) {
109
+ return [];
110
+ }
111
+ try {
112
+ return fs.readdirSync(sessionsDir)
113
+ .filter(f => f.endsWith('.jsonl') && !f.startsWith('agent-'))
114
+ .map(f => ({ name: f, mtime: fs.statSync(path.join(sessionsDir, f)).mtimeMs, full: path.join(sessionsDir, f) }))
115
+ .sort((a, b) => b.mtime - a.mtime);
116
+ }
117
+ catch {
118
+ return [];
119
+ }
120
+ }
121
+ function listClaudeSessions(workspacePath) {
122
+ return listClaudeSessionFiles(workspacePath).map(f => ({
123
+ id: f.name.replace('.jsonl', ''),
124
+ mtime: f.mtime,
125
+ }));
126
+ }
127
+ function findLatestClaudeSession(workspacePath) {
128
+ return listClaudeSessionFiles(workspacePath)[0]?.name.replace('.jsonl', '');
129
+ }
130
+ /**
131
+ * Set the display NAME shown for a Claude session in the `claude --resume`
132
+ * picker. This Claude version has no dedicated title field — the picker label is
133
+ * the `display` value in ~/.claude/history.jsonl keyed by sessionId. We APPEND a
134
+ * fresh entry (never rewrite existing lines, so history can't be corrupted); the
135
+ * picker surfaces the latest display for the session.
136
+ */
137
+ /** Read the display NAME shown for a claude session in the --resume picker
138
+ * (latest `display` for this sessionId in ~/.claude/history.jsonl). */
139
+ function getClaudeSessionDisplay(sessionId) {
140
+ try {
141
+ const claudeDir = process.env['CLAUDE_CONFIG_DIR'] ?? path.join(os.homedir(), '.claude');
142
+ const histFile = path.join(claudeDir, 'history.jsonl');
143
+ if (!fs.existsSync(histFile)) {
144
+ return undefined;
145
+ }
146
+ let display;
147
+ for (const line of fs.readFileSync(histFile, 'utf8').split('\n')) {
148
+ if (!line.trim()) {
149
+ continue;
150
+ }
151
+ try {
152
+ const e = JSON.parse(line);
153
+ if (e.sessionId === sessionId && e.display) {
154
+ display = e.display;
155
+ }
156
+ }
157
+ catch { /* skip */ }
158
+ }
159
+ return display;
160
+ }
161
+ catch {
162
+ return undefined;
163
+ }
164
+ }
165
+ function setClaudeSessionName(sessionId, name, cwd) {
166
+ if (!sessionId || !name) {
167
+ return;
168
+ }
169
+ try {
170
+ const claudeDir = process.env['CLAUDE_CONFIG_DIR'] ?? path.join(os.homedir(), '.claude');
171
+ const histFile = path.join(claudeDir, 'history.jsonl');
172
+ const entry = { display: name, pastedContents: {}, timestamp: Date.now(), project: cwd, sessionId };
173
+ fs.appendFileSync(histFile, JSON.stringify(entry) + '\n', 'utf8');
174
+ }
175
+ catch { /* non-critical */ }
176
+ }
177
+ function resolveClaudeJsonl(workspacePath) {
178
+ return listClaudeSessionFiles(workspacePath)[0]?.full;
179
+ }
180
+ function getClaudeSessionCursor(workspacePath) {
181
+ const p = resolveClaudeJsonl(workspacePath);
182
+ if (!p) {
183
+ return 0;
184
+ }
185
+ try {
186
+ return fs.statSync(p).size;
187
+ }
188
+ catch {
189
+ return 0;
190
+ }
191
+ }
192
+ function formatToolStatus(toolName, input) {
193
+ const base = (p) => (typeof p === 'string' ? path.basename(p) : '');
194
+ switch (toolName) {
195
+ case 'Read': return `Reading ${base(input['file_path'])}`;
196
+ case 'Edit': return `Editing ${base(input['file_path'])}`;
197
+ case 'Write': return `Writing ${base(input['file_path'])}`;
198
+ case 'Bash': {
199
+ const cmd = String(input['command'] ?? '');
200
+ return `Running: ${cmd.length > 60 ? cmd.slice(0, 60) + '\u2026' : cmd}`;
201
+ }
202
+ case 'Glob': return 'Searching files';
203
+ case 'Grep': return 'Searching code';
204
+ case 'WebFetch': return 'Fetching web content';
205
+ case 'WebSearch': return 'Searching the web';
206
+ case 'Task':
207
+ case 'Agent': {
208
+ const desc = typeof input['description'] === 'string' ? input['description'] : '';
209
+ return desc ? `Subtask: ${desc.length > 50 ? desc.slice(0, 50) + '\u2026' : desc}` : 'Running subtask';
210
+ }
211
+ case 'AskUserQuestion': return 'Waiting for answer';
212
+ case 'EnterPlanMode': return 'Planning';
213
+ default: return `Using ${toolName}`;
214
+ }
215
+ }
216
+ function parseClaudeStateSince(workspacePath, fromByte) {
217
+ const result = { hasEndTurn: false, hasProgress: false };
218
+ const p = resolveClaudeJsonl(workspacePath);
219
+ if (!p) {
220
+ return result;
221
+ }
222
+ try {
223
+ const size = fs.statSync(p).size;
224
+ if (size <= fromByte) {
225
+ return result;
226
+ }
227
+ const fd = fs.openSync(p, 'r');
228
+ const buf = Buffer.alloc(size - fromByte);
229
+ fs.readSync(fd, buf, 0, buf.length, fromByte);
230
+ fs.closeSync(fd);
231
+ for (const line of buf.toString('utf8').split('\n')) {
232
+ const t = line.trim();
233
+ if (!t) {
234
+ continue;
235
+ }
236
+ try {
237
+ const record = JSON.parse(t);
238
+ const rtype = record['type'];
239
+ if (rtype === 'assistant') {
240
+ const msgContent = record['message']?.['content']
241
+ ?? record['content'];
242
+ if (Array.isArray(msgContent)) {
243
+ for (const block of msgContent) {
244
+ if (block['type'] === 'tool_use') {
245
+ const name = String(block['name'] ?? '');
246
+ const input = (block['input'] ?? {});
247
+ result.activeToolStatus = formatToolStatus(name, input);
248
+ result.hasEndTurn = false;
249
+ }
250
+ }
251
+ }
252
+ }
253
+ else if (rtype === 'user') {
254
+ const msgContent = record['message']?.['content']
255
+ ?? record['content'];
256
+ if (Array.isArray(msgContent)) {
257
+ const hasToolResult = msgContent
258
+ .some(b => b['type'] === 'tool_result');
259
+ if (!hasToolResult) {
260
+ result.activeToolStatus = undefined;
261
+ result.hasEndTurn = false;
262
+ }
263
+ }
264
+ }
265
+ else if (rtype === 'system') {
266
+ if (record['subtype'] === 'turn_duration') {
267
+ result.hasEndTurn = true;
268
+ result.activeToolStatus = undefined;
269
+ }
270
+ }
271
+ else if (rtype === 'progress') {
272
+ const data = record['data'];
273
+ const dataType = data?.['type'];
274
+ if (dataType === 'bash_progress' || dataType === 'mcp_progress') {
275
+ result.hasProgress = true;
276
+ }
277
+ }
278
+ if (record['stop_reason'] === 'end_turn') {
279
+ result.hasEndTurn = true;
280
+ }
281
+ // Rate limit detection — error:"rate_limit" on assistant records
282
+ if (record['error'] === 'rate_limit') {
283
+ const msgContent = record['message']?.['content'];
284
+ const text = Array.isArray(msgContent)
285
+ ? msgContent
286
+ .filter(b => b['type'] === 'text')
287
+ .map(b => String(b['text'] ?? '')).join(' ')
288
+ : '';
289
+ if (text) {
290
+ result.rateLimitMessage = text;
291
+ }
292
+ }
293
+ }
294
+ catch { /* skip malformed lines */ }
295
+ }
296
+ }
297
+ catch { /* file unreadable */ }
298
+ return result;
299
+ }
300
+ /** @deprecated Use parseClaudeStateSince instead. */
301
+ function hasClaudeEndTurnSince(workspacePath, fromByte) {
302
+ return parseClaudeStateSince(workspacePath, fromByte).hasEndTurn;
303
+ }
304
+ function readClaudeOutputSince(workspacePath, fromByte) {
305
+ const p = resolveClaudeJsonl(workspacePath);
306
+ if (!p) {
307
+ return '';
308
+ }
309
+ try {
310
+ const size = fs.statSync(p).size;
311
+ if (size <= fromByte) {
312
+ return '';
313
+ }
314
+ const fd = fs.openSync(p, 'r');
315
+ const buf = Buffer.alloc(size - fromByte);
316
+ fs.readSync(fd, buf, 0, buf.length, fromByte);
317
+ fs.closeSync(fd);
318
+ const parts = [];
319
+ for (const line of buf.toString('utf8').split('\n')) {
320
+ const trimmed = line.trim();
321
+ if (!trimmed) {
322
+ continue;
323
+ }
324
+ try {
325
+ const entry = JSON.parse(trimmed);
326
+ const entryMsg = entry['message'];
327
+ if (entry['type'] === 'assistant' || entryMsg?.role === 'assistant') {
328
+ const content = entryMsg?.content;
329
+ if (typeof content === 'string') {
330
+ parts.push(content);
331
+ }
332
+ else if (Array.isArray(content)) {
333
+ for (const part of content) {
334
+ if (part.type === 'text' && part.text) {
335
+ parts.push(part.text);
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ catch { /* skip malformed lines */ }
342
+ }
343
+ return parts.join('\n\n');
344
+ }
345
+ catch {
346
+ return '';
347
+ }
348
+ }
349
+ // ---------------------------------------------------------------------------
350
+ // Claude CLI command builder
351
+ // ---------------------------------------------------------------------------
352
+ /** Build the shell command string for the claude-cli provider. */
353
+ function buildClaudeCliCommand(agentProfileFile, messageFile, sessionId, includeProfile = true, model) {
354
+ const resume = sessionId ? ` --resume ${sessionId}` : '';
355
+ const resolvedModel = model?.replace(/-1m$/i, '');
356
+ const modelFlag = resolvedModel ? ` --model ${resolvedModel}` : '';
357
+ // -p takes ONE prompt argument. Concatenate both @file refs into a single
358
+ // quoted string so Claude sees both — passing them as two args drops the
359
+ // second one silently (claude consumes the first as the prompt).
360
+ const promptArg = includeProfile
361
+ ? JSON.stringify(`@${agentProfileFile} @${messageFile}`)
362
+ : JSON.stringify(`@${messageFile}`);
363
+ return `claude --allow-dangerously-skip-permissions --dangerously-skip-permissions${resume}${modelFlag} -p ${promptArg}`;
364
+ }
365
+ /**
366
+ * Run a tiny probe prompt via Node exec to obtain a claude-cli session ID
367
+ * before the main prompt runs. Extracts "session_id" from --output-format json output.
368
+ */
369
+ function probeClaudeSession(cwd, log) {
370
+ return new Promise(resolve => {
371
+ const cmd = `claude --dangerously-skip-permissions --output-format json -p "."`;
372
+ log(`Claude CLI probe: ${cmd}`);
373
+ (0, child_process_1.exec)(cmd, { cwd, encoding: 'utf8', timeout: 30000 }, (_err, stdout) => {
374
+ const id = (stdout ?? '').match(/"session_id"\s*:\s*"([^"]+)"/)?.[1];
375
+ log(`Claude CLI probe result: ${id ?? 'no session ID found'}`);
376
+ resolve(id);
377
+ });
378
+ });
379
+ }
380
+ /**
381
+ * Run `/compact` on an existing Claude session to summarise conversation
382
+ * history and free up context window space. Used after Claude returns
383
+ * `prompt is too long: N tokens > MAX maximum` (HTTP 400). Resolves on exit
384
+ * (success or failure — caller decides what to do).
385
+ */
386
+ function runClaudeCompact(sessionId, cwd, log) {
387
+ return new Promise((resolve, reject) => {
388
+ // /compact is a slash-command Claude understands in non-interactive mode.
389
+ // --resume re-attaches to the same session before running it.
390
+ const cmd = `claude --dangerously-skip-permissions --resume ${sessionId} -p "/compact"`;
391
+ log(`Claude compact: ${cmd}`);
392
+ (0, child_process_1.exec)(cmd, { cwd, encoding: 'utf8', timeout: 180_000, maxBuffer: 32 * 1024 * 1024 }, (err, stdout) => {
393
+ if (err) {
394
+ log(`Claude compact stderr: ${(err.message ?? '').slice(0, 300)}`);
395
+ reject(err);
396
+ }
397
+ else {
398
+ log(`Claude compact done (${stdout.length} bytes of output)`);
399
+ resolve();
400
+ }
401
+ });
402
+ });
403
+ }
404
+ /**
405
+ * Run `/clear` on an existing Claude session to wipe the conversation history
406
+ * and start fresh. Used when autocompact is thrashing (context refills to
407
+ * limit immediately after compact). Resolves on exit.
408
+ */
409
+ function runClaudeClear(sessionId, cwd, log) {
410
+ return new Promise((resolve, reject) => {
411
+ const cmd = `claude --dangerously-skip-permissions --resume ${sessionId} -p "/clear"`;
412
+ log(`Claude clear: ${cmd}`);
413
+ (0, child_process_1.exec)(cmd, { cwd, encoding: 'utf8', timeout: 60_000, maxBuffer: 32 * 1024 * 1024 }, (err, stdout) => {
414
+ if (err) {
415
+ log(`Claude clear stderr: ${(err.message ?? '').slice(0, 300)}`);
416
+ reject(err);
417
+ }
418
+ else {
419
+ log(`Claude clear done (${stdout.length} bytes of output)`);
420
+ resolve();
421
+ }
422
+ });
423
+ });
424
+ }
425
+ //# sourceMappingURL=claudeCliProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claudeCliProvider.js","sourceRoot":"","sources":["../../src/providers/claudeCliProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { RateLimitDetector } from '../rateLimit';
2
+ /** True while a claude-tui turn is running for the given workspace root. */
3
+ export declare function isClaudeTuiBusy(root: string): boolean;
4
+ /** Returns the epoch-ms timestamp of the last streaming update for the root, or 0 if none. */
5
+ export declare function getClaudeTuiLastActivity(root: string): number;
6
+ /**
7
+ * Force-clears the busy flag for a root whose turn appears hung
8
+ * (no activity for a long time). Call only after an inactivity timeout.
9
+ */
10
+ export declare function forceIdleClaudeTui(root: string): void;
11
+ export declare function getClaudeTuiLatestSessionId(root: string): string | undefined;
12
+ /** Cleanly shut down the persistent client when the task loop stops. */
13
+ export declare function closeClaudeTuiClient(root: string, log: (msg: string) => void): void;
14
+ /** Kill all open TUI clients — called on extension deactivate to avoid orphaned processes. */
15
+ export declare function closeAllClaudeTuiClients(): void;
16
+ export declare function sendClaudeTuiPrompt(root: string,
17
+ /** Absolute path to the combined agent-profile + message file. */
18
+ promptFilePath: string, resolvedSessionId: string | undefined, stdoutFile: string, exitFile: string, log: (msg: string) => void, model?: string,
19
+ /** Optional callback invoked once to reveal the output panel to the user. */
20
+ showOutput?: () => void): void;
21
+ export declare function runClaudeTuiCompact(root: string, sessionId: string, log: (msg: string) => void): Promise<void>;
22
+ export declare function runClaudeTuiClear(root: string, sessionId: string, log: (msg: string) => void): Promise<void>;
23
+ export declare function detectTuiRateLimit(stdoutContent: string): ReturnType<typeof RateLimitDetector.detect>;