pi-squire 0.5.0 → 0.5.1

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,19 @@ follows [Semantic Versioning](https://semver.org/).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.5.1] - 2026-10-14
10
+
11
+ ### Changed
12
+
13
+ - The `delegate` tool's description now tells the parent to keep working or
14
+ end its turn while a delegate runs, since the result starts its next turn
15
+ on its own; the launch message says the same in place of pointing at
16
+ `delegation_status`. GPT parents asked their own delegates for the result
17
+ with `session_mail_ask`, so each report arrived twice.
18
+ - The `delegation_status` description now says to call it to check on a
19
+ delegation that seems stuck or to find its files, not to wait for a result,
20
+ which arrives as a message on its own.
21
+
9
22
  ## [0.5.0] - 2026-10-13
10
23
 
11
24
  ### Changed
@@ -215,7 +228,8 @@ author's dotfiles; the changes below are against that copy.
215
228
 
216
229
  - The published file list includes `child.ts`, which `index.ts` imports.
217
230
 
218
- [Unreleased]: https://github.com/gvanderclay/pi-squire/compare/v0.5.0...HEAD
231
+ [Unreleased]: https://github.com/gvanderclay/pi-squire/compare/v0.5.1...HEAD
232
+ [0.5.1]: https://github.com/gvanderclay/pi-squire/compare/v0.5.0...v0.5.1
219
233
  [0.5.0]: https://github.com/gvanderclay/pi-squire/compare/v0.4.0...v0.5.0
220
234
  [0.4.0]: https://github.com/gvanderclay/pi-squire/compare/v0.3.2...v0.4.0
221
235
  [0.3.2]: https://github.com/gvanderclay/pi-squire/compare/v0.3.1...v0.3.2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-squire",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
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",
package/src/index.ts CHANGED
@@ -312,7 +312,7 @@ function thinkingProblem(value: string): string | undefined {
312
312
  /** The `delegate` tool's description: what delegation does, and the roster as it stands. */
313
313
  function toolDescription(agents: readonly Agent[]): string {
314
314
  const intro =
315
- "Hand a self-contained task to a delegate Pi session in a background tmux window, so it works while you do not. Each call starts the delegation at once; the delegate runs in this session's working directory and agent root and reports back later as one message. Use it when the work is self-contained and you would rather keep your own context for it.";
315
+ "Hand a self-contained task to a delegate Pi session in a background tmux window, so it works while you do not. Each call starts the delegation at once; the delegate runs in this session's working directory and agent root and reports back later as one message. While it runs, keep working or end your turn: its result starts your next turn on its own, so there is no need to ask the delegate for it or poll delegation_status. Use it when the work is self-contained and you would rather keep your own context for it.";
316
316
  if (agents.length === 0) {
317
317
  return `${intro}\n\nNo agents are defined yet. Add ${join(
318
318
  getAgentDir(),
@@ -581,7 +581,7 @@ export default function delegate(
581
581
  const launched = await launch(start, ctx);
582
582
  ctx.ui.notify(started(launched, start), "info");
583
583
  return toolResult(
584
- `Started delegation ${launched.id}: ${start.agent.name} (${start.model}, thinking ${start.thinking}) in window ${launched.windowName}. It runs in the background and its result arrives as a message; delegation_status reports it and delegation_close ends it.${start.skipped.length > 0 ? ` ${fallbackNote(start)}` : ""}${start.notices.map((line) => ` ${line}`).join("")}`,
584
+ `Started delegation ${launched.id}: ${start.agent.name} (${start.model}, thinking ${start.thinking}) in window ${launched.windowName}. It runs in the background, and its result arrives as a message that starts your next turn on its own; delegation_close ends it.${start.skipped.length > 0 ? ` ${fallbackNote(start)}` : ""}${start.notices.map((line) => ` ${line}`).join("")}`,
585
585
  {
586
586
  outcome: "started",
587
587
  id: launched.id,
package/src/tracking.ts CHANGED
@@ -263,7 +263,7 @@ function statusTool(results: Results, tmux: TmuxClient, readingErrors: () => Rea
263
263
  name: "delegation_status",
264
264
  label: "Delegation status",
265
265
  description:
266
- "The delegations this session started, each reported as running (the window is open and no result has arrived yet), done (with the result envelope's status) or closed (closed with delegation_close, or its window is gone). A delegation whose window went with no reply is reported closed without a result until a late reply makes it done. Names the delegation id, agent, session name, model, thinking, window, delegate session path and result envelope path. A running delegation also shows when its session file was last written; a long gap may mean it is stuck but does not prove it. A delegate's window being open means it is connected, not that its task is unfinished or finished; only a result means done.",
266
+ "The delegations this session started, each reported as running (the window is open and no result has arrived yet), done (with the result envelope's status) or closed (closed with delegation_close, or its window is gone). A delegation whose window went with no reply is reported closed without a result until a late reply makes it done. Call it to check on a delegation that seems stuck or to find its files; a result arrives as a message on its own, so there is no need to call it to wait for one. Names the delegation id, agent, session name, model, thinking, window, delegate session path and result envelope path. A running delegation also shows when its session file was last written; a long gap may mean it is stuck but does not prove it. A delegate's window being open means it is connected, not that its task is unfinished or finished; only a result means done.",
267
267
  parameters: Type.Object({
268
268
  id: Type.Optional(Type.String({ description: "One delegation id; omit to report every delegation." })),
269
269
  }),