@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 +0 -2
- package/package.json +1 -2
- package/skills/design-feature/SKILL.md +7 -4
- package/skills/design-feature/references/INTERVIEW.md +14 -9
- package/skills/orchestration-envelope/SKILL.md +1 -1
- package/skills/orchestration-envelope/references/TURN_CONTRACT.md +32 -0
- package/skills/review-change/references/PERSIST_AND_DECIDE.md +4 -0
- package/skills/review-plan/references/OUTPUT.md +4 -1
- package/skills/review-spec/references/OUTPUT.md +3 -1
- package/skills/workflow-status/SKILL.md +4 -1
- package/skills/workflow-status/references/PRE_EXECUTION.md +6 -4
- package/README.es.md +0 -196
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.
|
|
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.
|
|
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.
|
|
93
|
-
|
|
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;
|
|
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
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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
|
|
@@ -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.
|
|
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.
|
|
54
|
-
|
|
55
|
-
|
|
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)
|