@estebanforge/pi-antigravity-bridge 1.1.0 → 1.1.2

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
@@ -2,6 +2,23 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.1.2] - 2026-08-10
6
+
7
+ ### Fixed
8
+
9
+ - **MCP bridge startup messages no longer pin above the input.** pi's TUI
10
+ captures extension stderr and pins it above the editor for the whole session,
11
+ which left the `[antigravity-bridge mcp] bridge-config-written` and
12
+ `listening` lines stuck on screen. The lifecycle logger now routes through
13
+ `ctx.ui.notify` (an ephemeral toast that fades); headless print/json modes
14
+ fall back to stderr. Error and diagnostic events use the same channel, so
15
+ they no longer pin either.
16
+
17
+ ## [1.1.1] - 2026-08-06
18
+
19
+ ### Changed
20
+ - **Dependencies updated.** Raised the `pi-coding-agent`, `pi-ai`, `pi-tui` dev pins to `^0.84.0`. Audited against the pi v0.84.0 breaking changes; the custom `streamSimple` provider still matches pi-ai 0.84.0's stream-event contract, and `tsc --noEmit` passes.
21
+
5
22
  ## [1.1.0] - 2026-07-31
6
23
 
7
24
  ### Added
@@ -106,24 +106,31 @@ export default async function (pi: ExtensionAPI): Promise<void> {
106
106
  // unchanged (other instances do not break). Started on session_start so it is
107
107
  // live before the provider's first turn; torn down on session_shutdown.
108
108
  let mcpHandle: McpServerHandle | null = null;
109
- const mcpLog = (s: string, d?: unknown) => {
110
- // Quiet by default: surface only lifecycle/error events to stderr.
111
- // Lifecycle + error events only. Per-turn success events (list-tools /
112
- // call-tool) are deliberately NOT surfaced: writing to stderr during an
113
- // active turn corrupts the pi TUI / construct daemon rendering (spinner
114
- // gets stuck, hint text leaks into the display). Use a status-bar API for
115
- // in-turn visibility instead.
116
- const surfaced = new Set([
117
- "listening", "capability-missing", "http-error", "closed",
118
- "bridge-config-written", "bridge-config-removed", "bridge-config-write-failed",
119
- "call-tool-fail", "transport-error", "handleRequest-error",
120
- "request-error", "request-handler-error", "unauthorized", "self-patch-error",
121
- ]);
122
- if (surfaced.has(s)) {
123
- console.error(`[antigravity-bridge mcp] ${s}${d !== undefined ? " " + JSON.stringify(d) : ""}`);
124
- }
125
- };
126
109
  pi.on("session_start", async (_event, ctx) => {
110
+ // Bridge lifecycle/error logger. Routes through ctx.ui.notify (an
111
+ // ephemeral toast that fades) instead of stderr: pi's TUI captures stderr
112
+ // and pins it above the input for the whole session, which left the
113
+ // startup "bridge-config-written" / "listening" lines stuck on screen all
114
+ // session. Headless modes (print/json, hasUI === false) have no toast, so
115
+ // fall back to stderr there. Per-turn success events (list-tools /
116
+ // call-tool) stay silent either way.
117
+ const mcpLog = (s: string, d?: unknown) => {
118
+ const surfaced = new Set([
119
+ "listening", "capability-missing", "http-error", "closed",
120
+ "bridge-config-written", "bridge-config-removed", "bridge-config-write-failed",
121
+ "call-tool-fail", "transport-error", "handleRequest-error",
122
+ "request-error", "request-handler-error", "unauthorized", "self-patch-error",
123
+ ]);
124
+ if (!surfaced.has(s)) return;
125
+ const msg = `[antigravity-bridge mcp] ${s}${d !== undefined ? " " + JSON.stringify(d) : ""}`;
126
+ if (ctx.hasUI) {
127
+ const ok = s === "listening" || s === "bridge-config-written"
128
+ || s === "bridge-config-removed" || s === "closed";
129
+ ctx.ui.notify(msg, ok ? "info" : "warning");
130
+ } else {
131
+ console.error(msg);
132
+ }
133
+ };
127
134
  // Decide the pi.invokeTool patch + MCP tool bridge path. The patch is only
128
135
  // needed for the bridge; the provider and AskAntigravity tool always work.
129
136
  // The bridge can only start when the patch is LIVE in this process; a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@estebanforge/pi-antigravity-bridge",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Streaming Gemini provider for pi, built on the agy CLI. Registers antigravity/* models in pi's /model picker via SQLite polling + protobuf decode of agy's conversation DBs.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -55,9 +55,9 @@
55
55
  }
56
56
  },
57
57
  "devDependencies": {
58
- "@earendil-works/pi-ai": "^0.82.1",
59
- "@earendil-works/pi-coding-agent": "^0.82.1",
60
- "@earendil-works/pi-tui": "^0.82.1",
58
+ "@earendil-works/pi-ai": "^0.84.0",
59
+ "@earendil-works/pi-coding-agent": "^0.84.0",
60
+ "@earendil-works/pi-tui": "^0.84.0",
61
61
  "@types/node": "^22.0.0",
62
62
  "tsx": "^4.19.0",
63
63
  "typebox": "^1.1.38",