@jmanuelcorral/openteam 0.27.1 → 0.29.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.
Files changed (77) hide show
  1. package/.opencode/openteam.example.json +7 -1
  2. package/README.es.md +37 -1
  3. package/README.md +42 -1
  4. package/dist/certificates/graph-release-certificate.json +2 -2
  5. package/dist/certificates/graph-shadow-certificate.json +2 -2
  6. package/dist/certificates/opencode-2.0.5/graph-release-certificate.json +2 -2
  7. package/dist/certificates/opencode-2.0.5/graph-shadow-certificate.json +2 -2
  8. package/dist/cli.js +5820 -3734
  9. package/dist/config/errors.d.ts.map +1 -1
  10. package/dist/config/schema.d.ts +18 -0
  11. package/dist/config/schema.d.ts.map +1 -1
  12. package/dist/console/agentView.d.ts +13 -0
  13. package/dist/console/agentView.d.ts.map +1 -0
  14. package/dist/console/assets.d.ts.map +1 -1
  15. package/dist/console/inspector.d.ts.map +1 -1
  16. package/dist/console/refresh.d.ts +1 -1
  17. package/dist/console/refresh.d.ts.map +1 -1
  18. package/dist/console/render.d.ts +1 -0
  19. package/dist/console/render.d.ts.map +1 -1
  20. package/dist/graph/schema.d.ts +6 -0
  21. package/dist/graph/schema.d.ts.map +1 -1
  22. package/dist/graph/validate.d.ts +4 -1
  23. package/dist/graph/validate.d.ts.map +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +7002 -5534
  26. package/dist/lifecycle/contracts.d.ts +2 -2
  27. package/dist/lifecycle/contracts.d.ts.map +1 -1
  28. package/dist/lifecycle/schema.d.ts +6 -0
  29. package/dist/lifecycle/schema.d.ts.map +1 -1
  30. package/dist/local/concurrency.d.ts +1 -1
  31. package/dist/local/concurrency.d.ts.map +1 -1
  32. package/dist/messages/agentView.d.ts +79 -0
  33. package/dist/messages/agentView.d.ts.map +1 -0
  34. package/dist/messages/consoleDetail.d.ts +9 -0
  35. package/dist/messages/consoleDetail.d.ts.map +1 -1
  36. package/dist/messages/orchestration.d.ts +26 -0
  37. package/dist/messages/orchestration.d.ts.map +1 -1
  38. package/dist/messages/planExecution.d.ts +29 -0
  39. package/dist/messages/planExecution.d.ts.map +1 -0
  40. package/dist/opencodeArtifacts/orchestratorAgent.d.ts.map +1 -1
  41. package/dist/opencodeArtifacts/slashCommand.d.ts.map +1 -1
  42. package/dist/orchestrator/coordinator.d.ts +14 -1
  43. package/dist/orchestrator/coordinator.d.ts.map +1 -1
  44. package/dist/orchestrator/outputContract.d.ts +4 -0
  45. package/dist/orchestrator/outputContract.d.ts.map +1 -1
  46. package/dist/orchestrator/planExecution.d.ts +112 -0
  47. package/dist/orchestrator/planExecution.d.ts.map +1 -0
  48. package/dist/orchestrator/reportDelivery.d.ts +13 -0
  49. package/dist/orchestrator/reportDelivery.d.ts.map +1 -0
  50. package/dist/orchestrator/subsessions.d.ts +5 -0
  51. package/dist/orchestrator/subsessions.d.ts.map +1 -1
  52. package/dist/orchestrator/taskEffort.d.ts +39 -0
  53. package/dist/orchestrator/taskEffort.d.ts.map +1 -0
  54. package/dist/plugin/capture.d.ts +3 -0
  55. package/dist/plugin/capture.d.ts.map +1 -1
  56. package/dist/plugin/executeTool.d.ts +12 -0
  57. package/dist/plugin/executeTool.d.ts.map +1 -0
  58. package/dist/plugin/nativeHost.d.ts.map +1 -1
  59. package/dist/plugin/nativeHostContext.d.ts +1 -1
  60. package/dist/plugin/nativeHostContext.d.ts.map +1 -1
  61. package/dist/plugin/nativeSessions.d.ts +9 -0
  62. package/dist/plugin/nativeSessions.d.ts.map +1 -1
  63. package/dist/plugin/orchestrateTool.d.ts +14 -1
  64. package/dist/plugin/orchestrateTool.d.ts.map +1 -1
  65. package/dist/plugin/reportTool.d.ts +4 -0
  66. package/dist/plugin/reportTool.d.ts.map +1 -0
  67. package/dist/plugin/runtimeContext.d.ts +14 -0
  68. package/dist/plugin/runtimeContext.d.ts.map +1 -1
  69. package/dist/plugin/toolcalls.d.ts +9 -1
  70. package/dist/plugin/toolcalls.d.ts.map +1 -1
  71. package/dist/storage/scopedArtifacts.d.ts +7 -0
  72. package/dist/storage/scopedArtifacts.d.ts.map +1 -0
  73. package/dist/telemetry/aggregate.d.ts +7 -0
  74. package/dist/telemetry/aggregate.d.ts.map +1 -1
  75. package/dist/telemetry/events.d.ts +68 -2
  76. package/dist/telemetry/events.d.ts.map +1 -1
  77. package/package.json +1 -1
