pi-herdsman 0.4.0 → 0.5.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/docs/agent-api.md CHANGED
@@ -78,7 +78,7 @@ question.
78
78
 
79
79
  ## Pass evidence through handoffs
80
80
 
81
- Read [Handoffs and files](guides/handoffs.md) for `files`, result paths, body
81
+ Read [Handoffs and files](guides/handoffs.md) for `files`, result references, body
82
82
  references, and coordination artifacts. That guide owns the evidence-transfer
83
83
  workflow; the `agent` reference owns the accepted request fields.
84
84
 
@@ -32,8 +32,9 @@ my-review
32
32
 
33
33
  Use the exact `agent` value from `agent list` only for
34
34
  `steer.agent`, `reply.agent`, or `close.agent` while those actions are listed
35
- in `available_actions`. An agent label is the live execution identity for one
36
- assignment, not a continuation handle.
35
+ in `available_actions`. An agent label is the stable logical name across
36
+ sequential generations of one managed session, not a continuation selector.
37
+ It is a control target only for the currently live generation.
37
38
 
38
39
  Labels must begin with a lowercase letter, contain only lowercase letters,
39
40
  digits, `_`, or `-`, and be at most 32 characters.
@@ -43,14 +44,13 @@ digits, `_`, or `-`, and be at most 32 characters.
43
44
  Every managed agent has an exact Pi session. The list may expose the session
44
45
  ID and path for correlation.
45
46
 
46
- A session path or full UUID can be supplied as `delegate.session` to continue
47
- historical work. Session delegation creates a new agent generation for one new
48
- assignment and uses the saved session's cwd and historical context. With
49
- `delegate.session`, omitting `label` chooses a fresh available label derived
50
- from the saved definition; supplying one chooses the exact live label for that
51
- generation. The Pi session remains the continuation identity, not a
52
- live-control identity. An exact active or unresolved managed representation
53
- blocks concurrent activation of that session.
47
+ A session path or full UUID can be supplied to the `continue` action to continue
48
+ historical work. Continuation creates a new agent generation for one new
49
+ assignment and uses the saved session's cwd, definition, logical label, and
50
+ historical context. The caller cannot rename the continued session. The Pi
51
+ session remains the continuation identity, not a live-control identity. An
52
+ exact active or unresolved managed representation blocks concurrent activation
53
+ of that session.
54
54
 
55
55
  ### herdr identities
56
56
 
@@ -104,18 +104,17 @@ and runtime state are cleaned up. Failed assignments follow the same terminal
104
104
  cleanup path.
105
105
 
106
106
  The Pi session remains available after agent cleanup. To continue the same
107
- conversational context, delegate a new assignment with the exact session ID or
108
- session path returned with the result. This creates a new agent generation,
109
- which uses the current effective authorized configuration for the saved agent
110
- definition. To derive a separate context instead, use `fork` on a definition
111
- delegation.
107
+ conversational context, use `continue` with the exact session ID or session path
108
+ returned with the result. This creates a new agent generation, which uses the
109
+ current effective authorized configuration for the saved agent definition. To
110
+ derive a separate context instead, use `fork` on a `delegate` action.
112
111
 
113
112
  The identities are therefore:
114
113
 
115
114
  ```text
116
115
  agent definition → configuration for new work
117
116
  Pi session → durable conversational context and continuation identity
118
- agent label → live control identity for one assignment
117
+ agent label → stable logical name across sequential generations; live control target only for the current generation
119
118
  ```
120
119
 
121
120
  ## See also
@@ -102,11 +102,11 @@ exactly-once delivery for both completed and failed terminal results.
102
102
  ## Session continuation
103
103
 
104
104
  Agent cleanup does not delete the Pi session. To continue completed context,
