@jmanuelcorral/openteam 0.25.0 → 0.26.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.
- package/README.es.md +29 -6
- package/README.md +29 -7
- package/dist/certificates/graph-release-certificate.json +2 -2
- package/dist/certificates/graph-shadow-certificate.json +2 -2
- package/dist/cli/setupAdapters.d.ts.map +1 -1
- package/dist/cli.js +775 -128
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/dispatch.d.ts.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/setup.d.ts +20 -15
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/config/schema.d.ts +101 -7
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +648 -122
- package/dist/local/lemonadeResidency.d.ts +2 -14
- package/dist/local/lemonadeResidency.d.ts.map +1 -1
- package/dist/local/llamaSwap.d.ts +5 -0
- package/dist/local/llamaSwap.d.ts.map +1 -0
- package/dist/local/llamaSwapRequestGuard.d.ts +11 -0
- package/dist/local/llamaSwapRequestGuard.d.ts.map +1 -0
- package/dist/local/llamaSwapResidency.d.ts +9 -0
- package/dist/local/llamaSwapResidency.d.ts.map +1 -0
- package/dist/local/modelResidency.d.ts +1 -0
- package/dist/local/modelResidency.d.ts.map +1 -1
- package/dist/local/registry.d.ts.map +1 -1
- package/dist/local/residency.d.ts +16 -0
- package/dist/local/residency.d.ts.map +1 -0
- package/dist/local/types.d.ts +10 -2
- package/dist/local/types.d.ts.map +1 -1
- package/dist/messages/executionSetup.d.ts +22 -3
- package/dist/messages/executionSetup.d.ts.map +1 -1
- package/dist/messages/memoryRuntime.d.ts +6 -0
- package/dist/messages/memoryRuntime.d.ts.map +1 -0
- package/dist/messages/memoryTool.d.ts +1 -1
- package/dist/messages/memoryTool.d.ts.map +1 -1
- package/dist/messages/modelResidency.d.ts +20 -2
- package/dist/messages/modelResidency.d.ts.map +1 -1
- package/dist/plugin/availability.d.ts.map +1 -1
- package/dist/plugin/memoryTool.d.ts.map +1 -1
- package/dist/plugin/modelResidency.d.ts.map +1 -1
- package/dist/storage/index/memoryRuntime.d.ts.map +1 -1
- package/package.json +1 -1
package/README.es.md
CHANGED
|
@@ -41,7 +41,7 @@ estrecha un agente a `local` bajo el modo global `mixed`.
|
|
|
41
41
|
## Características
|
|
42
42
|
|
|
43
43
|
- Routing por turno desde el hook `chat.message`, mutando `output.message.model` antes de que opencode persista el mensaje.
|
|
44
|
-
- Registro de runtimes locales OpenAI-compatible: Ollama, LM Studio, Lemonade Server y Foundry Local.
|
|
44
|
+
- Registro de runtimes locales OpenAI-compatible: Ollama, LM Studio, Lemonade Server, llama-swap y Foundry Local.
|
|
45
45
|
- Perfiles de capacidad desde Models.dev, con cache y fallback curado cuando el catálogo no está disponible.
|
|
46
46
|
- Selección automática **cheapest-capable** por coste, disponibilidad, soporte de tools y contexto dentro del dominio permitido.
|
|
47
47
|
- Presupuestos por sesión, mes y tokens frontier por sesión.
|
|
@@ -62,6 +62,7 @@ estrecha un agente a `local` bajo el modo global `mixed`.
|
|
|
62
62
|
- Ollama en `http://localhost:11434/v1`.
|
|
63
63
|
- LM Studio en `http://localhost:1234/v1`.
|
|
64
64
|
- Lemonade Server en `http://localhost:13305/api/v1`.
|
|
65
|
+
- llama-swap en `http://localhost:8080/v1`.
|
|
65
66
|
- Foundry Local con puerto dinámico descubierto por CLI en Windows.
|
|
66
67
|
|
|
67
68
|
## Instalación
|
|
@@ -114,7 +115,7 @@ la política del operador en `.opencode/openteam.json`.
|
|
|
114
115
|
## Quickstart: `openteam setup`
|
|
115
116
|
|
|
116
117
|
La forma más rápida de dejar un repositorio listo es `openteam setup`. Detecta
|
|
117
|
-
Ollama, LM Studio, Lemonade Server y Foundry Local —todos opcionales—, permite
|
|
118
|
+
Ollama, LM Studio, Lemonade Server, llama-swap y Foundry Local —todos opcionales—, permite
|
|
118
119
|
elegir modelos locales y el **frontier baseline** (cheapest-capable primero), y
|
|
119
120
|
genera la configuración y los artefactos de agentes/comandos:
|
|
120
121
|
|
|
@@ -143,6 +144,14 @@ lista vacía tampoco permite introducir un ID supuesto. openteam no carga ni
|
|
|
143
144
|
descarga modelos para hacer funcionar una selección. Consulta la
|
|
144
145
|
[política y los límites del servidor](docs/adr/lemonade-active-models.md).
|
|
145
146
|
|
|
147
|
+
**llama-swap también exige modelos activos.** La integración inicial admite
|
|
148
|
+
IDs locales canónicos con estado `ready` verificable y sin perfil de
|
|
149
|
+
enrutamiento activo, en un servidor sin autenticación restringido por la red.
|
|
150
|
+
Los límites declarados de contexto y salida se trasladan durante setup a
|
|
151
|
+
opencode para compactar; el soporte de herramientas desconocido no se inventa.
|
|
152
|
+
Consulta la [guía de llama-swap](docs/es/guide/llama-swap.md), incluidos los
|
|
153
|
+
límites de la comprobación no atómica del cliente.
|
|
154
|
+
|
|
146
155
|
El asistente:
|
|
147
156
|
|
|
148
157
|
1. Sondea runtimes locales y primero pregunta cuáles habilitar. Elegir
|
|
@@ -232,7 +241,7 @@ Para instalar y probar openteam en otro equipo que ya tenga [opencode](https://o
|
|
|
232
241
|
# La opción puntual ya ejecutó setup en el paso anterior.
|
|
233
242
|
```
|
|
234
243
|
|
|
235
|
-
El asistente detecta Ollama / LM Studio / Foundry Local, te deja elegir los modelos locales (locales o en otra máquina de la red) o **ninguno** para funcionar solo con frontier, y el frontier baseline, y escribe la configuración.
|
|
244
|
+
El asistente detecta Ollama / LM Studio / Lemonade Server / llama-swap / Foundry Local, te deja elegir los modelos locales (locales o en otra máquina de la red) o **ninguno** para funcionar solo con frontier, y el frontier baseline, y escribe la configuración.
|
|
236
245
|
|
|
237
246
|
3. **Autentica el provider frontier** que hayas elegido:
|
|
238
247
|
|
|
@@ -348,9 +357,9 @@ ejecutas desde un subdirectorio verás "provider not configured" y debes hacer
|
|
|
348
357
|
| `router.localDefault` | `ModelRef \| null` | `null` | Modelo local principal. No configurado por defecto — ningún modelo local se enruta hasta que configures uno con `openteam setup` o manualmente. |
|
|
349
358
|
| `local.runtimes` | `LocalRuntime[]` | `[]` | Runtimes locales a sondear. Vacío por defecto — ningún runtime está configurado hasta que ejecutes `openteam setup` o añadas una entrada manualmente. |
|
|
350
359
|
| `local.runtimes[].id` | `string` | requerido | Identidad de instancia, única dentro del array. Libre (`lmstudio-a`, `lemonade-lan`) para que dos máquinas del mismo tipo sean distintas; si se omite `kind`, debe ser en sí mismo un tipo de runtime (retrocompatibilidad). |
|
|
351
|
-
| `local.runtimes[].kind` | `"ollama" \| "lmstudio" \| "foundry-local" \| "lemonade"` opcional | migra desde `id` | Tipo de runtime que selecciona el adaptador. Opcional: si falta, se usa `id` como tipo, así toda config previa sigue funcionando sin cambios. |
|
|
360
|
+
| `local.runtimes[].kind` | `"ollama" \| "lmstudio" \| "foundry-local" \| "lemonade" \| "llama-swap"` opcional | migra desde `id` | Tipo de runtime que selecciona el adaptador. Opcional: si falta, se usa `id` como tipo, así toda config previa sigue funcionando sin cambios. |
|
|
352
361
|
| `local.runtimes[].enabled` | `boolean` | `true` | Habilita o deshabilita ese runtime. |
|
|
353
|
-
| `local.runtimes[].baseURL` | URL opcional | según runtime/config | Endpoint OpenAI-compatible (`/v1` para Ollama/LM Studio, `/api/v1` para Lemonade); Foundry Local puede omitirlo si usa discovery. |
|
|
362
|
+
| `local.runtimes[].baseURL` | URL opcional | según runtime/config | Endpoint OpenAI-compatible (`/v1` para Ollama/LM Studio/llama-swap, `/api/v1` para Lemonade); Foundry Local puede omitirlo si usa discovery. |
|
|
354
363
|
| `local.runtimes[].discovery` | `"cli" \| "sdk" \| "manual"` opcional | sin default por item | Discovery de Foundry Local; el registry usa CLI si está configurado y no es `manual`. |
|
|
355
364
|
| `local.runtimes[].defaultModel` | `ModelRef` | requerido | Modelo por defecto de ese runtime. |
|
|
356
365
|
| `local.runtimes[].maxConcurrency` | entero positivo opcional | `4` | Límite de generaciones concurrentes de esta instancia (su número real de slots). Se aplica por instancia. |
|
|
@@ -920,6 +929,20 @@ foundry service status
|
|
|
920
929
|
|
|
921
930
|
openteam extrae el puerto de la salida del CLI y normaliza el endpoint a `http://localhost:<PORT>/v1`.
|
|
922
931
|
|
|
932
|
+
### llama-swap
|
|
933
|
+
|
|
934
|
+
Prepara el modelo en llama-swap antes de ejecutar setup. Estas consultas solo
|
|
935
|
+
leen el catálogo, la disponibilidad y el perfil activo:
|
|
936
|
+
|
|
937
|
+
```powershell
|
|
938
|
+
Invoke-RestMethod -Uri "http://localhost:8080/v1/models" -Method Get
|
|
939
|
+
Invoke-RestMethod -Uri "http://localhost:8080/running" -Method Get
|
|
940
|
+
Invoke-RestMethod -Uri "http://localhost:8080/api/profiles" -Method Get
|
|
941
|
+
```
|
|
942
|
+
|
|
943
|
+
Consulta la [guía de llama-swap](docs/es/guide/llama-swap.md) para la selección
|
|
944
|
+
de modelos listos, límites de contexto/salida y transportes soportados.
|
|
945
|
+
|
|
923
946
|
### Telemetría
|
|
924
947
|
|
|
925
948
|
```powershell
|
|
@@ -1011,7 +1034,7 @@ Consulta [docs/compatibility.md](docs/compatibility.md). Resumen verificado el `
|
|
|
1011
1034
|
|
|
1012
1035
|
| Superficie | Versión / contrato |
|
|
1013
1036
|
| --- | --- |
|
|
1014
|
-
| openteam | `0.
|
|
1037
|
+
| openteam | `0.26.0`; versión actual del paquete |
|
|
1015
1038
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
1016
1039
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
1017
1040
|
| Hook de routing | `chat.message`; no `chat.params` para cambiar modelo |
|
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ or narrow an agent to `local` under global `mixed`, when frontier is prohibited.
|
|
|
47
47
|
## Features
|
|
48
48
|
|
|
49
49
|
- Per-turn routing from the `chat.message` hook, mutating `output.message.model` before opencode persists the message.
|
|
50
|
-
- Registration of OpenAI-compatible local runtimes: **Ollama**, **LM Studio**, **Lemonade Server** and **Foundry Local**.
|
|
50
|
+
- Registration of OpenAI-compatible local runtimes: **Ollama**, **LM Studio**, **Lemonade Server**, **llama-swap** and **Foundry Local**.
|
|
51
51
|
- Capability profiles from [Models.dev](https://models.dev), with cache and a curated fallback when the catalog is unavailable.
|
|
52
52
|
- **Cheapest-capable** automatic selection by cost, availability, tool support, and context requirements inside the allowed domain.
|
|
53
53
|
- Budgets per session, per month and per frontier tokens per session.
|
|
@@ -70,9 +70,10 @@ or narrow an agent to `local` under global `mixed`, when frontier is prohibited.
|
|
|
70
70
|
- Ollama at `http://localhost:11434/v1`.
|
|
71
71
|
- LM Studio at `http://localhost:1234/v1`.
|
|
72
72
|
- Lemonade Server at `http://localhost:13305/api/v1`.
|
|
73
|
+
- llama-swap at `http://localhost:8080/v1`.
|
|
73
74
|
- Foundry Local with a dynamic port discovered via CLI on Windows.
|
|
74
75
|
|
|
75
|
-
> Local runtimes are **optional**. You can run openteam **frontier-only**, or point it at an Ollama / LM Studio / Lemonade Server running on **another machine on your LAN**.
|
|
76
|
+
> Local runtimes are **optional**. You can run openteam **frontier-only**, or point it at an Ollama / LM Studio / Lemonade Server / llama-swap running on **another machine on your LAN**.
|
|
76
77
|
|
|
77
78
|
## Installation
|
|
78
79
|
|
|
@@ -125,7 +126,7 @@ operator policy in `.opencode/openteam.json`.
|
|
|
125
126
|
## Quickstart: `openteam setup`
|
|
126
127
|
|
|
127
128
|
`openteam setup` detects the installed local runtimes (Ollama, LM Studio,
|
|
128
|
-
Lemonade Server, Foundry Local — all optional), lets you pick local models and
|
|
129
|
+
Lemonade Server, llama-swap, Foundry Local — all optional), lets you pick local models and
|
|
129
130
|
the **frontier baseline** (sorted cheapest-capable first), and writes the
|
|
130
131
|
project configuration and generated agent/command artifacts:
|
|
131
132
|
|
|
@@ -153,6 +154,13 @@ or unverified models are not selectable, and an empty active list does not
|
|
|
153
154
|
allow a guessed model ID. openteam does not load or unload models to make a
|
|
154
155
|
selection work. See the [policy and server-side limits](docs/adr/lemonade-active-models.md).
|
|
155
156
|
|
|
157
|
+
**llama-swap also requires active models.** The initial integration accepts
|
|
158
|
+
canonical local model IDs with verified `ready` state and no active routing
|
|
159
|
+
profile, on an unauthenticated, network-restricted server. Declared context
|
|
160
|
+
and output ceilings feed setup's opencode compaction limits; missing tool
|
|
161
|
+
support is not guessed. See the [llama-swap guide](docs/guide/llama-swap.md)
|
|
162
|
+
for configuration and the non-atomic server-side boundary.
|
|
163
|
+
|
|
156
164
|
The wizard:
|
|
157
165
|
|
|
158
166
|
1. Probes local runtimes, then first asks which ones to enable. Choosing
|
|
@@ -244,7 +252,7 @@ To install and try openteam on another machine that already has [opencode](https
|
|
|
244
252
|
# The one-off option already ran setup in the previous step.
|
|
245
253
|
```
|
|
246
254
|
|
|
247
|
-
The wizard detects Ollama / LM Studio / Foundry Local, lets you pick the local models (local or on another machine on the LAN) or **none** to run frontier-only, and the frontier baseline, then writes the configuration.
|
|
255
|
+
The wizard detects Ollama / LM Studio / Lemonade Server / llama-swap / Foundry Local, lets you pick the local models (local or on another machine on the LAN) or **none** to run frontier-only, and the frontier baseline, then writes the configuration.
|
|
248
256
|
|
|
249
257
|
3. **Authenticate the frontier provider** you chose:
|
|
250
258
|
|
|
@@ -355,9 +363,9 @@ configured" and should `cd` to the project root first.
|
|
|
355
363
|
| `router.localDefault` | `ModelRef \| null` | `null` | Primary local model. Not set by default — no local model is routed until you configure one via `openteam setup` or by hand. |
|
|
356
364
|
| `local.runtimes` | `LocalRuntime[]` | `[]` | Local runtimes to probe. Empty by default — no runtime is configured until you run `openteam setup` or add an entry by hand. |
|
|
357
365
|
| `local.runtimes[].id` | string | required | Instance identity, unique within the array. Free-form (`lmstudio-a`, `lemonade-lan`) so two machines of the same kind are distinct; when `kind` is omitted it must itself be a runtime kind (back-compat). |
|
|
358
|
-
| `local.runtimes[].kind` | `"ollama" \| "lmstudio" \| "foundry-local" \| "lemonade"` optional | migrates from `id` | Runtime kind selecting the adapter. Optional: when absent, `id` is treated as the kind, so pre-existing configs keep working unchanged. |
|
|
366
|
+
| `local.runtimes[].kind` | `"ollama" \| "lmstudio" \| "foundry-local" \| "lemonade" \| "llama-swap"` optional | migrates from `id` | Runtime kind selecting the adapter. Optional: when absent, `id` is treated as the kind, so pre-existing configs keep working unchanged. |
|
|
359
367
|
| `local.runtimes[].enabled` | `boolean` | `true` | Enable or disable that runtime. |
|
|
360
|
-
| `local.runtimes[].baseURL` | optional URL | per runtime/config | OpenAI-compatible endpoint (`/v1` for Ollama/LM Studio, `/api/v1` for Lemonade); Foundry Local may omit it when using discovery. |
|
|
368
|
+
| `local.runtimes[].baseURL` | optional URL | per runtime/config | OpenAI-compatible endpoint (`/v1` for Ollama/LM Studio/llama-swap, `/api/v1` for Lemonade); Foundry Local may omit it when using discovery. |
|
|
361
369
|
| `local.runtimes[].discovery` | `"cli" \| "sdk" \| "manual"` optional | none per item | Foundry Local discovery; the registry uses CLI when configured and not `manual`. |
|
|
362
370
|
| `local.runtimes[].defaultModel` | `ModelRef` | required | Default model for that runtime. |
|
|
363
371
|
| `local.runtimes[].maxConcurrency` | positive integer, optional | `4` | Concurrent-generation cap for this instance (its real slot count). Applied per instance. |
|
|
@@ -873,6 +881,20 @@ foundry service status
|
|
|
873
881
|
|
|
874
882
|
openteam extracts the port from the CLI output and normalizes the endpoint to `http://localhost:<PORT>/v1`.
|
|
875
883
|
|
|
884
|
+
### llama-swap
|
|
885
|
+
|
|
886
|
+
Prepare the intended model with llama-swap before setup. These calls only read
|
|
887
|
+
the catalog, readiness and profile state:
|
|
888
|
+
|
|
889
|
+
```powershell
|
|
890
|
+
Invoke-RestMethod -Uri "http://localhost:8080/v1/models" -Method Get
|
|
891
|
+
Invoke-RestMethod -Uri "http://localhost:8080/running" -Method Get
|
|
892
|
+
Invoke-RestMethod -Uri "http://localhost:8080/api/profiles" -Method Get
|
|
893
|
+
```
|
|
894
|
+
|
|
895
|
+
See the [llama-swap guide](docs/guide/llama-swap.md) for ready-only selection,
|
|
896
|
+
declared context/output limits and supported transport boundaries.
|
|
897
|
+
|
|
876
898
|
### Telemetry
|
|
877
899
|
|
|
878
900
|
openteam writes a hash-only `CostRecord` JSONL log (never raw prompts). Tail the most recent entries:
|
|
@@ -961,7 +983,7 @@ See [docs/compatibility.md](docs/compatibility.md). Verified summary as of `2026
|
|
|
961
983
|
|
|
962
984
|
| Surface | Version / contract |
|
|
963
985
|
| --- | --- |
|
|
964
|
-
| openteam | `0.
|
|
986
|
+
| openteam | `0.26.0`; current package version |
|
|
965
987
|
| `@opencode-ai/plugin` | `1.18.19` |
|
|
966
988
|
| `@opencode-ai/sdk` | `1.18.19` |
|
|
967
989
|
| Routing hook | `chat.message`; not `chat.params` for model changes |
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
"idempotent": true
|
|
35
35
|
},
|
|
36
36
|
"performance": {
|
|
37
|
-
"p95Millis": 0.
|
|
37
|
+
"p95Millis": 0.3665430000000356,
|
|
38
38
|
"budgetMillis": 50,
|
|
39
39
|
"samples": 100
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
"verdict": "pass",
|
|
43
43
|
"failedGates": [],
|
|
44
|
-
"digest": "
|
|
44
|
+
"digest": "b10ff6b124af850edf12082169fc980f87190f4c06c950e7324a95f32447aa8a"
|
|
45
45
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"rawFindings": 0
|
|
21
21
|
},
|
|
22
22
|
"overhead": {
|
|
23
|
-
"p95Millis": 0.
|
|
23
|
+
"p95Millis": 0.277688999999981,
|
|
24
24
|
"budgetMillis": 25,
|
|
25
25
|
"samples": 1000
|
|
26
26
|
},
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
},
|
|
36
36
|
"verdict": "pass",
|
|
37
37
|
"failedGates": [],
|
|
38
|
-
"digest": "
|
|
38
|
+
"digest": "0a32756f8be276eafc5ed1577804aa71f52bdae689a425c2d6566e8d45d0d0f1"
|
|
39
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupAdapters.d.ts","sourceRoot":"","sources":["../../src/cli/setupAdapters.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACV,eAAe,EAEf,QAAQ,EAET,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,QAAQ,EAEd,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"setupAdapters.d.ts","sourceRoot":"","sources":["../../src/cli/setupAdapters.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EACV,eAAe,EAEf,QAAQ,EAET,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,KAAK,QAAQ,EAEd,MAAM,wBAAwB,CAAC;AAKhC,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,gBAAgB,CAAC;AAyB7E,qDAAqD;AACrD,eAAO,MAAM,aAAa,EAAE,QA8E3B,CAAC;AAmCF;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,OAAO,CACzD,sBAAsB,EAAE,CACzB,CAcA;AACD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAiB7E;AAqBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,GACb,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAmBvE"}
|