Skip to content

Latest commit

 

History

History
198 lines (143 loc) · 14.3 KB

File metadata and controls

198 lines (143 loc) · 14.3 KB

Changelog

All notable changes to the pi-intercom extension will be documented in this file.

[Unreleased]

Fixed

  • Forked/replaced sessions now register with the broker. The runtime was only initialized on session_start; when a session's id changed in-process without a fresh session_start (forking/branching a session, or a resume path that adopts an id), it never (re-)registered and stayed unreachable until a full process restart. Re-initialize on the first turn whose live session id diverges from the registered identity (or when no session_start ever fired).

[0.6.0] - 2026-05-03

Added

  • Added brokerCommand and brokerArgs config options for choosing the broker runtime command. Thanks to William Fligor for PR #12.

[0.5.0] - 2026-05-03

Changed

  • Busy interactive sessions now queue inbound intercom messages until the receiver is idle instead of aborting the active turn.
  • Sessions now publish automatic lifecycle status (idle, thinking, or tool:<name>) through intercom presence updates.
  • Deferred startup connection, delayed inbound flushes, overlay work, reconnect attempts, and relay callbacks now guard against stale session contexts after shutdown or reload.
  • intercom and contact_supervisor tool calls/results now use compact custom transcript renderers.

[0.4.1] - 2026-05-02

Added

  • Added contact_supervisor reason: "interview_request" for child subagents to send structured supervisor interviews, wait for a reply, and receive parsed JSON replies in tool result details when available.

Fixed

  • Busy non-interactive sessions now auto-reply to top-level intercom messages instead of aborting and losing the message.

[0.4.0] - 2026-05-02

Added

  • Added a contact_supervisor tool for pi-subagents child sessions so delegated agents can request supervisor decisions or send meaningful progress updates with run metadata.
  • Documented subagent-to-supervisor escalation in the README and bundled pi-intercom skill.

Fixed

  • Made inline intercom message cards use the available terminal width instead of a narrow fixed width.
  • Cleared supervisor ask waiters correctly after cancellation or delivery failure so subagents can ask again.

Changed

  • Stopped tracking package-lock.json and ignored local progress.md memory files.

[0.3.0] - 2026-04-27

Added

  • Added pi-subagents grouped result relay support over pi-intercom, including delivery acknowledgments so parent runs can return compact receipts only after the orchestrator receives the result message.

[0.2.1] - 2026-04-26

Fixed

  • Delivered pi-subagents needs-attention control events to the orchestrator over intercom.

[0.2.0] - 2026-04-22

Added

  • Added receiver-side reply ergonomics for inbound asks. Agents can now use intercom({ action: "reply", message }) in the triggered turn or later against a single pending ask, plus intercom({ action: "pending" }) to inspect unresolved inbound asks.

Fixed

  • Migrated extension tool schemas from @sinclair/typebox to typebox 1.x so packaged installs follow Pi's current extension runtime contract.
  • Included reply-tracker.ts in the published package so installed extensions can load the new reply-tracking helper at runtime.
  • Updated the integration test harness to set USERPROFILE alongside HOME, keeping temp-home isolation reliable on Windows.

Changed

  • Moved TypeBox from peerDependencies to a real dependencies entry so pi install production installs keep the schema package available at runtime.
  • Incoming ask reply hints now prefer intercom({ action: "reply", ... }) instead of exposing raw to and replyTo identifiers.
  • Updated the bundled pi-intercom skill and README examples to prefer reply/pending over manual reply threading.

[0.1.11] - 2026-04-20

Added

  • Bundled pi-intercom skill with coordination patterns, error handling, constraints, and optional cmux/tmux peer-session spawning for visible multi-session workflows.
  • pi.skills manifest in package.json so pi install loads the skill automatically.
  • AGENTS.md snippet in README recommending a project-level coordination hint for agents.
  • Attachments example to Quick Start section in README.