105
- use the exact returned session with `delegate.session`; Pi Herdsman starts a new
106
- agent generation for the new assignment. The continuation uses the saved cwd
107
- and session history together with the current effective authorized definition
108
- configuration. Use `delegate.definition` with `fork` when a separate derived
109
- session is required.
105
+ use the exact returned session with `continue`; Pi Herdsman starts a new agent
106
+ generation for the new assignment. The continuation uses the saved cwd, session
107
+ history, definition, and logical label together with the current effective
108
+ authorized definition configuration. The caller cannot rename the continued
109
+ session. Use `delegate` with `fork` when a separate derived session is required.
110
110
  Session continuation does not retain the old Herdr tab. A still-live
111
111
  generation may be restored from its exact managed identity, while ordinary
112
112
  same-workspace tab movement remains presentation-only and does not change
@@ -60,7 +60,7 @@ correlated `staff reply`; a reply clears the pending ask only after accepted
60
60
  follow-up delivery. A replacement chief can answer an existing ask using its
61
61
  current lease and unchanged ask ID. Chief and staff message actions accept
62
62
  files; their text is prepared with the same canonical attachment renderer and
63
- configured global byte limits as agent messages, while durable supervision
63
+ configured Herdsman byte limits as agent messages, while durable supervision
64
64
  records remain text-only.
65
65
 
66
66
  ## Supervision state
@@ -121,7 +121,7 @@ registry, or another synchronization subsystem.
121
121
  - One H1 per file.
122
122
  - Short descriptive headings.
123
123
  - Current behavior only.
124
- - Spell the visible product name `Pi Herdsman`, the package and repository identifier `pi-herdsman`, the local coordination directory `.pi-herdsman`, the settings namespace `piHerdsman`, and the upstream dependency `herdr`.
124
+ - Spell the visible product name `Pi Herdsman`, the package and repository identifier `pi-herdsman`, the local coordination directory `.pi-herdsman`, the configuration file `config.json`, and the upstream dependency `herdr`.
125
125
  - No backlog task numbers in product docs.
126
126
  - Keep canonical user and reference pages focused on current behavior.
127
127
  - Examples must match current accepted schemas.
@@ -58,7 +58,7 @@ Use the exact returned session ID or path for a follow-up assignment:
58
58
 
