@sublang/playbook 7.0.0 → 9.0.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.md +20 -7
- package/docs/cli.md +88 -43
- package/docs/configuration.md +221 -119
- package/docs/embedding.md +78 -27
- package/package.json +4 -3
- package/reference/sdlc/captain.playbook/captain.playbook.js +16 -5
- package/reference/sdlc/captain.playbook/captain.playbook.ts +20 -6
- package/reference/sdlc/code.md +1 -1
- package/reference/sdlc/code.playbook/bin/interactive-session.js +816 -0
- package/reference/sdlc/code.playbook/bin/launch-config.js +1078 -116
- package/reference/sdlc/code.playbook/bin/playbook.js +489 -34
- package/reference/sdlc/code.playbook/bin/run.js +283 -298
- package/reference/sdlc/code.playbook/bin/session-store.js +818 -26
- package/reference/sdlc/code.playbook/code.fsm.d.ts +9 -6
- package/reference/sdlc/code.playbook/code.fsm.introspect.js +2 -2
- package/reference/sdlc/code.playbook/code.fsm.introspect.ts +2 -2
- package/reference/sdlc/code.playbook/code.fsm.js +18 -15
- package/reference/sdlc/code.playbook/code.fsm.ts +21 -21
- package/reference/sdlc/code.playbook/code.gears.md +1 -1
- package/reference/sdlc/code.playbook/code.playbook.d.ts +2 -1
- package/reference/sdlc/code.playbook/code.playbook.js +25 -15
- package/reference/sdlc/code.playbook/code.playbook.ts +34 -17
- package/reference/sdlc/code.playbook/code.registry.d.ts +5 -13
- package/reference/sdlc/code.playbook/code.registry.js +3 -10
- package/reference/sdlc/code.playbook/code.registry.ts +7 -32
- package/reference/sdlc/code.playbook/playbook-captain.d.ts +39 -14
- package/reference/sdlc/code.playbook/playbook-captain.js +1014 -299
- package/reference/sdlc/code.playbook/playbook-captain.ts +1450 -406
- package/reference/sdlc/code.playbook/playbook.config.template.yaml +41 -49
- package/reference/sdlc/decide.md +4 -4
- package/reference/sdlc/decide.playbook/decide.fsm.d.ts +10 -10
- package/reference/sdlc/decide.playbook/decide.fsm.js +21 -14
- package/reference/sdlc/decide.playbook/decide.fsm.ts +27 -23
- package/reference/sdlc/decide.playbook/decide.gears.md +3 -5
- package/reference/sdlc/decide.playbook/decide.playbook.d.ts +11 -13
- package/reference/sdlc/decide.playbook/decide.playbook.js +465 -246
- package/reference/sdlc/decide.playbook/decide.playbook.ts +623 -283
- package/reference/sdlc/decide.playbook/decide.registry.d.ts +5 -13
- package/reference/sdlc/decide.playbook/decide.registry.js +3 -9
- package/reference/sdlc/decide.playbook/decide.registry.ts +7 -31
- package/reference/sdlc/review.md +4 -5
- package/reference/sdlc/review.playbook/review.fsm.d.ts +9 -11
- package/reference/sdlc/review.playbook/review.fsm.js +30 -24
- package/reference/sdlc/review.playbook/review.fsm.ts +39 -35
- package/reference/sdlc/review.playbook/review.gears.md +6 -5
- package/reference/sdlc/review.playbook/review.playbook.d.ts +2 -1
- package/reference/sdlc/review.playbook/review.playbook.js +29 -23
- package/reference/sdlc/review.playbook/review.playbook.ts +38 -28
- package/reference/sdlc/review.playbook/review.registry.d.ts +5 -13
- package/reference/sdlc/review.playbook/review.registry.js +3 -16
- package/reference/sdlc/review.playbook/review.registry.ts +7 -38
- package/slc/gears2fsm.md +45 -24
- package/slc/link.md +297 -135
- package/slc/text2gears.md +19 -18
- package/src/runtime.d.ts +21 -16
- package/src/runtime.ts +20 -23
- package/src/xstate-playbook-runtime.d.ts +34 -20
- package/src/xstate-playbook-runtime.js +973 -400
- package/src/xstate-playbook-runtime.ts +1203 -457
- package/src/xstate-runtime.d.ts +17 -7
- package/src/xstate-runtime.js +198 -81
- package/src/xstate-runtime.ts +339 -112
package/README.md
CHANGED
|
@@ -19,7 +19,11 @@ SubLang Playbook addresses both:
|
|
|
19
19
|
|
|
20
20
|