@@ -92,6 +92,12 @@
92
92
  }
93
93
  },
94
94
  "maxRetries": 2,
95
- "maxModelsPerNode": 2
95
+ "maxModelsPerNode": 2,
96
+ "taskBudget": {
97
+ "maxBatches": 8,
98
+ "maxAttempts": 32,
99
+ "maxDurationMs": 7200000,
100
+ "maxDepth": 3
101
+ }
96
102
  }
97
103
  }
package/README.es.md CHANGED
@@ -221,6 +221,24 @@ Antes de delegar, el orquestador **planifica dependencias y paraleliza**: descom
221
221
 
222
222
  En la **lista de tareas** (`todowrite`, la que ves en el todo general de opencode) cada entrada lleva **visible el responsable**. opencode no tiene un campo de "agente" en sus todos (solo `content`/`status`/`priority`, y la lista es por sesión), así que el orquestador usa una convención en el texto: prefija cada tarea con el nombre del casting, p. ej. `[@Basher] Implementar el router` o `[@openteam] Sintetizar resultados`. Así, de un vistazo, sabes quién es responsable de cada tarea.
223
223
 
224
+ ### Ejecutar el plan completo
225
+
226
+ Usa `/execute` para el plan acordado en la conversación, o
227
+ `/execute docs/mvp-plan.md` para un plan del proyecto. El comando prepara un
228
+ manifiesto local y entrega todas las oleadas a un supervisor en código:
229
+ reintentos acotados, relevos entre modelos autorizados, aceptación independiente
230
+ y correcciones de las tareas rechazadas. No necesita otro «continúa» después
231
+ de cada lote correcto.
232
+
233
+ Se mantienen los límites configurados: no es ejecución ilimitada.
234
+ `/execute status <planID>` muestra el progreso y
235
+ `/execute resume <planID>` reanuda un plan detenido de forma segura en un nuevo
236
+ turno del usuario. No se duplican automáticamente ejecuciones que quedaron
237
+ en curso tras una caída. Consulta la
238
+ [guía de ejecución y reanudación](docs/guide/commands.md#execute-the-complete-plan-execute)
239
+ en inglés. Las instalaciones existentes necesitan el plugin actualizado,
240
+ el comando generado por setup y una recarga de opencode.
241
+
224
242
  ## Probar en otra máquina
225
243
 
226
244
  Para instalar y probar openteam en otro equipo que ya tenga [opencode](https://opencode.ai) y [Bun](https://bun.sh):
@@ -373,6 +391,10 @@ ejecutas desde un subdirectorio verás "provider not configured" y debes hacer
373
391
  | `orchestrator` | objeto opcional | ausente | Contiene políticas de primary/roles y límites de pasadas. |
374
392
  | `orchestrator.maxRetries` | entero no negativo opcional | efectivo `2` | Límite superior de pasadas openteam extra por modelo autorizado; `2` efectivo permite hasta tres pasadas. El default se aplica en runtime, no se materializa en el schema. |
375
393
  | `orchestrator.maxModelsPerNode` | entero positivo opcional | efectivo `2` | Total de candidatos por nodo: el seleccionado más como máximo un fallback por defecto. El default de runtime no se materializa; combinado con reintentos permite como máximo seis intentos. |
394
+ | `orchestrator.taskBudget.maxBatches` | entero `1..1000`, opcional | `8` | Lotes acumulados de una petición raíz, incluidos los anidados. |
395
+ | `orchestrator.taskBudget.maxAttempts` | entero `1..10000`, opcional | `32` | Intentos acumulados, incluidos reintentos y relevos de modelo. |
396
+ | `orchestrator.taskBudget.maxDurationMs` | entero `1000..86400000`, opcional | `7200000` | Plazo desde la petición raíz, con gracia adicional acotada para confirmar la parada. |
397
+ | `orchestrator.taskBudget.maxDepth` | entero `0..32`, opcional | `3` | Profundidad máxima de lotes anidados; la raíz es cero. |
376
398
  | `orchestrator.primary` | `ExecutionPolicy` parcial opcional | ausente | Política del coordinador primario; todos sus campos son opcionales. |
377
399
  | `orchestrator.roles` | `Record<string, AgentRoleProfile parcial>` raw | `{}` si existe `orchestrator` | Las entradas raw pueden ser parciales. Las cargadas quedan totalmente fusionadas y validadas: primero perfil integrado o, si no existe, sintetizado; después prevalece el override raw. |
378
400
  | `orchestrator.roles.<role>.opencodeAgent` | `string` no vacío opcional | role ID | Nombre del agente opencode al que se despacha ese rol. |
@@ -737,6 +759,20 @@ ejecuta dependientes. Consulta
737
759
 
738
760
  ### Console web multi-sesión (se lanza desde la CLI)
739
761
 
762
+ Los lotes relacionados y anidados comparten por defecto **8 lotes, 32 intentos,
763
+ 2 horas y profundidad 3** por petición raíz. `orchestrator.taskBudget` permite
764
+ ajustar los límites; reiniciar el plugin o emitir otra llamada no reinicia el
765
+ presupuesto. Una nueva petición raíz del usuario sí inicia otra tarea.
766
+ `openteam-submit-report` guarda únicamente el informe asignado al trabajador,
767
+ respetando los permisos. La reparación del informe continúa en su misma sesión
768
+ y consume los límites existentes.
769
+
770
+ Agent tree incorpora grafo de operaciones, cronología real, reproducción,
771
+ filtros, controles del lienzo e inspector con conversación visible. Conserva
772
+ los reintentos y fallos de lotes relacionados aunque el padre se recupere.
773
+ Las métricas ausentes o ceros sin verificar se muestran como
774
+ **Unavailable / partial**; no se inventan costes, velocidad ni ahorros.
775
+
740
776
  openteam expone una **Console web local** que **lanzas tú desde la CLI** con
741
777
  `openteam console`.
742
778
  Agrega **todas** las sesiones de opencode a la vez: puedes tener varias pestañas
@@ -1036,7 +1072,7 @@ Consulta [docs/es/compatibility.md](docs/es/compatibility.md). Resumen verificad
1036
1072
 
1037
1073
  | Superficie | Versión / contrato |
1038
1074
  | --- | --- |
1039
- | openteam | `0.27.1`; versión actual del paquete |
1075
+ | openteam | `0.29.0`; versión actual del paquete |
1040
1076
  | Host opencode | `1.18.19` legacy; soporte nativo estable `>=2.0.5 <3.0.0` |
1041
1077
  | `@opencode-ai/plugin` | `1.18.19` |
1042
1078
  | `@opencode-ai/sdk` | `1.18.19` |
package/README.md CHANGED
@@ -232,6 +232,23 @@ The team has a **themed identity**: the orchestrator picks (or asks for) a **uni
232
232
 
233
233
  Before delegating, the orchestrator **plans dependencies and parallelizes**: it splits the request into tasks and, since opencode runs all `task` calls emitted in a single turn in parallel (Vercel AI SDK), it launches independent tasks together and sequences only the dependent ones into waves. Work that collides on the same files is separated into distinct waves to avoid conflicts. In the **todo list** each entry shows the responsible agent via a name prefix, e.g. `[@Basher] Implement the router`.
234
234
 
235
+ ### Execute the whole plan
236
+
237
+ Use `/execute` for the agreed plan in the conversation, or
238
+ `/execute docs/mvp-plan.md` for a project plan. The command prepares a local
239
+ manifest and hands all dependency waves to a code-driven supervisor, including
240
+ bounded retries, authorized model handoffs, independent acceptance and
241
+ targeted corrections after a rejected review. It does not ask for another
242
+ "continue" after each successful batch.
243
+
244
+ The existing limits still apply; execution is not unlimited. Progress is
245
+ available through `/execute status <planID>`, and a safely stopped plan can
246
+ continue through `/execute resume <planID>` in a new user turn. Crashed
247
+ in-flight executions are not silently duplicated. See
248
+ [commands and stop/resume semantics](docs/guide/commands.md#execute-the-complete-plan-execute).
249
+ Existing installations need the updated plugin and setup-generated command,
250
+ followed by an opencode reload.
251
+
235
252
  ## Try it on another machine
236
253
 
237
254
  To install and try openteam on another machine that already has [opencode](https://opencode.ai) and [Bun](https://bun.sh):
@@ -379,6 +396,10 @@ configured" and should `cd` to the project root first.
379
396
  | `orchestrator` | object, optional | absent | Holds primary/role policy and pass limits. |
380
397
  | `orchestrator.maxRetries` | non-negative integer, optional | effective `2` | Upper bound of extra openteam passes per authorized model; effective `2` permits up to three passes. The default is applied at runtime, not materialized by the schema. |
381
398
  | `orchestrator.maxModelsPerNode` | positive integer, optional | effective `2` | Total model candidates used by one node: the selected model plus at most one fallback by default. The runtime default is not materialized; with retry defaults it permits at most six attempts. |
399
+ | `orchestrator.taskBudget.maxBatches` | integer `1..1000`, optional | `8` | Cumulative batches for one trusted root user turn, including nested workers. |
400
+ | `orchestrator.taskBudget.maxAttempts` | integer `1..10000`, optional | `32` | Cumulative admitted attempts, including retries and model handoffs. |
401
+ | `orchestrator.taskBudget.maxDurationMs` | integer `1000..86400000`, optional | `7200000` | Task deadline from the root user turn; bounds queueing, creation and prompting, with separate bounded stop-confirmation grace. |
402
+ | `orchestrator.taskBudget.maxDepth` | integer `0..32`, optional | `3` | Maximum nested batch depth; root is depth zero. |
382
403
  | `orchestrator.primary` | partial `ExecutionPolicy`, optional | absent | Policy for the primary coordinator. Every field is optional. |
383
404
  | `orchestrator.roles` | raw `Record<string, partial AgentRoleProfile>` | `{}` when `orchestrator` exists | Raw entries may be partial. Loaded entries are fully merged and validated: built-in profile first, otherwise a synthesized profile, then the raw override. |
384
405
  | `orchestrator.roles.<role>.opencodeAgent` | non-empty string, optional | role ID | opencode agent name to dispatch for that role. |
@@ -710,6 +731,21 @@ retries.
710
731
  The batch, objective, report path, and durable work state are preserved. An
711
732
  exact pin without `fallbacks` authorizes no second model.
712
733
 
734
+ Related and nested batches also share a persisted task allowance: by default
735
+ **8 batches, 32 attempts, 2 hours and nesting depth 3**. Configure the optional
736
+ `orchestrator.taskBudget` block and restart opencode to change future-task
737
+ limits. Another model-authored call or plugin reload cannot reset the task.
738
+ A new root user turn starts a new task; old workers keep their old allowance.
739
+ Exhaustion is explicit, not a successful completion.
740
+
741
+ Workers prefer **`openteam-submit-report`** with `status` and bounded,
742
+ substantive `findings`. The coordinator assigns its only writable report path
743
+ and preserves operator permission checks. Same-model report repair continues
744
+ in the same worker session without another full implementation restart.
745
+ Confirmed length-ended invalid native tool input requests smaller fresh calls
746
+ within existing limits; malformed JSON is never repaired and executed.
747
+ See the [reliability decision](docs/adr/task-effort-and-agent-view.md).
748
+
713
749
  Every pass, including a single pass with `maxRetries: 0`, needs a standalone
714
750
  `openteam-status: done` declaration **and** a durable report with at least 40
715
751
  substantive body characters after actual declaration lines are removed. The
@@ -740,6 +776,11 @@ agent decisions and meetings, orchestration progress, the team, and commits.
740
776
  These controls and estimates are finite/auditable, but they are not provider
741
777
  invoice accounting.
742
778
 
779
+ Agent tree includes the operation graph, real chronology/replay, filters,
780
+ canvas controls and a default-readable inspector. Missing/unverified usage is
781
+ shown as **unavailable / partial**, not confirmed zero. Unknown tool duration
782
+ stays unknown, and routing estimates are distinct from measured usage.
783
+
743
784
  **Conversations are visible by default.** Active Agent tree and Logs views
744
785
  automatically show operator prompts, visible agent responses and recorded tool
745
786
  interactions, with live updates. Reads use opencode's current session history,
@@ -985,7 +1026,7 @@ See [docs/compatibility.md](docs/compatibility.md). Verified summary as of `2026
985
1026
 
986
1027
  | Surface | Version / contract |
987
1028
  | --- | --- |
988
- | openteam | `0.27.1`; current package version |
1029
+ | openteam | `0.29.0`; current package version |
989
1030
  | opencode host | `1.18.19` legacy; stable `>=2.0.5 <3.0.0` native support |
990
1031
  | `@opencode-ai/plugin` | `1.18.19` |
991
1032
  | `@opencode-ai/sdk` | `1.18.19` |
@@ -34,12 +34,12 @@
34
34
  "idempotent": true
35
35
  },
36
36
  "performance": {
37
- "p95Millis": 0.4918609999999717,
37
+ "p95Millis": 0.47901600000000144,
38
38
  "budgetMillis": 50,
39
39
  "samples": 100
40
40
  }
41
41
  },
42
42
  "verdict": "pass",
43
43
  "failedGates": [],
44
- "digest": "d12378cf3d504f28b974feca85743b4d61e4676f59d4f6c3b4f355944a6e1201"
44
+ "digest": "44aeaf7a4b36e7fdb1964d3e55fe5629935f6272fa3c9740c1cb782057c623bf"
45
45
  }
@@ -20,7 +20,7 @@
20
20
  "rawFindings": 0
21
21
  },
22
22
  "overhead": {
23
- "p95Millis": 0.3307989999999563,
23
+ "p95Millis": 0.3261810000000196,
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": "899b01f2fc0899e86758f3520ca2defe597adf2098454fd3d16b60aa35771bb1"
38
+ "digest": "395156061660f3ce03b6c9e58f46263101a172c6774aebc7db88ed3b288abba4"
39
39
  }
@@ -34,12 +34,12 @@
34
34
  "idempotent": true
35
35
  },
36
36
  "performance": {
37
- "p95Millis": 0.524291000000062,
37
+ "p95Millis": 0.5075500000000375,
38
38
  "budgetMillis": 50,
39
39
  "samples": 100
40
40
  }
41
41
  },
42
42
  "verdict": "pass",
43
43
  "failedGates": [],
44
- "digest": "98d4f1ae7dede97362df6aff351a949cbf51035a24752a30a2dbcd111618bda8"
44
+ "digest": "c533e17eb7ff46851e38cf3be50a0ff66fca1950f8a2c9ceb934c8315b38c681"
45
45
  }
@@ -20,7 +20,7 @@
20
20
  "rawFindings": 0
21
21
  },
22
22
  "overhead": {
23
- "p95Millis": 0.1807179999999562,
23
+ "p95Millis": 0.19061699999997472,
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": "7c9d2de4205b671533270e0ec9725e8619440cbc3f481b51767e9b858a9332a4"
38
+ "digest": "ccd3e10ad399c38c2d59441b26210d1d9285c883f12c4206964ee834569d520e"
39
39
  }