pi-squire 0.18.2 → 0.18.3

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/CHANGELOG.md CHANGED
@@ -6,6 +6,17 @@ follows [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.18.3] - 2026-11-01
10
+
11
+ ### Changed
12
+
13
+ - Model-facing delegate completion messages link the task copy instead of
14
+ quoting it, omit the workspace launch summary, and keep only the checkout
15
+ summary without path categories. Result bodies, errors, identity and file
16
+ pointers are unchanged. Task previews, workspace facts, and full snapshots
17
+ remain in saved message details and the expanded view. Tests that pinned the
18
+ previous model-facing wording now assert this shorter projection.
19
+
9
20
  ## [0.18.2] - 2026-11-01
10
21
 
11
22
  ### Fixed
@@ -1049,7 +1060,8 @@ author's dotfiles; the changes below are against that copy.
1049
1060
 
1050
1061
  - The published file list includes `child.ts`, which `index.ts` imports.
1051
1062
 
1052
- [Unreleased]: https://github.com/gvanderclay/pi-squire/compare/v0.18.2...HEAD
1063
+ [Unreleased]: https://github.com/gvanderclay/pi-squire/compare/v0.18.3...HEAD
1064
+ [0.18.3]: https://github.com/gvanderclay/pi-squire/compare/v0.18.2...v0.18.3
1053
1065
  [0.18.2]: https://github.com/gvanderclay/pi-squire/compare/v0.18.1...v0.18.2
1054
1066
  [0.18.1]: https://github.com/gvanderclay/pi-squire/compare/v0.18.0...v0.18.1
1055
1067
  [0.18.0]: https://github.com/gvanderclay/pi-squire/compare/v0.17.0...v0.18.0
package/README.md CHANGED
@@ -76,7 +76,7 @@ Then, from a Pi session running in tmux, hand it a task:
76
76
 
77
77
  A detached tmux window named `scout-first` opens in your working directory.
78
78
  When the delegate finishes, its answer reaches the parent as one `[delegate]`
