@iaforged/context-code 1.0.69 → 1.0.71
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 +266 -25
- package/package.json +142 -169
package/README.md
CHANGED
|
@@ -85,11 +85,21 @@ El comando `/provider` ahora sirve para cambiar de proveedor y tambien para acti
|
|
|
85
85
|
|
|
86
86
|
```sh
|
|
87
87
|
/provider
|
|
88
|
+
/provider list
|
|
88
89
|
/provider ollama
|
|
89
90
|
/provider zai profile main
|
|
90
91
|
/provider ollama profile local
|
|
91
92
|
```
|
|
92
93
|
|
|
94
|
+
Comportamiento de `/provider`:
|
|
95
|
+
|
|
96
|
+
- `/provider` (sin argumentos) abre el selector interactivo de proveedores.
|
|
97
|
+
- `/provider list` muestra una tabla detallada con todos tus proveedores, perfiles guardados, estado de conexión (Conectado/Desconectado) y perfiles activos.
|
|
98
|
+
- `/provider <proveedor>` cambia al proveedor especificado.
|
|
99
|
+
- `/provider <proveedor> profile <nombre>` activa (o crea) un perfil específico para ese proveedor.
|
|
100
|
+
- `/provider <proveedor> <URL>` cambia la Base URL del proveedor (ej. `/provider ollama http://localhost:11434/v1`).
|
|
101
|
+
- `/provider <proveedor> clear` restaura la URL por defecto del proveedor.
|
|
102
|
+
|
|
93
103
|
Tambien existe `/profile` para inspeccionar y navegar perfiles ya guardados:
|
|
94
104
|
|
|
95
105
|
```sh
|
|
@@ -138,9 +148,23 @@ Despues de activar un perfil, puedes seguir ajustando sus valores con los comand
|
|
|
138
148
|
```sh
|
|
139
149
|
/provider ollama http://localhost:11434/v1
|
|
140
150
|
/provider ollama clear
|
|
151
|
+
/provider list
|
|
141
152
|
/model
|
|
142
153
|
```
|
|
143
154
|
|
|
155
|
+
### Soporte Multi-cuenta real
|
|
156
|
+
|
|
157
|
+
Context Code permite gestionar múltiples cuentas del mismo proveedor (como varias cuentas de Claude o OpenAI) de forma independiente.
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
/login --profile personal
|
|
161
|
+
/login --profile trabajo
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
- Al usar el flag `--profile` (o `-p`), las credenciales se guardan específicamente en ese perfil.
|
|
165
|
+
- El sistema detecta automáticamente si el perfil ya existe o crea uno nuevo.
|
|
166
|
+
- Puedes saltar entre cuentas fácilmente usando `/provider claude profile personal` o listarlas todas con `/provider list`.
|
|
167
|
+
|
|
144
168
|
### Persistencia por perfil
|
|
145
169
|
|
|
146
170
|
La persistencia queda separada por perfil cuando el proveedor lo soporta.
|
|
@@ -216,8 +240,17 @@ Esta parte permite usar varios proveedores como si fueran un equipo de trabajo.
|
|
|
216
240
|
- `workspace`: representa un proveedor dentro del sistema de equipos, por ejemplo `claude`, `openai`, `minimax` u `ollama`.
|
|
217
241
|
- `agent`: es un perfil operativo dentro de un proveedor. Ejemplo: `claude/frontend-lead` o `openai/backend-lead`.
|
|
218
242
|
- `team`: es el equipo completo para un objetivo. Ejemplo: `core-dev`.
|
|
243
|
+
- `domain` (o `dominio`): es un area de trabajo dentro del team. Ejemplos: `frontend`, `backend`, `docs`, `planning`, `tests`, `review`, `database`. Cuando creas un team con `/workspace setup`, el sistema arma 4 dominios por defecto (`frontend`, `backend`, `docs`, `planning`); los que no asignes a un agente quedaran como warnings al ejecutar.
|
|
219
244
|
- `run`: es una ejecucion guardada de un objetivo. Tiene tareas, mensajes, resultados y estado.
|
|
220
245
|
|
|
246
|
+
Mini glosario para no confundirse con los roles internos:
|
|
247
|
+
|
|
248
|
+
- `orquestador global`: el agente que coordina todo el team. Lee el objetivo del usuario, lo descompone, asigna trabajo a cada dominio y consolida los reportes finales para entregartelos a ti.
|
|
249
|
+
- `orquestador local`: por dominio. Recibe la parte del objetivo que le toca, decide como dividirla entre los miembros del dominio (o como hacerla solo en `modo autonomo`) y reporta de vuelta al orquestador global.
|
|
250
|
+
- `lead`: el agente principal de un dominio. En la mayoria de los flujos, el `orquestador local` y el `lead` son el mismo agente.
|
|
251
|
+
- `modo autonomo`: cuando un dominio no tiene miembros extra, el orquestador local asume internamente los roles que necesite (planner, executor, reviewer, etc.) sin necesitar mas agentes configurados.
|
|
252
|
+
- `global-plan` / `squad-plan` / `domain-report` / `run-report`: tipos de mensajes que se guardan en la run. El primero lo emite el orquestador global al planear, el segundo cada orquestador local cuando recibe su tarea, y los reportes son lo que devuelven cuando terminan. Los puedes ver con `/run messages <run-id>`.
|
|
253
|
+
|
|
221
254
|
Orden normal de uso:
|
|
222
255
|
|
|
223
256
|
1. Configuras un proveedor y un perfil con `/provider`, `/login` y `/model`.
|
|
@@ -315,6 +348,28 @@ Cuando usarlo:
|
|
|
315
348
|
- si quieres confirmar que el sistema reconoce un proveedor antes de crear agentes
|
|
316
349
|
- si quieres armar un equipo rapido sin recordar `/agent` y `/team`
|
|
317
350
|
|
|
351
|
+
### `/team-auto` — wizard automatico
|
|
352
|
+
|
|
353
|
+
Si todavia no sabes que dominio asignar a cada proveedor, `/team-auto` lo decide por ti. Detecta los perfiles ya logueados y arma un team con dominios estandar (`frontend`, `backend`, `docs`, `planning`):
|
|
354
|
+
|
|
355
|
+
```sh
|
|
356
|
+
/team-auto # crea un team llamado "default-team"
|
|
357
|
+
/team-auto core-dev # crea (o actualiza) un team llamado "core-dev"
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
Que pasa al ejecutarlo:
|
|
361
|
+
|
|
362
|
+
1. Detecta los `provider profile` activos (los que ya tienen credencial).
|
|
363
|
+
2. Aplica una heuristica de reparto: Claude -> `frontend`, OpenAI -> `backend`, MiniMax/Z.AI -> `docs`, Ollama/OpenRouter -> `planning`. Si solo tienes 1 proveedor, ese hace TODOS los dominios en `modo autonomo`.
|
|
364
|
+
3. Te muestra el plan en pantalla (que dominios va a crear, que agentes va a reusar, quien sera el orquestador global).
|
|
365
|
+
4. Pulsas `Enter` y aplica los cambios, o `Esc` y cancela sin tocar nada.
|
|
366
|
+
|
|
367
|
+
Cuando un dominio queda sin agente compatible (por ejemplo no tienes ningun proveedor que mapee a `docs`), se reporta `sin asignar` en el plan y queda como warning. Despues puedes asignarlo manualmente con `/team domain <team> docs <provider>/<agent>`.
|
|
368
|
+
|
|
369
|
+
Si el team ya existe, `/team-auto` solo lo actualiza: no borra agentes ni miembros que ya tuvieras.
|
|
370
|
+
|
|
371
|
+
Cuando quieras configurarlo todo a mano, sigue habiendo `/workspace setup` (wizard guiado, mas detallado) o el formato corto `/workspace setup <team> orchestrator=... <provider/profile:dominio>...`.
|
|
372
|
+
|
|
318
373
|
### `/agent`
|
|
319
374
|
|
|
320
375
|
`/agent` crea nombres de trabajo dentro de cada proveedor. Un agente siempre apunta a un provider profile real.
|
|
@@ -404,28 +459,28 @@ Una `run` es una ejecucion guardada de un objetivo. Por ejemplo: "crear login co
|
|
|
404
459
|
|
|
405
460
|
### `/orchestrate`
|
|
406
461
|
|
|
407
|
-
`/orchestrate` toma un team y
|
|
462
|
+
`/orchestrate` toma un team y un objetivo, planifica el trabajo, **te muestra el plan en pantalla** y te pregunta si quieres ejecutarlo ya:
|
|
408
463
|
|
|
409
464
|
```sh
|
|
410
465
|
/orchestrate core-dev crear endpoint de login y UI de acceso
|
|
411
466
|
```
|
|
412
467
|
|
|
413
|
-
Que
|
|
468
|
+
Que pasa cuando lo ejecutas:
|
|
414
469
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
-
|
|
420
|
-
-
|
|
421
|
-
- deja cada tarea como `ready` si puede ejecutarse o `blocked` si falta configuracion
|
|
470
|
+
1. El sistema valida el team, el orquestador global y los dominios.
|
|
471
|
+
2. Crea la `run` y todas sus `tasks` en estado `ready` o `blocked` segun la configuracion del dominio.
|
|
472
|
+
3. **Te muestra el plan**: tareas por dominio, agentes asignados, advertencias de configuracion.
|
|
473
|
+
4. Te ofrece dos teclas:
|
|
474
|
+
- **`Enter`**: ejecuta inmediatamente las tareas `ready`. Veras progreso en vivo (dominio que esta trabajando, agente activo, fase) y al final un reporte consolidado.
|
|
475
|
+
- **`Esc`**: deja la run en `planned`. Puedes revisar con `/run show <run-id>` o ejecutar mas tarde con `/run resume <run-id>`.
|
|
422
476
|
|
|
423
|
-
|
|
477
|
+
Cuando confirmas con Enter, el flujo interno es: orquestador global delega a cada orquestador local -> cada orquestador local ejecuta o subdelega en `modo autonomo` -> cada uno devuelve un `domain-report` -> el orquestador global consolida y emite el `run-report` final que ves tu.
|
|
478
|
+
|
|
479
|
+
Si pulsas Esc o no hay tareas `ready` (todo quedo bloqueado), la corrida se queda en estado `planned` y el comando termina mostrando los siguientes pasos sugeridos. En ese caso normalmente sigues con:
|
|
424
480
|
|
|
425
481
|
```sh
|
|
426
|
-
/run
|
|
427
|
-
/run
|
|
428
|
-
/run resume <run-id>
|
|
482
|
+
/run show <run-id> # revisar el plan en detalle
|
|
483
|
+
/run resume <run-id> # ejecutar despues
|
|
429
484
|
```
|
|
430
485
|
|
|
431
486
|
### `/run`
|
|
@@ -489,6 +544,7 @@ Estados de una tarea:
|
|
|
489
544
|
### Ejemplo completo
|
|
490
545
|
|
|
491
546
|
```sh
|
|
547
|
+
# 1. Configurar dos proveedores y sus perfiles
|
|
492
548
|
/provider claude profile main
|
|
493
549
|
/login
|
|
494
550
|
/model
|
|
@@ -497,16 +553,26 @@ Estados de una tarea:
|
|
|
497
553
|
/login
|
|
498
554
|
/model
|
|
499
555
|
|
|
556
|
+
# 2. Crear el team con frontend en Claude y backend en OpenAI
|
|
500
557
|
/workspace setup core-dev orchestrator=backend claude/main:frontend openai/work:backend
|
|
501
558
|
/team show core-dev
|
|
502
559
|
|
|
560
|
+
# 3. Pedir el objetivo. /orchestrate planifica, muestra el plan
|
|
561
|
+
# en pantalla y pregunta si ejecutar ya:
|
|
562
|
+
# [Enter] = ejecuta y veras progreso + reporte final
|
|
563
|
+
# [Esc] = solo planifica, queda en estado 'planned'
|
|
503
564
|
/orchestrate core-dev crear login con UI y API
|
|
565
|
+
|
|
566
|
+
# 4. (Opcional) revisar la bitacora completa de mensajes
|
|
504
567
|
/run list
|
|
505
|
-
/run show <run-id>
|
|
506
|
-
/run resume <run-id>
|
|
507
568
|
/run messages <run-id>
|
|
508
569
|
```
|
|
509
570
|
|
|
571
|
+
Notas importantes:
|
|
572
|
+
|
|
573
|
+
- Si `/workspace setup` solo asigno agente a `frontend` y `backend`, los dominios `docs` y `planning` apareceran como `blocked` con warnings al planear. **No es un error**: las tareas ready se ejecutan igual al pulsar Enter, y las bloqueadas las puedes asignar despues con `/team domain core-dev docs <provider>/<agent>` y reintentar con `/run retry <run-id>`.
|
|
574
|
+
- El reporte final que ves al terminar viene del orquestador global. Si quieres ver lo que cada orquestador local respondio, usa `/run messages <run-id>` o `/run domain <run-id> <dominio>`.
|
|
575
|
+
|
|
510
576
|
## Seleccion automatica y fallback
|
|
511
577
|
|
|
512
578
|
La seleccion automatica permite que Context Code recomiende o aplique que agente debe tomar una tarea. El fallback permite cambiar una tarea fallida o bloqueada a otro agente compatible.
|
|
@@ -768,21 +834,39 @@ En este ejemplo:
|
|
|
768
834
|
|
|
769
835
|
Si quieres hacerlo a mano, todavia puedes usar `/workspace enable`, `/agent create`, `/agent set-role`, `/team create`, `/team orchestrator` y `/team domain`. El wizard solo junta esos pasos para evitar errores.
|
|
770
836
|
|
|
771
|
-
### 4. Crear una corrida
|
|
837
|
+
### 4. Crear una corrida y revisar el plan en pantalla
|
|
772
838
|
|
|
773
839
|
```sh
|
|
774
840
|
/orchestrate core-dev crear login con UI y API
|
|
775
841
|
```
|
|
776
842
|
|
|
777
|
-
|
|
843
|
+
A diferencia de versiones anteriores, **`/orchestrate` no se queda en silencio**: te muestra una vista resumen con la run creada, las tareas por dominio, advertencias y un prompt:
|
|
778
844
|
|
|
779
|
-
```
|
|
780
|
-
|
|
845
|
+
```text
|
|
846
|
+
Plan listo para core-dev
|
|
847
|
+
Run: 1b4fb901-...
|
|
848
|
+
Objetivo: crear login con UI y API
|
|
849
|
+
Orquestador global: openai/backend-lead
|
|
850
|
+
|
|
851
|
+
Tareas por dominio
|
|
852
|
+
- backend -> ready | assigned=openai/backend-lead
|
|
853
|
+
- docs -> blocked | assigned=sin asignar
|
|
854
|
+
- frontend -> ready | assigned=claude/frontend-lead
|
|
855
|
+
- planning -> blocked | assigned=sin asignar
|
|
856
|
+
|
|
857
|
+
Listas: 2 | Bloqueadas: 2
|
|
858
|
+
|
|
859
|
+
Advertencias
|
|
860
|
+
- docs: warning -> No hay agente asignable para este dominio.
|
|
861
|
+
- planning: warning -> No hay agente asignable para este dominio.
|
|
862
|
+
|
|
863
|
+
[Enter] Ejecutar ahora (las bloqueadas se omiten) | [Esc] Solo planificar
|
|
781
864
|
```
|
|
782
865
|
|
|
783
|
-
|
|
866
|
+
### 5. Decidir: ejecutar ya, o revisar y ejecutar despues
|
|
784
867
|
|
|
785
|
-
|
|
868
|
+
- **Pulsa `Enter`** y empezara la ejecucion al instante. Solo se disparan las tareas `ready`. Mientras corren, veras lineas de progreso por dominio. Al final llega el reporte consolidado.
|
|
869
|
+
- **Pulsa `Esc`** si prefieres revisar antes. La run queda en `planned`. Despues puedes inspeccionarla con:
|
|
786
870
|
|
|
787
871
|
```sh
|
|
788
872
|
/run show <run-id>
|
|
@@ -791,9 +875,9 @@ Usa el `run-id` que aparezca en los siguientes comandos.
|
|
|
791
875
|
/run domain <run-id> backend
|
|
792
876
|
```
|
|
793
877
|
|
|
794
|
-
|
|
878
|
+
Si una tarea aparece `blocked`, normalmente falta agente, workspace, perfil, modelo o credencial. Asigna lo que falte y vuelve.
|
|
795
879
|
|
|
796
|
-
### 6. Ejecutar
|
|
880
|
+
### 6. Ejecutar manualmente cuando hayas pulsado Esc
|
|
797
881
|
|
|
798
882
|
```sh
|
|
799
883
|
/run resume <run-id>
|
|
@@ -891,10 +975,167 @@ Si necesitas detener la corrida:
|
|
|
891
975
|
/team show core-dev
|
|
892
976
|
|
|
893
977
|
/orchestrate core-dev crear login con UI y API
|
|
894
|
-
|
|
895
|
-
|
|
978
|
+
# Aqui ves el plan en pantalla.
|
|
979
|
+
# [Enter] ejecuta ya y muestra el reporte final.
|
|
980
|
+
# [Esc] te deja la run en 'planned'; ejecuta despues con /run resume <run-id>.
|
|
981
|
+
|
|
982
|
+
/run messages <run-id> # bitacora completa cuando quieras revisarla
|
|
983
|
+
```
|
|
984
|
+
|
|
985
|
+
## Cuando algo no avanza
|
|
986
|
+
|
|
987
|
+
Sintomas comunes despues de `/orchestrate` o `/run resume`, y como salir de cada uno.
|
|
988
|
+
|
|
989
|
+
### "El plan se quedo en `planned` y no pasa nada"
|
|
990
|
+
|
|
991
|
+
Pulsaste `Esc` (o cerraste la vista) en lugar de `Enter`. La run existe pero no se ejecuto. Reanuda cuando quieras:
|
|
992
|
+
|
|
993
|
+
```sh
|
|
896
994
|
/run resume <run-id>
|
|
995
|
+
```
|
|
996
|
+
|
|
997
|
+
### "Aparecen dominios `blocked` que yo no pedi"
|
|
998
|
+
|
|
999
|
+
Cuando creas un team con `/workspace setup` y solo das agente a algunos dominios (por ejemplo `frontend` y `backend`), los demas (`docs`, `planning`, etc.) se crean igual y quedan sin asignar. Al planear se reportan como `blocked` con el warning `No hay agente asignable para este dominio.`. Tienes dos salidas:
|
|
1000
|
+
|
|
1001
|
+
- **Ignorarlos**: pulsas Enter, las tareas `ready` se ejecutan y las `blocked` se quedan asi. La run se reporta como `failed` o `completed` segun lo que avance.
|
|
1002
|
+
- **Asignar agente y reintentar**:
|
|
1003
|
+
```sh
|
|
1004
|
+
/team domain <team> docs <provider>/<agent>
|
|
1005
|
+
/team domain <team> planning <provider>/<agent>
|
|
1006
|
+
/run retry <run-id>
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
### "Mi proveedor devolvio `usage_limit_reached` o `rate_limit`"
|
|
1010
|
+
|
|
1011
|
+
Pasa cuando un proveedor alcanza el limite de tokens/segundo o de plan. La tarea afectada queda `failed`. Opciones:
|
|
1012
|
+
|
|
1013
|
+
- Cambiar de perfil del mismo proveedor con `/profile use <proveedor> <otro-perfil>` y reintentar.
|
|
1014
|
+
- Reasignar la tarea a otro agente:
|
|
1015
|
+
```sh
|
|
1016
|
+
/run reassign <task-id> <provider>/<agent>
|
|
1017
|
+
/run resume <run-id>
|
|
1018
|
+
```
|
|
1019
|
+
- Pedir al sistema que busque un agente alterno:
|
|
1020
|
+
```sh
|
|
1021
|
+
/run fallback <run-id> <task-id> score-with-fallback:resilience
|
|
1022
|
+
/run resume <run-id>
|
|
1023
|
+
```
|
|
1024
|
+
|
|
1025
|
+
### "Faltan credenciales o el modelo no esta configurado"
|
|
1026
|
+
|
|
1027
|
+
Verifica el estado del perfil:
|
|
1028
|
+
|
|
1029
|
+
```sh
|
|
1030
|
+
/status
|
|
1031
|
+
```
|
|
1032
|
+
|
|
1033
|
+
Si falta token, modelo o base URL, vuelve a `/login` y `/model` para ese perfil. La tarea queda `blocked` hasta que el agente tenga todo lo que necesita.
|
|
1034
|
+
|
|
1035
|
+
### "Quiero detener una corrida en marcha"
|
|
1036
|
+
|
|
1037
|
+
```sh
|
|
1038
|
+
/run cancel <run-id>
|
|
1039
|
+
```
|
|
1040
|
+
|
|
1041
|
+
### "Quiero ver que dijo cada orquestador local antes del reporte final"
|
|
1042
|
+
|
|
1043
|
+
```sh
|
|
897
1044
|
/run messages <run-id>
|
|
1045
|
+
/run domain <run-id> <dominio>
|
|
1046
|
+
/run task <task-id>
|
|
1047
|
+
```
|
|
1048
|
+
|
|
1049
|
+
`/run messages` te lista en orden cronologico todos los `global-plan`, `squad-plan`, `domain-report`, `run-report` y eventos de policy de la corrida.
|
|
1050
|
+
|
|
1051
|
+
## Servidores MCP externos
|
|
1052
|
+
|
|
1053
|
+
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.
|
|
1054
|
+
|
|
1055
|
+
Comandos:
|
|
1056
|
+
|
|
1057
|
+
```sh
|
|
1058
|
+
/mcp # abre el panel de servidores configurados
|
|
1059
|
+
/mcp add <name> -- <command> [args...] # registra un servidor stdio
|
|
1060
|
+
/mcp add --transport http <name> <url> # registra un servidor HTTP
|
|
1061
|
+
/mcp add --transport sse <name> <url> # registra un servidor SSE
|
|
1062
|
+
```
|
|
1063
|
+
|
|
1064
|
+
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.
|
|
1065
|
+
|
|
1066
|
+
### Ejemplo: conectar una base de datos SQLite
|
|
1067
|
+
|
|
1068
|
+
Existen servidores MCP listos para hablar con bases de datos. El mas conocido es `mcp-server-sqlite`. Lo instalas y lo registras:
|
|
1069
|
+
|
|
1070
|
+
```sh
|
|
1071
|
+
# 1. Instalar el servidor (o usar npx para no instalar)
|
|
1072
|
+
pip install mcp-server-sqlite
|
|
1073
|
+
|
|
1074
|
+
# 2. Registrarlo en Context Code apuntando a tu DB
|
|
1075
|
+
/mcp add sqlite-local -- mcp-server-sqlite --db-path ./data/app.sqlite
|
|
1076
|
+
```
|
|
1077
|
+
|
|
1078
|
+
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.
|
|
1079
|
+
|
|
1080
|
+
### Ejemplo: conectar Postgres
|
|
1081
|
+
|
|
1082
|
+
```sh
|
|
1083
|
+
# Con uvx (recomendado, sin instalacion previa)
|
|
1084
|
+
/mcp add postgres-prod --transport stdio -- uvx mcp-server-postgres \
|
|
1085
|
+
--connection-string "postgres://user:pass@localhost:5432/mydb"
|
|
1086
|
+
|
|
1087
|
+
# O con un servidor HTTP ya desplegado
|
|
1088
|
+
/mcp add postgres-prod --transport http https://mcp.midominio.com/postgres \
|
|
1089
|
+
--header "Authorization: Bearer $TOKEN"
|
|
1090
|
+
```
|
|
1091
|
+
|
|
1092
|
+
Pasos a tener en cuenta:
|
|
1093
|
+
|
|
1094
|
+
- Los servidores MCP corren con tus permisos. Si conectas a una DB de produccion, considera dar al servidor solo credenciales de lectura.
|
|
1095
|
+
- Variables sensibles: usa `-e VAR=valor` al registrar el server stdio para inyectar tokens sin que queden en el comando visible.
|
|
1096
|
+
- Las herramientas MCP aparecen en los agentes con prefijo `mcp__<name>__<tool>`. Puedes restringir cuales se autorizan con `--allowedTools` al iniciar la sesion.
|
|
1097
|
+
- Si un dominio (`database`, por ejemplo) tendria que usar este MCP, asignale un agente con `/team domain <team> database <provider>/<agent>` y el orquestador local lo invocara cuando el plan lo requiera.
|
|
1098
|
+
|
|
1099
|
+
### Diferencia con el storage interno
|
|
1100
|
+
|
|
1101
|
+
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.
|
|
1102
|
+
|
|
1103
|
+
## Limites y uso por proveedor
|
|
1104
|
+
|
|
1105
|
+
`/limites` (alias `/limits`) consulta cada proveedor configurado y te muestra cuanto has consumido, cuanto te queda y los limites de tu plan, en una sola vista.
|
|
1106
|
+
|
|
1107
|
+
```sh
|
|
1108
|
+
/limites
|
|
1109
|
+
```
|
|
1110
|
+
|
|
1111
|
+
Que hace:
|
|
1112
|
+
|
|
1113
|
+
1. Itera sobre todos los `provider profile` que tienes guardados.
|
|
1114
|
+
2. Para cada uno, si hay un adapter implementado, llama a su API real en paralelo (con timeout).
|
|
1115
|
+
3. Suma a la respuesta el contador local de tokens del CLI: cuantos tokens ha consumido este perfil en la sesion actual y en el historico persistido en SQLite.
|
|
1116
|
+
|
|
1117
|
+
Estado de cada proveedor:
|
|
1118
|
+
|
|
1119
|
+
| Proveedor | Que se consulta |
|
|
1120
|
+
|----------------|-----------------------------------------------------------------------------------------------------------------------|
|
|
1121
|
+
| Claude (OAuth) | `GET /api/oauth/usage` -> ventanas (5h/7d/Opus/Sonnet) y extra usage. Reusa el cliente que alimenta a `/usage` |
|
|
1122
|
+
| Anthropic API | `no-data` — solo headers `anthropic-ratelimit-*` por llamada |
|
|
1123
|
+
| OpenAI OAuth | `no-data` — Codex/ChatGPT solo exponen rate limits dentro del `TokenCountEvent` de cada respuesta del modelo |
|
|
1124
|
+
| OpenAI API | `GET /v1/usage` (requiere admin key); si la key no tiene permiso, `no-data` |
|
|
1125
|
+
| OpenRouter | `GET /api/v1/auth/key` -> creditos, limite, rate limit |
|
|
1126
|
+
| MiniMax | `GET /v1/token_plan/remains` -> uso por modelo (endpoint reverse-engineered desde MiniMax-AI/cli `mmx quota show`) |
|
|
1127
|
+
| Z.AI | `GET /api/monitor/usage/quota/limit` -> tokens usados/limite del coding plan |
|
|
1128
|
+
| Ollama local | Siempre `ok` (ilimitado, corre en tu maquina); cuenta modelos disponibles |
|
|
1129
|
+
| Ollama Cloud | `no-data` salvo localhost |
|
|
1130
|
+
|
|
1131
|
+
El contador local de tokens funciona para todos los proveedores por igual: se persiste en `~/.context/provider-state.sqlite3` y te permite saber cuanto has gastado aunque el proveedor no exponga API. La cuenta empieza en cero la primera vez que ejecutas `/limites` despues de instalar.
|
|
1132
|
+
|
|
1133
|
+
Comandos relacionados:
|
|
1134
|
+
|
|
1135
|
+
```sh
|
|
1136
|
+
/limites # vista interactiva por proveedor
|
|
1137
|
+
/usage # solo Claude: limites del plan vistos por Settings
|
|
1138
|
+
/cost # costo de la sesion actual
|
|
898
1139
|
```
|
|
899
1140
|
|
|
900
1141
|
## Reporte de errores
|
package/package.json
CHANGED
|
@@ -1,169 +1,142 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@iaforged/context-code",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
"@
|
|
61
|
-
"@
|
|
62
|
-
"@
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
"
|
|
69
|
-
"
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
80
|
-
"
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
"
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"
|
|
102
|
-
"
|
|
103
|
-
"
|
|
104
|
-
"
|
|
105
|
-
"
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
"
|
|
109
|
-
"
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"
|
|
115
|
-
"
|
|
116
|
-
"
|
|
117
|
-
"
|
|
118
|
-
"
|
|
119
|
-
"
|
|
120
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
"
|
|
129
|
-
"
|
|
130
|
-
"
|
|
131
|
-
"
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
"
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
"picomatch": "^4.0.4",
|
|
144
|
-
"plist": "^3.1.0",
|
|
145
|
-
"proper-lockfile": "^4.1.2",
|
|
146
|
-
"qrcode": "^1.5.4",
|
|
147
|
-
"react": "^19.2.4",
|
|
148
|
-
"react-reconciler": "^0.33.0",
|
|
149
|
-
"semver": "^7.7.4",
|
|
150
|
-
"sharp": "^0.34.5",
|
|
151
|
-
"shell-quote": "^1.8.3",
|
|
152
|
-
"signal-exit": "^4.1.0",
|
|
153
|
-
"stack-utils": "^2.0.6",
|
|
154
|
-
"strip-ansi": "^7.2.0",
|
|
155
|
-
"supports-hyperlinks": "^4.4.0",
|
|
156
|
-
"tree-kill": "^1.2.2",
|
|
157
|
-
"turndown": "^7.2.4",
|
|
158
|
-
"usehooks-ts": "^3.1.1",
|
|
159
|
-
"vscode-jsonrpc": "^8.2.1",
|
|
160
|
-
"vscode-languageserver-protocol": "^3.17.5",
|
|
161
|
-
"vscode-languageserver-types": "^3.17.5",
|
|
162
|
-
"wrap-ansi": "^10.0.0",
|
|
163
|
-
"ws": "^8.20.0",
|
|
164
|
-
"xss": "^1.0.15",
|
|
165
|
-
"yaml": "^2.8.3",
|
|
166
|
-
"zod": "^4.3.6",
|
|
167
|
-
"zod-to-json-schema": "^3.25.2"
|
|
168
|
-
}
|
|
169
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@iaforged/context-code",
|
|
3
|
+
"version": "1.0.71",
|
|
4
|
+
"description": "Context Code es un asistente de desarrollo para la terminal. Puede revisar tu proyecto, editar archivos, ejecutar comandos y apoyarte en tareas reales de programacion.",
|
|
5
|
+
"author": "Context AI",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"bin": {
|
|
9
|
+
"context": "context-bootstrap.js",
|
|
10
|
+
"context-recovery": "context-bootstrap.js"
|
|
11
|
+
},
|
|
12
|
+
"engines": {
|
|
13
|
+
"node": ">=18.0.0"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"context-bootstrap.js",
|
|
17
|
+
"cli.js",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE.md"
|
|
20
|
+
],
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public",
|
|
23
|
+
"registry": "https://registry.npmjs.org/"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@alcalzone/ansi-tokenize": "^0.3.0",
|
|
27
|
+
"@anthropic-ai/bedrock-sdk": "^0.27.0",
|
|
28
|
+
"@anthropic-ai/claude-agent-sdk": "^0.2.92",
|
|
29
|
+
"@anthropic-ai/foundry-sdk": "^0.2.3",
|
|
30
|
+
"@anthropic-ai/mcpb": "^2.1.2",
|
|
31
|
+
"@anthropic-ai/sandbox-runtime": "^0.0.49",
|
|
32
|
+
"@anthropic-ai/sdk": "^0.82.0",
|
|
33
|
+
"@anthropic-ai/vertex-sdk": "^0.14.4",
|
|
34
|
+
"@aws-sdk/client-bedrock": "^3.1025.0",
|
|
35
|
+
"@aws-sdk/client-bedrock-runtime": "^3.1025.0",
|
|
36
|
+
"@aws-sdk/client-sts": "^3.1025.0",
|
|
37
|
+
"@aws-sdk/credential-provider-node": "^3.972.29",
|
|
38
|
+
"@aws-sdk/credential-providers": "^3.1025.0",
|
|
39
|
+
"@azure/identity": "^4.13.1",
|
|
40
|
+
"@commander-js/extra-typings": "^14.0.0",
|
|
41
|
+
"@growthbook/growthbook": "^1.6.5",
|
|
42
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
43
|
+
"@opentelemetry/api": "^1.9.1",
|
|
44
|
+
"@opentelemetry/api-logs": "^0.214.0",
|
|
45
|
+
"@opentelemetry/core": "^2.6.1",
|
|
46
|
+
"@opentelemetry/exporter-logs-otlp-grpc": "^0.214.0",
|
|
47
|
+
"@opentelemetry/exporter-logs-otlp-http": "^0.214.0",
|
|
48
|
+
"@opentelemetry/exporter-logs-otlp-proto": "^0.214.0",
|
|
49
|
+
"@opentelemetry/exporter-metrics-otlp-grpc": "^0.214.0",
|
|
50
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.214.0",
|
|
51
|
+
"@opentelemetry/exporter-metrics-otlp-proto": "^0.214.0",
|
|
52
|
+
"@opentelemetry/exporter-prometheus": "^0.214.0",
|
|
53
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "^0.214.0",
|
|
54
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.214.0",
|
|
55
|
+
"@opentelemetry/exporter-trace-otlp-proto": "^0.214.0",
|
|
56
|
+
"@opentelemetry/resources": "^2.6.1",
|
|
57
|
+
"@opentelemetry/sdk-logs": "^0.214.0",
|
|
58
|
+
"@opentelemetry/sdk-metrics": "^2.6.1",
|
|
59
|
+
"@opentelemetry/sdk-trace-base": "^2.6.1",
|
|
60
|
+
"@opentelemetry/semantic-conventions": "^1.40.0",
|
|
61
|
+
"@smithy/core": "^3.23.14",
|
|
62
|
+
"@smithy/node-http-handler": "^4.5.2",
|
|
63
|
+
"ajv": "^8.18.0",
|
|
64
|
+
"ajv-formats": "^3.0.1",
|
|
65
|
+
"asciichart": "^1.5.25",
|
|
66
|
+
"auto-bind": "^5.0.1",
|
|
67
|
+
"axios": "^1.14.0",
|
|
68
|
+
"bidi-js": "^1.0.3",
|
|
69
|
+
"cacache": "^20.0.4",
|
|
70
|
+
"chalk": "^5.6.2",
|
|
71
|
+
"chokidar": "^5.0.0",
|
|
72
|
+
"cli-boxes": "^4.0.1",
|
|
73
|
+
"cli-highlight": "^2.1.11",
|
|
74
|
+
"code-excerpt": "^4.0.0",
|
|
75
|
+
"diff": "^8.0.4",
|
|
76
|
+
"emoji-regex": "^10.6.0",
|
|
77
|
+
"env-paths": "^4.0.0",
|
|
78
|
+
"execa": "^9.6.1",
|
|
79
|
+
"fflate": "^0.8.2",
|
|
80
|
+
"figures": "^6.1.0",
|
|
81
|
+
"fuse.js": "^7.3.0",
|
|
82
|
+
"get-east-asian-width": "^1.5.0",
|
|
83
|
+
"google-auth-library": "^10.6.2",
|
|
84
|
+
"grammy": "^1.42.0",
|
|
85
|
+
"highlight.js": "^11.11.1",
|
|
86
|
+
"https-proxy-agent": "^9.0.0",
|
|
87
|
+
"ignore": "^7.0.5",
|
|
88
|
+
"indent-string": "^5.0.0",
|
|
89
|
+
"ink": "^6.8.0",
|
|
90
|
+
"jsonc-parser": "^3.3.1",
|
|
91
|
+
"lodash-es": "^4.18.1",
|
|
92
|
+
"lru-cache": "^11.3.2",
|
|
93
|
+
"marked": "^18.0.0",
|
|
94
|
+
"mssql": "^10.0.2",
|
|
95
|
+
"mysql2": "^3.6.5",
|
|
96
|
+
"node-fetch": "^3.3.2",
|
|
97
|
+
"node-forge": "^1.4.0",
|
|
98
|
+
"oracledb": "^6.3.0",
|
|
99
|
+
"p-map": "^7.0.4",
|
|
100
|
+
"pg": "^8.11.3",
|
|
101
|
+
"picomatch": "^4.0.4",
|
|
102
|
+
"plist": "^3.1.0",
|
|
103
|
+
"proper-lockfile": "^4.1.2",
|
|
104
|
+
"qrcode": "^1.5.4",
|
|
105
|
+
"react": "^19.2.4",
|
|
106
|
+
"react-reconciler": "^0.33.0",
|
|
107
|
+
"semver": "^7.7.4",
|
|
108
|
+
"sharp": "^0.34.5",
|
|
109
|
+
"shell-quote": "^1.8.3",
|
|
110
|
+
"signal-exit": "^4.1.0",
|
|
111
|
+
"stack-utils": "^2.0.6",
|
|
112
|
+
"strip-ansi": "^7.2.0",
|
|
113
|
+
"supports-hyperlinks": "^4.4.0",
|
|
114
|
+
"tree-kill": "^1.2.2",
|
|
115
|
+
"turndown": "^7.2.4",
|
|
116
|
+
"usehooks-ts": "^3.1.1",
|
|
117
|
+
"vscode-jsonrpc": "^8.2.1",
|
|
118
|
+
"vscode-languageserver-protocol": "^3.17.5",
|
|
119
|
+
"vscode-languageserver-types": "^3.17.5",
|
|
120
|
+
"wrap-ansi": "^10.0.0",
|
|
121
|
+
"ws": "^8.20.0",
|
|
122
|
+
"xss": "^1.0.15",
|
|
123
|
+
"yaml": "^2.8.3",
|
|
124
|
+
"zod": "^4.3.6",
|
|
125
|
+
"zod-to-json-schema": "^3.25.2"
|
|
126
|
+
},
|
|
127
|
+
"optionalDependencies": {
|
|
128
|
+
"@img/sharp-darwin-arm64": "^0.34.2",
|
|
129
|
+
"@img/sharp-darwin-x64": "^0.34.2",
|
|
130
|
+
"@img/sharp-linux-arm": "^0.34.2",
|
|
131
|
+
"@img/sharp-linux-arm64": "^0.34.2",
|
|
132
|
+
"@img/sharp-linux-x64": "^0.34.2",
|
|
133
|
+
"@img/sharp-linuxmusl-arm64": "^0.34.2",
|
|
134
|
+
"@img/sharp-linuxmusl-x64": "^0.34.2",
|
|
135
|
+
"@img/sharp-win32-arm64": "^0.34.2",
|
|
136
|
+
"@img/sharp-win32-x64": "^0.34.2",
|
|
137
|
+
"@whiskeysockets/baileys": "7.0.0-rc.9"
|
|
138
|
+
},
|
|
139
|
+
"scripts": {
|
|
140
|
+
"prepublishOnly": "node -e \"if (!process.env.AUTHORIZED) { console.error('ERROR: Direct publishing is not allowed.\\nPlease see the release workflow documentation to publish this package.'); process.exit(1); }\""
|
|
141
|
+
}
|
|
142
|
+
}
|