59
59
  ```json
60
60
  {
61
- "action": "delegate",
61
+ "action": "continue",
62
62
  "session": "<exact session>",
63
63
  "task": "Continue the investigation with one short follow-up."
64
64
  }
@@ -68,25 +68,27 @@ Verify:
68
68
 
69
69
  - the same Pi session and session file are used;
70
70
  - a new agent generation, run ID, request ID, and pane are created;
71
+ - the saved logical label is reused exactly (there is no continuation label override);
71
72
  - the saved conversation context is available;
72
73
  - the current effective definition configuration is used;
73
74
  - exactly one result reaches the owner;
74
75
  - cleanup removes the second agent, pane, mailbox, and runtime.
75
76
 
76
- While the continuation assignment is active, submit another
77
- `delegate.session` request for the same exact session. Verify it fails with
77
+ While the continuation assignment is active, submit another `continue` request
78
+ for the same exact session. Verify it fails with
78
79
  `agent_busy`, creates no duplicate agent or pane, and leaves the active
79
80
  assignment unchanged. After both assignments finish, `agent list` must show
80
81
  no completed idle agent.
81
82
 
82
- ## Historical session delegation
83
+ ## Historical session continuation
83
84
 
84
85
  Use an exact saved session path or full UUID.
85
86
 
86
87
  Verify:
87
88
 
88
89
  - saved definition and cwd are respected;
89
- - session delegation uses the saved cwd;
90
+ - the saved logical label is reused exactly;
91
+ - session continuation uses the saved cwd;
90
92
  - current effective agent override values are used for the new agent
91
93
  generation;
92
94
  - the exact session continues.
@@ -126,9 +126,9 @@ See [Status widget](reference/status-widget.md) for exact state, refresh, and
126
126
  rendering behavior.
127
127
 
128
128
  To continue a completed assignment with its existing conversational context,
129
- use the exact `session_id` returned with its result in a new `delegate.session`
130
- request. This starts a new agent generation with the saved session and current
131
- effective definition configuration.
129
+ use the exact `session_id` returned with its result in a new `continue` request.
130
+ This starts a new agent generation with the saved session and current effective
131
+ definition configuration.
132
132
 
133
133
  ## 7. Recover only when needed
134
134
 
@@ -102,7 +102,7 @@ referencing a disabled definition can remain discoverable, but is rejected durin
102
102
  assignment or fresh agent startup with an explicit disabled-definition reason
103
103
  rather than silently dropping that definition.
104
104
 
105
- Definition and session delegations reject disabled definitions with an
105
+ `delegate` and `continue` reject disabled definitions with an
106
106
  actionable error. An already active agent may finish and remains controllable
107
107
  according to its current available actions; disabling a definition does not
108
108
  mutate that assignment.
@@ -229,7 +229,7 @@ Enable and disable write the scalar `enabled` field in the same global override.
229
229
  Removing that field inherits the bundled value, or `true` when no source
230
230
  declares it.
231
231
 
232
- Changes affect future definition delegations and session continuations, whose
232
+ Changes affect future `delegate` assignments and `continue` assignments, whose
233
233
  runtime configuration comes from the current effective definition. They do not
234
234
  mutate an already-running agent or the lead Pi session.
235
235
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  Pi Herdsman has two text-file mechanisms with different purposes:
6
6
 
7
- - `files` supplies evidence to delegate (definition or session), steer, reply,
7
+ - `files` supplies evidence to delegate, continue, steer, reply,
8
8
  or ask_owner.
9
9
  - whole-line body `@file` references put definition-owned text into the agent
10
10
  system prompt when a new agent generation is built.
@@ -14,7 +14,7 @@ canonical local references and are not copied or snapshotted.
14
14
 
15
15
  ## Message `files`
16
16
 
17
- For `delegate` with `definition`, `delegate` with `session`, `steer`, and
17
+ For `delegate`, `continue`, `steer`, and
18
18
  `reply`, make the message self-contained. Do not attach or mention agent
19
19
  instruction files such as `AGENTS.md`, `CLAUDE.md`, `GEMINI.md`, or equivalents
20
20
  merely because they exist; rely on normal project or runtime discovery.
@@ -34,7 +34,10 @@ Example:
34
34
  "action": "delegate",
35
35
  "definition": "reviewer",
36
36
  "task": "Review the implementation against the approved plan.",
37
- "files": [".pi-herdsman/plan.md", "/tmp/implementation-result"]
37
+ "files": [
38
+ ".pi-herdsman/plan.md",
39
+ "result:550e8400-e29b-41d4-a716-446655440000"
40
+ ]
38
41
  }
39
42
  ```
40
43
 
@@ -52,17 +55,35 @@ A reference-only file uses a self-closing tag:
52
55
  <file name="/absolute/canonical/path" bytes="123" />
