@estebanforge/pi-antigravity-bridge 1.8.2 → 1.8.4
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 +20 -1
- package/package.json +2 -2
- package/src/sysprompt-agent.ts +3 -1
- package/src/web-tools.ts +8 -5
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
|
|
5
|
-
## [
|
|
5
|
+
## [1.8.4] - 2026-10-15
|
|
6
|
+
|
|
7
|
+
### Security
|
|
8
|
+
|
|
9
|
+
- **The MCP SDK floor now carries the OAuth credential-routing fix.**
|
|
10
|
+
`@modelcontextprotocol/sdk` 1.12.0-1.30.1 lets a malicious MCP server
|
|
11
|
+
redirect client OAuth credentials to an attacker-chosen authorization
|
|
12
|
+
server (GHSA-6qxp-vccf-f47h). The bridge runs the SDK server-side only
|
|
13
|
+
(`Server` + `StreamableHTTPServerTransport`) and never acts as an MCP
|
|
14
|
+
OAuth client, so its own exposure was nil, but the floor now points at
|
|
15
|
+
1.31.0, the first fixed version, so installs stop tripping audit. The
|
|
16
|
+
protocol-version clamp is unaffected: it rewrites any unsupported
|
|
17
|
+
`MCP-Protocol-Version` header to the SDK's own `LATEST_PROTOCOL_VERSION`,
|
|
18
|
+
whatever ceiling the new version ships. Lockfiles resolve 1.32.1.
|
|
19
|
+
|
|
20
|
+
## [1.8.3] - 2026-10-13
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
- **The G10 carrier agent no longer dies on invalid YAML frontmatter (issue #5).** `syspromptAgentMd()` wrote the `description` value as an unquoted plain scalar containing a second `: `, which is invalid YAML. agy silently skips an agent whose frontmatter does not parse, so every stream-json turn with the staged carrier (default `systemPrompt: true`, no user-set `config.agent`) failed with `unknown agent "pi-bridge-sys-…"`; the bug has been present since 1.7.8. The value is now quoted, and all three agent.md generators (sysprompt carrier, web delegate, ask-tool reviewer) are pinned by tests that parse the generated frontmatter with a real YAML parser, so a future wording edit cannot reintroduce the silent drop. Leftover broken `pi-bridge-sys-*` dirs need no manual cleanup: the stale-agent sweep prunes them on next staging.
|
|
6
25
|
|
|
7
26
|
## [1.8.2] - 2026-10-13
|
|
8
27
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@estebanforge/pi-antigravity-bridge",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.4",
|
|
4
4
|
"description": "Gemini provider for Pi on the Antigravity ACP server (official Google ACP) or the stream-json agy CLI. Use antigravity/* models in Pi. Full /model picker support. Models runs Pi's tools. ToS safe to use.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pi-package",
|
|
@@ -56,6 +56,6 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@estebanforge/pi-ask-shared": "^0.1.2",
|
|
58
58
|
"@estebanforge/pi-tui-dialogs": "^0.1.2",
|
|
59
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
59
|
+
"@modelcontextprotocol/sdk": "^1.31.0"
|
|
60
60
|
}
|
|
61
61
|
}
|
package/src/sysprompt-agent.ts
CHANGED
|
@@ -44,7 +44,9 @@ export function syspromptAgentMd(name: string, body: string): string {
|
|
|
44
44
|
return [
|
|
45
45
|
"---",
|
|
46
46
|
`name: ${name}`,
|
|
47
|
-
|
|
47
|
+
// Quoted value: it contains ': ', invalid inside an unquoted plain
|
|
48
|
+
// scalar — agy then silently drops the agent (issue #5).
|
|
49
|
+
"description: \"Pi bridge system-prompt carrier: pi operating instructions plus project AGENTS.md context\"",
|
|
48
50
|
"mainAgent: true",
|
|
49
51
|
"model: inherit",
|
|
50
52
|
"---",
|
package/src/web-tools.ts
CHANGED
|
@@ -114,6 +114,11 @@ export interface WebRunOptions {
|
|
|
114
114
|
log?: (event: string, data?: unknown, level?: "info" | "warn" | "error") => void;
|
|
115
115
|
}
|
|
116
116
|
|
|
117
|
+
/** agent.md for the one-shot web delegate: search-only, no inheritance. */
|
|
118
|
+
export function webAgentMd(name: string): string {
|
|
119
|
+
return `---\nname: ${name}\ndescription: Temporary Pi web delegate\nmainAgent: true\nsubagent: false\nmodel: inherit\nexcludeDefaultComponents: true\ninheritCustomizations: false\ninheritMcp: false\ncommandExecutionPolicy: auto\ntools:\n - search_web\n - read_url_content\nskills: []\nrules: []\nagents: []\nmcpServers: []\n---\n\nAnswer the user's query using search_web (and read_url_content when a page must be opened). Cite sources. Use no other tools.\n`;
|
|
120
|
+
}
|
|
121
|
+
|
|
117
122
|
/** One gated one-shot web run. Creates a unique restricted agent, streams the
|
|
118
123
|
* NDJSON frames, refuses answers with no observed allowed-tool step, and
|
|
119
124
|
* always removes the agent dir. */
|
|
@@ -128,11 +133,9 @@ export async function runWebAgent(opts: WebRunOptions): Promise<WebRunResult> {
|
|
|
128
133
|
// commandExecutionPolicy stays at the live-validated "auto": the template's
|
|
129
134
|
// tools list has no command tool and plan mode blocks edits; an unvalidated
|
|
130
135
|
// stricter enum risks agent discovery failing outright.
|
|
131
|
-
writeFileSync(
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
{ mode: 0o600 },
|
|
135
|
-
);
|
|
136
|
+
writeFileSync(path.join(agentDir, "agent.md"), webAgentMd(agentName), {
|
|
137
|
+
mode: 0o600,
|
|
138
|
+
});
|
|
136
139
|
writeFileSync(path.join(agentDir, ".pid"), `${process.pid}\n`, { mode: 0o600 });
|
|
137
140
|
|
|
138
141
|
const bin = opts.bin ?? process.env.AGY_BIN ?? "agy";
|