@xgjktech/xg_cwork_im 1.17.18 → 1.17.20

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 (43) hide show
  1. package/README.md +432 -432
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +10 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/account-connection.d.ts +37 -0
  6. package/dist/src/account-connection.d.ts.map +1 -0
  7. package/dist/src/account-connection.js +335 -0
  8. package/dist/src/account-connection.js.map +1 -0
  9. package/dist/src/account-reconciler.d.ts +55 -0
  10. package/dist/src/account-reconciler.d.ts.map +1 -0
  11. package/dist/src/account-reconciler.js +294 -0
  12. package/dist/src/account-reconciler.js.map +1 -0
  13. package/dist/src/account-reconciler.test.d.ts +2 -0
  14. package/dist/src/account-reconciler.test.d.ts.map +1 -0
  15. package/dist/src/account-reconciler.test.js +148 -0
  16. package/dist/src/account-reconciler.test.js.map +1 -0
  17. package/dist/src/agent-stream-client-registry.d.ts +2 -0
  18. package/dist/src/agent-stream-client-registry.d.ts.map +1 -1
  19. package/dist/src/agent-stream-client-registry.js +6 -0
  20. package/dist/src/agent-stream-client-registry.js.map +1 -1
  21. package/dist/src/channel.d.ts +5 -0
  22. package/dist/src/channel.d.ts.map +1 -1
  23. package/dist/src/channel.js +9 -293
  24. package/dist/src/channel.js.map +1 -1
  25. package/dist/src/deliver-text.test.js +22 -22
  26. package/dist/src/gateway-session-queue.d.ts +2 -2
  27. package/dist/src/gateway-session-queue.d.ts.map +1 -1
  28. package/dist/src/gateway-session-queue.js +6 -6
  29. package/dist/src/gateway-session-queue.js.map +1 -1
  30. package/dist/src/plan-store-access.test.js +9 -9
  31. package/dist/src/subagent-monitor.js +1 -1
  32. package/dist/src/subagent-monitor.js.map +1 -1
  33. package/dist/src/turn-deliver-buffer.test.js +25 -25
  34. package/openclaw.plugin.json +27 -27
  35. package/package.json +78 -78
  36. package/dist/src/modified-file-push-tracker.d.ts +0 -24
  37. package/dist/src/modified-file-push-tracker.d.ts.map +0 -1
  38. package/dist/src/modified-file-push-tracker.js +0 -125
  39. package/dist/src/modified-file-push-tracker.js.map +0 -1
  40. package/dist/src/progress-display.d.ts +0 -77
  41. package/dist/src/progress-display.d.ts.map +0 -1
  42. package/dist/src/progress-display.js +0 -420
  43. package/dist/src/progress-display.js.map +0 -1
@@ -1,36 +1,36 @@
1
1
  import assert from "node:assert/strict";
2
2
  import { describe, it } from "node:test";
3
3
  import { isDeliverPayloadSendable, isDeliverTextRevision, snapshotSupersedesBufferText, TurnDeliverBuffer, } from "./turn-deliver-buffer.js";
4
- const HOUTONG_BODY_LOOSE = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
5
-
6
- 我已经重新生成了一版**纯 Markdown 可读版**:
7
-
8
- - 不用 SVG
9
- 新文件:
10
-
4
+ const HOUTONG_BODY_LOOSE = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
5
+
6
+ 我已经重新生成了一版**纯 Markdown 可读版**:
7
+
8
+ - 不用 SVG
9
+ 新文件:
10
+
11
11
  -----`;
12
- const HOUTONG_BODY_TIGHT = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
13
- 我已经重新生成了一版**纯 Markdown 可读版**:
14
- - 不用 SVG
12
+ const HOUTONG_BODY_TIGHT = `确实是这个问题:昨天那版虽然用了内嵌 SVG,但你现在的文档预览器没有把 SVG 正常渲染出来,所以流程看不到。
13
+ 我已经重新生成了一版**纯 Markdown 可读版**:
14
+ - 不用 SVG
15
15
  新文件:`;
16
- const WORLD_CUP_PARTIAL = `| 场次 | 时间 |
17
- | --- | --- |
18
- | 1 | 21:00 |
16
+ const WORLD_CUP_PARTIAL = `| 场次 | 时间 |
17
+ | --- | --- |
18
+ | 1 | 21:00 |
19
19
  | 2 |`;