53
56
  ```
54
57
 
55
- `name` is the canonical absolute path and `bytes` is the observed file size.
56
- A body means the complete submission-time UTF-8 snapshot was embedded; a
57
- self-closing tag means only the path and size reference was supplied. File
58
- content remains raw text. This markup frames evidence for the model and is not
59
- a security boundary.
58
+ For an ordinary file, `name` is the canonical absolute path and `bytes` is the
59
+ observed file size. For a result reference, an embedded file uses the exact
60
+ `result:<request-id>` as `name`:
60
61
 
61
- `files` is supported by `delegate` with `definition`, `delegate` with `session`,
62
+ ```xml
63
+ <file name="result:550e8400-e29b-41d4-a716-446655440000" bytes="123">
64
+ contents
65
+ </file>
66
+ ```
67
+
68
+ A result that is supplied by reference keeps both identities in its
69
+ self-closing envelope:
70
+
71
+ ```xml
72
+ <file name="result:550e8400-e29b-41d4-a716-446655440000" path="/absolute/canonical/path" bytes="123" />
73
+ ```
74
+
75
+ A body means the complete submission-time UTF-8 snapshot was embedded. For an
76
+ ordinary file, a self-closing tag carries its canonical path and observed byte
77
+ size; for a result reference, it carries the logical result name, the physical
78
+ path attribute, and observed byte size. File content remains raw text. This
79
+ markup frames evidence for the model and is not a security boundary.
80
+
81
+ `files` is supported by `delegate`, `continue`,
62
82
  `steer`, `reply`, and `ask_owner`. For
63
83
  controller actions, relative paths resolve from the calling controller's cwd;
64
- for `ask_owner`, they resolve from the managed agent's cwd. Every accepted
65
- path is displayed using its canonical absolute path.
84
+ for `ask_owner`, they resolve from the managed agent's cwd. Accepted ordinary
85
+ filesystem paths retain canonical absolute-path names; `result:<request-id>`
86
+ inputs retain the logical result reference as the model-facing name.
66
87
 
67
88
  Supplied paths must resolve to readable regular files. Missing, broken,
68
89
  unreadable, and non-regular paths reject the whole operation. Canonical
@@ -79,8 +100,10 @@ For each regular file:
79
100
 
80
101
  - complete strict UTF-8 text without NUL bytes is embedded when the complete
81
102
  message fits the effective configured `mailboxPayloadLimitBytes` boundary;
82
- - invalid UTF-8, NUL-containing, binary, and non-fitting files are represented
83
- only by a canonical local path and observed byte size.
103
+ - invalid UTF-8, NUL-containing, binary, and non-fitting ordinary files are
104
+ represented only by their canonical local path and observed byte size;
105
+ result references retain their logical name and carry the physical path and
106
+ observed byte size.
84
107
 
85
108
  The fixed 1 MiB mailbox protocol safety ceiling is a separate read limit for
86
109
  mailbox records; it does not replace the configured admission limit for new
@@ -92,7 +115,10 @@ or disappear after submission, and the recipient must already have local
92
115
  filesystem/tool access to inspect them. `files` supplies evidence and does not
93
116
  grant runtime capabilities.
94
117
 
95
- Files are read through their canonical `realpath` target.
118
+ Files are read through their canonical `realpath` target. Ordinary file inputs
119
+ are rendered with that canonical path; result references retain the
120
+ `result:<request-id>` name so recipients can pass the same reference through
121
+ `files` again.
96
122
 
97
123
  ## Canonical deduplication
98
124
 
@@ -184,22 +210,30 @@ definition configuration while preserving the saved Pi session context.
184
210
 
185
211
  ## Result handoff
186
212
 
187
- Successful agent completion may expose a private `resultPath`.
213
+ Successful agent completion exposes a canonical `resultRef` such as
214
+ `result:550e8400-e29b-41d4-a716-446655440000`.
188
215
 
189
- For dependent work, pass the exact result path through `files` rather than
190
- copying a large result manually:
216
+ Pass the exact result reference directly through `files` rather than copying a
217
+ large result or reconstructing its physical path:
191
218
 
192
219
  ```json
193
220
  {
194
221
  "action": "delegate",
195
222
  "definition": "reviewer",
196
223
  "task": "Review the implementation described in the supplied result.",
197
- "files": ["/exact/resultPath"]
224
+ "files": ["result:550e8400-e29b-41d4-a716-446655440000"]
198
225
  }
