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.
Files changed (37) hide show
  1. package/dist/executor/lifecycle.d.ts +15 -0
  2. package/dist/executor/lifecycle.d.ts.map +1 -0
  3. package/dist/executor/lifecycle.js +150 -0
  4. package/dist/executor/lifecycle.js.map +1 -0
  5. package/dist/executor/prompt.d.ts +11 -0
  6. package/dist/executor/prompt.d.ts.map +1 -0
  7. package/dist/executor/prompt.js +283 -0
  8. package/dist/executor/prompt.js.map +1 -0
  9. package/dist/executor/requests.d.ts +13 -0
  10. package/dist/executor/requests.d.ts.map +1 -0
  11. package/dist/executor/requests.js +215 -0
  12. package/dist/executor/requests.js.map +1 -0
  13. package/dist/executor/runtime.d.ts +14 -0
  14. package/dist/executor/runtime.d.ts.map +1 -0
  15. package/dist/executor/runtime.js +103 -0
  16. package/dist/executor/runtime.js.map +1 -0
  17. package/dist/executor/session.d.ts +19 -0
  18. package/dist/executor/session.d.ts.map +1 -0
  19. package/dist/executor/session.js +225 -0
  20. package/dist/executor/session.js.map +1 -0
  21. package/dist/executor/settlement.d.ts +8 -0
  22. package/dist/executor/settlement.d.ts.map +1 -0
  23. package/dist/executor/settlement.js +70 -0
  24. package/dist/executor/settlement.js.map +1 -0
  25. package/dist/executor/support.d.ts +88 -0
  26. package/dist/executor/support.d.ts.map +1 -0
  27. package/dist/executor/support.js +13 -0
  28. package/dist/executor/support.js.map +1 -0
  29. package/dist/executor/updates.d.ts +8 -0
  30. package/dist/executor/updates.d.ts.map +1 -0
  31. package/dist/executor/updates.js +245 -0
  32. package/dist/executor/updates.js.map +1 -0
  33. package/dist/executor.d.ts +1 -1
  34. package/dist/executor.d.ts.map +1 -1
  35. package/dist/executor.js +144 -1247
  36. package/dist/executor.js.map +1 -1
  37. 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"}