@simonepri/refined-antigravity-acp 0.2.0 → 1.0.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/dist/bin/cli.js +2 -51
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +44 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/{command.d.ts → core/command.d.ts} +4 -0
- package/dist/src/core/command.d.ts.map +1 -0
- package/dist/src/{command.js → core/command.js} +27 -11
- package/dist/src/core/command.js.map +1 -0
- package/dist/src/core/pipeline.d.ts +20 -0
- package/dist/src/core/pipeline.d.ts.map +1 -0
- package/dist/src/core/pipeline.js +94 -0
- package/dist/src/core/pipeline.js.map +1 -0
- package/dist/src/core/session-cache.d.ts +12 -0
- package/dist/src/core/session-cache.d.ts.map +1 -0
- package/dist/src/core/session-cache.js +85 -0
- package/dist/src/core/session-cache.js.map +1 -0
- package/dist/src/core/supervisor.d.ts +90 -0
- package/dist/src/core/supervisor.d.ts.map +1 -0
- package/dist/src/core/supervisor.js +582 -0
- package/dist/src/core/supervisor.js.map +1 -0
- package/dist/src/core/telemetry.d.ts +23 -0
- package/dist/src/core/telemetry.d.ts.map +1 -0
- package/dist/src/core/telemetry.js +75 -0
- package/dist/src/core/telemetry.js.map +1 -0
- package/dist/src/core/transport.d.ts +7 -0
- package/dist/src/core/transport.d.ts.map +1 -0
- package/dist/src/core/transport.js +37 -0
- package/dist/src/core/transport.js.map +1 -0
- package/dist/src/core/types.d.ts +293 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +78 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/fixes/active-turn-collision/index.d.ts +27 -0
- package/dist/src/fixes/active-turn-collision/index.d.ts.map +1 -0
- package/dist/src/fixes/active-turn-collision/index.js +117 -0
- package/dist/src/fixes/active-turn-collision/index.js.map +1 -0
- package/dist/src/fixes/cancellation-leak/index.d.ts +17 -0
- package/dist/src/fixes/cancellation-leak/index.d.ts.map +1 -0
- package/dist/src/fixes/cancellation-leak/index.js +57 -0
- package/dist/src/fixes/cancellation-leak/index.js.map +1 -0
- package/dist/src/fixes/dangling-tool-calls/index.d.ts +32 -0
- package/dist/src/fixes/dangling-tool-calls/index.d.ts.map +1 -0
- package/dist/src/fixes/dangling-tool-calls/index.js +188 -0
- package/dist/src/fixes/dangling-tool-calls/index.js.map +1 -0
- package/dist/src/fixes/dropped-history-chunks/index.d.ts +47 -0
- package/dist/src/fixes/dropped-history-chunks/index.d.ts.map +1 -0
- package/dist/src/fixes/dropped-history-chunks/index.js +202 -0
- package/dist/src/fixes/dropped-history-chunks/index.js.map +1 -0
- package/dist/src/fixes/flattened-model-efforts/index.d.ts +39 -0
- package/dist/src/fixes/flattened-model-efforts/index.d.ts.map +1 -0
- package/dist/src/fixes/flattened-model-efforts/index.js +306 -0
- package/dist/src/fixes/flattened-model-efforts/index.js.map +1 -0
- package/dist/src/fixes/index.d.ts +25 -0
- package/dist/src/fixes/index.d.ts.map +1 -0
- package/dist/src/fixes/index.js +61 -0
- package/dist/src/fixes/index.js.map +1 -0
- package/dist/src/fixes/malformed-stream-syntax/index.d.ts +44 -0
- package/dist/src/fixes/malformed-stream-syntax/index.d.ts.map +1 -0
- package/dist/src/fixes/malformed-stream-syntax/index.js +346 -0
- package/dist/src/fixes/malformed-stream-syntax/index.js.map +1 -0
- package/dist/src/fixes/missing-localharness/index.d.ts +20 -0
- package/dist/src/fixes/missing-localharness/index.d.ts.map +1 -0
- package/dist/src/fixes/missing-localharness/index.js +103 -0
- package/dist/src/fixes/missing-localharness/index.js.map +1 -0
- package/dist/src/fixes/missing-question-fallback/index.d.ts +30 -0
- package/dist/src/fixes/missing-question-fallback/index.d.ts.map +1 -0
- package/dist/src/fixes/missing-question-fallback/index.js +119 -0
- package/dist/src/fixes/missing-question-fallback/index.js.map +1 -0
- package/dist/src/fixes/missing-slash-skills/index.d.ts +17 -0
- package/dist/src/fixes/missing-slash-skills/index.d.ts.map +1 -0
- package/dist/src/fixes/missing-slash-skills/index.js +107 -0
- package/dist/src/fixes/missing-slash-skills/index.js.map +1 -0
- package/dist/src/{skills.d.ts → fixes/missing-slash-skills/skills.d.ts} +2 -1
- package/dist/src/fixes/missing-slash-skills/skills.d.ts.map +1 -0
- package/dist/src/fixes/missing-slash-skills/skills.js +199 -0
- package/dist/src/fixes/missing-slash-skills/skills.js.map +1 -0
- package/dist/src/fixes/missing-system-prompt/index.d.ts +19 -0
- package/dist/src/fixes/missing-system-prompt/index.d.ts.map +1 -0
- package/dist/src/fixes/missing-system-prompt/index.js +118 -0
- package/dist/src/fixes/missing-system-prompt/index.js.map +1 -0
- package/dist/src/fixes/missing-usage-metrics/index.d.ts +26 -0
- package/dist/src/fixes/missing-usage-metrics/index.d.ts.map +1 -0
- package/dist/src/fixes/missing-usage-metrics/index.js +132 -0
- package/dist/src/fixes/missing-usage-metrics/index.js.map +1 -0
- package/dist/src/fixes/noisy-stderr-logs/index.d.ts +15 -0
- package/dist/src/fixes/noisy-stderr-logs/index.d.ts.map +1 -0
- package/dist/src/fixes/noisy-stderr-logs/index.js +23 -0
- package/dist/src/fixes/noisy-stderr-logs/index.js.map +1 -0
- package/dist/src/fixes/non-canonical-mode-ids/index.d.ts +26 -0
- package/dist/src/fixes/non-canonical-mode-ids/index.d.ts.map +1 -0
- package/dist/src/fixes/non-canonical-mode-ids/index.js +47 -0
- package/dist/src/fixes/non-canonical-mode-ids/index.js.map +1 -0
- package/dist/src/fixes/orphaned-checkpoints/index.d.ts +31 -0
- package/dist/src/fixes/orphaned-checkpoints/index.d.ts.map +1 -0
- package/dist/src/fixes/orphaned-checkpoints/index.js +82 -0
- package/dist/src/fixes/orphaned-checkpoints/index.js.map +1 -0
- package/dist/src/fixes/silent-background-tasks/index.d.ts +66 -0
- package/dist/src/fixes/silent-background-tasks/index.d.ts.map +1 -0
- package/dist/src/fixes/silent-background-tasks/index.js +491 -0
- package/dist/src/fixes/silent-background-tasks/index.js.map +1 -0
- package/dist/src/{mcp-proxy.d.ts → fixes/stale-mcp-endpoints/index.d.ts} +31 -4
- package/dist/src/fixes/stale-mcp-endpoints/index.d.ts.map +1 -0
- package/dist/src/{mcp-proxy.js → fixes/stale-mcp-endpoints/index.js} +162 -14
- package/dist/src/fixes/stale-mcp-endpoints/index.js.map +1 -0
- package/dist/src/fixes/subagent-hang/index.d.ts +2 -0
- package/dist/src/fixes/subagent-hang/index.d.ts.map +1 -0
- package/dist/src/fixes/subagent-hang/index.js +2 -0
- package/dist/src/fixes/subagent-hang/index.js.map +1 -0
- package/dist/src/fixes/subagent-hang/subagent-hang.d.ts +43 -0
- package/dist/src/fixes/subagent-hang/subagent-hang.d.ts.map +1 -0
- package/dist/src/fixes/subagent-hang/subagent-hang.js +114 -0
- package/dist/src/fixes/subagent-hang/subagent-hang.js.map +1 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +43 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/protobuf.d.ts +9 -0
- package/dist/src/lib/protobuf.d.ts.map +1 -0
- package/dist/src/lib/protobuf.js +89 -0
- package/dist/src/lib/protobuf.js.map +1 -0
- package/package.json +40 -7
- package/readme.md +150 -141
- package/assets/icon.svg +0 -3
- package/build/paseo/assets/icon.svg +0 -3
- package/build/paseo/assets/logo.svg +0 -62
- package/build/paseo/index.server.ts +0 -9
- package/build/paseo/paseo-plugin.json +0 -7
- package/build/paseo/server/agy-patch.ts +0 -445
- package/build/paseo/server/auth.ts +0 -122
- package/build/paseo/server/command.ts +0 -92
- package/build/paseo/server/connector.ts +0 -1371
- package/build/paseo/server/history.ts +0 -157
- package/build/paseo/server/mcp-proxy.ts +0 -375
- package/build/paseo/server/provider.ts +0 -37
- package/build/paseo/server/sanitize.ts +0 -286
- package/build/paseo/server/skills.ts +0 -183
- package/build/paseo/server/steering.ts +0 -199
- package/dist/index.server.d.ts +0 -4
- package/dist/index.server.d.ts.map +0 -1
- package/dist/index.server.js +0 -7
- package/dist/index.server.js.map +0 -1
- package/dist/src/agy-patch.d.ts +0 -65
- package/dist/src/agy-patch.d.ts.map +0 -1
- package/dist/src/agy-patch.js +0 -351
- package/dist/src/agy-patch.js.map +0 -1
- package/dist/src/auth.d.ts +0 -27
- package/dist/src/auth.d.ts.map +0 -1
- package/dist/src/auth.js +0 -113
- package/dist/src/auth.js.map +0 -1
- package/dist/src/command.d.ts.map +0 -1
- package/dist/src/command.js.map +0 -1
- package/dist/src/connector.d.ts +0 -187
- package/dist/src/connector.d.ts.map +0 -1
- package/dist/src/connector.js +0 -1127
- package/dist/src/connector.js.map +0 -1
- package/dist/src/history.d.ts +0 -12
- package/dist/src/history.d.ts.map +0 -1
- package/dist/src/history.js +0 -152
- package/dist/src/history.js.map +0 -1
- package/dist/src/mcp-proxy.d.ts.map +0 -1
- package/dist/src/mcp-proxy.js.map +0 -1
- package/dist/src/provider.d.ts +0 -11
- package/dist/src/provider.d.ts.map +0 -1
- package/dist/src/provider.js +0 -31
- package/dist/src/provider.js.map +0 -1
- package/dist/src/sanitize.d.ts +0 -29
- package/dist/src/sanitize.d.ts.map +0 -1
- package/dist/src/sanitize.js +0 -237
- package/dist/src/sanitize.js.map +0 -1
- package/dist/src/skills.d.ts.map +0 -1
- package/dist/src/skills.js +0 -140
- package/dist/src/skills.js.map +0 -1
- package/dist/src/steering.d.ts +0 -30
- package/dist/src/steering.d.ts.map +0 -1
- package/dist/src/steering.js +0 -174
- package/dist/src/steering.js.map +0 -1
- package/paseo-plugin.json +0 -8
- package/scripts/build-paseo.js +0 -60
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protobuf.js","sourceRoot":"","sources":["../../../src/lib/protobuf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simonepri/refined-antigravity-acp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "A hardened wrapper around Google's official Antigravity ACP binary.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"acp",
|
|
7
|
+
"acp-protocol",
|
|
8
|
+
"agent-client-protocol",
|
|
9
|
+
"agy",
|
|
10
|
+
"agy-acp",
|
|
11
|
+
"agy-proxy",
|
|
12
|
+
"antigravity",
|
|
13
|
+
"antigravity-acp",
|
|
14
|
+
"antigravity-ai",
|
|
15
|
+
"gemini",
|
|
16
|
+
"google-antigravity",
|
|
17
|
+
"mcp",
|
|
18
|
+
"paseo",
|
|
19
|
+
"provider",
|
|
20
|
+
"refined",
|
|
21
|
+
"zed"
|
|
22
|
+
],
|
|
5
23
|
"homepage": "https://github.com/simonepri/refined-antigravity-acp#readme",
|
|
6
24
|
"bugs": {
|
|
7
25
|
"url": "https://github.com/simonepri/refined-antigravity-acp/issues"
|
|
@@ -17,14 +35,19 @@
|
|
|
17
35
|
},
|
|
18
36
|
"files": [
|
|
19
37
|
"dist",
|
|
20
|
-
"build/paseo",
|
|
21
|
-
"scripts",
|
|
22
|
-
"paseo-plugin.json",
|
|
23
38
|
"readme.md",
|
|
24
39
|
"license",
|
|
25
40
|
"assets"
|
|
26
41
|
],
|
|
27
42
|
"type": "module",
|
|
43
|
+
"main": "dist/src/index.js",
|
|
44
|
+
"types": "dist/src/index.d.ts",
|
|
45
|
+
"exports": {
|
|
46
|
+
".": {
|
|
47
|
+
"types": "./dist/src/index.d.ts",
|
|
48
|
+
"import": "./dist/src/index.js"
|
|
49
|
+
}
|
|
50
|
+
},
|
|
28
51
|
"publishConfig": {
|
|
29
52
|
"access": "public"
|
|
30
53
|
},
|
|
@@ -32,19 +55,29 @@
|
|
|
32
55
|
"test": "vitest run",
|
|
33
56
|
"typecheck": "tsc --noEmit",
|
|
34
57
|
"lint": "oxlint",
|
|
58
|
+
"lint:json": "node bin/lint-json.mjs",
|
|
59
|
+
"lint:pub": "pnpm run build && publint --strict",
|
|
60
|
+
"lint:md": "mmdlint readme.md",
|
|
61
|
+
"lint:actions": "actionlint",
|
|
62
|
+
"lint:yaml": "yamllint .github/workflows/",
|
|
35
63
|
"format": "oxfmt",
|
|
36
64
|
"format:check": "oxfmt --check",
|
|
37
65
|
"dead-code": "fallow dead-code",
|
|
66
|
+
"check": "pnpm run format:check && pnpm run lint && pnpm run lint:json && pnpm run lint:pub && pnpm run lint:md && pnpm run lint:actions && pnpm run lint:yaml && pnpm run typecheck && pnpm run dead-code",
|
|
38
67
|
"build": "tsc -p tsconfig.build.json",
|
|
39
|
-
"prepack": "pnpm build
|
|
40
|
-
"
|
|
68
|
+
"prepack": "pnpm build",
|
|
69
|
+
"test:e2e": "vitest run -c vitest.e2e.config.ts"
|
|
41
70
|
},
|
|
42
71
|
"devDependencies": {
|
|
43
|
-
"@
|
|
72
|
+
"@agentclientprotocol/sdk": "^1.5.0",
|
|
73
|
+
"@sysid/mmdlint": "^0.1.1",
|
|
44
74
|
"@types/node": "^24.3.0",
|
|
75
|
+
"ajv": "^8.20.0",
|
|
76
|
+
"ajv-formats": "^3.0.1",
|
|
45
77
|
"fallow": "^3.28.0",
|
|
46
78
|
"oxfmt": "^0.70.0",
|
|
47
79
|
"oxlint": "^1.85.0",
|
|
80
|
+
"publint": "^0.3.24",
|
|
48
81
|
"typescript": "^5.9.3",
|
|
49
82
|
"vitest": "^5.0.1"
|
|
50
83
|
},
|
package/readme.md
CHANGED
|
@@ -17,9 +17,23 @@
|
|
|
17
17
|
<a href="https://pnpm.io/">
|
|
18
18
|
<img src="https://img.shields.io/badge/package_manager-pnpm-F69220?logo=pnpm&logoColor=white" alt="pnpm">
|
|
19
19
|
</a>
|
|
20
|
+
<br>
|
|
21
|
+
<!-- Quality & Tooling -->
|
|
22
|
+
<a href="https://oxc.rs/">
|
|
23
|
+
<img src="https://img.shields.io/badge/formatter-oxfmt-orange?logo=rust&logoColor=white" alt="oxfmt">
|
|
24
|
+
</a>
|
|
20
25
|
<a href="https://oxc.rs/">
|
|
21
26
|
<img src="https://img.shields.io/badge/linter-oxlint-orange?logo=rust&logoColor=white" alt="oxlint">
|
|
22
27
|
</a>
|
|
28
|
+
<a href="https://publint.dev/">
|
|
29
|
+
<img src="https://img.shields.io/badge/packaging-publint-2A52BE?logo=npm&logoColor=white" alt="publint">
|
|
30
|
+
</a>
|
|
31
|
+
<a href="https://github.com/trumppet/fallow">
|
|
32
|
+
<img src="https://img.shields.io/badge/dead_code-fallow-5C2D91?logoColor=white" alt="fallow">
|
|
33
|
+
</a>
|
|
34
|
+
<a href="https://github.com/rhysd/actionlint">
|
|
35
|
+
<img src="https://img.shields.io/badge/workflows-actionlint-2088FF?logo=githubactions&logoColor=white" alt="actionlint">
|
|
36
|
+
</a>
|
|
23
37
|
<br>
|
|
24
38
|
<!-- Verification -->
|
|
25
39
|
<a href="https://github.com/simonepri/refined-antigravity-acp/actions/workflows/ci.yml">
|
|
@@ -30,11 +44,17 @@
|
|
|
30
44
|
</a>
|
|
31
45
|
<br>
|
|
32
46
|
<!-- Distribution -->
|
|
47
|
+
<a href="https://www.npmjs.com/package/@simonepri/refined-antigravity-acp">
|
|
48
|
+
<img src="https://img.shields.io/npm/v/@simonepri/refined-antigravity-acp?logo=npm&logoColor=white" alt="npm version">
|
|
49
|
+
</a>
|
|
50
|
+
<a href="https://github.com/simonepri/refined-antigravity-acp/stargazers">
|
|
51
|
+
<img src="https://img.shields.io/github/stars/simonepri/refined-antigravity-acp?style=flat&logo=github&logoColor=white" alt="GitHub stars">
|
|
52
|
+
</a>
|
|
33
53
|
<a href="https://github.com/googleapis/release-please">
|
|
34
54
|
<img src="https://img.shields.io/badge/released_with-Release_Please-4285F4?logo=google&logoColor=white" alt="Released with Release Please">
|
|
35
55
|
</a>
|
|
36
56
|
<a href="https://github.com/getpaseo/paseo">
|
|
37
|
-
<img src="https://img.shields.io/badge/ecosystem-
|
|
57
|
+
<img src="https://img.shields.io/badge/ecosystem-Paseo_ACP_Provider-20744A?logo=buffer&logoColor=white" alt="Paseo ACP Provider">
|
|
38
58
|
</a>
|
|
39
59
|
<a href="license">
|
|
40
60
|
<img src="https://img.shields.io/github/license/simonepri/refined-antigravity-acp" alt="MIT license">
|
|
@@ -47,108 +67,123 @@
|
|
|
47
67
|
|
|
48
68
|
---
|
|
49
69
|
|
|
50
|
-
##
|
|
70
|
+
## Overview
|
|
51
71
|
|
|
52
|
-
**Refined Antigravity ACP** is
|
|
72
|
+
**Refined Antigravity ACP** is a proxy wrapper around Google's official Antigravity ACP binary (`agy_acp_server.par`).
|
|
53
73
|
|
|
54
|
-
Google's binary
|
|
74
|
+
Google's binary executes models, agent loops, and tool calls. This proxy intercepts the ACP stream between editor and server to fix upstream crashes and deadlocks, normalize MCP traffic, and integrate with **Paseo**, **Zed**, and other ACP clients.
|
|
55
75
|
|
|
56
76
|
```mermaid
|
|
57
77
|
flowchart LR
|
|
58
78
|
subgraph Editors["Supported ACP Clients"]
|
|
59
|
-
PaseoUI["Paseo<br>(
|
|
79
|
+
PaseoUI["Paseo<br>(ACP Agent Provider)"]
|
|
60
80
|
ZedUI["Zed Editor<br>(Stdio Agent)"]
|
|
61
81
|
OtherUI["Neovim / JetBrains / Custom<br>(Standard ACP)"]
|
|
62
82
|
end
|
|
63
83
|
|
|
64
|
-
subgraph Wrapper["Refined Antigravity ACP"]
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
84
|
+
subgraph Wrapper["Refined Antigravity ACP (Proxy & Hardening Layer)"]
|
|
85
|
+
direction TB
|
|
86
|
+
|
|
87
|
+
Supervisor["Process Supervisor<br>• Subprocess Lifecycle & Health<br>• Transparent Crash Recovery<br>• Multi-Session State Cache"]
|
|
88
|
+
|
|
89
|
+
subgraph Pipeline["Bidirectional ACP Pipeline"]
|
|
90
|
+
direction TB
|
|
91
|
+
Outbound["Outbound Stream<br>• Request & Option Normalization<br>• Workspace Context Injection<br>• MCP Port & URL Rewriting"]
|
|
92
|
+
Inbound["Inbound Stream<br>• Output & Stream Sanitization<br>• Progress & Plan Synthesis<br>• Interruption Leak Cleanup"]
|
|
93
|
+
Telemetry["Telemetry & Diagnostics<br>• Real-time Stderr Event Tracking<br>• SQLite Checkpoint & History Repair<br>• Token Usage Extraction"]
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
McpProxy["Loopback MCP Proxy Pool<br>• Dynamic Endpoint Remapping<br>• Protocol Version Adaptation"]
|
|
97
|
+
|
|
98
|
+
Supervisor <--> Pipeline
|
|
99
|
+
Supervisor <--> McpProxy
|
|
79
100
|
end
|
|
80
101
|
|
|
81
102
|
subgraph Upstream["Google Official Backend"]
|
|
82
103
|
Kernel["agy_acp_server.par<br>(Google Subprocess)"]
|
|
104
|
+
LocalDb[(Local SQLite Store<br>Conversations & Steps)]
|
|
83
105
|
GeminiCloud["Google DeepMind / Gemini Cloud"]
|
|
84
|
-
Kernel <-->|"gRPC / HTTPS"| GeminiCloud
|
|
85
|
-
end
|
|
86
106
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
Wrapper <-->|"Standard ACP (NDJSON)"| Kernel
|
|
91
|
-
|
|
92
|
-
classDef editor fill:#20744A,stroke:#10B981,color:#fff,stroke-width:2px;
|
|
93
|
-
classDef wrapper fill:#0F172A,stroke:#3B82F6,color:#fff,stroke-width:2px;
|
|
94
|
-
classDef google fill:#1E293B,stroke:#64748B,color:#fff,stroke-width:2px;
|
|
107
|
+
Kernel <-->|gRPC / HTTPS| GeminiCloud
|
|
108
|
+
Kernel <-->|WAL Journal| LocalDb
|
|
109
|
+
end
|
|
95
110
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
111
|
+
Editors <-->|Stdio NDJSON CLI| Supervisor
|
|
112
|
+
Supervisor <-->|Standard ACP NDJSON| Kernel
|
|
113
|
+
Pipeline -.->|Direct Read / Heal| LocalDb
|
|
114
|
+
McpProxy <-->|HTTP Rewriting| Kernel
|
|
115
|
+
|
|
116
|
+
classDef editor fill:#20744A,stroke:#10B981,color:#fff,stroke-width:2px
|
|
117
|
+
classDef wrapper fill:#0F172A,stroke:#3B82F6,color:#fff,stroke-width:2px
|
|
118
|
+
classDef component fill:#1E293B,stroke:#60A5FA,color:#fff,stroke-width:1px
|
|
119
|
+
classDef google fill:#18181B,stroke:#71717A,color:#fff,stroke-width:2px
|
|
120
|
+
classDef db fill:#312E81,stroke:#818CF8,color:#fff,stroke-width:2px
|
|
121
|
+
|
|
122
|
+
class PaseoUI,ZedUI,OtherUI editor
|
|
123
|
+
class Supervisor,Pipeline,McpProxy,Outbound,Inbound,Telemetry component
|
|
124
|
+
class Kernel,GeminiCloud google
|
|
125
|
+
class LocalDb db
|
|
99
126
|
```
|
|
100
127
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
## What Does This ACP Give You?
|
|
104
|
-
|
|
105
|
-
### Upstream Bugfixes & Hardening
|
|
106
|
-
|
|
107
|
-
| Area | Upstream Issue | Mitigation in Refined ACP |
|
|
108
|
-
| :----------------------------------------- | :--------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |
|
|
109
|
-
| 🛡️ **Subagent & Task Hangs** | Upstream binary permanently wedges in `STATE_WAITING_FOR_TASKS` when launching subagents or background tasks. | 3-layer defense: automated non-destructive binary patch, stderr telemetry hang detection, and transparent process recycling. |
|
|
110
|
-
| ⏳ **Turn Completion & Infinite Spinners** | Upstream omits the final JSON-RPC prompt response after completing user turns, leaving editors spinning forever. | Stream-detects `TARGET_USER` `STATE_DONE` telemetry, runs a 5s grace timer, and fires synthetic `end_turn` completions. |
|
|
111
|
-
| 🔌 **MCP Header & 4xx Fatal Crashes** | Upstream Go SDK harnesses crash fatally on notification 4xx HTTP responses or missing `Accept` headers. | In-process loopback MCP proxy normalizes headers and absorbs notification 4xx errors with HTTP `202 Accepted`. |
|
|
112
|
-
| 🧼 **Internal Markup Leaks** | Raw harness internal markers (`<system_message>`, `<context>`, `<messaging>`) leak into user output. | Live stream sanitizer strips internal tags and converts raw HTML elements into clean Markdown. |
|
|
113
|
-
|
|
114
|
-
### Enhanced Capabilities
|
|
128
|
+
The matrix below documents upstream defects across process startup, turn execution, cancellation, and session replay. Each entry links directly to tests demonstrating the defect (**Problem**) and the fix (**Solution**).
|
|
115
129
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
**
|
|
130
|
+
> [!TIP]
|
|
131
|
+
>
|
|
132
|
+
> ### ⭐️ Help Retire These Patches
|
|
133
|
+
>
|
|
134
|
+
> Refined Antigravity ACP is a transitional hardening layer. When Google resolves a defect in an official release, the corresponding problem test verifies the fix and the wrapper retires the patch.
|
|
135
|
+
>
|
|
136
|
+
> To help prioritize upstream fixes:
|
|
137
|
+
>
|
|
138
|
+
> - **Star the repository**: Community visibility signals to the Google Antigravity team which upstream defects impact real users.
|
|
139
|
+
> - **Report new issues**: If you encounter an unhandled crash, deadlock, or protocol edge case, [open an issue](https://github.com/simonepri/refined-antigravity-acp/issues). Every report includes a reproducible problem test and a solution test.
|
|
140
|
+
|
|
141
|
+
| Defect | Upstream Problem | Solution |
|
|
142
|
+
| :----------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
143
|
+
| [**Missing Localharness Binary**](src/fixes/missing-localharness/index.ts) | **Problem**: `agy_acp_server` invokes sibling `./localharness_external`. When relocated or spawned in an isolated directory without `$ANTIGRAVITY_HARNESS_PATH`, it crashes on `session/new`.<br>🔗 [`problem: startup crash`](src/fixes/missing-localharness/index.e2e.test.ts#L20) | Searches standard install paths, downloads the official package if missing, and exports the resolved `$ANTIGRAVITY_HARNESS_PATH`.<br>🔗 [`solution: harness resolution`](src/fixes/missing-localharness/index.e2e.test.ts#L38) |
|
|
144
|
+
| [**Missing Custom System Prompt**](src/fixes/missing-system-prompt/index.ts) | **Problem**: Stock ACP protocol does not support injecting custom workspace rules, agent personas, or profile system prompts.<br>🔗 [`problem: missing system prompt context`](src/fixes/missing-system-prompt/index.e2e.test.ts#L6) | Injects client-configured `systemPrompt` (via `_meta.systemPrompt` or nested `_meta.<client>.systemPrompt`) and tool visibility guidance into prompt turns without polluting saved history.<br>🔗 [`solution: prompt injection`](src/fixes/missing-system-prompt/index.e2e.test.ts#L15) |
|
|
145
|
+
| [**Unadvertised Workspace Slash Skills**](src/fixes/missing-slash-skills/index.ts) | **Problem**: Raw ACP only advertises built-in model commands and ignores custom workspace skills defined in `.agents/skills` or `.gemini/skills`.<br>🔗 [`problem: missing slash skills`](src/fixes/missing-slash-skills/index.e2e.test.ts#L40) | Discovers `SKILL.md` files across all configured workspace directories and dynamically augments `available_commands_update`.<br>🔗 [`solution: skill augmentation`](src/fixes/missing-slash-skills/index.e2e.test.ts#L73) |
|
|
146
|
+
| [**Subagent Deadlock & Hang**](src/fixes/subagent-hang/index.ts) | **Problem**: Subprocesses can enter unmonitored hangs or panic (`could not find doneCh for checkpoint`) during background task execution.<br>🔗 [`problem: unmonitored hang`](src/fixes/subagent-hang/index.e2e.test.ts#L7) | Monitors telemetry activity and stderr panics to trigger process recycling without mutating upstream Python bytecode.<br>🔗 [`solution: hang telemetry recycling`](src/fixes/subagent-hang/index.e2e.test.ts#L22) |
|
|
147
|
+
| [**Malformed Stream Syntax & LaTeX**](src/fixes/malformed-stream-syntax/index.ts) | **Problem**: LLM outputs unquoted node labels with parentheses (`id[Label (Prod)]`) and raw LaTeX math (`\\le`), crashing frontend Mermaid and markdown parsers.<br>🔗 [`problem: syntax normalization`](src/fixes/malformed-stream-syntax/index.e2e.test.ts#L42) | Wraps parenthetical labels in quotes `["..."`] and converts LaTeX escapes to clean Unicode characters (`≤`, `→`, `≠`) across streaming chunks.<br>🔗 [`solution: stream sanitizer`](src/fixes/malformed-stream-syntax/index.e2e.test.ts#L42) |
|
|
148
|
+
| [**Active Foreground Turn Collision**](src/fixes/active-turn-collision/index.ts) | **Problem**: Sending a prompt while the model is executing tool calls either crashes or is rejected with _"A foreground turn is already active"_.<br>🔗 [`problem: foreground active collision`](src/fixes/active-turn-collision/index.e2e.test.ts#L13) | Categorizes mid-turn inputs (side questions, course corrections, or stop requests) with non-destructive steering directives and prompt retries.<br>🔗 [`solution: user steering`](src/fixes/active-turn-collision/index.e2e.test.ts#L26) |
|
|
149
|
+
| [**Interruption Cancellation Leak**](src/fixes/cancellation-leak/index.ts) | **Problem**: Interrupted turns leak raw internal Go/Python cancellation exception strings (_"context canceledThe request was cancelled by the client."_) directly into assistant message chunks.<br>🔗 [`problem: raw cancellation leak`](src/fixes/cancellation-leak/index.e2e.test.ts#L6) | Drops raw upstream cancellation error chunks so editor chat feeds remain clean on interruption.<br>🔗 [`solution: cancellation drop`](src/fixes/cancellation-leak/index.e2e.test.ts#L11) |
|
|
150
|
+
| [**Stale Ephemeral MCP Endpoints**](src/fixes/stale-mcp-endpoints/index.ts) | **Problem**: When a hung child process is recycled, resending initial `mcpServers` with outdated localhost ports fails because proxy endpoints have changed.<br>🔗 [`problem: stale proxy port`](src/fixes/stale-mcp-endpoints/index.e2e.test.ts#L20) | Uses `McpProxyPool` to dynamically intercept, remap, and heal MCP tool URLs across process restarts.<br>🔗 [`solution: proxy URL remapping`](src/fixes/stale-mcp-endpoints/index.e2e.test.ts#L20) |
|
|
151
|
+
| [**Orphaned SQLite Checkpoints**](src/fixes/orphaned-checkpoints/index.ts) | **Problem**: Canceling a turn leaves in-progress checkpoints uncommitted in SQLite, causing fatal panics (_"could not find doneCh for checkpoint"_) on future turns.<br>🔗 [`problem: orphaned checkpoint`](src/fixes/orphaned-checkpoints/index.e2e.test.ts#L11) | Scans the session SQLite database on startup and teardown, updating orphaned in-progress checkpoints to `ABORTED` (status 5).<br>🔗 [`solution: checkpoint repair`](src/fixes/orphaned-checkpoints/index.e2e.test.ts#L42) |
|
|
152
|
+
| [**Unscoped Database Corruptions**](src/fixes/orphaned-checkpoints/index.ts) | **Problem**: Global database repair scans would mutate concurrent session databases across open tabs, corrupting active turns.<br>🔗 [`problem: concurrent tab safety`](src/fixes/orphaned-checkpoints/index.e2e.test.ts#L78) | Scopes checkpoint repair strictly to the target `sessionId.db`, isolating concurrent editor tabs.<br>🔗 [`solution: scoped session repair`](src/fixes/orphaned-checkpoints/index.e2e.test.ts#L117) |
|
|
153
|
+
| [**Database Concurrency Lockout**](src/fixes/orphaned-checkpoints/index.ts) | **Problem**: Raw `DatabaseSync` without busy timeout throws `SQLITE_BUSY: database is locked` when reading conversation steps during active writes.<br>🔗 [`problem: raw sqlite busy error`](src/fixes/orphaned-checkpoints/index.ts#L41) | Configures all database connections with `timeout: 2000` to wait out locks during concurrent reads and writes.<br>🔗 [`solution: sqlite timeout wait`](src/fixes/orphaned-checkpoints/index.ts#L41) |
|
|
154
|
+
| [**Dropped History Chunks on Load**](src/fixes/dropped-history-chunks/index.ts) | **Problem**: Raw `agy_acp_server` drops thought chains and agent message chunks during `session/load`, loading an incomplete history.<br>🔗 [`problem: dropped history chunks`](src/fixes/dropped-history-chunks/index.e2e.test.ts#L53) | Directly inspects protobuf steps in SQLite and reconstructs missing thought and message update events.<br>🔗 [`solution: sqlite history reconstruction`](src/fixes/dropped-history-chunks/index.e2e.test.ts#L99) |
|
|
155
|
+
| [**Noisy WebSocket stderr Logs**](src/fixes/noisy-stderr-logs/index.ts) | **Problem**: Upstream binary dumps unbuffered `RAW WS MSG:` debug payloads to stderr, flooding editor logs.<br>🔗 [`problem: stderr noise`](src/fixes/noisy-stderr-logs/index.e2e.test.ts#L16) | Filters noisy websocket trace logs from stderr by default, exposing them only when `REFINED_AGY_TRACE=1` is explicitly set.<br>🔗 [`solution: stderr filter`](src/fixes/noisy-stderr-logs/index.e2e.test.ts#L16) |
|
|
156
|
+
| [**Flattened Model Variants & Efforts**](src/fixes/flattened-model-efforts/index.ts) | **Problem**: Upstream binary flattens all model and reasoning variants into a confusing 11-item flat dropdown list (`gemini-3.8-flash-high`, `gemini-pro-agent`, etc.) without dedicated reasoning controls.<br>🔗 [`problem: flattened model list`](src/fixes/flattened-model-efforts/index.e2e.test.ts#L14) | Decomposes upstream models into clean base model choices (`gemini-3.8-flash`, `gemini-3.1-pro`, etc.) and injects standard reasoning effort controls (`high`, `medium`, `low`), translating settings upstream.<br>🔗 [`solution: decomposed effort options`](src/fixes/flattened-model-efforts/index.e2e.test.ts#L34) |
|
|
157
|
+
| [**Non-Canonical Mode ID Rejection**](src/fixes/non-canonical-mode-ids/index.ts) | **Problem**: Upstream binary expects internal mode IDs (`auto_edit`, `yolo`, `default`) and rejects standard Paseo mode identifiers like `accept-edits`, `dangerously-skip-permissions`, and `plan`.<br>🔗 [`problem: mode rejection`](src/fixes/non-canonical-mode-ids/index.e2e.test.ts#L14) | Translates client mode aliases to canonical internal IDs across outbound requests, session reloads, and child restarts.<br>🔗 [`solution: mode normalization`](src/fixes/non-canonical-mode-ids/index.e2e.test.ts#L32) |
|
|
158
|
+
| [**Silent Background Task Execution**](src/fixes/silent-background-tasks/index.ts) | **Problem**: Subagents and background tasks execute silently; upstream binary produces no stdout chunks during `STATE_WAITING_FOR_TASKS`, leaving editor UIs frozen.<br>🔗 [`problem: silent background tasks`](src/fixes/silent-background-tasks/index.e2e.test.ts#L6) | Synthesizes standard ACP `session/update` plan notifications (`sessionUpdate: "plan"`) tracking active subagent roles and background tasks with live progress and completion.<br>🔗 [`solution: plan synthesis`](src/fixes/silent-background-tasks/index.e2e.test.ts#L12) |
|
|
159
|
+
| [**Missing Usage & Token Metrics**](src/fixes/missing-usage-metrics/index.ts) | **Problem**: Upstream binary never emits ACP `usage_update` notifications, leaving editor context window meters blank.<br>🔗 [`problem: missing usage metrics`](src/fixes/missing-usage-metrics/index.e2e.test.ts#L14) | Intercepts SQLite step metadata to extract token counts and emits standard ACP `sessionUpdate: "usage_update"` with `usedTokens` and `maxTokens`.<br>🔗 [`solution: token usage synthesis`](src/fixes/missing-usage-metrics/index.e2e.test.ts#L35) |
|
|
160
|
+
| [**Dangling Running Tool Calls**](src/fixes/dangling-tool-calls/index.ts) | **Problem**: When commands are backgrounded, upstream never emits terminal `tool_call_update` with `status: "completed"`, leaving editor UIs with an infinite active running animation.<br>🔗 [`problem: dangling running tool call`](src/fixes/dangling-tool-calls/index.test.ts#L67) | Tracks active tool calls and marks backgrounded tools completed immediately, before assistant text streams, and upon turn completion.<br>🔗 [`solution: tool call auto-completion`](src/fixes/dangling-tool-calls/index.test.ts#L79) |
|
|
161
|
+
| [**Forbidden Question Other Option**](src/fixes/missing-question-fallback/index.ts) | **Problem**: Upstream instructs the model not to provide an 'Other' option (`"Do NOT add an 'Other' option to questions"`), stranding users in multiple-choice prompts when none of the choices apply.<br>🔗 [`problem: missing other option`](src/fixes/missing-question-fallback/index.test.ts#L14) | Steers the model to always include an 'Other' choice and appends a fallback 'Other' option to inbound `ask_question` tool calls.<br>🔗 [`solution: option fallback`](src/fixes/missing-question-fallback/index.test.ts#L14) |
|
|
162
|
+
|
|
163
|
+
## Setup
|
|
164
|
+
|
|
165
|
+
Install globally:
|
|
135
166
|
|
|
136
167
|
```bash
|
|
137
|
-
|
|
168
|
+
npm install -g @simonepri/refined-antigravity-acp
|
|
169
|
+
which refined-antigravity-acp
|
|
138
170
|
```
|
|
139
171
|
|
|
140
|
-
|
|
172
|
+
> [!TIP]
|
|
173
|
+
> The wrapper downloads `agy_acp_server.par` if not already installed locally.
|
|
174
|
+
|
|
175
|
+
### 1. Paseo (ACP Agent Provider)
|
|
141
176
|
|
|
142
|
-
|
|
177
|
+
Register the wrapper in `~/.paseo/config.json` under `agents.providers`:
|
|
143
178
|
|
|
144
179
|
```json
|
|
145
180
|
{
|
|
146
181
|
"agents": {
|
|
147
182
|
"providers": {
|
|
148
|
-
"antigravity": {
|
|
183
|
+
"refined-antigravity-acp": {
|
|
149
184
|
"extends": "acp",
|
|
150
185
|
"label": "Antigravity",
|
|
151
|
-
"command": ["
|
|
186
|
+
"command": ["/usr/local/bin/refined-antigravity-acp"],
|
|
152
187
|
"enabled": true
|
|
153
188
|
}
|
|
154
189
|
}
|
|
@@ -156,39 +191,13 @@ You can also register it directly as an ACP agent provider in your `~/.paseo/con
|
|
|
156
191
|
}
|
|
157
192
|
```
|
|
158
193
|
|
|
159
|
-
|
|
194
|
+
Zero-install alternative: `"command": ["pnpm", "dlx", "@simonepri/refined-antigravity-acp"]`.
|
|
160
195
|
|
|
161
196
|
---
|
|
162
197
|
|
|
163
198
|
### 2. Zed Editor (ACP Agent)
|
|
164
199
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
#### Configuration
|
|
168
|
-
|
|
169
|
-
Add `refined-antigravity-acp` to your Zed `settings.json` (accessible via `Cmd+,` or `~/.config/zed/settings.json`) under `agent.profiles`.
|
|
170
|
-
|
|
171
|
-
You can configure it using `npx` (zero-install) or by pointing directly to your local binary path:
|
|
172
|
-
|
|
173
|
-
**Via npx (Zero-install):**
|
|
174
|
-
|
|
175
|
-
```json
|
|
176
|
-
{
|
|
177
|
-
"agent": {
|
|
178
|
-
"profiles": {
|
|
179
|
-
"antigravity": {
|
|
180
|
-
"type": "acp",
|
|
181
|
-
"command": "npx",
|
|
182
|
-
"args": ["-y", "@simonepri/refined-antigravity-acp"]
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
**Via Local / Global Binary Path:**
|
|
190
|
-
|
|
191
|
-
If you installed the package globally (`npm install -g @simonepri/refined-antigravity-acp`) or cloned it locally, find the binary path via `which refined-antigravity-acp` and provide the absolute path to `command`:
|
|
200
|
+
Add `refined-antigravity-acp` to your Zed `settings.json` under `agent.profiles`:
|
|
192
201
|
|
|
193
202
|
```json
|
|
194
203
|
{
|
|
@@ -204,65 +213,51 @@ If you installed the package globally (`npm install -g @simonepri/refined-antigr
|
|
|
204
213
|
}
|
|
205
214
|
```
|
|
206
215
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
### 3. Standalone CLI / Other ACP Editors (Neovim, JetBrains)
|
|
216
|
+
Zero-install alternative: `"command": "pnpm", "args": ["dlx", "@simonepri/refined-antigravity-acp"]`.
|
|
210
217
|
|
|
211
|
-
|
|
218
|
+
---
|
|
212
219
|
|
|
213
|
-
|
|
214
|
-
npx @simonepri/refined-antigravity-acp
|
|
215
|
-
```
|
|
220
|
+
### 3. Standalone CLI and Other ACP Editors
|
|
216
221
|
|
|
217
|
-
|
|
222
|
+
Run directly from any terminal or editor speaking standard ACP over stdio:
|
|
218
223
|
|
|
219
224
|
```bash
|
|
220
|
-
npm install -g @simonepri/refined-antigravity-acp
|
|
221
225
|
refined-antigravity-acp
|
|
222
226
|
```
|
|
223
227
|
|
|
224
|
-
|
|
225
|
-
> The wrapper automatically resolves or downloads the official Google [`agy_acp_server.par`](https://dl.google.com/agy-extensions/releases/) binary if it is not already present on your machine.
|
|
228
|
+
Zero-install alternative: `pnpm dlx @simonepri/refined-antigravity-acp`.
|
|
226
229
|
|
|
227
230
|
---
|
|
228
231
|
|
|
229
232
|
## Authentication
|
|
230
233
|
|
|
231
|
-
|
|
234
|
+
Google's ACP server handles authentication directly. On initialization, the server advertises standard ACP `authMethods` (Google OAuth, Gemini Enterprise, Gemini API keys, or Agent Platform).
|
|
232
235
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
```bash
|
|
236
|
-
agy
|
|
237
|
-
```
|
|
236
|
+
For OAuth logins, the server runs a local browser login flow and saves credentials to the operating system keychain. The CLI requires no manual authentication step.
|
|
238
237
|
|
|
239
238
|
---
|
|
240
239
|
|
|
241
|
-
##
|
|
240
|
+
## Configuration & Environment Variables
|
|
242
241
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
> ```
|
|
242
|
+
| Variable | Default | Description |
|
|
243
|
+
| :--------------------------------- | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
244
|
+
| `REFINED_AGY_OFFICIAL_ACP_VERSION` | `1.2.1` | Version of the official upstream Google Antigravity ACP binary (`agy_acp_server.par`) to download if not installed locally. (Falls back to `REFINED_AGY_VERSION` if set). |
|
|
245
|
+
| `REFINED_AGY_ACP_BIN` | Auto-detected | Custom path to an `agy_acp_server.par` binary. |
|
|
246
|
+
| `REFINED_AGY_RECYCLE_TIMEOUT_MS` | `10000` | Timeout (in ms) when respawning and resyncing a replacement process after an upstream Antigravity crash or deadlock (e.g. subagent channel panic). Caps how long internal initialization, session loading, and mode restoration requests can take before retrying. |
|
|
247
|
+
| `REFINED_AGY_TRACE` | `0` | Set to `1` to trace inbound/outbound ACP JSON-RPC message ids to stderr and restore the full upstream debug log (normally filtered). |
|
|
248
|
+
| `REFINED_AGY_DATA_DIR` | `~/.refined-antigravity` | Base directory for the MCP proxy's remembered-port configuration. |
|
|
251
249
|
|
|
252
250
|
---
|
|
253
251
|
|
|
254
|
-
##
|
|
252
|
+
## Protocol Coverage
|
|
253
|
+
|
|
254
|
+
Refined Antigravity ACP implements the **[Agent Client Protocol (ACP)](https://agentclientprotocol.com)** specification across two layers:
|
|
255
255
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
| `PASEO_AGY_HANG_INACTIVITY_MS` | `30000` | Inactivity backstop timer (30 seconds) before declaring a turn hung. |
|
|
262
|
-
| `PASEO_AGY_RECYCLE_TIMEOUT_MS` | `30000` | Maximum time allowed to spawn and initialize a recycled replacement process. |
|
|
263
|
-
| `PASEO_AGY_TRACE` | `0` | Set to `1` to trace all inbound and outbound ACP JSON-RPC messages to stderr. |
|
|
264
|
-
| `PASEO_AGY_MCP_PROXY_PORT` | `0` | Fixed port for the loopback MCP proxy (defaults to an ephemeral open port). |
|
|
265
|
-
| `ANTIGRAVITY_HARNESS_PATH` | Auto-detected | Explicit path to the Antigravity Python harness. |
|
|
256
|
+
- **Direct Passthrough**: Requests and notifications requiring no modification pass through unchanged: client filesystem operations (`fs/*`), terminals (`terminal/*`), authentication (`authenticate`, `logout`), permission requests (`session/request_permission`), and MCP bridge channels.
|
|
257
|
+
- **Hardening and Telemetry**: The wrapper intercepts session methods to prevent deadlocks, repair database state, and synthesize missing ACP notifications (`usage_update` token metrics and `plan` subagent tracking).
|
|
258
|
+
|
|
259
|
+
> [!NOTE]
|
|
260
|
+
> All synthesized and modified messages are verified against the canonical ACP JSON Schema (Draft 2020-12) and type-checked against `@agentclientprotocol/sdk` in [`src/core/acp-conformance.test.ts`](src/core/acp-conformance.test.ts).
|
|
266
261
|
|
|
267
262
|
---
|
|
268
263
|
|
|
@@ -270,15 +265,29 @@ agy
|
|
|
270
265
|
|
|
271
266
|
```bash
|
|
272
267
|
pnpm install
|
|
273
|
-
pnpm run format:check
|
|
274
|
-
pnpm run
|
|
275
|
-
pnpm run
|
|
276
|
-
pnpm run typecheck
|
|
277
|
-
pnpm run test
|
|
268
|
+
pnpm run check # runs format:check, lint, typecheck, and dead-code
|
|
269
|
+
pnpm run test # fast, hermetic unit tests (no auth required)
|
|
270
|
+
pnpm run test:e2e # end-to-end integration tests (requires local agy login)
|
|
278
271
|
```
|
|
279
272
|
|
|
280
273
|
---
|
|
281
274
|
|
|
275
|
+
## Contributing
|
|
276
|
+
|
|
277
|
+
Every fix pull request must follow this structure:
|
|
278
|
+
|
|
279
|
+
1. **Directory**: Place the fix in `src/fixes/<bug-name>/`, named after the bug (for example, `dangling-tool-calls`). Do not prefix with issue numbers.
|
|
280
|
+
2. **Header**: Add a JSDoc block with `Problem:` and `Solution:` sections at the top of `src/fixes/<bug-name>/index.ts`.
|
|
281
|
+
3. **Tests**: Include both an upstream reproduction (`problem: <description>`) and a fix verification (`solution: <description>`).
|
|
282
|
+
4. **Exports**: Export the fix from [`src/fixes/index.ts`](src/fixes/index.ts) and register it in [`src/index.ts`](src/index.ts).
|
|
283
|
+
5. **Documentation**: Add a row to the table in [`readme.md`](readme.md) linking the fix and tests.
|
|
284
|
+
6. **Verification**: Run quality checks before submitting:
|
|
285
|
+
```bash
|
|
286
|
+
pnpm run check && pnpm run build && pnpm test
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
282
291
|
## Disclaimer
|
|
283
292
|
|
|
284
293
|
This is an independent open-source project and is not affiliated with, authorized, or endorsed by Google LLC. "Antigravity", "Gemini", and Google are trademarks of Google LLC.
|
package/assets/icon.svg
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 640 170" width="640" height="170">
|
|
2
|
-
<defs>
|
|
3
|
-
<!-- Antigravity-style gradient: a warm horizontal sweep confined to the top of the mark,
|
|
4
|
-
faded over a blue body (proportions and stops sampled from the official Antigravity logo).
|
|
5
|
-
Coordinates are in the ACP path box (0..576 x 0..220). -->
|
|
6
|
-
|
|
7
|
-
<!-- Blue body: saturated core held through the legs, lightening into the feet
|
|
8
|
-
(reference #3A8CF2 / #4589F8 core, #5395FC bars, #96C1EE feet). -->
|
|
9
|
-
<linearGradient id="agyBody" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="0" y2="220">
|
|
10
|
-
<stop offset="0" stop-color="#3A8CF2"/>
|
|
11
|
-
<stop offset="0.62" stop-color="#3E8DF5"/>
|
|
12
|
-
<stop offset="0.74" stop-color="#4589F8"/>
|
|
13
|
-
<stop offset="0.80" stop-color="#4E98F3"/>
|
|
14
|
-
<stop offset="0.90" stop-color="#74ADF3"/>
|
|
15
|
-
<stop offset="1" stop-color="#96C1EE"/>
|
|
16
|
-
</linearGradient>
|
|
17
|
-
|
|
18
|
-
<!-- Warm band: horizontal left->right sweep, green -> lime -> tan -> orange -> coral,
|
|
19
|
-
stops sampled from the reference top rows (y=170 / y=210). -->
|
|
20
|
-
<linearGradient id="agyWarm" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="576" y2="0">
|
|
21
|
-
<stop offset="0" stop-color="#8FC466"/>
|
|
22
|
-
<stop offset="0.25" stop-color="#A9BC55"/>
|
|
23
|
-
<stop offset="0.5" stop-color="#C5A65C"/>
|
|
24
|
-
<stop offset="0.7" stop-color="#DC8A5F"/>
|
|
25
|
-
<stop offset="0.82" stop-color="#EA705B"/>
|
|
26
|
-
<stop offset="1" stop-color="#E65E5E"/>
|
|
27
|
-
</linearGradient>
|
|
28
|
-
|
|
29
|
-
<!-- Vertical fade for the warm band: fully warm until y=55 (top 25%), eased out by y=108 (49%),
|
|
30
|
-
at the A/C valley (y=106). Plain alpha fade over blue yields the teal (left) and
|
|
31
|
-
lavender (right) midtones of the reference. -->
|
|
32
|
-
<linearGradient id="agyFade" gradientUnits="userSpaceOnUse" x1="0" y1="0" x2="0" y2="220">
|
|
33
|
-
<stop offset="0" stop-color="#FFFFFF"/>
|
|
34
|
-
<stop offset="0.25" stop-color="#FFFFFF"/>
|
|
35
|
-
<stop offset="0.33" stop-color="#B3B3B3"/>
|
|
36
|
-
<stop offset="0.41" stop-color="#4D4D4D"/>
|
|
37
|
-
<stop offset="0.49" stop-color="#000000"/>
|
|
38
|
-
<stop offset="1" stop-color="#000000"/>
|
|
39
|
-
</linearGradient>
|
|
40
|
-
<mask id="agyWarmMask" maskUnits="userSpaceOnUse" x="0" y="0" width="576" height="220">
|
|
41
|
-
<rect x="0" y="0" width="576" height="220" fill="url(#agyFade)"/>
|
|
42
|
-
</mask>
|
|
43
|
-
|
|
44
|
-
<!-- ACP logomark outline, drawn twice: blue body, then the masked warm band on top. -->
|
|
45
|
-
<path id="agyMark" d="M568.003 115.821L517.278 27.9661C507.183 10.4816 489.084 0.0227367 468.894 0.0227367C448.727 0.0227367 430.674 10.4361 420.556 27.8752L343.251 161.749H242.755C236.23 161.749 230.386 158.384 227.135 152.745C223.861 147.106 223.861 140.376 227.135 134.715L277.861 46.8603C281.112 41.2216 286.955 37.8338 293.481 37.8338C300.006 37.8338 305.827 41.1988 309.101 46.8603L312.125 52.0897C313.353 54.2042 315.604 55.5002 318.036 55.5002C320.469 55.5002 322.743 54.1815 323.948 52.067L337.385 28.5118C338.795 26.0335 338.522 22.9413 336.703 20.7586C325.699 7.57131 309.874 0 293.322 0C292.662 0 292.003 0 291.321 0.0454733C272.04 0.75031 254.76 11.1864 245.074 27.9434L200.215 105.657L155.81 29.1484C145.465 11.2092 126.594 0.0227367 106.608 0.0227367C105.949 0.0227367 105.289 0.0227367 104.607 0.06821C85.3265 0.773047 68.0467 11.2092 58.3608 27.9661L7.65806 115.821C-6.25678 139.899 -0.868187 168.82 21.05 187.759C29.8945 195.422 41.6039 199.628 54.0181 199.628H148.648C151.081 199.628 153.332 198.332 154.56 196.217L168.52 172.026C169.748 169.911 169.748 167.319 168.52 165.205C167.292 163.09 165.041 161.794 162.608 161.794H56.0417C49.5163 161.794 43.6729 158.429 40.4216 152.79C37.1475 147.152 37.1475 140.422 40.4216 134.76L91.1471 46.9057C94.3985 41.2671 100.242 37.8793 106.767 37.8793C113.293 37.8793 119.113 41.2443 122.387 46.9057L194.826 172.526C195.031 172.89 195.258 173.208 195.531 173.526C198.76 178.665 202.83 183.485 207.786 187.782C216.631 195.444 228.34 199.651 240.754 199.651H321.424L315.581 209.769C314.353 211.883 314.353 214.475 315.581 216.59C316.809 218.704 319.059 220 321.492 220H349.436C351.868 220 354.119 218.704 355.347 216.59L364.396 200.901L367.17 196.468C367.17 196.468 367.261 196.331 367.284 196.263L453.274 46.9285C456.525 41.2898 462.369 37.902 468.894 37.902C475.42 37.902 481.263 41.2671 484.514 46.9285L535.24 134.783C538.491 140.422 538.514 147.174 535.24 152.813C531.988 158.452 526.145 161.84 519.62 161.84H418.669C416.236 161.84 413.985 163.136 412.757 165.25L398.774 189.442C397.546 191.556 397.546 194.148 398.774 196.263C400.002 198.377 402.253 199.673 404.686 199.673H518.21C539.81 199.673 559.295 188.237 569.026 169.843C578.053 152.79 577.666 132.623 567.981 115.843L568.003 115.821Z"/>
|
|
46
|
-
</defs>
|
|
47
|
-
|
|
48
|
-
<!-- Clean dark card -->
|
|
49
|
-
<rect width="640" height="170" rx="16" fill="#0D1117"/>
|
|
50
|
-
<rect x="0.5" y="0.5" width="639" height="169" rx="15.5" fill="none" stroke="#21262D" stroke-width="1"/>
|
|
51
|
-
|
|
52
|
-
<!-- Scaled up ACP Logomark (scale 0.35 vs 0.24 previously) -->
|
|
53
|
-
<g transform="translate(320, 58)">
|
|
54
|
-
<g transform="translate(-100, -38) scale(0.35)">
|
|
55
|
-
<use xlink:href="#agyMark" href="#agyMark" fill="url(#agyBody)"/>
|
|
56
|
-
<use xlink:href="#agyMark" href="#agyMark" fill="url(#agyWarm)" mask="url(#agyWarmMask)"/>
|
|
57
|
-
</g>
|
|
58
|
-
</g>
|
|
59
|
-
|
|
60
|
-
<!-- Typography -->
|
|
61
|
-
<text x="320" y="132" text-anchor="middle" fill="#F0F6FC" font-family="-apple-system, BlinkMacSystemFont, 'Segoe UI', Inter, sans-serif" font-size="16" font-weight="700" letter-spacing="2.5">REFINED ANTIGRAVITY ACP</text>
|
|
62
|
-
</svg>
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { PluginServerContext } from "@getpaseo/plugin/server";
|
|
2
|
-
import { createAntigravityProvider } from "./server/provider.js";
|
|
3
|
-
|
|
4
|
-
export { createAntigravityProvider } from "./server/provider.js";
|
|
5
|
-
|
|
6
|
-
export default function contribute(server: PluginServerContext) {
|
|
7
|
-
server.registerProvider(createAntigravityProvider());
|
|
8
|
-
return () => {};
|
|
9
|
-
}
|