|
|
21
21
|
|
|
22
|
-
Vocabulary: the **Boss** is you; the **Captain** is the coordinating agent you
|
|
22
|
+
Vocabulary: the **Boss** is you; the **Captain** is the coordinating agent you
|
|
23
|
+
talk to; a **role** is a playbook-local job such as `coder`; and a **player** is
|
|
24
|
+
a stable Captain-session agent and provider conversation to which one or more
|
|
25
|
+
roles bind. Roles describe the workflow, while player IDs decide which work
|
|
26
|
+
shares conversation continuity.
|
|
23
27
|
|
|
24
28
|
Run `playbook` for an interactive tmux UI powered by [cligent](https://github.com/sublang-ai/cligent), or `playbook run` for the same Captain session without tmux in scripts and CI.
|
|
25
29
|
|
|
@@ -28,7 +32,10 @@ Run `playbook` for an interactive tmux UI powered by [cligent](https://github.co
|
|
|
28
32
|
Out of the box, Playbook includes **CODE** for implementation, **REVIEW** for commit-based review and fixes, and **DECIDE** for independently proposed and reviewed specification decisions.
|
|
29
33
|
CODE and DECIDE call REVIEW as a nested playbook.
|
|
30
34
|
|
|
31
|
-
The shared starter config uses Claude as both Captain and
|
|
35
|
+
The shared starter config uses Claude as both Captain and the `dev.coder`
|
|
36
|
+
player, and Codex as `dev.reviewer`. CODE, REVIEW, and DECIDE bind their local
|
|
37
|
+
roles explicitly to those two stable players, so nested and later engagements
|
|
38
|
+
share a conversation only where their bindings name the same player ID.
|
|
32
39
|
|
|
33
40
|
```sh
|
|
34
41
|
npm install -g @sublang/playbook
|
|
@@ -44,7 +51,7 @@ Prerequisites:
|
|
|
44
51
|
- Authenticated [Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) or `ANTHROPIC_API_KEY`
|
|
45
52
|
- Authenticated [Codex CLI](https://github.com/openai/codex) or `OPENAI_API_KEY`
|
|
46
53
|
|
|
47
|
-
Interactive `playbook` additionally needs
|
|
54
|
+
Interactive `playbook` additionally needs tmux 3.3 or newer and [`glow`](https://github.com/charmbracelet/glow#installation) on `PATH`; headless `playbook run` does not.
|
|
48
55
|
|
|
49
56
|
CODE works in the current directory and can edit and commit autonomously, so use a clean branch or worktree.
|
|
50
57
|
|
|
@@ -58,17 +65,23 @@ Type a task, enter `/code <task>` for implementation, or enter
|
|
|
58
65
|
|
|
59
66
|
On first launch, Playbook writes its config to `${XDG_CONFIG_HOME:-$HOME/.config}/playbook/playbook.config.yaml`.
|
|
60
67
|
|
|
61
|
-
The same config, compiled Captain, enabled playbooks, players, and
|
|
68
|
+
The same config, compiled Captain, enabled playbooks, stable players, and
|
|
69
|
+
nested calls power headless turns. Both front ends create the same durable
|
|
70
|
+
logical session: copy the reported session ID to reopen an interactive session
|
|
71
|
+
headlessly or a headless session interactively.
|
|
62
72
|
Run REVIEW explicitly, or pipe a longer request to Captain:
|
|
63
73
|
|
|
64
74
|
```sh
|
|
65
75
|
playbook run "/review review the latest commit"
|
|
66
76
|
printf '%s\n' 'Implement the approved specification, then review it.' | playbook run
|
|
77
|
+
# Later, either presentation can reopen the returned/reported session id:
|
|
78
|
+
playbook --session 4f2c0000-0000-4000-8000-000000009ab1
|
|
79
|
+
playbook run --session 4f2c0000-0000-4000-8000-000000009ab1 "continue"
|
|
67
80
|
```
|
|
68
81
|
|
|
69
82
|
`playbook run` prints the one Boss-visible Captain reply to stdout and operational status to stderr; CODE and DECIDE can complete their nested REVIEW calls there too.
|
|
70
83
|
|
|
71
|
-
See [Using the CLI](docs/cli.md) for flags and durable continuation, [Configuring agents](docs/configuration.md) for the shared lineup, [Embedding](docs/embedding.md) for custom hosts, and the [changelog](CHANGELOG.md) for releases.
|
|
84
|
+
See [Using the CLI](docs/cli.md) for flags and durable continuation, [Configuring agents](docs/configuration.md) for the shared lineup, [Embedding](docs/embedding.md) for custom hosts, and the [changelog](https://github.com/sublang-ai/playbook/blob/main/CHANGELOG.md) for releases.
|
|
72
85
|
|
|
73
86
|
## Create your own playbook
|
|
74
87
|
|
|
@@ -116,8 +129,8 @@ pnpm playbook # drive a Boss turn against the source tree
|
|
|
116
129
|
```
|
|
117
130
|
|
|
118
131
|
Playbook is itself spec-driven: the compiler phases are specs in [`slc/`](slc), and the reference playbooks are regenerated from their prose sources.
|
|
119
|
-
Edit a source, regenerate its GEARS, FSM, and runtime artifacts, sync the tests and downstream specs until `pnpm test` passes, and commit with co-author trailers per [`specs/packages/git.md`](specs/packages/git.md).
|
|
120
|
-
The gears↔FSM contract ([the playbook package](specs/packages/playbook.md)) and runtime contract ([the playbook-runtime package](specs/packages/playbook-runtime.md)) are pinned in [`specs/packages/`](specs/packages) and verified by the test suite.
|
|
132
|
+
Edit a source, regenerate its GEARS, FSM, and runtime artifacts, sync the tests and downstream specs until `pnpm test` passes, and commit with co-author trailers per [`specs/packages/git.md`](https://github.com/sublang-ai/playbook/blob/main/specs/packages/git.md).
|
|
133
|
+
The gears↔FSM contract ([the playbook package](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook.md)) and runtime contract ([the playbook-runtime package](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-runtime.md)) are pinned in [`specs/packages/`](https://github.com/sublang-ai/playbook/tree/main/specs/packages) and verified by the test suite.
|
|
121
134
|
|
|
122
135
|
## License
|
|
123
136
|
|
package/docs/cli.md
CHANGED
|
@@ -8,6 +8,9 @@ interactive tmux-play UI and a headless `playbook run` turn for scripts and
|
|
|
8
8
|
CI. Both use the same compiled Captain, enabled catalog, players, nested
|
|
9
9
|
stack, and [config](configuration.md); only presentation differs.
|
|
10
10
|
|
|
11
|
+
The interactive form requires tmux 3.3 or newer and `glow` on `PATH`;
|
|
12
|
+
the headless form requires neither presentation tool.
|
|
13
|
+
|
|
11
14
|
## Installing agent SDKs
|
|
12
15
|
|
|
13
16
|
Each adapter is backed by a vendor runtime that installing
|
|
@@ -15,7 +18,7 @@ Each adapter is backed by a vendor runtime that installing
|
|
|
15
18
|
agent stack you did not ask for. Which versions each adapter supports
|
|
16
19
|
is [cligent](https://github.com/sublang-ai/cligent)'s knowledge and
|
|
17
20
|
ships with it
|
|
18
|
-
([DR-027](
|
|
21
|
+
([DR-027](https://github.com/sublang-ai/playbook/blob/main/specs/decisions/027-runtime-compatibility-from-cligent.md));
|
|
19
22
|
the commands below install the latest, which cligent accepts from its
|
|
20
23
|
supported floor up. Install the SDKs your config names, each as its
|
|
21
24
|
own top-level install root:
|
|
@@ -42,7 +45,7 @@ finds a bare specifier by walking *up* from there — which reaches the
|
|
|
42
45
|
install prefix's own `node_modules`, but never into a sibling package's
|
|
43
46
|
subtree. An SDK that landed inside some other package is invisible to
|
|
44
47
|
the adapter even though it is on disk
|
|
45
|
-
([DR-026](
|
|
48
|
+
([DR-026](https://github.com/sublang-ai/playbook/blob/main/specs/decisions/026-optional-adapter-sdks.md)).
|
|
46
49
|
|
|
47
50
|
Both surfaces check this before doing any work: a declared adapter
|
|
48
51
|
whose runtime is not loadable — or is installed below the version
|
|
@@ -51,14 +54,16 @@ runtime is reported as not installed; a stale one with its installed
|
|
|
51
54
|
and required versions, never as absent. Either way the remedy printed
|
|
52
55
|
is cligent's pinned install, `npm install -g <package>@<version>`, so
|
|
53
56
|
following it cannot install a version the gate refuses again
|
|
54
|
-
([[playbook-cli-40](
|
|
57
|
+
([[playbook-cli-40](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-cli.md#playbook-cli-40)]).
|
|
55
58
|
|
|
56
59
|
## Interactive
|
|
57
60
|
|
|
58
61
|
```sh
|
|
59
|
-
playbook
|
|
60
|
-
playbook --
|
|
61
|
-
playbook --
|
|
62
|
+
playbook # fresh durable session in this directory
|
|
63
|
+
playbook --cwd /path/to/repo # fresh session in an explicit directory
|
|
64
|
+
playbook --session <id> # reopen either front end's settled session
|
|
65
|
+
playbook --list # ids, slash commands, and intents; no launch
|
|
66
|
+
playbook --help # config path, auth pointers, binding recipe
|
|
62
67
|
```
|
|
63
68
|
|
|
64
69
|
Without a global install, `npx` runs the same bin — but name each
|
|
@@ -78,12 +83,23 @@ already present, since each distinct package set is a distinct tree —
|
|
|
78
83
|
and replaying your original arguments, so the printed command works in
|
|
79
84
|
one hop.
|
|
80
85
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
For a managed launch, the outer command resolves current config (seeding it on
|
|
87
|
+
first use), prepares the complete stored catalog and presenter, waits for the
|
|
88
|
+
pane child to acquire the session lease and publish its settled turn-zero
|
|
89
|
+
record, prints the verified session ID, and then attaches. A normal outer
|
|
90
|
+
detach exits `0`; the pane child keeps owning the durable session and accepting
|
|
91
|
+
turns until it shuts down. Preparation, attachment, or required cleanup
|
|
92
|
+
failure prints its diagnostics and exits nonzero.
|
|
93
|
+
|
|
94
|
+
Before native-client hand-off, SIGHUP, SIGINT, or SIGTERM aborts activation,
|
|
95
|
+
joins the child, retires the lease, and only then re-raises the signal. At the
|
|
96
|
+
synchronous native-client hand-off, ownership transfers before tmux starts, so
|
|
97
|
+
later signals use native client detach or termination semantics and do not
|
|
98
|
+
retire the pane child's session. Only `--config` and composed
|
|
99
|
+
`--theme-diagnostics` use the stock subprocess boundary: those forms mirror
|
|
100
|
+
its exit status or signal and exit `127` when it cannot be spawned
|
|
101
|
+
([[playbook-cli-1](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-cli.md#playbook-cli-1)],
|
|
102
|
+
[[playbook-cli-2](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-cli.md#playbook-cli-2)]).
|
|
87
103
|
|
|
88
104
|
### Running a Boss turn
|
|
89
105
|
|
|
@@ -102,27 +118,29 @@ currently offers. It never does the specialized work itself, and a
|
|
|
102
118
|
conversational turn — including a progress or status question — leaves
|
|
103
119
|
the engagement, its parked state, and any pending player question
|
|
104
120
|
untouched
|
|
105
|
-
([[playbook-captain-1](
|
|
106
|
-
[[playbook-captain-2](
|
|
121
|
+
([[playbook-captain-1](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-captain.md#playbook-captain-1)],
|
|
122
|
+
[[playbook-captain-2](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-captain.md#playbook-captain-2)]).
|
|
107
123
|
|
|
108
124
|
The current CODE, REVIEW, and DECIDE workflows take their deterministic
|
|
109
|
-
initial event from the selecting Boss turn. CODE and DECIDE then call
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
125
|
+
initial event from the selecting Boss turn. CODE and DECIDE then call REVIEW
|
|
126
|
+
as a nested playbook. Local role names do not imply continuity: each frame
|
|
127
|
+
uses the exact stable player IDs configured under its `roles` map. Equal IDs
|
|
128
|
+
share one pane and provider conversation across nested and later root
|
|
129
|
+
engagements; distinct IDs remain isolated even when their agent settings are
|
|
130
|
+
identical. When a player surfaces a
|
|
113
131
|
clarifying question the FSM parks, the pane shows the question, and a
|
|
114
132
|
judge classifies your next turn as its reply or a fresh directive that
|
|
115
133
|
abandons it
|
|
116
|
-
([[playbook-runtime-2](
|
|
134
|
+
([[playbook-runtime-2](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-runtime.md#playbook-runtime-2)]).
|
|
117
135
|
|
|
118
136
|
The Captain pane shows start/stop/finished status with `◇` lines and
|
|
119
137
|
streams progress with captain-speech classification and questions
|
|
120
|
-
([[playbook-runtime-3](
|
|
138
|
+
([[playbook-runtime-3](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-runtime.md#playbook-runtime-3)]), while player
|
|
121
139
|
prompts ride their own panes. A turn that actually did something ends
|
|
122
140
|
with one Captain reply summarizing what changed, composed only from that
|
|
123
141
|
turn's reported outcome; a turn that changed nothing ends with an
|
|
124
142
|
ordinary reply and no saved-counts line
|
|
125
|
-
([[playbook-captain-19](
|
|
143
|
+
([[playbook-captain-19](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-captain.md#playbook-captain-19)]).
|
|
126
144
|
|
|
127
145
|
## Headless
|
|
128
146
|
|
|
@@ -147,7 +165,7 @@ stderr, and `--verbose` adds only telemetry topic names to stderr.
|
|
|
147
165
|
|
|
148
166
|
| Flag | Meaning |
|
|
149
167
|
| --- | --- |
|
|
150
|
-
| `--with <path>` | overlay
|
|
168
|
+
| `--with <path>` | overlay current config for a fresh session or compatible ordinary reopen; repeatable |
|
|
151
169
|
| `--no-provision` | do not create missing engine links for configured filesystem registries |
|
|
152
170
|
| `--json` | print exactly one `sessionId` / `reply` object |
|
|
153
171
|
| `--verbose` | add Captain telemetry topic names to stderr |
|
|
@@ -164,13 +182,18 @@ Captain reply. Argument, config, catalog, readiness, or pre-turn setup errors
|
|
|
164
182
|
exit `1`; a started-turn, persistence, lease-release, or presentation failure
|
|
165
183
|
exits `2` with stdout empty. SIGINT, SIGTERM, and SIGHUP preserve the
|
|
166
184
|
uncertain boundary, withhold stdout, and are re-raised after lease retirement
|
|
167
|
-
([[playbook-cli-18](
|
|
185
|
+
([[playbook-cli-18](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-cli.md#playbook-cli-18)]).
|
|
168
186
|
|
|
169
187
|
The former positional `<from>`, `resume`, `--player`, `--captain`,
|
|
170
188
|
`--option`, `--cwd`, `--last`, run-only `--config`, and top-level `run:`
|
|
171
|
-
config are removed
|
|
172
|
-
|
|
173
|
-
|
|
189
|
+
config are removed from `playbook run`. Enable a registry under `playbooks`,
|
|
190
|
+
declare provider agents once under top-level `players`, bind every local role
|
|
191
|
+
under `playbooks.<id>.roles`, tune compatible model and effort in a `--with`
|
|
192
|
+
overlay, invoke the effective `/command`, and run from the working directory
|
|
193
|
+
you want agents to use. Legacy `playbooks.<id>.players` blocks are rejected and
|
|
194
|
+
are not auto-migrated because choosing equal or distinct new player IDs chooses
|
|
195
|
+
conversation sharing or isolation; see [Migrating per-playbook
|
|
196
|
+
players](configuration.md#migrating-per-playbook-players).
|
|
174
197
|
|
|
175
198
|
### Piping a Spex update prompt
|
|
176
199
|
|
|
@@ -198,8 +221,8 @@ the primary config file. Before either front end imports a configured
|
|
|
198
221
|
filesystem registry, the shared launcher checks whether that module can
|
|
199
222
|
resolve `xstate` and `@sublang/playbook/xstate-runtime`. When needed, it
|
|
200
223
|
creates engine symlinks beside the module and prints one provisioning line
|
|
201
|
-
([[playbook-cli-36](
|
|
202
|
-
[DR-024](
|
|
224
|
+
([[playbook-cli-36](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-cli.md#playbook-cli-36)],
|
|
225
|
+
[DR-024](https://github.com/sublang-ai/playbook/blob/main/specs/decisions/024-runtime-engine-provisioning.md)).
|
|
203
226
|
|
|
204
227
|
A directory where both imports already resolve is untouched, and
|
|
205
228
|
`--no-provision` disables new links for either fresh front end. If the
|
|
@@ -208,23 +231,38 @@ module's directory is a git repository, add `node_modules/` to its
|
|
|
208
231
|
|
|
209
232
|
### Continuing a Captain session
|
|
210
233
|
|
|
211
|
-
|
|
212
|
-
`${XDG_STATE_HOME:-$HOME/.local/state}/playbook/sessions
|
|
213
|
-
|
|
234
|
+
Interactive and headless commands write the same logical-session records under
|
|
235
|
+
`${XDG_STATE_HOME:-$HOME/.local/state}/playbook/sessions/`. A fresh interactive
|
|
236
|
+
child persists turn zero before printing `playbook: session <id>` and opening
|
|
237
|
+
Boss input; a fresh headless turn returns the same kind of ID in `--json`.
|
|
238
|
+
After the current writer exits or explicitly hands off, either presentation
|
|
239
|
+
can reopen either origin:
|
|
214
240
|
|
|
215
241
|
```sh
|
|
242
|
+
# Reopen the latest settled session headlessly:
|
|
216
243
|
playbook run --continue "keep the scope small; skip the docs"
|
|
244
|
+
|
|
245
|
+
# Reopen one exact session in either presentation:
|
|
246
|
+
playbook --session 4f2c0000-0000-4000-8000-000000009ab1
|
|
217
247
|
playbook run --session 4f2c0000-0000-4000-8000-000000009ab1
|
|
218
248
|
```
|
|
219
249
|
|
|
220
|
-
A missing reply is read verbatim from stdin.
|
|
250
|
+
A missing headless reply is read verbatim from stdin. Reopening restores the
|
|
221
251
|
compiled Captain conversation, engagement stack, nested child boundary,
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
252
|
+
stable-player ledger, and absolute working directory without replaying a
|
|
253
|
+
settled or pending child start. One exclusive writer owns the session, so a
|
|
254
|
+
detached interactive pane child remains the owner until it shuts down; a
|
|
255
|
+
competing front end fails closed instead of forking the history.
|
|
256
|
+
|
|
257
|
+
An ordinary reopen reads current config and any opening `--with` fragments,
|
|
258
|
+
projects them to the stored catalog and player roster, and requires the stored
|
|
259
|
+
role bindings plus every structural setting to remain exact. Compatible
|
|
260
|
+
current `model` and `effort` selections apply to the next call, including an
|
|
261
|
+
explicit boolean `false` provider-default reset. The retained provider token
|
|
262
|
+
is never silently replaced by a fresh conversation if that selection is not
|
|
263
|
+
supported
|
|
264
|
+
([[playbook-cli-22](https://github.com/sublang-ai/playbook/blob/main/specs/packages/playbook-cli.md#playbook-cli-22)],
|
|
265
|
+
[DR-032](https://github.com/sublang-ai/playbook/blob/main/specs/decisions/032-explicit-roles-session-players.md)).
|
|
228
266
|
|
|
229
267
|
### Recovering an uncertain turn
|
|
230
268
|
|
|
@@ -238,8 +276,15 @@ playbook run --session 4f2c0000-0000-4000-8000-000000009ab1 --retry-uncertain
|
|
|
238
276
|
playbook run --session 4f2c0000-0000-4000-8000-000000009ab1 --discard-uncertain
|
|
239
277
|
```
|
|
240
278
|
|
|
241
|
-
Retry reads no input and reuses the byte-exact recorded turn
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
279
|
+
Retry reads no input and reuses the byte-exact recorded turn and its exact
|
|
280
|
+
attempted Captain, player, and per-role model/effort selections; current config
|
|
281
|
+
cannot retune that attempt, and retry may duplicate external effects. Discard
|
|
282
|
+
reads no input and runs no model: it restores the exact prior settled boundary,
|
|
283
|
+
or deletes a never-settled fresh session, while abandoning the attempted work.
|
|
284
|
+
An interrupted interactive turn uses the same uncertain record and is
|
|
285
|
+
recovered with these headless commands. Session files written by the removed
|
|
286
|
+
direct v6 runner and legacy record schemas are not shared schema-3 Captain
|
|
287
|
+
sessions and cannot be continued. Explicit selection rejects them. Implicit
|
|
288
|
+
`--continue` reports and skips released schema-2 Captain records, naming each
|
|
289
|
+
session and path; move them outside the sessions directory or remove them to
|
|
290
|
+
silence the warning. Malformed records and unknown schemas still fail closed.
|