@aeondave/pi-persona 1.17.3 → 1.17.5
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/AGENTS.md +57 -36
- package/CHANGELOG.md +106 -1
- package/README.md +32 -16
- package/docs/ARCHITECTURE.md +199 -48
- package/docs/COLLABORATION.md +110 -0
- package/docs/EXPERIENCE.md +33 -8
- package/docs/README.md +12 -0
- package/docs/REFERENCE.md +65 -14
- package/docs/STRATEGIES.md +6 -0
- package/package.json +12 -6
- package/src/agents/agent.ts +6 -0
- package/src/bridge.ts +33 -23
- package/src/bus/broker/client.ts +151 -30
- package/src/bus/broker/host.ts +130 -11
- package/src/bus/broker/messages.ts +35 -5
- package/src/bus/contact-transport.ts +8 -0
- package/src/bus/contact.ts +118 -40
- package/src/bus/peers.ts +23 -6
- package/src/bus/result-reader.ts +88 -0
- package/src/core/brief.ts +14 -4
- package/src/core/capabilities.ts +1 -1
- package/src/core/companion.ts +64 -0
- package/src/core/leg-thinking.ts +57 -0
- package/src/core/ownership.ts +1 -2
- package/src/core/pi-compat.ts +5 -12
- package/src/core/session-runs.ts +1 -1
- package/src/core/types.ts +1 -1
- package/src/engine/adapter.ts +100 -20
- package/src/engine/async.ts +53 -11
- package/src/engine/child.ts +11 -2
- package/src/engine/inproc.ts +98 -47
- package/src/engine/result-grant.ts +62 -0
- package/src/engine/session-tools.ts +6 -0
- package/src/engine/stream.ts +6 -0
- package/src/engine/worktree.ts +17 -7
- package/src/exocom/collaboration-delivery.ts +29 -0
- package/src/exocom/collaboration.ts +148 -0
- package/src/exocom/envelope.ts +43 -4
- package/src/exocom/gate.ts +7 -2
- package/src/exocom/install.ts +45 -17
- package/src/exocom/ledger.ts +58 -8
- package/src/exocom/plane.ts +32 -1
- package/src/exocom/profile.ts +40 -0
- package/src/exocom/registry.ts +5 -0
- package/src/exocom/status.ts +11 -1
- package/src/exocom/write-guard.ts +7 -0
- package/src/extension/broker-host.ts +61 -9
- package/src/extension/companion.ts +38 -0
- package/src/extension/engine.ts +40 -29
- package/src/extension/hooks.ts +954 -931
- package/src/extension/identity.ts +41 -75
- package/src/extension/memory-owner.ts +54 -0
- package/src/extension/mind-worker.ts +129 -0
- package/src/extension/results.ts +138 -0
- package/src/extension/shared.ts +17 -0
- package/src/extension.ts +2922 -2849
- package/src/loader.ts +11 -3
- package/src/orchestration/agent-attempt.ts +15 -0
- package/src/orchestration/flow-journal.ts +7 -1
- package/src/orchestration/flow-run.ts +125 -19
- package/src/orchestration/flow.ts +11 -0
- package/src/orchestration/roster.ts +71 -23
- package/src/orchestration/sdk.ts +61 -19
- package/src/orchestration/types.ts +10 -0
- package/src/persona/model-participants.ts +20 -7
- package/src/persona/orchestrate.ts +6 -7
- package/src/persona/persona.ts +1 -1
- package/src/results/archive.ts +281 -0
- package/src/results/record.ts +166 -0
- package/src/results/retrieval.ts +142 -0
- package/src/results/types.ts +128 -0
- package/src/telemetry/contract.ts +1 -1
- package/src/tools/council.ts +40 -23
- package/src/tools/delegate-tool.ts +50 -14
- package/src/tools/delegate.ts +13 -6
- package/src/tools/exocom-collaboration-input.ts +168 -0
- package/src/tools/exocom-collaboration.ts +315 -0
- package/src/tools/exocom-profile.ts +102 -0
- package/src/tools/exocom.ts +20 -3
- package/src/tools/flow.ts +24 -8
- package/src/tools/intercom-tool.ts +98 -14
- package/src/tools/models.ts +15 -0
- package/src/tools/monitor.ts +20 -1
- package/src/tools/read-result.ts +52 -0
- package/src/tools/timer.ts +23 -2
- package/src/ui/activity-rows.ts +34 -0
- package/src/ui/agent-overlay.ts +23 -13
- package/src/ui/agent-tree.ts +67 -6
- package/src/ui/literal-tool-result.ts +1 -1
- package/src/ui/model-picker.ts +1 -1
- package/src/ui/orchestration-launch.ts +49 -0
- package/src/ui/session-cards.ts +191 -14
- package/src/ui/strategy-leg.ts +40 -0
package/AGENTS.md
CHANGED
|
@@ -37,8 +37,13 @@ the shared behavioral prompt layer: [`docs/SPINE.md`](docs/SPINE.md).
|
|
|
37
37
|
`@earendil-works/pi-*`; never bundle copies.
|
|
38
38
|
- npm publishes as `@aeondave/pi-persona`. Pi supplies the four `@earendil-works/pi-*` packages
|
|
39
39
|
and `typebox`: keep them as `peerDependencies: "*"` with development-only copies, never runtime
|
|
40
|
-
dependencies.
|
|
41
|
-
|
|
40
|
+
dependencies. Target the latest stable Pi only (currently 1.4.0, aligned with `MIN_PI_VERSION`,
|
|
41
|
+
the four development pins and README); do not maintain historical-host compatibility branches.
|
|
42
|
+
**No legacy or deferred cleanup:** remove dead code, obsolete options, superseded implementations
|
|
43
|
+
and compatibility-only aliases with their replacement. Update every caller, fixture and document
|
|
44
|
+
in the same change. A completed feature must not leave temporary scaffolding or cleanup debt.
|
|
45
|
+
Keep a path only when it serves the current host/runtime or a demonstrated current data contract.
|
|
46
|
+
Node.js must be ≥ 22.19 to match that host. Keep the npm
|
|
42
47
|
`files` allowlist explicit for docs/artwork, inspect `npm pack --dry-run`, and never publish drafts.
|
|
43
48
|
- Supply-chain controls: pin every GitHub Action to a verified full commit SHA; keep top-level
|
|
44
49
|
token permissions read-only, grant write permissions only to the reporting job that needs them,
|
|
@@ -175,7 +180,7 @@ the shared behavioral prompt layer: [`docs/SPINE.md`](docs/SPINE.md).
|
|
|
175
180
|
a live, capability-filtered roster (agents, teams and flows, with descriptions and gated flows tagged in
|
|
176
181
|
headless sessions) + a hand-off default (with one decision-class → method line, checked against the
|
|
177
182
|
registry) to the system-prompt TAIL every turn — discovery that survives context burn.
|
|
178
|
-
- **Sibling peer comm
|
|
183
|
+
- **Sibling peer comm**: a strategy can opt a run into direct sibling messaging
|
|
179
184
|
(`AgentRunSpec.peers` — the `debate` strategy does). The child gets a `contact_peer` tool
|
|
180
185
|
(`bus/peers.ts`): `list`/`send`, ONE-WAY only (blocking stays supervisor-only, so peers can
|
|
181
186
|
never deadlock), peer list scoped per engine instance (never the whole bus), send budget 20,
|
|
@@ -183,7 +188,11 @@ the shared behavioral prompt layer: [`docs/SPINE.md`](docs/SPINE.md).
|
|
|
183
188
|
Delivery: the in-process engine's bridge steers incoming bus messages into the child session,
|
|
184
189
|
fenced with the sender attributed OUTSIDE the fence — the same bridge delivers the supervisor's
|
|
185
190
|
`intercom send` (previously a dead letter). Gated by `EffectiveCapabilities.canUseBus` (OFF iff
|
|
186
|
-
the persona explicitly denies `intercom`).
|
|
191
|
+
the persona explicitly denies `intercom`). Child-process legs use the broker's engine-scoped
|
|
192
|
+
peer roster; `contact_peer` is installed only when that run opts in and the bus is allowed.
|
|
193
|
+
Granted communication tools join a nonempty child tool allowlist; explicit empty lists and
|
|
194
|
+
tool exclusions still win. In-process supervisor contact additionally requires `coaching`;
|
|
195
|
+
broker-connected children expose it when the bus is allowed.
|
|
187
196
|
Design: [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md#the-comm-plane-in-practice) + [`docs/STRATEGIES.md`](docs/STRATEGIES.md).
|
|
188
197
|
On the peer plane: `debate` and `pair` always; `map`/`synthesize` opt-in via `params.peers`.
|
|
189
198
|
`magi`/`judge`/`fanout` stay peer-less BY DESIGN — independence is their bias guard
|
|
@@ -191,38 +200,37 @@ the shared behavioral prompt layer: [`docs/SPINE.md`](docs/SPINE.md).
|
|
|
191
200
|
this. `compete` runs its competitors with `isolation: worktree` (REQUIRES a clean git repo; missing
|
|
192
201
|
repo/dirty checkout/worktree failure fails closed and never falls back to the real tree) and returns
|
|
193
202
|
the winning diff for the SUPERVISOR to apply.
|
|
194
|
-
- **
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
`
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
`
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
`
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
(`
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
Design: [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md#exocom--the-external-plane).
|
|
203
|
+
- **Exocom** (`src/exocom/*`, `src/tools/exocom*.ts`; opt-in `PI_PERSONA_EXOCOM=1` / `--exocom`;
|
|
204
|
+
see [the collaboration guide](docs/COLLABORATION.md)): a flat external plane between independent,
|
|
205
|
+
top-level Pi sessions, separate from one supervisor's internal workers. Bare `--exocom` selects the
|
|
206
|
+
current workspace; exact `--exocom=Ab0T` joins that existing scope from another cwd through a
|
|
207
|
+
persistent, case-sensitive four-character Base62 alias. The scope selects registry, transport,
|
|
208
|
+
ledger and artifacts; each member still advertises its actual home workspace. The code is a
|
|
209
|
+
same-host/same-agent-dir join reference, not authentication.
|
|
210
|
+
`EXOCOM_TOOL_NAMES` contains 15 call-time-gated tools: `exocom_list`, `exocom_send`, `exocom_name`,
|
|
211
|
+
`exocom_claim`, `exocom_ask`, `exocom_answer`, `exocom_decline`, `exocom_wait`, `exocom_release`,
|
|
212
|
+
`exocom_progress`, `exocom_status`, `exocom_task`, `exocom_offer`, `exocom_publish`, and
|
|
213
|
+
`exocom_profile`. A joined foreign-workspace peer cannot use `exocom_claim`; write-set task create
|
|
214
|
+
and pickup also require local scope and callable claim permission. Ledger paths are advisory
|
|
215
|
+
coordination, never filesystem authorization.
|
|
216
|
+
`exocom_task create` declares a voluntary task but does not start work or reserve files. The
|
|
217
|
+
immutable `task_id` is the creation frame's `msg_id`; carry it with `work_key` for take, progress,
|
|
218
|
+
finish, offer and publish so a reused work key cannot select another generation. Write-set pickup
|
|
219
|
+
and its claim are one locked ledger transaction; read-only tasks may be taken from a foreign scope.
|
|
220
|
+
An optional `exocom_offer` expires in at most 24 hours (one hour by default) and creates no answer
|
|
221
|
+
obligation. Use `exocom_ask` for an explicit blocking question. `exocom_publish` shares a bounded,
|
|
222
|
+
explicitly written excerpt, not another session's terminal-result archive. Peer prose is fenced and
|
|
223
|
+
attributed using the registry identity.
|
|
224
|
+
Tasks, offers and evidence are each capped at 64 records and 128 KiB aggregate. Terminal or stale
|
|
225
|
+
task facts and expired offers are retained for up to one hour; evidence is retained for up to one
|
|
226
|
+
hour. `exocom_profile` reports self-described capabilities (up to 8 tags, 48 characters each) and
|
|
227
|
+
optional `available`/`busy`/`away` status; absent status is unknown, and profiles confer no access.
|
|
228
|
+
During a pending ask, only settlement, `exocom_name`, status, explicit collaboration reads and
|
|
229
|
+
read-only filesystem tools remain available: profile `get` is allowed, but `set` and `clear` are not.
|
|
230
|
+
Naming remains metadata and does not answer the ask. Joining requires `canUseBus` plus at least one
|
|
231
|
+
callable ask closer (`exocom_answer` or `exocom_decline`) and is rechecked on persona changes.
|
|
232
|
+
Design: [architecture](docs/ARCHITECTURE.md#exocom--the-external-plane) and
|
|
233
|
+
[collaboration guide](docs/COLLABORATION.md).
|
|
226
234
|
|
|
227
235
|
## Testing
|
|
228
236
|
|
|
@@ -260,6 +268,19 @@ the shared behavioral prompt layer: [`docs/SPINE.md`](docs/SPINE.md).
|
|
|
260
268
|
option (a terminal event is observed before the permission gate). A countdown replaces the stall clock; `x`
|
|
261
269
|
cancels one via the stop registry; `X`, the `N agents` count and telemetry exclude them.
|
|
262
270
|
|
|
271
|
+
- Loaded companions: `core/companion.ts` defines the public local presence, live memory-owner and
|
|
272
|
+
activity contracts; `extension/{companion,memory-owner}.ts` bind them to the current native owner.
|
|
273
|
+
Mind requires a compatible loaded partner, never a settings-file inference. Actual selection is
|
|
274
|
+
authoritative with persistence off; both engines freeze it for delegated legs (private per-child
|
|
275
|
+
factory in-process, spawn-local environment for child processes). `ui/activity-rows.ts` projects
|
|
276
|
+
bounded local Mind work without agent counts, controls, wakes, model usage or agent telemetry.
|
|
277
|
+
Automatic semantic review instead uses `pi-persona:mind-worker:v1`: one real tracked Mind worker,
|
|
278
|
+
with the current session model/effort, no tools/fallback/bus, normal shared concurrency and F9
|
|
279
|
+
controls, a 180s deadline, and a terminal archive. Memory/delegate/target permissions still apply.
|
|
280
|
+
Its completion belongs to Mind; it never wakes the supervisor. See the companion architecture contract.
|
|
281
|
+
These cooperative contracts are not authentication; see the loaded-companion section
|
|
282
|
+
in `docs/ARCHITECTURE.md`.
|
|
283
|
+
|
|
263
284
|
- `src/core/` — pure kernel: frontmatter, permissions, contract (+`parseContract`), config, discovery, fence (`fenceUntrusted`), brief (`buildDelegationBrief` — the per-turn roster + standing hand-off default; `buildExocomBrief` — the per-turn exocom peer roster, the peer-vs-sub-agent split, and the relevance bound on a peer exchange), timer (`TimerScheduler` — the alarm engine behind the `timer` tool), session-runs (pure restore-notice helper: what a reload/resume lost + the run-id counter), types.
|
|
264
285
|
- `src/engine/` — `child.ts`, `inproc.ts` (default), `adapter.ts`, `async.ts` (async tracker/peek), `worktree.ts` (git-worktree isolation), `stream.ts` (event→state).
|
|
265
286
|
- `src/orchestration/` — `sdk.ts` (`agent`/`parallel`/`reduce`), `strategy.ts` (registry), `strategies/*.ts`, `voting.ts`, `flow*.ts` (DAG + JSONL journal + checkpoint gates), `roster.ts` (teams + `rosterSpec`: a roster member is a bare name OR an inline `{ agent, role, model, skills }` that specialises one agent — every strategy runs members through `rosterSpec`).
|
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,112 @@ All notable changes to this project are documented here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this project follows the version scheme
|
|
5
5
|
used in its [GitHub releases](https://github.com/AeonDave/pi-persona/releases).
|
|
6
6
|
|
|
7
|
-
## [
|
|
7
|
+
## [1.17.5](https://github.com/AeonDave/pi-persona/releases/tag/v1.17.5) - 2026-10-25
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- A visible asynchronous Mind maintenance worker, pinned to the current session model and effort.
|
|
12
|
+
It shares normal concurrency, F9 controls and result archival, has no tools or model fallback,
|
|
13
|
+
and returns its completion to Mind without starting another supervisor turn.
|
|
14
|
+
- Loaded-companion presence, live memory ownership and bounded `Mind` activity rows. Mind can
|
|
15
|
+
require the actual loaded Persona partner and follow persona changes even with persistence off;
|
|
16
|
+
both engines freeze that owner for delegated legs. Activity stays separate from agents, controls,
|
|
17
|
+
wakes and model usage. These paired contracts require the updated Mind and Persona together.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- Council, MAGI, auxiliary actors and flow legs keep their own model and effort in the live
|
|
22
|
+
tree and F9 when abbreviated roles collide or identical roles use different inline pins.
|
|
23
|
+
Runtime callbacks carry exact attempt identity; retries clear stale observations and terminal
|
|
24
|
+
rows use the engine's observed model. Saved model assignments remain keyed by the full role.
|
|
25
|
+
- Terminal-result capture survives reactivation of the same extension and tracker. Shutdown
|
|
26
|
+
revokes the old archive owner without removing the capture observers or changing their order
|
|
27
|
+
before completion notifications; late results cannot enter another session's archive.
|
|
28
|
+
- Child broker contacts confirm one-way delivery only after admission to the host bus.
|
|
29
|
+
Full inboxes, disconnects, cancellation and missing receipts no longer report `delivered: true`.
|
|
30
|
+
Receipts are bounded and never count as a supervisor answer or authorization.
|
|
31
|
+
Unconfirmed sends and errors after admission no longer claim that the message was dropped;
|
|
32
|
+
the supervisor may already have received it.
|
|
33
|
+
- Reference-flow diagnostics fence worker excerpts even on the defensive missing-reference path.
|
|
34
|
+
- A worker-provided patch remains usable after worktree capture fails, with an explicit warning
|
|
35
|
+
that the patch was not verified against the final worktree state.
|
|
36
|
+
|
|
37
|
+
## [1.17.4](https://github.com/AeonDave/pi-persona/releases/tag/v1.17.4) - 2026-10-25
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
- Voluntary Exocom collaboration: generation-bound shared tasks with atomic pickup/write claims,
|
|
42
|
+
expiring optional invitations, bounded attributed evidence publication and self-reported profiles.
|
|
43
|
+
Stale ownership remains visible without automatic takeover; task/evidence reads are paginated.
|
|
44
|
+
See [the collaboration guide](docs/COLLABORATION.md) for the authority and retention contracts.
|
|
45
|
+
- Uniform operator views across every pi-persona surface: tool cards and commands use compact
|
|
46
|
+
purpose lines with shared-literal expansion (monitor, timer, models, read_result, agent_name,
|
|
47
|
+
contact_supervisor, contact_peer); session cards share the delegate-family frame (`Event · datum`
|
|
48
|
+
titles, indented clipped lines, boilerplate-free compact with drift-guarded projections, full
|
|
49
|
+
payload on expansion); the agent tree and F9 overlay show each leg's effort sigla (`mn l m h xh mx`,
|
|
50
|
+
off renders nothing) with honest requested→observed divergence, and delegate launch cards show the
|
|
51
|
+
full effort level next to the model.
|
|
52
|
+
- Audited all operator notifications: bounded and sanitized toasts, single-surface settlement
|
|
53
|
+
announcements (done/stopped announce once via the follow-up card; failures keep their immediate
|
|
54
|
+
durable surface).
|
|
55
|
+
- Installed-tarball qualification harness (`scripts/qualify-package.mjs`): packs and inspects the
|
|
56
|
+
artifact, installs it into isolated temporary hosts, and exercises real delegation, stop and
|
|
57
|
+
shutdown on both engines with a faux provider, network tripwires and empty credential stores.
|
|
58
|
+
Current policy: latest stable Pi only (1.4.0); historical host versions are rejected.
|
|
59
|
+
- Per-leg thinking/effort: a typed `thinking` level on agents, delegate single/batch calls, roster
|
|
60
|
+
and council members, and auxiliary actors. Precedence is explicit leg/member > agent definition >
|
|
61
|
+
the existing configured/inherited child setting; malformed values fail before launch. Both engines
|
|
62
|
+
report requested and observed Pi effort separately (an observation is Pi's requested effort, never
|
|
63
|
+
a claim about provider cognition); the child engine passes a separate `--thinking` argument and the
|
|
64
|
+
model-suffix synthesis is gone.
|
|
65
|
+
- Bounded durable terminal results: settled delegate/council/flow outcomes are saved as versioned
|
|
66
|
+
session entries with immutable `result:<UUID>` references (count/byte budgets, honest truncation
|
|
67
|
+
and storage receipts). `intercom results` lists them and `intercom result { ref, offset, limit }`
|
|
68
|
+
reads pages after reload — read-only: no respawn, no rebilling, no extra wake. The restore notice
|
|
69
|
+
now distinguishes vanished runtime work from retained terminal reports.
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- Show every council/flow participant's launch model and requested effort, including auxiliary
|
|
74
|
+
judges and repeated roles with distinct inline selections. Persist the receipt for history;
|
|
75
|
+
pending model setup remains explicit. Role hints omit code and technical identifiers rather than
|
|
76
|
+
turning environment-variable names or Git refs into reviewer labels.
|
|
77
|
+
- Treat failed model-availability reads as unavailable rather than advertising the whole catalog.
|
|
78
|
+
Session identity failures remain explicit and cannot reuse a previous owner or synthesize a
|
|
79
|
+
process-based identity; branch recovery restores the persisted name.
|
|
80
|
+
- Admit granted bridge communication tools through Pi 1.4's plain tool allowlist, so a read-only
|
|
81
|
+
worker can still contact its supervisor. Empty grants, explicit exclusions and semantic bus denial
|
|
82
|
+
remain restrictive; sibling contact requires peer opt-in.
|
|
83
|
+
- Refuse incompatible reference-flow journal versions and non-successful archived phases without
|
|
84
|
+
respawning completed work, including unapproved saved checkpoints. Retain truncation provenance
|
|
85
|
+
in resumed previews and final reports.
|
|
86
|
+
- Label compact status usage as cumulative input/output tokens, distinct from context occupancy.
|
|
87
|
+
- Preserve observed model identity after recovery in terminal results and completion views, while
|
|
88
|
+
launch cards retain the original selection. Requested and observed values remain distinguishable.
|
|
89
|
+
- Announce a successful or stopped async run ONCE: the completion follow-up card is the single
|
|
90
|
+
settlement surface (the tree row already settles immediately); the duplicate info toast is gone.
|
|
91
|
+
Failures keep their immediate durable card/sanitized toast.
|
|
92
|
+
- Pin isolated worktree exports to the starting commit, preserving worker commits together with later
|
|
93
|
+
uncommitted changes and new files in the returned patch.
|
|
94
|
+
- Keep unanswered supervisor decisions/interviews unresolved instead of suggesting implicit approval.
|
|
95
|
+
Expose explicit outcomes and suppress bus activity for already-cancelled calls.
|
|
96
|
+
|
|
97
|
+
### Removed
|
|
98
|
+
|
|
99
|
+
- Remove the `/persona none` alias; use `/persona off` to deactivate the current persona.
|
|
100
|
+
- Remove obsolete host API facades, the CJS-only Pi resolver fallback, unused session/notifier
|
|
101
|
+
options, unemitted identity-message aliases and redundant internal re-exports. Callers and test
|
|
102
|
+
fixtures now use the current Pi contracts directly.
|
|
103
|
+
|
|
104
|
+
### Changed
|
|
105
|
+
|
|
106
|
+
- Clarify and regression-test `/persona restore`: overwrite all bundled defaults without pruning
|
|
107
|
+
additional custom personas, agents or resources. Settings, credentials and sessions are not reset.
|
|
108
|
+
- Target the latest stable Pi only (currently 1.4.0): development pins, `MIN_PI_VERSION`, docs and
|
|
109
|
+
the package-qualification gate move together, and historical host versions are rejected. A scoped
|
|
110
|
+
development override pins `undici` past known advisories inside the Pi 1.4.0 host dependency tree.
|
|
111
|
+
- Align source SDK smoke checks with the canonical settings store and the current interactive vs
|
|
112
|
+
headless execution contract; settings qualification also rejects historical host versions.
|
|
8
113
|
|
|
9
114
|
## [1.17.3](https://github.com/AeonDave/pi-persona/tree/v1.17.3) - 2026-10-23
|
|
10
115
|
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# pi-persona
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<img src="assets/banner.png" alt="pi-persona — supervised multi-agent orchestration for Pi">
|
|
4
|
+
<img src="https://raw.githubusercontent.com/AeonDave/pi-persona/v1.17.5/assets/banner.png" alt="pi-persona — supervised multi-agent orchestration for Pi">
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
[](https://github.com/AeonDave/pi-persona/actions/workflows/test.yml) [](https://scorecard.dev/viewer/?uri=github.com/AeonDave/pi-persona) [](https://www.npmjs.com/package/@aeondave/pi-persona) [](LICENSE)
|
|
@@ -17,7 +17,8 @@ you can inspect workers, redirect them, or stop a run while it is in progress.
|
|
|
17
17
|
|
|
18
18
|
## Install
|
|
19
19
|
|
|
20
|
-
Requires **Pi
|
|
20
|
+
Requires **the latest stable Pi (currently 1.4.0)**, **Node.js ≥ 22.19**, and **Git**.
|
|
21
|
+
Update Pi together with this plugin; historical Pi releases are not maintained. Configure a model provider in Pi first.
|
|
21
22
|
|
|
22
23
|
Run in your terminal:
|
|
23
24
|
|
|
@@ -39,9 +40,9 @@ your customizations.
|
|
|
39
40
|
| Install option | Command |
|
|
40
41
|
|---|---|
|
|
41
42
|
| This project only | `pi install -l npm:@aeondave/pi-persona` |
|
|
42
|
-
| Pin this release | `pi install npm:@aeondave/pi-persona@1.17.
|
|
43
|
+
| Pin this release | `pi install npm:@aeondave/pi-persona@1.17.5` |
|
|
43
44
|
| Update an unpinned install | `pi update npm:@aeondave/pi-persona` |
|
|
44
|
-
| Git tag 1.17.
|
|
45
|
+
| Git tag 1.17.5 | `pi install git:github.com/AeonDave/pi-persona@v1.17.5` |
|
|
45
46
|
|
|
46
47
|
Restart Pi after updating. For a pinned install, install the new version or tag explicitly.
|
|
47
48
|
If switching from a Git install, remove that source first with
|
|
@@ -52,7 +53,8 @@ then install the npm package. Keep only one source configured to avoid loading t
|
|
|
52
53
|
|
|
53
54
|
| Capability | What you get |
|
|
54
55
|
|---|---|
|
|
55
|
-
| **Async workers** | Specialists with their own roles, skills, and
|
|
56
|
+
| **Async workers** | Specialists with their own roles, skills, models, and thinking levels; results return while the supervisor continues other work |
|
|
57
|
+
| **Retained results** | Bounded reports remain available after reload and can be read in pages without restarting workers |
|
|
56
58
|
| **Live steering** | Inspect a worker, send guidance, or stop a run from the agent panel |
|
|
57
59
|
| **Cross-session collaboration** | Exocom connects independent Pi sessions to exchange findings and coordinate work |
|
|
58
60
|
| **Councils and flows** | Compare perspectives, run repair-and-check loops, or organize work into stages |
|
|
@@ -119,8 +121,9 @@ To enable Exocom, open two terminals in the same workspace and start each with:
|
|
|
119
121
|
pi --exocom --persona dev
|
|
120
122
|
```
|
|
121
123
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
Use `/exocom` to inspect the connection and workspace code. Sessions can exchange one-way messages,
|
|
125
|
+
record a voluntary task, or share a bounded evidence excerpt. Creating a task does not start work in
|
|
126
|
+
the other session; a peer chooses whether to take it.
|
|
124
127
|
|
|
125
128
|
A session in another workspace can join using that exact, case-sensitive code:
|
|
126
129
|
|
|
@@ -129,10 +132,11 @@ pi --exocom=Ab0T --persona researcher
|
|
|
129
132
|
```
|
|
130
133
|
|
|
131
134
|
Replace `Ab0T` with the code shown by `/exocom`. Both sessions must run on the same machine and
|
|
132
|
-
share a Pi agent directory. A peer joining from another workspace can advise
|
|
133
|
-
it cannot claim
|
|
135
|
+
share a Pi agent directory. A peer joining from another workspace can advise, exchange results, and
|
|
136
|
+
take read-only tasks; it cannot claim or take tasks that declare write paths in the joined workspace.
|
|
134
137
|
|
|
135
|
-
See the [collaboration guide](docs/
|
|
138
|
+
See the [cross-session collaboration guide](docs/COLLABORATION.md) for the task, invitation, ask and
|
|
139
|
+
evidence workflows.
|
|
136
140
|
|
|
137
141
|
## Choose a persona
|
|
138
142
|
|
|
@@ -170,10 +174,11 @@ See [the reference](docs/REFERENCE.md) for an inline council example and recover
|
|
|
170
174
|
Edit installed personas and agents in `~/.pi/agent/persona/agents/`, or add project-specific
|
|
171
175
|
overrides in `.pi/agents/`. Run `/persona reload` after editing.
|
|
172
176
|
|
|
173
|
-
`/persona seed` preserves existing files. **`/persona restore`
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
+
`/persona seed` preserves existing files. **`/persona restore` overwrites all bundled defaults**
|
|
178
|
+
(personas, agents, teams, flows, contracts, presets and shared prompts), discarding customizations
|
|
179
|
+
to those files. It does not delete additional custom files: a persona `pippo.md` or an agent
|
|
180
|
+
`pluto.md` remains untouched. A custom file using the same destination as a bundled default is
|
|
181
|
+
replaced. Settings, credentials, sessions and project-local overrides are not reset.
|
|
177
182
|
|
|
178
183
|
`/persona-settings` is separate from Pi's `/settings`: it edits pi-persona preferences and saved
|
|
179
184
|
persona model assignments, not native Pi or compaction settings. In the TUI, `/` filters settings,
|
|
@@ -181,11 +186,20 @@ persona model assignments, not native Pi or compaction settings. In the TUI, `/`
|
|
|
181
186
|
changes apply after restarting Pi or Pi's native `/reload`, not `/new`; `/persona reload` only
|
|
182
187
|
refreshes persona definitions. Model changes apply to future runs. See [configuration and settings](docs/REFERENCE.md#configuration-and-data).
|
|
183
188
|
|
|
189
|
+
## Optional memory companion
|
|
190
|
+
|
|
191
|
+
[pi-persona-mind 0.8.4](https://github.com/AeonDave/pi-persona-mind/releases/tag/v0.8.4) adds durable
|
|
192
|
+
project/persona memory, session notes and a visible automatic consolidation worker. It requires
|
|
193
|
+
pi-persona 1.17.5 or later. Install it with `pi install npm:@aeondave/pi-persona-mind`, then restart
|
|
194
|
+
Pi or run `/reload`. See its [README](https://github.com/AeonDave/pi-persona-mind#readme) for scope,
|
|
195
|
+
automatic-review limits and undo.
|
|
196
|
+
|
|
184
197
|
## Documentation
|
|
185
198
|
|
|
186
199
|
| Guide | What's inside |
|
|
187
200
|
|---|---|
|
|
188
201
|
| [Everyday use](docs/EXPERIENCE.md) | Choosing a persona, following work, and reading results |
|
|
202
|
+
| [Cross-session collaboration](docs/COLLABORATION.md) | Voluntary tasks, optional offers, asks, evidence and presence between Pi sessions |
|
|
189
203
|
| [Customization reference](docs/REFERENCE.md) | Tool APIs, configuration, and copyable recipes |
|
|
190
204
|
| [Strategies](docs/STRATEGIES.md) | Teams, councils, flows, and orchestration options |
|
|
191
205
|
| [Timers and monitors](docs/MONITORS.md) | Reminders and programs that wake the supervisor |
|
|
@@ -205,8 +219,10 @@ npm test
|
|
|
205
219
|
```
|
|
206
220
|
|
|
207
221
|
Pi loads the TypeScript extension directly; there is no build step.
|
|
208
|
-
|
|
209
|
-
`node
|
|
222
|
+
Qualify the installed tarball on the current host without provider traffic or your profile with
|
|
223
|
+
`node scripts/qualify-package.mjs --host <absolute-path-to-pi-coding-agent-package>`.
|
|
224
|
+
The narrower source-SDK contract check is
|
|
225
|
+
`node --import tsx scripts/qualify-host.mjs <absolute-path-to-pi-coding-agent-package>`; both reject historical host versions.
|
|
210
226
|
The [CI workflow](https://github.com/AeonDave/pi-persona/actions/workflows/test.yml) runs strict
|
|
211
227
|
typechecking, dependency auditing and the test suite on Linux and Windows. The OpenSSF badge links to the project's
|
|
212
228
|
scored supply-chain checks; it is not a certification that the code is free of vulnerabilities.
|