@atalk/openclaw 0.1.0-alpha.10 → 0.1.0-alpha.12

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 CHANGED
@@ -1,6 +1,9 @@
1
1
  # @atalk/openclaw
2
2
 
3
- Native OpenClaw channel for aTalk. Incoming encrypted text, images, video, audio and files start an OpenClaw turn automatically. OpenClaw responses can return text or multimedia through the same encrypted aTalk conversation.
3
+ Native OpenClaw channel for aTalk. Authenticated direct messages start an OpenClaw turn automatically;
4
+ inside a multi-participant Task, only a structured mention of this agent or an assigned plan step does.
5
+ Encrypted text, images, video, audio and files retain their native media path, and OpenClaw responses
6
+ return through the same aTalk conversation or Task.
4
7
 
5
8
  ## Install
6
9
 
@@ -18,9 +21,24 @@ openclaw gateway restart
18
21
 
19
22
  After activation, remove `ATALK_AGENT_TOKEN` and keep the credential path. `ATALK_BASE_URL` defaults to `https://api.atalk.ar`.
20
23
 
21
- Attachments are decrypted only inside the connector process and staged in OpenClaw's managed inbound media store. The aTalk transport accepts files up to 100 MB; the selected model or OpenClaw media pipeline may impose a lower processing limit.
24
+ Attachments are decrypted only inside the connector process and streamed through private temporary files into OpenClaw's managed inbound media store. Outbound OpenClaw media is sent with aTalk's independently authenticated chunk transport. Temporary connector files are removed after handoff. The aTalk transport accepts files up to 100 MB; the selected model or OpenClaw media pipeline may impose a lower processing limit.
22
25
 
23
- Identity policy, temporary authorizations, supervision and revocation remain in the aTalk app.
26
+ Identity policy, temporary permissions, supervision and revocation remain in the aTalk app.
24
27
  When an owner intervenes in a supervised conversation, the selected `@agent` arrives as signed,
25
28
  encrypted mention metadata and is added to OpenClaw's agent-facing context. OpenClaw replies privately
26
29
  to that owner; an unmentioned intervention continues to the external counterparty. The user-visible text stays unchanged.
30
+
31
+ The channel also polls assigned aTalk Tasks/Workrooms with a durable cursor. The verified, locally decrypted task title/objective is included in context. Only a canonical structured E2EE mention of this agent with `intent: direct`, or an `executing` plan step assigned to it, starts an OpenClaw turn. FYI mentions, inactive steps, unrelated traffic and the agent's own events remain visible in aTalk without consuming model work. Publication/decryption reject stale or forged identity triples and direct self-mentions. There is no one-agent auto-target fallback, and text that merely looks like `@agent` is not routing.
32
+
33
+ For a plan event OpenClaw receives the task summary and only the SDK-verified `routing.assignedSteps` for this runtime. The rest of the plan stays in the operator audit view and is not injected as executable model context.
34
+
35
+ An `observer` membership never starts an OpenClaw turn. Its Task cursor still advances so changing
36
+ the role later does not replay old instructions.
37
+
38
+ OpenClaw sees directed task messages, activity, plans, deliverables, and encrypted artifact files. Images remain images, voice notes remain `audio/*`, video remains video, and other files remain documents in its native media pipeline. Text responses mention the originating participant and retain `replyToEventId`; generated media/files are encrypted and published as artifact versions.
39
+
40
+ The plugin also registers native `atalk_task_*` tools to list/open Tasks and publish messages, activity, versioned plans, deliverables, and workspace files. Mention and assignment parameters accept active participant `@handles`, which the connector resolves to signed peer ids locally. File tools are restricted to the active OpenClaw workspace. `atalk_task_submit_file` returns `artifactId`, `artifactVersion`, and `artifactVersionId` for a later `atalk_task_deliverable` call.
41
+
42
+ Message, plan, file, and deliverable operations use the same action names as the app's agent-permission editor (`message.send`, `plan.update`, `file.read`, `file.create`, `deliverable.submit`). `plan.update` must be explicitly allowed. Cost telemetry is derived from successful permitted work and cannot be granted or published as a standalone action; approval requests are created only by the permission guard and execute nothing.
43
+
44
+ Every response/file read is checked against the latest signed agent permission (`mandate` in the SDK API) immediately before the effect. Revoked, expired, over-limit, or out-of-scope work stops. `requires_approval` creates an encrypted consent request and does not run the action; retry the tool with its returned `operationId` after approval, and never reuse that id for a changed payload/effect. Consent ids bind the complete proposal. Successful work records a signed receipt. Run one active connector process per credential if aggregate limits must be strict: local counters and a third-party side effect are retry-safe, but are not one distributed transaction across cloned processes. The connector never sends private keys, attachment keys, or plaintext task content to the aTalk relay.
package/dist/channel.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type IncomingMessage } from "@atalk/sdk";
1
+ import { Agent, type DecryptedWorkroomEvent, type IncomingMessage } from "@atalk/sdk";
2
2
  import type { ChannelPlugin, OpenClawConfig } from "openclaw/plugin-sdk/channel-core";
