@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,582 @@
|
|
|
1
|
+
import readline from "node:readline";
|
|
2
|
+
import { ACP_METHODS, STOP_REASONS, } from "./types.js";
|
|
3
|
+
import { createSessionCache, extractSessionId, getSession, getOrCreateSession, recordAllocatedSessionMeta, recordPendingSessionMetadata, resolveResponseSession, trackPendingRequestSession, clearPendingRequestSessions, } from "./session-cache.js";
|
|
4
|
+
import { defaultSpawnProcess, traceAcp, writeJsonMessage } from "./transport.js";
|
|
5
|
+
export const RECYCLE_ID_PREFIX = "__refined_agy_recycle_";
|
|
6
|
+
export const RECYCLE_INIT_ID = `${RECYCLE_ID_PREFIX}init`;
|
|
7
|
+
export const RECYCLE_LOAD_ID = `${RECYCLE_ID_PREFIX}load`;
|
|
8
|
+
export const RECYCLE_MODE_ID = `${RECYCLE_ID_PREFIX}mode`;
|
|
9
|
+
export const RECYCLE_CONFIG_PREFIX = `${RECYCLE_ID_PREFIX}config_`;
|
|
10
|
+
const DEFAULT_RECYCLE_TIMEOUT_MS = 10_000;
|
|
11
|
+
const DEFAULT_RECYCLE_SPAWN_ATTEMPTS = 3;
|
|
12
|
+
const DEFAULT_RECYCLE_RETRY_DELAY_MS = 500;
|
|
13
|
+
function parseEnvMs(val, defaultMs) {
|
|
14
|
+
if (!val)
|
|
15
|
+
return defaultMs;
|
|
16
|
+
const num = Number(val);
|
|
17
|
+
return Number.isFinite(num) && num > 0 ? num : defaultMs;
|
|
18
|
+
}
|
|
19
|
+
function delay(ms) {
|
|
20
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
21
|
+
}
|
|
22
|
+
export class ProcessSupervisor {
|
|
23
|
+
currentChild;
|
|
24
|
+
isRecycling = false;
|
|
25
|
+
isClosed = false;
|
|
26
|
+
sessionCache;
|
|
27
|
+
proxies;
|
|
28
|
+
pipeline;
|
|
29
|
+
cmd;
|
|
30
|
+
args;
|
|
31
|
+
spawnFn;
|
|
32
|
+
recycleTimeoutMs;
|
|
33
|
+
recycleSpawnAttempts;
|
|
34
|
+
recycleRetryDelayMs;
|
|
35
|
+
pendingRequests = new Map();
|
|
36
|
+
suppressedResponseIds = new Set();
|
|
37
|
+
activeRecycle = null;
|
|
38
|
+
rlOut = null;
|
|
39
|
+
rlErr = null;
|
|
40
|
+
readableController = null;
|
|
41
|
+
baseContext;
|
|
42
|
+
stderrContext;
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.cmd = options.cmd;
|
|
45
|
+
this.args = options.args;
|
|
46
|
+
this.currentChild = options.initialChild;
|
|
47
|
+
this.pipeline = options.pipeline;
|
|
48
|
+
this.sessionCache = options.sessionCache ?? createSessionCache();
|
|
49
|
+
this.proxies = options.proxies;
|
|
50
|
+
this.spawnFn =
|
|
51
|
+
options.spawnProcess ?? ((cmd, args) => defaultSpawnProcess(cmd, args, this.pipeline));
|
|
52
|
+
this.recycleTimeoutMs =
|
|
53
|
+
options.recycleTimeoutMs ??
|
|
54
|
+
parseEnvMs(process.env.REFINED_AGY_RECYCLE_TIMEOUT_MS, DEFAULT_RECYCLE_TIMEOUT_MS);
|
|
55
|
+
this.recycleSpawnAttempts = options.recycleSpawnAttempts ?? DEFAULT_RECYCLE_SPAWN_ATTEMPTS;
|
|
56
|
+
this.recycleRetryDelayMs = options.recycleRetryDelayMs ?? DEFAULT_RECYCLE_RETRY_DELAY_MS;
|
|
57
|
+
this.baseContext = {
|
|
58
|
+
sessionCache: this.sessionCache,
|
|
59
|
+
forwardInbound: (m) => this.forwardInbound(m),
|
|
60
|
+
writeToChild: (m) => this.writeToChild(m),
|
|
61
|
+
sendInternalRequest: (m, t) => this.sendInternalRequest(m, t),
|
|
62
|
+
triggerRecycle: (s) => this.triggerRecycle(s),
|
|
63
|
+
declareHang: (s, p, r) => this.declareHang(s, p, r),
|
|
64
|
+
};
|
|
65
|
+
Object.defineProperty(this.baseContext, "proxies", {
|
|
66
|
+
get: () => this.proxies,
|
|
67
|
+
enumerable: true,
|
|
68
|
+
configurable: true,
|
|
69
|
+
});
|
|
70
|
+
this.stderrContext = this.baseContext;
|
|
71
|
+
this.bindChild(this.currentChild);
|
|
72
|
+
}
|
|
73
|
+
setController(controller) {
|
|
74
|
+
this.readableController = controller;
|
|
75
|
+
}
|
|
76
|
+
forwardInbound(msg) {
|
|
77
|
+
try {
|
|
78
|
+
this.readableController?.enqueue(msg);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Controller may already be closed
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async writeToChild(msg) {
|
|
85
|
+
if (this.activeRecycle) {
|
|
86
|
+
await this.activeRecycle;
|
|
87
|
+
}
|
|
88
|
+
if (this.isClosed)
|
|
89
|
+
return;
|
|
90
|
+
traceAcp("client->agy", msg);
|
|
91
|
+
await writeJsonMessage(this.currentChild, msg);
|
|
92
|
+
}
|
|
93
|
+
declareHang(sessionId, promptId, reason) {
|
|
94
|
+
console.error(`[refined-antigravity-acp] Session ${sessionId} hung on prompt ${promptId} (${reason}); emitting synthetic end_turn & scheduling recycle`);
|
|
95
|
+
if (this.suppressedResponseIds.size >= 1000) {
|
|
96
|
+
const oldest = this.suppressedResponseIds.keys().next().value;
|
|
97
|
+
if (oldest !== undefined)
|
|
98
|
+
this.suppressedResponseIds.delete(oldest);
|
|
99
|
+
}
|
|
100
|
+
this.suppressedResponseIds.add(promptId);
|
|
101
|
+
const session = getOrCreateSession(this.sessionCache, sessionId);
|
|
102
|
+
session.needsRecycle = true;
|
|
103
|
+
const syntheticMsg = {
|
|
104
|
+
jsonrpc: "2.0",
|
|
105
|
+
id: promptId,
|
|
106
|
+
result: { stopReason: STOP_REASONS.END_TURN },
|
|
107
|
+
};
|
|
108
|
+
this.forwardInbound(syntheticMsg);
|
|
109
|
+
}
|
|
110
|
+
async triggerRecycle(session) {
|
|
111
|
+
if (this.activeRecycle) {
|
|
112
|
+
await this.activeRecycle;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
this.activeRecycle = this.recycleProcess(session);
|
|
116
|
+
try {
|
|
117
|
+
await this.activeRecycle;
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
this.activeRecycle = null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
sendInternalRequest(msg, timeoutMs = this.recycleTimeoutMs) {
|
|
124
|
+
const id = msg.id;
|
|
125
|
+
if (id === undefined || id === null) {
|
|
126
|
+
return Promise.reject(new Error("Internal request missing id"));
|
|
127
|
+
}
|
|
128
|
+
return new Promise((resolve, reject) => {
|
|
129
|
+
const timer = setTimeout(() => {
|
|
130
|
+
this.pendingRequests.delete(id);
|
|
131
|
+
reject(new Error(`Internal request ${String(msg.method)} (${id}) timed out after ${timeoutMs}ms`));
|
|
132
|
+
}, timeoutMs);
|
|
133
|
+
this.pendingRequests.set(id, { resolve, reject, timer });
|
|
134
|
+
if (!this.currentChild.stdin?.writable) {
|
|
135
|
+
clearTimeout(timer);
|
|
136
|
+
this.pendingRequests.delete(id);
|
|
137
|
+
reject(new Error("Child stdin not writable for internal request"));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
writeJsonMessage(this.currentChild, msg).catch((err) => {
|
|
141
|
+
clearTimeout(timer);
|
|
142
|
+
this.pendingRequests.delete(id);
|
|
143
|
+
reject(err);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
tryHandleInternalRecycle(msg) {
|
|
148
|
+
if (!("id" in msg) || msg.id === null || msg.id === undefined)
|
|
149
|
+
return false;
|
|
150
|
+
const idStr = String(msg.id);
|
|
151
|
+
if (!idStr.startsWith(RECYCLE_ID_PREFIX))
|
|
152
|
+
return false;
|
|
153
|
+
const pending = this.pendingRequests.get(msg.id);
|
|
154
|
+
if (pending) {
|
|
155
|
+
clearTimeout(pending.timer);
|
|
156
|
+
this.pendingRequests.delete(msg.id);
|
|
157
|
+
if ("error" in msg && msg.error) {
|
|
158
|
+
pending.reject(new Error(msg.error.message || "Recycle request failed"));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
pending.resolve(msg);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
tryHandleSuppressedResponse(msg) {
|
|
167
|
+
if (!("id" in msg) || msg.id === null || msg.id === undefined)
|
|
168
|
+
return false;
|
|
169
|
+
if (this.suppressedResponseIds.has(msg.id)) {
|
|
170
|
+
this.suppressedResponseIds.delete(msg.id);
|
|
171
|
+
console.error(`[refined-antigravity-acp] Dropped late response for hung prompt ${msg.id}`);
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
createContext(session, proxies, isRecycling) {
|
|
177
|
+
return {
|
|
178
|
+
...this.baseContext,
|
|
179
|
+
proxies: proxies ?? this.proxies,
|
|
180
|
+
session,
|
|
181
|
+
isRecycling,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
recordOutboundSessionNew(msg) {
|
|
185
|
+
if (!("id" in msg) || msg.id === null || msg.id === undefined)
|
|
186
|
+
return;
|
|
187
|
+
const p = msg.params;
|
|
188
|
+
if (!p)
|
|
189
|
+
return;
|
|
190
|
+
const pending = this.sessionCache.pendingSessionMetadata.get(msg.id) ?? {};
|
|
191
|
+
if (p.cwd !== undefined)
|
|
192
|
+
pending.cwd = p.cwd;
|
|
193
|
+
if (p._meta !== undefined)
|
|
194
|
+
pending._meta = p._meta;
|
|
195
|
+
if (p.modeId !== undefined)
|
|
196
|
+
pending.lastModeId = p.modeId;
|
|
197
|
+
recordPendingSessionMetadata(this.sessionCache, msg.id, pending);
|
|
198
|
+
}
|
|
199
|
+
recordOutboundSessionLoad(msg) {
|
|
200
|
+
const p = msg.params;
|
|
201
|
+
if (!p?.sessionId)
|
|
202
|
+
return;
|
|
203
|
+
const session = getOrCreateSession(this.sessionCache, p.sessionId);
|
|
204
|
+
if (p.cwd !== undefined)
|
|
205
|
+
session.cwd = p.cwd;
|
|
206
|
+
if (p._meta !== undefined)
|
|
207
|
+
session._meta = p._meta;
|
|
208
|
+
const mode = p.modeId ??
|
|
209
|
+
(p._meta && typeof p._meta === "object" && "modeId" in p._meta
|
|
210
|
+
? p._meta.modeId
|
|
211
|
+
: undefined);
|
|
212
|
+
if (mode !== undefined)
|
|
213
|
+
session.lastModeId = mode;
|
|
214
|
+
}
|
|
215
|
+
recordOutboundSetMode(msg) {
|
|
216
|
+
const p = msg.params;
|
|
217
|
+
if (p?.sessionId && p.modeId) {
|
|
218
|
+
getOrCreateSession(this.sessionCache, p.sessionId).lastModeId = p.modeId;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
recordOutboundSetConfigOption(msg) {
|
|
222
|
+
const p = msg.params;
|
|
223
|
+
if (p?.sessionId && p.configId) {
|
|
224
|
+
getOrCreateSession(this.sessionCache, p.sessionId).lastConfigOptions.set(p.configId, {
|
|
225
|
+
value: p.value,
|
|
226
|
+
type: p.type,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
handleSessionLifecycleMetadata(msg) {
|
|
231
|
+
if (!("method" in msg))
|
|
232
|
+
return;
|
|
233
|
+
const isClose = msg.method === ACP_METHODS.SESSION_CLOSE;
|
|
234
|
+
const isDelete = msg.method === ACP_METHODS.SESSION_DELETE;
|
|
235
|
+
if (!isClose && !isDelete)
|
|
236
|
+
return;
|
|
237
|
+
const p = msg.params;
|
|
238
|
+
if (p?.sessionId) {
|
|
239
|
+
this.sessionCache.sessions.delete(p.sessionId);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
recordOutboundMetadata(msg) {
|
|
243
|
+
if (!("method" in msg))
|
|
244
|
+
return;
|
|
245
|
+
switch (msg.method) {
|
|
246
|
+
case ACP_METHODS.INITIALIZE:
|
|
247
|
+
this.sessionCache.cachedInitializeParams = msg.params;
|
|
248
|
+
break;
|
|
249
|
+
case ACP_METHODS.SESSION_NEW:
|
|
250
|
+
this.recordOutboundSessionNew(msg);
|
|
251
|
+
break;
|
|
252
|
+
case ACP_METHODS.SESSION_LOAD:
|
|
253
|
+
this.recordOutboundSessionLoad(msg);
|
|
254
|
+
break;
|
|
255
|
+
case ACP_METHODS.SESSION_SET_MODE:
|
|
256
|
+
this.recordOutboundSetMode(msg);
|
|
257
|
+
break;
|
|
258
|
+
case ACP_METHODS.SESSION_SET_CONFIG_OPTION:
|
|
259
|
+
this.recordOutboundSetConfigOption(msg);
|
|
260
|
+
break;
|
|
261
|
+
default:
|
|
262
|
+
this.handleSessionLifecycleMetadata(msg);
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
trackPendingRequestSession(msg, sessionId) {
|
|
267
|
+
if (!sessionId || !("id" in msg) || msg.id === null || msg.id === undefined)
|
|
268
|
+
return;
|
|
269
|
+
trackPendingRequestSession(this.sessionCache, msg.id, sessionId);
|
|
270
|
+
}
|
|
271
|
+
async prepareOutboundSession(session) {
|
|
272
|
+
if (this.activeRecycle) {
|
|
273
|
+
await this.activeRecycle;
|
|
274
|
+
if (this.isClosed)
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
if (session?.needsRecycle) {
|
|
278
|
+
await this.triggerRecycle(session);
|
|
279
|
+
}
|
|
280
|
+
return !this.isClosed;
|
|
281
|
+
}
|
|
282
|
+
async handleOutbound(msg, proxies) {
|
|
283
|
+
if (this.isClosed)
|
|
284
|
+
return;
|
|
285
|
+
if (proxies && !this.proxies)
|
|
286
|
+
this.proxies = proxies;
|
|
287
|
+
this.recordOutboundMetadata(msg);
|
|
288
|
+
const sessionId = extractSessionId(msg);
|
|
289
|
+
const session = getSession(this.sessionCache, sessionId);
|
|
290
|
+
const ready = await this.prepareOutboundSession(session);
|
|
291
|
+
if (!ready)
|
|
292
|
+
return;
|
|
293
|
+
const context = this.createContext(session, proxies);
|
|
294
|
+
const transformed = await this.pipeline.applyOutbound(msg, context);
|
|
295
|
+
if (transformed === null)
|
|
296
|
+
return;
|
|
297
|
+
this.trackPendingRequestSession(msg, sessionId);
|
|
298
|
+
await this.writeToChild(transformed);
|
|
299
|
+
}
|
|
300
|
+
recordInboundSessionAllocation(msg) {
|
|
301
|
+
if (!("result" in msg) || !msg.result || typeof msg.result !== "object")
|
|
302
|
+
return;
|
|
303
|
+
const res = msg.result;
|
|
304
|
+
if (typeof res.sessionId === "string" &&
|
|
305
|
+
"id" in msg &&
|
|
306
|
+
msg.id !== null &&
|
|
307
|
+
msg.id !== undefined) {
|
|
308
|
+
recordAllocatedSessionMeta(msg.id, res.sessionId, this.sessionCache);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async dispatchInboundPipeline(msg, sessionId, context) {
|
|
312
|
+
try {
|
|
313
|
+
const messages = await this.pipeline.applyInbound(msg, context);
|
|
314
|
+
for (const m of messages)
|
|
315
|
+
this.forwardInbound(m);
|
|
316
|
+
if ("result" in msg && sessionId) {
|
|
317
|
+
const turnEndMessages = this.pipeline.applyTurnEnd(sessionId, context);
|
|
318
|
+
for (const m of turnEndMessages)
|
|
319
|
+
this.forwardInbound(m);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch (err) {
|
|
323
|
+
console.error("[refined-antigravity-acp] Inbound handling failed; forwarding raw message:", err);
|
|
324
|
+
this.forwardInbound(msg);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
async handleStdoutLine(line) {
|
|
328
|
+
if (this.isClosed)
|
|
329
|
+
return;
|
|
330
|
+
let msg;
|
|
331
|
+
try {
|
|
332
|
+
msg = JSON.parse(line);
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
traceAcp("agy->client", msg);
|
|
338
|
+
if (this.tryHandleInternalRecycle(msg) || this.tryHandleSuppressedResponse(msg))
|
|
339
|
+
return;
|
|
340
|
+
const responseSessionId = resolveResponseSession(msg, this.sessionCache);
|
|
341
|
+
const sessionId = responseSessionId ?? extractSessionId(msg);
|
|
342
|
+
this.recordInboundSessionAllocation(msg);
|
|
343
|
+
const session = getSession(this.sessionCache, sessionId);
|
|
344
|
+
const context = this.createContext(session, undefined, this.isRecycling);
|
|
345
|
+
await this.dispatchInboundPipeline(msg, sessionId, context);
|
|
346
|
+
}
|
|
347
|
+
handleStderrLine(line) {
|
|
348
|
+
const suppressed = this.pipeline.applyStderrLine(line, this.stderrContext);
|
|
349
|
+
if (!suppressed) {
|
|
350
|
+
process.stderr.write(line + "\n");
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
bindChild(child) {
|
|
354
|
+
if (child.stdout) {
|
|
355
|
+
this.rlOut = readline.createInterface({ input: child.stdout, crlfDelay: Infinity });
|
|
356
|
+
this.rlOut.on("line", (line) => {
|
|
357
|
+
this.handleStdoutLine(line).catch((err) => {
|
|
358
|
+
console.error("[refined-antigravity-acp] Error in handleStdoutLine:", err);
|
|
359
|
+
});
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
if (child.stderr) {
|
|
363
|
+
this.rlErr = readline.createInterface({ input: child.stderr, crlfDelay: Infinity });
|
|
364
|
+
this.rlErr.on("line", (line) => this.handleStderrLine(line));
|
|
365
|
+
}
|
|
366
|
+
child.on("close", () => this.handleChildClose());
|
|
367
|
+
child.on("error", (err) => this.handleChildClose(err));
|
|
368
|
+
}
|
|
369
|
+
rejectPendingRequests(err) {
|
|
370
|
+
const error = err ?? new Error("Child process closed");
|
|
371
|
+
for (const pending of this.pendingRequests.values()) {
|
|
372
|
+
clearTimeout(pending.timer);
|
|
373
|
+
pending.reject(error);
|
|
374
|
+
}
|
|
375
|
+
this.pendingRequests.clear();
|
|
376
|
+
this.suppressedResponseIds.clear();
|
|
377
|
+
clearPendingRequestSessions(this.sessionCache);
|
|
378
|
+
}
|
|
379
|
+
closeController(err) {
|
|
380
|
+
try {
|
|
381
|
+
if (err)
|
|
382
|
+
this.readableController?.error(err);
|
|
383
|
+
else
|
|
384
|
+
this.readableController?.close();
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
// Controller may already be closed
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
handleChildClose(err) {
|
|
391
|
+
if (this.isRecycling || this.isClosed)
|
|
392
|
+
return;
|
|
393
|
+
this.isClosed = true;
|
|
394
|
+
this.pipeline.dispose();
|
|
395
|
+
this.rlErr?.close();
|
|
396
|
+
this.rlOut?.close();
|
|
397
|
+
this.rejectPendingRequests(err);
|
|
398
|
+
this.closeController(err);
|
|
399
|
+
}
|
|
400
|
+
async resyncSessionLoad(session, context) {
|
|
401
|
+
const loadParams = { sessionId: session.sessionId };
|
|
402
|
+
if (session.cwd !== undefined)
|
|
403
|
+
loadParams.cwd = session.cwd;
|
|
404
|
+
if (session._meta !== undefined)
|
|
405
|
+
loadParams._meta = session._meta;
|
|
406
|
+
const loadMsg = {
|
|
407
|
+
jsonrpc: "2.0",
|
|
408
|
+
id: RECYCLE_LOAD_ID,
|
|
409
|
+
method: ACP_METHODS.SESSION_LOAD,
|
|
410
|
+
params: loadParams,
|
|
411
|
+
};
|
|
412
|
+
const transformedLoad = await this.pipeline.applyOutbound(loadMsg, context);
|
|
413
|
+
await this.sendInternalRequest(transformedLoad ?? loadMsg);
|
|
414
|
+
}
|
|
415
|
+
async resyncSessionMode(session, context) {
|
|
416
|
+
if (!session.lastModeId)
|
|
417
|
+
return;
|
|
418
|
+
const modeMsg = {
|
|
419
|
+
jsonrpc: "2.0",
|
|
420
|
+
id: RECYCLE_MODE_ID,
|
|
421
|
+
method: ACP_METHODS.SESSION_SET_MODE,
|
|
422
|
+
params: { sessionId: session.sessionId, modeId: session.lastModeId },
|
|
423
|
+
};
|
|
424
|
+
const transformedMode = await this.pipeline.applyOutbound(modeMsg, context);
|
|
425
|
+
await this.sendInternalRequest(transformedMode ?? modeMsg);
|
|
426
|
+
}
|
|
427
|
+
async resyncSessionConfig(session, context) {
|
|
428
|
+
if (!session.lastConfigOptions)
|
|
429
|
+
return;
|
|
430
|
+
for (const [configId, opt] of session.lastConfigOptions.entries()) {
|
|
431
|
+
const configParams = {
|
|
432
|
+
sessionId: session.sessionId,
|
|
433
|
+
configId,
|
|
434
|
+
value: opt.value,
|
|
435
|
+
};
|
|
436
|
+
if (opt.type !== undefined)
|
|
437
|
+
configParams.type = opt.type;
|
|
438
|
+
const cfgMsg = {
|
|
439
|
+
jsonrpc: "2.0",
|
|
440
|
+
id: `${RECYCLE_CONFIG_PREFIX}${configId}`,
|
|
441
|
+
method: ACP_METHODS.SESSION_SET_CONFIG_OPTION,
|
|
442
|
+
params: configParams,
|
|
443
|
+
};
|
|
444
|
+
const transformedCfg = await this.pipeline.applyOutbound(cfgMsg, context);
|
|
445
|
+
await this.sendInternalRequest(transformedCfg ?? cfgMsg);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
async performResync(session, newChild) {
|
|
449
|
+
const initParams = this.sessionCache.cachedInitializeParams ?? {
|
|
450
|
+
protocolVersion: 1,
|
|
451
|
+
clientCapabilities: {},
|
|
452
|
+
clientInfo: { name: "refined-antigravity-acp", version: "0.2.0" },
|
|
453
|
+
};
|
|
454
|
+
await this.sendInternalRequest({
|
|
455
|
+
jsonrpc: "2.0",
|
|
456
|
+
id: RECYCLE_INIT_ID,
|
|
457
|
+
method: "initialize",
|
|
458
|
+
params: initParams,
|
|
459
|
+
});
|
|
460
|
+
await this.pipeline.applyRecycle(session, newChild, this);
|
|
461
|
+
const context = this.createContext(session);
|
|
462
|
+
await this.resyncSessionLoad(session, context);
|
|
463
|
+
await this.resyncSessionMode(session, context);
|
|
464
|
+
await this.resyncSessionConfig(session, context);
|
|
465
|
+
}
|
|
466
|
+
cleanupOldChild() {
|
|
467
|
+
const oldChild = this.currentChild;
|
|
468
|
+
this.rlOut?.close();
|
|
469
|
+
this.rlErr?.close();
|
|
470
|
+
this.rlOut = null;
|
|
471
|
+
this.rlErr = null;
|
|
472
|
+
if (oldChild && !oldChild.killed) {
|
|
473
|
+
oldChild.kill("SIGKILL");
|
|
474
|
+
}
|
|
475
|
+
this.suppressedResponseIds.clear();
|
|
476
|
+
clearPendingRequestSessions(this.sessionCache);
|
|
477
|
+
}
|
|
478
|
+
async recycleProcess(session) {
|
|
479
|
+
this.isRecycling = true;
|
|
480
|
+
let lastErr;
|
|
481
|
+
for (let attempt = 1; attempt <= this.recycleSpawnAttempts; attempt++) {
|
|
482
|
+
this.cleanupOldChild();
|
|
483
|
+
try {
|
|
484
|
+
const newChild = await this.spawnFn(this.cmd, this.args);
|
|
485
|
+
this.currentChild = newChild;
|
|
486
|
+
this.bindChild(newChild);
|
|
487
|
+
await this.performResync(session, newChild);
|
|
488
|
+
session.needsRecycle = false;
|
|
489
|
+
this.isRecycling = false;
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
catch (err) {
|
|
493
|
+
lastErr = err;
|
|
494
|
+
const attemptsLeft = this.recycleSpawnAttempts - attempt;
|
|
495
|
+
console.error(`[refined-antigravity-acp] Process recycle attempt ${attempt}/${this.recycleSpawnAttempts} failed` +
|
|
496
|
+
(attemptsLeft > 0
|
|
497
|
+
? `; retrying in ${this.recycleRetryDelayMs}ms (${attemptsLeft} attempt(s) left):`
|
|
498
|
+
: ", no attempts left:"), err);
|
|
499
|
+
if (attemptsLeft > 0) {
|
|
500
|
+
await delay(this.recycleRetryDelayMs);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
this.isRecycling = false;
|
|
505
|
+
this.failRecycle(session, lastErr);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Gives up on recycling after every spawn attempt failed: tears down whatever
|
|
509
|
+
* child is left and fatally closes the stream with a clear, aggregated error
|
|
510
|
+
* instead of leaving callers to interpret a raw timeout from the last attempt.
|
|
511
|
+
*/
|
|
512
|
+
failRecycle(session, err) {
|
|
513
|
+
this.isClosed = true;
|
|
514
|
+
this.pipeline.dispose();
|
|
515
|
+
this.rlErr?.close();
|
|
516
|
+
this.rlOut?.close();
|
|
517
|
+
if (this.currentChild && !this.currentChild.killed) {
|
|
518
|
+
this.currentChild.kill("SIGKILL");
|
|
519
|
+
}
|
|
520
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
521
|
+
const errorObj = new Error(`Process recycle for session ${session.sessionId} failed after ${this.recycleSpawnAttempts} attempt(s): ${reason}`);
|
|
522
|
+
console.error(`[refined-antigravity-acp] ${errorObj.message}`);
|
|
523
|
+
try {
|
|
524
|
+
this.readableController?.error(errorObj);
|
|
525
|
+
}
|
|
526
|
+
catch {
|
|
527
|
+
// Controller may already be closed
|
|
528
|
+
}
|
|
529
|
+
throw errorObj;
|
|
530
|
+
}
|
|
531
|
+
close() {
|
|
532
|
+
if (this.isClosed)
|
|
533
|
+
return;
|
|
534
|
+
this.isClosed = true;
|
|
535
|
+
this.pipeline.dispose();
|
|
536
|
+
this.rlErr?.close();
|
|
537
|
+
this.rlOut?.close();
|
|
538
|
+
this.currentChild.stdin?.end();
|
|
539
|
+
if (!this.currentChild.killed) {
|
|
540
|
+
this.currentChild.kill("SIGTERM");
|
|
541
|
+
}
|
|
542
|
+
this.rejectPendingRequests(new Error("Supervisor closed"));
|
|
543
|
+
this.closeController();
|
|
544
|
+
}
|
|
545
|
+
abort() {
|
|
546
|
+
if (this.isClosed)
|
|
547
|
+
return;
|
|
548
|
+
this.isClosed = true;
|
|
549
|
+
this.pipeline.dispose();
|
|
550
|
+
this.rlErr?.close();
|
|
551
|
+
this.rlOut?.close();
|
|
552
|
+
this.currentChild.stdin?.end();
|
|
553
|
+
if (!this.currentChild.killed) {
|
|
554
|
+
this.currentChild.kill("SIGKILL");
|
|
555
|
+
}
|
|
556
|
+
this.rejectPendingRequests(new Error("Supervisor aborted"));
|
|
557
|
+
this.closeController();
|
|
558
|
+
}
|
|
559
|
+
createStreams() {
|
|
560
|
+
const readable = new ReadableStream({
|
|
561
|
+
start: (controller) => {
|
|
562
|
+
this.setController(controller);
|
|
563
|
+
},
|
|
564
|
+
cancel: () => {
|
|
565
|
+
this.close();
|
|
566
|
+
},
|
|
567
|
+
});
|
|
568
|
+
const writable = new WritableStream({
|
|
569
|
+
write: async (msg) => {
|
|
570
|
+
await this.handleOutbound(msg);
|
|
571
|
+
},
|
|
572
|
+
close: () => {
|
|
573
|
+
this.close();
|
|
574
|
+
},
|
|
575
|
+
abort: () => {
|
|
576
|
+
this.abort();
|
|
577
|
+
},
|
|
578
|
+
});
|
|
579
|
+
return { readable, writable };
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
//# sourceMappingURL=supervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/core/supervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const RAW_WS_MSG_MARKER = "RAW WS MSG:";
|
|
2
|
+
export declare const TELEMETRY_STATES: {
|
|
3
|
+
readonly WAITING_FOR_TASKS: "STATE_WAITING_FOR_TASKS";
|
|
4
|
+
readonly FULLY_IDLE: "STATE_FULLY_IDLE";
|
|
5
|
+
readonly IDLE: "STATE_IDLE";
|
|
6
|
+
readonly RUNNING: "STATE_RUNNING";
|
|
7
|
+
readonly COMPLETE: "STATE_COMPLETE";
|
|
8
|
+
readonly ACTIVE: "STATE_ACTIVE";
|
|
9
|
+
};
|
|
10
|
+
export declare const TARGET_ENVIRONMENT = "TARGET_ENVIRONMENT";
|
|
11
|
+
export interface TrajectoryStateUpdate {
|
|
12
|
+
trajectoryId: string;
|
|
13
|
+
state: string;
|
|
14
|
+
}
|
|
15
|
+
export interface StepUpdate {
|
|
16
|
+
trajectoryId: string;
|
|
17
|
+
state: string;
|
|
18
|
+
target?: string | undefined;
|
|
19
|
+
source?: string | undefined;
|
|
20
|
+
}
|
|
21
|
+
export declare function parseTrajectoryStateUpdate(line: string): TrajectoryStateUpdate | null;
|
|
22
|
+
export declare function parseStepUpdate(line: string): StepUpdate | null;
|
|
23
|
+
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../src/core/telemetry.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C,eAAO,MAAM,gBAAgB;;;;;;;CAOnB,CAAC;AAEX,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAyCD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI,CAErF;AAqBD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE/D"}
|