openclaw-plugin-fast-task 1.0.0

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 (71) hide show
  1. package/README.md +95 -0
  2. package/dist/account/utils.d.ts +21 -0
  3. package/dist/account/utils.d.ts.map +1 -0
  4. package/dist/account/utils.js +92 -0
  5. package/dist/account/utils.js.map +1 -0
  6. package/dist/channel/channel_common.d.ts +12 -0
  7. package/dist/channel/channel_common.d.ts.map +1 -0
  8. package/dist/channel/channel_common.js +16 -0
  9. package/dist/channel/channel_common.js.map +1 -0
  10. package/dist/channel/channel_config.d.ts +4 -0
  11. package/dist/channel/channel_config.d.ts.map +1 -0
  12. package/dist/channel/channel_config.js +86 -0
  13. package/dist/channel/channel_config.js.map +1 -0
  14. package/dist/channel/channel_gateway.d.ts +4 -0
  15. package/dist/channel/channel_gateway.d.ts.map +1 -0
  16. package/dist/channel/channel_gateway.js +18 -0
  17. package/dist/channel/channel_gateway.js.map +1 -0
  18. package/dist/channel/channel_onboarding.d.ts +3 -0
  19. package/dist/channel/channel_onboarding.d.ts.map +1 -0
  20. package/dist/channel/channel_onboarding.js +70 -0
  21. package/dist/channel/channel_onboarding.js.map +1 -0
  22. package/dist/channel/channel_utils.d.ts +12 -0
  23. package/dist/channel/channel_utils.d.ts.map +1 -0
  24. package/dist/channel/channel_utils.js +20 -0
  25. package/dist/channel/channel_utils.js.map +1 -0
  26. package/dist/channel/index.d.ts +3 -0
  27. package/dist/channel/index.d.ts.map +1 -0
  28. package/dist/channel/index.js +5 -0
  29. package/dist/channel/index.js.map +1 -0
  30. package/dist/channel/plugin.d.ts +4 -0
  31. package/dist/channel/plugin.d.ts.map +1 -0
  32. package/dist/channel/plugin.js +72 -0
  33. package/dist/channel/plugin.js.map +1 -0
  34. package/dist/client/index.d.ts +2 -0
  35. package/dist/client/index.d.ts.map +1 -0
  36. package/dist/client/index.js +2 -0
  37. package/dist/client/index.js.map +1 -0
  38. package/dist/client/ws_client.d.ts +97 -0
  39. package/dist/client/ws_client.d.ts.map +1 -0
  40. package/dist/client/ws_client.js +450 -0
  41. package/dist/client/ws_client.js.map +1 -0
  42. package/dist/command/index.d.ts +3 -0
  43. package/dist/command/index.d.ts.map +1 -0
  44. package/dist/command/index.js +3 -0
  45. package/dist/command/index.js.map +1 -0
  46. package/dist/common.d.ts +5 -0
  47. package/dist/common.d.ts.map +1 -0
  48. package/dist/common.js +9 -0
  49. package/dist/common.js.map +1 -0
  50. package/dist/index.d.ts +24 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +33 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/runtime/index.d.ts +4 -0
  55. package/dist/runtime/index.d.ts.map +1 -0
  56. package/dist/runtime/index.js +4 -0
  57. package/dist/runtime/index.js.map +1 -0
  58. package/dist/types.d.ts +1 -0
  59. package/dist/types.d.ts.map +1 -0
  60. package/dist/types.js +2 -0
  61. package/dist/types.js.map +1 -0
  62. package/dist/workspace/index.d.ts +5 -0
  63. package/dist/workspace/index.d.ts.map +1 -0
  64. package/dist/workspace/index.js +5 -0
  65. package/dist/workspace/index.js.map +1 -0
  66. package/dist/workspace/workspace.d.ts +73 -0
  67. package/dist/workspace/workspace.d.ts.map +1 -0
  68. package/dist/workspace/workspace.js +173 -0
  69. package/dist/workspace/workspace.js.map +1 -0
  70. package/openclaw.plugin.json +13 -0
  71. package/package.json +63 -0