3
3
  interface ResolvedAtalkAccount {
4
4
  accountId: string;
@@ -8,9 +8,17 @@ interface ResolvedAtalkAccount {
8
8
  baseUrl: string;
9
9
  credentialPath: string;
10
10
  }
11
+ /** Used only by tools registered by this same native plugin process. */
12
+ export declare function getActiveAtalkAgent(accountId?: string): Agent | undefined;
11
13
  export declare function resolveAtalkAccount(_cfg: OpenClawConfig, accountId?: string | null): ResolvedAtalkAccount;
12
14
  export declare function normalizeAtalkTarget(value: string): string;
13
15
  export declare function mediaKind(message: IncomingMessage): "image" | "video" | "audio" | "document" | "unknown";
16
+ export declare function renderWorkroomEvent(item: Pick<DecryptedWorkroomEvent, "content" | "routing">): string;
17
+ /** Agent turns are started only by authenticated structured routing. */
18
+ export declare function shouldDispatchWorkroomEvent(item: Pick<DecryptedWorkroomEvent, "directedToMe" | "routing">): boolean;
19
+ export declare function mandateFailureMode(result: {
20
+ status: string;
21
+ }): "retry" | "stop" | undefined;
14
22
  export declare function shouldRelaySupervisorMessage(message: Pick<IncomingMessage, "isSupervisor" | "isMentioned">): boolean;
15
23
  export declare const atalkPlugin: ChannelPlugin<ResolvedAtalkAccount>;
16
24
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAKtF,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAID,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,oBAAoB,CAWzG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAOxG;AA0DD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,aAAa,CAAC,GAAG,OAAO,CAEpH;AA2ID,eAAO,MAAM,WAAW,qCAAS,CAAC"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,EAEL,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAMtF,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAID,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,SAAS,SAAY,GAAG,KAAK,GAAG,SAAS,CAE5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,oBAAoB,CAWzG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAOxG;AAoJD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG,MAAM,CAkBrG;AAED,wEAAwE;AACxE,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,cAAc,GAAG,SAAS,CAAC,GAC7D,OAAO,CAGT;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAG3F;AAUD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,aAAa,CAAC,GAAG,OAAO,CAEpH;AAiRD,eAAO,MAAM,WAAW,qCAAS,CAAC"}
package/dist/channel.js CHANGED
@@ -1,10 +1,17 @@
1
- import { existsSync } from "node:fs";
2
- import { homedir } from "node:os";
1
+ import { createHash } from "node:crypto";
2
+ import { createReadStream, existsSync } from "node:fs";
3
+ import { mkdtemp, rm, writeFile } from "node:fs/promises";
4
+ import { homedir, tmpdir } from "node:os";
3
5
  import { join } from "node:path";
4
- import { Agent } from "@atalk/sdk";
6
+ import { Agent, } from "@atalk/sdk";
7
+ import { saveMediaStream } from "openclaw/plugin-sdk/media-store";
5
8
  import { getAtalkRuntime } from "./runtime.js";
6
9
  const MAX_ATTACHMENT_BYTES = 100 * 1024 * 1024;
7
10
  const activeAgents = new Map();
