paseo-agy-acp 2.2.0
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 +296 -0
- package/LICENSE +201 -0
- package/README.md +571 -0
- package/README.zh-CN.md +540 -0
- package/assets/official-kernel-compat/rc01/paseo_model_compat.py +172 -0
- package/dist/ACP Connector/acp/session/paseo-context.d.ts +6 -0
- package/dist/ACP Connector/acp/session/paseo-context.js +83 -0
- package/dist/ACP Connector/acp/session/paseo-context.js.map +1 -0
- package/dist/ACP Connector/acp/session/turn-scheduler.d.ts +90 -0
- package/dist/ACP Connector/acp/session/turn-scheduler.js +247 -0
- package/dist/ACP Connector/acp/session/turn-scheduler.js.map +1 -0
- package/dist/ACP Connector/admission/dispatch-boundary.d.ts +19 -0
- package/dist/ACP Connector/admission/dispatch-boundary.js +16 -0
- package/dist/ACP Connector/admission/dispatch-boundary.js.map +1 -0
- package/dist/ACP Connector/admission/errors.d.ts +18 -0
- package/dist/ACP Connector/admission/errors.js +46 -0
- package/dist/ACP Connector/admission/errors.js.map +1 -0
- package/dist/ACP Connector/admission/owner-instance.d.ts +31 -0
- package/dist/ACP Connector/admission/owner-instance.js +105 -0
- package/dist/ACP Connector/admission/owner-instance.js.map +1 -0
- package/dist/ACP Connector/admission/runtime.d.ts +20 -0
- package/dist/ACP Connector/admission/runtime.js +157 -0
- package/dist/ACP Connector/admission/runtime.js.map +1 -0
- package/dist/ACP Connector/admission/startup-recovery.d.ts +22 -0
- package/dist/ACP Connector/admission/startup-recovery.js +129 -0
- package/dist/ACP Connector/admission/startup-recovery.js.map +1 -0
- package/dist/ACP Connector/admission/turn-coordinator.d.ts +57 -0
- package/dist/ACP Connector/admission/turn-coordinator.js +369 -0
- package/dist/ACP Connector/admission/turn-coordinator.js.map +1 -0
- package/dist/ACP Connector/agent.d.ts +4 -0
- package/dist/ACP Connector/agent.js +6 -0
- package/dist/ACP Connector/agent.js.map +1 -0
- package/dist/ACP Connector/main.d.ts +2 -0
- package/dist/ACP Connector/main.js +31 -0
- package/dist/ACP Connector/main.js.map +1 -0
- package/dist/ACP Connector/official-kernel/admission-fence.d.ts +10 -0
- package/dist/ACP Connector/official-kernel/admission-fence.js +52 -0
- package/dist/ACP Connector/official-kernel/admission-fence.js.map +1 -0
- package/dist/ACP Connector/official-kernel/context.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/context.js +52 -0
- package/dist/ACP Connector/official-kernel/context.js.map +1 -0
- package/dist/ACP Connector/official-kernel/errors.d.ts +5 -0
- package/dist/ACP Connector/official-kernel/errors.js +39 -0
- package/dist/ACP Connector/official-kernel/errors.js.map +1 -0
- package/dist/ACP Connector/official-kernel/identity.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/identity.js +17 -0
- package/dist/ACP Connector/official-kernel/identity.js.map +1 -0
- package/dist/ACP Connector/official-kernel/json-rpc.d.ts +34 -0
- package/dist/ACP Connector/official-kernel/json-rpc.js +26 -0
- package/dist/ACP Connector/official-kernel/json-rpc.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-lifecycle.d.ts +115 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-lifecycle.js +1904 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-lifecycle.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-pins.d.ts +14 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-pins.js +29 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-pins.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-rc01-recipe.d.ts +2 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-rc01-recipe.js +32 -0
- package/dist/ACP Connector/official-kernel/kernel-compat-rc01-recipe.js.map +1 -0
- package/dist/ACP Connector/official-kernel/kernel.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/kernel.js +12 -0
- package/dist/ACP Connector/official-kernel/kernel.js.map +1 -0
- package/dist/ACP Connector/official-kernel/login.d.ts +1 -0
- package/dist/ACP Connector/official-kernel/login.js +73 -0
- package/dist/ACP Connector/official-kernel/login.js.map +1 -0
- package/dist/ACP Connector/official-kernel/mcp-rewrite.d.ts +1 -0
- package/dist/ACP Connector/official-kernel/mcp-rewrite.js +39 -0
- package/dist/ACP Connector/official-kernel/mcp-rewrite.js.map +1 -0
- package/dist/ACP Connector/official-kernel/mode-map.d.ts +5 -0
- package/dist/ACP Connector/official-kernel/mode-map.js +35 -0
- package/dist/ACP Connector/official-kernel/mode-map.js.map +1 -0
- package/dist/ACP Connector/official-kernel/ndjson.d.ts +3 -0
- package/dist/ACP Connector/official-kernel/ndjson.js +29 -0
- package/dist/ACP Connector/official-kernel/ndjson.js.map +1 -0
- package/dist/ACP Connector/official-kernel/proxy.d.ts +14 -0
- package/dist/ACP Connector/official-kernel/proxy.js +197 -0
- package/dist/ACP Connector/official-kernel/proxy.js.map +1 -0
- package/dist/ACP Connector/official-kernel/run.d.ts +8 -0
- package/dist/ACP Connector/official-kernel/run.js +22 -0
- package/dist/ACP Connector/official-kernel/run.js.map +1 -0
- package/dist/ACP Connector/official-kernel/spawn.d.ts +5 -0
- package/dist/ACP Connector/official-kernel/spawn.js +33 -0
- package/dist/ACP Connector/official-kernel/spawn.js.map +1 -0
- package/dist/Admission Controller/controller.d.ts +338 -0
- package/dist/Admission Controller/controller.js +2089 -0
- package/dist/Admission Controller/controller.js.map +1 -0
- package/dist/Admission Controller/key-derivation.d.ts +24 -0
- package/dist/Admission Controller/key-derivation.js +141 -0
- package/dist/Admission Controller/key-derivation.js.map +1 -0
- package/dist/Admission Controller/key-store.d.ts +8 -0
- package/dist/Admission Controller/key-store.js +280 -0
- package/dist/Admission Controller/key-store.js.map +1 -0
- package/dist/Admission Controller/policy-limits.d.ts +6 -0
- package/dist/Admission Controller/policy-limits.js +11 -0
- package/dist/Admission Controller/policy-limits.js.map +1 -0
- package/dist/Admission Controller/process-evidence.d.ts +111 -0
- package/dist/Admission Controller/process-evidence.js +549 -0
- package/dist/Admission Controller/process-evidence.js.map +1 -0
- package/dist/Admission Controller/runtime-config.d.ts +23 -0
- package/dist/Admission Controller/runtime-config.js +86 -0
- package/dist/Admission Controller/runtime-config.js.map +1 -0
- package/dist/Admission Controller/schema.d.ts +12 -0
- package/dist/Admission Controller/schema.js +422 -0
- package/dist/Admission Controller/schema.js.map +1 -0
- package/package.json +72 -0
- package/scripts/prepare-admission-state-dir.mjs +62 -0
- package/scripts/prepare-official-kernel-compat.mjs +387 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { captureLinuxProcessIdentity, nativeLinuxProcessEvidenceReaders } from "../../Admission Controller/process-evidence.js";
|
|
3
|
+
import { captureLinuxConnectorOwnerIdentity } from "./owner-instance.js";
|
|
4
|
+
import { classifyProviderFailure } from "./errors.js";
|
|
5
|
+
import { AgyCliError, AgyTerminalProviderError } from "./dispatch-boundary.js";
|
|
6
|
+
const DEFAULT_QUEUE_POLL_INTERVAL_MS = 100;
|
|
7
|
+
const DEFAULT_PROGRESS_INTERVAL_MS = 1_000;
|
|
8
|
+
const DEFAULT_HEARTBEAT_INTERVAL_MS = 2_000;
|
|
9
|
+
export class AdmissionQueueTimeoutError extends Error {
|
|
10
|
+
constructor() {
|
|
11
|
+
super("admission queue wait timed out");
|
|
12
|
+
this.name = "AdmissionQueueTimeoutError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class AdmissionTurnRecoveryRequiredError extends Error {
|
|
16
|
+
constructor() {
|
|
17
|
+
super("admission turn requires recovery; the business prompt will not be replayed");
|
|
18
|
+
this.name = "AdmissionTurnRecoveryRequiredError";
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Wraps the existing online ACP turn with the shared queue and one exact stdin
|
|
23
|
+
* write boundary. It never translates output or performs delivery replay.
|
|
24
|
+
*/
|
|
25
|
+
export class AdmissionTurnCoordinator {
|
|
26
|
+
#controller;
|
|
27
|
+
#agentId;
|
|
28
|
+
#ownerIdentity;
|
|
29
|
+
#now;
|
|
30
|
+
#createRequestId;
|
|
31
|
+
#queuePollIntervalMs;
|
|
32
|
+
#progressIntervalMs;
|
|
33
|
+
#heartbeatIntervalMs;
|
|
34
|
+
#wait;
|
|
35
|
+
#closed = false;
|
|
36
|
+
constructor(options) {
|
|
37
|
+
this.#controller = options.controller;
|
|
38
|
+
this.#agentId = optionAgentId(options);
|
|
39
|
+
this.#now = options.now ?? Date.now;
|
|
40
|
+
this.#createRequestId = options.createRequestId ?? randomUUID;
|
|
41
|
+
this.#queuePollIntervalMs = positiveInterval(options.queuePollIntervalMs, DEFAULT_QUEUE_POLL_INTERVAL_MS, "queue poll interval");
|
|
42
|
+
this.#progressIntervalMs = positiveInterval(options.progressIntervalMs, DEFAULT_PROGRESS_INTERVAL_MS, "progress interval");
|
|
43
|
+
this.#heartbeatIntervalMs = positiveInterval(options.heartbeatIntervalMs, DEFAULT_HEARTBEAT_INTERVAL_MS, "heartbeat interval");
|
|
44
|
+
this.#wait = options.wait ?? waitForAbort;
|
|
45
|
+
this.#ownerIdentity = captureLinuxConnectorOwnerIdentity(options.connectorPid ?? process.pid, nativeLinuxProcessEvidenceReaders);
|
|
46
|
+
}
|
|
47
|
+
get ownerIdentity() {
|
|
48
|
+
return this.#ownerIdentity;
|
|
49
|
+
}
|
|
50
|
+
async admit(input) {
|
|
51
|
+
this.assertOpen();
|
|
52
|
+
requireIdentifier(input.sessionId, "session ID");
|
|
53
|
+
requireIdentifier(input.model, "model");
|
|
54
|
+
if (typeof input.promptText !== "string")
|
|
55
|
+
throw new Error("admission prompt must be text");
|
|
56
|
+
if (typeof input.execute !== "function")
|
|
57
|
+
throw new Error("admission execution callback is required");
|
|
58
|
+
input.claim.throwIfAborted();
|
|
59
|
+
const requestId = requireIdentifier(this.#createRequestId(), "request ID");
|
|
60
|
+
const enqueuedAt = this.readNow();
|
|
61
|
+
this.#controller.enqueueWithPayload({
|
|
62
|
+
requestId,
|
|
63
|
+
sessionId: input.sessionId,
|
|
64
|
+
agentId: this.#agentId,
|
|
65
|
+
fingerprint: requestId,
|
|
66
|
+
provider: "antigravity",
|
|
67
|
+
model: input.model,
|
|
68
|
+
now: enqueuedAt
|
|
69
|
+
}, input.promptText, enqueuedAt + this.#controller.policy.queueTimeoutMs);
|
|
70
|
+
const lease = await this.waitForLease(requestId, input);
|
|
71
|
+
if (lease === null)
|
|
72
|
+
return "cancelled";
|
|
73
|
+
const boundary = new TurnDispatchBoundary(this.#controller, lease, this.#ownerIdentity, input.claim, this.#now);
|
|
74
|
+
let heartbeatFailed = false;
|
|
75
|
+
const heartbeat = setInterval(() => {
|
|
76
|
+
try {
|
|
77
|
+
this.#controller.heartbeat(lease, this.readNow());
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
heartbeatFailed = true;
|
|
81
|
+
}
|
|
82
|
+
}, this.#heartbeatIntervalMs);
|
|
83
|
+
heartbeat.unref?.();
|
|
84
|
+
try {
|
|
85
|
+
this.#controller.markStarting(lease, this.readNow());
|
|
86
|
+
const result = await input.execute(boundary);
|
|
87
|
+
if (!boundary.promptWriteIssued || !boundary.active) {
|
|
88
|
+
this.#controller.abandonBeforePrompt(lease, this.readNow(), result.stopReason === "cancelled" ? "cancelled" : "failed");
|
|
89
|
+
return result.stopReason;
|
|
90
|
+
}
|
|
91
|
+
if (heartbeatFailed) {
|
|
92
|
+
this.#controller.markExecutionRecoveryRequired(lease, this.readNow());
|
|
93
|
+
throw new AdmissionTurnRecoveryRequiredError();
|
|
94
|
+
}
|
|
95
|
+
this.#controller.completeLiveTurn(lease, this.readNow(), {
|
|
96
|
+
outcome: result.stopReason === "cancelled" ? "cancelled" : "completed"
|
|
97
|
+
});
|
|
98
|
+
return result.stopReason;
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
this.settleFailure(lease, boundary, error);
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
clearInterval(heartbeat);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
close() {
|
|
109
|
+
this.#closed = true;
|
|
110
|
+
}
|
|
111
|
+
async waitForLease(requestId, input) {
|
|
112
|
+
let lastProgressAt = -1;
|
|
113
|
+
let lastProgress = "";
|
|
114
|
+
while (true) {
|
|
115
|
+
this.assertOpen();
|
|
116
|
+
if (input.claim.aborted) {
|
|
117
|
+
this.cancelQueuedQuietly(requestId);
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const now = this.readNow();
|
|
121
|
+
const lease = this.#controller.admitRequest(requestId, now, this.#ownerIdentity.ownerInstanceId);
|
|
122
|
+
if (lease !== null)
|
|
123
|
+
return lease;
|
|
124
|
+
const request = this.#controller.getRequest(requestId);
|
|
125
|
+
if (request?.state === "queue_timeout")
|
|
126
|
+
throw new AdmissionQueueTimeoutError();
|
|
127
|
+
if (request?.state !== "queued") {
|
|
128
|
+
throw new AdmissionTurnRecoveryRequiredError();
|
|
129
|
+
}
|
|
130
|
+
const progress = this.#controller.getQueueSnapshot(requestId, now);
|
|
131
|
+
if (progress !== null && now - lastProgressAt >= this.#progressIntervalMs) {
|
|
132
|
+
const signature = progressSignature(progress);
|
|
133
|
+
if (signature !== lastProgress) {
|
|
134
|
+
this.reportProgress(input.reportProgress, progress);
|
|
135
|
+
lastProgress = signature;
|
|
136
|
+
}
|
|
137
|
+
lastProgressAt = now;
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
await this.#wait(this.#queuePollIntervalMs, input.claim.signal);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
this.cancelQueuedQuietly(requestId);
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
settleFailure(lease, boundary, error) {
|
|
149
|
+
const now = this.readNow();
|
|
150
|
+
try {
|
|
151
|
+
const state = this.#controller.getRequest(lease.requestId)?.state;
|
|
152
|
+
if (state === "completed" ||
|
|
153
|
+
state === "failed" ||
|
|
154
|
+
state === "cancelled" ||
|
|
155
|
+
state === "dispatch_ambiguous" ||
|
|
156
|
+
state === "recovery_required") {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (!boundary.promptWriteIssued) {
|
|
160
|
+
this.#controller.abandonBeforePrompt(lease, now, boundary.claim.aborted ? "cancelled" : "failed");
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (error instanceof AgyTerminalProviderError ||
|
|
164
|
+
(error instanceof AgyCliError && error.exitCode !== null)) {
|
|
165
|
+
this.#controller.completeLiveTurn(lease, now, {
|
|
166
|
+
outcome: "failed",
|
|
167
|
+
failure: failureFromAgyError(error)
|
|
168
|
+
});
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
this.#controller.markExecutionRecoveryRequired(lease, now);
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Preserve the original execution failure. Durable state remains the
|
|
175
|
+
// authority when this best-effort settlement itself loses its fence.
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
cancelQueuedQuietly(requestId) {
|
|
179
|
+
try {
|
|
180
|
+
this.#controller.cancelQueued(requestId, this.readNow());
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// A concurrent timeout or admission transition already owns settlement.
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
reportProgress(reporter, snapshot) {
|
|
187
|
+
if (reporter === undefined)
|
|
188
|
+
return;
|
|
189
|
+
try {
|
|
190
|
+
const result = reporter(Object.freeze({
|
|
191
|
+
state: "queued",
|
|
192
|
+
position: snapshot.position,
|
|
193
|
+
eligiblePosition: snapshot.eligiblePosition,
|
|
194
|
+
waitedMs: snapshot.waitedMs,
|
|
195
|
+
cooldownUntil: snapshot.cooldownUntil
|
|
196
|
+
}));
|
|
197
|
+
if (result && typeof result.then === "function") {
|
|
198
|
+
void Promise.resolve(result).catch(() => { });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
// Queue observation cannot change durable scheduling.
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
readNow() {
|
|
206
|
+
const value = this.#now();
|
|
207
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
208
|
+
throw new Error("admission clock is invalid");
|
|
209
|
+
return value;
|
|
210
|
+
}
|
|
211
|
+
assertOpen() {
|
|
212
|
+
if (this.#closed)
|
|
213
|
+
throw new Error("admission turn coordinator is closed");
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
class TurnDispatchBoundary {
|
|
217
|
+
claim;
|
|
218
|
+
#controller;
|
|
219
|
+
#lease;
|
|
220
|
+
#ownerIdentity;
|
|
221
|
+
#now;
|
|
222
|
+
#prepared = false;
|
|
223
|
+
#promptWriteIssued = false;
|
|
224
|
+
#active = false;
|
|
225
|
+
#record;
|
|
226
|
+
constructor(controller, lease, ownerIdentity, claim, now) {
|
|
227
|
+
this.#controller = controller;
|
|
228
|
+
this.#lease = lease;
|
|
229
|
+
this.#ownerIdentity = ownerIdentity;
|
|
230
|
+
this.claim = claim;
|
|
231
|
+
this.#now = now;
|
|
232
|
+
}
|
|
233
|
+
get promptWriteIssued() {
|
|
234
|
+
return this.#promptWriteIssued;
|
|
235
|
+
}
|
|
236
|
+
get active() {
|
|
237
|
+
return this.#active;
|
|
238
|
+
}
|
|
239
|
+
prepare(processId) {
|
|
240
|
+
this.prepareProcess(processId, "stdin");
|
|
241
|
+
}
|
|
242
|
+
preparePty(processId) {
|
|
243
|
+
this.prepareProcess(processId, "pty");
|
|
244
|
+
}
|
|
245
|
+
prepareProcess(processId, promptChannel) {
|
|
246
|
+
if (this.#prepared)
|
|
247
|
+
throw new Error("admission process boundary was already prepared");
|
|
248
|
+
this.claim.throwIfAborted();
|
|
249
|
+
const child = captureLinuxProcessIdentity(processId, nativeLinuxProcessEvidenceReaders);
|
|
250
|
+
const record = Object.freeze({
|
|
251
|
+
requestId: this.#lease.requestId,
|
|
252
|
+
leaseId: this.#lease.leaseId,
|
|
253
|
+
generation: this.#lease.generation,
|
|
254
|
+
ownerInstanceId: this.#lease.ownerInstanceId,
|
|
255
|
+
processIdentity: Object.freeze({ connector: this.#ownerIdentity, child }),
|
|
256
|
+
promptChannel
|
|
257
|
+
});
|
|
258
|
+
const recorded = this.#controller.recordProcessIdentity(record);
|
|
259
|
+
if (recorded.status !== "recorded")
|
|
260
|
+
throw new Error("admission process identity was not recorded");
|
|
261
|
+
this.#record = record;
|
|
262
|
+
this.#prepared = true;
|
|
263
|
+
}
|
|
264
|
+
beforePromptWrite() {
|
|
265
|
+
if (!this.#prepared || this.#promptWriteIssued)
|
|
266
|
+
throw new Error("admission prompt boundary is invalid");
|
|
267
|
+
this.claim.throwIfAborted();
|
|
268
|
+
if (this.#controller.getRequest(this.#lease.requestId)?.state !== "dispatch_intent") {
|
|
269
|
+
throw new Error("admission dispatch fence is stale");
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
commitDispatchIntent() {
|
|
273
|
+
if (!this.#prepared || this.#record === undefined || this.#promptWriteIssued) {
|
|
274
|
+
throw new Error("admission prompt boundary is invalid");
|
|
275
|
+
}
|
|
276
|
+
const committed = this.#controller.commitDispatchIntent(this.#record);
|
|
277
|
+
if (committed.status !== "committed")
|
|
278
|
+
throw new Error("admission dispatch intent was not committed");
|
|
279
|
+
}
|
|
280
|
+
afterPromptWrite() {
|
|
281
|
+
if (!this.#prepared || this.#promptWriteIssued)
|
|
282
|
+
throw new Error("admission prompt boundary is invalid");
|
|
283
|
+
this.#promptWriteIssued = true;
|
|
284
|
+
this.#controller.markActive(this.#lease, readNow(this.#now));
|
|
285
|
+
this.#active = true;
|
|
286
|
+
}
|
|
287
|
+
markDispatchAmbiguous() {
|
|
288
|
+
if (this.#promptWriteIssued)
|
|
289
|
+
throw new Error("admission prompt boundary is invalid");
|
|
290
|
+
this.#promptWriteIssued = true;
|
|
291
|
+
if (!this.#prepared) {
|
|
292
|
+
this.#controller.markExecutionRecoveryRequired(this.#lease, readNow(this.#now));
|
|
293
|
+
this.#active = false;
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
this.#controller.markDispatchAmbiguous(this.#lease, readNow(this.#now));
|
|
297
|
+
this.#active = false;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function failureFromAgyError(error) {
|
|
301
|
+
const source = `${error.message}\n${error.stderr}`.toUpperCase();
|
|
302
|
+
const httpStatus = /(?:^|\D)503(?:\D|$)/.test(source)
|
|
303
|
+
? 503
|
|
304
|
+
: /(?:^|\D)429(?:\D|$)/.test(source)
|
|
305
|
+
? 429
|
|
306
|
+
: /(?:^|\D)401(?:\D|$)/.test(source)
|
|
307
|
+
? 401
|
|
308
|
+
: /(?:^|\D)403(?:\D|$)/.test(source)
|
|
309
|
+
? 403
|
|
310
|
+
: undefined;
|
|
311
|
+
const code = [
|
|
312
|
+
"MODEL_CAPACITY_EXHAUSTED",
|
|
313
|
+
"QUOTA_EXHAUSTED",
|
|
314
|
+
"UNAUTHENTICATED",
|
|
315
|
+
"PERMISSION_DENIED",
|
|
316
|
+
"UNAVAILABLE"
|
|
317
|
+
].find((candidate) => source.includes(candidate));
|
|
318
|
+
return classifyProviderFailure({ httpStatus, code, reason: code });
|
|
319
|
+
}
|
|
320
|
+
function progressSignature(snapshot) {
|
|
321
|
+
return [snapshot.position, snapshot.eligiblePosition, snapshot.cooldownUntil].join(":");
|
|
322
|
+
}
|
|
323
|
+
function optionAgentId(options) {
|
|
324
|
+
if (options.parentId !== undefined) {
|
|
325
|
+
throw new Error("admission parentId is not accepted");
|
|
326
|
+
}
|
|
327
|
+
if (options.agentId !== undefined) {
|
|
328
|
+
return requireIdentifier(options.agentId, "agent ID");
|
|
329
|
+
}
|
|
330
|
+
return requireIdentifier(undefined, "agent ID");
|
|
331
|
+
}
|
|
332
|
+
function requireIdentifier(value, label) {
|
|
333
|
+
if (typeof value !== "string" ||
|
|
334
|
+
value.trim().length === 0 ||
|
|
335
|
+
value.length > 256 ||
|
|
336
|
+
/[\u0000-\u001f\u007f]/.test(value)) {
|
|
337
|
+
throw new Error(`admission ${label} is invalid`);
|
|
338
|
+
}
|
|
339
|
+
return value;
|
|
340
|
+
}
|
|
341
|
+
function positiveInterval(value, fallback, label) {
|
|
342
|
+
const resolved = value ?? fallback;
|
|
343
|
+
if (!Number.isSafeInteger(resolved) || resolved < 1)
|
|
344
|
+
throw new Error(`admission ${label} is invalid`);
|
|
345
|
+
return resolved;
|
|
346
|
+
}
|
|
347
|
+
function readNow(now) {
|
|
348
|
+
const value = now();
|
|
349
|
+
if (!Number.isSafeInteger(value) || value < 0)
|
|
350
|
+
throw new Error("admission clock is invalid");
|
|
351
|
+
return value;
|
|
352
|
+
}
|
|
353
|
+
function waitForAbort(milliseconds, signal) {
|
|
354
|
+
if (signal.aborted)
|
|
355
|
+
return Promise.reject(new Error("aborted"));
|
|
356
|
+
return new Promise((resolve, reject) => {
|
|
357
|
+
const timer = setTimeout(() => {
|
|
358
|
+
signal.removeEventListener("abort", abort);
|
|
359
|
+
resolve();
|
|
360
|
+
}, milliseconds);
|
|
361
|
+
const abort = () => {
|
|
362
|
+
clearTimeout(timer);
|
|
363
|
+
signal.removeEventListener("abort", abort);
|
|
364
|
+
reject(new Error("aborted"));
|
|
365
|
+
};
|
|
366
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
//# sourceMappingURL=turn-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-coordinator.js","sourceRoot":"","sources":["../../../ACP Connector/admission/turn-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { PRODUCT_AGENT_NAME, PRODUCT_AGENT_TITLE, overlayProductIdentity } from "./official-kernel/identity.js";
|
|
2
|
+
export { resolveAcpKernel } from "./official-kernel/kernel.js";
|
|
3
|
+
export { runOfficialLogin } from "./official-kernel/login.js";
|
|
4
|
+
export { runOfficialKernel } from "./official-kernel/run.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Public package entrypoint for the ACP Connector module.
|
|
2
|
+
export { PRODUCT_AGENT_NAME, PRODUCT_AGENT_TITLE, overlayProductIdentity } from "./official-kernel/identity.js";
|
|
3
|
+
export { resolveAcpKernel } from "./official-kernel/kernel.js";
|
|
4
|
+
export { runOfficialLogin } from "./official-kernel/login.js";
|
|
5
|
+
export { runOfficialKernel } from "./official-kernel/run.js";
|
|
6
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../ACP Connector/agent.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { resolveAcpKernel } from "./official-kernel/kernel.js";
|
|
5
|
+
import { runOfficialLogin } from "./official-kernel/login.js";
|
|
6
|
+
import { runOfficialKernel } from "./official-kernel/run.js";
|
|
7
|
+
const argv = process.argv;
|
|
8
|
+
const require = createRequire(import.meta.url);
|
|
9
|
+
const packageJson = require(existsSync(new URL("../package.json", import.meta.url))
|
|
10
|
+
? "../package.json"
|
|
11
|
+
: "../../package.json");
|
|
12
|
+
const version = packageJson.version ?? "0.0.0";
|
|
13
|
+
if (argv.includes("--version")) {
|
|
14
|
+
process.stdout.write(`${version}\n`);
|
|
15
|
+
}
|
|
16
|
+
else if (argv.includes("--login")) {
|
|
17
|
+
const code = await runOfficialLogin(process.env, version);
|
|
18
|
+
process.exit(code);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
try {
|
|
22
|
+
resolveAcpKernel(process.env, argv);
|
|
23
|
+
await runOfficialKernel({ env: process.env, version });
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
27
|
+
process.stderr.write(`${message}\n`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../ACP Connector/main.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AAC1B,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CACzB,UAAU,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC,CAAC,iBAAiB;IACnB,CAAC,CAAC,oBAAoB,CACD,CAAC;AAE1B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;AAE/C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACvC,CAAC;KAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;KAAM,CAAC;IACN,IAAI,CAAC;QACH,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACpC,MAAM,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type AdmissionRuntime } from "../admission/runtime.js";
|
|
2
|
+
import { AdmissionTurnCoordinator } from "../admission/turn-coordinator.js";
|
|
3
|
+
import type { AgyAdmissionDispatchBoundary } from "../admission/dispatch-boundary.js";
|
|
4
|
+
export declare function officialAdmissionStateDir(stateDir: string): string;
|
|
5
|
+
export declare function isAdmissionDiscoveryEnvironment(environment: NodeJS.ProcessEnv): boolean;
|
|
6
|
+
export declare function issueAdmittedOfficialPromptWrite(boundary: AgyAdmissionDispatchBoundary, processId: number, write: () => void): void;
|
|
7
|
+
export declare function createOfficialAdmission(environment: NodeJS.ProcessEnv): {
|
|
8
|
+
runtime: AdmissionRuntime;
|
|
9
|
+
coordinator: AdmissionTurnCoordinator;
|
|
10
|
+
} | undefined;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { createAdmissionRuntime } from "../admission/runtime.js";
|
|
3
|
+
import { AdmissionTurnCoordinator } from "../admission/turn-coordinator.js";
|
|
4
|
+
export function officialAdmissionStateDir(stateDir) {
|
|
5
|
+
return join(stateDir, "official-kernel");
|
|
6
|
+
}
|
|
7
|
+
export function isAdmissionDiscoveryEnvironment(environment) {
|
|
8
|
+
const enabled = environment.AGY_ACP_ADMISSION_ENABLED;
|
|
9
|
+
const agentId = environment.PASEO_AGENT_ID;
|
|
10
|
+
return ((enabled === "1" || enabled === "true") &&
|
|
11
|
+
(agentId === undefined || agentId.length === 0));
|
|
12
|
+
}
|
|
13
|
+
export function issueAdmittedOfficialPromptWrite(boundary, processId, write) {
|
|
14
|
+
boundary.prepare(processId);
|
|
15
|
+
const intent = boundary;
|
|
16
|
+
intent.commitDispatchIntent?.();
|
|
17
|
+
boundary.beforePromptWrite();
|
|
18
|
+
try {
|
|
19
|
+
write();
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
const ambiguous = boundary;
|
|
23
|
+
ambiguous.markDispatchAmbiguous?.();
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
26
|
+
boundary.afterPromptWrite();
|
|
27
|
+
}
|
|
28
|
+
export function createOfficialAdmission(environment) {
|
|
29
|
+
if (isAdmissionDiscoveryEnvironment(environment))
|
|
30
|
+
return undefined;
|
|
31
|
+
const enabled = environment.AGY_ACP_ADMISSION_ENABLED;
|
|
32
|
+
if (enabled !== "1" && enabled !== "true")
|
|
33
|
+
return undefined;
|
|
34
|
+
const parentStateDir = environment.AGY_ACP_STATE_DIR;
|
|
35
|
+
const isolated = {
|
|
36
|
+
...environment,
|
|
37
|
+
AGY_ACP_STATE_DIR: parentStateDir && parentStateDir.length > 0
|
|
38
|
+
? officialAdmissionStateDir(parentStateDir)
|
|
39
|
+
: parentStateDir
|
|
40
|
+
};
|
|
41
|
+
const runtime = createAdmissionRuntime(isolated);
|
|
42
|
+
if (runtime === null)
|
|
43
|
+
return undefined;
|
|
44
|
+
return {
|
|
45
|
+
runtime,
|
|
46
|
+
coordinator: new AdmissionTurnCoordinator({
|
|
47
|
+
controller: runtime.controller,
|
|
48
|
+
agentId: isolated.PASEO_AGENT_ID
|
|
49
|
+
})
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=admission-fence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission-fence.js","sourceRoot":"","sources":["../../../ACP Connector/official-kernel/admission-fence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,EAAyB,MAAM,yBAAyB,CAAC;AACxF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAG5E,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,OAAO,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,WAA8B;IAC5E,MAAM,OAAO,GAAG,WAAW,CAAC,yBAAyB,CAAC;IACtD,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC;IAC3C,OAAO,CACL,CAAC,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,MAAM,CAAC;QACvC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAChD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,QAAsC,EACtC,SAAiB,EACjB,KAAiB;IAEjB,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,QAAgF,CAAC;IAChG,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,KAAK,EAAE,CAAC;IACV,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,QAAiF,CAAC;QACpG,SAAS,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACpC,MAAM,KAAK,CAAC;IACd,CAAC;IACD,QAAQ,CAAC,gBAAgB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,WAA8B;IAE9B,IAAI,+BAA+B,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACnE,MAAM,OAAO,GAAG,WAAW,CAAC,yBAAyB,CAAC;IACtD,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC;IACrD,MAAM,QAAQ,GAAsB;QAClC,GAAG,WAAW;QACd,iBAAiB,EACf,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,yBAAyB,CAAC,cAAc,CAAC;YAC3C,CAAC,CAAC,cAAc;KACrB,CAAC;IACF,MAAM,OAAO,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACvC,OAAO;QACL,OAAO;QACP,WAAW,EAAE,IAAI,wBAAwB,CAAC;YACxC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,QAAQ,CAAC,cAAc;SACjC,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { isRecord } from "./json-rpc.js";
|
|
2
|
+
import { readPaseoDaemonAppendSystemPrompt, wrapPaseoDaemonContextBlock } from "../acp/session/paseo-context.js";
|
|
3
|
+
function prependTextBlock(prompt, text) {
|
|
4
|
+
const block = { type: "text", text };
|
|
5
|
+
if (Array.isArray(prompt))
|
|
6
|
+
return [block, ...prompt];
|
|
7
|
+
if (typeof prompt === "string")
|
|
8
|
+
return `${text}\n\n${prompt}`;
|
|
9
|
+
return [block];
|
|
10
|
+
}
|
|
11
|
+
export async function injectPaseoContext(params, environment = process.env) {
|
|
12
|
+
if (!isRecord(params))
|
|
13
|
+
return params;
|
|
14
|
+
const append = await readPaseoDaemonAppendSystemPrompt(environment);
|
|
15
|
+
if (!append)
|
|
16
|
+
return params;
|
|
17
|
+
return {
|
|
18
|
+
...params,
|
|
19
|
+
prompt: prependTextBlock(params.prompt, wrapPaseoDaemonContextBlock(append))
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function extractPromptText(params) {
|
|
23
|
+
if (!isRecord(params))
|
|
24
|
+
return "";
|
|
25
|
+
const prompt = params.prompt;
|
|
26
|
+
if (typeof prompt === "string")
|
|
27
|
+
return prompt;
|
|
28
|
+
if (!Array.isArray(prompt))
|
|
29
|
+
return "";
|
|
30
|
+
return prompt
|
|
31
|
+
.map((block) => {
|
|
32
|
+
if (!isRecord(block))
|
|
33
|
+
return "";
|
|
34
|
+
if (typeof block.text === "string")
|
|
35
|
+
return block.text;
|
|
36
|
+
if (isRecord(block.content) && typeof block.content.text === "string")
|
|
37
|
+
return block.content.text;
|
|
38
|
+
return "";
|
|
39
|
+
})
|
|
40
|
+
.filter((part) => part.length > 0)
|
|
41
|
+
.join("\n");
|
|
42
|
+
}
|
|
43
|
+
export function extractSessionId(params) {
|
|
44
|
+
if (!isRecord(params))
|
|
45
|
+
return undefined;
|
|
46
|
+
return typeof params.sessionId === "string"
|
|
47
|
+
? params.sessionId
|
|
48
|
+
: typeof params.session_id === "string"
|
|
49
|
+
? params.session_id
|
|
50
|
+
: undefined;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../ACP Connector/official-kernel/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,iCAAiC,EACjC,2BAA2B,EAC5B,MAAM,iCAAiC,CAAC;AAEzC,SAAS,gBAAgB,CAAC,MAAe,EAAE,IAAY;IACrD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,CAAC;IACrD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,GAAG,IAAI,OAAO,MAAM,EAAE,CAAC;IAC9D,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAe,EACf,WAAW,GAAsB,OAAO,CAAC,GAAG;IAE5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,iCAAiC,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,OAAO;QACL,GAAG,MAAM;QACT,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;KAC7E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC;QACtD,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACjG,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACzC,CAAC,CAAC,MAAM,CAAC,SAAS;QAClB,CAAC,CAAC,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;YACrC,CAAC,CAAC,MAAM,CAAC,UAAU;YACnB,CAAC,CAAC,SAAS,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type JsonRpcFailure, type JsonRpcId } from "./json-rpc.js";
|
|
2
|
+
export declare function sessionUpdateShowsVisibleOutput(params: unknown): boolean;
|
|
3
|
+
export declare function isSuccessfulEndTurn(result: unknown): boolean;
|
|
4
|
+
export declare function shouldRejectBlankTurn(result: unknown, sawVisibleOutput: boolean): boolean;
|
|
5
|
+
export declare function blankTurnError(id: JsonRpcId): JsonRpcFailure;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { isRecord, jsonRpcError } from "./json-rpc.js";
|
|
2
|
+
const VISIBLE_UPDATE_KINDS = new Set([
|
|
3
|
+
"agent_message_chunk",
|
|
4
|
+
"agent_message",
|
|
5
|
+
"message",
|
|
6
|
+
"agent_thought_chunk",
|
|
7
|
+
"tool_call",
|
|
8
|
+
"tool_call_update"
|
|
9
|
+
]);
|
|
10
|
+
export function sessionUpdateShowsVisibleOutput(params) {
|
|
11
|
+
if (!isRecord(params))
|
|
12
|
+
return false;
|
|
13
|
+
const update = isRecord(params.update) ? params.update : params;
|
|
14
|
+
const kind = (typeof update.sessionUpdate === "string" && update.sessionUpdate) ||
|
|
15
|
+
(typeof update.session_update === "string" && update.session_update) ||
|
|
16
|
+
(typeof update.type === "string" && update.type) ||
|
|
17
|
+
"";
|
|
18
|
+
if (VISIBLE_UPDATE_KINDS.has(kind))
|
|
19
|
+
return true;
|
|
20
|
+
if (isRecord(update.content) && typeof update.content.text === "string" && update.content.text.trim()) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
export function isSuccessfulEndTurn(result) {
|
|
26
|
+
if (!isRecord(result))
|
|
27
|
+
return false;
|
|
28
|
+
const stop = (typeof result.stopReason === "string" && result.stopReason) ||
|
|
29
|
+
(typeof result.stop_reason === "string" && result.stop_reason) ||
|
|
30
|
+
"end_turn";
|
|
31
|
+
return stop === "end_turn" || stop === "end_of_turn";
|
|
32
|
+
}
|
|
33
|
+
export function shouldRejectBlankTurn(result, sawVisibleOutput) {
|
|
34
|
+
return !sawVisibleOutput && isSuccessfulEndTurn(result);
|
|
35
|
+
}
|
|
36
|
+
export function blankTurnError(id) {
|
|
37
|
+
return jsonRpcError(id, "official kernel completed the turn without visible assistant output", -32000);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../ACP Connector/official-kernel/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAuC,MAAM,eAAe,CAAC;AAE5F,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,qBAAqB;IACrB,eAAe;IACf,SAAS;IACT,qBAAqB;IACrB,WAAW;IACX,kBAAkB;CACnB,CAAC,CAAC;AAEH,MAAM,UAAU,+BAA+B,CAAC,MAAe;IAC7D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,IAAI,GACR,CAAC,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC;QAClE,CAAC,OAAO,MAAM,CAAC,cAAc,KAAK,QAAQ,IAAI,MAAM,CAAC,cAAc,CAAC;QACpE,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC;QAChD,EAAE,CAAC;IACL,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACtG,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAe;IACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,MAAM,IAAI,GACR,CAAC,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC;QAC5D,CAAC,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC;QAC9D,UAAU,CAAC;IACb,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,aAAa,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAe,EAAE,gBAAyB;IAC9E,OAAO,CAAC,gBAAgB,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAa;IAC1C,OAAO,YAAY,CACjB,EAAE,EACF,qEAAqE,EACrE,CAAC,KAAK,CACP,CAAC;AACJ,CAAC"}
|