@iaforged/context-code 2.0.3 → 2.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.
@@ -1,77 +0,0 @@
1
- ## Servidores MCP externos
2
-
3
- Context Code soporta el [Model Context Protocol](https://modelcontextprotocol.io). Puedes conectar servidores MCP de terceros para dar a los agentes herramientas extra: leer una base de datos, consultar Sentry, hablar con tu wiki interna, etc.
4
-
5
- Comandos:
6
-
7
- ```sh
8
- /mcp # abre el panel de servidores configurados
9
- /mcp add <name> -- <command> [args...] # registra un servidor stdio
10
- /mcp add --transport http <name> <url> # registra un servidor HTTP
11
- /mcp add --transport sse <name> <url> # registra un servidor SSE
12
- ```
13
-
14
- Tambien puedes registrar servidores con `--scope project` (escribe en `.mcp.json` del proyecto) o `--scope user` (queda solo para tu usuario). El default es `project` cuando estas dentro de un repo y `user` cuando no.
15
-
16
- ### Ejemplo: conectar una base de datos SQLite
17
-
18
- Existen servidores MCP listos para hablar con bases de datos. El mas conocido es `mcp-server-sqlite`. Lo instalas y lo registras:
19
-
20
- ```sh
21
- # 1. Instalar el servidor (o usar npx para no instalar)
22
- pip install mcp-server-sqlite
23
-
24
- # 2. Registrarlo en Context Code apuntando a tu DB
25
- /mcp add sqlite-local -- mcp-server-sqlite --db-path ./data/app.sqlite
26
- ```
27
-
28
- A partir de ese momento, los agentes que ejecuten en este proyecto pueden listar tablas, hacer SELECT y describir el esquema sin que tu tengas que escribir SQL ni copiar/pegar resultados.
29
-
30
- ### Ejemplo: conectar Postgres
31
-
32
- ```sh
33
- # Con uvx (recomendado, sin instalacion previa)
34
- /mcp add postgres-prod --transport stdio -- uvx mcp-server-postgres \
35
- --connection-string "postgres://user:pass@localhost:5432/mydb"
36
-
37
- # O con un servidor HTTP ya desplegado
38
- /mcp add postgres-prod --transport http https://mcp.midominio.com/postgres \
39
- --header "Authorization: Bearer $TOKEN"
40
- ```
41
-
42
- Pasos a tener en cuenta:
43
-
44
- - Los servidores MCP corren con tus permisos. Si conectas a una DB de produccion, considera dar al servidor solo credenciales de lectura.
45
- - Variables sensibles: usa `-e VAR=valor` al registrar el server stdio para inyectar tokens sin que queden en el comando visible.
46
- - Las herramientas MCP aparecen en los agentes con prefijo `mcp__<name>__<tool>`. Puedes restringir cuales se autorizan con `--allowedTools` al iniciar la sesion.
47
- - Si un equipo (`database`, por ejemplo) tendria que usar este MCP, asignale un agente con `/team equipo <team> database <provider>/<agent>` y el orquestador local lo invocara cuando el plan lo requiera.
48
-
49
- ### Semble integrado
50
-
51
- Este proyecto instala y precalienta `semble` automaticamente la primera vez que arranca, y luego lo registra como MCP dinamico.
52
-
53
- Si `uv` no existe en el sistema, el CLI intenta instalarlo automaticamente en una carpeta administrada por la aplicacion y usa ese binario desde ahi.
54
-
55
- Herramientas expuestas:
56
-
57
- - `mcp__semble__search`
58
- - `mcp__semble__find_related`
59
-
60
- Bootstrap inicial:
61
-
62
- ```sh
63
- uv tool install "semble[mcp]"
64
- uv tool run --from "semble[mcp]" semble search "bootstrap" <repo> --top-k 1
65
- ```
66
-
67
- Comando MCP usado por el runtime:
68
-
69
- ```sh
70
- uv tool run --from "semble[mcp]" semble
71
- ```
72
-
73
- El primer bootstrap instala el paquete y fuerza la descarga local del modelo de embeddings que `semble` usa via Model2Vec.
74
-
75
- ### Diferencia con el storage interno
76
-
77
- El archivo `~/.context/provider-state.sqlite3` es persistencia interna del CLI (perfiles, runs, credenciales). **No es un MCP** y los agentes no lo consultan directamente; solo el runtime lo lee/escribe. Si quieres exponer datos de una base **a los agentes**, registra un servidor MCP como en los ejemplos de arriba.
@@ -1,201 +0,0 @@
1
- ## Sistema multi-proveedor y multi-perfil
2
-
3
- Context Code ya funciona con una capa de proveedores mas flexible. La idea base es separar:
4
-
5
- - el `provider` como backend de inferencia
6
- - el `provider profile` como perfil guardado dentro de ese proveedor
7
- - el `agentName` como nombre operativo pensado para futuros subagentes
8
-
9
- ### Provider profile
10
-
11
- Un `provider profile` es una configuracion persistida para un proveedor concreto. Sirve para guardar datos que quieres recordar por separado, por ejemplo:
12
-
13
- - base URL
14
- - ultimo modelo usado
15
- - credenciales o token, cuando el proveedor lo soporta
16
-
17
- El nombre del perfil es el identificador humano que ves en el comando. El `agentName` es el nombre tecnico que queda preparado para el futuro sistema de subagentes. Por ejemplo:
18
-
19
- ```sh
20
- /provider ollama profile local
21
- ```
22
-
23
- Puede guardar un perfil llamado `local` con un `agentName` del estilo `ollama-local`.
24
-
25
- ### Comando `/provider`
26
-
27
- El comando `/provider` ahora sirve para cambiar de proveedor y tambien para activar un perfil concreto.
28
-
29
- ```sh
30
- /provider
31
- /provider list
32
- /provider ollama
33
- /provider zai profile main
34
- /provider ollama profile local
35
- ```
36
-
37
- Comportamiento de `/provider`:
38
-
39
- - `/provider` (sin argumentos) abre el selector interactivo de proveedores.
40
- - `/provider list` muestra una tabla detallada con todos tus proveedores, perfiles guardados, estado de conexión (Conectado/Desconectado) y perfiles activos.
41
- - `/provider <proveedor>` cambia al proveedor especificado.
42
- - `/provider <proveedor> profile <nombre>` activa (o crea) un perfil específico para ese proveedor.
43
- - `/provider <proveedor> <URL>` cambia la Base URL del proveedor (ej. `/provider ollama http://localhost:11434/v1`).
44
- - `/provider <proveedor> clear` restaura la URL por defecto del proveedor.
45
-
46
- Tambien existe `/profile` para inspeccionar y navegar perfiles ya guardados:
47
-
48
- ```sh
49
- /profile
50
- /profile list
51
- /profile current
52
- /profile use ollama local
53
- /profile rename ollama local gpu-lab
54
- /profile model ollama gpu-lab llama3.2
55
- /profile model ollama gpu-lab clear
56
- /profile agent ollama gpu-lab ollama-lab
57
- /profile remove all
58
- /profile remove ollama gpu-lab
59
- ```
60
-
61
- Comportamiento de `/profile`:
62
-
63
- - `/profile` o `/profile list` muestra todos los perfiles guardados por proveedor.
64
- - `/profile current` muestra el perfil activo.
65
- - `/profile use <proveedor> <perfil>` activa el perfil y restaura su ultimo modelo si existe.
66
- - `/profile rename <proveedor> <actual> <nuevo>` renombra el perfil.
67
- - `/profile model <proveedor> <perfil> <modelo>` corrige o fija el ultimo modelo guardado para ese perfil.
68
- - `/profile model <proveedor> <perfil> clear` limpia el modelo guardado.
69
- - `/profile agent <proveedor> <perfil> <agentName>` cambia el nombre tecnico del perfil para futuros subagentes.
70
- - `/profile remove <proveedor> <perfil>` elimina el perfil.
71
- - `/profile remove all` elimina todos los perfiles guardados de una sola vez.
72
-
73
- Notas importantes:
74
-
75
- - El nombre visible del perfil y el `agentName` no son lo mismo.
76
- - El nombre visible sirve para navegar con `/provider ... profile ...` o `/profile use ...`.
77
- - `agentName` queda reservado como identificador operativo para el futuro sistema de subagentes.
78
- - Al renombrar un perfil, sus credenciales por perfil tambien se mueven al nuevo identificador para no perder API keys u OAuth.
79
- - Al borrar un perfil, tambien se limpian sus credenciales scoped cuando existen.
80
- - `/profile remove all` limpia todos los perfiles y sus credenciales scoped asociadas, pero no toca los fallbacks legacy de compatibilidad.
81
-
82
- Comportamiento esperado:
83
-
84
- - `/provider` abre la seleccion de proveedor.
85
- - `/provider <proveedor>` cambia al proveedor activo.
86
- - `/provider <proveedor> profile <nombre>` selecciona o crea ese perfil y lo deja activo.
87
- - La configuracion de ese perfil se reutiliza la proxima vez que vuelvas al mismo proveedor o perfil.
88
-
89
- Despues de activar un perfil, puedes seguir ajustando sus valores con los comandos normales del proveedor:
90
-
91
- ```sh
92
- /provider ollama http://localhost:11434/v1
93
- /provider ollama clear
94
- /provider list
95
- /model
96
- ```
97
-
98
- ### Soporte Multi-cuenta real
99
-
100
- Context Code permite gestionar múltiples cuentas del mismo proveedor (como varias cuentas de Claude o OpenAI) de forma independiente.
101
-
102
- ```sh
103
- /login --profile personal
104
- /login --profile trabajo
105
- ```
106
-
107
- - Al usar el flag `--profile` (o `-p`), las credenciales se guardan específicamente en ese perfil.
108
- - El sistema detecta automáticamente si el perfil ya existe o crea uno nuevo.
109
- - Puedes saltar entre cuentas fácilmente usando `/provider claude profile personal` o listarlas todas con `/provider list`.
110
-
111
- ### Persistencia por perfil
112
-
113
- La persistencia queda separada por perfil cuando el proveedor lo soporta.
114
-
115
- - `base URL` queda guardada por perfil.
116
- - `ultimo modelo` queda guardado por perfil.
117
- - `credenciales` quedan guardadas por perfil cuando aplica, incluyendo OAuth y API keys.
118
- - Si no existe un perfil nuevo, el sistema intenta reutilizar o migrar la configuracion vieja para no romper instalaciones existentes.
119
-
120
- ### SQLite autogenerable
121
-
122
- La metadata de proveedores y perfiles ahora se apoya en una base SQLite autogenerable:
123
-
124
- - archivo: `~/.context/provider-state.sqlite3`
125
- - se crea sola al arrancar si no existe
126
- - si hay configuracion legacy previa, puede migrarla con `/profile migrate`
127
- - en Windows/Linux, las credenciales de proveedores tambien se almacenan en esta misma DB
128
- - esas credenciales se guardan cifradas localmente antes de persistirse en `secure_storage`
129
-
130
- Que se guarda ahi:
131
-
132
- - perfiles por proveedor
133
- - perfil activo
134
- - proveedor activo
135
- - ultimo modelo por proveedor
136
- - estado runtime necesario para restaurar contexto rapido
137
- - API keys, tokens OAuth y credenciales scoped por perfil, mediante la tabla `secure_storage`
138
- - el contenido de `secure_storage.value` ya no queda en JSON legible; se cifra localmente antes de escribirse
139
-
140
- Migracion de credenciales:
141
-
142
- - si existe `~/.context/.credentials.json`, se importa automaticamente a SQLite la primera vez que se lee el storage seguro
143
- - si la importacion termina bien, el archivo legacy `.credentials.json` se elimina para evitar dos fuentes de verdad
144
- - en macOS se mantiene el flujo de keychain con fallback, segun el backend disponible
145
-
146
- Estado actual:
147
-
148
- - Windows/Linux ya trabajan en modo `SQLite-only` para providers, perfiles, modelos, base URLs y credenciales
149
- - `/status` y `/profile migrate` muestran si el runtime quedo completamente migrado
150
- - macOS sigue usando keychain/fallback por diseno; esa ruta queda fuera de esta migracion
151
-
152
- ### Proveedores actuales
153
-
154
- Estos son los proveedores visibles hoy y su estado general:
155
-
156
- - `Claude (Anthropic)`: usa OAuth y ahora puede resolver sesion por perfil, manteniendo fallback al storage anterior.
157
- - `OpenAI / Codex`: usa OAuth por perfil con compatibilidad hacia atras.
158
- - `OpenRouter`: usa API key y endpoint configurable por perfil.
159
- - `Ollama Local`: ya trabaja con perfiles; no usa API key y guarda base URL y modelo por perfil.
160
- - `Ollama Cloud`: usa endpoint configurable y queda alineado con la capa de perfiles.
161
- - `Z.AI`: ya trabaja con perfiles; guarda API key, base URL y modelo por perfil.
162
- - `MiniMax`: usa API key y endpoint compatible con Anthropic por perfil.
163
-
164
- ### Compatibilidad hacia atras
165
-
166
- La migracion esta pensada para no romper la configuracion anterior:
167
-
168
- - los valores anteriores pueden servir de base para crear el perfil por defecto durante la migracion inicial
169
- - `/profile migrate` limpia el remanente legacy cuando la DB ya quedo consistente
170
- - en Windows/Linux el objetivo final ya es `SQLite-only`
171
-
172
- ### Notas de uso
173
-
174
- - `Ollama` esta pensado como backend local, con el default en `http://localhost:11434/v1`.
175
- - `Z.AI` requiere API key por perfil y es el primer proveedor no local con soporte real de perfiles.
176
- - `Claude`, `OpenAI`, `OpenRouter`, `MiniMax` y `Ollama Cloud` ya resuelven su estado desde la arquitectura nueva con fallback a la configuracion anterior.
177
- - El comando `/model` sigue existiendo y ahora debe entenderse junto con el perfil activo.
178
-
179
- ## Datos guardados en SQLite
180
-
181
- La base se crea automaticamente en:
182
-
183
- ```text
184
- ~/.context/provider-state.sqlite3
185
- ```
186
-
187
- Ademas de perfiles y credenciales de providers, ahi se guardan:
188
-
189
- - `provider_workspaces`: proveedores disponibles para equipos
190
- - `provider_agents`: agentes por proveedor/perfil
191
- - `provider_agent_capabilities`: capacidades declaradas de agentes
192
- - `teams`: equipos
193
- - `team_units`: equipos internos dentro de un team
194
- - `team_unit_members`: miembros de cada equipo interno
195
- - `orchestration_runs`: ejecuciones
196
- - `orchestration_tasks`: tareas
197
- - `orchestration_messages`: bitacora de decisiones y eventos
198
- - `orchestration_task_results`: resultados por tarea
199
- - `orchestration_team_reports`: reportes por equipo interno
200
- - `orchestration_run_reports`: reporte consolidado de una ejecucion
201
- - `secure_storage`: credenciales cifradas y configuracion sensible de providers, Telegram y WhatsApp en Windows/Linux