@jmanuelcorral/openteam 0.1.4 → 0.1.6

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 CHANGED
@@ -9,6 +9,8 @@
9
9
  - [Requisitos](#requisitos)
10
10
  - [Instalación](#instalación)
11
11
  - [Quickstart: `openteam init`](#quickstart-openteam-init)
12
+ - [Probar en otra máquina](#probar-en-otra-máquina)
13
+ - [Actualizar openteam](#actualizar-openteam)
12
14
  - [Configuración](#configuración)
13
15
  - [Uso](#uso)
14
16
  - [Ejemplos en Windows](#ejemplos-en-windows)
@@ -178,10 +180,11 @@ Durante desarrollo puedes cargar un plugin local desde `.opencode/plugins/opente
178
180
 
179
181
  ## Quickstart: `openteam init`
180
182
 
181
- La forma más rápida de dejar un repositorio listo para opencode + openteam es el comando interactivo `openteam init`. Detecta los runtimes locales instalados (Ollama, LM Studio, Foundry Local), te deja elegir los modelos locales y el modelo **frontier baseline** (ordenados de más barato-capaz a más caro), y genera dos ficheros:
183
+ La forma más rápida de dejar un repositorio listo para opencode + openteam es el comando interactivo `openteam init`. Detecta los runtimes locales instalados (Ollama, LM Studio, Foundry Local), te deja elegir los modelos locales y el modelo **frontier baseline** (ordenados de más barato-capaz a más caro), y genera tres ficheros:
182
184
 
183
185
  - `opencode.json` en la raíz: declara el plugin `@jmanuelcorral/openteam`, los `provider` locales OpenAI-compatible, el `model` frontier y el `small_model` local.
184
186
  - `.opencode/openteam.json`: la configuración runtime validada de openteam (baseline, routing, runtimes locales y privacidad).
187
+ - `.opencode/agent/openteam.md`: el **agente primario `openteam`** (estilo Squad), visible en el Tab-switcher.
185
188
 
186
189
  ```powershell
187
190
  # Con el paquete instalado como dependencia del proyecto
@@ -200,6 +203,74 @@ El asistente:
200
203
 
201
204
  Tras `init`, autentica el provider frontier (`opencode auth login`), arranca tu runtime local si no estaba activo y abre opencode en el repositorio: openteam enruta local-first automáticamente. Puedes reajustar el baseline después con `openteam baseline set <provider/model>` o `openteam baseline auto`.
202
205
 
206
+ ### El agente `openteam` (estilo Squad)
207
+
208
+ `openteam init` genera un único **agente primario** llamado `openteam` (`.opencode/agent/openteam.md`). Pulsa **Tab** en opencode para seleccionarlo: así sabes explícitamente que estás en modo openteam, mientras el plugin sigue optimizando el modelo por debajo.
209
+
210
+ Ese orquestador funciona al estilo [Squad](https://bradygaster.github.io/squad/): **no trae subagentes precreados**. A partir de tu primer prompt analiza el objetivo y el repositorio, diseña el equipo mínimo de especialistas y **crea cada subagente a demanda** (escribiendo `.opencode/agent/<rol>.md` con `mode: subagent`), reutilizando los existentes antes de crear nuevos. Los roles mecánicos/bulk se dejan enrutar a modelos locales y solo se escala a frontier para arquitectura, seguridad o debugging ambiguo.
211
+
212
+ ## Probar en otra máquina
213
+
214
+ Para instalar y probar openteam en otro equipo que ya tenga [opencode](https://opencode.ai) y [Bun](https://bun.sh):
215
+
216
+ 1. **Instala el paquete.** Global o como dependencia de desarrollo del repo que quieras usar:
217
+
218
+ ```powershell
219
+ # Opción global (deja el comando `openteam` en el PATH)
220
+ npm install -g @jmanuelcorral/openteam
221
+
222
+ # …o como dependencia de desarrollo del proyecto
223
+ bun add -d @jmanuelcorral/openteam # (o: npm install -D @jmanuelcorral/openteam)
224
+ ```
225
+
226
+ 2. **Inicializa el repositorio** donde vayas a trabajar. Genera `opencode.json`, `.opencode/openteam.json` y `.opencode/agent/openteam.md`:
227
+
228
+ ```powershell
229
+ cd C:\ruta\a\tu\repo
230
+ openteam init # global
231
+ # …o, si lo instalaste como dependencia del proyecto:
232
+ bunx openteam init
233
+ ```
234
+
235
+ El asistente detecta Ollama / LM Studio / Foundry Local, te deja elegir los modelos locales y el frontier baseline, y escribe la configuración.
236
+
237
+ 3. **Autentica el provider frontier** que hayas elegido:
238
+
239
+ ```powershell
240
+ opencode auth login
241
+ ```
242
+
243
+ 4. **Arranca tu runtime local** si no estaba activo (p. ej. `ollama serve`, o abre LM Studio / Foundry Local).
244
+
245
+ 5. **Abre opencode en el repo**, pulsa **Tab** y elige el agente `openteam`. Dale el primer prompt: creará el equipo de subagentes a demanda y enrutará local-first automáticamente.
246
+
247
+ Comprueba el estado con `openteam doctor` (runtimes + config) y el ahorro con `openteam report`.
248
+
249
+ ## Actualizar openteam
250
+
251
+ openteam se publica en npm de forma continua; cada push a `master` publica un nuevo patch. Para traer la última versión:
252
+
253
+ ```powershell
254
+ # Instalación global
255
+ npm install -g @jmanuelcorral/openteam@latest
256
+
257
+ # Dependencia de desarrollo del proyecto
258
+ bun add -d @jmanuelcorral/openteam@latest # (o: npm install -D @jmanuelcorral/openteam@latest)
259
+ ```
260
+
261
+ Comprobar versiones:
262
+
263
+ ```powershell
264
+ npm view @jmanuelcorral/openteam version # última publicada en npm
265
+ npm ls -g @jmanuelcorral/openteam # instalada globalmente (o `npm ls …` en el repo)
266
+ ```
267
+
268
+ Notas al actualizar:
269
+
270
+ - **No necesitas volver a ejecutar `openteam init`** para actualizar el plugin: opencode resuelve el paquete `@jmanuelcorral/openteam` declarado en `opencode.json` a la versión instalada. Reinicia opencode para que recargue el plugin.
271
+ - Vuelve a ejecutar `openteam init` **solo** si quieres regenerar la configuración (cambiar runtimes, modelos o baseline). Pedirá confirmación antes de sobrescribir `opencode.json`, `.opencode/openteam.json` o `.opencode/agent/openteam.md`; **no toca los subagentes** que el orquestador haya creado a demanda.
272
+ - Ajustes puntuales sin reinit: `openteam baseline set <provider/model>` o `openteam baseline auto`.
273
+
203
274
  ## Configuración
204
275
 
205
276
  La configuración runtime canónica vive en `.opencode/openteam.json`; este repositorio incluye `.opencode/openteam.example.json` como ejemplo completo. La forma validada por Zod es la de `src/config/schema.ts`. `telemetry` es una opción del plugin leída por `src/index.ts`, no parte del objeto `OpenTeamConfig` persistido.
package/dist/cli.js CHANGED
@@ -905,6 +905,77 @@ async function writeOpenTeamConfigFile(config, path = DEFAULT_CONFIG_PATH, deps
905
905
  await writeFileFn(path, serializeOpenTeamConfig(config), "utf8");
906
906
  }
907
907
 
908
+ // src/commands/orchestratorAgent.ts
909
+ var ORCHESTRATOR_AGENT_PATH = ".opencode/agent/openteam.md";
910
+ function buildOrchestratorAgent(frontier) {
911
+ const model = `${frontier.providerID}/${frontier.modelID}`;
912
+ const frontmatter = [
913
+ "---",
914
+ 'description: "Orquestador openteam estilo Squad: analiza el objetivo, diseña y crea el equipo de subagentes a demanda, y coordina el trabajo con routing local-first."',
915
+ "mode: primary",
916
+ `model: ${model}`,
917
+ "temperature: 0.2",
918
+ "permission:",
919
+ " read: allow",
920
+ " glob: allow",
921
+ " grep: allow",
922
+ " list: allow",
923
+ " edit: allow",
924
+ " bash: ask",
925
+ " task: allow",
926
+ " webfetch: allow",
927
+ " websearch: ask",
928
+ " external_directory: deny",
929
+ "---"
930
+ ].join(`
931
+ `);
932
+ const body = [
933
+ "Eres el orquestador de **openteam**, al estilo Squad. Eres el único agente",
934
+ "primario: no existe un equipo precreado. Tú **construyes el equipo de",
935
+ "subagentes a demanda** según el objetivo del usuario y del repositorio.",
936
+ "",
937
+ "## Primer arranque (primer prompt de la sesión)",
938
+ "",
939
+ "1. Analiza el objetivo y explora el repositorio (`read`/`glob`/`grep`) para",
940
+ " entender stack, dominio y alcance real.",
941
+ "2. Diseña el **equipo mínimo** necesario: define solo los roles que el",
942
+ " trabajo requiera (p. ej. `architect`, `backend`, `frontend`, `reviewer`,",
943
+ " `tester`, `docs`). No inventes roles que no vayas a usar.",
944
+ "3. Crea cada subagente **a demanda** escribiendo `.opencode/agent/<rol>.md`:",
945
+ " - Frontmatter: `description` (obligatorio), `mode: subagent`,",
946
+ " `temperature`, `permission` con lo mínimo necesario, y `model`",
947
+ " **opcional**.",
948
+ " - Deja `model` sin fijar para que herede el default y openteam lo enrute",
949
+ " local-first, o fija un modelo local para roles mecánicos/bulk. Reserva",
950
+ " frontier solo para arquitectura, seguridad o debugging ambiguo:",
951
+ " openteam ya enruta cheapest-capable automáticamente.",
952
+ " - Un prompt de rol enfocado y accionable.",
953
+ "",
954
+ "## Operación",
955
+ "",
956
+ "- Delega el trabajo con la herramienta `task` al subagente adecuado; tú te",
957
+ " mantienes como coordinador y no implementas lo que puede hacer un subagente.",
958
+ "- Crea subagentes **justo cuando el trabajo lo pide**, nunca “por si acaso”.",
959
+ " Revisa `.opencode/agent/` y reutiliza los subagentes existentes antes de",
960
+ " crear uno nuevo.",
961
+ "- Respeta el routing y la privacidad de openteam: no fuerces modelos premium",
962
+ " y no envíes datos sensibles a frontier si la política fuerza local.",
963
+ "- Resume al usuario qué equipo has creado y por qué, y mantén el roster ligero.",
964
+ "",
965
+ "## Límites",
966
+ "",
967
+ "- Un único primario (tú); todo lo demás son subagentes creados a demanda.",
968
+ "- No borres ni sobrescribas subagentes creados previamente sin confirmarlo.",
969
+ "- Los subagentes nuevos quedan disponibles para `@mención` y para la",
970
+ " herramienta `task` una vez opencode recarga los agentes del proyecto.",
971
+ ""
972
+ ].join(`
973
+ `);
974
+ return `${frontmatter}
975
+
976
+ ${body}`;
977
+ }
978
+
908
979
  // src/commands/init.ts
909
980
  var OPENTEAM_PLUGIN_SPEC = "@jmanuelcorral/openteam";
910
981
  var OPENCODE_CONFIG_PATH = "opencode.json";
@@ -1159,8 +1230,10 @@ async function runInit(deps) {
1159
1230
  };
1160
1231
  const openTeamConfig = buildOpenTeamConfig(answers);
1161
1232
  const opencodeConfig = buildOpencodeConfig(answers);
1233
+ const orchestratorAgent = buildOrchestratorAgent(frontier);
1162
1234
  const openTeamPath = join(deps.cwd, DEFAULT_CONFIG_PATH);
1163
1235
  const opencodePath = join(deps.cwd, OPENCODE_CONFIG_PATH);
1236
+ const agentPath = join(deps.cwd, ORCHESTRATOR_AGENT_PATH);
1164
1237
  const existing = [];
1165
1238
  if (await deps.fileExists(openTeamPath)) {
1166
1239
  existing.push(DEFAULT_CONFIG_PATH);
@@ -1168,6 +1241,9 @@ async function runInit(deps) {
1168
1241
  if (await deps.fileExists(opencodePath)) {
1169
1242
  existing.push(OPENCODE_CONFIG_PATH);
1170
1243
  }
1244
+ if (await deps.fileExists(agentPath)) {
1245
+ existing.push(ORCHESTRATOR_AGENT_PATH);
1246
+ }
1171
1247
  if (existing.length > 0) {
1172
1248
  const overwrite = await prompt.confirm({
1173
1249
  message: `Ya existe ${existing.join(" y ")}. ¿Sobrescribir?`,
@@ -1180,21 +1256,23 @@ async function runInit(deps) {
1180
1256
  }
1181
1257
  await deps.writeFile(openTeamPath, serializeOpenTeamConfig(openTeamConfig));
1182
1258
  await deps.writeFile(opencodePath, serializeOpencodeConfig(opencodeConfig));
1259
+ await deps.writeFile(agentPath, orchestratorAgent);
1183
1260
  const enabledSummary = runtimes.filter((runtime) => runtime.enabled).map((runtime) => `${runtime.id} (${runtime.defaultModelID})`).join(", ");
1184
1261
  prompt.note([
1185
1262
  `Baseline frontier: ${frontier.providerID}/${frontier.modelID}`,
1186
1263
  `Runtimes locales: ${enabledSummary || "ninguno habilitado"}`,
1187
- `Escrito: ${OPENCODE_CONFIG_PATH}, ${DEFAULT_CONFIG_PATH}`,
1264
+ `Escrito: ${OPENCODE_CONFIG_PATH}, ${DEFAULT_CONFIG_PATH}, ${ORCHESTRATOR_AGENT_PATH}`,
1188
1265
  "",
1189
1266
  "Siguientes pasos:",
1190
1267
  ` 1. Autentica el provider frontier: opencode auth login`,
1191
- reachableIds.length === 0 ? " 2. Arranca tu runtime local (Ollama/LM Studio/Foundry) antes de usarlo" : " 2. Abre opencode en este repo; openteam enruta local-first automáticamente"
1268
+ reachableIds.length === 0 ? " 2. Arranca tu runtime local (Ollama/LM Studio/Foundry) antes de usarlo" : " 2. Abre opencode en este repo; openteam enruta local-first automáticamente",
1269
+ " 3. Pulsa Tab y elige el agente 'openteam': creará el equipo a demanda"
1192
1270
  ].join(`
1193
1271
  `), "openteam configurado");
1194
- prompt.outro("Listo. Abre opencode para empezar.");
1272
+ prompt.outro("Listo. Abre opencode y selecciona el agente 'openteam'.");
1195
1273
  return {
1196
1274
  exitCode: 0,
1197
- stdout: `openteam init completado: ${OPENCODE_CONFIG_PATH}, ${DEFAULT_CONFIG_PATH}`
1275
+ stdout: `openteam init completado: ${OPENCODE_CONFIG_PATH}, ${DEFAULT_CONFIG_PATH}, ${ORCHESTRATOR_AGENT_PATH}`
1198
1276
  };
1199
1277
  } catch (error) {
1200
1278
  const message = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { FrontierChoice } from "./init";
2
+ /**
3
+ * Ruta relativa (al cwd) del agente primario que `openteam init` genera. El
4
+ * nombre del fichero (`openteam`) es el nombre del agente en opencode.
5
+ */
6
+ export declare const ORCHESTRATOR_AGENT_PATH = ".opencode/agent/openteam.md";
7
+ /**
8
+ * Construye el Markdown del agente primario `openteam` (estilo Squad): un
9
+ * orquestador que aparece en el Tab-switcher y que crea el equipo de
10
+ * subagentes a demanda. Pure: no I/O.
11
+ *
12
+ * `frontier` fija el `model` del orquestador (baseline cheapest-capable), un
13
+ * `provider/model` real y resoluble; el plugin de openteam sigue enrutando por
14
+ * mensaje, así que los subagentes que cree pueden heredar el default y ser
15
+ * enrutados local-first.
16
+ */
17
+ export declare function buildOrchestratorAgent(frontier: FrontierChoice): string;
18
+ //# sourceMappingURL=orchestratorAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestratorAgent.d.ts","sourceRoot":"","sources":["../../src/commands/orchestratorAgent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AAErE;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAkEvE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jmanuelcorral/openteam",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Plugin opencode de routing coste-consciente local-first con orquestación Squad.",
5
5
  "license": "MIT",
6
6
  "author": "Jose Manuel Corral",