@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.
Files changed (2) hide show
  1. package/README.md +266 -25
  2. 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 crea tareas iniciales para cada dominio.
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 hace:
468
+ Que pasa cuando lo ejecutas:
414
469
 
415
- - revisa que el team exista
416
- - revisa que tenga coordinador principal
417
- - revisa que cada dominio tenga agente responsable
418
- - crea una `orchestration_run`
419
- - crea tareas en `orchestration_tasks`
420
- - crea mensajes de planeacion en `orchestration_messages`
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
- Despues de usar `/orchestrate`, normalmente sigues con:
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 list
427
- /run show <run-id>
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 de trabajo
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
- Luego busca el identificador de la corrida:
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
- ```sh
780
- /run list
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
- Usa el `run-id` que aparezca en los siguientes comandos.
866
+ ### 5. Decidir: ejecutar ya, o revisar y ejecutar despues
784
867
 
785
- ### 5. Revisar antes de ejecutar
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
- Antes de ejecutar, revisa que las tareas esten en `ready`. Si alguna aparece `blocked`, normalmente falta agente, perfil, modelo o credencial.
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 la corrida
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
- /run list
895
- /run show <run-id>
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.69",
4
- "bin": {
5
- "context": "context-bootstrap.js",
6
- "context-recovery": "context-bootstrap.js"
7
- },
8
- "engines": {
9
- "node": ">=18.0.0"
10
- },
11
- "type": "module",
12
- "author": "Context AI",
13
- "license": "MIT",
14
- "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.",
15
- "publishConfig": {
16
- "access": "public",
17
- "registry": "https://registry.npmjs.org/"
18
- },
19
- "files": [
20
- "context-bootstrap.js",
21
- "cli.js",
22
- "README.md",
23
- "LICENSE.md"
24
- ],
25
- "scripts": {
26
- "build": "tsc -p tsconfig.json && node ./scripts/postprocess-build.mjs",
27
- "dev:build": "npm run build",
28
- "dev:watch": "tsc -p tsconfig.json --watch --preserveWatchOutput",
29
- "dev:run": "node ./dist/src/entrypoints/cli.js",
30
- "dev:version": "npm run build && node ./dist/src/entrypoints/cli.js --version",
31
- "dev:help": "npm run build && node ./dist/src/entrypoints/cli.js --help",
32
- "start": "node ./scripts/run.mjs",
33
- "package": "npm run build && node ./scripts/package-build.mjs",
34
- "install:global": "npm install -g .",
35
- "uninstall:global": "npm uninstall -g @iaforged/context-code",
36
- "typecheck": "tsc -p tsconfig.typecheck.json",
37
- "build:recovery": "npm run build",
38
- "start:recovery": "npm run start",
39
- "recovery": "npm run build && npm run start",
40
- "package:recovery": "npm run package",
41
- "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); }\"",
42
- "publish:package": "powershell -ExecutionPolicy Bypass -File ./publish-package.ps1",
43
- "pubpackages": "bash ./scripts/pubpackages.sh",
44
- "instalar": "bash -lc 'AUTHORIZED=1 npm install -g . --prefix \"$HOME/.context/local\" --force'",
45
- "publicar": "bash -lc 'AUTHORIZED=1 npm publish'"
46
- },
47
- "optionalDependencies": {
48
- "@img/sharp-darwin-arm64": "^0.34.2",
49
- "@img/sharp-darwin-x64": "^0.34.2",
50
- "@img/sharp-linux-arm": "^0.34.2",
51
- "@img/sharp-linux-arm64": "^0.34.2",
52
- "@img/sharp-linux-x64": "^0.34.2",
53
- "@img/sharp-linuxmusl-arm64": "^0.34.2",
54
- "@img/sharp-linuxmusl-x64": "^0.34.2",
55
- "@img/sharp-win32-arm64": "^0.34.2",
56
- "@img/sharp-win32-x64": "^0.34.2",
57
- "@whiskeysockets/baileys": "7.0.0-rc.9"
58
- },
59
- "devDependencies": {
60
- "@types/bun": "^1.3.11",
61
- "@types/node": "^25.5.2",
62
- "@types/react": "^19.2.14",
63
- "@types/ws": "^8.18.1",
64
- "type-fest": "^5.5.0",
65
- "typescript": "^6.0.2"
66
- },
67
- "dependencies": {
68
- "@alcalzone/ansi-tokenize": "^0.3.0",
69
- "@anthropic-ai/bedrock-sdk": "^0.27.0",
70
- "@anthropic-ai/claude-agent-sdk": "^0.2.92",
71
- "@anthropic-ai/foundry-sdk": "^0.2.3",
72
- "@anthropic-ai/mcpb": "^2.1.2",
73
- "@anthropic-ai/sandbox-runtime": "^0.0.49",
74
- "@anthropic-ai/sdk": "^0.82.0",
75
- "@anthropic-ai/vertex-sdk": "^0.14.4",
76
- "@aws-sdk/client-bedrock": "^3.1025.0",
77
- "@aws-sdk/client-bedrock-runtime": "^3.1025.0",
78
- "@aws-sdk/client-sts": "^3.1025.0",
79
- "@aws-sdk/credential-provider-node": "^3.972.29",
80
- "@aws-sdk/credential-providers": "^3.1025.0",
81
- "@azure/identity": "^4.13.1",
82
- "@commander-js/extra-typings": "^14.0.0",
83
- "@growthbook/growthbook": "^1.6.5",
84
- "@modelcontextprotocol/sdk": "^1.29.0",
85
- "@opentelemetry/api": "^1.9.1",
86
- "@opentelemetry/api-logs": "^0.214.0",
87
- "@opentelemetry/core": "^2.6.1",
88
- "@opentelemetry/exporter-logs-otlp-grpc": "^0.214.0",
89
- "@opentelemetry/exporter-logs-otlp-http": "^0.214.0",
90
- "@opentelemetry/exporter-logs-otlp-proto": "^0.214.0",
91
- "@opentelemetry/exporter-metrics-otlp-grpc": "^0.214.0",
92
- "@opentelemetry/exporter-metrics-otlp-http": "^0.214.0",
93
- "@opentelemetry/exporter-metrics-otlp-proto": "^0.214.0",
94
- "@opentelemetry/exporter-prometheus": "^0.214.0",
95
- "@opentelemetry/exporter-trace-otlp-grpc": "^0.214.0",
96
- "@opentelemetry/exporter-trace-otlp-http": "^0.214.0",
97
- "@opentelemetry/exporter-trace-otlp-proto": "^0.214.0",
98
- "@opentelemetry/resources": "^2.6.1",
99
- "@opentelemetry/sdk-logs": "^0.214.0",
100
- "@opentelemetry/sdk-metrics": "^2.6.1",
101
- "@opentelemetry/sdk-trace-base": "^2.6.1",
102
- "@opentelemetry/semantic-conventions": "^1.40.0",
103
- "@smithy/core": "^3.23.14",
104
- "@smithy/node-http-handler": "^4.5.2",
105
- "ajv": "^8.18.0",
106
- "ajv-formats": "^3.0.1",
107
- "asciichart": "^1.5.25",
108
- "auto-bind": "^5.0.1",
109
- "axios": "^1.14.0",
110
- "bidi-js": "^1.0.3",
111
- "cacache": "^20.0.4",
112
- "chalk": "^5.6.2",
113
- "chokidar": "^5.0.0",
114
- "cli-boxes": "^4.0.1",
115
- "cli-highlight": "^2.1.11",
116
- "code-excerpt": "^4.0.0",
117
- "diff": "^8.0.4",
118
- "emoji-regex": "^10.6.0",
119
- "env-paths": "^4.0.0",
120
- "execa": "^9.6.1",
121
- "fflate": "^0.8.2",
122
- "figures": "^6.1.0",
123
- "fuse.js": "^7.3.0",
124
- "get-east-asian-width": "^1.5.0",
125
- "google-auth-library": "^10.6.2",
126
- "grammy": "^1.42.0",
127
- "highlight.js": "^11.11.1",
128
- "https-proxy-agent": "^9.0.0",
129
- "ignore": "^7.0.5",
130
- "indent-string": "^5.0.0",
131
- "ink": "^6.8.0",
132
- "jsonc-parser": "^3.3.1",
133
- "lodash-es": "^4.18.1",
134
- "lru-cache": "^11.3.2",
135
- "marked": "^18.0.0",
136
- "mssql": "^10.0.2",
137
- "mysql2": "^3.6.5",
138
- "node-fetch": "^3.3.2",
139
- "node-forge": "^1.4.0",
140
- "oracledb": "^6.3.0",
141
- "p-map": "^7.0.4",
142
- "pg": "^8.11.3",
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
+ }