@inline-openclaw/inline 0.0.18 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,395 +0,0 @@
1
- import { jsonResult, } from "openclaw/plugin-sdk";
2
- import { InlineSdkClient, Method } from "@inline-chat/realtime-sdk";
3
- import { resolveInlineAccount, resolveInlineToken } from "./accounts.js";
4
- import { normalizeInlineTarget } from "./normalize.js";
5
- const InlineNudgeToolParameters = {
6
- type: "object",
7
- additionalProperties: false,
8
- properties: {
9
- to: {
10
- type: "string",
11
- description: "Optional Inline target (`chat:<id>`, bare chat id, or `user:<id>`). Defaults to the current Inline chat when available.",
12
- },
13
- target: {
14
- type: "string",
15
- description: "Alias for `to`.",
16
- },
17
- chatId: {
18
- type: "string",
19
- description: "Explicit chat id target alias.",
20
- },
21
- userId: {
22
- type: "string",
23
- description: "Explicit user id target alias.",
24
- },
25
- message: {
26
- type: "string",
27
- description: "Optional accompanying text.",
28
- },
29
- text: {
30
- type: "string",
31
- description: "Alias for `message`.",
32
- },
33
- accountId: {
34
- type: "string",
35
- description: "Optional Inline account id override.",
36
- },
37
- },
38
- };
39
- const InlineForwardToolParameters = {
40
- type: "object",
41
- additionalProperties: false,
42
- properties: {
43
- to: {
44
- type: "string",
45
- description: "Destination Inline target (`chat:<id>`, bare chat id, or `user:<id>`).",
46
- },
47
- target: {
48
- type: "string",
49
- description: "Alias for `to`.",
50
- },
51
- chatId: {
52
- type: "string",
53
- description: "Explicit destination chat id alias.",
54
- },
55
- userId: {
56
- type: "string",
57
- description: "Explicit destination user id alias.",
58
- },
59
- from: {
60
- type: "string",
61
- description: "Optional source Inline target. Defaults to the current Inline chat when available.",
62
- },
63
- source: {
64
- type: "string",
65
- description: "Alias for `from`.",
66
- },
67
- fromChatId: {
68
- type: "string",
69
- description: "Explicit source chat id alias.",
70
- },
71
- sourceChatId: {
72
- type: "string",
73
- description: "Alias for `fromChatId`.",
74
- },
75
- fromUserId: {
76
- type: "string",
77
- description: "Explicit source user id alias.",
78
- },
79
- sourceUserId: {
80
- type: "string",
81
- description: "Alias for `fromUserId`.",
82
- },
83
- messageId: {
84
- type: "string",
85
- description: "Single message id to forward.",
86
- },
87
- messageIds: {
88
- oneOf: [
89
- { type: "string" },
90
- { type: "array", items: { type: "string" } },
91
- ],
92
- description: "One or more source message ids to forward.",
93
- },
94
- shareForwardHeader: {
95
- type: "boolean",
96
- description: "Whether forwarded messages should include the original forward header (default true).",
97
- },
98
- accountId: {
99
- type: "string",
100
- description: "Optional Inline account id override.",
101
- },
102
- },
103
- required: ["to"],
104
- };
105
- function parseInlineId(raw, label) {
106
- if (typeof raw === "bigint") {
107
- if (raw < 0n)
108
- throw new Error(`inline tool: invalid ${label} "${raw.toString()}"`);
109
- return raw;
110
- }
111
- if (typeof raw === "number") {
112
- if (!Number.isFinite(raw) || !Number.isInteger(raw) || raw < 0) {
113
- throw new Error(`inline tool: invalid ${label} "${String(raw)}"`);
114
- }
115
- return BigInt(raw);
116
- }
117
- if (typeof raw === "string") {
118
- const trimmed = raw.trim();
119
- if (!trimmed)
120
- throw new Error(`inline tool: missing ${label}`);
121
- if (!/^[0-9]+$/.test(trimmed))
122
- throw new Error(`inline tool: invalid ${label} "${raw}"`);
123
- return BigInt(trimmed);
124
- }
125
- throw new Error(`inline tool: missing ${label}`);
126
- }
127
- function parseInlineTarget(raw, label) {
128
- const normalized = normalizeInlineTarget(raw) ?? raw.trim();
129
- const userMatch = normalized.match(/^user:([0-9]+)$/i);
130
- if (userMatch?.[1]) {
131
- return {
132
- normalized: `user:${userMatch[1]}`,
133
- peerId: {
134
- type: {
135
- oneofKind: "user",
136
- user: { userId: BigInt(userMatch[1]) },
137
- },
138
- },
139
- };
140
- }
141
- if (!/^[0-9]+$/.test(normalized)) {
142
- throw new Error(`inline tool: invalid ${label} "${raw}"`);
143
- }
144
- return {
145
- normalized,
146
- peerId: {
147
- type: {
148
- oneofKind: "chat",
149
- chat: { chatId: BigInt(normalized) },
150
- },
151
- },
152
- };
153
- }
154
- function parseCurrentInlineTarget(ctx) {
155
- if ((ctx.messageChannel ?? "").trim().toLowerCase() !== "inline") {
156
- return null;
157
- }
158
- const sessionKey = ctx.sessionKey?.trim();
159
- if (!sessionKey)
160
- return null;
161
- const explicitMatch = sessionKey.match(/^agent:[^:]+:inline:(chat|user):([0-9]+)(?::thread:[^:]+)?$/i);
162
- if (explicitMatch?.[1] && explicitMatch[2]) {
163
- return parseInlineTarget(explicitMatch[1].toLowerCase() === "user" ? `user:${explicitMatch[2]}` : explicitMatch[2], "current chat");
164
- }
165
- const legacyMatch = sessionKey.match(/^agent:[^:]+:inline:([0-9]+)(?::thread:[^:]+)?$/i);
166
- if (legacyMatch?.[1]) {
167
- return parseInlineTarget(legacyMatch[1], "current chat");
168
- }
169
- return null;
170
- }
171
- function readStringCandidate(...values) {
172
- for (const value of values) {
173
- if (typeof value !== "string")
174
- continue;
175
- const trimmed = value.trim();
176
- if (trimmed)
177
- return trimmed;
178
- }
179
- return undefined;
180
- }
181
- function resolvePeerTarget(params) {
182
- if (params.direct) {
183
- return {
184
- target: parseInlineTarget(params.direct, params.label),
185
- usedFallback: false,
186
- };
187
- }
188
- if (params.userId) {
189
- const userId = parseInlineId(params.userId, `${params.label} userId`);
190
- return {
191
- target: parseInlineTarget(`user:${String(userId)}`, params.label),
192
- usedFallback: false,
193
- };
194
- }
195
- if (params.chatId) {
196
- const chatId = parseInlineId(params.chatId, `${params.label} chatId`);
197
- return {
198
- target: parseInlineTarget(String(chatId), params.label),
199
- usedFallback: false,
200
- };
201
- }
202
- if (params.fallback) {
203
- return {
204
- target: params.fallback,
205
- usedFallback: true,
206
- };
207
- }
208
- throw new Error(`inline tool: missing ${params.label}`);
209
- }
210
- function parseMessageIds(raw) {
211
- const values = [];
212
- const pushValue = (value) => {
213
- if (value == null)
214
- return;
215
- if (Array.isArray(value)) {
216
- for (const item of value)
217
- pushValue(item);
218
- return;
219
- }
220
- if (typeof value === "string") {
221
- const trimmed = value.trim();
222
- if (!trimmed)
223
- return;
224
- for (const chunk of trimmed.split(",")) {
225
- const token = chunk.trim();
226
- if (token)
227
- values.push(token);
228
- }
229
- return;
230
- }
231
- if (typeof value === "number" || typeof value === "bigint") {
232
- values.push(String(value));
233
- return;
234
- }
235
- throw new Error("inline tool: invalid messageIds");
236
- };
237
- pushValue(raw.messageIds);
238
- pushValue(raw.messageId);
239
- if (values.length === 0) {
240
- throw new Error("inline tool: forward requires messageId or messageIds");
241
- }
242
- return values.map((value) => parseInlineId(value, "messageId"));
243
- }
244
- function extractFirstMessageId(updates) {
245
- if (!Array.isArray(updates))
246
- return null;
247
- for (const update of updates) {
248
- const record = update;
249
- if (record.update?.oneofKind !== "newMessage")
250
- continue;
251
- const messageId = record.update.newMessage?.message?.id;
252
- if (typeof messageId === "bigint")
253
- return messageId.toString();
254
- if (typeof messageId === "number" && Number.isFinite(messageId))
255
- return String(Math.trunc(messageId));
256
- if (typeof messageId === "string" && messageId.trim())
257
- return messageId.trim();
258
- }
259
- return null;
260
- }
261
- async function withInlineClient(params) {
262
- const account = resolveInlineAccount({ cfg: params.cfg, accountId: params.accountId ?? null });
263
- if (!account.configured || !account.baseUrl) {
264
- throw new Error(`Inline not configured for account "${account.accountId}" (missing token or baseUrl)`);
265
- }
266
- const token = await resolveInlineToken(account);
267
- const client = new InlineSdkClient({
268
- baseUrl: account.baseUrl,
269
- token,
270
- });
271
- await client.connect();
272
- try {
273
- return await params.fn(client, account.accountId);
274
- }
275
- finally {
276
- await client.close().catch(() => { });
277
- }
278
- }
279
- function createInlineNudgeTool(ctx) {
280
- return {
281
- name: "inline_nudge",
282
- label: "Inline Nudge",
283
- description: "Send an Inline nudge to a chat or user. If invoked from an Inline conversation, omitting the target defaults to the current chat.",
284
- parameters: InlineNudgeToolParameters,
285
- execute: async (_toolCallId, rawArgs) => {
286
- if (!ctx.config) {
287
- throw new Error("inline_nudge: missing OpenClaw config");
288
- }
289
- const args = rawArgs;
290
- const fallbackTarget = parseCurrentInlineTarget(ctx);
291
- const { target, usedFallback } = resolvePeerTarget({
292
- label: "target",
293
- direct: readStringCandidate(args.to, args.target),
294
- chatId: args.chatId,
295
- userId: args.userId,
296
- fallback: fallbackTarget,
297
- });
298
- const message = readStringCandidate(args.message, args.text);
299
- return await withInlineClient({
300
- cfg: ctx.config,
301
- accountId: args.accountId ?? ctx.agentAccountId ?? null,
302
- fn: async (client, resolvedAccountId) => {
303
- const result = await client.invokeRaw(Method.SEND_MESSAGE, {
304
- oneofKind: "sendMessage",
305
- sendMessage: {
306
- peerId: target.peerId,
307
- ...(message ? { message } : {}),
308
- media: {
309
- media: {
310
- oneofKind: "nudge",
311
- nudge: {},
312
- },
313
- },
314
- },
315
- });
316
- const messageId = result.oneofKind === "sendMessage" ? extractFirstMessageId(result.sendMessage.updates) : null;
317
- return jsonResult({
318
- ok: true,
319
- accountId: resolvedAccountId,
320
- nudged: true,
321
- target: target.normalized,
322
- usedCurrentChatDefault: usedFallback,
323
- message: message ?? null,
324
- messageId,
325
- });
326
- },
327
- });
328
- },
329
- };
330
- }
331
- function createInlineForwardTool(ctx) {
332
- return {
333
- name: "inline_forward",
334
- label: "Inline Forward",
335
- description: "Forward one or more Inline message ids from a source chat/user to another chat/user. If the source is omitted in an Inline conversation, it defaults to the current chat.",
336
- parameters: InlineForwardToolParameters,
337
- execute: async (_toolCallId, rawArgs) => {
338
- if (!ctx.config) {
339
- throw new Error("inline_forward: missing OpenClaw config");
340
- }
341
- const args = rawArgs;
342
- const fallbackSource = parseCurrentInlineTarget(ctx);
343
- const { target: destination } = resolvePeerTarget({
344
- label: "destination target",
345
- direct: readStringCandidate(args.to, args.target),
346
- chatId: args.chatId,
347
- userId: args.userId,
348
- });
349
- const { target: source, usedFallback } = resolvePeerTarget({
350
- label: "source target",
351
- direct: readStringCandidate(args.from, args.source),
352
- chatId: readStringCandidate(args.fromChatId, args.sourceChatId),
353
- userId: readStringCandidate(args.fromUserId, args.sourceUserId),
354
- fallback: fallbackSource,
355
- });
356
- const messageIds = parseMessageIds(args);
357
- return await withInlineClient({
358
- cfg: ctx.config,
359
- accountId: args.accountId ?? ctx.agentAccountId ?? null,
360
- fn: async (client, resolvedAccountId) => {
361
- const result = await client.invokeRaw(Method.FORWARD_MESSAGES, {
362
- oneofKind: "forwardMessages",
363
- forwardMessages: {
364
- fromPeerId: source.peerId,
365
- toPeerId: destination.peerId,
366
- messageIds,
367
- ...(typeof args.shareForwardHeader === "boolean"
368
- ? { shareForwardHeader: args.shareForwardHeader }
369
- : {}),
370
- },
371
- });
372
- const forwardedMessageId = result.oneofKind === "forwardMessages"
373
- ? extractFirstMessageId(result.forwardMessages.updates)
374
- : null;
375
- return jsonResult({
376
- ok: true,
377
- accountId: resolvedAccountId,
378
- from: source.normalized,
379
- to: destination.normalized,
380
- messageIds: messageIds.map((messageId) => messageId.toString()),
381
- shareForwardHeader: typeof args.shareForwardHeader === "boolean" ? args.shareForwardHeader : true,
382
- usedCurrentChatDefault: usedFallback,
383
- forwardedMessageId,
384
- });
385
- },
386
- });
387
- },
388
- };
389
- }
390
- export function createInlineMessageTools(ctx) {
391
- if (!ctx.config)
392
- return [];
393
- return [createInlineNudgeTool(ctx), createInlineForwardTool(ctx)];
394
- }
395
- //# sourceMappingURL=message-tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"message-tools.js","sourceRoot":"","sources":["../../src/inline/message-tools.ts"],"names":[],"mappings":"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"}