@maxanatsko/llm-cli-bridge 3.1.0
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/LICENSE +26 -0
- package/README.md +203 -0
- package/dist/backends/codex.d.ts +37 -0
- package/dist/backends/codex.d.ts.map +1 -0
- package/dist/backends/codex.js +438 -0
- package/dist/backends/codex.js.map +1 -0
- package/dist/backends/gemini.d.ts +17 -0
- package/dist/backends/gemini.d.ts.map +1 -0
- package/dist/backends/gemini.js +174 -0
- package/dist/backends/gemini.js.map +1 -0
- package/dist/backends/index.d.ts +8 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +9 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/registry.d.ts +33 -0
- package/dist/backends/registry.d.ts.map +1 -0
- package/dist/backends/registry.js +80 -0
- package/dist/backends/registry.js.map +1 -0
- package/dist/backends/types.d.ts +61 -0
- package/dist/backends/types.d.ts.map +1 -0
- package/dist/backends/types.js +5 -0
- package/dist/backends/types.js.map +1 -0
- package/dist/constants.d.ts +223 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +228 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +192 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/ask.tool.d.ts +4 -0
- package/dist/tools/ask.tool.d.ts.map +1 -0
- package/dist/tools/ask.tool.js +113 -0
- package/dist/tools/ask.tool.js.map +1 -0
- package/dist/tools/brainstorm.tool.d.ts +3 -0
- package/dist/tools/brainstorm.tool.d.ts.map +1 -0
- package/dist/tools/brainstorm.tool.js +250 -0
- package/dist/tools/brainstorm.tool.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +42 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +85 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/review-code.tool.d.ts +3 -0
- package/dist/tools/review-code.tool.d.ts.map +1 -0
- package/dist/tools/review-code.tool.js +279 -0
- package/dist/tools/review-code.tool.js.map +1 -0
- package/dist/tools/test-tool.example.d.ts +13 -0
- package/dist/tools/test-tool.example.d.ts.map +1 -0
- package/dist/tools/test-tool.example.js +32 -0
- package/dist/tools/test-tool.example.js.map +1 -0
- package/dist/tools/timeout-test.tool.d.ts +3 -0
- package/dist/tools/timeout-test.tool.d.ts.map +1 -0
- package/dist/tools/timeout-test.tool.js +38 -0
- package/dist/tools/timeout-test.tool.js.map +1 -0
- package/dist/utils/askSessionManager.d.ts +59 -0
- package/dist/utils/askSessionManager.d.ts.map +1 -0
- package/dist/utils/askSessionManager.js +123 -0
- package/dist/utils/askSessionManager.js.map +1 -0
- package/dist/utils/brainstormSessionManager.d.ts +67 -0
- package/dist/utils/brainstormSessionManager.d.ts.map +1 -0
- package/dist/utils/brainstormSessionManager.js +174 -0
- package/dist/utils/brainstormSessionManager.js.map +1 -0
- package/dist/utils/changeModeInstructions.d.ts +17 -0
- package/dist/utils/changeModeInstructions.d.ts.map +1 -0
- package/dist/utils/changeModeInstructions.js +100 -0
- package/dist/utils/changeModeInstructions.js.map +1 -0
- package/dist/utils/changeModeParser.d.ts +15 -0
- package/dist/utils/changeModeParser.d.ts.map +1 -0
- package/dist/utils/changeModeParser.js +81 -0
- package/dist/utils/changeModeParser.js.map +1 -0
- package/dist/utils/changeModeTranslator.d.ts +4 -0
- package/dist/utils/changeModeTranslator.d.ts.map +1 -0
- package/dist/utils/changeModeTranslator.js +42 -0
- package/dist/utils/changeModeTranslator.js.map +1 -0
- package/dist/utils/commandExecutor.d.ts +2 -0
- package/dist/utils/commandExecutor.d.ts.map +1 -0
- package/dist/utils/commandExecutor.js +76 -0
- package/dist/utils/commandExecutor.js.map +1 -0
- package/dist/utils/envAllowlist.d.ts +17 -0
- package/dist/utils/envAllowlist.d.ts.map +1 -0
- package/dist/utils/envAllowlist.js +54 -0
- package/dist/utils/envAllowlist.js.map +1 -0
- package/dist/utils/geminiExecutor.d.ts +3 -0
- package/dist/utils/geminiExecutor.d.ts.map +1 -0
- package/dist/utils/geminiExecutor.js +94 -0
- package/dist/utils/geminiExecutor.js.map +1 -0
- package/dist/utils/gitStateDetector.d.ts +32 -0
- package/dist/utils/gitStateDetector.d.ts.map +1 -0
- package/dist/utils/gitStateDetector.js +68 -0
- package/dist/utils/gitStateDetector.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +42 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/reviewFormatter.d.ts +35 -0
- package/dist/utils/reviewFormatter.d.ts.map +1 -0
- package/dist/utils/reviewFormatter.js +201 -0
- package/dist/utils/reviewFormatter.js.map +1 -0
- package/dist/utils/reviewPromptBuilder.d.ts +43 -0
- package/dist/utils/reviewPromptBuilder.d.ts.map +1 -0
- package/dist/utils/reviewPromptBuilder.js +170 -0
- package/dist/utils/reviewPromptBuilder.js.map +1 -0
- package/dist/utils/reviewResponseParser.d.ts +20 -0
- package/dist/utils/reviewResponseParser.d.ts.map +1 -0
- package/dist/utils/reviewResponseParser.js +149 -0
- package/dist/utils/reviewResponseParser.js.map +1 -0
- package/dist/utils/reviewSessionCache.d.ts +81 -0
- package/dist/utils/reviewSessionCache.d.ts.map +1 -0
- package/dist/utils/reviewSessionCache.js +220 -0
- package/dist/utils/reviewSessionCache.js.map +1 -0
- package/dist/utils/reviewSessionManager.d.ts +52 -0
- package/dist/utils/reviewSessionManager.d.ts.map +1 -0
- package/dist/utils/reviewSessionManager.js +65 -0
- package/dist/utils/reviewSessionManager.js.map +1 -0
- package/dist/utils/sessionManager.d.ts +95 -0
- package/dist/utils/sessionManager.d.ts.map +1 -0
- package/dist/utils/sessionManager.js +382 -0
- package/dist/utils/sessionManager.js.map +1 -0
- package/dist/utils/sessionSchemas.d.ts +140 -0
- package/dist/utils/sessionSchemas.d.ts.map +1 -0
- package/dist/utils/sessionSchemas.js +2 -0
- package/dist/utils/sessionSchemas.js.map +1 -0
- package/dist/utils/timeoutManager.d.ts +2 -0
- package/dist/utils/timeoutManager.d.ts.map +1 -0
- package/dist/utils/timeoutManager.js +2 -0
- package/dist/utils/timeoutManager.js.map +1 -0
- package/package.json +72 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
MIT License (Non-Commercial)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 jamubc
|
|
4
|
+
Copyright (c) 2025 Maxim Anatsko
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software for non-commercial purposes only, including without limitation
|
|
9
|
+
the rights to use, copy, modify, merge, publish, and distribute copies of the
|
|
10
|
+
Software, and to permit persons to whom the Software is furnished to do so,
|
|
11
|
+
subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
Commercial use of this software is prohibited without prior written permission
|
|
17
|
+
from the copyright holder. For commercial licensing, please contact the
|
|
18
|
+
copyright holder directly.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# LLM CLI Bridge
|
|
2
|
+
|
|
3
|
+
<br>
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
7
|
+
│ │
|
|
8
|
+
│ Model Context Protocol server for Gemini CLI + Codex CLI │
|
|
9
|
+
│ │
|
|
10
|
+
│ Claude ──────────── Gemini / Codex │
|
|
11
|
+
│ │
|
|
12
|
+
│ Leverage Gemini's massive token window or Codex's │
|
|
13
|
+
│ advanced reasoning for large file and codebase analysis │
|
|
14
|
+
│ │
|
|
15
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
<br>
|
|
19
|
+
|
|
20
|
+
**Version** `3.1.0`
|
|
21
|
+
**License** `MIT`
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
<br>
|
|
26
|
+
|
|
27
|
+
## Prerequisites
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
Node.js ≥ 16.0.0
|
|
31
|
+
Google Gemini CLI (configured)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
<br>
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
<br>
|
|
39
|
+
|
|
40
|
+
## Installation
|
|
41
|
+
|
|
42
|
+
<br>
|
|
43
|
+
|
|
44
|
+
### Recommended
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
claude mcp add llm-cli -- npx -y @maxanatsko/llm-cli-bridge
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
<br>
|
|
51
|
+
|
|
52
|
+
### Local Development
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
git clone https://github.com/maxanatsko/llm-cli-bridge.git
|
|
56
|
+
cd llm-cli-bridge
|
|
57
|
+
|
|
58
|
+
npm install
|
|
59
|
+
npm run build
|
|
60
|
+
npm link
|
|
61
|
+
|
|
62
|
+
claude mcp add llm-cli -- llm-cli-bridge
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
<br>
|
|
66
|
+
|
|
67
|
+
### Verify
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
/mcp
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
<br>
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
<br>
|
|
78
|
+
|
|
79
|
+
## Configuration
|
|
80
|
+
|
|
81
|
+
<br>
|
|
82
|
+
|
|
83
|
+
### Claude Desktop
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"mcpServers": {
|
|
88
|
+
"llm-cli": {
|
|
89
|
+
"command": "npx",
|
|
90
|
+
"args": ["-y", "@maxanatsko/llm-cli-bridge"]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
<br>
|
|
97
|
+
|
|
98
|
+
### Config Locations
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
|
|
102
|
+
Windows %APPDATA%\Claude\claude_desktop_config.json
|
|
103
|
+
Linux ~/.config/claude/claude_desktop_config.json
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
<br>
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
<br>
|
|
111
|
+
|
|
112
|
+
## Usage
|
|
113
|
+
|
|
114
|
+
<br>
|
|
115
|
+
|
|
116
|
+
### File Analysis
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
ask gemini to analyze @src/main.js
|
|
120
|
+
use gemini to summarize @.
|
|
121
|
+
analyze @package.json dependencies
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
<br>
|
|
125
|
+
|
|
126
|
+
### General Questions
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
ask gemini about React best practices
|
|
130
|
+
use gemini to explain div centering
|
|
131
|
+
ask gemini for latest tech news
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
<br>
|
|
135
|
+
|
|
136
|
+
### Sandbox Mode
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
use gemini sandbox to run @script.py
|
|
140
|
+
ask gemini to safely test this code
|
|
141
|
+
use gemini sandbox to install numpy
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
<br>
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
<br>
|
|
149
|
+
|
|
150
|
+
## Tools
|
|
151
|
+
|
|
152
|
+
<br>
|
|
153
|
+
|
|
154
|
+
| Tool | Description |
|
|
155
|
+
|:-----|:------------|
|
|
156
|
+
| `ask` | Query Gemini or Codex with `@` file references |
|
|
157
|
+
| `ask-gemini` | Backward-compatible alias for `ask` |
|
|
158
|
+
| `brainstorm` | Creative ideation with frameworks |
|
|
159
|
+
| `review-code` | Interactive code review sessions |
|
|
160
|
+
| `ping` | Connection test |
|
|
161
|
+
| `help` | CLI documentation |
|
|
162
|
+
|
|
163
|
+
<br>
|
|
164
|
+
|
|
165
|
+
### Parameters
|
|
166
|
+
|
|
167
|
+
<br>
|
|
168
|
+
|
|
169
|
+
**ask** (or `ask-gemini`)
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
prompt Required Analysis request with @ syntax
|
|
173
|
+
backend Optional gemini (default) | codex
|
|
174
|
+
model Optional Backend-specific override
|
|
175
|
+
reasoningEffort Optional Codex-only: low|medium|high|xhigh
|
|
176
|
+
sandbox Optional Gemini sandbox / Codex workspace-write
|
|
177
|
+
sandboxMode Optional Codex-only: read-only|workspace-write|danger-full-access
|
|
178
|
+
session Optional Conversation continuity
|
|
179
|
+
includeHistory Optional Include previous rounds
|
|
180
|
+
changeMode Optional Structured edit suggestions
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
<br>
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
<br>
|
|
188
|
+
|
|
189
|
+
## Links
|
|
190
|
+
|
|
191
|
+
<br>
|
|
192
|
+
|
|
193
|
+
[Documentation](https://maxanatsko.github.io/llm-cli-bridge/)
|
|
194
|
+
[Original Project](https://github.com/jamubc/gemini-mcp-tool)
|
|
195
|
+
[GitHub](https://github.com/maxanatsko/llm-cli-bridge)
|
|
196
|
+
|
|
197
|
+
<br>
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
<br>
|
|
202
|
+
|
|
203
|
+
<sub>MIT License — Not affiliated with Google</sub>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Backend - Executes prompts via OpenAI's Codex CLI
|
|
3
|
+
*
|
|
4
|
+
* Uses `codex exec` for non-interactive execution mode.
|
|
5
|
+
* Supports native session resume via thread_id from JSON output.
|
|
6
|
+
* Codex CLI does not support @file syntax, so files must be read and inlined.
|
|
7
|
+
*/
|
|
8
|
+
import { BackendExecutor, BackendConfig, BackendType, BackendResult } from './types.js';
|
|
9
|
+
export declare class CodexBackend implements BackendExecutor {
|
|
10
|
+
name: BackendType;
|
|
11
|
+
execute(prompt: string, config: BackendConfig, onProgress?: (output: string) => void): Promise<BackendResult>;
|
|
12
|
+
isAvailable(): Promise<boolean>;
|
|
13
|
+
getModels(): string[];
|
|
14
|
+
supportsFileRefs(): boolean;
|
|
15
|
+
getFileRefSyntax(): string;
|
|
16
|
+
private buildArgs;
|
|
17
|
+
/**
|
|
18
|
+
* Validate that a resolved path is within the allowed workspace
|
|
19
|
+
* Prevents path traversal attacks including Windows drive letter escapes
|
|
20
|
+
*/
|
|
21
|
+
private isPathWithinWorkspace;
|
|
22
|
+
/**
|
|
23
|
+
* Translate @file references to inline content
|
|
24
|
+
* Codex doesn't support @ syntax, so we read files and include their content
|
|
25
|
+
* Handles paths with dots, slashes, dashes, underscores, and relative paths like @../src/file.ts
|
|
26
|
+
* Includes path traversal protection to prevent reading files outside workspace
|
|
27
|
+
*/
|
|
28
|
+
private translateFileRefs;
|
|
29
|
+
private applyChangeModeInstructions;
|
|
30
|
+
/**
|
|
31
|
+
* Parse JSONL output from Codex CLI
|
|
32
|
+
* Extracts thread_id from thread.started event and response text from message events
|
|
33
|
+
*/
|
|
34
|
+
private parseJsonOutput;
|
|
35
|
+
private executeCommand;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/backends/codex.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAYxF,qBAAa,YAAa,YAAW,eAAe;IAClD,IAAI,EAAE,WAAW,CAAW;IAEtB,OAAO,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,aAAa,CAAC;IA+BnB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,SAAS,IAAI,MAAM,EAAE;IAUrB,gBAAgB,IAAI,OAAO;IAI3B,gBAAgB,IAAI,MAAM;IAI1B,OAAO,CAAC,SAAS;IAsDjB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAS7B;;;;;OAKG;YACW,iBAAiB;IAmL/B,OAAO,CAAC,2BAA2B;IAInC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAkGvB,OAAO,CAAC,cAAc;CAwFvB"}
|