199
226
  ```
200
227
 
201
- Successful agent completions persist their complete output at the canonical
202
- `resultPath`; they do not receive a separate completion overflow path.
228
+ `files` accepts ordinary readable regular local file paths and result
229
+ references. A result reference resolves internally to the normal private
230
+ result file under Pi Herdsman's durable data directory; it is still validated,
231
+ canonicalized, and deduplicated like any other file. Copy the exact reference
232
+ returned by completion. Do not guess or reconstruct the underlying path.
233
+ Completion results live under Pi's agent data directory
234
+ (`~/.pi/agent/pi-herdsman/results` by default, respecting Pi's configured agent
235
+ directory) rather than the OS temporary directory, so result handoffs are not
236
+ subject to temporary-directory cleanup.
203
237
  Oversized non-completion registered-tool output may additionally expose
204
238
  `full_output_path` when overflow persistence succeeds. Model-visible content
205
239
  remains bounded in both cases.
@@ -65,7 +65,7 @@ Do not close solely because of inactivity.
65
65
 
66
66
  ## Startup failure
67
67
 
68
- Fresh and historical-session delegation startup is bounded.
68
+ Fresh delegation and historical-session continuation startup is bounded.
69
69
 
70
70
  When herdr returns a structured failure, Pi Herdsman preserves it. When startup
71
71
  returns empty or malformed output and no better structured error is available,
@@ -116,16 +116,17 @@ not the normal model orchestration interface.
116
116
 
117
117
  ## Historical session failure
118
118
 
119
- A `delegate` with `session` requires an exact session path or full UUID.
119
+ A `continue` requires an exact session path or full UUID.
120
120
 
121
121
  The saved session header must contain a non-empty working directory. Session
122
- delegation uses that saved cwd and does not accept a caller-supplied `cwd`.
122
+ continuation uses that saved cwd and does not accept a caller-supplied `cwd`.
123
123
 
124
- The saved agent-definition name is resolved against the current effective
125
- definition roster. If it no longer exists, session delegation fails instead of guessing a
126
- replacement. The definition must also be enabled and authorized for the current
124
+ The saved agent-definition name and logical label are restored from the managed
125
+ session identity. If the definition no longer exists, continuation fails instead
126
+ of guessing a replacement; a missing or malformed session identity also fails
127
+ closed. The definition must also be enabled and authorized for the current
127
128
  controller, and its current effective configuration is used for the new agent
128
- generation.
129
+ generation. Continuation cannot override or regenerate its saved label.
129
130
 
130
131
  An exact session that is already represented by active or unresolved managed
131
132
  work cannot be activated concurrently. The session-start exclusion applies to
@@ -65,7 +65,7 @@ All effective definitions are sorted and validated together, including every
65
65
 
66
66
  `enabled` controls definition availability. A disabled definition remains in the
67
67
  lead roster so it can be enabled again, but owner-visible definition lists omit
68
- it. Definition and session delegations reject a disabled definition. An already
68
+ it. `delegate` and `continue` reject a disabled definition. An already
69
69
  active agent may finish and remains controllable according to its current
70
70
  available actions; disabling a definition does not mutate that assignment.
71
71
 
@@ -74,7 +74,7 @@ available actions; disabling a definition does not mutate that assignment.
74
74
  | Field | Accepted value | Omitted/default behavior | Runtime/composition behavior |
75
75
  | ----------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
76
76
  | `name` | non-empty string | required | Effective definition identity. |
77
- | `enabled` | boolean | `true` | `false` makes definition and session delegation unavailable; it does not mutate an active agent. |
77
+ | `enabled` | boolean | `true` | `false` makes `delegate` and `continue` unavailable; it does not mutate an active agent. |
78
78
  | `description` | string | absent | Display/selection description. |
79
79
  | `model` | non-empty string | Pi default/current launch behavior | Passed as Pi model selection. |
80
80
  | `thinking` | `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`, or `false` | Pi default/current launch behavior | `false` launches as `off`. |
@@ -2,11 +2,12 @@
2
2
 
3
3
  [Documentation index](../README.md) · [supervision reference](supervision.md)
4
4
 
5
- `agent` is the structured model-facing API for managed agents. It has exactly six actions:
5
+ `agent` is the structured model-facing API for managed agents. It has seven actions:
6
6
 
7
7
  ```text
