ycodium-acp-executor 0.2.2488
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/README.md +127 -0
- package/dist/adapter-support.d.ts +26 -0
- package/dist/adapter-support.d.ts.map +1 -0
- package/dist/adapter-support.js +79 -0
- package/dist/adapter-support.js.map +1 -0
- package/dist/approvals.d.ts +39 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +69 -0
- package/dist/approvals.js.map +1 -0
- package/dist/config-option-wiring.d.ts +71 -0
- package/dist/config-option-wiring.d.ts.map +1 -0
- package/dist/config-option-wiring.js +71 -0
- package/dist/config-option-wiring.js.map +1 -0
- package/dist/config-options.d.ts +75 -0
- package/dist/config-options.d.ts.map +1 -0
- package/dist/config-options.js +171 -0
- package/dist/config-options.js.map +1 -0
- package/dist/connection.d.ts +34 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +374 -0
- package/dist/connection.js.map +1 -0
- package/dist/errors.d.ts +21 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/event-stream.d.ts +15 -0
- package/dist/event-stream.d.ts.map +1 -0
- package/dist/event-stream.js +81 -0
- package/dist/event-stream.js.map +1 -0
- package/dist/events.d.ts +69 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +205 -0
- package/dist/events.js.map +1 -0
- package/dist/executor.d.ts +84 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +1179 -0
- package/dist/executor.js.map +1 -0
- package/dist/handshake.d.ts +24 -0
- package/dist/handshake.d.ts.map +1 -0
- package/dist/handshake.js +26 -0
- package/dist/handshake.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/jsonrpc.d.ts +12 -0
- package/dist/jsonrpc.d.ts.map +1 -0
- package/dist/jsonrpc.js +42 -0
- package/dist/jsonrpc.js.map +1 -0
- package/dist/line-buffer.d.ts +14 -0
- package/dist/line-buffer.d.ts.map +1 -0
- package/dist/line-buffer.js +51 -0
- package/dist/line-buffer.js.map +1 -0
- package/dist/mutex.d.ts +13 -0
- package/dist/mutex.d.ts.map +1 -0
- package/dist/mutex.js +44 -0
- package/dist/mutex.js.map +1 -0
- package/dist/probe.d.ts +74 -0
- package/dist/probe.d.ts.map +1 -0
- package/dist/probe.js +121 -0
- package/dist/probe.js.map +1 -0
- package/dist/protocol.d.ts +8 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +6 -0
- package/dist/protocol.js.map +1 -0
- package/dist/runtime-mode.d.ts +49 -0
- package/dist/runtime-mode.d.ts.map +1 -0
- package/dist/runtime-mode.js +123 -0
- package/dist/runtime-mode.js.map +1 -0
- package/dist/runtime-model.d.ts +157 -0
- package/dist/runtime-model.d.ts.map +1 -0
- package/dist/runtime-model.js +601 -0
- package/dist/runtime-model.js.map +1 -0
- package/dist/session-update.d.ts +42 -0
- package/dist/session-update.d.ts.map +1 -0
- package/dist/session-update.js +63 -0
- package/dist/session-update.js.map +1 -0
- package/dist/tool-presentation.d.ts +17 -0
- package/dist/tool-presentation.d.ts.map +1 -0
- package/dist/tool-presentation.js +209 -0
- package/dist/tool-presentation.js.map +1 -0
- package/dist/turn-usage.d.ts +18 -0
- package/dist/turn-usage.d.ts.map +1 -0
- package/dist/turn-usage.js +59 -0
- package/dist/turn-usage.js.map +1 -0
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +3 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +11 -0
- package/dist/util.js.map +1 -0
- package/dist/vendor-hooks.d.ts +112 -0
- package/dist/vendor-hooks.d.ts.map +1 -0
- package/dist/vendor-hooks.js +4 -0
- package/dist/vendor-hooks.js.map +1 -0
- package/package.json +39 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import type { AcpRequestPermissionParams } from "./types.ts";
|
|
2
|
+
/**
|
|
3
|
+
* 厂商差异的钩子。各 `@ycodium-ai/agent-*` 手用这些钩子表达与通用机的差异,
|
|
4
|
+
* 不得各自再写分帧或会话状态机。
|
|
5
|
+
*/
|
|
6
|
+
export type AcpVendorHooks = {
|
|
7
|
+
readonly completedStopReason?: (response: {
|
|
8
|
+
readonly stopReason: string;
|
|
9
|
+
}) => string | null;
|
|
10
|
+
/**
|
|
11
|
+
* 把 `session/request_permission` 识别成结构化用户输入。返回问题则走
|
|
12
|
+
* `user-input.*` 而不是审批卡。抛错 = 这次交互不符合该厂商的协议形状,
|
|
13
|
+
* 通用机回 JSON-RPC 错误,绝不能降格成批准/拒绝两档。
|
|
14
|
+
*/
|
|
15
|
+
readonly permissionUserInput?: (request: AcpRequestPermissionParams) => AcpUserInputQuestion | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* 厂商私有的 agent→client 请求。`ctx.askUserInput` 是唯一能把问题送到用户面前
|
|
18
|
+
* 并等回答的出口——钩子自己造等待表的话,CLI 崩溃时通用机的清理漏得掉它。
|
|
19
|
+
*/
|
|
20
|
+
readonly onExtensionRequest?: (method: string, params: unknown, ctx: AcpExtensionContext) => unknown | Promise<unknown>;
|
|
21
|
+
readonly onExtensionNotification?: (method: string, params: unknown) => void | Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* 一轮 prompt 应答落地后读这家 CLI 写在别处的上下文占用(ACP 的
|
|
24
|
+
* `usage_update` 至今没有 agent 真发)。返回 undefined = 读不出来,
|
|
25
|
+
* 通用机不发 `thread.token-usage.updated`,界面照旧不画圈。
|
|
26
|
+
*/
|
|
27
|
+
readonly readContextWindow?: (input: {
|
|
28
|
+
readonly sessionId: string;
|
|
29
|
+
readonly promptResponse: {
|
|
30
|
+
readonly stopReason: string;
|
|
31
|
+
readonly usage?: unknown;
|
|
32
|
+
};
|
|
33
|
+
}) => AcpContextWindowReading | undefined | Promise<AcpContextWindowReading | undefined>;
|
|
34
|
+
/** 这一轮可能被 RPC 应答之外的信号收口(Grok)。留空 = 只等应答。 */
|
|
35
|
+
readonly promptSettlement?: AcpPromptSettlementHooks;
|
|
36
|
+
readonly resolveRequestedModelId?: (model: string | null | undefined) => string | undefined;
|
|
37
|
+
readonly resolveDisplayModelId?: (modelId: string) => string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* 交给厂商扩展钩子的上下文。刻意只有一项:其余的(事件流、等待表、生成号)都是
|
|
41
|
+
* 通用机的内务,暴露出去就等于把生命周期防线的口子交给各家自己守。
|
|
42
|
+
*/
|
|
43
|
+
export type AcpExtensionContext = {
|
|
44
|
+
/**
|
|
45
|
+
* 把一组问题送到用户面前并等回答。返回 `cancelled` 的情形有三种:用户取消、
|
|
46
|
+
* 轮次被打断、CLI 崩溃——钩子按同一条路收尾即可,不必区分。
|
|
47
|
+
*/
|
|
48
|
+
readonly askUserInput: (questions: ReadonlyArray<AcpUserInputQuestion>) => Promise<AcpUserInputResolution>;
|
|
49
|
+
};
|
|
50
|
+
export type AcpUserInputResolution = {
|
|
51
|
+
readonly kind: "answered";
|
|
52
|
+
readonly answers: Record<string, unknown>;
|
|
53
|
+
} | {
|
|
54
|
+
readonly kind: "cancelled";
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* 这一轮除了 `session/prompt` 应答之外的收口渠道。
|
|
58
|
+
*
|
|
59
|
+
* Grok 1.0.24 起:发完私有通知 `_x.ai/session/prompt_complete` 就**不再回**那条 RPC
|
|
60
|
+
* 应答(`acp-mock-agent.ts` 用 `Effect.never` 建模,测试名 "when the prompt RPC hangs")。
|
|
61
|
+
* 只等应答的话这一轮永远不收口。
|
|
62
|
+
*
|
|
63
|
+
* 钩子只做**纯数据翻译**:注入关联 id、认出应答里的 id、把通知翻成结局。配对、去重、
|
|
64
|
+
* 与 RPC 竞速、取消、放弃输掉的那一方——全是通用机的内务,交出去各家会各写一遍。
|
|
65
|
+
*/
|
|
66
|
+
export type AcpPromptSettlementHooks = {
|
|
67
|
+
/**
|
|
68
|
+
* 往 `session/prompt` 的请求体上添几个字段,把 `promptKey` 带给 agent,通知才好认回来。
|
|
69
|
+
* 返回的对象浅合进请求体顶层。
|
|
70
|
+
*/
|
|
71
|
+
readonly requestFields: (promptKey: string) => Record<string, unknown>;
|
|
72
|
+
/** 正常 RPC 应答里的关联 id;认不出返回 undefined(那就按「这一轮」算)。 */
|
|
73
|
+
readonly responseKey?: (response: unknown) => string | undefined;
|
|
74
|
+
/**
|
|
75
|
+
* 把一条通知翻成这一轮的结局。不是收口信号就返回 undefined。
|
|
76
|
+
*
|
|
77
|
+
* `promptKey` 可以缺(Grok 的 `promptId` 是可选字段):缺了就按 `sessionId` 配当前这一轮。
|
|
78
|
+
* `outcome` 为 `"error"` 时通用机走失败通道——**绝不能归成正常结束**:Grok 额度耗尽
|
|
79
|
+
* 正是发 `stopReason: "error"`,归成成功的话用户看到的是一条空白回复(`cba38ce0d`)。
|
|
80
|
+
*/
|
|
81
|
+
readonly fromNotification: (method: string, params: unknown) => {
|
|
82
|
+
readonly sessionId: string;
|
|
83
|
+
readonly promptKey?: string;
|
|
84
|
+
readonly outcome: "completed" | "error";
|
|
85
|
+
readonly stopReason?: string;
|
|
86
|
+
readonly detail?: string;
|
|
87
|
+
} | undefined;
|
|
88
|
+
};
|
|
89
|
+
export type AcpContextWindowReading = {
|
|
90
|
+
readonly usedTokens: number;
|
|
91
|
+
readonly maxTokens?: number;
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* `user-input.requested` payload 里的问题形状。与 `@ycodium/contracts`
|
|
95
|
+
* `UserInputQuestion` 同构;本包不得 import 它,在这里自述,靠 CI 比对防分叉。
|
|
96
|
+
*/
|
|
97
|
+
export type AcpUserInputQuestionOption = {
|
|
98
|
+
readonly id?: string;
|
|
99
|
+
readonly label: string;
|
|
100
|
+
readonly description: string;
|
|
101
|
+
};
|
|
102
|
+
export type AcpUserInputQuestion = {
|
|
103
|
+
readonly id: string;
|
|
104
|
+
readonly header: string;
|
|
105
|
+
readonly question: string;
|
|
106
|
+
readonly options: ReadonlyArray<AcpUserInputQuestionOption>;
|
|
107
|
+
readonly allowFreeform?: boolean;
|
|
108
|
+
readonly kind?: "question" | "plan";
|
|
109
|
+
readonly multiSelect?: boolean;
|
|
110
|
+
};
|
|
111
|
+
export declare const defaultVendorHooks: AcpVendorHooks;
|
|
112
|
+
//# sourceMappingURL=vendor-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendor-hooks.d.ts","sourceRoot":"","sources":["../src/vendor-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vendor-hooks.js","sourceRoot":"","sources":["../src/vendor-hooks.ts"],"names":[],"mappings":"AA2HA,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,mBAAmB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU;CACvD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ycodium-acp-executor",
|
|
3
|
+
"version": "0.2.2488",
|
|
4
|
+
"description": "Agent Client Protocol client and executor state machine for Ycodium agent plugins. Speaks ACP over stdio and emits Ycodium executor events.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"acp",
|
|
7
|
+
"agent-client-protocol",
|
|
8
|
+
"ycodium"
|
|
9
|
+
],
|
|
10
|
+
"license": "UNLICENSED",
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"type": "module",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@agentclientprotocol/sdk": "1.4.0",
|
|
27
|
+
"zod": "4.6.5"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "24.12.4",
|
|
31
|
+
"typescript": "~6.0.3",
|
|
32
|
+
"vite-plus": "0.2.2"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc -p tsconfig.build.json",
|
|
36
|
+
"typecheck": "tsgo --noEmit",
|
|
37
|
+
"test": "vp test run"
|
|
38
|
+
}
|
|
39
|
+
}
|