11
+ /** Used only by tools registered by this same native plugin process. */
12
+ export function getActiveAtalkAgent(accountId = "default") {
13
+ return activeAgents.get(accountId);
14
+ }
8
15
  export function resolveAtalkAccount(_cfg, accountId) {
9
16
  const credentialPath = process.env.ATALK_CREDENTIAL_PATH ?? join(homedir(), ".atalk", "openclaw-agent.json");
10
17
  const token = process.env.ATALK_AGENT_TOKEN;
@@ -36,17 +43,59 @@ export function mediaKind(message) {
36
43
  async function stageInboundAttachment(message) {
37
44
  if (!message.attachment)
38
45
  return [];
39
- const runtime = getAtalkRuntime();
40
46
  const descriptor = message.attachment.descriptor;
41
- const bytes = await message.attachment.download();
42
- const saved = await runtime.channel.media.saveMediaBuffer(Buffer.from(bytes), descriptor.mimeType, "inbound", MAX_ATTACHMENT_BYTES, descriptor.name, descriptor.name);
43
- return [{
44
- path: saved.path,
45
- url: saved.path,
46
- contentType: descriptor.mimeType,
47
- kind: mediaKind(message),
48
- messageId: message.id,
49
- }];
47
+ const directory = await mkdtemp(join(tmpdir(), "atalk-openclaw-inbound-"));
48
+ const path = join(directory, safeFileName(descriptor.name));
49
+ try {
50
+ await message.attachment.downloadTo(path);
51
+ const saved = await saveMediaStream(createReadStream(path), descriptor.mimeType, "inbound", MAX_ATTACHMENT_BYTES, descriptor.name, descriptor.name);
52
+ return [{
53
+ path: saved.path,
54
+ url: saved.path,
55
+ contentType: descriptor.mimeType,
56
+ kind: mediaKind(message),
57
+ messageId: message.id,
58
+ }];
59
+ }
60
+ finally {
61
+ await rm(directory, { recursive: true, force: true });
62
+ }
63
+ }
64
+ async function stageWorkroomAttachments(agent, detail, item) {
65
+ if (item.content.kind !== "artifact_version" || !item.content.attachments?.length)
66
+ return [];
67
+ const media = [];
68
+ for (const descriptor of item.content.attachments) {
69
+ const directory = await mkdtemp(join(tmpdir(), "atalk-openclaw-task-"));
70
+ const path = join(directory, safeFileName(descriptor.name));
71
+ try {
72
+ const result = await agent.workrooms.downloadAttachmentToMandated({
73
+ workroomId: detail.workroom.id,
74
+ threadId: item.event.threadId,
75
+ operationId: stableUuid(`${item.event.eventId}:read:${descriptor.id}`),
76
+ descriptor,
77
+ path,
78
+ summary: `Read Task file: ${descriptor.name}`,
79
+ effect: "Decrypt this Task file inside OpenClaw so the assigned agent can process it",
80
+ });
81
+ if (result.status === "requires_approval")
82
+ throw permissionError(result);
83
+ if (result.status !== "executed")
84
+ continue;
85
+ const saved = await saveMediaStream(createReadStream(result.value), descriptor.mimeType, "inbound", MAX_ATTACHMENT_BYTES, descriptor.name, descriptor.name);
86
+ media.push({
87
+ path: saved.path,
88
+ url: saved.path,
89
+ contentType: descriptor.mimeType,
90
+ kind: mediaKindFromType(descriptor.mimeType),
91
+ messageId: item.event.eventId,
92
+ });
93
+ }
94
+ finally {
95
+ await rm(directory, { recursive: true, force: true });
96
+ }
97
+ }
98
+ return media;
50
99
  }
51
100
  async function loadOutboundAttachment(mediaUrl, access) {
52
101
  const runtime = getAtalkRuntime();
@@ -56,11 +105,21 @@ async function loadOutboundAttachment(mediaUrl, access) {
56
105
  ...(access?.readFile ? { readFile: access.readFile, hostReadCapability: true } : {}),
57
106
  ...(access?.workspaceDir ? { workspaceDir: access.workspaceDir } : {}),
58
107
  });
59
- return {
60
- data: new Uint8Array(loaded.buffer),
61
- name: loaded.fileName || "attachment",
62
- mimeType: loaded.contentType || "application/octet-stream",
63
- };
108
+ const directory = await mkdtemp(join(tmpdir(), "atalk-openclaw-outbound-"));
109
+ const name = safeFileName(loaded.fileName || "attachment");
110
+ const path = join(directory, name);
111
+ try {
112
+ await writeFile(path, loaded.buffer, { mode: 0o600 });
113
+ return {
114
+ input: { path, name, mimeType: loaded.contentType || "application/octet-stream" },
115
+ digest: createHash("sha256").update(loaded.buffer).digest("hex"),
116
+ cleanup: () => rm(directory, { recursive: true, force: true }),
117
+ };
118
+ }
119
+ catch (error) {
120
+ await rm(directory, { recursive: true, force: true });
121
+ throw error;
122
+ }
64
123
  }
65
124
  async function deliverReply(message, payload) {
66
125
  const text = payload.text?.trim();
@@ -74,10 +133,78 @@ async function deliverReply(message, payload) {
74
133
  }
75
134
  for (const [index, mediaUrl] of mediaUrls.entries()) {
76
135
  const attachment = await loadOutboundAttachment(mediaUrl);
77
- const input = { ...attachment, ...(index === 0 && text ? { caption: text } : {}) };
78
- await (relayToCounterparty ? message.relayAttachment(input) : message.replyAttachment(input));
136
+ try {
137
+ const input = { ...attachment.input, ...(index === 0 && text ? { caption: text } : {}) };
138
+ await (relayToCounterparty ? message.relayAttachmentFile(input) : message.replyAttachmentFile(input));
139
+ }
140
+ finally {
141
+ await attachment.cleanup();
142
+ }
79
143
  }
80
144
  }
145
+ function safeFileName(value) {
146
+ return value.replace(/[\r\n"\\/]+/gu, "_").slice(0, 180) || "attachment";
147
+ }
148
+ function stableUuid(value) {
149
+ const bytes = createHash("sha256").update(value).digest().subarray(0, 16);
150
+ bytes[6] = (bytes[6] & 0x0f) | 0x40;
151
+ bytes[8] = (bytes[8] & 0x3f) | 0x80;
152
+ const hex = bytes.toString("hex");
153
+ return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
154
+ }
155
+ function mediaKindFromType(mimeType) {
156
+ if (mimeType.startsWith("image/"))
157
+ return "image";
158
+ if (mimeType.startsWith("video/"))
159
+ return "video";
160
+ if (mimeType.startsWith("audio/"))
161
+ return "audio";
162
+ return "document";
163
+ }
164
+ function responseMention(item) {
165
+ return [{
166
+ peerId: item.actor.id,
167
+ handle: item.actor.handle,
168
+ peerType: item.actor.type === "AGENT" ? "AGENT" : "HUMAN",
169
+ intent: "direct",
170
+ }];
171
+ }
172
+ export function renderWorkroomEvent(item) {
173
+ const content = item.content;
174
+ switch (content.kind) {
175
+ case "message": return content.body;
176
+ case "activity": return `${content.summary}\n\nActivity: ${content.activityType}`;
177
+ case "plan": return [
178
+ content.summary,
179
+ "Your executable assigned steps (execute only these steps):",
180
+ ...item.routing.assignedSteps.map((step) => `- [${step.status}] ${step.title}`),
181
+ ].join("\n");
182
+ case "artifact_version": return [content.title, content.description, content.fileName].filter(Boolean).join("\n");
183
+ case "deliverable": return ["Deliverable submitted for review", content.note].filter(Boolean).join("\n");
184
+ case "cost": return `Task usage recorded: ${content.metric}`;
185
+ case "approval_request": return [
186
+ content.summary ?? content.rationale,
187
+ `Requested effect: ${content.effect ?? content.action}`,
188
+ ].join("\n");
189
+ }
190
+ }
191
+ /** Agent turns are started only by authenticated structured routing. */
192
+ export function shouldDispatchWorkroomEvent(item) {
193
+ return item.directedToMe === true
194
+ && item.routing.directedToMe === true;
195
+ }
196
+ export function mandateFailureMode(result) {
197
+ if (result.status === "executed")
198
+ return undefined;
199
+ return result.status === "requires_approval" ? "retry" : "stop";
200
+ }
201
+ function permissionError(result) {
202
+ const code = result.decision && typeof result.decision === "object" && "code" in result.decision
203
+ && typeof result.decision.code === "string"
204
+ ? result.decision.code
205
+ : undefined;
206
+ return new Error(`aTalk agent permission ${result.status}${code ? `: ${code}` : ""}`);
207
+ }
81
208
  export function shouldRelaySupervisorMessage(message) {
82
209
  return message.isSupervisor && !message.isMentioned;
83
210
  }
@@ -129,6 +256,126 @@ async function dispatchIncoming(cfg, account, agent, message) {
129
256
  dispatcherOptions: { deliver: async (payload) => deliverReply(message, payload) },
130
257
  });
131
258
  }
259
+ async function dispatchWorkroomEvent(cfg, account, agent, detail, item) {
260
+ if (!shouldDispatchWorkroomEvent(item))
261
+ return;
262
+ const content = item.content;
263
+ const body = renderWorkroomEvent(item);
264
+ const runtime = getAtalkRuntime();
265
+ const channel = runtime.channel;
266
+ const route = channel.routing.resolveAgentRoute({
267
+ cfg,
268
+ channel: "atalk",
269
+ accountId: account.accountId,
270
+ peer: { kind: "group", id: detail.workroom.id },
271
+ });
272
+ const media = await stageWorkroomAttachments(agent, detail, item);
273
+ const taskName = detail.descriptor.title ?? detail.descriptor.objective;
274
+ const ctx = channel.inbound.buildContext({
275
+ channel: "atalk",
276
+ provider: "atalk",
277
+ surface: "atalk",
278
+ accountId: route.accountId,
279
+ messageId: item.event.eventId,
280
+ messageIdFull: item.event.eventId,
281
+ timestamp: Date.parse(item.event.createdAt),
282
+ from: `atalk:${item.actor.handle}`,
283
+ sender: { id: item.actor.id, name: item.actor.displayName, username: item.actor.handle },
284
+ conversation: { kind: "group", id: detail.workroom.id, label: taskName },
285
+ route: { agentId: route.agentId, accountId: route.accountId, routeSessionKey: route.sessionKey, dispatchSessionKey: route.sessionKey },
286
+ reply: { to: `atalk-workroom:${detail.workroom.id}`, originatingTo: item.actor.handle },
287
+ message: {
288
+ rawBody: body,
289
+ body,
290
+ bodyForAgent: `[aTalk encrypted Task: ${taskName}; task id: ${detail.workroom.id}; thread id: ${item.event.threadId}; objective: ${detail.descriptor.objective}; reply in this thread; use atalk_task_* tools for plans, deliverables or explicit routing]\n\n${body}`,
291
+ commandBody: body,
292
+ },
293
+ media,
294
+ });
295
+ let deliveryIndex = 0;
296
+ await channel.reply.dispatchReplyWithBufferedBlockDispatcher({
297
+ ctx,
298
+ cfg,
299
+ dispatcherOptions: {
300
+ deliver: async (payload) => {
301
+ const text = payload.text?.trim();
302
+ const mediaUrls = (payload.mediaUrls?.length ? payload.mediaUrls : payload.mediaUrl ? [payload.mediaUrl] : [])
303
+ .filter((value) => Boolean(value?.trim()));
304
+ const index = deliveryIndex;
305
+ deliveryIndex += 1;
306
+ if (mediaUrls.length === 0) {
307
+ if (!text)
308
+ return;
309
+ const result = await agent.workrooms.publishMandated({
310
+ workroomId: detail.workroom.id,
311
+ threadId: item.event.threadId,
312
+ operationId: stableUuid(`${item.event.eventId}:reply:${index}:${text}`),
313
+ payload: {
314
+ version: 1,
315
+ kind: "message",
316
+ threadId: item.event.threadId,
317
+ body: text,
318
+ mentions: responseMention(item),
319
+ replyToEventId: item.event.eventId,
320
+ },
321
+ summary: "Reply to a directed message in this Task",
322
+ effect: "Share the reply with the Task participants",
323
+ });
324
+ if (mandateFailureMode(result) === "retry")
325
+ throw permissionError(result);
326
+ return;
327
+ }
328
+ for (const [mediaIndex, mediaUrl] of mediaUrls.entries()) {
329
+ const attachment = await loadOutboundAttachment(mediaUrl);
330
+ try {
331
+ const result = await agent.workrooms.submitFileMandated({
332
+ workroomId: detail.workroom.id,
333
+ threadId: item.event.threadId,
334
+ operationId: stableUuid(`${item.event.eventId}:reply:${index}:media:${mediaIndex}:${attachment.digest}:${text ?? ""}`),
335
+ ...attachment.input,
336
+ ...(text && mediaIndex === 0 ? { description: text } : {}),
337
+ mentions: responseMention(item),
338
+ summary: `Return ${attachment.input.name ?? "a file"} to this Task`,
339
+ effect: "Encrypt and share the generated file with the Task participants",
340
+ });
341
+ if (mandateFailureMode(result) === "retry")
342
+ throw permissionError(result);
343
+ }
344
+ finally {
345
+ await attachment.cleanup();
346
+ }
347
+ }
348
+ },
349
+ },
350
+ });
351
+ }
352
+ async function pollWorkrooms(cfg, account, agent, signal, log) {
353
+ while (!signal.aborted) {
354
+ try {
355
+ let cursor;
356
+ do {
357
+ const page = await agent.workrooms.list(cursor, 100);
358
+ for (const summary of page.workrooms) {
359
+ if (signal.aborted)
360
+ return;
361
+ await agent.workrooms.poll(summary.workroom.id, async (event) => {
362
+ const detail = await agent.workrooms.get(summary.workroom.id, 0, 1);
363
+ await dispatchWorkroomEvent(cfg, account, agent, detail, event);
364
+ }, { signal });
365
+ }
366
+ cursor = page.nextCursor ?? undefined;
367
+ } while (cursor && !signal.aborted);
368
+ }
369
+ catch (error) {
370
+ if (!signal.aborted)
371
+ log?.error(error instanceof Error ? error.message : String(error));
372
+ }
373
+ await new Promise((resolve) => {
374
+ const timer = setTimeout(resolve, 2_000);
375
+ signal.addEventListener("abort", () => { clearTimeout(timer); resolve(); }, { once: true });
376
+ });
377
+ }
378
+ }
132
379
  const plugin = {
133
380
  id: "atalk",
134
381
  meta: {
@@ -141,7 +388,7 @@ const plugin = {
141
388
  aliases: ["atalk"],
142
389
  markdownCapable: false,
143
390
  },
144
- capabilities: { chatTypes: ["direct"], reply: true, media: true, blockStreaming: true },
391
+ capabilities: { chatTypes: ["direct", "group"], reply: true, media: true, blockStreaming: true },
145
392
  config: {
146
393
  listAccountIds: () => ["default"],
147
394
  resolveAccount: resolveAtalkAccount,
@@ -172,9 +419,11 @@ const plugin = {
172
419
  agent.on("message", (message) => dispatchIncoming(ctx.cfg, ctx.account, agent, message));
173
420
  try {
174
421
  await agent.start();
422
+ const workroomPolling = pollWorkrooms(ctx.cfg, ctx.account, agent, ctx.abortSignal, ctx.log);
175
423
  ctx.setStatus({ ...ctx.getStatus(), accountId: ctx.accountId, running: true, connected: true, lastConnectedAt: Date.now() });
176
424
  ctx.log?.info(`connected as ${agent.peer?.handle ?? "unknown"}`);
177
425
  await new Promise((resolve) => ctx.abortSignal.addEventListener("abort", () => resolve(), { once: true }));
426
+ await workroomPolling;
178
427
  }
179
428
  finally {
180
429
  activeAgents.delete(ctx.accountId);
@@ -207,11 +456,16 @@ const plugin = {
207
456
  readFile: mediaAccess?.readFile ?? mediaReadFile,
208
457
  workspaceDir: mediaAccess?.workspaceDir,
209
458
  });
210
- const sent = await agent.sendAttachmentWithDetails(normalizeAtalkTarget(to), {
211
- ...attachment,
212
- ...(text.trim() ? { caption: text.trim() } : {}),
213
- });
214
- return { channel: "atalk", messageId: sent.messageId, conversationId: sent.conversationId };
459
+ try {
460
+ const sent = await agent.sendAttachmentFileWithDetails(normalizeAtalkTarget(to), {
461
+ ...attachment.input,
462
+ ...(text.trim() ? { caption: text.trim() } : {}),
463
+ });
464
+ return { channel: "atalk", messageId: sent.messageId, conversationId: sent.conversationId };
465
+ }
466
+ finally {
467
+ await attachment.cleanup();
468
+ }
215
469
  },
216
470
  },
217
471
  };
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,UAAU,oBAAoB;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,KAAK,EAMM,oBAAoB,CAAC;AAEtC,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,UAAU,oBAAoB;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,QAAA,MAAM,KAAK,EAOM,oBAAoB,CAAC;AAEtC,eAAe,KAAK,CAAC"}
package/dist/index.js CHANGED
@@ -1,12 +1,14 @@
1
1
  import { defineChannelPluginEntry } from "openclaw/plugin-sdk/channel-core";
2
2
  import { atalkPlugin } from "./channel.js";
3
3
  import { setAtalkRuntime } from "./runtime.js";
4
+ import { registerAtalkTaskTools } from "./tools.js";
4
5
  const entry = defineChannelPluginEntry({
5
6
  id: "atalk",
6
7
  name: "aTalk",
7
8
  description: "Native end-to-end encrypted aTalk text and multimedia channel",
8
9
  plugin: atalkPlugin,
9
10
  setRuntime: setAtalkRuntime,
11
+ registerFull: registerAtalkTaskTools,
10
12
  });
11
13
  export default entry;
12
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAS/C,MAAM,KAAK,GAAG,wBAAwB,CAAC;IACrC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,+DAA+D;IAC5E,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,eAAe;CAC5B,CAAoC,CAAC;AAEtC,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AASpD,MAAM,KAAK,GAAG,wBAAwB,CAAC;IACrC,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,+DAA+D;IAC5E,MAAM,EAAE,WAAW;IACnB,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,sBAAsB;CACrC,CAAoC,CAAC;AAEtC,eAAe,KAAK,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { Agent } from "@atalk/sdk";
2
+ import type { OpenClawPluginApi } from "openclaw/plugin-sdk/channel-core";
3
+ import { Type } from "typebox";
4
+ export declare function buildAtalkTaskTools(agent: Agent, context: {
5
+ workspaceDir?: string;
6
+ }): ({
7
+ name: string;
8
+ label: string;
9
+ description: string;
10
+ parameters: Type.TObject<{
11
+ cursor: Type.TOptional<Type.TString>;
12
+ limit: Type.TOptional<Type.TInteger>;
13
+ }>;
14
+ execute(_toolCallId: string, params: {
15
+ cursor?: string;
16
+ limit?: number;
17
+ }): Promise<{
18
+ content: {
19
+ type: "text";
20
+ text: string;
21
+ }[];
22
+ details: unknown;
23
+ }>;
24
+ } | {
25
+ name: string;
26
+ label: string;
27
+ description: string;
28
+ parameters: Type.TObject<{
29
+ workroomId: Type.TString;
30
+ }>;
31
+ execute(_toolCallId: string, params: {
32
+ workroomId: string;
33
+ }): Promise<{
34
+ content: {
35
+ type: "text";
36
+ text: string;
37
+ }[];
38
+ details: unknown;
39
+ }>;
40
+ })[];
41
+ export declare function registerAtalkTaskTools(api: OpenClawPluginApi): void;
42
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAkB,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAqG/B,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;yBAUjD,MAAM,UAAU;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;yBAUnD,MAAM,UAAU;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;;;;;;;KA8NxE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAUnE"}
package/dist/tools.js ADDED
@@ -0,0 +1,334 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { realpath, stat } from "node:fs/promises";
3
+ import { isAbsolute, relative, resolve, sep } from "node:path";
4
+ import { Type } from "typebox";
5
+ import { getActiveAtalkAgent } from "./channel.js";
6
+ const MAX_ATTACHMENT_BYTES = 100 * 1024 * 1024;
7
+ const uuid = () => Type.String({ format: "uuid" });
8
+ const handle = () => Type.String({ pattern: "^@[a-z0-9][a-z0-9._-]{1,62}$" });
9
+ const handles = () => Type.Array(handle(), { maxItems: 100, default: [] });
10
+ const common = {
11
+ workroomId: uuid(),
12
+ threadId: uuid(),
13
+ operationId: Type.Optional(uuid()),
14
+ mandateId: Type.Optional(uuid()),
15
+ rationale: Type.Optional(Type.String({ minLength: 1, maxLength: 4_000 })),
16
+ };
17
+ function jsonResult(value) {
18
+ return {
19
+ content: [{ type: "text", text: JSON.stringify(value, null, 2) }],
20
+ details: value,
21
+ };
22
+ }
23
+ function operationId(value) {
24
+ return value ?? randomUUID();
25
+ }
26
+ function taskView(detail) {
27
+ return {
28
+ id: detail.workroom.id,
29
+ status: detail.workroom.status,
30
+ deadline: detail.workroom.deadline ?? null,
31
+ descriptor: detail.descriptor,
32
+ membership: {
33
+ role: detail.membership.role,
34
+ joinedAt: detail.membership.joinedAt,
35
+ leftAt: detail.membership.leftAt ?? null,
36
+ },
37
+ members: detail.members.map(({ membership, peer }) => ({
38
+ id: membership.peerId,
39
+ role: membership.role,
40
+ leftAt: membership.leftAt ?? null,
41
+ handle: peer?.handle ?? null,
42
+ displayName: peer?.displayName ?? null,
43
+ type: peer?.type ?? null,
44
+ })),
45
+ threads: detail.threads.map((thread) => ({ id: thread.id, kind: thread.kind, createdAt: thread.createdAt })),
46
+ permissions: detail.latestMandates.map(({ mandate, revocation }) => ({
47
+ mandateId: mandate.mandateId,
48
+ revision: mandate.revision,
49
+ actorPeerId: mandate.actorPeerId,
50
+ validFrom: mandate.validFrom,
51
+ validUntil: mandate.validUntil,
52
+ revoked: Boolean(revocation),
53
+ })),
54
+ approvals: detail.approvals.map((approval) => ({
55
+ requestId: approval.requestId,
56
+ status: approval.status,
57
+ requiredApprovals: approval.requiredApprovals,
58
+ eligiblePeerIds: approval.eligiblePeerIds,
59
+ expiresAt: approval.expiresAt ?? null,
60
+ })),
61
+ };
62
+ }
63
+ function participantIds(detail) {
64
+ return detail.members
65
+ .filter(({ membership }) => !membership.leftAt)
66
+ .map(({ membership }) => membership.peerId);
67
+ }
68
+ function resolveMembers(detail, requestedHandles) {
69
+ const activeMembers = detail.members.filter(({ membership }) => !membership.leftAt && membership.peerId);
70
+ return requestedHandles.map((requested) => {
71
+ const member = activeMembers.find(({ peer }) => peer?.handle === requested);
72
+ if (!member?.peer)
73
+ throw new Error(`Active Task participant not found: ${requested}`);
74
+ return member.peer;
75
+ });
76
+ }
77
+ function mentions(detail, requestedHandles) {
78
+ return resolveMembers(detail, requestedHandles).map((peer) => ({
79
+ peerId: peer.id,
80
+ handle: peer.handle,
81
+ peerType: peer.type === "AGENT" ? "AGENT" : "HUMAN",
82
+ intent: "direct",
83
+ }));
84
+ }
85
+ async function workspaceFile(filePath, workspaceDir) {
86
+ const root = await realpath(resolve(workspaceDir));
87
+ const path = await realpath(resolve(workspaceDir, filePath));
88
+ const fromRoot = relative(root, path);
89
+ if (fromRoot === ".." || fromRoot.startsWith(`..${sep}`) || isAbsolute(fromRoot)) {
90
+ throw new Error("Task files must stay inside the active OpenClaw workspace");
91
+ }
92
+ const metadata = await stat(path);
93
+ if (!metadata.isFile())
94
+ throw new Error("Task attachment path is not a regular file");
95
+ if (metadata.size > MAX_ATTACHMENT_BYTES)
96
+ throw new Error("aTalk Task attachments cannot exceed 100 MB");
97
+ return path;
98
+ }
99
+ export function buildAtalkTaskTools(agent, context) {
100
+ const tools = [
101
+ {
102
+ name: "atalk_task_list",
103
+ label: "List aTalk Tasks",
104
+ description: "List encrypted aTalk Tasks assigned to this agent. Titles and objectives are verified and decrypted locally.",
105
+ parameters: Type.Object({
106
+ cursor: Type.Optional(Type.String()),
107
+ limit: Type.Optional(Type.Integer({ minimum: 1, maximum: 200, default: 50 })),
108
+ }, { additionalProperties: false }),
109
+ async execute(_toolCallId, params) {
110
+ const page = await agent.workrooms.list(params.cursor, params.limit ?? 50);
111
+ return jsonResult({ tasks: page.workrooms.map(taskView), nextCursor: page.nextCursor });
112
+ },
113
+ },
114
+ {
115
+ name: "atalk_task_open",
116
+ label: "Open an aTalk Task",
117
+ description: "Open one encrypted aTalk Task and inspect its verified objective, participants, threads, permission metadata and approval status.",
118
+ parameters: Type.Object({ workroomId: uuid() }, { additionalProperties: false }),
119
+ async execute(_toolCallId, params) {
120
+ return jsonResult(taskView(await agent.workrooms.get(params.workroomId, 0, 1)));
121
+ },
122
+ },
123
+ {
124
+ name: "atalk_task_message",
125
+ label: "Message an aTalk Task",
126
+ description: "Publish an encrypted Task message under the agent's current permission. Mention handles to direct it to specific humans or agents.",
127
+ parameters: Type.Object({
128
+ ...common,
129
+ body: Type.String({ minLength: 1, maxLength: 200_000 }),
130
+ mentionHandles: Type.Optional(handles()),
131
+ replyToEventId: Type.Optional(uuid()),
132
+ }, { additionalProperties: false }),
133
+ async execute(_toolCallId, params) {
134
+ const id = operationId(params.operationId);
135
+ const detail = await agent.workrooms.get(params.workroomId, 0, 1);
136
+ const result = await agent.workrooms.publishMandated({
137
+ workroomId: params.workroomId,
138
+ threadId: params.threadId,
139
+ operationId: id,
140
+ ...(params.mandateId ? { mandateId: params.mandateId } : {}),
141
+ ...(params.rationale ? { rationale: params.rationale } : {}),
142
+ participantPeerIds: participantIds(detail),
143
+ payload: {
144
+ version: 1,
145
+ kind: "message",
146
+ threadId: params.threadId,
147
+ body: params.body,
148
+ mentions: mentions(detail, params.mentionHandles ?? []),
149
+ ...(params.replyToEventId ? { replyToEventId: params.replyToEventId } : {}),
150
+ },
151
+ });
152
+ return jsonResult({ operationId: id, result });
153
+ },
154
+ },
155
+ {
156
+ name: "atalk_task_activity",
157
+ label: "Update aTalk Task activity",
158
+ description: "Publish a concise encrypted progress update under the agent's current permission.",
159
+ parameters: Type.Object({
160
+ ...common,
161
+ activityType: Type.String({ minLength: 1, maxLength: 160 }),
162
+ summary: Type.String({ minLength: 1, maxLength: 4_000 }),
163
+ mentionHandles: Type.Optional(handles()),
164
+ }, { additionalProperties: false }),
165
+ async execute(_toolCallId, params) {
166
+ const id = operationId(params.operationId);
167
+ const detail = await agent.workrooms.get(params.workroomId, 0, 1);
168
+ const result = await agent.workrooms.publishMandated({
169
+ workroomId: params.workroomId,
170
+ threadId: params.threadId,
171
+ operationId: id,
172
+ ...(params.mandateId ? { mandateId: params.mandateId } : {}),
173
+ ...(params.rationale ? { rationale: params.rationale } : {}),
174
+ participantPeerIds: participantIds(detail),
175
+ payload: {
176
+ version: 1,
177
+ kind: "activity",
178
+ threadId: params.threadId,
179
+ activityType: params.activityType,
180
+ summary: params.summary,
181
+ mentions: mentions(detail, params.mentionHandles ?? []),
182
+ sourceEventIds: [],
183
+ attributes: {},
184
+ },
185
+ });
186
+ return jsonResult({ operationId: id, result });
187
+ },
188
+ },
189
+ {
190
+ name: "atalk_task_plan",
191
+ label: "Plan an aTalk Task",
192
+ description: "Publish a versioned encrypted Task plan. Assign steps by active participant handle. Requires the explicit plan.update permission.",
193
+ parameters: Type.Object({
194
+ ...common,
195
+ planId: Type.Optional(uuid()),
196
+ planVersion: Type.Integer({ minimum: 1 }),
197
+ summary: Type.String({ minLength: 1, maxLength: 2_000 }),
198
+ steps: Type.Array(Type.Object({
199
+ id: Type.String({ minLength: 1, maxLength: 160 }),
200
+ title: Type.String({ minLength: 1, maxLength: 500 }),
201
+ status: Type.Union([
202
+ Type.Literal("executing"), Type.Literal("waiting_approval"), Type.Literal("blocked"),
203
+ Type.Literal("completed"), Type.Literal("cancelled"), Type.Literal("expired"),
204
+ ]),
205
+ assignedHandles: Type.Optional(handles()),
206
+ dependsOnStepIds: Type.Optional(Type.Array(Type.String({ minLength: 1, maxLength: 160 }), { maxItems: 100 })),
207
+ deadline: Type.Optional(Type.String({ format: "date-time" })),
208
+ }, { additionalProperties: false }), { minItems: 1, maxItems: 500 }),
209
+ }, { additionalProperties: false }),
210
+ async execute(_toolCallId, params) {
211
+ const id = operationId(params.operationId);
212
+ const detail = await agent.workrooms.get(params.workroomId, 0, 1);
213
+ const result = await agent.workrooms.publishMandated({
214
+ workroomId: params.workroomId,
215
+ threadId: params.threadId,
216
+ operationId: id,
217
+ ...(params.mandateId ? { mandateId: params.mandateId } : {}),
218
+ ...(params.rationale ? { rationale: params.rationale } : {}),
219
+ participantPeerIds: participantIds(detail),
220
+ payload: {
221
+ version: 1,
222
+ kind: "plan",
223
+ ...(params.planId ? { planId: params.planId } : {}),
224
+ planVersion: params.planVersion,
225
+ summary: params.summary,
226
+ steps: params.steps.map((step) => ({
227
+ id: step.id,
228
+ title: step.title,
229
+ status: step.status,
230
+ assignedPeerIds: resolveMembers(detail, step.assignedHandles ?? []).map(({ id: peerId }) => peerId),
231
+ dependsOnStepIds: step.dependsOnStepIds ?? [],
232
+ ...(step.deadline ? { deadline: step.deadline } : {}),
233
+ })),
234
+ },
235
+ });
236
+ return jsonResult({ operationId: id, result });
237
+ },
238
+ },
239
+ {
240
+ name: "atalk_task_deliverable",
241
+ label: "Submit an aTalk Task deliverable",
242
+ description: "Submit an encrypted artifact version for review under the agent's current deliverable.submit permission.",
243
+ parameters: Type.Object({
244
+ ...common,
245
+ artifactId: uuid(),
246
+ artifactVersion: Type.Integer({ minimum: 1 }),
247
+ artifactVersionId: uuid(),
248
+ deliverableId: Type.Optional(uuid()),
249
+ acceptanceCriteria: Type.Array(Type.String({ minLength: 1, maxLength: 1_000 }), { minItems: 1, maxItems: 100 }),
250
+ note: Type.Optional(Type.String({ maxLength: 4_000 })),
251
+ mentionHandles: Type.Optional(handles()),
252
+ }, { additionalProperties: false }),
253
+ async execute(_toolCallId, params) {
254
+ const id = operationId(params.operationId);
255
+ const detail = await agent.workrooms.get(params.workroomId, 0, 1);
256
+ const result = await agent.workrooms.publishMandated({
257
+ workroomId: params.workroomId,
258
+ threadId: params.threadId,
259
+ operationId: id,
260
+ ...(params.mandateId ? { mandateId: params.mandateId } : {}),
261
+ ...(params.rationale ? { rationale: params.rationale } : {}),
262
+ participantPeerIds: participantIds(detail),
263
+ payload: {
264
+ version: 1,
265
+ kind: "deliverable",
266
+ artifactId: params.artifactId,
267
+ artifactVersion: params.artifactVersion,
268
+ artifactVersionId: params.artifactVersionId,
269
+ ...(params.deliverableId ? { deliverableId: params.deliverableId } : {}),
270
+ acceptanceCriteria: params.acceptanceCriteria,
271
+ ...(params.note ? { note: params.note } : {}),
272
+ mentions: mentions(detail, params.mentionHandles ?? []),
273
+ },
274
+ });
275
+ return jsonResult({ operationId: id, result });
276
+ },
277
+ },
278
+ ];
279
+ if (context.workspaceDir) {
280
+ tools.push({
281
+ name: "atalk_task_submit_file",
282
+ label: "Attach a file to an aTalk Task",
283
+ description: "Encrypt and attach one file from the active OpenClaw workspace to a Task. Returns artifact identifiers that can be submitted as a deliverable.",
284
+ parameters: Type.Object({
285
+ ...common,
286
+ filePath: Type.String({ minLength: 1 }),
287
+ name: Type.Optional(Type.String({ minLength: 1, maxLength: 500 })),
288
+ mimeType: Type.Optional(Type.String({ minLength: 1, maxLength: 200 })),
289
+ title: Type.Optional(Type.String({ minLength: 1, maxLength: 500 })),
290
+ description: Type.Optional(Type.String({ maxLength: 4_000 })),
291
+ artifactType: Type.Optional(Type.String({ minLength: 1, maxLength: 160 })),
292
+ artifactId: Type.Optional(uuid()),
293
+ artifactVersion: Type.Optional(Type.Integer({ minimum: 1 })),
294
+ mentionHandles: Type.Optional(handles()),
295
+ }, { additionalProperties: false }),
296
+ async execute(_toolCallId, params) {
297
+ const id = operationId(params.operationId);
298
+ const detail = await agent.workrooms.get(params.workroomId, 0, 1);
299
+ const path = await workspaceFile(params.filePath, context.workspaceDir);
300
+ const result = await agent.workrooms.submitFileMandated({
301
+ workroomId: params.workroomId,
302
+ threadId: params.threadId,
303
+ operationId: id,
304
+ path,
305
+ ...(params.mandateId ? { mandateId: params.mandateId } : {}),
306
+ ...(params.rationale ? { rationale: params.rationale } : {}),
307
+ ...(params.name ? { name: params.name } : {}),
308
+ ...(params.mimeType ? { mimeType: params.mimeType } : {}),
309
+ ...(params.title ? { title: params.title } : {}),
310
+ ...(params.description ? { description: params.description } : {}),
311
+ ...(params.artifactType ? { artifactType: params.artifactType } : {}),
312
+ ...(params.artifactId ? { artifactId: params.artifactId } : {}),
313
+ ...(params.artifactVersion ? { artifactVersion: params.artifactVersion } : {}),
314
+ mentions: mentions(detail, params.mentionHandles ?? []),
315
+ participantPeerIds: participantIds(detail),
316
+ });
317
+ return jsonResult({ operationId: id, result });
318
+ },
319
+ });
320
+ }
321
+ return tools;
322
+ }
323
+ export function registerAtalkTaskTools(api) {
324
+ api.registerTool((context) => {
325
+ const agent = getActiveAtalkAgent(context.agentAccountId ?? "default");
326
+ return agent ? buildAtalkTaskTools(agent, context) : null;
327
+ }, {
328
+ names: [
329
+ "atalk_task_list", "atalk_task_open", "atalk_task_message", "atalk_task_activity",
330
+ "atalk_task_plan", "atalk_task_deliverable", "atalk_task_submit_file",
331
+ ],
332
+ });
333
+ }
334
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,17 @@
3
3
  "name": "aTalk",
4
4
  "description": "Native end-to-end encrypted aTalk text and multimedia channel.",
5
5
  "channels": ["atalk"],
6
+ "contracts": {
7
+ "tools": [
8
+ "atalk_task_list",
9
+ "atalk_task_open",
10
+ "atalk_task_message",
11
+ "atalk_task_activity",
12
+ "atalk_task_plan",
13
+ "atalk_task_deliverable",
14
+ "atalk_task_submit_file"
15
+ ]
16
+ },
6
17
  "channelConfigs": {
7
18
  "atalk": {
8
19
  "schema": { "type": "object", "additionalProperties": false, "properties": {} },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atalk/openclaw",
3
- "version": "0.1.0-alpha.10",
3
+ "version": "0.1.0-alpha.12",
4
4
  "description": "Native aTalk messaging channel for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,7 +25,8 @@
25
25
  "registry": "https://registry.npmjs.org/"
26
26
  },
27
27
  "dependencies": {
28
- "@atalk/sdk": "0.1.0-alpha.10"
28
+ "typebox": "1.3.3",
29
+ "@atalk/sdk": "0.1.0-alpha.12"
29
30
  },
30
31
  "peerDependencies": {
31
32
  "openclaw": ">=2026.7.1-2"