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.
Files changed (98) hide show
  1. package/README.md +127 -0
  2. package/dist/adapter-support.d.ts +26 -0
  3. package/dist/adapter-support.d.ts.map +1 -0
  4. package/dist/adapter-support.js +79 -0
  5. package/dist/adapter-support.js.map +1 -0
  6. package/dist/approvals.d.ts +39 -0
  7. package/dist/approvals.d.ts.map +1 -0
  8. package/dist/approvals.js +69 -0
  9. package/dist/approvals.js.map +1 -0
  10. package/dist/config-option-wiring.d.ts +71 -0
  11. package/dist/config-option-wiring.d.ts.map +1 -0
  12. package/dist/config-option-wiring.js +71 -0
  13. package/dist/config-option-wiring.js.map +1 -0
  14. package/dist/config-options.d.ts +75 -0
  15. package/dist/config-options.d.ts.map +1 -0
  16. package/dist/config-options.js +171 -0
  17. package/dist/config-options.js.map +1 -0
  18. package/dist/connection.d.ts +34 -0
  19. package/dist/connection.d.ts.map +1 -0
  20. package/dist/connection.js +374 -0
  21. package/dist/connection.js.map +1 -0
  22. package/dist/errors.d.ts +21 -0
  23. package/dist/errors.d.ts.map +1 -0
  24. package/dist/errors.js +41 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/event-stream.d.ts +15 -0
  27. package/dist/event-stream.d.ts.map +1 -0
  28. package/dist/event-stream.js +81 -0
  29. package/dist/event-stream.js.map +1 -0
  30. package/dist/events.d.ts +69 -0
  31. package/dist/events.d.ts.map +1 -0
  32. package/dist/events.js +205 -0
  33. package/dist/events.js.map +1 -0
  34. package/dist/executor.d.ts +84 -0
  35. package/dist/executor.d.ts.map +1 -0
  36. package/dist/executor.js +1179 -0
  37. package/dist/executor.js.map +1 -0
  38. package/dist/handshake.d.ts +24 -0
  39. package/dist/handshake.d.ts.map +1 -0
  40. package/dist/handshake.js +26 -0
  41. package/dist/handshake.js.map +1 -0
  42. package/dist/index.d.ts +23 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +15 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/jsonrpc.d.ts +12 -0
  47. package/dist/jsonrpc.d.ts.map +1 -0
  48. package/dist/jsonrpc.js +42 -0
  49. package/dist/jsonrpc.js.map +1 -0
  50. package/dist/line-buffer.d.ts +14 -0
  51. package/dist/line-buffer.d.ts.map +1 -0
  52. package/dist/line-buffer.js +51 -0
  53. package/dist/line-buffer.js.map +1 -0
  54. package/dist/mutex.d.ts +13 -0
  55. package/dist/mutex.d.ts.map +1 -0
  56. package/dist/mutex.js +44 -0
  57. package/dist/mutex.js.map +1 -0
  58. package/dist/probe.d.ts +74 -0
  59. package/dist/probe.d.ts.map +1 -0
  60. package/dist/probe.js +121 -0
  61. package/dist/probe.js.map +1 -0
  62. package/dist/protocol.d.ts +8 -0
  63. package/dist/protocol.d.ts.map +1 -0
  64. package/dist/protocol.js +6 -0
  65. package/dist/protocol.js.map +1 -0
  66. package/dist/runtime-mode.d.ts +49 -0
  67. package/dist/runtime-mode.d.ts.map +1 -0
  68. package/dist/runtime-mode.js +123 -0
  69. package/dist/runtime-mode.js.map +1 -0
  70. package/dist/runtime-model.d.ts +157 -0
  71. package/dist/runtime-model.d.ts.map +1 -0
  72. package/dist/runtime-model.js +601 -0
  73. package/dist/runtime-model.js.map +1 -0
  74. package/dist/session-update.d.ts +42 -0
  75. package/dist/session-update.d.ts.map +1 -0
  76. package/dist/session-update.js +63 -0
  77. package/dist/session-update.js.map +1 -0
  78. package/dist/tool-presentation.d.ts +17 -0
  79. package/dist/tool-presentation.d.ts.map +1 -0
  80. package/dist/tool-presentation.js +209 -0
  81. package/dist/tool-presentation.js.map +1 -0
  82. package/dist/turn-usage.d.ts +18 -0
  83. package/dist/turn-usage.d.ts.map +1 -0
  84. package/dist/turn-usage.js +59 -0
  85. package/dist/turn-usage.js.map +1 -0
  86. package/dist/types.d.ts +116 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +6 -0
  89. package/dist/types.js.map +1 -0
  90. package/dist/util.d.ts +3 -0
  91. package/dist/util.d.ts.map +1 -0
  92. package/dist/util.js +11 -0
  93. package/dist/util.js.map +1 -0
  94. package/dist/vendor-hooks.d.ts +112 -0
  95. package/dist/vendor-hooks.d.ts.map +1 -0
  96. package/dist/vendor-hooks.js +4 -0
  97. package/dist/vendor-hooks.js.map +1 -0
  98. package/package.json +39 -0
