@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.
Files changed (131) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +203 -0
  3. package/dist/backends/codex.d.ts +37 -0
  4. package/dist/backends/codex.d.ts.map +1 -0
  5. package/dist/backends/codex.js +438 -0
  6. package/dist/backends/codex.js.map +1 -0
  7. package/dist/backends/gemini.d.ts +17 -0
  8. package/dist/backends/gemini.d.ts.map +1 -0
  9. package/dist/backends/gemini.js +174 -0
  10. package/dist/backends/gemini.js.map +1 -0
  11. package/dist/backends/index.d.ts +8 -0
  12. package/dist/backends/index.d.ts.map +1 -0
  13. package/dist/backends/index.js +9 -0
  14. package/dist/backends/index.js.map +1 -0
  15. package/dist/backends/registry.d.ts +33 -0
  16. package/dist/backends/registry.d.ts.map +1 -0
  17. package/dist/backends/registry.js +80 -0
  18. package/dist/backends/registry.js.map +1 -0
  19. package/dist/backends/types.d.ts +61 -0
  20. package/dist/backends/types.d.ts.map +1 -0
  21. package/dist/backends/types.js +5 -0
  22. package/dist/backends/types.js.map +1 -0
  23. package/dist/constants.d.ts +223 -0
  24. package/dist/constants.d.ts.map +1 -0
  25. package/dist/constants.js +228 -0
  26. package/dist/constants.js.map +1 -0
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +192 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/tools/ask.tool.d.ts +4 -0
  32. package/dist/tools/ask.tool.d.ts.map +1 -0
  33. package/dist/tools/ask.tool.js +113 -0
  34. package/dist/tools/ask.tool.js.map +1 -0
  35. package/dist/tools/brainstorm.tool.d.ts +3 -0
  36. package/dist/tools/brainstorm.tool.d.ts.map +1 -0
  37. package/dist/tools/brainstorm.tool.js +250 -0
  38. package/dist/tools/brainstorm.tool.js.map +1 -0
  39. package/dist/tools/index.d.ts +5 -0
  40. package/dist/tools/index.d.ts.map +1 -0
  41. package/dist/tools/index.js +13 -0
  42. package/dist/tools/index.js.map +1 -0
  43. package/dist/tools/registry.d.ts +42 -0
  44. package/dist/tools/registry.d.ts.map +1 -0
  45. package/dist/tools/registry.js +85 -0
  46. package/dist/tools/registry.js.map +1 -0
  47. package/dist/tools/review-code.tool.d.ts +3 -0
  48. package/dist/tools/review-code.tool.d.ts.map +1 -0
  49. package/dist/tools/review-code.tool.js +279 -0
  50. package/dist/tools/review-code.tool.js.map +1 -0
  51. package/dist/tools/test-tool.example.d.ts +13 -0
  52. package/dist/tools/test-tool.example.d.ts.map +1 -0
  53. package/dist/tools/test-tool.example.js +32 -0
  54. package/dist/tools/test-tool.example.js.map +1 -0
  55. package/dist/tools/timeout-test.tool.d.ts +3 -0
  56. package/dist/tools/timeout-test.tool.d.ts.map +1 -0
  57. package/dist/tools/timeout-test.tool.js +38 -0
  58. package/dist/tools/timeout-test.tool.js.map +1 -0
  59. package/dist/utils/askSessionManager.d.ts +59 -0
  60. package/dist/utils/askSessionManager.d.ts.map +1 -0
  61. package/dist/utils/askSessionManager.js +123 -0
  62. package/dist/utils/askSessionManager.js.map +1 -0
  63. package/dist/utils/brainstormSessionManager.d.ts +67 -0
  64. package/dist/utils/brainstormSessionManager.d.ts.map +1 -0
  65. package/dist/utils/brainstormSessionManager.js +174 -0
  66. package/dist/utils/brainstormSessionManager.js.map +1 -0
  67. package/dist/utils/changeModeInstructions.d.ts +17 -0
  68. package/dist/utils/changeModeInstructions.d.ts.map +1 -0
  69. package/dist/utils/changeModeInstructions.js +100 -0
  70. package/dist/utils/changeModeInstructions.js.map +1 -0
  71. package/dist/utils/changeModeParser.d.ts +15 -0
  72. package/dist/utils/changeModeParser.d.ts.map +1 -0
  73. package/dist/utils/changeModeParser.js +81 -0
  74. package/dist/utils/changeModeParser.js.map +1 -0
  75. package/dist/utils/changeModeTranslator.d.ts +4 -0
  76. package/dist/utils/changeModeTranslator.d.ts.map +1 -0
  77. package/dist/utils/changeModeTranslator.js +42 -0
  78. package/dist/utils/changeModeTranslator.js.map +1 -0
  79. package/dist/utils/commandExecutor.d.ts +2 -0
  80. package/dist/utils/commandExecutor.d.ts.map +1 -0
  81. package/dist/utils/commandExecutor.js +76 -0
  82. package/dist/utils/commandExecutor.js.map +1 -0
  83. package/dist/utils/envAllowlist.d.ts +17 -0
  84. package/dist/utils/envAllowlist.d.ts.map +1 -0
  85. package/dist/utils/envAllowlist.js +54 -0
  86. package/dist/utils/envAllowlist.js.map +1 -0
  87. package/dist/utils/geminiExecutor.d.ts +3 -0
  88. package/dist/utils/geminiExecutor.d.ts.map +1 -0
  89. package/dist/utils/geminiExecutor.js +94 -0
  90. package/dist/utils/geminiExecutor.js.map +1 -0
  91. package/dist/utils/gitStateDetector.d.ts +32 -0
  92. package/dist/utils/gitStateDetector.d.ts.map +1 -0
  93. package/dist/utils/gitStateDetector.js +68 -0
  94. package/dist/utils/gitStateDetector.js.map +1 -0
  95. package/dist/utils/logger.d.ts +13 -0
  96. package/dist/utils/logger.d.ts.map +1 -0
  97. package/dist/utils/logger.js +42 -0
  98. package/dist/utils/logger.js.map +1 -0
  99. package/dist/utils/reviewFormatter.d.ts +35 -0
  100. package/dist/utils/reviewFormatter.d.ts.map +1 -0
  101. package/dist/utils/reviewFormatter.js +201 -0
  102. package/dist/utils/reviewFormatter.js.map +1 -0
  103. package/dist/utils/reviewPromptBuilder.d.ts +43 -0
  104. package/dist/utils/reviewPromptBuilder.d.ts.map +1 -0
  105. package/dist/utils/reviewPromptBuilder.js +170 -0
  106. package/dist/utils/reviewPromptBuilder.js.map +1 -0
  107. package/dist/utils/reviewResponseParser.d.ts +20 -0
  108. package/dist/utils/reviewResponseParser.d.ts.map +1 -0
  109. package/dist/utils/reviewResponseParser.js +149 -0
  110. package/dist/utils/reviewResponseParser.js.map +1 -0
  111. package/dist/utils/reviewSessionCache.d.ts +81 -0
  112. package/dist/utils/reviewSessionCache.d.ts.map +1 -0
  113. package/dist/utils/reviewSessionCache.js +220 -0
  114. package/dist/utils/reviewSessionCache.js.map +1 -0
  115. package/dist/utils/reviewSessionManager.d.ts +52 -0
  116. package/dist/utils/reviewSessionManager.d.ts.map +1 -0
  117. package/dist/utils/reviewSessionManager.js +65 -0
  118. package/dist/utils/reviewSessionManager.js.map +1 -0
  119. package/dist/utils/sessionManager.d.ts +95 -0
  120. package/dist/utils/sessionManager.d.ts.map +1 -0
  121. package/dist/utils/sessionManager.js +382 -0
  122. package/dist/utils/sessionManager.js.map +1 -0
  123. package/dist/utils/sessionSchemas.d.ts +140 -0
  124. package/dist/utils/sessionSchemas.d.ts.map +1 -0
  125. package/dist/utils/sessionSchemas.js +2 -0
  126. package/dist/utils/sessionSchemas.js.map +1 -0
  127. package/dist/utils/timeoutManager.d.ts +2 -0
  128. package/dist/utils/timeoutManager.d.ts.map +1 -0
  129. package/dist/utils/timeoutManager.js +2 -0
  130. package/dist/utils/timeoutManager.js.map +1 -0
  131. 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"}