8
8
  list
9
9
  delegate
10
+ continue
10
11
  steer
11
12
  reply
12
13
  close
@@ -19,12 +20,6 @@ controllers.
19
20
 
20
21
  ## `delegate`
21
22
 
22
- Delegation has exactly two strict variants. The required field (`definition` or
23
- `session`) selects the variant; there is no target discriminator.
24
- Every variant rejects additional properties.
25
-
26
- ### Definition
27
-
28
23
  ```json
29
24
  {
30
25
  "action": "delegate",
@@ -42,39 +37,38 @@ the source for a new derived context; otherwise a new Pi session is launched.
42
37
  Each accepted definition delegation creates one agent generation for one
43
38
  assignment. The terminal result is delivered once and the agent is cleaned up.
44
39
 
45
- ### Session
40
+ ## `continue`
46
41
 
47
42
  ```json
48
43
  {
49
- "action": "delegate",
44
+ "action": "continue",
50
45
  "session": "<exact .jsonl path or full UUID>",
51
46
  "task": "Continue the investigation"
52
47
  }
53
48
  ```
54
49
 
55
- Allowed fields are `action`, `session`, `task`, optional `label`, `files`, and
56
- `timeoutMs`. The exact saved session supplies its cwd, definition identity, and
57
- historical Pi context. Session delegation always creates a new agent generation
50
+ Allowed fields are `action`, `session`, `task`, optional `files`, and
51
+ `timeoutMs`. The exact saved session path or full UUID supplies its cwd,
52
+ definition identity, and historical Pi context. Continuation always creates a new agent generation
58
53
  for one assignment with a live label; it never assigns work to an existing
59
- agent. The saved definition must currently resolve to an enabled, authorized
60
- effective definition, whose current configuration is used for the new
61
- generation.
54
+ agent. `continue` does not accept `cwd` or `fork`; the cwd comes from the saved
55
+ session. The saved definition is resolved again from current configuration and
56
+ must currently be enabled and authorized; its current effective configuration
57
+ is used for the new generation.
62
58
  Concurrent or otherwise conflicting managed representations of the exact
63
- session fail closed. The controller's own active Pi session cannot be delegated
64
- to itself; use definition delegation with `fork` when a separate derived
65
- context is required.
66
-
67
- `label` is optional on both delegation variants and identifies the live
68
- generation, not the continuation session. When omitted, Herdsman chooses a
69
- fresh available label derived from the effective agent definition. An explicit
70
- label is used exactly as the live label; if that label is occupied, delegation
71
- fails with `agent_label_exists`.
72
-
73
- All successful delegation results use `action: "delegate"` and include
74
- `agent`, `definition`, request, session, and startup evidence where available.
75
- Delegation returns after durable acceptance, not completion. A terminal result
76
- also makes the exact session identity prominent so it can be used with a later
77
- `delegate.session` call.
59
+ session fail closed. The controller's own active Pi session cannot be continued
60
+ to itself; use `delegate` with `fork` when a separate derived context is
61
+ required.
62
+
63
+ The saved session's logical label is inherited exactly for the continued
64
+ generation. A caller cannot provide a continuation label; if the inherited
65
+ label is occupied, continuation fails with `agent_label_exists`.
66
+
67
+ Successful `delegate` results use `action: "delegate"`; successful `continue`
68
+ results use `action: "continue"`. Both include `agent`, `definition`, request,
69
+ session, and startup evidence where available. Both return after durable
70
+ acceptance, not completion. A terminal result makes the exact session identity
71
+ prominent for a later `continue` call.
78
72
 
79
73
  ## `list`
80
74
 
@@ -105,8 +99,9 @@ Each actionable live agent record includes:
105
99
  `available_actions` is authoritative model guidance for the current snapshot.
106
100
  Do not infer eligibility from `state`. Active work may list `steer`; a valid
107
101
  correlated pending `ask_owner` may list `reply`; exact direct ownership may list
108
- `close`. `available_actions` never lists `delegate`: an agent cannot receive a
109
- second assignment. Descendant visibility does not grant control. Lead orphan
102
+ `close`. `available_actions` never lists `delegate` or `continue`: these are
103
+ controller operations, not controls on an already-live agent. An agent cannot
104
+ receive a second assignment. Descendant visibility does not grant control. Lead orphan
110
105
  recovery may expose only `close`. Unknown and recovery-only records are
111
106
  non-actionable. Every operation rechecks identity, ownership, mailbox state, and
112
107
  lifecycle immediately before mutation.
@@ -146,15 +141,15 @@ mailbox records, lifecycle, or available controls.
146
141
 
147
142
  ## `files` and `timeoutMs`
148
143
 
149
- `files` is valid on all `delegate` variants and on `steer` and `reply`; it is not
144
+ `files` is valid on `delegate` and `continue`, and on `steer` and `reply`; it is not
150
145
  valid on `list` or `close`. Paths are resolved from the controller cwd, checked
151
146
  as readable regular files, canonicalized with `realpath`, and embedded only
152
147
  when the exact message limit permits. Otherwise they remain canonical references.
153
148
 
154
- `timeoutMs` is valid on definition and session delegation and must be an integer
149
+ `timeoutMs` is valid on `delegate` and `continue` and must be an integer
155
150
  from `5001` through `300000`. The startup budget reserves one bounded diagnostic
156
- window. Current message limits are governed by global/default
157
- settings and the fixed mailbox protocol ceiling. Managed mailbox records use
151
+ window. Current message limits are governed by the Herdsman config file and its
152
+ defaults, plus the fixed mailbox protocol ceiling. Managed mailbox records use
158
153
  protocol V4 in the `mailboxes-v4` namespace, and control requests use the marker prefix
159
154
  `__PI_HERDSMAN_AGENT_V4__:`.
160
155
 
@@ -216,7 +211,7 @@ and has one correlated final result. Delivery goes to the exact owning Pi
216
211
  session and occurs exactly once. Model-visible completion wording uses
217
212
  `agent=<agent>`, `definition=<definition>`, `session=<id>`,
218
213
  `request=<id>`, and status. Details retain durable `agentLabel`,
219
- `agentDefinition`, `piSessionId`, `piSessionFile`, result paths, elapsed time,
214
+ `agentDefinition`, `piSessionId`, `piSessionFile`, result references, elapsed time,
220
215
  context usage, truncation, and persistence-error evidence. The agent is cleaned
221
216
  up after the terminal result is delivered; the Pi session remains available for
222
217
  continuation.
@@ -19,8 +19,8 @@ Commands require a lead Pi session with UI.
19
19
 
20
20
  The plain command opens a native Pi selection menu with `Running`,
21
21
  `Definitions`, `Layout`, `Message limits`, and `Stop all…` destinations. The
22
- Message limits view edits the independent global inline attachment and mailbox
23
- payload limits. It is available only to a lead Pi session with UI. Current
22
+ Message limits view edits the user-wide inline attachment and mailbox payload
23
+ limits. It is available only to a lead Pi session with UI. Current
24
24
  values and presets show a rough token equivalent using four UTF-8 bytes per
25
25
  token. The enforced limits are bytes, not tokens.
26
26
 
@@ -78,7 +78,7 @@ Details re-resolves the selected definition when opened, so it reflects current
78
78
  overlays and body references even if the menu remained open while configuration
79
79
  changed.
80
80
 
81
- Changes apply to future definition delegations and session continuations, not
81
+ Changes apply to future `delegate` assignments and `continue` assignments, not
82
82
  already-running agents or the lead Pi session.
83
83
 
84
84
  Standalone global definitions are editable too. Removing a field from one uses