@@ -0,0 +1,97 @@
1
+ import { WsJsonMessage } from './types';
2
+ import { ChannelGatewayContext } from 'openclaw/plugin-sdk';
3
+ import { ResolvedChannelAccount } from '../channel/type';
4
+ import { type WorkspaceFileName } from '../workspace/workspace';
5
+ /**
6
+ * WebSocket 客户端
7
+ */
8
+ export declare class WSClient {
9
+ private ws;
10
+ private url;
11
+ private reconnectAttempts;
12
+ private maxReconnectAttempts;
13
+ private reconnectDelay;
14
+ private cfg;
15
+ private agentId;
16
+ constructor(cxt: ChannelGatewayContext<ResolvedChannelAccount>);
17
+ /**
18
+ * 连接到 WebSocket 服务器
19
+ */
20
+ connect(): Promise<void>;
21
+ /**
22
+ * 发送消息
23
+ */
24
+ send(data: string | object): void;
25
+ /**
26
+ * 关闭连接
27
+ */
28
+ disconnect(): void;
29
+ /**
30
+ * 获取连接状态
31
+ */
32
+ get isOpen(): boolean;
33
+ /**
34
+ * 处理重连
35
+ */
36
+ private handleReconnect;
37
+ /**
38
+ * 处理收到的消息
39
+ */
40
+ private onMessage;
41
+ /**
42
+ * 处理 JSON 消息(子类可重写)
43
+ */
44
+ private onJsonMessage;
45
+ handleWelCome(message: WsJsonMessage): Promise<void>;
46
+ private handleDirect;
47
+ handleToAgent(message: WsJsonMessage): Promise<void>;
48
+ handleToGateway(message: WsJsonMessage): Promise<void>;
49
+ handleCmd(message: WsJsonMessage): Promise<void>;
50
+ cmdAgentsList(): string[];
51
+ cmdAgentInfo(id: string): any;
52
+ cmdAgentBindings(): any;
53
+ /**
54
+ * 验证 workspace 文件名是否有效
55
+ */
56
+ private isValidWorkspaceFile;
57
+ /**
58
+ * 发送错误消息
59
+ */
60
+ private sendError;
61
+ /**
62
+ * 读取 workspace 文件命令
63
+ */
64
+ cmdWorkspaceRead(fileName: WorkspaceFileName): Promise<{
65
+ success: boolean;
66
+ exists: boolean;
67
+ content?: string;
68
+ path?: string;
69
+ message?: string;
70
+ }>;
71
+ /**
72
+ * 写入 workspace 文件命令
73
+ */
74
+ cmdWorkspaceWrite(fileName: WorkspaceFileName, content: string): Promise<{
75
+ success: boolean;
76
+ path?: string;
77
+ message?: string;
78
+ error?: string;
79
+ }>;
80
+ /**
81
+ * 列出 workspace 文件命令
82
+ */
83
+ cmdWorkspaceList(): Promise<{
84
+ success: boolean;
85
+ files?: Array<{
86
+ name: WorkspaceFileName;
87
+ exists: boolean;
88
+ path: string;
89
+ }>;
90
+ summary?: {
91
+ total: number;
92
+ existing: number;
93
+ missing: number;
94
+ };
95
+ }>;
96
+ }
97
+ //# sourceMappingURL=ws_client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws_client.d.ts","sourceRoot":"","sources":["../../src/client/ws_client.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,aAAa,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAA4E,MAAM,qBAAqB,CAAC;AACtI,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,OAAO,EAA0D,KAAK,iBAAiB,EAAqB,MAAM,wBAAwB,CAAC;AAG3I;;GAEG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,OAAO,CAAQ;gBAEX,GAAG,EAAC,qBAAqB,CAAC,sBAAsB,CAAC;IAO7D;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BxB;;OAEG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUjC;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB;;OAEG;YACW,aAAa;IAUd,aAAa,CAAC,OAAO,EAAC,aAAa;YAalC,YAAY;IAUb,aAAa,CAAC,OAAO,EAAC,aAAa;IAmFnC,eAAe,CAAC,OAAO,EAAC,aAAa;IAOrC,SAAS,CAAC,OAAO,EAAC,aAAa;IA6FrC,aAAa,IAAG,MAAM,EAAE;IAMxB,YAAY,CAAC,EAAE,EAAC,MAAM,GAAE,GAAG;IAiB3B,gBAAgB,IAAG,GAAG;IAI7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACU,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAChE,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAmBF;;OAEG;IACU,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAClF,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAyBF;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC;QACrC,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,iBAAiB,CAAC;YAAC,MAAM,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAClE,CAAC;CAoBL"}
@@ -0,0 +1,450 @@
1
+ import WebSocket from 'ws';
2
+ import { getRuntime } from '../runtime';
3
+ import { createReplyPrefixContext, normalizeAgentId } from 'openclaw/plugin-sdk';
4
+ import { getChannelCurrentConfig } from '../channel/channel_utils';
5
+ import { CHANNEL_ID } from '../channel/channel_common';
6
+ import { readWorkspaceFile, writeWorkspaceFile, WORKSPACE_FILES, listWorkspaceFiles } from '../workspace/workspace';
7
+ /**
8
+ * WebSocket 客户端
9
+ */
10
+ export class WSClient {
11
+ ws = null;
12
+ url;
13
+ reconnectAttempts = 0;
14
+ maxReconnectAttempts = 5;
15
+ reconnectDelay = 1000;
16
+ cfg;
17
+ agentId;
18
+ constructor(cxt) {
19
+ const channelConfig = getChannelCurrentConfig(cxt.cfg);
20
+ this.url = channelConfig.wsHost;
21
+ this.agentId = cxt.accountId;
22
+ this.cfg = cxt.cfg;
23
+ }
24
+ /**
25
+ * 连接到 WebSocket 服务器
26
+ */
27
+ connect() {
28
+ return new Promise((resolve, reject) => {
29
+ this.ws = new WebSocket(this.url);
30
+ this.ws.on('open', () => {
31
+ console.log(`✓ WebSocket 已连接到 ${this.url}`);
32
+ this.reconnectAttempts = 0;
33
+ resolve();
34
+ });
35
+ this.ws.on('error', (error) => {
36
+ console.error('WebSocket 错误:', error.message);
37
+ reject(error);
38
+ });
39
+ this.ws.on('close', (code, reason) => {
40
+ console.log(`WebSocket 连接关闭: ${code} - ${reason}`);
41
+ this.handleReconnect();
42
+ });
43
+ this.ws.on('message', (data) => {
44
+ this.onMessage(data);
45
+ });
46
+ });
47
+ }
48
+ /**
49
+ * 发送消息
50
+ */
51
+ send(data) {
52
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN) {
53
+ throw new Error('WebSocket 未连接');
54
+ }
55
+ const message = typeof data === 'string' ? data : JSON.stringify(data);
56
+ this.ws.send(message);
57
+ console.log('→ 发送:', message);
58
+ }
59
+ /**
60
+ * 关闭连接
61
+ */
62
+ disconnect() {
63
+ if (this.ws) {
64
+ this.ws.close();
65
+ this.ws = null;
66
+ }
67
+ }
68
+ /**
69
+ * 获取连接状态
70
+ */
71
+ get isOpen() {
72
+ return this.ws?.readyState === WebSocket.OPEN;
73
+ }
74
+ /**
75
+ * 处理重连
76
+ */
77
+ handleReconnect() {
78
+ if (this.reconnectAttempts < this.maxReconnectAttempts) {
79
+ this.reconnectAttempts++;
80
+ const delay = this.reconnectDelay * this.reconnectAttempts;
81
+ console.log(`尝试重连 (${this.reconnectAttempts}/${this.maxReconnectAttempts}),${delay}ms 后...`);
82
+ setTimeout(() => {
83
+ this.connect().catch((error) => {
84
+ console.error('重连失败:', error.message);
85
+ });
86
+ }, delay);
87
+ }
88
+ else {
89
+ console.error('达到最大重连次数,停止重连');
90
+ }
91
+ }
92
+ /**
93
+ * 处理收到的消息
94
+ */
95
+ onMessage(data) {
96
+ try {
97
+ const message = data.toString();
98
+ console.log('← 收到:', message);
99
+ // 尝试解析 JSON
100
+ if (message.startsWith('{')) {
101
+ const json = JSON.parse(message);
102
+ this.onJsonMessage(json).then(() => {
103
+ }).catch(e => {
104
+ console.error(e);
105
+ }).finally(() => {
106
+ console.log("完成");
107
+ });
108
+ }
109
+ }
110
+ catch (error) {
111
+ console.error('解析消息失败:', error);
112
+ }
113
+ }
114
+ /**
115
+ * 处理 JSON 消息(子类可重写)
116
+ */
117
+ async onJsonMessage(message) {
118
+ const type = message.type;
119
+ if (type == 'direct') {
120
+ this.handleDirect(message);
121
+ }
122
+ if (type == 'welcome') {
123
+ this.handleWelCome(message);
124
+ }
125
+ }
126
+ async handleWelCome(message) {
127
+ const msg = {
128
+ type: "whoIAm",
129
+ data: {
130
+ chatType: "register",
131
+ cli: "agent",
132
+ config: this.cfg
133
+ }
134
+ };
135
+ this.ws?.send(JSON.stringify(msg));
136
+ }
137
+ // 默认实现,子类可以重写
138
+ async handleDirect(message) {
139
+ const chatType = message.data.chatType;
140
+ if (chatType == 'toAgent') {
141
+ this.handleToAgent(message);
142
+ }
143
+ if (chatType == 'toCmd') {
144
+ this.handleToGateway(message);
145
+ }
146
+ }
147
+ async handleToAgent(message) {
148
+ const prefixContext = createReplyPrefixContext({ cfg: this.cfg, agentId: this.agentId });
149
+ const humanDelay = getRuntime().channel.reply.resolveHumanDelayConfig(this.cfg, this.agentId);
150
+ const envelopeOptions = getRuntime().channel.reply.resolveEnvelopeFormatOptions(this.cfg);
151
+ const content = message.data.content;
152
+ if (content) {
153
+ //todo 需要下载和解析图片
154
+ //todo 研究一下sunwu cli 的机制
155
+ const body = getRuntime().channel.reply.formatAgentEnvelope({
156
+ channel: CHANNEL_ID,
157
+ from: message.from,
158
+ timestamp: new Date(),
159
+ envelope: envelopeOptions,
160
+ body: content
161
+ });
162
+ const ctx = getRuntime().channel.reply.finalizeInboundContext({
163
+ Body: body,
164
+ //todo 后续添加媒体字段
165
+ });
166
+ const { dispatcher, replyOptions, markDispatchIdle } = getRuntime().channel.reply.createReplyDispatcherWithTyping({
167
+ responsePrefix: prefixContext.responsePrefix,
168
+ responsePrefixContextProvider: prefixContext.responsePrefixContextProvider,
169
+ humanDelay: humanDelay,
170
+ onReplyStart: () => {
171
+ console.log("onReplyStart");
172
+ },
173
+ deliver: async (payload, info) => {
174
+ console.log("deliver", payload, info);
175
+ const msg = {
176
+ to: message.from,
177
+ type: message.type,
178
+ data: {
179
+ chatType: "agent_chat",
180
+ "payload": payload,
181
+ "info": "",
182
+ content: ""
183
+ }
184
+ };
185
+ this.ws?.send(JSON.stringify(msg));
186
+ },
187
+ onError: async (error, info) => {
188
+ const msg = {
189
+ to: message.from,
190
+ type: "direct",
191
+ data: {
192
+ chatType: "agent_error",
193
+ "error": error,
194
+ "info": info
195
+ }
196
+ };
197
+ this.ws?.send(JSON.stringify(msg));
198
+ },
199
+ onIdle: async () => {
200
+ console.log("onIdle");
201
+ //智能体状态由平台维护
202
+ const msg = {
203
+ to: message.from,
204
+ type: "direct",
205
+ data: {
206
+ chatType: "agent_idle",
207
+ content: "agent is idle",
208
+ }
209
+ };
210
+ this.ws?.send(JSON.stringify(msg));
211
+ },
212
+ onCleanup: async () => {
213
+ }
214
+ });
215
+ await getRuntime().channel.reply.withReplyDispatcher({
216
+ dispatcher,
217
+ onSettled: () => markDispatchIdle(),
218
+ run: () => {
219
+ return getRuntime().channel.reply.dispatchReplyFromConfig({
220
+ ctx,
221
+ cfg: this.cfg,
222
+ dispatcher,
223
+ replyOptions
224
+ });
225
+ }
226
+ });
227
+ }
228
+ }
229
+ async handleToGateway(message) {
230
+ const cmd = message.data.gateWay?.cmd;
231
+ if (cmd && message.data.gateWay) {
232
+ await this.handleCmd(message);
233
+ }
234
+ }
235
+ async handleCmd(message) {
236
+ const cmd = message.data.gateWay?.cmd;
237
+ if (cmd) {
238
+ if (cmd == 'agents.list') {
239
+ const agentIds = this.cmdAgentsList();
240
+ const msg = {
241
+ type: "direct",
242
+ to: message.from,
243
+ data: {
244
+ chatType: cmd,
245
+ agentIds
246
+ }
247
+ };
248
+ this.ws?.send(JSON.stringify(msg));
249
+ }
250
+ if (cmd == 'agent.info') {
251
+ const id = message.data.gateWay?.id;
252
+ if (id) {
253
+ const v = this.cmdAgentInfo(id);
254
+ const msg = {
255
+ type: "direct",
256
+ to: message.from,
257
+ data: {
258
+ chatType: cmd,
259
+ info: v
260
+ }
261
+ };
262
+ this.ws?.send(JSON.stringify(msg));
263
+ }
264
+ }
265
+ if (cmd == "agents.bindings") {
266
+ const v = this.cmdAgentBindings();
267
+ const msg = {
268
+ type: "direct",
269
+ to: message.from,
270
+ data: {
271
+ chatType: cmd,
272
+ info: v
273
+ }
274
+ };
275
+ this.ws?.send(JSON.stringify(msg));
276
+ }
277
+ // Workspace 读取命令
278
+ if (cmd == 'workspace.read') {
279
+ const fileName = message.data.gateWay?.file;
280
+ if (fileName && this.isValidWorkspaceFile(fileName)) {
281
+ const result = await this.cmdWorkspaceRead(fileName);
282
+ const msg = {
283
+ type: "direct",
284
+ to: message.from,
285
+ data: {
286
+ chatType: cmd,
287
+ file: fileName,
288
+ ...result
289
+ }
290
+ };
291
+ this.ws?.send(JSON.stringify(msg));
292
+ }
293
+ }
294
+ // Workspace 写入命令
295
+ if (cmd == 'workspace.write') {
296
+ const fileName = message.data.gateWay?.file;
297
+ const content = message.data.gateWay?.content;
298
+ if (fileName && this.isValidWorkspaceFile(fileName) && content !== undefined) {
299
+ const result = await this.cmdWorkspaceWrite(fileName, content);
300
+ const msg = {
301
+ type: "direct",
302
+ to: message.from,
303
+ data: {
304
+ chatType: cmd,
305
+ file: fileName,
306
+ ...result
307
+ }
308
+ };
309
+ this.ws?.send(JSON.stringify(msg));
310
+ }
311
+ }
312
+ // Workspace 列表命令
313
+ if (cmd == 'workspace.list') {
314
+ const result = await this.cmdWorkspaceList();
315
+ const msg = {
316
+ type: "direct",
317
+ to: message.from,
318
+ data: {
319
+ chatType: cmd,
320
+ ...result
321
+ }
322
+ };
323
+ this.ws?.send(JSON.stringify(msg));
324
+ }
325
+ }
326
+ }
327
+ cmdAgentsList() {
328
+ if (this.cfg.agents) {
329
+ return Object.keys(this.cfg.agents);
330
+ }
331
+ return [];
332
+ }
333
+ cmdAgentInfo(id) {
334
+ const agentId = normalizeAgentId(id);
335
+ if (this.cfg.agents) {
336
+ if (agentId == 'defaults') {
337
+ return this.cfg.agents.defaults;
338
+ }
339
+ else {
340
+ if (this.cfg.agents?.list) {
341
+ for (let e of this.cfg.agents?.list) {
342
+ if (e.id == agentId) {
343
+ return e;
344
+ }
345
+ }
346
+ }
347
+ }
348
+ }
349
+ }
350
+ cmdAgentBindings() {
351
+ return this.cfg.bindings;
352
+ }
353
+ /**
354
+ * 验证 workspace 文件名是否有效
355
+ */
356
+ isValidWorkspaceFile(name) {
357
+ return Object.values(WORKSPACE_FILES).includes(name);
358
+ }
359
+ /**
360
+ * 发送错误消息
361
+ */
362
+ sendError(to, cmd, errorMessage) {
363
+ const msg = {
364
+ type: "direct",
365
+ to: to,
366
+ data: {
367
+ chatType: cmd,
368
+ error: true,
369
+ message: errorMessage
370
+ }
371
+ };
372
+ this.ws?.send(JSON.stringify(msg));
373
+ }
374
+ /**
375
+ * 读取 workspace 文件命令
376
+ */
377
+ async cmdWorkspaceRead(fileName) {
378
+ try {
379
+ const result = await readWorkspaceFile(fileName, this.cfg, this.agentId || 'defaults');
380
+ return {
381
+ success: true,
382
+ exists: result.exists,
383
+ content: result.content,
384
+ path: result.path,
385
+ message: result.exists ? `Successfully read ${fileName}` : `${fileName} does not exist`
386
+ };
387
+ }
388
+ catch (error) {
389
+ return {
390
+ success: false,
391
+ exists: false,
392
+ message: error instanceof Error ? error.message : String(error)
393
+ };
394
+ }
395
+ }
396
+ /**
397
+ * 写入 workspace 文件命令
398
+ */
399
+ async cmdWorkspaceWrite(fileName, content) {
400
+ try {
401
+ const result = await writeWorkspaceFile(fileName, content, this.cfg, this.agentId || 'defaults');
402
+ if (result.success) {
403
+ return {
404
+ success: true,
405
+ path: result.path,
406
+ message: `Successfully wrote to ${fileName}`
407
+ };
408
+ }
409
+ else {
410
+ return {
411
+ success: false,
412
+ error: result.error,
413
+ message: result.error || 'Failed to write file'
414
+ };
415
+ }
416
+ }
417
+ catch (error) {
418
+ return {
419
+ success: false,
420
+ error: error instanceof Error ? error.message : String(error),
421
+ message: error instanceof Error ? error.message : String(error)
422
+ };
423
+ }
424
+ }
425
+ /**
426
+ * 列出 workspace 文件命令
427
+ */
428
+ async cmdWorkspaceList() {
429
+ try {
430
+ const files = await listWorkspaceFiles(this.cfg, this.agentId || 'defaults');
431
+ return {
432
+ success: true,
433
+ files: files,
434
+ summary: {
435
+ total: files.length,
436
+ existing: files.filter(f => f.exists).length,
437
+ missing: files.filter(f => !f.exists).length
438
+ }
439
+ };
440
+ }
441
+ catch (error) {
442
+ return {
443
+ success: false,
444
+ files: undefined,
445
+ summary: undefined
446
+ };
447
+ }
448
+ }
449
+ }
450
+ //# sourceMappingURL=ws_client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws_client.js","sourceRoot":"","sources":["../../src/client/ws_client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { OpenClawPluginApi } from "openclaw/plugin-sdk";
2
+ export declare function registerCommand(api: OpenClawPluginApi): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAgB,eAAe,CAAC,GAAG,EAAC,iBAAiB,QAEpD"}
@@ -0,0 +1,3 @@
1
+ export function registerCommand(api) {
2
+ }
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,GAAqB;AAErD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { OpenClawPluginConfigSchema } from "openclaw/plugin-sdk";
2
+ export declare const PluginConfig: Record<string, any> & {
3
+ configSchema: OpenClawPluginConfigSchema;
4
+ };
5
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAE1F,eAAO,MAAM,YAAY,EAAC,MAAM,CAAC,MAAM,EAAC,GAAG,CAAC,GAAC;IAAC,YAAY,EAAC,0BAA0B,CAAA;CAMpF,CAAA"}
package/dist/common.js ADDED
@@ -0,0 +1,9 @@
1
+ import { emptyPluginConfigSchema } from "openclaw/plugin-sdk";
2
+ export const PluginConfig = {
3
+ id: "fast_task",
4
+ name: "fast_task_plugin",
5
+ description: "快任务插件",
6
+ version: "1.0.0",
7
+ configSchema: emptyPluginConfigSchema(),
8
+ };
9
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA8B,MAAM,qBAAqB,CAAC;AAE1F,MAAM,CAAC,MAAM,YAAY,GAA8D;IACnF,EAAE,EAAC,WAAW;IACd,IAAI,EAAC,kBAAkB;IACvB,WAAW,EAAC,OAAO;IACnB,OAAO,EAAC,OAAO;IACf,YAAY,EAAC,uBAAuB,EAAE;CACzC,CAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * OpenClaw Plugin Template
3
+ *
4
+ * This is a baseline plugin that demonstrates:
5
+ * - Plugin manifest structure
6
+ * - Registering agent tools with TypeBox schemas
7
+ * - Tool execution with proper result format
8
+ *
9
+ * To use this template:
10
+ * 1. Update openclaw.plugin.json with your plugin id
11
+ * 2. Implement your tools in the register function
12
+ * 3. Build with `npm run build`
13
+ * 4. Install in OpenClaw via `openclaw plugins install ./path/to/plugin`
14
+ */
15
+ import { OpenClawPluginApi } from 'openclaw/plugin-sdk';
16
+ /**
17
+ * Main plugin definition
18
+ */
19
+ declare const plugin: {
20
+ register(api: OpenClawPluginApi): void;
21
+ configSchema: import("openclaw/plugin-sdk").OpenClawPluginConfigSchema;
22
+ };
23
+ export default plugin;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAC,iBAAiB,EAAC,MAAM,qBAAqB,CAAA;AAMrD;;GAEG;AACH,QAAA,MAAM,MAAM;kBAEG,iBAAiB;;CAO/B,CAAC;AAEF,eAAe,MAAM,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,33 @@
1
+ /**
2
+ * OpenClaw Plugin Template
3
+ *
4
+ * This is a baseline plugin that demonstrates:
5
+ * - Plugin manifest structure
6
+ * - Registering agent tools with TypeBox schemas
7
+ * - Tool execution with proper result format
8
+ *
9
+ * To use this template:
10
+ * 1. Update openclaw.plugin.json with your plugin id
11
+ * 2. Implement your tools in the register function
12
+ * 3. Build with `npm run build`
13
+ * 4. Install in OpenClaw via `openclaw plugins install ./path/to/plugin`
14
+ */
15
+ import { setRuntime } from './runtime';
16
+ import { registerCommand } from './command';
17
+ import { registerChannel } from './channel';
18
+ import { PluginConfig } from './common';
19
+ /**
20
+ * Main plugin definition
21
+ */
22
+ const plugin = {
23
+ ...PluginConfig,
24
+ register(api) {
25
+ api.logger.info('Plugin is loading...');
26
+ setRuntime(api.runtime);
27
+ registerCommand(api);
28
+ registerChannel(api);
29
+ api.logger.info('Plugin loaded successfully');
30
+ }
31
+ };
32
+ export default plugin;
33
+ //# sourceMappingURL=index.js.map