79
- message that quotes the task (see [Results](#results)), and the delegate then
79
+ message that links the task copy (see [Results](#results)), and the delegate then
80
80
  closes its own window ([auto-exit](#auto-exit)).
81
81
 
82
82
  `/delegate` with no arguments opens a form instead: pick an agent, write the
@@ -1450,16 +1450,9 @@ the parent one message labelled delegate output:
1450
1450
  ```
1451
1451
  [delegate] Result from scout (provider/model), delegation <id>, request <request id>.
1452
1452
  Status: done
1453
- Task, quoted from <sent/ copy>:
1454
- > the task
1453
+ Task: <sent/ copy>
1455
1454
  Working directory: <the directory its window opened in>
1456
- Workspace: <how the directory was chosen and its Git checkout at launch>
1457
1455
  Checkout when the result arrived: <branch, head, launch commit, commits since launch, clean or dirty>
1458
- committed since launch: <paths>
1459
- staged: <paths>
1460
- unstaged: <paths>
1461
- untracked: <paths>
1462
- conflicted: <paths>
1463
1456
  Envelope: <cur/ path>
1464
1457
  Delegate session: <session file or id>
1465
1458
 
@@ -1501,19 +1494,22 @@ Delegate session: <session file or id>
1501
1494
  delegations skip it.` (a model scope reads `on model provider/id`; a mark
1502
1495
  that has since cleared reads `it was marked until …`). A failed reply with
1503
1496
  no such mark is unchanged.
1504
- - The task is quoted from the request copy the provider puts on the payload,
1505
- capped at 2 KiB with the copy's `sent/` path. A request with no copy is
1506
- named by id alone.
1497
+ - `Task:` points to the full request copy in `sent/`. The message details
1498
+ and expanded view retain a task preview capped at 2 KiB. A request with no
1499
+ copy gets a diagnostic with its request id.
1507
1500
  - The working directory is the one recorded at launch, or
1508
- `unknown (not recorded)` for a delegation recorded before it was kept. The
1509
- `Workspace:` line repeats the recorded [workspace](#working-directory), and
1510
- is left out for records from before it was kept; the closed-without-a-result
1511
- message carries the same two lines.
1512
- - `Checkout when the result arrived:` is the [snapshot](#checkout-snapshots)
1513
- taken as the reply was claimed, also recorded with the result and in the
1514
- message details and expanded view. The reply is claimed first, so a slow or
1515
- failing Git cannot lose or duplicate it; the snapshot is then unknown. A
1516
- non-Git directory reads `not a Git checkout`.
1501
+ `unknown (not recorded)` for a delegation recorded before it was kept.
1502
+ The recorded [workspace](#working-directory) remains in message details
1503
+ and the expanded view, but the model-facing result omits its launch summary.
1504
+ Closed-without-a-result messages still include that summary when recorded.
1505
+ - `Checkout when the result arrived:` summarizes the
1506
+ [snapshot](#checkout-snapshots) taken as the reply was claimed. Git summaries
1507
+ keep the branch or detached HEAD, full head and launch commit, commits since
1508
+ launch, and working-tree state. Path categories remain in the saved snapshot,
1509
+ message details, and expanded view, not the model-facing result.
1510
+ The reply is claimed first, so a slow or failing Git cannot lose or duplicate
1511
+ it. An unknown snapshot includes the reason. A non-Git directory reads
1512
+ `not a Git checkout`.
1517
1513
  - The envelope path is the claimed reply in the parent's `cur/`; the
1518
1514
  delegate's session path is found by the delegation id in the session
1519
1515
  directory recorded at launch (the parent's current one for older records),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-squire",
3
- "version": "0.18.2",
3
+ "version": "0.18.3",
4
4
  "description": "Starts a delegate Pi session in a background tmux window, sends it the task over message:*, and shows the parent its result",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -1,6 +1,6 @@
1
1
  // The text and details of the one message the parent receives for a settled delegation.
2
2
  import { readMarks } from "./limits.ts";
3
- import { cwdLine, modelLabel, snapshotLines, workspaceLine } from "./render.ts";
3
+ import { cwdLine, modelLabel, snapshotLines } from "./render.ts";
4
4
  import { sessionIdOf } from "./result-sessions.ts";
5
5
  import type { StartedRecorded } from "./result-types.ts";
6
6
  import type { Inbound, MessageDetails, TaskQuote } from "./results.ts";
@@ -88,29 +88,21 @@ export function resultDetails(
88
88
  };
89
89
  }
90
90
 
91
- /** The snapshot lines of the result text: a heading line, then its path lists indented. */
92
91
  function checkoutText(snapshot: WorkspaceSnapshot): string[] {
93
- const [first, ...rest] = snapshotLines(snapshot);
94
- return [`Checkout when the result arrived: ${first}`, ...rest.map((line) => ` ${line}`)];
92
+ const [first] = snapshotLines(snapshot);
93
+ return [`Checkout when the result arrived: ${first}`];
95
94
  }
96
95
 
97
96
  /** The one message the parent model reads for a settled delegation. */
98
97
  export function resultText(details: ResultDetails): string {
99
98
  const { task } = details;
100
- const quote =
101
- "note" in task
102
- ? task.note
103
- : `Task, quoted from ${task.path}:\n${task.text
104
- .split("\n")
105
- .map((line) => `> ${line}`)
106
- .join("\n")}`;
99
+ const taskLine = "note" in task ? task.note : `Task: ${task.path}`;
107
100
  return [
108
101
  `[delegate] Result from ${details.agent} (${modelLabel(details.model, details.finishedModel)}), delegation ${details.id}${details.resumedFrom === undefined ? "" : ` (resumed from ${details.resumedFrom})`}, request ${details.requestId}.`,
109
102
  `Status: ${details.status}`,
110
103
  ...(details.limit === undefined ? [] : [details.limit]),
111
- quote,
104
+ taskLine,
112
105
  `Working directory: ${cwdLine(details.cwd)}`,
113
- ...(details.workspace === undefined ? [] : [`Workspace: ${workspaceLine(details.workspace)}`]),
114
106
  ...(details.workspaceSnapshot === undefined ? [] : checkoutText(details.workspaceSnapshot)),
115
107
  `Envelope: ${details.envelopePath}`,
116
108
  `Delegate session: ${details.sessionPath ?? details.sessionId ?? details.id}`,