@phmotad/fire-code 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/README.pt-br.md +300 -0
- package/dist/cli/commands/install.d.ts +1 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +166 -57
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,6 +14,11 @@
|
|
|
14
14
|
<img src="https://img.shields.io/badge/Claude%20Code-plugin-orange.svg" alt="Claude Code Plugin">
|
|
15
15
|
</p>
|
|
16
16
|
|
|
17
|
+
<p align="center">
|
|
18
|
+
<a href="README.md"><strong>English</strong></a> •
|
|
19
|
+
<a href="README.pt-br.md">Português</a>
|
|
20
|
+
</p>
|
|
21
|
+
|
|
17
22
|
<p align="center">
|
|
18
23
|
<a href="#quick-start">Quick Start</a> •
|
|
19
24
|
<a href="#how-it-works">How It Works</a> •
|
package/README.pt-br.md
ADDED
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
🔥 Fire Code
|
|
3
|
+
</h1>
|
|
4
|
+
|
|
5
|
+
<h4 align="center">Motor de execução MCP inteligente para agentes de codificação com IA — memória persistente, ciente do contexto, rastreável via Git.</h4>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="LICENSE">
|
|
9
|
+
<img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="Licença: MIT">
|
|
10
|
+
</a>
|
|
11
|
+
<img src="https://img.shields.io/badge/version-0.2.3-green.svg" alt="Versão">
|
|
12
|
+
<img src="https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg" alt="Node">
|
|
13
|
+
<img src="https://img.shields.io/badge/MCP-compatível-red.svg" alt="MCP">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<a href="README.md">English</a> •
|
|
18
|
+
<strong>Português</strong>
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<p align="center">
|
|
22
|
+
<a href="#início-rápido">Início Rápido</a> •
|
|
23
|
+
<a href="#como-funciona">Como Funciona</a> •
|
|
24
|
+
<a href="#ferramentas-mcp">Ferramentas MCP</a> •
|
|
25
|
+
<a href="#corpus-de-conhecimento">Corpus</a> •
|
|
26
|
+
<a href="#privacidade">Privacidade</a> •
|
|
27
|
+
<a href="#configuração">Configuração</a>
|
|
28
|
+
</p>
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## O que é o Fire Code?
|
|
33
|
+
|
|
34
|
+
Fire Code é um **plugin de código aberto** e **servidor MCP** que dá aos agentes de IA:
|
|
35
|
+
|
|
36
|
+
- 🧠 **Memória Híbrida** — busca vetorial semântica (HNSW via Vectra) + grafo de dependências (SQLite + graphology)
|
|
37
|
+
- 🔍 **Busca Inteligente** — encontre símbolos, funções e padrões sem ler cada arquivo
|
|
38
|
+
- 📚 **Corpus de Conhecimento** — alimente decisões arquiteturais e ADRs diretamente no contexto do agente
|
|
39
|
+
- 🌿 **Rastreabilidade Git** — cada mudança gerada por IA recebe seu próprio branch e commit convencional
|
|
40
|
+
- 📊 **Outline Estrutural** — entenda qualquer arquivo sem carregá-lo completamente (eficiência de tokens)
|
|
41
|
+
- 👁️ **Observações de Sessão** — registro persistente do que foi construído, corrigido e decidido
|
|
42
|
+
- 🔒 **Tags de Privacidade** — marque seções de código como privadas; nunca chegam ao LLM
|
|
43
|
+
- 🖥️ **Daemon Web** — servidor HTTP local com dashboard, iniciado automaticamente pelos hooks
|
|
44
|
+
- 🔁 **Re-indexação Automática** — hooks re-indexam arquivos alterados após cada operação de escrita
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## IDEs Suportadas
|
|
49
|
+
|
|
50
|
+
| IDE | MCP Tools | Hooks | Instalação |
|
|
51
|
+
|-----|-----------|-------|-----------|
|
|
52
|
+
| **Claude Code** | ✓ | ✓ | `fire-code install` |
|
|
53
|
+
| **Cursor** | ✓ | ✓ | `fire-code install --ide cursor` |
|
|
54
|
+
| **Windsurf** | ✓ | ✓ | `fire-code install --ide windsurf` |
|
|
55
|
+
| **OpenCode** | ✓ | ✓ | `fire-code install --ide opencode` |
|
|
56
|
+
| **Codex CLI** | ✓ | — | `fire-code install --ide codex` |
|
|
57
|
+
| **Gemini CLI** | ✓ | — | `fire-code install --ide gemini` |
|
|
58
|
+
| **Goose** | ✓ | — | `fire-code install --ide goose` |
|
|
59
|
+
| **Qualquer IDE MCP** | ✓ | — | `fire-code install --ide generic` |
|
|
60
|
+
|
|
61
|
+
> Não sabe qual IDE tem? Use `fire-code install` sem flags — detecta automaticamente.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Início Rápido
|
|
66
|
+
|
|
67
|
+
**Instalar globalmente:**
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm install -g @phmotad/fire-code
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Instalar o plugin** (detecta o IDE automaticamente):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
fire-code install
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Indexar seu projeto:**
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
cd seu-projeto
|
|
83
|
+
fire-code index
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Construir o corpus de conhecimento** (opcional, mas recomendado):
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
fire-code corpus build
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Reinicie seu IDE.** As ferramentas MCP agora estão disponíveis em toda sessão.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Como Funciona
|
|
97
|
+
|
|
98
|
+
### Arquitetura
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Seu IDE (Claude Code / Cursor / Windsurf / OpenCode / ...)
|
|
102
|
+
├── Hooks de Ciclo de Vida
|
|
103
|
+
│ ├── SessionStart → inicia daemon, injeta contexto de bootstrap
|
|
104
|
+
│ ├── PostToolUse → re-indexa arquivos alterados
|
|
105
|
+
│ └── Stop → reservado para sumarização
|
|
106
|
+
│
|
|
107
|
+
├── Daemon Worker (porta 37778)
|
|
108
|
+
│ ├── GET / → dashboard web (tema escuro)
|
|
109
|
+
│ ├── GET /health → verificação de saúde
|
|
110
|
+
│ ├── POST /index → disparar re-indexação
|
|
111
|
+
│ └── GET /observations → log de sessão recente
|
|
112
|
+
│
|
|
113
|
+
└── Servidor MCP (stdio)
|
|
114
|
+
├── Tier 1 — Rápido
|
|
115
|
+
│ ├── firecode.smart_search → busca de símbolos/conteúdo
|
|
116
|
+
│ └── firecode.smart_outline → estrutura do arquivo (visão compacta)
|
|
117
|
+
├── Tier 2 — Memória
|
|
118
|
+
│ ├── firecode.get_context → recuperação híbrida vetor + grafo
|
|
119
|
+
│ ├── firecode.search_code → similaridade semântica
|
|
120
|
+
│ ├── firecode.get_graph → relacionamentos de dependência
|
|
121
|
+
│ ├── firecode.observations → histórico de sessão
|
|
122
|
+
│ └── firecode.corpus_search → busca em docs de arquitetura
|
|
123
|
+
└── Tier 3 — Execução
|
|
124
|
+
└── firecode.execute → tarefa completa com Git
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Armazenamento (`.firecode/`)
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
.firecode/
|
|
131
|
+
firecode.db — SQLite: grafo, observações, corpus, sessões
|
|
132
|
+
vectors.db — Vectra HNSW (embeddings all-MiniLM-L6-v2)
|
|
133
|
+
bootstrap.log — estatísticas de indexação, injetadas no SessionStart
|
|
134
|
+
daemon.pid — PID do daemon (gerenciado automaticamente)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Ferramentas MCP
|
|
140
|
+
|
|
141
|
+
| Ferramenta | Tier | Descrição |
|
|
142
|
+
|------------|------|-----------|
|
|
143
|
+
| `firecode.smart_search` | 1 — Rápido | Busca símbolos, nomes de arquivo, conteúdo |
|
|
144
|
+
| `firecode.smart_outline` | 1 — Rápido | Outline estrutural de um arquivo |
|
|
145
|
+
| `firecode.get_context` | 2 — Memória | Recuperação híbrida: vetor semântico + grafo |
|
|
146
|
+
| `firecode.search_code` | 2 — Memória | Busca por similaridade semântica |
|
|
147
|
+
| `firecode.get_graph` | 2 — Memória | Grafo de dependências: nós, arestas, BFS |
|
|
148
|
+
| `firecode.observations` | 2 — Memória | Histórico: o que foi construído/corrigido |
|
|
149
|
+
| `firecode.corpus_search` | 2 — Memória | Busca em docs de arquitetura e ADRs |
|
|
150
|
+
| `firecode.execute` | 3 — Execução | Tarefa completa: branch → contexto → LLM → commit |
|
|
151
|
+
|
|
152
|
+
### Fluxo Recomendado
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
1. smart_search(query) → encontrar implementações existentes
|
|
156
|
+
2. smart_outline(arquivo) → entender estrutura do arquivo
|
|
157
|
+
3. corpus_search(query) → verificar restrições arquiteturais
|
|
158
|
+
4. get_context(query) → obter contexto semântico + estrutural
|
|
159
|
+
5. execute(tarefa) → fazer a mudança
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Corpus de Conhecimento
|
|
165
|
+
|
|
166
|
+
Alimente notas de arquitetura, ADRs e guias de onboarding no índice FTS5:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
fire-code corpus build # indexa docs/, README.md, ADRs, etc.
|
|
170
|
+
fire-code corpus prime \
|
|
171
|
+
--title "Política de Auth" \
|
|
172
|
+
--content "Senhas usam SHA-256+salt. Nunca MD5."
|
|
173
|
+
fire-code corpus query "hashing de senha"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Tipos suportados:** `.md`, `.txt`, `.rst`, `.mdx`
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Privacidade
|
|
181
|
+
|
|
182
|
+
Marque qualquer conteúdo como privado — nunca será indexado ou enviado ao LLM:
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
// @private
|
|
186
|
+
const SECRET_KEY = process.env.SECRET_KEY;
|
|
187
|
+
|
|
188
|
+
<private>
|
|
189
|
+
// Nota interna: workaround para bug #4521
|
|
190
|
+
const INTERNAL_BYPASS = ['test@internal.corp'];
|
|
191
|
+
</private>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Arquivos bloqueados automaticamente:** `.env`, `*.pem`, `*.key`, `secrets.*`, `credentials.*`
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Daemon
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
fire-code daemon start # iniciar em background
|
|
202
|
+
fire-code daemon stop # parar
|
|
203
|
+
fire-code daemon status # verificar PID e saúde
|
|
204
|
+
|
|
205
|
+
# Dashboard disponível em:
|
|
206
|
+
open http://localhost:37778
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## Configuração
|
|
212
|
+
|
|
213
|
+
Crie `firecode.config.ts` na raiz do projeto:
|
|
214
|
+
|
|
215
|
+
```typescript
|
|
216
|
+
import type { FireCodeConfig } from '@phmotad/fire-code';
|
|
217
|
+
|
|
218
|
+
export default {
|
|
219
|
+
project: {
|
|
220
|
+
name: 'meu-projeto',
|
|
221
|
+
},
|
|
222
|
+
llm: {
|
|
223
|
+
provider: 'anthropic', // anthropic | openai | openrouter | ollama
|
|
224
|
+
model: 'claude-sonnet-4-6',
|
|
225
|
+
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
226
|
+
},
|
|
227
|
+
git: {
|
|
228
|
+
branchStrategy: 'increment', // reuse | increment | fail
|
|
229
|
+
workingTree: 'stash', // stash | commit | fail | ignore
|
|
230
|
+
autoCommit: true,
|
|
231
|
+
},
|
|
232
|
+
indexing: {
|
|
233
|
+
mode: 'lazy',
|
|
234
|
+
include: ['**/*.ts', '**/*.tsx', '**/*.js'],
|
|
235
|
+
exclude: ['node_modules', 'dist', '.git'],
|
|
236
|
+
},
|
|
237
|
+
} satisfies FireCodeConfig;
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Provedores LLM
|
|
241
|
+
|
|
242
|
+
| Provedor | Variável de Ambiente | Modelo Padrão |
|
|
243
|
+
|---------|---------------------|---------------|
|
|
244
|
+
| `anthropic` | `ANTHROPIC_API_KEY` | `claude-sonnet-4-6` |
|
|
245
|
+
| `openai` | `OPENAI_API_KEY` | `gpt-4o` |
|
|
246
|
+
| `openrouter` | `OPENROUTER_API_KEY` | `deepseek/deepseek-coder` |
|
|
247
|
+
| `ollama` | _(nenhuma)_ | `codellama` |
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Comandos CLI
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Configuração
|
|
255
|
+
fire-code install # instalar plugin (detecta IDE automaticamente)
|
|
256
|
+
fire-code install --ide cursor # forçar IDE específico
|
|
257
|
+
fire-code uninstall # remover plugin
|
|
258
|
+
fire-code init # assistente de configuração interativo
|
|
259
|
+
fire-code update # atualizar para última versão
|
|
260
|
+
|
|
261
|
+
# Indexação
|
|
262
|
+
fire-code index # indexar projeto (modo lazy)
|
|
263
|
+
fire-code index --mode full # re-indexação completa
|
|
264
|
+
|
|
265
|
+
# Corpus
|
|
266
|
+
fire-code corpus build # construir corpus a partir de docs/
|
|
267
|
+
fire-code corpus prime # adicionar entrada manualmente
|
|
268
|
+
fire-code corpus query <busca> # pesquisar o corpus
|
|
269
|
+
|
|
270
|
+
# Daemon
|
|
271
|
+
fire-code daemon start # iniciar daemon em background
|
|
272
|
+
fire-code daemon stop # parar daemon
|
|
273
|
+
fire-code daemon status # verificar status do daemon
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Contribuindo
|
|
279
|
+
|
|
280
|
+
Contribuições são bem-vindas! Fire Code é MIT e totalmente open source.
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
git clone https://github.com/phmotad/fire-code
|
|
284
|
+
cd fire-code
|
|
285
|
+
npm install
|
|
286
|
+
npm run build
|
|
287
|
+
npm test
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Licença
|
|
293
|
+
|
|
294
|
+
MIT © FireCode Contributors
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
<p align="center">
|
|
299
|
+
Feito com ❤️ para a comunidade de agentes de codificação com IA.
|
|
300
|
+
</p>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AASA,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GACjB,aAAa,GACb,QAAQ,GACR,UAAU,GACV,UAAU,GACV,OAAO,GACP,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAad,UAAU,cAAc;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA2ID,wBAAsB,cAAc,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4D7E;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAqCtD"}
|
|
@@ -12,13 +12,22 @@ const chalk_1 = __importDefault(require("chalk"));
|
|
|
12
12
|
const ora_1 = __importDefault(require("ora"));
|
|
13
13
|
// __dirname is CJS-native; resolves to dist/cli/commands → 3 levels up = package root
|
|
14
14
|
const PLUGIN_ROOT = (0, path_1.resolve)(__dirname, '..', '..', '..');
|
|
15
|
-
const SUPPORTED_IDES = [
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
const SUPPORTED_IDES = [
|
|
16
|
+
'claude-code',
|
|
17
|
+
'cursor',
|
|
18
|
+
'windsurf',
|
|
19
|
+
'opencode',
|
|
20
|
+
'codex',
|
|
21
|
+
'gemini',
|
|
22
|
+
'goose',
|
|
23
|
+
'generic',
|
|
24
|
+
];
|
|
25
|
+
const MCP_SERVER_ENTRY = {
|
|
26
|
+
command: 'npx',
|
|
27
|
+
args: ['@phmotad/fire-code', 'dev'],
|
|
28
|
+
description: 'Fire Code — intelligent MCP execution engine',
|
|
29
|
+
};
|
|
30
|
+
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
22
31
|
function readJson(filePath) {
|
|
23
32
|
try {
|
|
24
33
|
if (!(0, fs_1.existsSync)(filePath))
|
|
@@ -30,67 +39,134 @@ function readJson(filePath) {
|
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
41
|
function writeJson(filePath, data) {
|
|
33
|
-
const dir = filePath.substring(0, filePath.lastIndexOf('/')
|
|
34
|
-
|
|
42
|
+
const dir = filePath.substring(0, filePath.lastIndexOf('/') === -1
|
|
43
|
+
? filePath.lastIndexOf('\\')
|
|
44
|
+
: filePath.lastIndexOf('/'));
|
|
45
|
+
if (dir && !(0, fs_1.existsSync)(dir))
|
|
35
46
|
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
36
47
|
(0, fs_1.writeFileSync)(filePath, JSON.stringify(data, null, 2) + '\n', 'utf8');
|
|
37
48
|
}
|
|
38
|
-
function
|
|
39
|
-
// Register MCP server in Claude settings
|
|
40
|
-
const mcpPath = claudeMcpConfigPath();
|
|
49
|
+
function registerMcp(mcpPath, serverKey = 'fire-code') {
|
|
41
50
|
const config = readJson(mcpPath);
|
|
42
51
|
if (!config['mcpServers'])
|
|
43
52
|
config['mcpServers'] = {};
|
|
44
|
-
|
|
45
|
-
servers['fire-code'] = {
|
|
46
|
-
command: 'npx',
|
|
47
|
-
args: ['fire-code', 'dev'],
|
|
48
|
-
description: 'Fire Code — intelligent MCP execution engine',
|
|
49
|
-
};
|
|
53
|
+
config['mcpServers'][serverKey] = MCP_SERVER_ENTRY;
|
|
50
54
|
writeJson(mcpPath, config);
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
}
|
|
56
|
+
// ── Per-IDE installers ───────────────────────────────────────────────────────
|
|
57
|
+
function installClaudeCode() {
|
|
58
|
+
const messages = [];
|
|
59
|
+
// MCP server
|
|
60
|
+
const mcpPath = (0, path_1.join)((0, os_1.homedir)(), '.claude', 'claude_desktop_config.json');
|
|
61
|
+
registerMcp(mcpPath);
|
|
62
|
+
messages.push('MCP server registered in ~/.claude/claude_desktop_config.json');
|
|
63
|
+
// Plugin hooks
|
|
64
|
+
const settingsPath = (0, path_1.join)((0, os_1.homedir)(), '.claude', 'settings.json');
|
|
54
65
|
const settings = readJson(settingsPath);
|
|
55
66
|
if (!settings['plugins'])
|
|
56
67
|
settings['plugins'] = {};
|
|
57
|
-
|
|
58
|
-
plugins['fire-code'] = {
|
|
68
|
+
settings['plugins']['fire-code'] = {
|
|
59
69
|
enabled: true,
|
|
60
70
|
hooksPath: (0, path_1.join)(PLUGIN_ROOT, 'plugin', 'hooks', 'hooks.json'),
|
|
61
71
|
};
|
|
62
72
|
writeJson(settingsPath, settings);
|
|
63
|
-
|
|
73
|
+
messages.push('Plugin hooks registered in ~/.claude/settings.json');
|
|
74
|
+
return messages;
|
|
64
75
|
}
|
|
65
76
|
function installCursor() {
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (!config['mcpServers'])
|
|
70
|
-
config['mcpServers'] = {};
|
|
71
|
-
config['mcpServers']['fire-code'] = {
|
|
72
|
-
command: 'npx',
|
|
73
|
-
args: ['fire-code', 'dev'],
|
|
74
|
-
};
|
|
75
|
-
writeJson(mcpPath, config);
|
|
76
|
-
console.log(chalk_1.default.green(' ✓') + ' MCP server registered in Cursor config');
|
|
77
|
+
const mcpPath = (0, path_1.join)((0, os_1.homedir)(), '.cursor', 'mcp.json');
|
|
78
|
+
registerMcp(mcpPath);
|
|
79
|
+
return ['MCP server registered in ~/.cursor/mcp.json'];
|
|
77
80
|
}
|
|
78
81
|
function installWindsurf() {
|
|
79
|
-
|
|
80
|
-
const mcpPath = (0, path_1.join)(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
// Windsurf stores MCP config in ~/.codeium/windsurf/mcp_config.json
|
|
83
|
+
const mcpPath = (0, path_1.join)((0, os_1.homedir)(), '.codeium', 'windsurf', 'mcp_config.json');
|
|
84
|
+
registerMcp(mcpPath);
|
|
85
|
+
return ['MCP server registered in ~/.codeium/windsurf/mcp_config.json'];
|
|
86
|
+
}
|
|
87
|
+
function installOpenCode() {
|
|
88
|
+
// OpenCode uses ~/.config/opencode/config.json with mcp section
|
|
89
|
+
const configPath = (0, path_1.join)((0, os_1.homedir)(), '.config', 'opencode', 'config.json');
|
|
90
|
+
const config = readJson(configPath);
|
|
91
|
+
if (!config['mcp'])
|
|
92
|
+
config['mcp'] = {};
|
|
93
|
+
const mcp = config['mcp'];
|
|
94
|
+
if (!mcp['servers'])
|
|
95
|
+
mcp['servers'] = {};
|
|
96
|
+
mcp['servers']['fire-code'] = MCP_SERVER_ENTRY;
|
|
97
|
+
writeJson(configPath, config);
|
|
98
|
+
return ['MCP server registered in ~/.config/opencode/config.json'];
|
|
99
|
+
}
|
|
100
|
+
function installCodex() {
|
|
101
|
+
// Codex CLI uses ~/.codex/config.json
|
|
102
|
+
const configPath = (0, path_1.join)((0, os_1.homedir)(), '.codex', 'config.json');
|
|
103
|
+
registerMcp(configPath);
|
|
104
|
+
return ['MCP server registered in ~/.codex/config.json'];
|
|
105
|
+
}
|
|
106
|
+
function installGemini() {
|
|
107
|
+
// Gemini CLI uses ~/.gemini/settings.json
|
|
108
|
+
const settingsPath = (0, path_1.join)((0, os_1.homedir)(), '.gemini', 'settings.json');
|
|
109
|
+
const settings = readJson(settingsPath);
|
|
110
|
+
if (!settings['mcpServers'])
|
|
111
|
+
settings['mcpServers'] = {};
|
|
112
|
+
settings['mcpServers']['fire-code'] = MCP_SERVER_ENTRY;
|
|
113
|
+
writeJson(settingsPath, settings);
|
|
114
|
+
return ['MCP server registered in ~/.gemini/settings.json'];
|
|
115
|
+
}
|
|
116
|
+
function installGoose() {
|
|
117
|
+
// Goose uses ~/.config/goose/config.yaml — write as JSON config fallback
|
|
118
|
+
const configPath = (0, path_1.join)((0, os_1.homedir)(), '.config', 'goose', 'mcp.json');
|
|
119
|
+
registerMcp(configPath);
|
|
120
|
+
return ['MCP server registered in ~/.config/goose/mcp.json'];
|
|
121
|
+
}
|
|
122
|
+
function installGeneric() {
|
|
123
|
+
// Write a standalone mcp.json in the current directory for manual wiring
|
|
124
|
+
const mcpPath = (0, path_1.join)(process.cwd(), '.firecode', 'mcp.json');
|
|
125
|
+
const config = {
|
|
126
|
+
mcpServers: { 'fire-code': MCP_SERVER_ENTRY },
|
|
87
127
|
};
|
|
88
|
-
|
|
89
|
-
|
|
128
|
+
if (!(0, fs_1.existsSync)((0, path_1.join)(process.cwd(), '.firecode'))) {
|
|
129
|
+
(0, fs_1.mkdirSync)((0, path_1.join)(process.cwd(), '.firecode'), { recursive: true });
|
|
130
|
+
}
|
|
131
|
+
(0, fs_1.writeFileSync)(mcpPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
|
|
132
|
+
return [
|
|
133
|
+
'MCP config written to .firecode/mcp.json',
|
|
134
|
+
'Point your IDE\'s MCP setting to this file to complete setup',
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
// ── Auto-detection ───────────────────────────────────────────────────────────
|
|
138
|
+
function detectIde() {
|
|
139
|
+
const h = (0, os_1.homedir)();
|
|
140
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(h, '.claude')))
|
|
141
|
+
return 'claude-code';
|
|
142
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(h, '.cursor')))
|
|
143
|
+
return 'cursor';
|
|
144
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(h, '.codeium', 'windsurf')))
|
|
145
|
+
return 'windsurf';
|
|
146
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(h, '.config', 'opencode')))
|
|
147
|
+
return 'opencode';
|
|
148
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(h, '.codex')))
|
|
149
|
+
return 'codex';
|
|
150
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(h, '.gemini')))
|
|
151
|
+
return 'gemini';
|
|
152
|
+
if ((0, fs_1.existsSync)((0, path_1.join)(h, '.config', 'goose')))
|
|
153
|
+
return 'goose';
|
|
154
|
+
return 'generic';
|
|
90
155
|
}
|
|
156
|
+
// ── Main command ─────────────────────────────────────────────────────────────
|
|
91
157
|
async function installCommand(opts = {}) {
|
|
92
|
-
const ide = (opts.ide ?? 'claude-code');
|
|
93
158
|
console.log(chalk_1.default.red('\n 🔥 Fire Code') + chalk_1.default.gray(' — install\n'));
|
|
159
|
+
let ide = opts.ide;
|
|
160
|
+
if (!ide || ide === 'claude-code') {
|
|
161
|
+
// Default: try auto-detect, fall back to claude-code
|
|
162
|
+
const detected = detectIde();
|
|
163
|
+
if (!ide) {
|
|
164
|
+
ide = detected;
|
|
165
|
+
if (ide !== 'claude-code') {
|
|
166
|
+
console.log(chalk_1.default.gray(` Auto-detected IDE: ${chalk_1.default.bold(ide)}\n`));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
94
170
|
if (!SUPPORTED_IDES.includes(ide)) {
|
|
95
171
|
console.error(chalk_1.default.red(` Unknown IDE: ${ide}`));
|
|
96
172
|
console.error(chalk_1.default.gray(` Supported: ${SUPPORTED_IDES.join(', ')}`));
|
|
@@ -98,25 +174,50 @@ async function installCommand(opts = {}) {
|
|
|
98
174
|
}
|
|
99
175
|
const spinner = (0, ora_1.default)({ text: `Installing for ${chalk_1.default.bold(ide)}...`, color: 'red' }).start();
|
|
100
176
|
try {
|
|
177
|
+
spinner.stop();
|
|
178
|
+
let messages;
|
|
101
179
|
switch (ide) {
|
|
102
180
|
case 'claude-code':
|
|
103
|
-
|
|
104
|
-
installClaudeCode();
|
|
181
|
+
messages = installClaudeCode();
|
|
105
182
|
break;
|
|
106
183
|
case 'cursor':
|
|
107
|
-
|
|
108
|
-
installCursor();
|
|
184
|
+
messages = installCursor();
|
|
109
185
|
break;
|
|
110
186
|
case 'windsurf':
|
|
111
|
-
|
|
112
|
-
installWindsurf();
|
|
187
|
+
messages = installWindsurf();
|
|
113
188
|
break;
|
|
189
|
+
case 'opencode':
|
|
190
|
+
messages = installOpenCode();
|
|
191
|
+
break;
|
|
192
|
+
case 'codex':
|
|
193
|
+
messages = installCodex();
|
|
194
|
+
break;
|
|
195
|
+
case 'gemini':
|
|
196
|
+
messages = installGemini();
|
|
197
|
+
break;
|
|
198
|
+
case 'goose':
|
|
199
|
+
messages = installGoose();
|
|
200
|
+
break;
|
|
201
|
+
case 'generic':
|
|
202
|
+
messages = installGeneric();
|
|
203
|
+
break;
|
|
204
|
+
default: messages = installGeneric();
|
|
114
205
|
}
|
|
206
|
+
for (const msg of messages) {
|
|
207
|
+
console.log(chalk_1.default.green(' ✓') + ' ' + msg);
|
|
208
|
+
}
|
|
209
|
+
const hasHooks = ide === 'claude-code';
|
|
115
210
|
console.log(chalk_1.default.green('\n ✓ Fire Code installed successfully!\n'));
|
|
116
211
|
console.log(chalk_1.default.gray(' Next steps:'));
|
|
117
|
-
console.log(chalk_1.default.gray(
|
|
212
|
+
console.log(chalk_1.default.gray(` 1. Restart ${ide}`));
|
|
118
213
|
console.log(chalk_1.default.gray(' 2. Run: ') + chalk_1.default.white('fire-code index') + chalk_1.default.gray(' in your project'));
|
|
119
|
-
|
|
214
|
+
if (hasHooks) {
|
|
215
|
+
console.log(chalk_1.default.gray(' 3. Hooks (SessionStart, PostToolUse) are active for auto re-indexing'));
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
console.log(chalk_1.default.gray(' 3. MCP tools available: smart_search, get_context, search_code, get_graph, execute'));
|
|
219
|
+
}
|
|
220
|
+
console.log();
|
|
120
221
|
}
|
|
121
222
|
catch (err) {
|
|
122
223
|
spinner.fail(chalk_1.default.red('Installation failed'));
|
|
@@ -129,21 +230,29 @@ async function uninstallCommand() {
|
|
|
129
230
|
const spinner = (0, ora_1.default)({ text: 'Removing Fire Code...', color: 'red' }).start();
|
|
130
231
|
try {
|
|
131
232
|
// Remove from Claude MCP config
|
|
132
|
-
const mcpPath =
|
|
233
|
+
const mcpPath = (0, path_1.join)((0, os_1.homedir)(), '.claude', 'claude_desktop_config.json');
|
|
133
234
|
const config = readJson(mcpPath);
|
|
134
235
|
if (config['mcpServers']) {
|
|
135
236
|
delete config['mcpServers']['fire-code'];
|
|
136
237
|
writeJson(mcpPath, config);
|
|
137
238
|
}
|
|
138
239
|
// Remove plugin hooks from Claude settings
|
|
139
|
-
const settingsPath =
|
|
240
|
+
const settingsPath = (0, path_1.join)((0, os_1.homedir)(), '.claude', 'settings.json');
|
|
140
241
|
const settings = readJson(settingsPath);
|
|
141
242
|
if (settings['plugins']) {
|
|
142
243
|
delete settings['plugins']['fire-code'];
|
|
143
244
|
writeJson(settingsPath, settings);
|
|
144
245
|
}
|
|
246
|
+
// Also clean up Cursor if present
|
|
247
|
+
const cursorMcp = (0, path_1.join)((0, os_1.homedir)(), '.cursor', 'mcp.json');
|
|
248
|
+
if ((0, fs_1.existsSync)(cursorMcp)) {
|
|
249
|
+
const cc = readJson(cursorMcp);
|
|
250
|
+
if (cc['mcpServers'])
|
|
251
|
+
delete cc['mcpServers']['fire-code'];
|
|
252
|
+
writeJson(cursorMcp, cc);
|
|
253
|
+
}
|
|
145
254
|
spinner.succeed(chalk_1.default.green('Fire Code uninstalled'));
|
|
146
|
-
console.log(chalk_1.default.gray('\n Restart
|
|
255
|
+
console.log(chalk_1.default.gray('\n Restart your IDE to apply changes.\n'));
|
|
147
256
|
}
|
|
148
257
|
catch (err) {
|
|
149
258
|
spinner.fail(chalk_1.default.red('Uninstall failed'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":";;;;;AA4KA,wCA4DC;AAED,4CAqCC;AA/QD,2BAAwE;AACxE,2BAA6B;AAC7B,+BAAqC;AACrC,kDAA0B;AAC1B,8CAAsB;AAEtB,sFAAsF;AACtF,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAYzD,MAAM,cAAc,GAAgB;IAClC,aAAa;IACb,QAAQ;IACR,UAAU;IACV,UAAU;IACV,OAAO;IACP,QAAQ;IACR,OAAO;IACP,SAAS;CACV,CAAC;AAOF,MAAM,gBAAgB,GAAG;IACvB,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,oBAAoB,EAAE,KAAK,CAAC;IACnC,WAAW,EAAE,8CAA8C;CAC5D,CAAC;AAEF,+EAA+E;AAE/E,SAAS,QAAQ,CAAC,QAAgB;IAChC,IAAI,CAAC;QACH,IAAI,CAAC,IAAA,eAAU,EAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAA4B,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,IAA6B;IAChE,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAChE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC;QAC5B,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,IAAI,GAAG,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC;QAAE,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,SAAS,GAAG,WAAW;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QAAE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,CAAC,YAAY,CAA6B,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC;IAChF,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7B,CAAC;AAED,gFAAgF;AAEhF,SAAS,iBAAiB;IACxB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,aAAa;IACb,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,4BAA4B,CAAC,CAAC;IACzE,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAE/E,eAAe;IACf,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAClD,QAAQ,CAAC,SAAS,CAA6B,CAAC,WAAW,CAAC,GAAG;QAC9D,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,IAAA,WAAI,EAAC,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC;KAC9D,CAAC;IACF,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAClC,QAAQ,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAEpE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACvD,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,6CAA6C,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe;IACtB,oEAAoE;IACpE,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAC3E,WAAW,CAAC,OAAO,CAAC,CAAC;IACrB,OAAO,CAAC,8DAA8D,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe;IACtB,gEAAgE;IAChE,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAA4B,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IACxC,GAAG,CAAC,SAAS,CAA6B,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC;IAC5E,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,yDAAyD,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,YAAY;IACnB,sCAAsC;IACtC,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAC5D,WAAW,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,+CAA+C,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,aAAa;IACpB,0CAA0C;IAC1C,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;IACxD,QAAQ,CAAC,YAAY,CAA6B,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAC;IACpF,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAClC,OAAO,CAAC,kDAAkD,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,YAAY;IACnB,yEAAyE;IACzE,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACnE,WAAW,CAAC,UAAU,CAAC,CAAC;IACxB,OAAO,CAAC,mDAAmD,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc;IACrB,yEAAyE;IACzE,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,MAAM,GAA4B;QACtC,UAAU,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE;KAC9C,CAAC;IACF,IAAI,CAAC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QAClD,IAAA,cAAS,EAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAA,kBAAa,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IACvE,OAAO;QACL,0CAA0C;QAC1C,8DAA8D;KAC/D,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,SAAS,SAAS;IAChB,MAAM,CAAC,GAAG,IAAA,YAAO,GAAE,CAAC;IACpB,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,aAAa,CAAC;IACzD,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IACnE,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IAClE,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gFAAgF;AAEzE,KAAK,UAAU,cAAc,CAAC,OAAuB,EAAE;IAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAExE,IAAI,GAAG,GAAG,IAAI,CAAC,GAA4B,CAAC;IAE5C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;QAClC,qDAAqD;QACrD,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,QAAQ,CAAC;YACf,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wBAAwB,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAgB,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,kBAAkB,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAE5F,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,QAAkB,CAAC;QAEvB,QAAQ,GAAgB,EAAE,CAAC;YACzB,KAAK,aAAa;gBAAE,QAAQ,GAAG,iBAAiB,EAAE,CAAC;gBAAC,MAAM;YAC1D,KAAK,QAAQ;gBAAO,QAAQ,GAAG,aAAa,EAAE,CAAC;gBAAC,MAAM;YACtD,KAAK,UAAU;gBAAK,QAAQ,GAAG,eAAe,EAAE,CAAC;gBAAC,MAAM;YACxD,KAAK,UAAU;gBAAK,QAAQ,GAAG,eAAe,EAAE,CAAC;gBAAC,MAAM;YACxD,KAAK,OAAO;gBAAQ,QAAQ,GAAG,YAAY,EAAE,CAAC;gBAAC,MAAM;YACrD,KAAK,QAAQ;gBAAO,QAAQ,GAAG,aAAa,EAAE,CAAC;gBAAC,MAAM;YACtD,KAAK,OAAO;gBAAQ,QAAQ,GAAG,YAAY,EAAE,CAAC;gBAAC,MAAM;YACrD,KAAK,SAAS;gBAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;gBAAC,MAAM;YACvD,OAAO,CAAC,CAAY,QAAQ,GAAG,cAAc,EAAE,CAAC;QAClD,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,KAAK,aAAa,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC1G,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC,CAAC;QACtG,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC,CAAC;QACpH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAE7E,IAAI,CAAC;QACH,gCAAgC;QAChC,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,4BAA4B,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACzB,OAAQ,MAAM,CAAC,YAAY,CAA6B,CAAC,WAAW,CAAC,CAAC;YACtE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,2CAA2C;QAC3C,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACxB,OAAQ,QAAQ,CAAC,SAAS,CAA6B,CAAC,WAAW,CAAC,CAAC;YACrE,SAAS,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QACzD,IAAI,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC/B,IAAI,EAAE,CAAC,YAAY,CAAC;gBAAE,OAAQ,EAAE,CAAC,YAAY,CAA6B,CAAC,WAAW,CAAC,CAAC;YACxF,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,CAAC,OAAO,CAAC,eAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -44,8 +44,8 @@ program
|
|
|
44
44
|
});
|
|
45
45
|
program
|
|
46
46
|
.command('install')
|
|
47
|
-
.description('Install Fire Code plugin
|
|
48
|
-
.option('--ide <ide>', 'Target IDE: claude-code | cursor | windsurf
|
|
47
|
+
.description('Install Fire Code plugin (auto-detects IDE, or pass --ide)')
|
|
48
|
+
.option('--ide <ide>', 'Target IDE: claude-code | cursor | windsurf | opencode | codex | gemini | goose | generic')
|
|
49
49
|
.action(async (opts) => {
|
|
50
50
|
await (0, install_js_1.installCommand)({ ide: opts.ide });
|
|
51
51
|
});
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AACA,yCAAoC;AACpC,kDAA0B;AAC1B,iEAAiE;AACjE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AACzE,gDAAiD;AACjD,8CAA+C;AAC/C,0DAAuD;AACvD,sDAAyE;AACzE,sDAAuF;AACvF,oDAAoH;AACpH,oDAAkG;AAElG,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,0DAA0D,CAAC;KACnG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAAqB,EAAE,EAAE;IACtC,MAAM,IAAA,qBAAW,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAAqB,EAAE,EAAE;IACtC,MAAM,IAAA,mBAAU,EAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,eAAe,EAAE,4BAA4B,EAAE,MAAM,CAAC;KAC7D,MAAM,CAAC,cAAc,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAA4C,EAAE,EAAE;IAC7D,MAAM,IAAA,2BAAY,EAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|