autodev-cli 1.4.0 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/autodev.js +0 -0
- package/out/agentBackup/archive.d.ts +44 -0
- package/out/agentBackup/archive.js +131 -0
- package/out/agentBackup/archive.js.map +1 -0
- package/out/agentBackup/export.d.ts +18 -0
- package/out/agentBackup/export.js +92 -0
- package/out/agentBackup/export.js.map +1 -0
- package/out/agentBackup/import.d.ts +21 -0
- package/out/agentBackup/import.js +40 -0
- package/out/agentBackup/import.js.map +1 -0
- package/out/agentBackup/index.d.ts +6 -0
- package/out/agentBackup/index.js +11 -0
- package/out/agentBackup/index.js.map +1 -0
- package/out/agentBackup/layout.d.ts +30 -0
- package/out/agentBackup/layout.js +126 -0
- package/out/agentBackup/layout.js.map +1 -0
- package/out/agentBackup/manifest.d.ts +24 -0
- package/out/agentBackup/manifest.js +70 -0
- package/out/agentBackup/manifest.js.map +1 -0
- package/out/agentBackup/opencodeDb.d.ts +20 -0
- package/out/agentBackup/opencodeDb.js +213 -0
- package/out/agentBackup/opencodeDb.js.map +1 -0
- package/out/agentBackup/sessionProviders.d.ts +35 -0
- package/out/agentBackup/sessionProviders.js +263 -0
- package/out/agentBackup/sessionProviders.js.map +1 -0
- package/out/agentBackup/upload.d.ts +9 -0
- package/out/agentBackup/upload.js +121 -0
- package/out/agentBackup/upload.js.map +1 -0
- package/out/cli.d.ts +1 -0
- package/out/cli.js +8 -0
- package/out/cli.js.map +1 -1
- package/out/cliExit.d.ts +34 -0
- package/out/cliExit.js +159 -0
- package/out/cliExit.js.map +1 -0
- package/out/commands/config.d.ts +2 -0
- package/out/commands/config.js +7 -7
- package/out/commands/config.js.map +1 -1
- package/out/commands/connect.d.ts +2 -0
- package/out/commands/connect.js +11 -0
- package/out/commands/connect.js.map +1 -1
- package/out/commands/export.d.ts +2 -0
- package/out/commands/export.js +79 -0
- package/out/commands/export.js.map +1 -0
- package/out/commands/import.d.ts +2 -0
- package/out/commands/import.js +92 -0
- package/out/commands/import.js.map +1 -0
- package/out/commands/init.d.ts +16 -0
- package/out/commands/init.js +9 -5
- package/out/commands/init.js.map +1 -1
- package/out/commands/resume.d.ts +2 -0
- package/out/commands/resume.js +65 -0
- package/out/commands/resume.js.map +1 -0
- package/out/commands/sessions.d.ts +2 -0
- package/out/commands/sessions.js +64 -0
- package/out/commands/sessions.js.map +1 -0
- package/out/commands/start.d.ts +2 -0
- package/out/commands/start.js +40 -7
- package/out/commands/start.js.map +1 -1
- package/out/commands/status.d.ts +2 -0
- package/out/commands/status.js +3 -3
- package/out/commands/status.js.map +1 -1
- package/out/commands/tailOutput.d.ts +12 -0
- package/out/commands/up.d.ts +3 -0
- package/out/configManager.d.ts +42 -0
- package/out/configManager.js +430 -0
- package/out/configManager.js.map +1 -0
- package/out/connect.d.ts +4 -0
- package/out/connect.js +7 -7
- package/out/connect.js.map +1 -1
- package/out/core/adapters.d.ts +34 -0
- package/out/core/adapters.js +84 -0
- package/out/core/adapters.js.map +1 -0
- package/out/core/commandHelpers.d.ts +12 -0
- package/out/core/commandHelpers.js +96 -0
- package/out/core/commandHelpers.js.map +1 -0
- package/out/core/projectMcp.d.ts +25 -0
- package/out/core/projectMcp.js +144 -0
- package/out/core/projectMcp.js.map +1 -0
- package/out/core/provider/BaseProvider.d.ts +14 -0
- package/out/core/provider/BaseProvider.js +25 -0
- package/out/core/provider/BaseProvider.js.map +1 -0
- package/out/core/provider/ProviderRegistry.d.ts +12 -0
- package/out/core/provider/ProviderRegistry.js +40 -0
- package/out/core/provider/ProviderRegistry.js.map +1 -0
- package/out/core/provider/contract.d.ts +62 -0
- package/out/core/provider/contract.js +9 -0
- package/out/core/provider/contract.js.map +1 -0
- package/out/core/provider/implementations.d.ts +54 -0
- package/out/core/provider/implementations.js +147 -0
- package/out/core/provider/implementations.js.map +1 -0
- package/out/core/settingsLoader.d.ts +221 -0
- package/out/core/settingsLoader.js +176 -0
- package/out/core/settingsLoader.js.map +1 -0
- package/out/discordGateway.d.ts +26 -0
- package/out/discordGateway.js +230 -0
- package/out/discordGateway.js.map +1 -0
- package/out/discordPoller.d.ts +28 -0
- package/out/discordPoller.js +247 -0
- package/out/discordPoller.js.map +1 -0
- package/out/dispatcher.d.ts +12 -0
- package/out/dispatcher.js +214 -0
- package/out/dispatcher.js.map +1 -0
- package/out/emailPoller.d.ts +42 -0
- package/out/emailPoller.js +221 -0
- package/out/emailPoller.js.map +1 -0
- package/out/git/gitService.d.ts +36 -0
- package/out/git/gitService.js +165 -0
- package/out/git/gitService.js.map +1 -0
- package/out/hookEventNormalizer.d.ts +39 -0
- package/out/hookEventNormalizer.js +397 -0
- package/out/hookEventNormalizer.js.map +1 -0
- package/out/hooksManager.d.ts +25 -0
- package/out/hooksManager.js +471 -0
- package/out/hooksManager.js.map +1 -0
- package/out/launchIde.d.ts +14 -0
- package/out/logger.d.ts +12 -0
- package/out/mcpEmailTest.d.ts +29 -0
- package/out/mcpEmailTest.js +245 -0
- package/out/mcpEmailTest.js.map +1 -0
- package/out/mcpInstallCheck.d.ts +23 -0
- package/out/mcpInstallCheck.js +219 -0
- package/out/mcpInstallCheck.js.map +1 -0
- package/out/mcpManager.d.ts +35 -0
- package/out/mcpManager.js +371 -0
- package/out/mcpManager.js.map +1 -0
- package/out/messageBuilder.d.ts +54 -0
- package/out/messageBuilder.js +373 -0
- package/out/messageBuilder.js.map +1 -0
- package/out/openCodeHooksManager.d.ts +23 -0
- package/out/openCodeHooksManager.js +511 -0
- package/out/openCodeHooksManager.js.map +1 -0
- package/out/periodicActions.d.ts +63 -0
- package/out/periodicActions.js +237 -0
- package/out/periodicActions.js.map +1 -0
- package/out/profileBuilder.d.ts +29 -0
- package/out/profileBuilder.js +366 -0
- package/out/profileBuilder.js.map +1 -0
- package/out/prompt.d.ts +12 -0
- package/out/prompt.js +18 -0
- package/out/prompt.js.map +1 -0
- package/out/protocolSections.d.ts +26 -0
- package/out/protocolSections.js +209 -0
- package/out/protocolSections.js.map +1 -0
- package/out/providers/claudeCliProvider.d.ts +71 -0
- package/out/providers/claudeCliProvider.js +425 -0
- package/out/providers/claudeCliProvider.js.map +1 -0
- package/out/providers/claudeTuiProvider.d.ts +23 -0
- package/out/providers/claudeTuiProvider.js +296 -0
- package/out/providers/claudeTuiProvider.js.map +1 -0
- package/out/providers/copilotCliProvider.d.ts +16 -0
- package/out/providers/copilotCliProvider.js +44 -0
- package/out/providers/copilotCliProvider.js.map +1 -0
- package/out/providers/copilotSdkProvider.d.ts +12 -0
- package/out/providers/copilotSdkProvider.js +445 -0
- package/out/providers/copilotSdkProvider.js.map +1 -0
- package/out/providers/grokTuiProvider.d.ts +14 -0
- package/out/providers/grokTuiProvider.js +271 -0
- package/out/providers/grokTuiProvider.js.map +1 -0
- package/out/providers/opencodeCliProvider.d.ts +29 -0
- package/out/providers/opencodeCliProvider.js +199 -0
- package/out/providers/opencodeCliProvider.js.map +1 -0
- package/out/providers/opencodeSdkProvider.d.ts +22 -0
- package/out/providers/opencodeSdkProvider.js +557 -0
- package/out/providers/opencodeSdkProvider.js.map +1 -0
- package/out/providers.d.ts +9 -0
- package/out/providers.js +44 -0
- package/out/providers.js.map +1 -0
- package/out/rateLimit.d.ts +18 -0
- package/out/rateLimit.js +90 -0
- package/out/rateLimit.js.map +1 -0
- package/out/rdp/auth.d.ts +55 -0
- package/out/rdp/auth.js +197 -0
- package/out/rdp/auth.js.map +1 -0
- package/out/rdp/bridge.d.ts +86 -0
- package/out/rdp/bridge.js +1398 -0
- package/out/rdp/bridge.js.map +1 -0
- package/out/rdp/constants.d.ts +86 -0
- package/out/rdp/constants.js +182 -0
- package/out/rdp/constants.js.map +1 -0
- package/out/rdp/index.d.ts +7 -0
- package/out/rdp/index.js +14 -0
- package/out/rdp/index.js.map +1 -0
- package/out/rdp/session.d.ts +30 -0
- package/out/rdp/session.js +196 -0
- package/out/rdp/session.js.map +1 -0
- package/out/rdp/types.d.ts +27 -0
- package/out/rdp/types.js +6 -0
- package/out/rdp/types.js.map +1 -0
- package/out/sdk/index.d.ts +22 -0
- package/out/sdk/index.js +81 -0
- package/out/sdk/index.js.map +1 -0
- package/out/sessionState.d.ts +54 -0
- package/out/sessionState.js +284 -0
- package/out/sessionState.js.map +1 -0
- package/out/sessions.d.ts +11 -0
- package/out/sessions.js +32 -0
- package/out/sessions.js.map +1 -0
- package/out/taskLoop.d.ts +152 -0
- package/out/taskLoop.js +2505 -0
- package/out/taskLoop.js.map +1 -0
- package/out/todo.d.ts +42 -0
- package/out/todo.js +311 -0
- package/out/todo.js.map +1 -0
- package/out/todoWriteManager.d.ts +26 -0
- package/out/todoWriteManager.js +44 -0
- package/out/todoWriteManager.js.map +1 -0
- package/out/vnc/auth.d.ts +52 -0
- package/out/vnc/auth.js +181 -0
- package/out/vnc/auth.js.map +1 -0
- package/out/vnc/bridge.d.ts +40 -0
- package/out/vnc/bridge.js +540 -0
- package/out/vnc/bridge.js.map +1 -0
- package/out/vnc/constants.d.ts +8 -0
- package/out/vnc/constants.js +34 -0
- package/out/vnc/constants.js.map +1 -0
- package/out/vnc/des.d.ts +6 -0
- package/out/vnc/des.js +93 -0
- package/out/vnc/des.js.map +1 -0
- package/out/vnc/index.d.ts +7 -0
- package/out/vnc/index.js +13 -0
- package/out/vnc/index.js.map +1 -0
- package/out/vnc/session.d.ts +18 -0
- package/out/vnc/session.js +193 -0
- package/out/vnc/session.js.map +1 -0
- package/out/vnc/types.d.ts +16 -0
- package/out/vnc/types.js +6 -0
- package/out/vnc/types.js.map +1 -0
- package/out/webSocketPoller.d.ts +95 -0
- package/out/webSocketPoller.js +986 -0
- package/out/webSocketPoller.js.map +1 -0
- package/out/webhook.d.ts +37 -0
- package/out/webhook.js +265 -0
- package/out/webhook.js.map +1 -0
- package/out/webhookPoller.d.ts +40 -0
- package/out/webhookPoller.js +378 -0
- package/out/webhookPoller.js.map +1 -0
- 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,kDAEC;AAQD,kDAGC;AA4BD,wDASC;AAED,gDAKC;AAED,0DAEC;AAWD,0DAYC;AAED,oDAQC;AAOD,wDAIC;AAsCD,sDAyEC;AAGD,sDAEC;AAED,sDA+BC;AAOD,sDAiBC;AAMD,gDAaC;AAQD,4CAoBC;AAOD,wCAkBC;AA9WD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAqC;AAErC,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,aAAqB;IACvD,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACtF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,mBAAmB,CAAC,aAAqB;IACvD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,oBAAoB,CAAC,aAAqB;IACjD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,sBAAsB,CAAC,aAAqB;IAC1D,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACxD,IAAI,CAAC,WAAW,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aAC5D,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aAC/G,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,SAAgB,kBAAkB,CAAC,aAAqB;IACtD,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrD,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QAChC,KAAK,EAAE,CAAC,CAAC,KAAK;KACf,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAgB,uBAAuB,CAAC,aAAqB;IAC3D,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH;wEACwE;AACxE,SAAgB,uBAAuB,CAAC,SAAiB;IACvD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QACnD,IAAI,OAA2B,CAAC;QAChC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC/B,IAAI,CAAC;gBAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAAC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;gBAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QAC/H,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,SAAS,CAAC;IAAC,CAAC;AAC/B,CAAC;AAED,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,IAAY,EAAE,GAAW;IAC/E,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC;QAAC,OAAO;IAAC,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QACpG,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAChC,CAAC;AAGD,SAAS,kBAAkB,CAAC,aAAqB;IAC/C,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;AACxD,CAAC;AAED,SAAgB,sBAAsB,CAAC,aAAqB;IAC1D,MAAM,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;IACrB,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,CAAC;IAAC,CAAC;AACzD,CAAC;AAaD,SAAS,gBAAgB,CAAC,QAAgB,EAAE,KAA8B;IACxE,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM,CAAC,CAAI,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC7D,KAAK,MAAM,CAAC,CAAI,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC7D,KAAK,OAAO,CAAC,CAAG,OAAO,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC7D,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,OAAO,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3E,CAAC;QACD,KAAK,MAAM,CAAC,CAAM,OAAO,iBAAiB,CAAC;QAC3C,KAAK,MAAM,CAAC,CAAM,OAAO,gBAAgB,CAAC;QAC1C,KAAK,UAAU,CAAC,CAAE,OAAO,sBAAsB,CAAC;QAChD,KAAK,WAAW,CAAC,CAAC,OAAO,mBAAmB,CAAC;QAC7C,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5F,OAAO,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACzG,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,OAAO,oBAAoB,CAAC;QACpD,KAAK,eAAe,CAAC,CAAG,OAAO,UAAU,CAAC;QAC1C,OAAO,CAAC,CAAC,OAAO,SAAS,QAAQ,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,aAAqB,EAAE,QAAgB;IAC3E,MAAM,MAAM,GAAuB,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC7E,MAAM,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,MAAM,CAAC;IAAC,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;YAAC,OAAO,MAAM,CAAC;QAAC,CAAC;QACxC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;QAC1C,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAA4B,CAAC;gBACxD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAuB,CAAC;gBAEnD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;oBAC1B,MAAM,UAAU,GAAI,MAAM,CAAC,SAAS,CAAyC,EAAE,CAAC,SAAS,CAAC;2BACrF,MAAM,CAAC,SAAS,CAAC,CAAC;oBACvB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,KAAK,MAAM,KAAK,IAAI,UAA4C,EAAE,CAAC;4BACjE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;gCACjC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gCACzC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAA4B,CAAC;gCAChE,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gCACxD,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;4BAC5B,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;oBAC5B,MAAM,UAAU,GAAI,MAAM,CAAC,SAAS,CAAyC,EAAE,CAAC,SAAS,CAAC;2BACrF,MAAM,CAAC,SAAS,CAAC,CAAC;oBACvB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,MAAM,aAAa,GAAI,UAA6C;6BACjE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,aAAa,CAAC,CAAC;wBAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;4BACnB,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;4BACpC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;wBAC5B,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,IAAK,MAAM,CAAC,SAAS,CAAwB,KAAK,eAAe,EAAE,CAAC;wBAClE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;wBACzB,MAAM,CAAC,gBAAgB,GAAG,SAAS,CAAC;oBACtC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;oBAChC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAwC,CAAC;oBACnE,MAAM,QAAQ,GAAG,IAAI,EAAE,CAAC,MAAM,CAAuB,CAAC;oBACtD,IAAI,QAAQ,KAAK,eAAe,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;wBAChE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAED,IAAK,MAAM,CAAC,aAAa,CAAwB,KAAK,UAAU,EAAE,CAAC;oBACjE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC3B,CAAC;gBAED,iEAAiE;gBACjE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,YAAY,EAAE,CAAC;oBACrC,MAAM,UAAU,GAAI,MAAM,CAAC,SAAS,CAAyC,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC3F,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;wBACpC,CAAC,CAAE,UAA6C;6BAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC;6BACjC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBAChD,CAAC,CAAC,EAAE,CAAC;oBACP,IAAI,IAAI,EAAE,CAAC;wBAAC,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qDAAqD;AACrD,SAAgB,qBAAqB,CAAC,aAAqB,EAAE,QAAgB;IAC3E,OAAO,qBAAqB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC;AACnE,CAAC;AAED,SAAgB,qBAAqB,CAAC,aAAqB,EAAE,QAAgB;IAC3E,MAAM,CAAC,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QACpC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC;QAC1C,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;gBAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAA8F,CAAC;gBAC/H,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,WAAW,IAAI,QAAQ,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;oBACpE,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;oBAClC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;wBAChC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACtB,CAAC;yBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;wBAClC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;4BAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gCAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;4BAAC,CAAC;wBACnE,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,kEAAkE;AAClE,SAAgB,qBAAqB,CACnC,gBAAwB,EACxB,WAAmB,EACnB,SAAkB,EAClB,cAAc,GAAG,IAAI,EACrB,KAAc;IAEd,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzD,MAAM,aAAa,GAAG,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,YAAY,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,0EAA0E;IAC1E,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,SAAS,GAAG,cAAc;QAC9B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAgB,KAAK,WAAW,EAAE,CAAC;QACxD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACtC,OAAO,6EAA6E,MAAM,GAAG,SAAS,OAAO,SAAS,EAAE,CAAC;AAC3H,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,GAAW,EACX,GAA0B;IAE1B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,GAAG,GAAG,mEAAmE,CAAE;QACjF,GAAG,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAChC,IAAA,oBAAI,EAAC,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACpE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrE,GAAG,CAAC,4BAA4B,EAAE,IAAI,qBAAqB,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,SAAiB,EACjB,GAAW,EACX,GAA0B;IAE1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,0EAA0E;QAC1E,8DAA8D;QAC9D,MAAM,GAAG,GAAG,kDAAkD,SAAS,gBAAgB,CAAC;QACxF,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC;QAC9B,IAAA,oBAAI,EAAC,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAClG,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,0BAA0B,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACnE,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,wBAAwB,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;gBAC9D,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAC5B,SAAiB,EACjB,GAAW,EACX,GAA0B;IAE1B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,kDAAkD,SAAS,cAAc,CAAC;QACtF,GAAG,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;QAC5B,IAAA,oBAAI,EAAC,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YACjG,IAAI,GAAG,EAAE,CAAC;gBACR,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjE,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,sBAAsB,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;gBAC5D,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -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>;
|