package/dist/errors.js ADDED
@@ -0,0 +1,41 @@
1
+ export class AcpExecutorError extends Error {
2
+ code;
3
+ constructor(code, message) {
4
+ super(message);
5
+ this.name = "AcpExecutorError";
6
+ this.code = code;
7
+ }
8
+ }
9
+ export class AcpExecutorDisposedError extends AcpExecutorError {
10
+ constructor(message = "ACP executor has been disposed") {
11
+ super("disposed", message);
12
+ this.name = "AcpExecutorDisposedError";
13
+ }
14
+ }
15
+ export class AcpExecutorNotStartedError extends AcpExecutorError {
16
+ constructor(message = "ACP session has not been started") {
17
+ super("not-started", message);
18
+ this.name = "AcpExecutorNotStartedError";
19
+ }
20
+ }
21
+ export class AcpExecutorCancelTimeoutError extends AcpExecutorError {
22
+ constructor(message = "Timed out waiting for session/prompt to finish after cancellation") {
23
+ super("cancel-timeout", message);
24
+ this.name = "AcpExecutorCancelTimeoutError";
25
+ }
26
+ }
27
+ export class AcpExecutorRequestError extends AcpExecutorError {
28
+ method;
29
+ constructor(method, message) {
30
+ super("request-failed", message);
31
+ this.name = "AcpExecutorRequestError";
32
+ this.method = method;
33
+ }
34
+ }
35
+ export class AcpConnectionClosedError extends Error {
36
+ constructor(message = "ACP connection closed") {
37
+ super(message);
38
+ this.name = "AcpConnectionClosedError";
39
+ }
40
+ }
41
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAChC,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,gBAAgB;IAC5D,YAAY,OAAO,GAAG,gCAAgC;QACpD,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,gBAAgB;IAC9D,YAAY,OAAO,GAAG,kCAAkC;QACtD,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,6BAA8B,SAAQ,gBAAgB;IACjE,YAAY,OAAO,GAAG,mEAAmE;QACvF,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,+BAA+B,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,gBAAgB;IAClD,MAAM,CAAS;IAExB,YAAY,MAAc,EAAE,OAAe;QACzC,KAAK,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAO,GAAG,uBAAuB;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { ExecutorEvent } from "./types.ts";
2
+ /**
3
+ * 无界事件扇出。与现有 `Queue.unbounded` / `PubSub.unbounded` 一样不限内存。
4
+ *
5
+ * 有界会把入站通道堵住,而取消应答 / 审批请求可能正是解除等待的条件;
6
+ * 审批和生命周期事件也不能丢。文本增量合并是以后的优化,不在这一刀。
7
+ */
8
+ export declare class UnboundedEventStream {
9
+ private readonly subscribers;
10
+ private closed;
11
+ publish(event: ExecutorEvent): void;
12
+ close(): void;
13
+ subscribe(): AsyncIterable<ExecutorEvent>;
14
+ }
15
+ //# sourceMappingURL=event-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-stream.d.ts","sourceRoot":"","sources":["../src/event-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQhD;;;;;GAKG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAiBnC,KAAK,IAAI,IAAI;IAeb,SAAS,IAAI,aAAa,CAAC,aAAa,CAAC;CAwC1C"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * 无界事件扇出。与现有 `Queue.unbounded` / `PubSub.unbounded` 一样不限内存。
3
+ *
4
+ * 有界会把入站通道堵住,而取消应答 / 审批请求可能正是解除等待的条件;
5
+ * 审批和生命周期事件也不能丢。文本增量合并是以后的优化,不在这一刀。
6
+ */
7
+ export class UnboundedEventStream {
8
+ subscribers = new Set();
9
+ closed = false;
10
+ publish(event) {
11
+ if (this.closed) {
12
+ return;
13
+ }
14
+ for (const subscriber of this.subscribers) {
15
+ if (subscriber.closed) {
16
+ continue;
17
+ }
18
+ subscriber.queue.push(event);
19
+ const wake = subscriber.wake;
20
+ if (wake) {
21
+ subscriber.wake = undefined;
22
+ wake();
23
+ }
24
+ }
25
+ }
26
+ close() {
27
+ if (this.closed) {
28
+ return;
29
+ }
30
+ this.closed = true;
31
+ for (const subscriber of this.subscribers) {
32
+ subscriber.closed = true;
33
+ const wake = subscriber.wake;
34
+ if (wake) {
35
+ subscriber.wake = undefined;
36
+ wake();
37
+ }
38
+ }
39
+ }
40
+ subscribe() {
41
+ const subscriber = {
42
+ queue: [],
43
+ wake: undefined,
44
+ closed: this.closed,
45
+ };
46
+ this.subscribers.add(subscriber);
47
+ const iterators = this;
48
+ return {
49
+ [Symbol.asyncIterator]() {
50
+ return {
51
+ async next() {
52
+ while (true) {
53
+ const buffered = subscriber.queue.shift();
54
+ if (buffered !== undefined) {
55
+ return { value: buffered, done: false };
56
+ }
57
+ if (subscriber.closed || iterators.closed) {
58
+ iterators.subscribers.delete(subscriber);
59
+ return { value: undefined, done: true };
60
+ }
61
+ await new Promise((resolve) => {
62
+ subscriber.wake = resolve;
63
+ });
64
+ }
65
+ },
66
+ async return() {
67
+ subscriber.closed = true;
68
+ iterators.subscribers.delete(subscriber);
69
+ const wake = subscriber.wake;
70
+ if (wake) {
71
+ subscriber.wake = undefined;
72
+ wake();
73
+ }
74
+ return { value: undefined, done: true };
75
+ },
76
+ };
77
+ },
78
+ };
79
+ }
80
+ }
81
+ //# sourceMappingURL=event-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../src/event-stream.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IACd,WAAW,GAAG,IAAI,GAAG,EAAc,CAAC;IAC7C,MAAM,GAAG,KAAK,CAAC;IAEvB,OAAO,CAAC,KAAoB;QAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACT,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;gBAC5B,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;YACzB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;YAC7B,IAAI,IAAI,EAAE,CAAC;gBACT,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;gBAC5B,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;QACP,MAAM,UAAU,GAAe;YAC7B,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC;QACvB,OAAO;YACL,CAAC,MAAM,CAAC,aAAa,CAAC;gBACpB,OAAO;oBACL,KAAK,CAAC,IAAI;wBACR,OAAO,IAAI,EAAE,CAAC;4BACZ,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;4BAC1C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gCAC3B,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;4BAC1C,CAAC;4BACD,IAAI,UAAU,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;gCAC1C,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gCACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;4BAC1C,CAAC;4BACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gCAClC,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC;4BAC5B,CAAC,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;oBACD,KAAK,CAAC,MAAM;wBACV,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC;wBACzB,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wBACzC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;wBAC7B,IAAI,IAAI,EAAE,CAAC;4BACT,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC;4BAC5B,IAAI,EAAE,CAAC;wBACT,CAAC;wBACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBAC1C,CAAC;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * 从 `AcpCoreRuntimeEvents.ts` 搬来。零 Effect,只改类型 import。
3
+ */
4
+ import type { AcpPermissionRequest, AcpPlanUpdate, AcpToolCallState } from "./runtime-model.ts";
5
+ import type { AcpApprovalDecision, AcpApprovalOption, AcpCanonicalRequestType, AcpEventStamp, AcpFileChange, ExecutorEvent } from "./types.ts";
6
+ export declare function canonicalRequestTypeFromAcpKind(kind: string | "unknown"): AcpCanonicalRequestType;
7
+ export declare function fileChangesFromAcpPermission(permissionRequest: AcpPermissionRequest): ReadonlyArray<AcpFileChange> | undefined;
8
+ export declare function makeAcpRequestOpenedEvent(input: {
9
+ readonly stamp: AcpEventStamp;
10
+ readonly provider: string;
11
+ readonly threadId: string;
12
+ readonly turnId: string | undefined;
13
+ readonly requestId: string;
14
+ readonly permissionRequest: AcpPermissionRequest;
15
+ readonly detail: string;
16
+ readonly args: unknown;
17
+ readonly options?: ReadonlyArray<AcpApprovalOption>;
18
+ readonly fileChanges: ReadonlyArray<AcpFileChange> | undefined;
19
+ readonly source: string;
20
+ readonly method: string;
21
+ readonly rawPayload: unknown;
22
+ }): ExecutorEvent;
23
+ export declare function makeAcpRequestResolvedEvent(input: {
24
+ readonly stamp: AcpEventStamp;
25
+ readonly provider: string;
26
+ readonly threadId: string;
27
+ readonly turnId: string | undefined;
28
+ readonly requestId: string;
29
+ readonly permissionRequest: AcpPermissionRequest;
30
+ readonly decision: AcpApprovalDecision;
31
+ readonly reason?: string | undefined;
32
+ }): ExecutorEvent;
33
+ export declare function makeAcpPlanUpdatedEvent(input: {
34
+ readonly stamp: AcpEventStamp;
35
+ readonly provider: string;
36
+ readonly threadId: string;
37
+ readonly turnId: string | undefined;
38
+ readonly payload: AcpPlanUpdate;
39
+ readonly source: string;
40
+ readonly method: string;
41
+ readonly rawPayload: unknown;
42
+ }): ExecutorEvent;
43
+ export declare function makeAcpToolCallEvent(input: {
44
+ readonly stamp: AcpEventStamp;
45
+ readonly provider: string;
46
+ readonly threadId: string;
47
+ readonly turnId: string | undefined;
48
+ readonly toolCall: AcpToolCallState;
49
+ readonly rawPayload: unknown;
50
+ }): ExecutorEvent;
51
+ export declare function makeAcpAssistantItemEvent(input: {
52
+ readonly stamp: AcpEventStamp;
53
+ readonly provider: string;
54
+ readonly threadId: string;
55
+ readonly turnId: string | undefined;
56
+ readonly itemId: string;
57
+ readonly lifecycle: "item.started" | "item.completed";
58
+ }): ExecutorEvent;
59
+ export declare function makeAcpContentDeltaEvent(input: {
60
+ readonly stamp: AcpEventStamp;
61
+ readonly provider: string;
62
+ readonly threadId: string;
63
+ readonly turnId: string | undefined;
64
+ readonly itemId?: string;
65
+ readonly text: string;
66
+ readonly streamKind?: "assistant_text" | "reasoning_text";
67
+ readonly rawPayload: unknown;
68
+ }): ExecutorEvent;
69
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
package/dist/events.js ADDED
@@ -0,0 +1,205 @@
1
+ export function canonicalRequestTypeFromAcpKind(kind) {
2
+ switch (kind) {
3
+ case "execute":
4
+ return "exec_command_approval";
5
+ case "read":
6
+ return "file_read_approval";
7
+ case "edit":
8
+ case "delete":
9
+ case "move":
10
+ return "file_change_approval";
11
+ case "fetch":
12
+ return "web_fetch_approval";
13
+ case "search":
14
+ return "web_search_approval";
15
+ default:
16
+ return "dynamic_tool_call";
17
+ }
18
+ }
19
+ export function fileChangesFromAcpPermission(permissionRequest) {
20
+ const content = permissionRequest.toolCall?.data["content"];
21
+ const changes = Array.isArray(content)
22
+ ? content.flatMap((entry) => {
23
+ if (entry === null || typeof entry !== "object") {
24
+ return [];
25
+ }
26
+ const block = entry;
27
+ if (block["type"] !== "diff" ||
28
+ typeof block["path"] !== "string" ||
29
+ typeof block["newText"] !== "string") {
30
+ return [];
31
+ }
32
+ const oldText = typeof block["oldText"] === "string" ? block["oldText"] : undefined;
33
+ return [
34
+ {
35
+ path: block["path"],
36
+ changeKind: oldText === undefined ? "add" : "modify",
37
+ content: {
38
+ kind: "replace",
39
+ ...(oldText !== undefined ? { oldText } : {}),
40
+ newText: block["newText"],
41
+ },
42
+ },
43
+ ];
44
+ })
45
+ : [];
46
+ if (changes.length > 0) {
47
+ return changes;
48
+ }
49
+ if (canonicalRequestTypeFromAcpKind(permissionRequest.kind) !== "file_change_approval") {
50
+ return undefined;
51
+ }
52
+ const locations = permissionRequest.toolCall?.data["locations"];
53
+ const paths = Array.isArray(locations)
54
+ ? locations.flatMap((entry) => {
55
+ const path = entry?.["path"];
56
+ return typeof path === "string" && path.trim().length > 0 ? [path] : [];
57
+ })
58
+ : [];
59
+ return paths.length > 0
60
+ ? paths.map((path) => ({ path, omitted: "unavailable" }))
61
+ : undefined;
62
+ }
63
+ function canonicalItemTypeFromAcpToolKind(kind) {
64
+ switch (kind) {
65
+ case "execute":
66
+ return "command_execution";
67
+ case "edit":
68
+ case "delete":
69
+ case "move":
70
+ return "file_change";
71
+ case "search":
72
+ case "fetch":
73
+ return "web_search";
74
+ default:
75
+ return "dynamic_tool_call";
76
+ }
77
+ }
78
+ function runtimeItemStatusFromAcpToolStatus(status) {
79
+ switch (status) {
80
+ case "pending":
81
+ case "inProgress":
82
+ return "inProgress";
83
+ case "completed":
84
+ return "completed";
85
+ case "failed":
86
+ return "failed";
87
+ default:
88
+ return undefined;
89
+ }
90
+ }
91
+ export function makeAcpRequestOpenedEvent(input) {
92
+ const requestType = canonicalRequestTypeFromAcpKind(input.permissionRequest.kind);
93
+ const toolName = requestType === "dynamic_tool_call" ? input.permissionRequest.toolCall?.title : undefined;
94
+ return {
95
+ type: "request.opened",
96
+ ...input.stamp,
97
+ provider: input.provider,
98
+ threadId: input.threadId,
99
+ ...(input.turnId !== undefined ? { turnId: input.turnId } : {}),
100
+ requestId: input.requestId,
101
+ payload: {
102
+ requestType,
103
+ detail: input.detail,
104
+ ...(toolName ? { toolName } : {}),
105
+ args: input.args,
106
+ ...(input.options ? { options: input.options } : {}),
107
+ ...(input.fileChanges ? { fileChanges: input.fileChanges } : {}),
108
+ declineReasonRelay: "queued",
109
+ },
110
+ raw: {
111
+ source: input.source,
112
+ method: input.method,
113
+ payload: input.rawPayload,
114
+ },
115
+ };
116
+ }
117
+ export function makeAcpRequestResolvedEvent(input) {
118
+ return {
119
+ type: "request.resolved",
120
+ ...input.stamp,
121
+ provider: input.provider,
122
+ threadId: input.threadId,
123
+ ...(input.turnId !== undefined ? { turnId: input.turnId } : {}),
124
+ requestId: input.requestId,
125
+ payload: {
126
+ requestType: canonicalRequestTypeFromAcpKind(input.permissionRequest.kind),
127
+ decision: input.decision,
128
+ ...(input.reason ? { reason: input.reason } : {}),
129
+ },
130
+ };
131
+ }
132
+ export function makeAcpPlanUpdatedEvent(input) {
133
+ return {
134
+ type: "turn.plan.updated",
135
+ ...input.stamp,
136
+ provider: input.provider,
137
+ threadId: input.threadId,
138
+ ...(input.turnId !== undefined ? { turnId: input.turnId } : {}),
139
+ payload: input.payload,
140
+ raw: {
141
+ source: input.source,
142
+ method: input.method,
143
+ payload: input.rawPayload,
144
+ },
145
+ };
146
+ }
147
+ export function makeAcpToolCallEvent(input) {
148
+ const runtimeStatus = runtimeItemStatusFromAcpToolStatus(input.toolCall.status);
149
+ return {
150
+ type: input.toolCall.status === "completed" || input.toolCall.status === "failed"
151
+ ? "item.completed"
152
+ : "item.updated",
153
+ ...input.stamp,
154
+ provider: input.provider,
155
+ threadId: input.threadId,
156
+ ...(input.turnId !== undefined ? { turnId: input.turnId } : {}),
157
+ itemId: input.toolCall.toolCallId,
158
+ payload: {
159
+ itemType: canonicalItemTypeFromAcpToolKind(input.toolCall.kind),
160
+ ...(runtimeStatus ? { status: runtimeStatus } : {}),
161
+ ...(input.toolCall.title ? { title: input.toolCall.title } : {}),
162
+ ...(input.toolCall.detail ? { detail: input.toolCall.detail } : {}),
163
+ ...(Object.keys(input.toolCall.data).length > 0 ? { data: input.toolCall.data } : {}),
164
+ },
165
+ raw: {
166
+ source: "acp.jsonrpc",
167
+ method: "session/update",
168
+ payload: input.rawPayload,
169
+ },
170
+ };
171
+ }
172
+ export function makeAcpAssistantItemEvent(input) {
173
+ return {
174
+ type: input.lifecycle,
175
+ ...input.stamp,
176
+ provider: input.provider,
177
+ threadId: input.threadId,
178
+ ...(input.turnId !== undefined ? { turnId: input.turnId } : {}),
179
+ itemId: input.itemId,
180
+ payload: {
181
+ itemType: "assistant_message",
182
+ status: input.lifecycle === "item.completed" ? "completed" : "inProgress",
183
+ },
184
+ };
185
+ }
186
+ export function makeAcpContentDeltaEvent(input) {
187
+ return {
188
+ type: "content.delta",
189
+ ...input.stamp,
190
+ provider: input.provider,
191
+ threadId: input.threadId,
192
+ ...(input.turnId !== undefined ? { turnId: input.turnId } : {}),
193
+ ...(input.itemId ? { itemId: input.itemId } : {}),
194
+ payload: {
195
+ streamKind: input.streamKind ?? "assistant_text",
196
+ delta: input.text,
197
+ },
198
+ raw: {
199
+ source: "acp.jsonrpc",
200
+ method: "session/update",
201
+ payload: input.rawPayload,
202
+ },
203
+ };
204
+ }
205
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import type * as NodeStream from "node:stream";
2
+ import { type InitializeResponse } from "./protocol.ts";
3
+ import { AcpExecutorError } from "./errors.ts";
4
+ import { type AcpPermissionRequest } from "./runtime-model.ts";
5
+ import type { AcpApprovalDecision, AcpPromptInput, AcpSessionStartResult, AcpSessionStatus, AcpTurnResult, ExecutorEvent } from "./types.ts";
6
+ import { type AcpVendorHooks } from "./vendor-hooks.ts";
7
+ export type AcpExecutorOptions = {
8
+ readonly readable: NodeStream.Readable;
9
+ readonly writable: NodeStream.Writable;
10
+ readonly cwd: string;
11
+ readonly threadId: string;
12
+ readonly provider: string;
13
+ readonly providerInstanceId?: string;
14
+ readonly clientInfo: {
15
+ readonly name: string;
16
+ readonly version: string;
17
+ };
18
+ readonly resumeSessionId?: string;
19
+ readonly resumeMethod?: "session/load" | "session/resume";
20
+ readonly mcpServers?: ReadonlyArray<{
21
+ readonly type?: string;
22
+ readonly [key: string]: unknown;
23
+ }>;
24
+ readonly authMethodId?: string | ((initializeResult: InitializeResponse) => string | undefined);
25
+ readonly clientCapabilities?: {
26
+ readonly fs?: {
27
+ readonly readTextFile?: boolean;
28
+ readonly writeTextFile?: boolean;
29
+ };
30
+ readonly terminal?: boolean;
31
+ readonly [key: string]: unknown;
32
+ };
33
+ readonly hooks?: AcpVendorHooks;
34
+ /**
35
+ * 宿主替用户答掉的审批:返回 true 就直接选「允许」那一项,不弹给用户。只在输入区座位
36
+ * 画的是宿主四档时才传(「完全放开」得真的不问);座位画这只手自己的档时放不放行归
37
+ * CLI 那一档管,宿主再替它批就是座位之外的第二个答案。
38
+ */
39
+ readonly autoApprove?: (request: AcpPermissionRequest) => boolean;
40
+ readonly requestedModelId?: string;
41
+ /**
42
+ * 用户在输入区选的思考档位。会话建好之后经 `session/set_config_option` 发一次;
43
+ * 对不上这只手报的档就不发(见 `applyRequestedEffort`)。
44
+ */
45
+ readonly requestedEffort?: string;
46
+ /** 与插件 `host.log` 同形;缺席就不记。 */
47
+ readonly log?: {
48
+ readonly info: (message: string, fields?: Readonly<Record<string, unknown>>) => void;
49
+ readonly warn?: (message: string, fields?: Readonly<Record<string, unknown>>) => void;
50
+ };
51
+ readonly cancelGraceMs?: number;
52
+ readonly nowMs?: () => number;
53
+ readonly nowIso?: () => string;
54
+ readonly randomId?: () => string;
55
+ readonly originBindingGeneration?: number;
56
+ /**
57
+ * 测试缝:每次 RPC 成功之后、把结果写进会话状态之前调用。
58
+ * 用来构造「dispose 之后迟到的成功结果」。
59
+ */
60
+ readonly beforeApplyResult?: () => Promise<void>;
61
+ };
62
+ export type AcpExecutor = {
63
+ readonly generation: number;
64
+ readonly sessionId: string | undefined;
65
+ readonly modelId: string | undefined;
66
+ readonly status: AcpSessionStatus;
67
+ readonly events: AsyncIterable<ExecutorEvent>;
68
+ start(): Promise<AcpSessionStartResult>;
69
+ prompt(input: AcpPromptInput): Promise<AcpTurnResult>;
70
+ cancel(turnId?: string): Promise<void>;
71
+ respondToRequest(requestId: string, decision: AcpApprovalDecision, reason?: string): Promise<void>;
72
+ respondToUserInput(requestId: string, answers: unknown): Promise<void>;
73
+ /**
74
+ * 切到这只手自报的某一档审批模式。`modeId` 是它自己报的 id,**一路不翻译**。
75
+ *
76
+ * 两条路按 agent 报的形状挑:报了 `configOptions` 里 `category: "mode"` 那一项就走
77
+ * `session/set_config_option`(claude-agent-acp),否则走 `session/set_mode`(kimi)。
78
+ */
79
+ setNativeMode(modeId: string): Promise<void>;
80
+ dispose(): Promise<void>;
81
+ };
82
+ export declare function createAcpExecutor(options: AcpExecutorOptions): AcpExecutor;
83
+ export declare function isAcpExecutorError(error: unknown): error is AcpExecutorError;
84
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}