@gtrabanco/pi-agentic-workflow 0.10.4 → 0.10.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
@@ -1,7 +1,5 @@
1
1
  # @gtrabanco/pi-agentic-workflow
2
2
 
3
- > 🇪🇸 [Versión en español](README.es.md)
4
-
5
3
  One install of the [agentic-workflow](https://github.com/gtrabanco/agentic-workflow)
6
4
  method into [Pi](https://github.com/badlogic/pi-mono): the canonical skills, a
7
5
  friendly slash command for each of them, and optional per-command model routing
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gtrabanco/pi-agentic-workflow",
3
- "version": "0.10.4",
3
+ "version": "0.10.6",
4
4
  "description": "Pi package: canonical agentic-workflow skills, friendly slash commands, and per-command model routing.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -32,7 +32,6 @@
32
32
  "skills",
33
33
  "package.json",
34
34
  "README.md",
35
- "README.es.md",
36
35
  "LICENSE"
37
36
  ],
38
37
  "engines": {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: design-feature
3
3
  user-invocable: true
4
- version: 3.3.0
4
+ version: 3.4.0
5
5
  argument-hint: <idea | NN-slug> [<instruction>]
6
6
  author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
7
7
  license: MIT
@@ -89,15 +89,18 @@ another `references/` path; in the DEFER column, bare names live in the same
89
89
  directory as the links.
90
90
 
91
91
  **Hard stop for an incomplete raw-idea interview:** LOAD exactly
92
- `references/INTERVIEW.md` and no other reference. Ask its one next
93
- question, return `NEEDS_INPUT`, and end the turn. `WRITE_AND_UPSERT.md` is
92
+ `references/INTERVIEW.md` and no other reference. Present its ONE compact
93
+ form-turn — the ≤ 6 fixed rubric slots plus the identity rows, each carrying a
94
+ recommended default the user can accept with one word — then return
95
+ `NEEDS_INPUT` and end the turn when slots remain unresolved; genuine ambiguity
96
+ gets at most **2 follow-up turns**, never a third ask. `WRITE_AND_UPSERT.md` is
94
97
  forbidden until every mandatory interview slot is resolved; that resource then
95
98
  owns closure rows and writing.
96
99
 
97
100
  | Condition now | LOAD now | DEFER / SKIP now |
98
101
  |---|---|---|
99
102
  | Bare existing slug, no instruction | [interview](references/INTERVIEW.md) through its interaction rule; report status and stop | `WRITE_AND_UPSERT.md`, `UPSERT_EXAMPLE.md`, `REPAIR.md`, `PORTABILITY.md` |
100
- | Brand-new idea with any mandatory interview slot unresolved | [interview](references/INTERVIEW.md) only; ask exactly its next question and stop | `WRITE_AND_UPSERT.md`, `UPSERT_EXAMPLE.md`, `REPAIR.md`, `PORTABILITY.md` |
103
+ | Brand-new idea with any mandatory interview slot unresolved | [interview](references/INTERVIEW.md) only; present exactly one form-turn (≤ 6 slots + identity, each with a default) and stop | `WRITE_AND_UPSERT.md`, `UPSERT_EXAMPLE.md`, `REPAIR.md`, `PORTABILITY.md` |
101
104
  | New idea after every mandatory interview slot resolves | [interview](references/INTERVIEW.md), then [closure, write, and upsert](references/WRITE_AND_UPSERT.md) | `UPSERT_EXAMPLE.md` unless shape is ambiguous; `REPAIR.md`, `PORTABILITY.md` |
102
105
  | Existing slug plus instruction | interview, then closure/write/upsert | [upsert example](references/UPSERT_EXAMPLE.md) unless shape is ambiguous; `REPAIR.md`, `PORTABILITY.md` |
103
106
  | Existing slug whose `progress.md` carries `SPEC-REVIEW-FAIL` or `NEEDS-DESIGN` | [interview](references/INTERVIEW.md), then [review repair](references/REPAIR.md) | `UPSERT_EXAMPLE.md`, `PORTABILITY.md` |
@@ -16,10 +16,13 @@
16
16
  3. **Raw-idea interview (folded in, only when starting from zero or the
17
17
  instruction leaves genuine gaps).** Fixed protocol — structural, not
18
18
  judgement:
19
- - **One question per turn, never batched.** Each question carries a
20
- recommended default the user can accept with one word. Ask nothing the
21
- docs or the instruction already answer.
22
- - **Vagueness rubric (fixed slots — the question list IS this list).**
19
+ - **One form-turn, then at most 2 follow-up turns.** The first interview
20
+ turn is ONE compact form covering every rubric slot below plus the
21
+ identity slots, each row carrying a recommended default the user accepts
22
+ with one word (or edits in place). Ask nothing the docs or the instruction
23
+ already answer. Genuine ambiguity the form cannot resolve gets at most
24
+ **2 follow-up turns** — never a third ask.
25
+ - **Vagueness rubric (fixed slots — the form rows ARE this list).**
23
26
  Probe each slot until it is filled or explicitly `n/a: <reason>`:
24
27
  1. **Affected users/roles** — who uses it; who must not.
25
28
  2. **Error & edge states** — what happens on failure / empty / invalid.
@@ -40,11 +43,13 @@
40
43
  - **Escalation (structural).** If, after the interview, **≥ 3 rubric slots
41
44
  remain empty** (neither filled nor `n/a`), do not guess: end the turn
42
45
  `NEEDS_INPUT`, listing the empty slots verbatim as the pending
43
- questions — the feature is not designable yet.
44
- - The identity questions ride the same one-per-turn protocol: problem &
45
- goal, business goals, size estimate (`XS/S/M/L` — XS/S stays SPEC-only,
46
- M/L gets the full artifact set), non-goals / future work, traceability
47
- (offer a tracking issue; if created, the eventual PR will `Closes #n`).
46
+ questions — the feature is not designable yet. Ambiguity that survives the
47
+ follow-up budget escalates the same way (`interview:ambiguity-cap`): the
48
+ 2-turn cap never licenses a third ask.
49
+ - The identity questions ride the same form-turn: problem & goal, business
50
+ goals, size estimate (`XS/S/M/L` — XS/S stays SPEC-only, M/L gets the
51
+ full artifact set), non-goals / future work, traceability (offer a
52
+ tracking issue; if created, the eventual PR will `Closes #n`).
48
53
  4. **Proportional research.** Capability closure (step 5) is cheap and comes
49
54
  first. Reach for external or domain research **only** when the feature
50
55
  touches a domain genuinely new to the project (a regulation, an unfamiliar
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: orchestration-envelope
3
3
  user-invocable: false
4
- version: 2.0.2
4
+ version: 2.1.0
5
5
  author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
6
6
  license: MIT
7
7
  description: >
@@ -20,6 +20,37 @@
20
20
 
21
21
  **Push policy supplement:** Box 4 covers the end-of-unit push. Some consumers (e.g. `execute-phase/references/PREFLIGHT.md`) define additional push rules for mid-phase commits when a PR is already open — those per-consumer supplements extend this contract and must be loaded alongside it by the consumer skill.
22
22
 
23
+ ## Machine-check profile (boxes 1–5)
24
+
25
+ Boxes 1–5 are mechanical. Demonstrate them by running the verifier — the
26
+ scaffold shim `template/.agentic-workflow/hooks/turn-contract.sh` (bash + git +
27
+ gh; presence-only box2 — the conditional phase-lint clause is engine-only, so
28
+ a shim receipt leaves that clause unverified, ED-52-3) or the producer-crate
29
+ engine `packages/agentic-workflow/bin/turn-contract.mjs` — and pasting its
30
+ one-line receipt beside the git/gh evidence. When the receipt is pasted,
31
+ reciting boxes 1–5 in prose is **not** required. Verifier unavailable (no bash,
32
+ or no shim/engine in the project)? Recite boxes 1–5 exactly as before — the
33
+ profile never weakens a box, and a turn with neither receipt nor recitation is
34
+ unverified. Boxes 6–11 are unchanged: they stay agent-attested judgment calls
35
+ no script may speak for. The closing `→ Next:` block may be echoed from the
36
+ `workflow-status` envelope instead of hand-authored: `next.recommended`
37
+ supplies the recommended line and `next.alternatives` the `·` sub-bullets,
38
+ preserving the fixed block shape.
39
+
40
+ ```text
41
+ turn-contract-receipt@1
42
+ ok-line: TURN-CONTRACT ok
43
+ fail-line: TURN-CONTRACT fail box<N>: <code>
44
+ codes: branch-default | not-a-repo | no-commits | acceptance-missing |
45
+ phase-lint-failed | pr-not-open | pr-head-mismatch |
46
+ pr-unreachable | dirty-tree | ahead-of-remote
47
+ exit: 0 ok | 1 contract fail | 2 usage error
48
+ order: boxes 1→5, first failure wins; within box5, dirty-tree precedes
49
+ ahead-of-remote
50
+ stdout: exactly one line; diagnostics never (git/gh evidence stays in the
51
+ agent's transcript)
52
+ ```
53
+
23
54
  ## Hand-off grammar (versioned — read by `scripts/normative-drift.test.mjs`)
24
55
 
25
56
  Box 9's closing hand-off and box 10's machine result are ordered here, so the
@@ -51,5 +82,6 @@ next | recommended
51
82
  next | alternatives
52
83
  next | tier
53
84
  next | suggested
85
+ next | continuation
54
86
  ```
55
87
 
@@ -1,5 +1,9 @@
1
1
  ## Persist and decide
2
2
 
3
+ When the unit's review receipt is missing or stale, the re-entry command is the
4
+ **emitted** `next.continuation` (`rendering` for display) — quote it, never author
5
+ exact command tokens.
6
+
3
7
  11. **Persist fix-now findings to the fold ledger.** The unit's **fix-now fold
4
8
  ledger** is `review-findings.md`, located beside its other docs
5
9
  (`docs/features/<NN>-<slug>/review-findings.md` for a feature,
@@ -6,7 +6,10 @@ Append the receipt to `docs/features/<NN>-<slug>/progress.md` (fix units:
6
6
  `docs/fix/<N>/progress.md`), then append every finding row to
7
7
  `planning-findings.md` (ledger contract: `pre-execution-review/references/LEDGERS.md`).
8
8
  Any later write to a reviewed plan artifact rotates `artifactRevisionId` and makes
9
- this receipt stale — that is the contract working, not a mistake.
9
+ this receipt stale — that is the contract working, not a mistake. When a missing or
10
+ stale receipt is the reason for re-entry, the re-entry command is the **emitted**
11
+ `next.continuation` (`rendering` for display): quote it, never author exact command
12
+ tokens.
10
13
 
11
14
  One `PreExecutionReviewReceipt v1`
12
15
  (`agentic-workflow/pre-execution-review-receipt@1`) per review:
@@ -8,7 +8,9 @@ each finding row to the unit's `planning-findings.md`** with
8
8
  create the file from that contract when the unit has none. A findings ledger the
9
9
  reviewer cannot write is not a ledger. Any later write to a reviewed artifact
10
10
  rotates `artifactRevisionId` and makes this receipt stale — that is the contract
11
- working, not a mistake.
11
+ working, not a mistake. When a missing or stale receipt is the reason for re-entry,
12
+ the re-entry command is the **emitted** `next.continuation` (`rendering` for display):
13
+ quote it, never author exact command tokens.
12
14
 
13
15
  One `PreExecutionReviewReceipt v1`
14
16
  (`agentic-workflow/pre-execution-review-receipt@1`) per review, in a fenced block:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: workflow-status
3
3
  user-invocable: true
4
- version: 3.6.0
4
+ version: 3.7.0
5
5
  author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
6
6
  license: MIT
7
7
  argument-hint: "[--json-only] [--last-envelope <json|path>]"
@@ -117,6 +117,9 @@ the JSON contract.
117
117
  - The human summary (unless `--json-only`) and the envelope are printed, envelope
118
118
  last.
119
119
  - Nothing was modified anywhere.
120
+ - When the envelope carries `next.continuation`, the next-command echo **quotes the
121
+ emitted `next.continuation`** (`rendering` for display), never author exact command
122
+ tokens; the human-facing prose `→ Next:` block below stays.
120
123
 
121
124
  → Next: the envelope's `next.recommended` command — it is computed from the
122
125
  actual state, so it IS the recommendation
@@ -41,7 +41,7 @@ sensor reports a missing gate, never a verdict that no review ever happened.
41
41
  |---|---|---|
42
42
  | `current` | stage PASS verdict **and** recomputed digest = bound digest | spec: `/plan-feature <slug>` · plan: `/execute-phase <NN>` |
43
43
  | `missing` | no receipt block for the stage | `defined` → `/review-spec <slug>` · planned/in-progress → `/review-plan <NN>` |
44
- | `stale` | bound digest differs, or a bound context row moved | re-run **that stage's** review |
44
+ | `stale` | bound digest differs, or a bound context row moved | re-run **that stage's** review — quote the emitted planning-gate re-run continuation (`next.continuation`, `rendering` for display), never author exact tokens |
45
45
  | `wrong-stage` | the only PASS belongs to the other stage | the stage that is missing — never the stage that passed |
46
46
  | `substitute` | prose verdict, legacy block, or internal attestation stands where a receipt should be | that stage's review, and report the substitute as a blocker detail |
47
47
  | `self-approved` | the author of the artifact recorded the PASS | that stage's review in a clean context |
@@ -50,9 +50,11 @@ sensor reports a missing gate, never a verdict that no review ever happened.
50
50
  | `impossible-timeline` | `structural.fresh: false`, `structural.reasonCode: impossible-timeline` — digest and revision match by construction; a receipt's own recorded timeline is physically impossible (finish predating source revision's commit date beyond the published skew); a legacy receipt with no parsable Started/finished: line, or a source revision git cannot resolve, stays unflagged (fail-open) | that stage's review — the timeline is self-refuting, not a stale source |
51
51
 
52
52
  A stale receipt re-runs the **review**, not the authoring skill: the artifacts may be
53
- exactly right and simply need re-judging in a clean context. A missing verdict block,
54
- or a verdict outside the stage's fixed set, is `missing` with the reason recorded —
55
- never a guess in the recommended direction.
53
+ exactly right and simply need re-judging in a clean context. The command to re-run is
54
+ the **emitted** `next.continuation` (`rendering` for display) — quoted as-is, never
55
+ authored as fresh command prose. A missing verdict block, or a verdict outside the
56
+ stage's fixed set, is `missing` with the reason recorded — never a guess in the
57
+ recommended direction.
56
58
 
57
59
  ### Envelope projection
58
60
 
package/README.es.md DELETED
@@ -1,196 +0,0 @@
1
- # @gtrabanco/pi-agentic-workflow
2
-
3
- > 🇬🇧 [English version](README.md)
4
-
5
- Una sola instalación del método
6
- [agentic-workflow](https://github.com/gtrabanco/agentic-workflow) en
7
- [Pi](https://github.com/badlogic/pi-mono): las skills canónicas, un comando por
8
- cada una y, si quieres, modelo distinto por comando que devuelve tu sesión
9
- después.
10
-
11
- - **Skills canónicas, sin cambios.** El paquete trae los mismos archivos
12
- `SKILL.md` de este repositorio, byte a byte — sin bifurcación para Pi que se
13
- desincronice.
14
- - **Comandos claros.** Escribes `/plan-feature --next`, no
15
- `/skill:plan-feature --next`.
16
- - **Enrutamiento que puedes olvidar.** Por defecto no se configura nada: cada
17
- comando corre en el modelo que ya tenías.
18
-
19
- ## Instalación
20
-
21
- ```sh
22
- pi install npm:@gtrabanco/pi-agentic-workflow
23
- ```
24
-
25
- Reinicia Pi. `/agentic-workflow-settings` y los comandos de workflow quedan
26
- disponibles en cualquier proyecto. Si antes copiaste las skills a mano a
27
- `~/.pi/agent/skills`, borra esa copia: el paquete ya las aporta, y dos copias
28
- significan dos versiones del mismo método.
29
-
30
- ## Comandos
31
-
32
- Cada skill incluida cuyo frontmatter dice `user-invocable: true` obtiene un
33
- comando con el mismo nombre. La lista se lee de las skills al arrancar, así que
34
- añadir una skill añade su comando — no existe una tabla de alias que mantener.
35
- Las skills internas que componen una skill pública (los pasos de revisión, el
36
- preflight de planificación, el contrato del envelope) viajan en el paquete pero
37
- no reciben comando propio — los componen los de arriba:
38
-
39
- | Comando | Para qué lo usas |
40
- | --- | --- |
41
- | `/audit-docs` | Comprobar que docs, roadmap, código y el índice de fixes coinciden. |
42
- | `/audit-pr` | La puerta de merge: ¿está este PR listo? |
43
- | `/design-feature` | Convertir una idea suelta en un SPEC diseñado. |
44
- | `/discover-repository-state` | Congelar hechos verificados del repositorio. |
45
- | `/execute-phase` | Implementar las fases restantes de una unidad planificada. |
46
- | `/fold-findings` | Reparar los hallazgos «fix-now» persistidos. |
47
- | `/generate-docs` | Generar guías incrementales basadas en el diff. |
48
- | `/init-workspace` | Adaptar el andamiaje del workflow a un repositorio. |
49
- | `/log-session` | Añadir una entrada de sesión estructurada a `docs/LOGS.md`. |
50
- | `/plan-feature` | Dirigir el trabajo diseñado a planificación y roadmap. |
51
- | `/plan-fix` | Redactar un SPEC de fix por fases desde uno o varios issues. |
52
- | `/product-audit` | Auditar la superficie del producto, no solo el diff. |
53
- | `/resolve-repository-state` | Resolver una contradicción en hechos congelados. |
54
- | `/review-change` | Revisar un cambio con los ejes que apliquen. |
55
- | `/review-plan` | Revisar un plan congelado en un contexto limpio. |
56
- | `/review-spec` | Revisar un SPEC diseñado en un contexto limpio. |
57
- | `/ship-roadmap` | Encontrar o continuar un roadmap, una etapa por ejecución. |
58
- | `/triage-issue` | Verificar un issue o hallazgo contra el código actual. |
59
- | `/workflow-status` | Estado de solo lectura del repositorio y el roadmap. |
60
-
61
- Los argumentos se reenvían tal cual: `/execute-phase P3 --fix` llega a la skill
62
- como `P3 --fix`.
63
-
64
- ## Enrutamiento por modelo
65
-
66
- Dos archivos JSON, ambos opcionales:
67
-
68
- | Alcance | Ruta | Se lee cuando |
69
- | --- | --- | --- |
70
- | Global | `~/.pi/agent/pi-agentic-workflow.json` | siempre |
71
- | Proyecto | `<repo>/.pi/pi-agentic-workflow.json` | el proyecto es de confianza |
72
-
73
- ```json
74
- {
75
- "default": { "model": "anthropic/claude-opus-4-5", "thinking": "high" },
76
- "commands": {
77
- "plan-feature": { "model": ["anthropic/claude-sonnet-4-5", "openai/gpt-5.2"], "thinking": "medium" },
78
- "review-change": { "thinking": "max" }
79
- },
80
- "onUnavailableRoute": "stop",
81
- "onSettle": "keep"
82
- }
83
- ```
84
-
85
- Cada valor se toma del primer sitio que lo declara: **comando en proyecto →
86
- comando global → ruta por defecto resuelta → defecto del paquete**. `review-change`
87
- de arriba usa el modelo del default con thinking `max`; todo lo demás corre con lo
88
- que ya tuviera la sesión, porque la ruta por defecto del paquete es
89
- `{"model": "inherit", "thinking": "inherit"}`.
90
-
91
- - `model` puede ser `provider/modelId` — la referencia exacta que muestra
92
- `/model` — `"inherit"`, o un **array** ordenado de 1–4 referencias (una cadena
93
- de respaldo). Para una cadena, el dispatch prueba cada referencia en orden y
94
- aplica la primera que se resuelve y tiene credenciales, sin tocar la sesión
95
- mientras prueba; cuando todas las entradas son inservibles el comando se
96
- detiene (o, con `onUnavailableRoute` en `inherit`, avisa y corre con el modelo
97
- actual), nombrando cada candidato y por qué se saltó. `plan-feature` de arriba
98
- prueba `anthropic/claude-sonnet-4-5` primero y luego `openai/gpt-5.2`.
99
- - `thinking` es uno de `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`,
100
- o `"inherit"`.
101
- - `` `onSettle` `` es uno de `"keep"` (el default) o `"restore"` — ver
102
- [Tu sesión después de un comando](#tu-sesión-después-de-un-comando).
103
- - Claves desconocidas, `null` y referencias mal formadas se **rechazan**, no se
104
- ignoran: un error tipográfico que no hace nada en silencio es el bug que nunca
105
- encuentras.
106
-
107
- El primer comando de workflow tras la instalación avisa una sola vez que el
108
- enrutamiento es configurable, y no vuelve a insistir. Ese aviso se guarda en
109
- `~/.pi/agent/pi-agentic-workflow-state.json`, no en tu configuración.
110
-
111
- ## Cuando el modelo configurado no está disponible
112
-
113
- Por defecto el comando **se niega a arrancar** y te dice por qué: el modelo no
114
- está en el registro, no tiene credenciales, o no se pudo seleccionar. No se envía
115
- nada, así que nada corre en un modelo que no elegiste. Para usar el modelo actual
116
- aun así:
117
-
118
- ```json
119
- { "onUnavailableRoute": "inherit" }
120
- ```
121
-
122
- ## Tu sesión después de un comando
123
-
124
- Por defecto (**`onSettle: "keep"`**), el modelo enrutado y el nivel de thinking
125
- **se quedan** en la ventana de chat abierta cuando el comando termina. Si
126
- `plan-feature` corre en `glm-5` y quieres retocar el plan que produjo, tu siguiente
127
- prompt sigue corriendo en `glm-5` — igual con una pregunta posterior. Cuando no
128
- necesitas el modelo pesado, lo cambias tú con `/model` (o Ctrl+P) a algo más
129
- barato; nada restaura sobre tu elección.
130
-
131
- Para volver a traer el modelo y el nivel de thinking previos al comando cuando este
132
- termina, pon:
133
-
134
- ```json
135
- { "onSettle": "restore" }
136
- ```
137
-
138
- (El modo `restore` es el histórico contrato AC8: tras un comando enrutado la
139
- sesión vuelve a como estaba — el modelo *y* el nivel de thinking, porque
140
- seleccionar un modelo puede mover el nivel. Si cambias el modelo tú mismo a
141
- mitad de turno, con `/model` por ejemplo, no se restaura nada: tu elección gana,
142
- y el comando lo dice. Si mueves solo el nivel de thinking, lo conservas mientras
143
- el modelo vuelve.)
144
-
145
- ## Consola de configuración
146
-
147
- ```
148
- /agentic-workflow-settings
149
- ```
150
-
151
- `/aw-settings` es un atajo para la misma consola.
152
-
153
- Muestra en qué corre cada comando ahora mismo, y qué archivo se niega a parsearse,
154
- y luego deja editar **un archivo a la vez** y guardar en alcance global o de
155
- proyecto. No guarda encima de un archivo que no sabe leer, y no toca el
156
- archivo de proyecto mientras el proyecto no sea de confianza.
157
-
158
- Los selectores de modelo y thinking de la consola son buscables y con ventana:
159
- escribir estrecha la lista, el cursor se queda en pantalla, un indicador de
160
- posición muestra dónde estás y el valor en vigor viene preseleccionado y
161
- etiquetado `(current)` / `(default route)`. Una edición de ruta pregunta qué
162
- campo cambiar (model, thinking), así que guardar sin cambios deja el archivo
163
- byte a byte idéntico; el campo de modelo puede construir una cadena de respaldo
164
- ordenada (`a/m1 → b/m2`); y una sola pasada puede aplicar o limpiar una ruta en
165
- varios comandos, avisando por comando cuando una referencia falta del registro
166
- vivo. Fuera de una sesión TUI los selectores caen a un prompt simple, así que la
167
- consola nunca se queda sin salida. Las listas de más de 24 opciones tampoco
168
- llegan nunca a un solo diálogo: por encima del tope el selector de modelo
169
- pregunta primero el proveedor, y una lista de proveedores o de modelos
170
- demasiado larga pagina (`More options…` / `◀ Previous page`) en vez de tumbar
171
- el diálogo de select del host.
172
-
173
- ## Diagnóstico
174
-
175
- | Ves | Significa |
176
- | --- | --- |
177
- | `refused: invalid configuration` | Un archivo de configuración fue rechazado. El mismo mensaje nombra el campo, p. ej. `$.commands.plan-feature.model`. Ejecuta `/agentic-workflow-settings` para ver el archivo o arregla el JSON. |
178
- | `stopped: the configured model` … `is not in the model registry` | La referencia es incorrecta o el proveedor no está configurado. Usa `/model` para ver el `provider/modelId` exacto. |
179
- | `has no configured credentials` | El modelo existe pero aún no puedes usarlo. Autentica, o pon `onUnavailableRoute` en `inherit`. |
180
- | `could not be selected` | Pi rechazó el cambio. El comando se detiene con el motivo — salvo que `onUnavailableRoute` sea `inherit`, en cuyo caso avisa y se ejecuta con tu modelo actual. |
181
- | `refused: the agent is busy` | Hay un turno en ejecución. Espera a que termine. |
182
- | `is still routed` | El comando enrutado anterior no ha terminado. |
183
- | `leaving the model you chose in place` | (en modo `restore`) Cambiaste el modelo durante un turno enrutado, así que no se restauró nada: tu elección ganó. |
184
- | `these configured routes match no command` | Una clave de `commands` no nombra nada. Corrige la escritura o elimina la entrada. |
185
-
186
- ## Notas
187
-
188
- - Probado con Pi 0.85.1 (2026-09-05) (`pi install`, skills de paquete, registro de
189
- comandos amigables, set/clear enrutado, round-trip de consola de ajustes,
190
- `sendUserMessage` con expansión de plantillas).
191
- - El paquete declara Pi como peer dependency; no incluye ninguna copia de Pi.
192
- - Las skills pueden indicar al modelo que ejecute comandos. Revísalas como con
193
- cualquier paquete de terceros.
194
-
195
- MIT · [Repositorio](https://github.com/gtrabanco/agentic-workflow) ·
196
- [`docs/features/27-pi-agentic-workflow/`](../../docs/features/27-pi-agentic-workflow/SPEC.md)