Changed

  • Incoming message reply hints now say "To reply, use the intercom tool:" instead of "— reply:" so agents are more likely to use the intercom tool instead of replying inline.
  • ask action now documents the one-at-a-time constraint in the Tool Reference.
  • status action now clarifies that the session count includes the current session.
  • Broker startup no longer uses a non-null assertion for sender session lookup in the send handler — missing sessions now produce a delivery_failed response instead of a crash.
  • Broker spawn lock error handling tightened to check instanceof Error before accessing .code.
  • Broker PID parsing now guards against NaN from corrupt PID files.
  • isConnected() readability cleanup in IntercomClient.
  • README file structure updated to include broker/paths.ts, test files, and skills/ directory.
  • README runtime files section now clarifies that broker.sock is macOS/Linux only; Windows uses a named pipe.
  • README mermaid diagram changed "Unix Socket" to "Local Socket/Pipe" for cross-platform accuracy.
  • README broker limitation rephrased from "must be running" to "auto-spawns on first use and exits when idle."
  • README Install section now mentions that the bundled skill is registered on startup.

[0.1.10] - 2026-04-17

Fixed

  • Broker startup now works on Windows by launching the local tsx CLI through a hidden wscript.exe helper without treating the helper's expected early exit as a broker failure.

Changed

  • The broker now uses a Windows named pipe instead of a Unix socket on Windows, while keeping the existing Unix socket transport on macOS and Linux.

[0.1.9] - 2026-04-17

Fixed

  • Declared the extension entry in package.json via pi.extensions so pi install npm:pi-intercom can discover and load the extension from the npm package.

Changed

  • Added pi-package package metadata plus peer dependency declarations for every Pi runtime package the extension imports, including @mariozechner/pi-tui.

[0.1.8] - 2026-04-14

Changed

  • Intercom sessions now reconnect automatically after broker disconnects or sleep/wake interruptions instead of staying offline until reload or restart.
  • Replaced raw runtime console.error intercom disconnect logging with silent recovery so transient broker churn no longer splashes stray text into the Pi TUI.

[0.1.7] - 2026-04-13

Changed

  • Unnamed sessions now register a runtime-only subagent-chat-<id> intercom alias instead of persisting a generic session title into Pi session history, so pi --resume can keep showing transcript snippets while unnamed sessions remain reachable over intercom.
  • Intercom presence updates now refresh the advertised session name during later turn/intercom activity, so renaming a session does not leave subagents and peers targeting a stale startup alias.

[0.1.6] - 2026-04-13

Changed

  • Busy incoming intercom messages now try a graceful detach handshake with pi-subagents before falling back to interrupting the active turn.
  • Reply follow-ups are deferred and re-delivered as follow-up wakeups so final confirmation messages stop causing unnecessary Operation aborted interruptions.
  • Unnamed sessions now auto-register a stable session-<id> display name so orchestrators and delegated children can target each other reliably without a manual /name.

[0.1.5] - 2026-04-13

Changed

  • Switched intercom send confirmation to opt-in. send now delivers immediately by default, and interactive confirmation only appears when confirmSend: true is set in ~/.pi/agent/intercom/config.json.
  • Replaced the old inverted autoSend config with confirmSend to make the behavior easier to understand.

[0.1.4] - 2026-04-13

Added

  • Added an MIT LICENSE file and set package.json license to MIT.

Changed

[0.1.3] - 2026-04-10

Changed

  • Clearer self vs peer identityintercom({ action: "list" }) now shows Current session and Other sessions, includes short session IDs, and marks same-folder peers with [same cwd] so agents are less likely to mistake another session in the same repo for themselves.
  • Picker self anchor — The session picker now shows the current session as a disabled [self] row at the top while keeping only peer sessions selectable.

[0.1.2] - 2026-04-04

Changed

  • Reply flows skip approvalsend calls that include replyTo now bypass the confirmation dialog so reply-hint conversations can continue without an extra approval step.
  • Overlay readability — The session picker now shows session name/model on the first line and the cwd on a second line with middle truncation, making long paths much easier to distinguish.
  • Documentation clarity — The README now explains which sessions appear in the picker, how sessions become intercom-connected, and the difference between user-facing /intercom usage and agent tool calls.

