ycodium-acp-executor 0.2.3080 → 0.2.3088
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/executor/lifecycle.d.ts +15 -0
- package/dist/executor/lifecycle.d.ts.map +1 -0
- package/dist/executor/lifecycle.js +150 -0
- package/dist/executor/lifecycle.js.map +1 -0
- package/dist/executor/prompt.d.ts +11 -0
- package/dist/executor/prompt.d.ts.map +1 -0
- package/dist/executor/prompt.js +283 -0
- package/dist/executor/prompt.js.map +1 -0
- package/dist/executor/requests.d.ts +13 -0
- package/dist/executor/requests.d.ts.map +1 -0
- package/dist/executor/requests.js +215 -0
- package/dist/executor/requests.js.map +1 -0
- package/dist/executor/runtime.d.ts +14 -0
- package/dist/executor/runtime.d.ts.map +1 -0
- package/dist/executor/runtime.js +103 -0
- package/dist/executor/runtime.js.map +1 -0
- package/dist/executor/session.d.ts +19 -0
- package/dist/executor/session.d.ts.map +1 -0
- package/dist/executor/session.js +225 -0
- package/dist/executor/session.js.map +1 -0
- package/dist/executor/settlement.d.ts +8 -0
- package/dist/executor/settlement.d.ts.map +1 -0
- package/dist/executor/settlement.js +70 -0
- package/dist/executor/settlement.js.map +1 -0
- package/dist/executor/support.d.ts +88 -0
- package/dist/executor/support.d.ts.map +1 -0
- package/dist/executor/support.js +13 -0
- package/dist/executor/support.js.map +1 -0
- package/dist/executor/updates.d.ts +8 -0
- package/dist/executor/updates.d.ts.map +1 -0
- package/dist/executor/updates.js +245 -0
- package/dist/executor/updates.js.map +1 -0
- package/dist/executor.d.ts +1 -1
- package/dist/executor.d.ts.map +1 -1
- package/dist/executor.js +144 -1247
- package/dist/executor.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { createExecutorPrompt } from "./prompt.ts";
|
|
2
|
+
import type { createExecutorRequests } from "./requests.ts";
|
|
3
|
+
import type { createExecutorRuntime } from "./runtime.ts";
|
|
4
|
+
import type { createExecutorSession } from "./session.ts";
|
|
5
|
+
import type { createExecutorSettlement } from "./settlement.ts";
|
|
6
|
+
import type { AcpExecutorSupport } from "./support.ts";
|
|
7
|
+
import type { createExecutorUpdates } from "./updates.ts";
|
|
8
|
+
export declare function createExecutorLifecycle({ failIfDisposed, requireStarted, interruptedTurnIds, settleAllApprovals, settleAllUserInputs, abortPendingSettlement, connection, waitForPromptIdle, cancelGraceMs, isLive, closeActiveAssistantSegment, emit, stamp, options, promptMutex, randomId, nowMs, emitCompactionState, sendPromptRpc, compactions, notifyPromptSettled, eventStream, onInputDead, shared, }: Pick<AcpExecutorSupport, "interruptedTurnIds" | "connection" | "cancelGraceMs" | "options" | "promptMutex" | "randomId" | "nowMs" | "compactions" | "eventStream" | "onInputDead" | "shared"> & Pick<ReturnType<typeof createExecutorRuntime>, "failIfDisposed" | "waitForPromptIdle" | "isLive" | "closeActiveAssistantSegment" | "emit" | "stamp" | "notifyPromptSettled"> & Pick<ReturnType<typeof createExecutorUpdates>, "emitCompactionState"> & Pick<ReturnType<typeof createExecutorRequests>, "settleAllApprovals" | "settleAllUserInputs"> & Pick<ReturnType<typeof createExecutorSettlement>, "abortPendingSettlement"> & Pick<ReturnType<typeof createExecutorSession>, "requireStarted"> & Pick<ReturnType<typeof createExecutorPrompt>, "sendPromptRpc">): {
|
|
9
|
+
cancel: (turnId?: string) => Promise<void>;
|
|
10
|
+
compact: (input: {
|
|
11
|
+
readonly commandName: string;
|
|
12
|
+
}) => Promise<void>;
|
|
13
|
+
dispose: () => Promise<void>;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/executor/lifecycle.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,wBAAgB,uBAAuB,CAAC,EACtC,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,MAAM,EACN,2BAA2B,EAC3B,IAAI,EACJ,KAAK,EACL,OAAO,EACP,WAAW,EACX,QAAQ,EACR,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,MAAM,GACP,EAAE,IAAI,CACL,kBAAkB,EAChB,oBAAoB,GACpB,YAAY,GACZ,eAAe,GACf,SAAS,GACT,aAAa,GACb,UAAU,GACV,OAAO,GACP,aAAa,GACb,aAAa,GACb,aAAa,GACb,QAAQ,CACX,GACC,IAAI,CACF,UAAU,CAAC,OAAO,qBAAqB,CAAC,EACtC,gBAAgB,GAChB,mBAAmB,GACnB,QAAQ,GACR,6BAA6B,GAC7B,MAAM,GACN,OAAO,GACP,qBAAqB,CACxB,GACD,IAAI,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,EAAE,qBAAqB,CAAC,GACrE,IAAI,CAAC,UAAU,CAAC,OAAO,sBAAsB,CAAC,EAAE,oBAAoB,GAAG,qBAAqB,CAAC,GAC7F,IAAI,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,EAAE,wBAAwB,CAAC,GAC3E,IAAI,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,EAAE,gBAAgB,CAAC,GAChE,IAAI,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,EAAE,eAAe,CAAC;sBAC/B,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;qBA8CvB;QAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,IAAI,CAAC;mBA0EpD,OAAO,CAAC,IAAI,CAAC;EA8BxC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
// @effect-diagnostics nodeBuiltinImport:off
|
|
2
|
+
// @effect-diagnostics globalDate:off
|
|
3
|
+
// @effect-diagnostics globalTimers:off
|
|
4
|
+
import { AcpExecutorCancelTimeoutError, AcpExecutorDisposedError, AcpExecutorError, } from "../errors.js";
|
|
5
|
+
import {} from "../protocol.js";
|
|
6
|
+
export function createExecutorLifecycle({ failIfDisposed, requireStarted, interruptedTurnIds, settleAllApprovals, settleAllUserInputs, abortPendingSettlement, connection, waitForPromptIdle, cancelGraceMs, isLive, closeActiveAssistantSegment, emit, stamp, options, promptMutex, randomId, nowMs, emitCompactionState, sendPromptRpc, compactions, notifyPromptSettled, eventStream, onInputDead, shared, }) {
|
|
7
|
+
const cancel = async (turnId) => {
|
|
8
|
+
failIfDisposed();
|
|
9
|
+
const started = requireStarted();
|
|
10
|
+
const targetTurnId = turnId ?? shared.activeTurnId;
|
|
11
|
+
if (targetTurnId !== undefined) {
|
|
12
|
+
interruptedTurnIds.add(targetTurnId);
|
|
13
|
+
}
|
|
14
|
+
settleAllApprovals("cancel");
|
|
15
|
+
settleAllUserInputs();
|
|
16
|
+
abortPendingSettlement("turn cancelled");
|
|
17
|
+
const runCancel = async () => {
|
|
18
|
+
if (shared.sessionId) {
|
|
19
|
+
await connection.notify("session/cancel", { sessionId: shared.sessionId });
|
|
20
|
+
}
|
|
21
|
+
const settled = await waitForPromptIdle(cancelGraceMs);
|
|
22
|
+
if (!settled) {
|
|
23
|
+
throw new AcpExecutorCancelTimeoutError();
|
|
24
|
+
}
|
|
25
|
+
if (targetTurnId !== undefined && isLive(started.generation)) {
|
|
26
|
+
if (shared.activeTurnId === targetTurnId || interruptedTurnIds.has(targetTurnId)) {
|
|
27
|
+
if (shared.status === "running") {
|
|
28
|
+
closeActiveAssistantSegment(targetTurnId);
|
|
29
|
+
shared.promptsInFlight = 0;
|
|
30
|
+
shared.activeTurnId = undefined;
|
|
31
|
+
shared.status = "ready";
|
|
32
|
+
emit({
|
|
33
|
+
type: "turn.completed",
|
|
34
|
+
...stamp(),
|
|
35
|
+
provider: options.provider,
|
|
36
|
+
threadId: options.threadId,
|
|
37
|
+
turnId: targetTurnId,
|
|
38
|
+
payload: { state: "cancelled", stopReason: "cancelled" },
|
|
39
|
+
});
|
|
40
|
+
interruptedTurnIds.delete(targetTurnId);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
// 取消不走 thread 锁。今天 thread 锁只罩开轮与结算两段短临界区,prompt RPC 在锁外,
|
|
46
|
+
// 所以排进去也不会被 RPC 堵住——但那是「锁范围恰好正确」带来的,不是设计保证。
|
|
47
|
+
// 让取消独立于这把锁,是为了以后有人加长临界区时,Stop 仍然到得了。
|
|
48
|
+
await runCancel();
|
|
49
|
+
};
|
|
50
|
+
const compact = async (input) => {
|
|
51
|
+
failIfDisposed();
|
|
52
|
+
const started = requireStarted();
|
|
53
|
+
const trimmedName = input.commandName.trim();
|
|
54
|
+
const commandName = trimmedName.startsWith("/") ? trimmedName.slice(1) : trimmedName;
|
|
55
|
+
if (!shared.availableCommands.some((command) => command.name === commandName)) {
|
|
56
|
+
throw new AcpExecutorError("command-unavailable", `The agent has not advertised the /${commandName} command`);
|
|
57
|
+
}
|
|
58
|
+
if (shared.promptsInFlight > 0 ||
|
|
59
|
+
promptMutex.isLocked ||
|
|
60
|
+
shared.manualCompaction !== undefined) {
|
|
61
|
+
throw new AcpExecutorError("busy", "Cannot compact while a turn or another compaction is running");
|
|
62
|
+
}
|
|
63
|
+
const record = {
|
|
64
|
+
snapshotId: randomId(),
|
|
65
|
+
trigger: "manual",
|
|
66
|
+
startedAtMs: nowMs(),
|
|
67
|
+
summary: undefined,
|
|
68
|
+
announced: true,
|
|
69
|
+
finished: false,
|
|
70
|
+
adopted: false,
|
|
71
|
+
};
|
|
72
|
+
// 先占住 promptMutex 再宣布开始:并发的 prompt 排在压缩后面,不会插进命令中间。
|
|
73
|
+
await promptMutex.acquire();
|
|
74
|
+
shared.manualCompaction = record;
|
|
75
|
+
const emitSessionState = (state) => {
|
|
76
|
+
emit({
|
|
77
|
+
type: "session.state.changed",
|
|
78
|
+
...stamp(),
|
|
79
|
+
provider: options.provider,
|
|
80
|
+
threadId: options.threadId,
|
|
81
|
+
payload: { state, reason: "compaction" },
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
try {
|
|
85
|
+
failIfDisposed();
|
|
86
|
+
emitSessionState("compacting");
|
|
87
|
+
emitCompactionState(record, "compacting");
|
|
88
|
+
let response;
|
|
89
|
+
try {
|
|
90
|
+
response = await sendPromptRpc(started.sessionId, [
|
|
91
|
+
{ type: "text", text: `/${commandName}` },
|
|
92
|
+
]);
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (shared.disposed)
|
|
96
|
+
throw new AcpExecutorDisposedError();
|
|
97
|
+
throw error;
|
|
98
|
+
}
|
|
99
|
+
await connection.awaitInboundIdle();
|
|
100
|
+
if (response.stopReason === "cancelled") {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (!record.finished) {
|
|
104
|
+
record.finished = true;
|
|
105
|
+
emitCompactionState(record, "compacted");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
for (const [agentId, tracked] of compactions) {
|
|
110
|
+
if (tracked === record)
|
|
111
|
+
compactions.delete(agentId);
|
|
112
|
+
}
|
|
113
|
+
shared.manualCompaction = undefined;
|
|
114
|
+
promptMutex.release();
|
|
115
|
+
notifyPromptSettled();
|
|
116
|
+
if (!shared.disposed)
|
|
117
|
+
emitSessionState("ready");
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
const dispose = async () => {
|
|
121
|
+
if (shared.disposed) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
settleAllApprovals("cancel");
|
|
125
|
+
settleAllUserInputs();
|
|
126
|
+
abortPendingSettlement("executor disposed");
|
|
127
|
+
notifyPromptSettled();
|
|
128
|
+
shared.abortLocalPrompt?.();
|
|
129
|
+
emit({
|
|
130
|
+
type: "session.exited",
|
|
131
|
+
...stamp(),
|
|
132
|
+
provider: options.provider,
|
|
133
|
+
threadId: options.threadId,
|
|
134
|
+
payload: { reason: "disposed" },
|
|
135
|
+
});
|
|
136
|
+
shared.disposed = true;
|
|
137
|
+
shared.generation += 1;
|
|
138
|
+
shared.status = "disposed";
|
|
139
|
+
eventStream.close();
|
|
140
|
+
options.readable.off("end", onInputDead);
|
|
141
|
+
options.readable.off("error", onInputDead);
|
|
142
|
+
options.readable.pause();
|
|
143
|
+
if (!shared.connectionClosed) {
|
|
144
|
+
await connection.awaitInboundIdle().catch(() => undefined);
|
|
145
|
+
await connection.close().catch(() => undefined);
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
return { cancel, compact, dispose };
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/executor/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type PromptResponse } from "../protocol.ts";
|
|
2
|
+
import type { AcpContentBlock, AcpPromptInput, AcpTurnResult } from "../types.ts";
|
|
3
|
+
import type { createExecutorRuntime } from "./runtime.ts";
|
|
4
|
+
import type { createExecutorSession } from "./session.ts";
|
|
5
|
+
import type { createExecutorSettlement } from "./settlement.ts";
|
|
6
|
+
import type { AcpExecutorSupport } from "./support.ts";
|
|
7
|
+
export declare function createExecutorPrompt({ isLive, closeActiveAssistantSegment, emit, stamp, options, interruptedTurnIds, hooks, randomId, connection, rememberSettledPromptKey, failIfDisposed, requireStarted, threadMutex, promptMutex, applyRequestedModel, notifyPromptSettled, shared, }: Pick<AcpExecutorSupport, "options" | "interruptedTurnIds" | "hooks" | "randomId" | "connection" | "threadMutex" | "promptMutex" | "shared"> & Pick<ReturnType<typeof createExecutorRuntime>, "isLive" | "closeActiveAssistantSegment" | "emit" | "stamp" | "failIfDisposed" | "notifyPromptSettled"> & Pick<ReturnType<typeof createExecutorSettlement>, "rememberSettledPromptKey"> & Pick<ReturnType<typeof createExecutorSession>, "requireStarted" | "applyRequestedModel">): {
|
|
8
|
+
sendPromptRpc: (sessionId: string, promptParts: ReadonlyArray<AcpContentBlock>, onWritten?: () => void) => Promise<PromptResponse>;
|
|
9
|
+
prompt: (input: AcpPromptInput) => Promise<AcpTurnResult>;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/executor/prompt.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGlF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,2BAA2B,EAC3B,IAAI,EACJ,KAAK,EACL,OAAO,EACP,kBAAkB,EAClB,KAAK,EACL,QAAQ,EACR,UAAU,EACV,wBAAwB,EACxB,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,GACP,EAAE,IAAI,CACL,kBAAkB,EAChB,SAAS,GACT,oBAAoB,GACpB,OAAO,GACP,UAAU,GACV,YAAY,GACZ,aAAa,GACb,aAAa,GACb,QAAQ,CACX,GACC,IAAI,CACF,UAAU,CAAC,OAAO,qBAAqB,CAAC,EACtC,QAAQ,GACR,6BAA6B,GAC7B,MAAM,GACN,OAAO,GACP,gBAAgB,GAChB,qBAAqB,CACxB,GACD,IAAI,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,EAAE,0BAA0B,CAAC,GAC7E,IAAI,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,EAAE,gBAAgB,GAAG,qBAAqB,CAAC;+BAuD3E,MAAM,eACJ,aAAa,CAAC,eAAe,CAAC,cAC/B,MAAM,IAAI,KACrB,OAAO,CAAC,cAAc,CAAC;oBAkDG,cAAc,KAAG,OAAO,CAAC,aAAa,CAAC;EAkMrE"}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
// @effect-diagnostics nodeBuiltinImport:off
|
|
2
|
+
// @effect-diagnostics globalDate:off
|
|
3
|
+
// @effect-diagnostics globalTimers:off
|
|
4
|
+
import { acpPromptSettlementBelongsToContext } from "../adapter-support.js";
|
|
5
|
+
import { AcpExecutorDisposedError, AcpExecutorError } from "../errors.js";
|
|
6
|
+
import { acpPromptFailureCategory, failureCategoryField, withFailureCategory, } from "../failureCategory.js";
|
|
7
|
+
import {} from "../protocol.js";
|
|
8
|
+
import { selectPromptTurnId } from "../util.js";
|
|
9
|
+
import {} from "../vendor-hooks.js";
|
|
10
|
+
export function createExecutorPrompt({ isLive, closeActiveAssistantSegment, emit, stamp, options, interruptedTurnIds, hooks, randomId, connection, rememberSettledPromptKey, failIfDisposed, requireStarted, threadMutex, promptMutex, applyRequestedModel, notifyPromptSettled, shared, }) {
|
|
11
|
+
/** 这一条 prompt 落定;返回整轮是否就此收口(发了 `turn.completed`)。 */
|
|
12
|
+
const settleTurn = (input) => {
|
|
13
|
+
if (!isLive(input.expectedGeneration)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (!acpPromptSettlementBelongsToContext({
|
|
17
|
+
liveAcpSessionId: shared.sessionId ?? "",
|
|
18
|
+
expectedAcpSessionId: input.expectedSessionId,
|
|
19
|
+
liveActiveTurnId: shared.activeTurnId,
|
|
20
|
+
liveSessionActiveTurnId: shared.activeTurnId,
|
|
21
|
+
turnId: input.turnId,
|
|
22
|
+
})) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
closeActiveAssistantSegment(input.turnId);
|
|
26
|
+
shared.promptsInFlight = Math.max(0, shared.promptsInFlight - 1);
|
|
27
|
+
if (shared.promptsInFlight !== 0 || shared.activeTurnId !== input.turnId)
|
|
28
|
+
return false;
|
|
29
|
+
shared.activeTurnId = undefined;
|
|
30
|
+
if (shared.status !== "disposed") {
|
|
31
|
+
shared.status = "ready";
|
|
32
|
+
}
|
|
33
|
+
emit({
|
|
34
|
+
type: "turn.completed",
|
|
35
|
+
...stamp(),
|
|
36
|
+
provider: options.provider,
|
|
37
|
+
threadId: options.threadId,
|
|
38
|
+
turnId: input.turnId,
|
|
39
|
+
payload: {
|
|
40
|
+
state: input.state,
|
|
41
|
+
stopReason: input.stopReason,
|
|
42
|
+
...(input.errorMessage === undefined ? {} : { errorMessage: input.errorMessage }),
|
|
43
|
+
...(input.state === "failed" ? failureCategoryField(input.failureCategory) : {}),
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
interruptedTurnIds.delete(input.turnId);
|
|
47
|
+
return true;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* 发一条 `session/prompt` 并等它收口:RPC 应答,或提前收口钩子认出的通知,谁先到算谁。
|
|
51
|
+
* 调用方持有 `promptMutex`;轮次的开合与事件由调用方管。`onWritten` 在请求写进对端
|
|
52
|
+
* stdin 之后调用(规则 13 的传输完成点);写失败就不调。
|
|
53
|
+
*/
|
|
54
|
+
const sendPromptRpc = async (sessionId, promptParts, onWritten) => {
|
|
55
|
+
const settlementHooks = hooks.promptSettlement;
|
|
56
|
+
// 有提前收口钩子时给这一轮一个关联 id,通知才认得回来。
|
|
57
|
+
const promptKey = settlementHooks === undefined ? undefined : randomId();
|
|
58
|
+
const pending = connection.begin("session/prompt", {
|
|
59
|
+
sessionId,
|
|
60
|
+
prompt: promptParts,
|
|
61
|
+
...(settlementHooks !== undefined && promptKey !== undefined
|
|
62
|
+
? settlementHooks.requestFields(promptKey)
|
|
63
|
+
: {}),
|
|
64
|
+
});
|
|
65
|
+
// 不 await 写入:提前收口的等待要在下面同步登记好,对端回得再快也认得回来。
|
|
66
|
+
void pending.written.then(onWritten, () => undefined);
|
|
67
|
+
const promptRpc = pending.response;
|
|
68
|
+
// 老实等对端应答。取消走 `session/cancel` 通知让 agent 自己收尾,不在本地
|
|
69
|
+
// 假装 resolve —— 那会让「调用方不再等」被误当成「远端已经停了」。
|
|
70
|
+
//
|
|
71
|
+
// 唯一的例外是提前收口钩子:Grok 1.0.24 起发完 `prompt_complete` 就不再回这条
|
|
72
|
+
// 应答,只等它这一轮永远收不了口。那不是本地假装 resolve——收口信号是对端发的。
|
|
73
|
+
if (settlementHooks === undefined || promptKey === undefined) {
|
|
74
|
+
return await promptRpc;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const { promise: early, resolve: settleEarly } = Promise.withResolvers();
|
|
78
|
+
shared.pendingSettlement = { promptKey, sessionId, settle: settleEarly };
|
|
79
|
+
try {
|
|
80
|
+
const outcome = await Promise.race([
|
|
81
|
+
promptRpc.then((value) => {
|
|
82
|
+
const key = settlementHooks.responseKey?.(value);
|
|
83
|
+
if (key !== undefined)
|
|
84
|
+
rememberSettledPromptKey(key);
|
|
85
|
+
return { response: value };
|
|
86
|
+
}),
|
|
87
|
+
early,
|
|
88
|
+
]);
|
|
89
|
+
if (outcome.error !== undefined)
|
|
90
|
+
throw outcome.error;
|
|
91
|
+
return outcome.response;
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
shared.pendingSettlement = undefined;
|
|
95
|
+
// 输掉的那条 RPC 没人再等。协议层没有单请求取消,它挂在 pending 表里
|
|
96
|
+
// 直到连接关闭——一轮一条,所以这里吞掉它的 rejection,不留未处理拒绝。
|
|
97
|
+
void promptRpc.catch(() => undefined);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const prompt = async (input) => {
|
|
102
|
+
failIfDisposed();
|
|
103
|
+
const started = requireStarted();
|
|
104
|
+
const settle = (rest) => settleTurn({
|
|
105
|
+
expectedGeneration: started.generation,
|
|
106
|
+
expectedSessionId: started.sessionId,
|
|
107
|
+
...rest,
|
|
108
|
+
});
|
|
109
|
+
let turnId;
|
|
110
|
+
// thread 锁只罩短临界区(开轮、结算),不罩整个 prompt RPC。把整轮锁进去的话,
|
|
111
|
+
// 取消与审批答复会排在这把锁后面——「停止」和「允许」就永远到不了。
|
|
112
|
+
await threadMutex.acquire();
|
|
113
|
+
try {
|
|
114
|
+
failIfDisposed();
|
|
115
|
+
turnId = selectPromptTurnId(input, shared.promptsInFlight > 0 ? shared.activeTurnId : undefined, randomId);
|
|
116
|
+
shared.promptsInFlight += 1;
|
|
117
|
+
shared.activeTurnId = turnId;
|
|
118
|
+
shared.status = "running";
|
|
119
|
+
if (shared.promptsInFlight === 1) {
|
|
120
|
+
emit({
|
|
121
|
+
type: "turn.started",
|
|
122
|
+
...stamp(),
|
|
123
|
+
provider: options.provider,
|
|
124
|
+
threadId: options.threadId,
|
|
125
|
+
turnId,
|
|
126
|
+
payload: {},
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
finally {
|
|
131
|
+
threadMutex.release();
|
|
132
|
+
}
|
|
133
|
+
const promptParts = input.prompt ??
|
|
134
|
+
(input.text !== undefined
|
|
135
|
+
? [{ type: "text", text: input.text }]
|
|
136
|
+
: [{ type: "text", text: "" }]);
|
|
137
|
+
await promptMutex.acquire();
|
|
138
|
+
let response;
|
|
139
|
+
try {
|
|
140
|
+
failIfDisposed();
|
|
141
|
+
// 这一轮被打断、或插话的目标轮已不是活动轮:不写出去,换模型等完应答再核一次。普通 prompt 不看活动轮。
|
|
142
|
+
const queuedTurnId = turnId;
|
|
143
|
+
const isStale = () => interruptedTurnIds.has(queuedTurnId) ||
|
|
144
|
+
(input.expectedActiveTurnId !== undefined && shared.activeTurnId !== queuedTurnId);
|
|
145
|
+
if (!isStale()) {
|
|
146
|
+
shared.modelSelectionState = await applyRequestedModel({
|
|
147
|
+
state: shared.modelSelectionState,
|
|
148
|
+
acpSessionId: started.sessionId,
|
|
149
|
+
requestedModelId: input.requestedModelId,
|
|
150
|
+
expectedGeneration: started.generation,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
if (isStale()) {
|
|
154
|
+
settle({ turnId, stopReason: "cancelled", state: "cancelled" });
|
|
155
|
+
return { threadId: options.threadId, turnId, stopReason: "cancelled" };
|
|
156
|
+
}
|
|
157
|
+
closeActiveAssistantSegment(turnId);
|
|
158
|
+
let written = false;
|
|
159
|
+
try {
|
|
160
|
+
response = await sendPromptRpc(started.sessionId, promptParts, () => {
|
|
161
|
+
written = true;
|
|
162
|
+
input.onDispatched?.(turnId);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
if (shared.disposed) {
|
|
167
|
+
throw new AcpExecutorDisposedError();
|
|
168
|
+
}
|
|
169
|
+
// 调用方已经拿「写入落定」返回了,没人再接这次抛错:这一轮要靠事件以 failed 收尾。
|
|
170
|
+
// 打断引起的拒绝由 cancel 收成 cancelled;同一轮还有别的 prompt 在跑时没收口,不报失败。
|
|
171
|
+
const failureCategory = acpPromptFailureCategory(error, {
|
|
172
|
+
sessionEstablished: shared.startResult !== undefined,
|
|
173
|
+
disposed: shared.disposed,
|
|
174
|
+
});
|
|
175
|
+
if (written && input.onDispatched !== undefined && !interruptedTurnIds.has(turnId)) {
|
|
176
|
+
const errorMessage = (error instanceof Error && error.message.trim()) || "ACP prompt failed";
|
|
177
|
+
if (settle({
|
|
178
|
+
turnId,
|
|
179
|
+
stopReason: "error",
|
|
180
|
+
state: "failed",
|
|
181
|
+
errorMessage,
|
|
182
|
+
...(failureCategory === undefined ? {} : { failureCategory }),
|
|
183
|
+
}))
|
|
184
|
+
options.log?.warn?.("turn failed after dispatch", {
|
|
185
|
+
threadId: options.threadId,
|
|
186
|
+
failure: errorMessage,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
// 失败事件与抛给调用方的错误带同一个类别。
|
|
190
|
+
throw error instanceof Error ? withFailureCategory(error, failureCategory) : error;
|
|
191
|
+
}
|
|
192
|
+
// 应答唤醒调用方不代表同批通知已经派发:一次 stdio read 可能同时带回应答与
|
|
193
|
+
// 排在它后面的 `session/update`。不等排空就结算会漏事件。
|
|
194
|
+
await connection.awaitInboundIdle();
|
|
195
|
+
if (options.beforeApplyResult) {
|
|
196
|
+
await options.beforeApplyResult();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
promptMutex.release();
|
|
201
|
+
notifyPromptSettled();
|
|
202
|
+
}
|
|
203
|
+
if (!isLive(started.generation)) {
|
|
204
|
+
throw new AcpExecutorDisposedError();
|
|
205
|
+
}
|
|
206
|
+
if (turnId === undefined) {
|
|
207
|
+
throw new AcpExecutorError("internal", "ACP prompt settled without a turn id");
|
|
208
|
+
}
|
|
209
|
+
const settledTurnId = turnId;
|
|
210
|
+
// 上下文占用在这家 CLI 自己写的记录里(厂商钩子);读不到、读坏都不挡轮次收尾——少一条事件,界面不画圈,而不是画一个编出来的数。
|
|
211
|
+
let contextWindow;
|
|
212
|
+
if (hooks.readContextWindow !== undefined) {
|
|
213
|
+
try {
|
|
214
|
+
contextWindow =
|
|
215
|
+
(await hooks.readContextWindow({
|
|
216
|
+
sessionId: started.sessionId,
|
|
217
|
+
promptResponse: response,
|
|
218
|
+
})) ?? undefined;
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
contextWindow = undefined;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const finishPrompt = () => {
|
|
225
|
+
if (interruptedTurnIds.has(settledTurnId)) {
|
|
226
|
+
settle({ turnId: settledTurnId, stopReason: "cancelled", state: "cancelled" });
|
|
227
|
+
return {
|
|
228
|
+
threadId: options.threadId,
|
|
229
|
+
turnId: settledTurnId,
|
|
230
|
+
stopReason: "cancelled",
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
const stopReason = hooks.completedStopReason?.(response) ?? response.stopReason;
|
|
234
|
+
if (contextWindow !== undefined) {
|
|
235
|
+
emit({
|
|
236
|
+
type: "thread.token-usage.updated",
|
|
237
|
+
...stamp(),
|
|
238
|
+
provider: options.provider,
|
|
239
|
+
threadId: options.threadId,
|
|
240
|
+
turnId: settledTurnId,
|
|
241
|
+
payload: {
|
|
242
|
+
usage: {
|
|
243
|
+
usedTokens: contextWindow.usedTokens,
|
|
244
|
+
...(contextWindow.maxTokens === undefined
|
|
245
|
+
? {}
|
|
246
|
+
: { maxTokens: contextWindow.maxTokens }),
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
settle({
|
|
252
|
+
turnId: settledTurnId,
|
|
253
|
+
stopReason,
|
|
254
|
+
state: response.stopReason === "cancelled" ? "cancelled" : "completed",
|
|
255
|
+
});
|
|
256
|
+
return {
|
|
257
|
+
threadId: options.threadId,
|
|
258
|
+
turnId: settledTurnId,
|
|
259
|
+
stopReason,
|
|
260
|
+
...(response.usage !== undefined && response.usage !== null
|
|
261
|
+
? { usage: response.usage }
|
|
262
|
+
: {}),
|
|
263
|
+
};
|
|
264
|
+
};
|
|
265
|
+
if (threadMutex.tryAcquire()) {
|
|
266
|
+
try {
|
|
267
|
+
return finishPrompt();
|
|
268
|
+
}
|
|
269
|
+
finally {
|
|
270
|
+
threadMutex.release();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
await threadMutex.acquire();
|
|
274
|
+
try {
|
|
275
|
+
return finishPrompt();
|
|
276
|
+
}
|
|
277
|
+
finally {
|
|
278
|
+
threadMutex.release();
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
return { sendPromptRpc, prompt };
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/executor/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AcpApprovalDecision } from "../types.ts";
|
|
2
|
+
import { type AcpExtensionContext } from "../vendor-hooks.ts";
|
|
3
|
+
import type { createExecutorRuntime } from "./runtime.ts";
|
|
4
|
+
import type { AcpExecutorSupport } from "./support.ts";
|
|
5
|
+
export declare function createExecutorRequests({ emit, stamp, options, approvals, pendingUserInputs, failIfDisposed, randomId, hooks, shared, }: Pick<AcpExecutorSupport, "options" | "approvals" | "pendingUserInputs" | "randomId" | "hooks" | "shared"> & Pick<ReturnType<typeof createExecutorRuntime>, "emit" | "stamp" | "failIfDisposed">): {
|
|
6
|
+
settleAllApprovals: (decision: AcpApprovalDecision) => void;
|
|
7
|
+
settleAllUserInputs: () => void;
|
|
8
|
+
makeExtensionContext: (method: string, params: unknown) => AcpExtensionContext;
|
|
9
|
+
handlePermissionRequest: (params: unknown) => Promise<unknown>;
|
|
10
|
+
respondToRequest: (requestId: string, decision: AcpApprovalDecision, reason?: string) => Promise<void>;
|
|
11
|
+
respondToUserInput: (requestId: string, answers: unknown) => Promise<void>;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=requests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../src/executor/requests.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,mBAAmB,EAA8B,MAAM,aAAa,CAAC;AAGnF,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,KAAK,EACL,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,KAAK,EACL,MAAM,GACP,EAAE,IAAI,CACL,kBAAkB,EAClB,SAAS,GAAG,WAAW,GAAG,mBAAmB,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,CAChF,GACC,IAAI,CAAC,UAAU,CAAC,OAAO,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,gBAAgB,CAAC;mCAiC7C,mBAAmB,KAAG,IAAI;+BAqBhC,IAAI;mCAqDE,MAAM,UAAU,OAAO,KAAG,mBAAmB;sCAmCpC,OAAO,KAAG,OAAO,CAAC,OAAO,CAAC;kCA+C5D,MAAM,YACP,mBAAmB,WACpB,MAAM,KACd,OAAO,CAAC,IAAI,CAAC;oCAiC6B,MAAM,WAAW,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC;EA4BtF"}
|