@yu_robotics/remote-cli 1.1.36 → 1.1.38
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/README.md +28 -15
- package/dist/executor/GeminiExecutor.d.ts +49 -21
- package/dist/executor/GeminiExecutor.d.ts.map +1 -1
- package/dist/executor/GeminiExecutor.js +191 -125
- package/dist/executor/GeminiExecutor.js.map +1 -1
- package/dist/security/security-guard.d.ts.map +1 -1
- package/dist/security/security-guard.js +2 -1
- package/dist/security/security-guard.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,8 +7,10 @@ Remote control your [Claude Code](https://claude.ai/code) CLI from anywhere usin
|
|
|
7
7
|
- **Remote Control**: Control your local development environment from anywhere via mobile
|
|
8
8
|
- **Secure**: Directory whitelisting, command filtering, and device authentication
|
|
9
9
|
- **Mobile-Optimized**: Simplified commands and rich text formatting for Feishu
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
10
|
+
- **Multi-Backend Support**: Supports Claude Code and Gemini CLI
|
|
11
|
+
- **Multi-session (Threads)**: Create independent chat threads to parallelize tasks
|
|
12
|
+
- **Remote Machine Management**: Control remote servers or Docker via SSH
|
|
13
|
+
- **Persistent Process**: Long-running AI process with bidirectional streaming
|
|
12
14
|
|
|
13
15
|
## Prerequisites
|
|
14
16
|
|
|
@@ -69,28 +71,39 @@ Help me fix TypeScript errors in ~/projects/my-app
|
|
|
69
71
|
|
|
70
72
|
## Feishu Bot Commands
|
|
71
73
|
|
|
72
|
-
###
|
|
74
|
+
### Core Management
|
|
73
75
|
|
|
74
76
|
| Command | Description |
|
|
75
77
|
|---------|-------------|
|
|
76
|
-
| `/bind <binding-code>` | Bind a new device |
|
|
77
|
-
| `/status` | View status of all devices |
|
|
78
|
-
| `/unbind` | Unbind all devices |
|
|
79
|
-
| `/device` | List all your bound devices |
|
|
80
|
-
| `/device list` | List all your bound devices |
|
|
81
|
-
| `/device switch <device-id-or-index>` | Switch to a specific device |
|
|
82
|
-
| `/device <device-id-or-index>` | Quick switch to a device |
|
|
83
|
-
| `/device unbind <device-id-or-index>` | Unbind a specific device |
|
|
84
78
|
| `/help` | Show help information |
|
|
79
|
+
| `/status` | View status and all threads |
|
|
80
|
+
| `/abort` | Abort executing task in current thread |
|
|
81
|
+
| `/clear` | Clear context for this thread |
|
|
82
|
+
| `/compact` | Compress history to save tokens |
|
|
83
|
+
| `/cd <dir>` | Change working directory for this thread |
|
|
84
|
+
| `/backend` | List and switch AI backends |
|
|
85
|
+
| `/bind <码>` | Bind a new device |
|
|
86
|
+
| `/unbind` | Unbind all devices |
|
|
87
|
+
| `/device` | List and switch between bound devices |
|
|
88
|
+
|
|
89
|
+
### Threads & Machines
|
|
90
|
+
|
|
91
|
+
| Command | Description |
|
|
92
|
+
|---------|-------------|
|
|
93
|
+
| `/thread list/new/delete` | Manage session threads |
|
|
94
|
+
| `/machines` | List configured remote machines |
|
|
95
|
+
| `/machine add/remove/show` | Manage remote SSH machines |
|
|
96
|
+
| `/containers <ID>` | List Docker containers on a machine |
|
|
97
|
+
| `/search/view/replace` | Remote file operations |
|
|
98
|
+
| `/backups/restore` | Manage remote file backups |
|
|
85
99
|
|
|
86
|
-
###
|
|
100
|
+
### AI CLI Commands Passthrough
|
|
87
101
|
|
|
88
|
-
All commands/skills supported by local Claude Code are passed through directly, for example:
|
|
102
|
+
All commands/skills supported by local Claude Code or Gemini CLI are passed through directly, for example:
|
|
89
103
|
- `/commit` - Commit code changes
|
|
90
104
|
- `/review` - Code review
|
|
91
105
|
- `/test` - Run tests
|
|
92
|
-
-
|
|
93
|
-
- And all other built-in Claude Code commands
|
|
106
|
+
- And all other built-in AI engine commands
|
|
94
107
|
|
|
95
108
|
## Security
|
|
96
109
|
|
|
@@ -12,53 +12,81 @@ export interface GeminiExecutorOptions {
|
|
|
12
12
|
/** Thread ID for session isolation */
|
|
13
13
|
threadId?: string;
|
|
14
14
|
}
|
|
15
|
-
/**
|
|
16
|
-
* IExecutor implementation for Gemini CLI via ACP (Agent Client Protocol).
|
|
17
|
-
*
|
|
18
|
-
* Each execute() call spawns a fresh Gemini CLI subprocess (vibe-kanban style).
|
|
19
|
-
* This ensures full isolation between turns — a broken session in one turn
|
|
20
|
-
* cannot affect subsequent turns.
|
|
21
|
-
*
|
|
22
|
-
* Conversation history is persisted as JSONL via SessionManager and replayed
|
|
23
|
-
* as context prefix on subsequent calls within the same conversation.
|
|
24
|
-
*/
|
|
25
15
|
export declare class GeminiExecutor implements IExecutor {
|
|
26
16
|
private directoryGuard;
|
|
27
17
|
private currentWorkingDirectory;
|
|
28
|
-
private sessionManager;
|
|
29
18
|
private readonly model;
|
|
30
19
|
private readonly autoApprove;
|
|
31
20
|
private readonly geminiCommand;
|
|
32
21
|
private readonly geminiVersion;
|
|
33
22
|
private readonly threadId?;
|
|
34
|
-
/**
|
|
35
|
-
private
|
|
23
|
+
/** Long-lived ACP client — null means not yet spawned or was destroyed. */
|
|
24
|
+
private persistentClient;
|
|
25
|
+
/** ACP session ID of the persistent session. */
|
|
26
|
+
private persistentSessionId;
|
|
27
|
+
/**
|
|
28
|
+
* Mutable options for the current execute() call.
|
|
29
|
+
* The persistent AcpClient callbacks close over this object so they always
|
|
30
|
+
* dispatch to whichever execute() invocation is currently in flight.
|
|
31
|
+
*/
|
|
32
|
+
private activeOptions;
|
|
36
33
|
/** Reference to the in-flight AcpClient for abort support. */
|
|
37
34
|
private inflightClient;
|
|
35
|
+
/** ACP session ID of the in-flight prompt, needed for cooperative sendCancel. */
|
|
36
|
+
private inflightSessionId;
|
|
37
|
+
/** Handle for the abort grace-period timer so it can be cancelled early. */
|
|
38
|
+
private abortTimer;
|
|
39
|
+
/**
|
|
40
|
+
* Command queue for sequential execution.
|
|
41
|
+
* Matching ClaudePersistentExecutor's approach to ensure thread-safety.
|
|
42
|
+
*/
|
|
43
|
+
private commandQueue;
|
|
44
|
+
private isProcessing;
|
|
38
45
|
constructor(directoryGuard: DirectoryGuard, options?: GeminiExecutorOptions);
|
|
39
46
|
execute(prompt: string, options: ExecuteOptions): Promise<ExecuteResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Processes the command queue sequentially.
|
|
49
|
+
*/
|
|
50
|
+
private processQueue;
|
|
51
|
+
/**
|
|
52
|
+
* Actual execution logic for a single prompt.
|
|
53
|
+
*/
|
|
54
|
+
private executeQueued;
|
|
40
55
|
getCurrentWorkingDirectory(): string;
|
|
41
56
|
setWorkingDirectory(targetPath: string): Promise<void>;
|
|
42
57
|
resetContext(): void;
|
|
43
58
|
/**
|
|
44
|
-
* Compact conversation history by
|
|
45
|
-
* Gemini ACP has no built-in /compact
|
|
46
|
-
*
|
|
59
|
+
* Compact conversation history by resetting the persistent session.
|
|
60
|
+
* Gemini ACP has no built-in /compact, so we destroy the client entirely.
|
|
61
|
+
* The next execute() call will spawn a fresh process with no prior context.
|
|
47
62
|
*/
|
|
48
63
|
compactWhenFull(onStream?: (chunk: string) => void): Promise<ExecuteResult>;
|
|
49
64
|
abort(): Promise<boolean>;
|
|
50
65
|
destroy(): Promise<void>;
|
|
51
66
|
/**
|
|
52
|
-
* Delete
|
|
67
|
+
* Delete session data for a thread.
|
|
53
68
|
* Called by ThreadExecutorPool before removing this executor from the pool.
|
|
54
69
|
*/
|
|
55
|
-
deleteThreadData(
|
|
70
|
+
deleteThreadData(_threadId: string): Promise<void>;
|
|
56
71
|
getSessionId(): string | null;
|
|
57
72
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
73
|
+
* Returns the existing persistent session if alive, or spawns a new one.
|
|
74
|
+
* The model parameter is only used when spawning a new session.
|
|
75
|
+
*/
|
|
76
|
+
private ensurePersistentSession;
|
|
77
|
+
/**
|
|
78
|
+
* Spawns a fresh Gemini CLI subprocess, initializes ACP, and creates a new session.
|
|
79
|
+
* The AcpClient callbacks close over `this.activeOptions` so they always dispatch
|
|
80
|
+
* to whichever execute() call is currently in flight.
|
|
81
|
+
*/
|
|
82
|
+
private spawnNewSession;
|
|
83
|
+
/**
|
|
84
|
+
* Sends a single prompt to an existing persistent ACP session.
|
|
85
|
+
* Sets activeOptions so the persistent callbacks dispatch to this call's handlers.
|
|
60
86
|
*/
|
|
61
|
-
private
|
|
87
|
+
private executeWithClient;
|
|
88
|
+
/** Destroys the persistent client and clears all related state. */
|
|
89
|
+
private destroyPersistentClient;
|
|
62
90
|
private buildGeminiArgs;
|
|
63
91
|
private buildFriendlyError;
|
|
64
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiExecutor.d.ts","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"GeminiExecutor.d.ts","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA2ED,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,uBAAuB,CAAS;IAExC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IAEnC,2EAA2E;IAC3E,OAAO,CAAC,gBAAgB,CAA0B;IAClD,gDAAgD;IAChD,OAAO,CAAC,mBAAmB,CAAuB;IAElD;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAqB;IAE1C,8DAA8D;IAC9D,OAAO,CAAC,cAAc,CAA0B;IAChD,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAuB;IAChD,4EAA4E;IAC5E,OAAO,CAAC,UAAU,CAA8C;IAEhE;;;OAGG;IACH,OAAO,CAAC,YAAY,CAKZ;IACR,OAAO,CAAC,YAAY,CAAS;gBAEjB,cAAc,EAAE,cAAc,EAAE,OAAO,GAAE,qBAA0B;IAYzE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAO9E;;OAEG;YACW,YAAY;IAoB1B;;OAEG;YACW,aAAa;IAqC3B,0BAA0B,IAAI,MAAM;IAI9B,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB5D,YAAY,IAAI,IAAI;IAIpB;;;;OAIG;IACG,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAa3E,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAyBzB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B;;;OAGG;IACG,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,YAAY,IAAI,MAAM,GAAG,IAAI;IAM7B;;;OAGG;YACW,uBAAuB;IAOrC;;;;OAIG;YACW,eAAe;IAoD7B;;;OAGG;YACW,iBAAiB;IAmD/B,mEAAmE;IACnE,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,kBAAkB;CAqB3B"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GeminiExecutor = void 0;
|
|
4
4
|
const AcpClient_1 = require("./acp/AcpClient");
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const COMPACT_KEEP_TURNS = 10;
|
|
5
|
+
/** Grace period (ms) between cooperative ACP cancel and force SIGTERM/SIGKILL. */
|
|
6
|
+
const CANCEL_GRACE_MS = 3_000;
|
|
8
7
|
/**
|
|
9
8
|
* Maps a Gemini ACP tool call (kind + title) to a Claude-compatible
|
|
10
9
|
* { name, input } shape so the router's ToolFormatter renders it with
|
|
@@ -15,95 +14,108 @@ const COMPACT_KEEP_TURNS = 10;
|
|
|
15
14
|
function mapAcpToolCall(kind, title) {
|
|
16
15
|
switch (kind) {
|
|
17
16
|
case 'exec':
|
|
18
|
-
// Shell command — map to Bash so extractBashContext renders it
|
|
19
17
|
return { name: 'Bash', input: { command: title } };
|
|
20
18
|
case 'read':
|
|
21
|
-
// File read — map to Read so extractReadContext renders it
|
|
22
19
|
return { name: 'Read', input: { file_path: title } };
|
|
23
20
|
case 'write':
|
|
24
|
-
// File write/edit — map to Write
|
|
25
21
|
return { name: 'Write', input: { file_path: title } };
|
|
26
22
|
case 'list':
|
|
27
|
-
// Directory listing — map to Glob
|
|
28
23
|
return { name: 'Glob', input: { pattern: title } };
|
|
29
24
|
case 'service':
|
|
30
|
-
// MCP / service call
|
|
31
25
|
return { name: 'Service', input: { call: title } };
|
|
32
26
|
default:
|
|
33
|
-
// Unknown kind — show raw title under generic tool name
|
|
34
27
|
return { name: kind ?? 'Tool', input: { command: title } };
|
|
35
28
|
}
|
|
36
29
|
}
|
|
37
30
|
/**
|
|
38
31
|
* Gemini CLI stable model aliases used for quota fallback.
|
|
39
32
|
*
|
|
40
|
-
* These are Gemini CLI's own named aliases (not versioned model strings), so
|
|
41
|
-
* they remain valid across model releases. Gemini CLI's ACP mode does NOT
|
|
42
|
-
* implement automatic model fallback on quota exhaustion (unlike interactive
|
|
43
|
-
* mode), so we handle it here instead.
|
|
44
|
-
*
|
|
45
33
|
* Fallback order: user-configured model → flash → flash-lite
|
|
46
34
|
*/
|
|
47
35
|
const QUOTA_FALLBACK_ALIASES = ['flash', 'flash-lite'];
|
|
48
|
-
/** Returns true when the error message indicates a quota-exhaustion condition. */
|
|
36
|
+
/** Returns true when the error message indicates a quota-exhaustion or capacity condition. */
|
|
49
37
|
function isQuotaError(error) {
|
|
50
38
|
if (!(error instanceof Error))
|
|
51
39
|
return false;
|
|
52
|
-
|
|
40
|
+
const msg = error.message;
|
|
41
|
+
return (msg.includes('exhausted your capacity') ||
|
|
42
|
+
msg.includes('quota') ||
|
|
43
|
+
msg.includes('No capacity available'));
|
|
53
44
|
}
|
|
54
|
-
/**
|
|
55
|
-
* IExecutor implementation for Gemini CLI via ACP (Agent Client Protocol).
|
|
56
|
-
*
|
|
57
|
-
* Each execute() call spawns a fresh Gemini CLI subprocess (vibe-kanban style).
|
|
58
|
-
* This ensures full isolation between turns — a broken session in one turn
|
|
59
|
-
* cannot affect subsequent turns.
|
|
60
|
-
*
|
|
61
|
-
* Conversation history is persisted as JSONL via SessionManager and replayed
|
|
62
|
-
* as context prefix on subsequent calls within the same conversation.
|
|
63
|
-
*/
|
|
64
45
|
class GeminiExecutor {
|
|
65
46
|
directoryGuard;
|
|
66
47
|
currentWorkingDirectory;
|
|
67
|
-
sessionManager;
|
|
68
48
|
model;
|
|
69
49
|
autoApprove;
|
|
70
50
|
geminiCommand;
|
|
71
51
|
geminiVersion;
|
|
72
52
|
threadId;
|
|
73
|
-
/**
|
|
74
|
-
|
|
53
|
+
/** Long-lived ACP client — null means not yet spawned or was destroyed. */
|
|
54
|
+
persistentClient = null;
|
|
55
|
+
/** ACP session ID of the persistent session. */
|
|
56
|
+
persistentSessionId = null;
|
|
57
|
+
/**
|
|
58
|
+
* Mutable options for the current execute() call.
|
|
59
|
+
* The persistent AcpClient callbacks close over this object so they always
|
|
60
|
+
* dispatch to whichever execute() invocation is currently in flight.
|
|
61
|
+
*/
|
|
62
|
+
activeOptions = {};
|
|
75
63
|
/** Reference to the in-flight AcpClient for abort support. */
|
|
76
64
|
inflightClient = null;
|
|
65
|
+
/** ACP session ID of the in-flight prompt, needed for cooperative sendCancel. */
|
|
66
|
+
inflightSessionId = null;
|
|
67
|
+
/** Handle for the abort grace-period timer so it can be cancelled early. */
|
|
68
|
+
abortTimer = null;
|
|
69
|
+
/**
|
|
70
|
+
* Command queue for sequential execution.
|
|
71
|
+
* Matching ClaudePersistentExecutor's approach to ensure thread-safety.
|
|
72
|
+
*/
|
|
73
|
+
commandQueue = [];
|
|
74
|
+
isProcessing = false;
|
|
77
75
|
constructor(directoryGuard, options = {}) {
|
|
78
76
|
this.directoryGuard = directoryGuard;
|
|
79
|
-
// Leave model unset by default so Gemini CLI uses its own default
|
|
80
|
-
// (gemini-2.5-pro). NOTE: '--model auto' maps to gemini-3-pro-preview
|
|
81
|
-
// which has stricter quota limits — do NOT default to 'auto'.
|
|
82
|
-
// Users can override via executor.gemini.model in config.
|
|
83
77
|
this.model = options.model ?? '';
|
|
84
78
|
this.autoApprove = options.autoApprove ?? true;
|
|
85
79
|
this.geminiCommand = options.geminiCommand ?? 'npx';
|
|
86
80
|
this.geminiVersion = options.geminiVersion ?? '@google/gemini-cli@latest';
|
|
87
81
|
this.currentWorkingDirectory = options.initialWorkingDirectory ?? process.cwd();
|
|
88
|
-
this.sessionManager = new SessionManager_1.SessionManager();
|
|
89
82
|
this.threadId = options.threadId;
|
|
90
|
-
if (this.threadId) {
|
|
91
|
-
this.conversationId = this.threadId;
|
|
92
|
-
}
|
|
93
83
|
}
|
|
94
84
|
// ─── IExecutor required ─────────────────────────────────────────────────────
|
|
95
85
|
async execute(prompt, options) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
this.
|
|
86
|
+
return new Promise((resolve, reject) => {
|
|
87
|
+
this.commandQueue.push({ prompt, options, resolve, reject });
|
|
88
|
+
this.processQueue();
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Processes the command queue sequentially.
|
|
93
|
+
*/
|
|
94
|
+
async processQueue() {
|
|
95
|
+
if (this.isProcessing || this.commandQueue.length === 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const command = this.commandQueue.shift();
|
|
99
|
+
if (!command)
|
|
100
|
+
return;
|
|
101
|
+
this.isProcessing = true;
|
|
102
|
+
try {
|
|
103
|
+
const result = await this.executeQueued(command.prompt, command.options);
|
|
104
|
+
command.resolve(result);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
command.reject(error instanceof Error ? error : new Error(String(error)));
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
this.isProcessing = false;
|
|
111
|
+
this.processQueue();
|
|
99
112
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Actual execution logic for a single prompt.
|
|
116
|
+
*/
|
|
117
|
+
async executeQueued(prompt, options) {
|
|
104
118
|
// Build fallback chain: configured model first, then quota fallback aliases.
|
|
105
|
-
// Filter out aliases that are already the configured model to avoid retrying
|
|
106
|
-
// the same model twice.
|
|
107
119
|
const fallbackAliases = QUOTA_FALLBACK_ALIASES.filter(a => a !== this.model);
|
|
108
120
|
const modelsToTry = [this.model, ...fallbackAliases];
|
|
109
121
|
for (let attempt = 0; attempt < modelsToTry.length; attempt++) {
|
|
@@ -115,21 +127,24 @@ class GeminiExecutor {
|
|
|
115
127
|
console.warn(`[GeminiExecutor] Quota exhausted on "${modelsToTry[attempt - 1] || 'pro'}", retrying with "${modelLabel}"`);
|
|
116
128
|
}
|
|
117
129
|
try {
|
|
118
|
-
|
|
130
|
+
// Ensure a persistent session exists (spawn if needed)
|
|
131
|
+
const { client, sessionId } = await this.ensurePersistentSession(modelForAttempt);
|
|
132
|
+
const result = await this.executeWithClient(client, sessionId, modelLabel, prompt, options);
|
|
119
133
|
return result;
|
|
120
134
|
}
|
|
121
135
|
catch (error) {
|
|
122
136
|
if (isQuotaError(error) && attempt < modelsToTry.length - 1) {
|
|
123
|
-
// Quota exhausted
|
|
137
|
+
// Quota exhausted — destroy current client, next iteration spawns with fallback model
|
|
138
|
+
this.destroyPersistentClient();
|
|
124
139
|
continue;
|
|
125
140
|
}
|
|
126
|
-
// Final attempt or non-quota error:
|
|
141
|
+
// Final attempt or non-quota error: destroy client (so next call respawns) and surface error
|
|
142
|
+
this.destroyPersistentClient();
|
|
127
143
|
console.error(`[GeminiExecutor] ❌ Execute error:`, error);
|
|
128
144
|
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
129
145
|
return { success: false, error: this.buildFriendlyError(msg, modelLabel) };
|
|
130
146
|
}
|
|
131
147
|
}
|
|
132
|
-
// Should never reach here, but satisfy TypeScript
|
|
133
148
|
return { success: false, error: 'All Gemini models exhausted quota.' };
|
|
134
149
|
}
|
|
135
150
|
getCurrentWorkingDirectory() {
|
|
@@ -137,136 +152,187 @@ class GeminiExecutor {
|
|
|
137
152
|
}
|
|
138
153
|
async setWorkingDirectory(targetPath) {
|
|
139
154
|
const resolved = this.directoryGuard.resolveWorkingDirectory(targetPath);
|
|
155
|
+
// If directory changes, we MUST restart the persistent process in the new directory.
|
|
156
|
+
// This matches ClaudePersistentExecutor and ensures that tools (ls, read, etc.)
|
|
157
|
+
// run in the expected location.
|
|
158
|
+
const needsRestart = this.currentWorkingDirectory !== resolved && this.persistentClient !== null;
|
|
140
159
|
this.currentWorkingDirectory = resolved;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
this.
|
|
160
|
+
if (needsRestart) {
|
|
161
|
+
console.log(`[GeminiExecutor] Restarting persistent client in new directory: ${resolved}`);
|
|
162
|
+
this.destroyPersistentClient();
|
|
144
163
|
}
|
|
145
164
|
}
|
|
146
165
|
resetContext() {
|
|
147
|
-
|
|
148
|
-
this.sessionManager.remove(this.conversationId);
|
|
149
|
-
if (!this.threadId) {
|
|
150
|
-
this.conversationId = null;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
166
|
+
this.destroyPersistentClient();
|
|
153
167
|
}
|
|
154
168
|
/**
|
|
155
|
-
* Compact conversation history by
|
|
156
|
-
* Gemini ACP has no built-in /compact
|
|
157
|
-
*
|
|
169
|
+
* Compact conversation history by resetting the persistent session.
|
|
170
|
+
* Gemini ACP has no built-in /compact, so we destroy the client entirely.
|
|
171
|
+
* The next execute() call will spawn a fresh process with no prior context.
|
|
158
172
|
*/
|
|
159
173
|
async compactWhenFull(onStream) {
|
|
160
|
-
if (!this.
|
|
174
|
+
if (!this.persistentClient) {
|
|
161
175
|
return { success: true, output: 'No active conversation to compact.' };
|
|
162
176
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const removed = this.sessionManager.truncate(this.conversationId, COMPACT_KEEP_TURNS);
|
|
170
|
-
if (removed === 0) {
|
|
171
|
-
return { success: true, output: 'Conversation history is already compact.' };
|
|
172
|
-
}
|
|
173
|
-
onStream?.(`Removed ${removed} older entries from conversation history.\n`);
|
|
174
|
-
return { success: true, output: `Compacted: removed ${removed} older entries, kept ${COMPACT_KEEP_TURNS} most recent turns.` };
|
|
177
|
+
onStream?.('Resetting conversation context (Gemini has no /compact equivalent — starting fresh session)...\n');
|
|
178
|
+
this.destroyPersistentClient();
|
|
179
|
+
return {
|
|
180
|
+
success: true,
|
|
181
|
+
output: 'Context reset: conversation history cleared. Next message starts a fresh Gemini session.',
|
|
182
|
+
};
|
|
175
183
|
}
|
|
176
184
|
async abort() {
|
|
177
185
|
if (!this.inflightClient)
|
|
178
186
|
return false;
|
|
179
|
-
|
|
180
|
-
|
|
187
|
+
// Step 1: Send cooperative ACP cancel so Gemini can finish the current
|
|
188
|
+
// tool call cleanly before exiting (avoids half-written files).
|
|
189
|
+
if (this.inflightSessionId) {
|
|
190
|
+
this.inflightClient.sendCancel(this.inflightSessionId);
|
|
191
|
+
console.log(`[GeminiExecutor] Sent ACP cancel for session ${this.inflightSessionId.slice(0, 8)}`);
|
|
192
|
+
}
|
|
193
|
+
// Step 2: Give Gemini a short grace period to respond with stopReason='cancelled'.
|
|
194
|
+
// After either the grace period or natural completion, we destroy the persistent
|
|
195
|
+
// client so the next execute() starts a clean session.
|
|
196
|
+
const clientRef = this.inflightClient;
|
|
197
|
+
this.abortTimer = setTimeout(() => {
|
|
198
|
+
this.abortTimer = null;
|
|
199
|
+
if (clientRef === this.inflightClient) {
|
|
200
|
+
console.warn('[GeminiExecutor] Cancel grace period elapsed, force-destroying persistent client');
|
|
201
|
+
this.destroyPersistentClient();
|
|
202
|
+
}
|
|
203
|
+
}, CANCEL_GRACE_MS);
|
|
181
204
|
return true;
|
|
182
205
|
}
|
|
183
206
|
async destroy() {
|
|
184
207
|
if (this.inflightClient) {
|
|
185
|
-
this.
|
|
186
|
-
|
|
208
|
+
if (this.inflightSessionId) {
|
|
209
|
+
this.inflightClient.sendCancel(this.inflightSessionId);
|
|
210
|
+
}
|
|
211
|
+
if (this.abortTimer !== null) {
|
|
212
|
+
clearTimeout(this.abortTimer);
|
|
213
|
+
this.abortTimer = null;
|
|
214
|
+
}
|
|
187
215
|
}
|
|
216
|
+
this.destroyPersistentClient();
|
|
188
217
|
}
|
|
189
218
|
/**
|
|
190
|
-
* Delete
|
|
219
|
+
* Delete session data for a thread.
|
|
191
220
|
* Called by ThreadExecutorPool before removing this executor from the pool.
|
|
192
221
|
*/
|
|
193
|
-
async deleteThreadData(
|
|
194
|
-
|
|
195
|
-
this.sessionManager.remove(this.conversationId);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
this.sessionManager.remove(threadId);
|
|
199
|
-
}
|
|
222
|
+
async deleteThreadData(_threadId) {
|
|
223
|
+
this.destroyPersistentClient();
|
|
200
224
|
}
|
|
201
225
|
getSessionId() {
|
|
202
|
-
return this.
|
|
226
|
+
return this.persistentSessionId;
|
|
203
227
|
}
|
|
228
|
+
// ─── Internal helpers ────────────────────────────────────────────────────────
|
|
204
229
|
/**
|
|
205
|
-
*
|
|
206
|
-
*
|
|
230
|
+
* Returns the existing persistent session if alive, or spawns a new one.
|
|
231
|
+
* The model parameter is only used when spawning a new session.
|
|
207
232
|
*/
|
|
208
|
-
async
|
|
209
|
-
|
|
233
|
+
async ensurePersistentSession(model) {
|
|
234
|
+
if (this.persistentClient && this.persistentSessionId) {
|
|
235
|
+
return { client: this.persistentClient, sessionId: this.persistentSessionId };
|
|
236
|
+
}
|
|
237
|
+
return this.spawnNewSession(model);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Spawns a fresh Gemini CLI subprocess, initializes ACP, and creates a new session.
|
|
241
|
+
* The AcpClient callbacks close over `this.activeOptions` so they always dispatch
|
|
242
|
+
* to whichever execute() call is currently in flight.
|
|
243
|
+
*/
|
|
244
|
+
async spawnNewSession(model) {
|
|
245
|
+
const args = this.buildGeminiArgs(model);
|
|
210
246
|
const acpCallbacks = {
|
|
211
247
|
onThoughtChunk: (text) => {
|
|
212
|
-
|
|
213
|
-
accumulatedOutput += text;
|
|
214
|
-
options.onStream?.(text);
|
|
248
|
+
this.activeOptions.onStream?.(text);
|
|
215
249
|
},
|
|
216
250
|
onTextChunk: (text) => {
|
|
217
|
-
|
|
218
|
-
options.onStream?.(text);
|
|
251
|
+
this.activeOptions.onStream?.(text);
|
|
219
252
|
},
|
|
220
253
|
onToolCall: (toolCallId, title, kind) => {
|
|
221
|
-
// Map Gemini ACP kind → Claude-compatible tool name + structured input
|
|
222
|
-
// so the router's ToolFormatter renders it consistently with Claude tools.
|
|
223
|
-
// The tool card itself provides the progress indicator — no extra onStream needed.
|
|
224
254
|
const { name, input } = mapAcpToolCall(kind, title);
|
|
225
|
-
|
|
255
|
+
this.activeOptions.onToolUse?.({ id: toolCallId, name, input });
|
|
226
256
|
},
|
|
227
257
|
onToolResult: (toolCallId, status, output) => {
|
|
228
|
-
|
|
258
|
+
this.activeOptions.onToolResult?.({
|
|
229
259
|
tool_use_id: toolCallId,
|
|
230
260
|
content: output ?? '',
|
|
231
261
|
is_error: status !== 'completed',
|
|
232
262
|
});
|
|
233
263
|
},
|
|
234
264
|
onPlan: (text) => {
|
|
235
|
-
|
|
265
|
+
this.activeOptions.onPlanMode?.(text);
|
|
236
266
|
},
|
|
237
267
|
onPermissionRequest: this.autoApprove ? undefined : async () => 0,
|
|
238
268
|
};
|
|
239
|
-
const args = this.buildGeminiArgs(model);
|
|
240
269
|
const client = new AcpClient_1.AcpClient(this.geminiCommand, args, this.currentWorkingDirectory, acpCallbacks);
|
|
270
|
+
console.log(`[GeminiExecutor] Spawning persistent ACP client (model=${model || 'pro (default)'}) for cwd: ${this.currentWorkingDirectory}`);
|
|
271
|
+
await client.initialize();
|
|
272
|
+
const sessionId = await client.newSession(this.currentWorkingDirectory);
|
|
273
|
+
console.log(`[GeminiExecutor] Persistent ACP session created: ${sessionId.slice(0, 8)}`);
|
|
274
|
+
if (this.autoApprove) {
|
|
275
|
+
try {
|
|
276
|
+
await client.setSessionMode(sessionId, 'yolo');
|
|
277
|
+
}
|
|
278
|
+
catch (e) {
|
|
279
|
+
console.warn(`[GeminiExecutor] Optional session mode 'yolo' not supported or rejected:`, e);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
this.persistentClient = client;
|
|
283
|
+
this.persistentSessionId = sessionId;
|
|
284
|
+
return { client, sessionId };
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Sends a single prompt to an existing persistent ACP session.
|
|
288
|
+
* Sets activeOptions so the persistent callbacks dispatch to this call's handlers.
|
|
289
|
+
*/
|
|
290
|
+
async executeWithClient(client, sessionId, modelLabel, prompt, options) {
|
|
291
|
+
let accumulatedOutput = '';
|
|
292
|
+
// Wire per-execute callbacks via activeOptions so the persistent AcpClient
|
|
293
|
+
// callbacks (which close over this.activeOptions) dispatch to this call.
|
|
294
|
+
this.activeOptions = {
|
|
295
|
+
onStream: (chunk) => {
|
|
296
|
+
accumulatedOutput += chunk;
|
|
297
|
+
options.onStream?.(chunk);
|
|
298
|
+
},
|
|
299
|
+
onToolUse: options.onToolUse,
|
|
300
|
+
onToolResult: options.onToolResult,
|
|
301
|
+
onPlanMode: options.onPlanMode,
|
|
302
|
+
};
|
|
241
303
|
this.inflightClient = client;
|
|
304
|
+
this.inflightSessionId = sessionId;
|
|
242
305
|
try {
|
|
243
|
-
console.log(`[GeminiExecutor]
|
|
244
|
-
|
|
245
|
-
await client.initialize();
|
|
246
|
-
const sessionId = await client.newSession(this.currentWorkingDirectory);
|
|
247
|
-
console.log(`[GeminiExecutor] ACP session created: ${sessionId.slice(0, 8)}`);
|
|
248
|
-
if (this.autoApprove) {
|
|
249
|
-
try {
|
|
250
|
-
await client.setSessionMode(sessionId, 'yolo');
|
|
251
|
-
}
|
|
252
|
-
catch (e) {
|
|
253
|
-
console.warn(`[GeminiExecutor] Optional session mode 'yolo' not supported or rejected:`, e);
|
|
254
|
-
// Non-fatal: AcpClient will still auto-approve individual permissions if setSessionMode fails
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
console.log(`[GeminiExecutor] Sending prompt (length=${finalPrompt.length})...`);
|
|
258
|
-
const promptResult = await client.prompt(sessionId, finalPrompt);
|
|
306
|
+
console.log(`[GeminiExecutor] Sending prompt (model=${modelLabel}, length=${prompt.length})...`);
|
|
307
|
+
const promptResult = await client.prompt(sessionId, prompt);
|
|
259
308
|
console.log(`[GeminiExecutor] Prompt completed, stopReason=${promptResult.stopReason}, model=${modelLabel}`);
|
|
260
|
-
this.sessionManager.append(this.conversationId, 'assistant', accumulatedOutput);
|
|
261
309
|
return {
|
|
262
|
-
success: promptResult.stopReason !== 'refusal',
|
|
310
|
+
success: promptResult.stopReason !== 'refusal' && promptResult.stopReason !== 'cancelled',
|
|
263
311
|
output: accumulatedOutput,
|
|
264
|
-
sessionAbbr:
|
|
312
|
+
sessionAbbr: sessionId.slice(0, 8),
|
|
265
313
|
};
|
|
266
314
|
}
|
|
267
315
|
finally {
|
|
268
|
-
|
|
316
|
+
// Clear activeOptions so stale callbacks don't fire after this call ends
|
|
317
|
+
this.activeOptions = {};
|
|
318
|
+
// If abort() was called and its timer is still pending, Gemini responded to
|
|
319
|
+
// the cancel before the grace period elapsed. Destroy the persistent client
|
|
320
|
+
// now (a cancelled session should not be reused) and cancel the timer.
|
|
321
|
+
if (this.abortTimer !== null) {
|
|
322
|
+
clearTimeout(this.abortTimer);
|
|
323
|
+
this.abortTimer = null;
|
|
324
|
+
this.destroyPersistentClient();
|
|
325
|
+
}
|
|
269
326
|
this.inflightClient = null;
|
|
327
|
+
this.inflightSessionId = null;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/** Destroys the persistent client and clears all related state. */
|
|
331
|
+
destroyPersistentClient() {
|
|
332
|
+
if (this.persistentClient) {
|
|
333
|
+
this.persistentClient.destroy();
|
|
334
|
+
this.persistentClient = null;
|
|
335
|
+
this.persistentSessionId = null;
|
|
270
336
|
}
|
|
271
337
|
}
|
|
272
338
|
buildGeminiArgs(model) {
|
|
@@ -287,7 +353,7 @@ class GeminiExecutor {
|
|
|
287
353
|
if (msg.includes('invalid argument') || msg.includes('400')) {
|
|
288
354
|
return `❌ Prompt too long (Context full). Try cleaning up with /compact or /clear.\n\nRaw error: ${msg}`;
|
|
289
355
|
}
|
|
290
|
-
if (msg.includes('exhausted your capacity') || msg.includes('quota')) {
|
|
356
|
+
if (msg.includes('exhausted your capacity') || msg.includes('quota') || msg.includes('No capacity available')) {
|
|
291
357
|
const resetMatch = msg.match(/reset after ([^\s.]+)/i);
|
|
292
358
|
const resetHint = resetMatch ? ` Quota resets in ${resetMatch[1]}.` : '';
|
|
293
359
|
return (`⚠️ All Gemini models (${[this.model || 'pro', ...QUOTA_FALLBACK_ALIASES].join(' → ')}) have exhausted quota.${resetHint}\n\n` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GeminiExecutor.js","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GeminiExecutor.js","sourceRoot":"","sources":["../../src/executor/GeminiExecutor.ts"],"names":[],"mappings":";;;AAEA,+CAA+D;AAE/D,kFAAkF;AAClF,MAAM,eAAe,GAAG,KAAK,CAAC;AAe9B;;;;;;GAMG;AACH,SAAS,cAAc,CACrB,IAAwB,EACxB,KAAa;IAEb,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;QACvD,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;QACxD,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD;YACE,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAEvD,8FAA8F;AAC9F,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACvC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CACtC,CAAC;AACJ,CAAC;AA8BD,MAAa,cAAc;IACjB,cAAc,CAAiB;IAC/B,uBAAuB,CAAS;IAEvB,KAAK,CAAS;IACd,WAAW,CAAU;IACrB,aAAa,CAAS;IACtB,aAAa,CAAS;IACtB,QAAQ,CAAU;IAEnC,2EAA2E;IACnE,gBAAgB,GAAqB,IAAI,CAAC;IAClD,gDAAgD;IACxC,mBAAmB,GAAkB,IAAI,CAAC;IAElD;;;;OAIG;IACK,aAAa,GAAkB,EAAE,CAAC;IAE1C,8DAA8D;IACtD,cAAc,GAAqB,IAAI,CAAC;IAChD,iFAAiF;IACzE,iBAAiB,GAAkB,IAAI,CAAC;IAChD,4EAA4E;IACpE,UAAU,GAAyC,IAAI,CAAC;IAEhE;;;OAGG;IACK,YAAY,GAKf,EAAE,CAAC;IACA,YAAY,GAAG,KAAK,CAAC;IAE7B,YAAY,cAA8B,EAAE,UAAiC,EAAE;QAC7E,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,2BAA2B,CAAC;QAC1E,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IACnC,CAAC;IAED,+EAA+E;IAE/E,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAAuB;QACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACxB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACzE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5E,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,OAAuB;QACjE,6EAA6E;QAC7E,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,eAAe,CAAC,CAAC;QAErD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9D,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,eAAe,IAAI,eAAe,CAAC;YAEtD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,2BAA2B,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,sBAAsB,UAAU,WAAW,CAAC;gBACvH,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,wCAAwC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,qBAAqB,UAAU,GAAG,CAAC,CAAC;YAC5H,CAAC;YAED,IAAI,CAAC;gBACH,uDAAuD;gBACvD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;gBAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC5F,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5D,sFAAsF;oBACtF,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBAC/B,SAAS;gBACX,CAAC;gBACD,6FAA6F;gBAC7F,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;gBAC1D,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;gBACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;IACzE,CAAC;IAED,0BAA0B;QACxB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,UAAkB;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;QAEzE,qFAAqF;QACrF,gFAAgF;QAChF,gCAAgC;QAChC,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,KAAK,QAAQ,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC;QAEjG,IAAI,CAAC,uBAAuB,GAAG,QAAQ,CAAC;QAExC,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,mEAAmE,QAAQ,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,QAAkC;QACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;QACzE,CAAC;QAED,QAAQ,EAAE,CAAC,kGAAkG,CAAC,CAAC;QAC/G,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,0FAA0F;SACnG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,KAAK,CAAC;QAEvC,uEAAuE;QACvE,gEAAgE;QAChE,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,gDAAgD,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;QAED,mFAAmF;QACnF,iFAAiF;QACjF,uDAAuD;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,SAAS,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;gBACjG,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,CAAC;QACH,CAAC,EAAE,eAAe,CAAC,CAAC;QAEpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACzD,CAAC;YACD,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QACtC,IAAI,CAAC,uBAAuB,EAAE,CAAC;IACjC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,gFAAgF;IAEhF;;;OAGG;IACK,KAAK,CAAC,uBAAuB,CAAC,KAAa;QACjD,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChF,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,eAAe,CAAC,KAAa;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,YAAY,GAAsB;YACtC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;gBACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YACD,UAAU,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACpD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC3C,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;oBAChC,WAAW,EAAE,UAAU;oBACvB,OAAO,EAAE,MAAM,IAAI,EAAE;oBACrB,QAAQ,EAAE,MAAM,KAAK,WAAW;iBACjC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACf,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;YACD,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SAClE,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,qBAAS,CAC1B,IAAI,CAAC,aAAa,EAClB,IAAI,EACJ,IAAI,CAAC,uBAAuB,EAC5B,YAAY,CACb,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,0DAA0D,KAAK,IAAI,eAAe,cAAc,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC5I,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,oDAAoD,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAEzF,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACjD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,0EAA0E,EAAE,CAAC,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,iBAAiB,CAC7B,MAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,MAAc,EACd,OAAuB;QAEvB,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAE3B,2EAA2E;QAC3E,yEAAyE;QACzE,IAAI,CAAC,aAAa,GAAG;YACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,iBAAiB,IAAI,KAAK,CAAC;gBAC3B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC;QAEF,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEnC,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,UAAU,YAAY,MAAM,CAAC,MAAM,MAAM,CAAC,CAAC;YACjG,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC5D,OAAO,CAAC,GAAG,CAAC,iDAAiD,YAAY,CAAC,UAAU,WAAW,UAAU,EAAE,CAAC,CAAC;YAE7G,OAAO;gBACL,OAAO,EAAE,YAAY,CAAC,UAAU,KAAK,SAAS,IAAI,YAAY,CAAC,UAAU,KAAK,WAAW;gBACzF,MAAM,EAAE,iBAAiB;gBACzB,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACnC,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,yEAAyE;YACzE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YAExB,4EAA4E;YAC5E,6EAA6E;YAC7E,uEAAuE;YACvE,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAC7B,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAED,mEAAmE;IAC3D,uBAAuB;QAC7B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAc;QACpC,MAAM,IAAI,GAAa,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;QAC1C,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kBAAkB,CAAC,GAAW,EAAE,UAAkB;QACxD,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,OAAO,iGAAiG,CAAC;QAC3G,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,4FAA4F,GAAG,EAAE,CAAC;QAC3G,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC9G,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,oBAAoB,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,CACL,yBAAyB,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,GAAG,sBAAsB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,SAAS,MAAM;gBAC9H,gDAAgD;gBAChD,cAAc,CACf,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzE,OAAO,kOAAkO,CAAC;QAC5O,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AA9XD,wCA8XC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-guard.d.ts","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"security-guard.d.ts","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAuLD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA+D3F;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAoB7D;AAED;;;GAGG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAiC1C"}
|
|
@@ -66,7 +66,8 @@ const PIPE_TO_SHELL_PATTERNS = [
|
|
|
66
66
|
/\|\s*sh\b/,
|
|
67
67
|
/\|\s*zsh\b/,
|
|
68
68
|
/\|\s*source\b/,
|
|
69
|
-
/\$\(/, // Command substitution
|
|
69
|
+
/\$\(/, // Command substitution $()
|
|
70
|
+
/`/, // Backtick command substitution
|
|
70
71
|
];
|
|
71
72
|
/**
|
|
72
73
|
* Resolve a path that may contain ~ to an absolute path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security-guard.js","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"security-guard.js","sourceRoot":"","sources":["../../src/security/security-guard.ts"],"names":[],"mappings":"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"}
|