20
- const WORLD_CUP_FULL = `| 场次 | 时间 |
21
- | --- | --- |
22
- | 1 | 21:00 |
23
- | 2 | 00:00 |
20
+ const WORLD_CUP_FULL = `| 场次 | 时间 |
21
+ | --- | --- |
22
+ | 1 | 21:00 |
23
+ | 2 | 00:00 |
24
24
  | 3 | 03:00 |`;
25
- const RT002_PART1 = `BEGIN_123
26
-
27
- ## 一、背景
28
-
25
+ const RT002_PART1 = `BEGIN_123
26
+
27
+ ## 一、背景
28
+
29
29
  随着人工智能技术的快速发展,企业级AI助手在提升工作效率中发挥着日益重要的作用。`;
30
- const RT002_PART2 = `- 工具调用的完整日志必须被记录,包括调用时间、调用者、工具名称。
31
-
32
- ## 六、审计
33
-
30
+ const RT002_PART2 = `- 工具调用的完整日志必须被记录,包括调用时间、调用者、工具名称。
31
+
32
+ ## 六、审计
33
+
34
34
  审计是AI助手治理的监督机制。`;
35
35
  function entry(textPart, hasMedia = false) {
36
36
  return {
@@ -1,28 +1,28 @@
1
- {
2
- "id": "xg_cwork_im",
3
- "channels": [
4
- "xg_cwork_im"
5
- ],
6
- "channelConfigs": {
7
- "xg_cwork_im": {
8
- "schema": {
9
- "type": "object",
10
- "additionalProperties": true,
11
- "properties": {}
12
- }
13
- }
14
- },
15
- "configSchema": {
16
- "type": "object",
17
- "additionalProperties": true,
18
- "properties": {}
19
- },
20
- "contracts": {
21
- "tools": [
22
- "xg_cwork_im_get_group_chat_history",
23
- "xg_cwork_im_send_group_message",
24
- "xg_cwork_im_send_file"
25
- ],
26
- "agentToolResultMiddleware": ["openclaw"]
27
- }
1
+ {
2
+ "id": "xg_cwork_im",
3
+ "channels": [
4
+ "xg_cwork_im"
5
+ ],
6
+ "channelConfigs": {
7
+ "xg_cwork_im": {
8
+ "schema": {
9
+ "type": "object",
10
+ "additionalProperties": true,
11
+ "properties": {}
12
+ }
13
+ }
14
+ },
15
+ "configSchema": {
16
+ "type": "object",
17
+ "additionalProperties": true,
18
+ "properties": {}
19
+ },
20
+ "contracts": {
21
+ "tools": [
22
+ "xg_cwork_im_get_group_chat_history",
23
+ "xg_cwork_im_send_group_message",
24
+ "xg_cwork_im_send_file"
25
+ ],
26
+ "agentToolResultMiddleware": ["openclaw"]
27
+ }
28
28
  }
package/package.json CHANGED
@@ -1,78 +1,78 @@
1
- {
2
- "name": "@xgjktech/xg_cwork_im",
3
- "version": "1.17.18",
4
- "description": "XG CWork IM channel plugin for OpenClaw",
5
- "keywords": [
6
- "bot",
7
- "channel",
8
- "openclaw",
9
- "xg_cwork_im",
10
- "im"
11
- ],
12
- "license": "MIT",
13
- "type": "module",
14
- "main": "dist/index.js",
15
- "types": "dist/index.d.ts",
16
- "engines": {
17
- "node": ">=22.19.0"
18
- },
19
- "files": [
20
- ".npmrc",
21
- "dist/**/*",
22
- "openclaw.plugin.json"
23
- ],
24
- "scripts": {
25
- "build": "tsc -p tsconfig.json",
26
- "type-check": "tsc -p tsconfig.json --noEmit",
27
- "lint": "tsc -p tsconfig.json --noEmit",
28
- "test": "npm run build && node --test dist/src/inbound-terminal-state.test.js dist/src/user-facing-errors.test.js dist/src/deliver-text.test.js dist/src/agent-context-types.test.js dist/src/block-streaming-config.test.js dist/src/per-message-fallback-notice.test.js dist/src/thinking-ws-progress.test.js dist/src/resource-file.test.js dist/src/turn-deliver-buffer.test.js dist/src/run-usage.test.js dist/src/ws-run-event-unmapped.test.js dist/src/send-service.test.js dist/src/send-file-tool.test.js dist/src/plan-tool-result.test.js dist/src/plan-blocked-notice.test.js dist/src/plan-store-access.test.js dist/src/plan-tool-middleware.test.js dist/src/plan-event-subscription.test.js dist/src/plan-ws-registry.test.js dist/src/plan-stat-event.test.js",
29
- "install:prod": "npm install --omit=dev",
30
- "prepublishOnly": "npm run build"
31
- },
32
- "dependencies": {
33
- "@sinclair/typebox": "^0.32.0",
34
- "@xgjktech/xg-openclaw-shared": "^0.2.2",
35
- "adm-zip": "^0.6.0",
36
- "axios": "^1.6.0",
37
- "tar": "^7.5.22",
38
- "ws": "^8.17.0",
39
- "zod": "^3.22.0"
40
- },
41
- "devDependencies": {
42
- "@types/node": "^22.19.0",
43
- "@types/ws": "^8.5.10",
44
- "openclaw": "^2026.6.10",
45
- "typescript": "^5.3.0"
46
- },
47
- "peerDependencies": {
48
- "openclaw": ">=2026.6.10"
49
- },
50
- "peerDependenciesMeta": {
51
- "openclaw": {
52
- "optional": true
53
- }
54
- },
55
- "openclaw": {
56
- "extensions": [
57
- "./dist/index.js"
58
- ],
59
- "channels": [
60
- "xg_cwork_im"
61
- ],
62
- "installDependencies": false,
63
- "channel": {
64
- "id": "xg_cwork_im",
65
- "label": "XG CWork IM",
66
- "selectionLabel": "XG CWork IM (工作说说)",
67
- "blurb": "工作说说 IM 机器人 Channel 插件,通过 WebSocket 长连接接收消息。",
68
- "aliases": [
69
- "xg_cwork_im",
70
- "im"
71
- ]
72
- },
73
- "install": {
74
- "localPath": ".",
75
- "defaultChoice": "local"
76
- }
77
- }
78
- }
1
+ {
2
+ "name": "@xgjktech/xg_cwork_im",
3
+ "version": "1.17.20",
4
+ "description": "XG CWork IM channel plugin for OpenClaw",
5
+ "keywords": [
6
+ "bot",
7
+ "channel",
8
+ "openclaw",
9
+ "xg_cwork_im",
10
+ "im"
11
+ ],
12
+ "license": "MIT",
13
+ "type": "module",
14
+ "main": "dist/index.js",
15
+ "types": "dist/index.d.ts",
16
+ "engines": {
17
+ "node": ">=22.19.0"
18
+ },
19
+ "files": [
20
+ ".npmrc",
21
+ "dist/**/*",
22
+ "openclaw.plugin.json"
23
+ ],
24
+ "scripts": {
25
+ "build": "tsc -p tsconfig.json",
26
+ "type-check": "tsc -p tsconfig.json --noEmit",
27
+ "lint": "tsc -p tsconfig.json --noEmit",
28
+ "test": "npm run build && node --test dist/src/account-reconciler.test.js dist/src/inbound-terminal-state.test.js dist/src/user-facing-errors.test.js dist/src/deliver-text.test.js dist/src/agent-context-types.test.js dist/src/block-streaming-config.test.js dist/src/channel-disabled-account.test.js dist/src/per-message-fallback-notice.test.js dist/src/thinking-ws-progress.test.js dist/src/resource-file.test.js dist/src/turn-deliver-buffer.test.js dist/src/run-usage.test.js dist/src/ws-run-event-unmapped.test.js dist/src/send-service.test.js dist/src/send-file-tool.test.js dist/src/plan-tool-result.test.js dist/src/plan-blocked-notice.test.js dist/src/plan-store-access.test.js dist/src/plan-tool-middleware.test.js dist/src/plan-event-subscription.test.js dist/src/plan-ws-registry.test.js dist/src/plan-stat-event.test.js",
29
+ "install:prod": "npm install --omit=dev",
30
+ "prepublishOnly": "npm run build"
31
+ },
32
+ "dependencies": {
33
+ "@sinclair/typebox": "^0.32.0",
34
+ "@xgjktech/xg-openclaw-shared": "^0.2.2",
35
+ "adm-zip": "^0.6.0",
36
+ "axios": "^1.6.0",
37
+ "tar": "^7.5.22",
38
+ "ws": "^8.17.0",
39
+ "zod": "^3.22.0"
40
+ },
41
+ "devDependencies": {
42
+ "@types/node": "^22.19.0",
43
+ "@types/ws": "^8.5.10",
44
+ "openclaw": "^2026.6.10",
45
+ "typescript": "^5.3.0"
46
+ },
47
+ "peerDependencies": {
48
+ "openclaw": ">=2026.6.10"
49
+ },
50
+ "peerDependenciesMeta": {
51
+ "openclaw": {
52
+ "optional": true
53
+ }
54
+ },
55
+ "openclaw": {
56
+ "extensions": [
57
+ "./dist/index.js"
58
+ ],
59
+ "channels": [
60
+ "xg_cwork_im"
61
+ ],
62
+ "installDependencies": false,
63
+ "channel": {
64
+ "id": "xg_cwork_im",
65
+ "label": "XG CWork IM",
66
+ "selectionLabel": "XG CWork IM (工作说说)",
67
+ "blurb": "工作说说 IM 机器人 Channel 插件,通过 WebSocket 长连接接收消息。",
68
+ "aliases": [
69
+ "xg_cwork_im",
70
+ "im"
71
+ ]
72
+ },
73
+ "install": {
74
+ "localPath": ".",
75
+ "defaultChoice": "local"
76
+ }
77
+ }
78
+ }
@@ -1,24 +0,0 @@
1
- import type { Logger } from "./channel-log.js";
2
- import { type ReplyDeliverPayload } from "./send-service.js";
3
- import type { WsMessageParams, XgImConfig } from "./types.js";
4
- export type PatchSummaryPayload = {
5
- added?: string[];
6
- modified?: string[];
7
- deleted?: string[];
8
- };
9
- type FlushArgs = {
10
- config: XgImConfig;
11
- token: string;
12
- params: WsMessageParams;
13
- };
14
- export declare function createModifiedFilePushTracker(options: {
15
- agentWorkspaceDir?: string;
16
- log: Logger;
17
- logPrefix: string;
18
- }): {
19
- recordPatchSummary: (payload: PatchSummaryPayload) => void;
20
- markDelivered: (payload: ReplyDeliverPayload) => void;
21
- flush: (args: FlushArgs) => Promise<void>;
22
- };
23
- export {};
24
- //# sourceMappingURL=modified-file-push-tracker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modified-file-push-tracker.d.ts","sourceRoot":"","sources":["../../src/modified-file-push-tracker.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAG/C,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,KAAK,SAAS,GAAG;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;CAC3B,CAAC;AAwFF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACrB,GAAG;IACA,kBAAkB,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC3D,aAAa,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACtD,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAgDA"}
@@ -1,125 +0,0 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { buildTargetReplyMeta } from "./inbound-display.js";
5
- import { resolveLocalFsPath, resolveWorkspaceCandidatePaths } from "./resource-file.js";
6
- import { sendReplyDeliverBlock } from "./send-service.js";
7
- function isUrlLike(value) {
8
- return /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(value.trim());
9
- }
10
- function normalizePushPath(filePath, workspaceDir) {
11
- const clean = filePath.trim();
12
- if (clean.startsWith("/workspace/") || clean === "/workspace") {
13
- return clean;
14
- }
15
- if (isUrlLike(clean)) {
16
- return clean;
17
- }
18
- const wsDir = workspaceDir?.trim();
19
- if (wsDir) {
20
- const wsResolved = path.resolve(wsDir);
21
- const fileResolved = path.isAbsolute(clean) ? path.resolve(clean) : path.resolve(wsResolved, clean);
22
- const relToWorkspace = path.relative(wsResolved, fileResolved);
23
- if (!relToWorkspace.startsWith("..") && !path.isAbsolute(relToWorkspace)) {
24
- return relToWorkspace ? `/workspace/${relToWorkspace.replace(/\\/g, "/")}` : "/workspace";
25
- }
26
- }
27
- return clean;
28
- }
29
- function pushPathCandidates(filePath, workspaceDir) {
30
- const clean = filePath.trim();
31
- if (!clean)
32
- return [];
33
- if (clean.startsWith("/workspace/") || clean === "/workspace") {
34
- try {
35
- return resolveWorkspaceCandidatePaths(clean, workspaceDir);
36
- }
37
- catch {
38
- return [];
39
- }
40
- }
41
- if (clean.startsWith("file://")) {
42
- try {
43
- return [fileURLToPath(clean)];
44
- }
45
- catch {
46
- return [];
47
- }
48
- }
49
- const local = resolveLocalFsPath(clean);
50
- if (local)
51
- return [local.fsPath];
52
- const wsDir = workspaceDir?.trim();
53
- if (wsDir && !path.isAbsolute(clean)) {
54
- return [path.resolve(wsDir, clean)];
55
- }
56
- return [];
57
- }
58
- async function isExistingRegularPushFile(filePath, workspaceDir) {
59
- for (const candidate of pushPathCandidates(filePath, workspaceDir)) {
60
- try {
61
- const stat = await fs.stat(candidate);
62
- if (stat.isFile())
63
- return true;
64
- }
65
- catch {
66
- /* try next candidate */
67
- }
68
- }
69
- return false;
70
- }
71
- async function filterExistingPushFiles(files, workspaceDir, log, logPrefix) {
72
- const out = [];
73
- for (const file of files) {
74
- if (await isExistingRegularPushFile(file, workspaceDir)) {
75
- out.push(file);
76
- }
77
- else {
78
- log.warn(`${logPrefix} [sync-push] Skip non-existing or non-file path: ${JSON.stringify(file)}`);
79
- }
80
- }
81
- return out;
82
- }
83
- function payloadMediaUrls(payload) {
84
- return [
85
- ...(payload.mediaUrl ? [payload.mediaUrl] : []),
86
- ...(payload.mediaUrls ?? []),
87
- ].filter((u) => typeof u === "string" && u.trim());
88
- }
89
- export function createModifiedFilePushTracker(options) {
90
- const { agentWorkspaceDir, log, logPrefix } = options;
91
- const modifiedFiles = new Set();
92
- return {
93
- recordPatchSummary(payload) {
94
- payload.added?.forEach((f) => modifiedFiles.add(normalizePushPath(f, agentWorkspaceDir)));
95
- payload.modified?.forEach((f) => modifiedFiles.add(normalizePushPath(f, agentWorkspaceDir)));
96
- },
97
- markDelivered(payload) {
98
- for (const url of payloadMediaUrls(payload)) {
99
- modifiedFiles.delete(normalizePushPath(url, agentWorkspaceDir));
100
- }
101
- },
102
- async flush(args) {
103
- if (modifiedFiles.size === 0)
104
- return;
105
- const mediaUrls = await filterExistingPushFiles(modifiedFiles, agentWorkspaceDir, log, logPrefix);
106
- if (mediaUrls.length === 0) {
107
- log.info(`${logPrefix} [sync-push] No existing modified files to push`);
108
- return;
109
- }
110
- log.info(`${logPrefix} [sync-push] 自动推送变动文件至客户端: ${JSON.stringify(mediaUrls)}`);
111
- try {
112
- const reply = buildTargetReplyMeta(args.params);
113
- await sendReplyDeliverBlock(args.config, args.token, args.params.groupId, {
114
- text: "已自动将本次修改的文件同步到工作区,您可以在右侧面板进行审阅:",
115
- isThinking: false,
116
- mediaUrls,
117
- }, [reply.targetUserId], log, undefined, reply, agentWorkspaceDir);
118
- }
119
- catch (err) {
120
- log.error(`${logPrefix} [sync-push] 自动推送文件附件失败: ${String(err)}`);
121
- }
122
- },
123
- };
124
- }
125
- //# sourceMappingURL=modified-file-push-tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modified-file-push-tracker.js","sourceRoot":"","sources":["../../src/modified-file-push-tracker.ts"],"names":[],"mappings":"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"}
@@ -1,77 +0,0 @@
1
- /** 用户可见的任务进度展示:把 OpenClaw 原始 hook 事件翻译成产品化文案。 */
2
- export type ProgressEventName = "TOOL_PHASE" | "PLAN_UPDATE" | "RUN_EVENT";
3
- export type UserProgressMessage = {
4
- event: ProgressEventName;
5
- displayText: string;
6
- summary?: string;
7
- };
8
- export type ToolStartPayload = {
9
- name?: string;
10
- phase?: string;
11
- args?: Record<string, unknown>;
12
- detailMode?: "explain" | "raw";
13
- };
14
- export type ToolResultPayload = {
15
- text?: string;
16
- isError?: boolean;
17
- markdown?: string;
18
- };
19
- export type PlanUpdatePayload = {
20
- phase?: string;
21
- title?: string;
22
- explanation?: string;
23
- steps?: string[];
24
- source?: string;
25
- };
26
- export type ApprovalEventPayload = {
27
- phase?: string;
28
- kind?: string;
29
- status?: string;
30
- title?: string;
31
- itemId?: string;
32
- toolCallId?: string;
33
- approvalId?: string;
34
- approvalSlug?: string;
35
- command?: string;
36
- host?: string;
37
- reason?: string;
38
- scope?: "turn" | "session";
39
- message?: string;
40
- };
41
- export type CommandOutputPayload = {
42
- itemId?: string;
43
- phase?: string;
44
- title?: string;
45
- toolCallId?: string;
46
- name?: string;
47
- output?: string;
48
- status?: string;
49
- exitCode?: number | null;
50
- durationMs?: number;
51
- cwd?: string;
52
- };
53
- export type PatchSummaryProgressPayload = {
54
- itemId?: string;
55
- phase?: string;
56
- title?: string;
57
- toolCallId?: string;
58
- name?: string;
59
- added?: string[];
60
- modified?: string[];
61
- deleted?: string[];
62
- summary?: string;
63
- };
64
- export declare function createProgressDisplayController(options: {
65
- simplify: boolean;
66
- stream: (msg: UserProgressMessage) => Promise<void>;
67
- }): {
68
- onToolStart: (payload: ToolStartPayload) => Promise<void>;
69
- onToolResult: (payload: ToolResultPayload) => Promise<void>;
70
- onPlanUpdate: (payload: PlanUpdatePayload) => Promise<void>;
71
- onCompactionStart: () => Promise<void>;
72
- onCompactionEnd: () => Promise<void>;
73
- onApprovalEvent: (payload: ApprovalEventPayload) => Promise<void>;
74
- onCommandOutput: (payload: CommandOutputPayload) => Promise<void>;
75
- onPatchSummary: (payload: PatchSummaryProgressPayload) => Promise<void>;
76
- };
77
- //# sourceMappingURL=progress-display.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progress-display.d.ts","sourceRoot":"","sources":["../../src/progress-display.ts"],"names":[],"mappings":"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"}