Fixed

  • Compose overlay crash — Replaced the invalid tui.scheduleRender() calls with tui.requestRender(), fixing the compose overlay crash while typing or sending.
  • Overlay panel chrome — Restored bordered modal rendering for the session picker and compose overlay so they display as proper overlays instead of floating unboxed content.

[0.1.1] - 2026-04-04

Changed

  • Added a promptSnippet for the intercom tool so Pi 0.59+ includes it in the default tool prompt section and improves session-to-session coordination discoverability.

Changed

  • Pi compatibility refresh — Updated the extension to match current Pi lifecycle and custom UI APIs, including session_start / session_shutdown and injected ctx.ui.custom() keybindings.
  • Overlay keybindings — The session picker and compose overlay now use injected, namespaced Pi keybindings instead of reading editor-global bindings directly.
  • Session list correlationlist / sessions now carry a requestId, so a delayed broker reply cannot be mistaken for a newer session-list request.
  • Reply sends skip approvalsend calls that include replyTo now bypass the confirmation dialog so reply-hint flows work without an extra approval step.
  • Documentation accuracy — The README now matches the current implementation, including request correlation, persistence behavior, broker disconnect behavior, and the file layout.

Fixed

  • Protocol state handling — Broker and client now reject malformed, unknown, duplicate, and out-of-order protocol messages instead of silently accepting them.
  • Duplicate-name routing — Sends to a duplicated session name now fail with an explicit error instead of routing to the first match.
  • Delivery failure visibilitydelivery_failed.reason now flows through the client, tool results, and compose overlay error UI.
  • Disconnect and startup errors — Broker spawn failures, early broker exits, protocol failures, and disconnects now preserve the real error instead of collapsing to generic messages.
  • Disconnect-time writes — Client operations now fail cleanly during disconnect instead of writing to a closing socket and triggering write after end errors.
  • Late-response handling — Timed-out send/list requests no longer disconnect the client, and delayed list responses can no longer contaminate a later request with stale data.
  • Config validation — Invalid intercom config values are now reported and ignored instead of silently producing a broken runtime config.

[0.1.0] - 2026-03-12

Added

  • ask actionintercom({ action: "ask", to, message }) now sends a message and blocks until the recipient replies, returning the reply as the tool result. Includes a 10-minute timeout, abort handling, disconnect handling, and shutdown cleanup.
  • Exact reply hints — Incoming messages can now include a ready-to-run reply command that uses the sender's exact session ID as to and the original message ID as replyTo, making synchronous ask/reply flows reliable.
  • Attachment body rendering for incoming messages — Incoming attachment contents are now appended to the agent-visible message body so recipients can read attached file/snippet/context content directly.
  • Planner/worker workflow documentation — README now documents the intended planner-worker loop, including send vs ask, clarification patterns, and reply-hint behavior.

Changed

  • Session target resolutionsend and ask now resolve a unique case-insensitive session name to its exact session ID before sending. Ambiguous names are rejected instead of guessed.
  • Duplicate-name presentation — Session labels are now disambiguated consistently across list, the session picker, the compose overlay, and send notifications by appending a short session ID when names collide.
  • Send confirmation dialog — Confirmation text now includes attachment content previews and replyTo metadata so outgoing messages are reviewed accurately before sending.
  • Inline message rendering — The custom inline renderer now shows the fully rendered message body, optional reply command, attachment summaries, and reply metadata consistently with what the agent receives.

Fixed

  • False ask completions from unrelated messages — Reply matching now requires an exact replyTo match and the expected sender, preventing unrelated incoming messages from unblocking a waiting ask.
  • Self-targeted messagessend and ask now reject attempts to message the current session instead of allowing loops or self-waits.
  • Undelivered ask cleanup — If an ask message is not delivered, the waiting state is torn down cleanly instead of lingering.
  • Inline renderer/body mismatch — The custom message renderer now matches the actual delivered message body for messages with attachments instead of showing a reduced view.
  • Duplicate-name ambiguity when self shares a name — Duplicate-name detection now considers all connected sessions, so another session is still disambiguated when it shares a name with the current session.
  • broker/client.ts sessions switch scoping — Braced the sessions case to avoid block-scoping hazards in the message handler.