@kartik.doda/openclaw-plugin-test 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 (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +128 -0
  3. package/dist/cli/admin-api.d.ts +58 -0
  4. package/dist/cli/admin-api.d.ts.map +1 -0
  5. package/dist/cli/admin-api.js +242 -0
  6. package/dist/cli/admin-api.js.map +1 -0
  7. package/dist/cli/auth.d.ts +5 -0
  8. package/dist/cli/auth.d.ts.map +1 -0
  9. package/dist/cli/auth.js +184 -0
  10. package/dist/cli/auth.js.map +1 -0
  11. package/dist/cli/bot.d.ts +3 -0
  12. package/dist/cli/bot.d.ts.map +1 -0
  13. package/dist/cli/bot.js +100 -0
  14. package/dist/cli/bot.js.map +1 -0
  15. package/dist/cli/config-updater.d.ts +70 -0
  16. package/dist/cli/config-updater.d.ts.map +1 -0
  17. package/dist/cli/config-updater.js +277 -0
  18. package/dist/cli/config-updater.js.map +1 -0
  19. package/dist/cli/credentials.d.ts +14 -0
  20. package/dist/cli/credentials.d.ts.map +1 -0
  21. package/dist/cli/credentials.js +45 -0
  22. package/dist/cli/credentials.js.map +1 -0
  23. package/dist/cli/rate-limiter.d.ts +17 -0
  24. package/dist/cli/rate-limiter.d.ts.map +1 -0
  25. package/dist/cli/rate-limiter.js +78 -0
  26. package/dist/cli/rate-limiter.js.map +1 -0
  27. package/dist/cli/setup.d.ts +2 -0
  28. package/dist/cli/setup.d.ts.map +1 -0
  29. package/dist/cli/setup.js +292 -0
  30. package/dist/cli/setup.js.map +1 -0
  31. package/dist/cli/ui.d.ts +30 -0
  32. package/dist/cli/ui.d.ts.map +1 -0
  33. package/dist/cli/ui.js +202 -0
  34. package/dist/cli/ui.js.map +1 -0
  35. package/dist/client/ddp.d.ts +31 -0
  36. package/dist/client/ddp.d.ts.map +1 -0
  37. package/dist/client/ddp.js +86 -0
  38. package/dist/client/ddp.js.map +1 -0
  39. package/dist/client/rest.d.ts +49 -0
  40. package/dist/client/rest.d.ts.map +1 -0
  41. package/dist/client/rest.js +347 -0
  42. package/dist/client/rest.js.map +1 -0
  43. package/dist/config/access-store.d.ts +29 -0
  44. package/dist/config/access-store.d.ts.map +1 -0
  45. package/dist/config/access-store.js +71 -0
  46. package/dist/config/access-store.js.map +1 -0
  47. package/dist/config/schema.d.ts +33 -0
  48. package/dist/config/schema.d.ts.map +1 -0
  49. package/dist/config/schema.js +52 -0
  50. package/dist/config/schema.js.map +1 -0
  51. package/dist/config/store.d.ts +11 -0
  52. package/dist/config/store.d.ts.map +1 -0
  53. package/dist/config/store.js +82 -0
  54. package/dist/config/store.js.map +1 -0
  55. package/dist/index.d.ts +4 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +17 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/plugin.d.ts +5 -0
  60. package/dist/plugin.d.ts.map +1 -0
  61. package/dist/plugin.js +164 -0
  62. package/dist/plugin.js.map +1 -0
  63. package/dist/service/attachments.d.ts +10 -0
  64. package/dist/service/attachments.d.ts.map +1 -0
  65. package/dist/service/attachments.js +105 -0
  66. package/dist/service/attachments.js.map +1 -0
  67. package/dist/service/channel.d.ts +25 -0
  68. package/dist/service/channel.d.ts.map +1 -0
  69. package/dist/service/channel.js +747 -0
  70. package/dist/service/channel.js.map +1 -0
  71. package/dist/service/gateway.d.ts +7 -0
  72. package/dist/service/gateway.d.ts.map +1 -0
  73. package/dist/service/gateway.js +621 -0
  74. package/dist/service/gateway.js.map +1 -0
  75. package/dist/service/group-history.d.ts +8 -0
  76. package/dist/service/group-history.d.ts.map +1 -0
  77. package/dist/service/group-history.js +24 -0
  78. package/dist/service/group-history.js.map +1 -0
  79. package/dist/service/inbound.d.ts +16 -0
  80. package/dist/service/inbound.d.ts.map +1 -0
  81. package/dist/service/inbound.js +189 -0
  82. package/dist/service/inbound.js.map +1 -0
  83. package/dist/service/runtime-state.d.ts +8 -0
  84. package/dist/service/runtime-state.d.ts.map +1 -0
  85. package/dist/service/runtime-state.js +3 -0
  86. package/dist/service/runtime-state.js.map +1 -0
  87. package/dist/types.d.ts +220 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +2 -0
  90. package/dist/types.js.map +1 -0
  91. package/dist/utils.d.ts +15 -0
  92. package/dist/utils.d.ts.map +1 -0
  93. package/dist/utils.js +68 -0
  94. package/dist/utils.js.map +1 -0
  95. package/package.json +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-history.d.ts","sourceRoot":"","sources":["../../src/service/group-history.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAUF,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,iBAAiB,GACvB,IAAI,CAWN;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAK9F"}
@@ -0,0 +1,24 @@
1
+ const MAX_GROUP_HISTORY_ENTRIES = 10;
2
+ const store = new Map();
3
+ function key(accountId, roomId) {
4
+ return `${accountId}:${roomId}`;
5
+ }
6
+ export function appendGroupHistory(accountId, roomId, entry) {
7
+ const k = key(accountId, roomId);
8
+ let history = store.get(k);
9
+ if (!history) {
10
+ history = [];
11
+ store.set(k, history);
12
+ }
13
+ history.push(entry);
14
+ if (history.length > MAX_GROUP_HISTORY_ENTRIES) {
15
+ history.splice(0, history.length - MAX_GROUP_HISTORY_ENTRIES);
16
+ }
17
+ }
18
+ export function getAndClearGroupHistory(accountId, roomId) {
19
+ const k = key(accountId, roomId);
20
+ const history = store.get(k) ?? [];
21
+ store.delete(k);
22
+ return history;
23
+ }
24
+ //# sourceMappingURL=group-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-history.js","sourceRoot":"","sources":["../../src/service/group-history.ts"],"names":[],"mappings":"AAMA,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAErC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;AAErD,SAAS,GAAG,CAAC,SAAiB,EAAE,MAAc;IAC5C,OAAO,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,MAAc,EACd,KAAwB;IAExB,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,OAAO,CAAC,MAAM,GAAG,yBAAyB,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,yBAAyB,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,MAAc;IACvE,MAAM,CAAC,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChB,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { InboundEvent, OpenClawConfigLike, OutboundReplyPayload, ReplyDeliverInfo, ChannelRuntimeLike } from "../types.js";
2
+ import type { RocketChatClient } from "../client/rest.js";
3
+ import type { GroupHistoryEntry } from "./group-history.js";
4
+ export declare function dispatchInboundEventWithChannelRuntime(params: {
5
+ cfg: OpenClawConfigLike;
6
+ accountId: string;
7
+ event: InboundEvent;
8
+ groupHistory?: GroupHistoryEntry[];
9
+ identityUsername: string;
10
+ channelRuntime: ChannelRuntimeLike;
11
+ deliver(payload: OutboundReplyPayload, info: ReplyDeliverInfo): Promise<void>;
12
+ onRecordError(err: unknown): void;
13
+ onDispatchError(err: unknown, info: ReplyDeliverInfo): void;
14
+ client?: RocketChatClient;
15
+ }): Promise<void>;
16
+ //# sourceMappingURL=inbound.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/service/inbound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,wBAAsB,sCAAsC,CAAC,MAAM,EAAE;IACnE,GAAG,EAAE,kBAAkB,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,kBAAkB,CAAC;IACnC,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC5D,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CA2FhB"}
@@ -0,0 +1,189 @@
1
+ export async function dispatchInboundEventWithChannelRuntime(params) {
2
+ const route = params.channelRuntime.routing.resolveAgentRoute({
3
+ cfg: params.cfg,
4
+ channel: "rocketchat",
5
+ accountId: params.accountId,
6
+ peer: {
7
+ kind: params.event.roomType,
8
+ id: params.event.roomId,
9
+ },
10
+ });
11
+ // Per-bot session isolation: multiple bots bound to the same agent
12
+ // get separate conversation histories by including the bot accountId in the key.
13
+ // accountId is the stable routing key (one bot = one agent), so this guarantees
14
+ // two bots sharing an agent (e.g. fallback to main) do not bleed memory into each other.
15
+ const botAwareSessionKey = `${route.sessionKey}:${params.accountId}`;
16
+ const storePath = params.channelRuntime.session.resolveStorePath(params.cfg.session?.store, {
17
+ agentId: route.agentId,
18
+ });
19
+ const previousTimestamp = params.channelRuntime.session.readSessionUpdatedAt({
20
+ storePath,
21
+ sessionKey: botAwareSessionKey,
22
+ });
23
+ const envelopeOptions = params.channelRuntime.reply.resolveEnvelopeFormatOptions(params.cfg);
24
+ const timestamp = toEpochMs(params.event.sentAt);
25
+ const to = buildRecipientAddress(params.event);
26
+ const bodyForAgent = buildBodyForAgent(params.event, params.groupHistory);
27
+ const body = params.channelRuntime.reply.formatAgentEnvelope({
28
+ channel: "Rocket.Chat",
29
+ from: buildConversationLabel(params.event),
30
+ timestamp,
31
+ previousTimestamp,
32
+ envelope: envelopeOptions,
33
+ body: bodyForAgent,
34
+ });
35
+ const isCommand = params.event.text.startsWith("/");
36
+ const ctxPayload = params.channelRuntime.reply.finalizeInboundContext({
37
+ Body: body,
38
+ BodyForAgent: bodyForAgent,
39
+ RawBody: params.event.text,
40
+ CommandBody: params.event.text,
41
+ From: buildSenderAddress(params.event),
42
+ To: to,
43
+ SessionKey: botAwareSessionKey,
44
+ AccountId: route.accountId ?? params.accountId,
45
+ ChatType: params.event.roomType,
46
+ ConversationLabel: buildConversationLabel(params.event),
47
+ GroupSubject: params.event.roomType === "direct" ? undefined : params.event.roomId,
48
+ SenderId: params.event.senderId,
49
+ WasMentioned: params.event.roomType !== "direct" && params.event.mentions.includes(params.identityUsername),
50
+ Provider: "rocketchat",
51
+ Surface: "rocketchat",
52
+ MessageSid: params.event.messageId,
53
+ MessageSidFull: params.event.messageId,
54
+ Timestamp: timestamp,
55
+ OriginatingChannel: "rocketchat",
56
+ OriginatingTo: to,
57
+ ...(isCommand ? { CommandSource: "text", CommandAuthorized: true } : {}),
58
+ ...(await buildMediaContext(params.event.attachments, params.client)),
59
+ });
60
+ await params.channelRuntime.session.recordInboundSession({
61
+ storePath,
62
+ sessionKey: ctxPayload.SessionKey ?? botAwareSessionKey,
63
+ ctx: ctxPayload,
64
+ updateLastRoute: {
65
+ sessionKey: route.mainSessionKey ?? botAwareSessionKey,
66
+ channel: "rocketchat",
67
+ to,
68
+ accountId: route.accountId ?? params.accountId,
69
+ },
70
+ onRecordError: params.onRecordError,
71
+ });
72
+ await params.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({
73
+ ctx: ctxPayload,
74
+ cfg: params.cfg,
75
+ dispatcherOptions: {
76
+ deliver: async (payload, info) => {
77
+ await params.deliver(normalizeOutboundReplyPayload(payload), info);
78
+ },
79
+ onError: params.onDispatchError,
80
+ },
81
+ });
82
+ }
83
+ function normalizeOutboundReplyPayload(payload) {
84
+ if (!payload || typeof payload !== "object") {
85
+ return {};
86
+ }
87
+ const record = payload;
88
+ const text = typeof record.text === "string" ? record.text : undefined;
89
+ const mediaUrl = typeof record.mediaUrl === "string" ? record.mediaUrl : undefined;
90
+ const mediaUrls = Array.isArray(record.mediaUrls)
91
+ ? record.mediaUrls.filter((value) => typeof value === "string" && value.trim().length > 0)
92
+ : undefined;
93
+ const attachmentPath = typeof record.attachmentPath === "string" ? record.attachmentPath : undefined;
94
+ const replyToId = typeof record.replyToId === "string" ? record.replyToId : undefined;
95
+ return {
96
+ ...(text ? { text } : {}),
97
+ ...(mediaUrl ? { mediaUrl } : {}),
98
+ ...(mediaUrls && mediaUrls.length > 0 ? { mediaUrls } : {}),
99
+ ...(attachmentPath ? { attachmentPath } : {}),
100
+ ...(replyToId ? { replyToId } : {}),
101
+ };
102
+ }
103
+ function buildConversationLabel(event) {
104
+ if (event.roomType === "direct") {
105
+ return `${event.senderName} (${event.senderId})`;
106
+ }
107
+ return `${event.roomType}:${event.roomId}`;
108
+ }
109
+ function buildSenderAddress(event) {
110
+ return `rocketchat:${event.senderId}`;
111
+ }
112
+ function buildRecipientAddress(event) {
113
+ return `rocketchat:${event.roomId}`;
114
+ }
115
+ async function buildMediaContext(attachments, client) {
116
+ if (attachments.length === 0)
117
+ return {};
118
+ const results = await Promise.all(attachments.map(async (attachment) => {
119
+ if (attachment.source === "rocketchat-file" && attachment.url && client) {
120
+ try {
121
+ const filePath = await client.downloadAttachmentToTempFile(attachment.url, attachment.fileName ? { fileName: attachment.fileName } : undefined);
122
+ return { kind: "path", value: filePath, mimeType: attachment.mimeType };
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
128
+ if (attachment.url) {
129
+ return { kind: "url", value: attachment.url, mimeType: attachment.mimeType };
130
+ }
131
+ return null;
132
+ }));
133
+ const mediaUrls = [];
134
+ const mediaPaths = [];
135
+ const mediaTypes = [];
136
+ for (const r of results) {
137
+ if (!r)
138
+ continue;
139
+ if (r.kind === "path") {
140
+ mediaPaths.push(r.value);
141
+ }
142
+ else {
143
+ mediaUrls.push(r.value);
144
+ }
145
+ if (r.mimeType)
146
+ mediaTypes.push(r.mimeType);
147
+ }
148
+ return {
149
+ ...(mediaUrls.length > 0 ? { MediaUrl: mediaUrls[0], MediaUrls: mediaUrls } : {}),
150
+ ...(mediaPaths.length > 0 ? { MediaPath: mediaPaths[0], MediaPaths: mediaPaths } : {}),
151
+ ...(mediaTypes.length > 0 ? { MediaType: mediaTypes[0], MediaTypes: mediaTypes } : {}),
152
+ };
153
+ }
154
+ function toEpochMs(value) {
155
+ const timestamp = Date.parse(value);
156
+ return Number.isNaN(timestamp) ? undefined : timestamp;
157
+ }
158
+ function buildBodyForAgent(event, groupHistory = []) {
159
+ const labeled = labelGroupSender(event);
160
+ const historyText = formatHistoryForBody(groupHistory);
161
+ if (!event.quotedText) {
162
+ return historyText ? `${labeled}\n\n${historyText}` : labeled;
163
+ }
164
+ const trailer = historyText ? `\n\n${historyText}` : "";
165
+ return [
166
+ `The user is replying to / quoting the following message in this channel:`,
167
+ `---`,
168
+ event.quotedText,
169
+ `---`,
170
+ ``,
171
+ `The user's question or instruction about the quoted message above: ${event.text}`,
172
+ ``,
173
+ `Answer the user's question by referring to the quoted content above.`,
174
+ ``,
175
+ `(Sender: ${event.senderName})${trailer}`,
176
+ ].join("\n");
177
+ }
178
+ function formatHistoryForBody(history) {
179
+ if (history.length === 0)
180
+ return "";
181
+ const lines = history.map((h) => `[${h.sender}]: ${h.body}`).join("\n");
182
+ return `Recent messages in this room (oldest to newest):\n${lines}`;
183
+ }
184
+ function labelGroupSender(event) {
185
+ if (event.roomType === "direct")
186
+ return event.text;
187
+ return `${event.senderName} (@${event.senderName}): ${event.text}`;
188
+ }
189
+ //# sourceMappingURL=inbound.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../src/service/inbound.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { RocketChatClient } from "../client/rest.js";
2
+ export type ClientEntry = {
3
+ client: RocketChatClient;
4
+ generation: number;
5
+ };
6
+ export declare const activeClients: Map<string, ClientEntry>;
7
+ export declare const connectionStatus: Map<string, string>;
8
+ //# sourceMappingURL=runtime-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.d.ts","sourceRoot":"","sources":["../../src/service/runtime-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,eAAO,MAAM,aAAa,0BAAiC,CAAC;AAC5D,eAAO,MAAM,gBAAgB,qBAA4B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export const activeClients = new Map();
2
+ export const connectionStatus = new Map();
3
+ //# sourceMappingURL=runtime-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-state.js","sourceRoot":"","sources":["../../src/service/runtime-state.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAuB,CAAC;AAC5D,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC"}
@@ -0,0 +1,220 @@
1
+ import type { PluginAccountConfig } from "./config/schema.js";
2
+ export type { PluginConfig, PluginAccountConfig } from "./config/schema.js";
3
+ export type InboundAttachmentKind = "image" | "audio" | "document" | "video" | "unknown";
4
+ export type InboundAttachment = {
5
+ kind: InboundAttachmentKind;
6
+ mimeType?: string;
7
+ fileName?: string;
8
+ url?: string;
9
+ sizeBytes?: number;
10
+ source: "rocketchat-attachment" | "rocketchat-file";
11
+ raw: unknown;
12
+ };
13
+ export type RocketChatIdentity = {
14
+ userId: string;
15
+ authToken: string;
16
+ username: string;
17
+ displayName: string;
18
+ };
19
+ export type RocketChatSubscriptionRecord = {
20
+ rid: string;
21
+ name?: string;
22
+ fname?: string;
23
+ t?: string;
24
+ _updatedAt?: string;
25
+ updatedAt?: string;
26
+ };
27
+ export type RocketChatMessageRecord = {
28
+ _id: string;
29
+ rid: string;
30
+ msg?: string;
31
+ ts?: string;
32
+ _updatedAt?: string;
33
+ t?: string;
34
+ tmid?: string;
35
+ u?: {
36
+ _id?: string;
37
+ username?: string;
38
+ name?: string;
39
+ };
40
+ mentions?: Array<{
41
+ username?: string;
42
+ name?: string;
43
+ }>;
44
+ attachments?: unknown[];
45
+ file?: unknown;
46
+ files?: unknown[];
47
+ };
48
+ export type RocketChatClientOptions = {
49
+ serverUrl: string;
50
+ auth: PluginAccountConfig["auth"];
51
+ fetch?: typeof fetch;
52
+ };
53
+ export type JsonObject = Record<string, unknown>;
54
+ export type ResolvedAccount = PluginAccountConfig & {
55
+ accountId: string;
56
+ };
57
+ export type OpenClawConfig = {
58
+ session?: {
59
+ store?: string;
60
+ };
61
+ channels?: {
62
+ rocketchat?: unknown;
63
+ };
64
+ };
65
+ export type GatewayContext = {
66
+ accountId: string;
67
+ account?: ResolvedAccount;
68
+ cfg?: OpenClawConfig;
69
+ abortSignal?: AbortSignal;
70
+ channelRuntime?: ChannelRuntimeLike;
71
+ setStatus?: (status: string) => void;
72
+ };
73
+ export type InboundEvent = {
74
+ accountId: string;
75
+ roomId: string;
76
+ roomType: "direct" | "group" | "channel";
77
+ messageId: string;
78
+ tmid: string | null;
79
+ senderId: string;
80
+ senderName: string;
81
+ text: string;
82
+ mentions: string[];
83
+ attachments: InboundAttachment[];
84
+ quotedText?: string;
85
+ sentAt: string;
86
+ raw: RocketChatMessageRecord;
87
+ };
88
+ export type OpenClawConfigLike = OpenClawConfig;
89
+ export type RoutePeer = {
90
+ kind: InboundEvent["roomType"];
91
+ id: string;
92
+ };
93
+ export type ResolvedAgentRoute = {
94
+ agentId: string;
95
+ sessionKey: string;
96
+ accountId?: string;
97
+ mainSessionKey?: string;
98
+ };
99
+ export type FinalizedContext = Record<string, unknown> & {
100
+ SessionKey?: string;
101
+ };
102
+ export type OutboundReplyPayload = {
103
+ text?: string;
104
+ mediaUrl?: string;
105
+ mediaUrls?: string[];
106
+ attachmentPath?: string;
107
+ replyToId?: string;
108
+ };
109
+ export type ReplyDeliverInfo = {
110
+ kind: "tool" | "block" | "final";
111
+ };
112
+ export type ChannelRuntimeLike = {
113
+ routing: {
114
+ resolveAgentRoute(params: {
115
+ cfg: OpenClawConfigLike;
116
+ channel: string;
117
+ accountId: string;
118
+ peer: RoutePeer;
119
+ }): ResolvedAgentRoute;
120
+ };
121
+ session: {
122
+ resolveStorePath(store: string | undefined, opts: {
123
+ agentId: string;
124
+ }): string;
125
+ readSessionUpdatedAt(params: {
126
+ storePath: string;
127
+ sessionKey: string;
128
+ }): number | undefined;
129
+ recordInboundSession(params: {
130
+ storePath: string;
131
+ sessionKey: string;
132
+ ctx: FinalizedContext;
133
+ updateLastRoute?: {
134
+ sessionKey: string;
135
+ channel: string;
136
+ to: string;
137
+ accountId?: string;
138
+ };
139
+ onRecordError(err: unknown): void;
140
+ }): Promise<void>;
141
+ };
142
+ reply: {
143
+ resolveEnvelopeFormatOptions(cfg: OpenClawConfigLike): unknown;
144
+ formatAgentEnvelope(params: {
145
+ channel: string;
146
+ from: string;
147
+ timestamp?: number | undefined;
148
+ previousTimestamp?: number | undefined;
149
+ envelope: unknown;
150
+ body: string;
151
+ }): string;
152
+ finalizeInboundContext<T extends Record<string, unknown>>(ctx: T): T & FinalizedContext;
153
+ dispatchReplyWithBufferedBlockDispatcher(params: {
154
+ ctx: FinalizedContext;
155
+ cfg: OpenClawConfigLike;
156
+ dispatcherOptions: {
157
+ deliver(payload: unknown, info: {
158
+ kind: "tool" | "block" | "final";
159
+ }): Promise<void>;
160
+ onError?(err: unknown, info: {
161
+ kind: "tool" | "block" | "final";
162
+ }): void;
163
+ };
164
+ }): Promise<unknown>;
165
+ };
166
+ };
167
+ export type ChannelRuleOptions = {
168
+ botUserId: string;
169
+ mentionNames: string[];
170
+ knownBotUserIds?: Set<string>;
171
+ };
172
+ export type CheckpointState = {
173
+ updatedSince: string | null;
174
+ recentMessageIds: string[];
175
+ failedMessages?: FailedMessageRecord[];
176
+ };
177
+ export type FailedMessageRecord = {
178
+ messageId: string;
179
+ roomId: string;
180
+ senderName: string;
181
+ sentAt: string;
182
+ failedAt: string;
183
+ reason: string;
184
+ };
185
+ export type AuthCredentials = {
186
+ mode: "token";
187
+ userId: string;
188
+ accessToken: string;
189
+ } | {
190
+ mode: "password";
191
+ username: string;
192
+ password: string;
193
+ };
194
+ export type RCLoginResult = {
195
+ userId: string;
196
+ authToken: string;
197
+ };
198
+ export type RCUser = {
199
+ _id: string;
200
+ username: string;
201
+ name: string;
202
+ roles?: string[];
203
+ };
204
+ export type AttachmentRecord = {
205
+ _id?: string;
206
+ title?: string;
207
+ title_link?: string;
208
+ url?: string;
209
+ image_url?: string;
210
+ video_url?: string;
211
+ audio_url?: string;
212
+ type?: string;
213
+ mimeType?: string;
214
+ mimetype?: string;
215
+ contentType?: string;
216
+ name?: string;
217
+ filename?: string;
218
+ size?: number;
219
+ };
220
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { JsonObject } from "./types.js";
2
+ export declare function resolveOpenClawDir(): string;
3
+ export declare function resolveUrl(url: string, base?: string): string;
4
+ export declare function getErrorMessage(payload: JsonObject, fallback: string): string;
5
+ export declare function getExt(name: string | undefined): string | undefined;
6
+ export declare function extractQuotedMessageId(link: string): string | undefined;
7
+ /** Sentinel roomId used for grants that permit direct-message (DM) access only. */
8
+ export declare const DM_SCOPE = "dm";
9
+ /**
10
+ * Strip the `@` prefix from any `@username` mention whose username matches a
11
+ * known bot identity. This prevents outbound bot replies from triggering
12
+ * other bots in shared rooms (mention-response loops).
13
+ */
14
+ export declare function stripBotMentions(text: string, botUsernames: Set<string>): string;
15
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAY7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI7E;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOnE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQvE;AAED,mFAAmF;AACnF,eAAO,MAAM,QAAQ,OAAO,CAAC;AAE7B;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAQhF"}
package/dist/utils.js ADDED
@@ -0,0 +1,68 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ export function resolveOpenClawDir() {
4
+ const explicit = process.env.OPENCLAW_STATE_DIR?.trim();
5
+ if (explicit)
6
+ return explicit;
7
+ const home = process.env.OPENCLAW_HOME?.trim();
8
+ if (home)
9
+ return join(home, ".openclaw");
10
+ return join(homedir(), ".openclaw");
11
+ }
12
+ export function resolveUrl(url, base) {
13
+ try {
14
+ return new URL(url).toString();
15
+ }
16
+ catch {
17
+ /* relative */
18
+ }
19
+ if (!base)
20
+ return url;
21
+ try {
22
+ return new URL(url, base.endsWith("/") ? base : base + "/").toString();
23
+ }
24
+ catch {
25
+ return url;
26
+ }
27
+ }
28
+ export function getErrorMessage(payload, fallback) {
29
+ if (typeof payload.error === "string" && payload.error.length > 0)
30
+ return payload.error;
31
+ if (typeof payload.message === "string" && payload.message.length > 0)
32
+ return payload.message;
33
+ return fallback;
34
+ }
35
+ export function getExt(name) {
36
+ if (!name)
37
+ return undefined;
38
+ const clean = name.trim().toLowerCase();
39
+ const part = clean.split("?").shift().split("#").shift();
40
+ const dot = part.lastIndexOf(".");
41
+ if (dot <= 0 || dot === part.length - 1)
42
+ return undefined;
43
+ return part.slice(dot + 1);
44
+ }
45
+ export function extractQuotedMessageId(link) {
46
+ try {
47
+ const url = new URL(link);
48
+ const msg = url.searchParams.get("msg");
49
+ return msg && msg.length > 0 ? msg : undefined;
50
+ }
51
+ catch {
52
+ return undefined;
53
+ }
54
+ }
55
+ /** Sentinel roomId used for grants that permit direct-message (DM) access only. */
56
+ export const DM_SCOPE = "dm";
57
+ /**
58
+ * Strip the `@` prefix from any `@username` mention whose username matches a
59
+ * known bot identity. This prevents outbound bot replies from triggering
60
+ * other bots in shared rooms (mention-response loops).
61
+ */
62
+ export function stripBotMentions(text, botUsernames) {
63
+ if (!text || botUsernames.size === 0)
64
+ return text;
65
+ const normalized = new Set([...botUsernames].map((n) => n.trim().replace(/^@+/, "").toLowerCase()));
66
+ return text.replace(/@([a-zA-Z0-9._-]+)/g, (match, name) => normalized.has(name.toLowerCase()) ? name : match);
67
+ }
68
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}