@inline-openclaw/inline 0.0.3 → 0.0.4
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 +42 -1
- package/dist/inline/actions.d.ts +3 -0
- package/dist/inline/actions.d.ts.map +1 -0
- package/dist/inline/actions.js +449 -0
- package/dist/inline/actions.js.map +1 -0
- package/dist/inline/channel.d.ts.map +1 -1
- package/dist/inline/channel.js +29 -1
- package/dist/inline/channel.js.map +1 -1
- package/dist/inline/config-schema.d.ts +182 -0
- package/dist/inline/config-schema.d.ts.map +1 -1
- package/dist/inline/config-schema.js +15 -1
- package/dist/inline/config-schema.js.map +1 -1
- package/dist/inline/monitor.d.ts.map +1 -1
- package/dist/inline/monitor.js +308 -27
- package/dist/inline/monitor.js.map +1 -1
- package/dist/inline/policy.d.ts +19 -0
- package/dist/inline/policy.d.ts.map +1 -0
- package/dist/inline/policy.js +108 -0
- package/dist/inline/policy.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,6 +12,8 @@ Supports:
|
|
|
12
12
|
- Inline DMs (`ChatType=direct`)
|
|
13
13
|
- Inline chats (including top-level thread-style chats) as conversations (`ChatType=group`)
|
|
14
14
|
- Message replies: OpenClaw `replyToId` is mapped to Inline `replyToMsgId` (message id).
|
|
15
|
+
- Emoji reactions via message tool actions (`react`, `reactions`).
|
|
16
|
+
- Reaction events on bot-authored messages are surfaced back to the agent as inbound context.
|
|
15
17
|
|
|
16
18
|
Non-goals (for now):
|
|
17
19
|
|
|
@@ -44,7 +46,7 @@ openclaw plugins install --link /path/to/inline/packages/openclaw-inline
|
|
|
44
46
|
|
|
45
47
|
## Configure
|
|
46
48
|
|
|
47
|
-
Channel config lives under `channels.inline` (
|
|
49
|
+
Channel config lives under `channels.inline` (supports account settings, block streaming/chunking, and group tool policy).
|
|
48
50
|
|
|
49
51
|
Plugin id is `inline` (for `plugins.entries.*`).
|
|
50
52
|
If you enable explicitly, use:
|
|
@@ -87,10 +89,49 @@ channels:
|
|
|
87
89
|
groupAllowFrom:
|
|
88
90
|
- "inline:123" # or "user:123" or just "123"
|
|
89
91
|
requireMention: true
|
|
92
|
+
replyToBotWithoutMention: true # if true, replies to bot messages can bypass mention requirement
|
|
93
|
+
|
|
94
|
+
# Inbound context history (used to build richer thread context for the agent):
|
|
95
|
+
historyLimit: 12 # group chats
|
|
96
|
+
dmHistoryLimit: 6 # direct messages
|
|
97
|
+
|
|
98
|
+
# Streaming + chunking:
|
|
99
|
+
blockStreaming: true
|
|
100
|
+
chunkMode: "newline" # length|newline
|
|
101
|
+
blockStreamingCoalesce:
|
|
102
|
+
minChars: 600
|
|
103
|
+
idleMs: 700
|
|
104
|
+
maxChars: 2200
|
|
105
|
+
|
|
106
|
+
# Group-level tool policy (for agent tool access in group sessions):
|
|
107
|
+
groups:
|
|
108
|
+
"88":
|
|
109
|
+
requireMention: false
|
|
110
|
+
tools:
|
|
111
|
+
allow: ["message", "web.search"]
|
|
112
|
+
toolsBySender:
|
|
113
|
+
"42":
|
|
114
|
+
allow: ["message"]
|
|
90
115
|
```
|
|
91
116
|
|
|
92
117
|
If you set `dmPolicy: "open"`, set `allowFrom: ["*"]`.
|
|
93
118
|
|
|
119
|
+
## Message Tool RPC Actions
|
|
120
|
+
|
|
121
|
+
The plugin exposes Inline RPC-backed actions through the OpenClaw `message` tool:
|
|
122
|
+
|
|
123
|
+
- `read` (read recent messages in a thread/chat)
|
|
124
|
+
- `search` (search messages in a thread/chat)
|
|
125
|
+
- `react` (add/remove a reaction on a message via `emoji`, `messageId`, optional `remove`)
|
|
126
|
+
- `reactions` (list reactions on a message by `messageId`)
|
|
127
|
+
- `edit` (edit a message by `messageId`)
|
|
128
|
+
- `channel-info` (fetch thread/chat metadata)
|
|
129
|
+
- `channel-edit` (rename thread/chat via `title`)
|
|
130
|
+
- `addParticipant` (add participant by `userId`)
|
|
131
|
+
- `member-info` (inspect participant/user info in a thread/chat)
|
|
132
|
+
|
|
133
|
+
These actions expect a numeric Inline chat id via `to`, `chatId`, or `channelId`.
|
|
134
|
+
|
|
94
135
|
Multi-account:
|
|
95
136
|
|
|
96
137
|
```yaml
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/inline/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,2BAA2B,EAGjC,MAAM,qBAAqB,CAAA;AAuM5B,eAAO,MAAM,oBAAoB,EAAE,2BAsTlC,CAAA"}
|
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
import { jsonResult, readReactionParams, readNumberParam, readStringParam, } 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 ACTIONS = [
|
|
6
|
+
"react",
|
|
7
|
+
"reactions",
|
|
8
|
+
"read",
|
|
9
|
+
"search",
|
|
10
|
+
"edit",
|
|
11
|
+
"channel-info",
|
|
12
|
+
"channel-edit",
|
|
13
|
+
"addParticipant",
|
|
14
|
+
"member-info",
|
|
15
|
+
];
|
|
16
|
+
function normalizeChatId(raw) {
|
|
17
|
+
const normalized = normalizeInlineTarget(raw) ?? raw.trim();
|
|
18
|
+
if (!/^[0-9]+$/.test(normalized)) {
|
|
19
|
+
throw new Error(`inline action: invalid chat target "${raw}" (expected numeric chat id)`);
|
|
20
|
+
}
|
|
21
|
+
return normalized;
|
|
22
|
+
}
|
|
23
|
+
function readFlexibleId(params, key) {
|
|
24
|
+
const direct = params[key];
|
|
25
|
+
if (typeof direct === "bigint")
|
|
26
|
+
return direct.toString();
|
|
27
|
+
if (typeof direct === "number") {
|
|
28
|
+
if (!Number.isFinite(direct) || !Number.isInteger(direct))
|
|
29
|
+
return undefined;
|
|
30
|
+
return String(direct);
|
|
31
|
+
}
|
|
32
|
+
if (typeof direct === "string") {
|
|
33
|
+
const trimmed = direct.trim();
|
|
34
|
+
return trimmed || undefined;
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
function parseInlineId(raw, label) {
|
|
39
|
+
if (typeof raw === "bigint")
|
|
40
|
+
return raw;
|
|
41
|
+
if (typeof raw === "number") {
|
|
42
|
+
if (!Number.isFinite(raw) || !Number.isInteger(raw)) {
|
|
43
|
+
throw new Error(`inline action: invalid ${label} "${String(raw)}"`);
|
|
44
|
+
}
|
|
45
|
+
return BigInt(raw);
|
|
46
|
+
}
|
|
47
|
+
if (typeof raw === "string") {
|
|
48
|
+
const trimmed = raw.trim();
|
|
49
|
+
if (!trimmed) {
|
|
50
|
+
throw new Error(`inline action: missing ${label}`);
|
|
51
|
+
}
|
|
52
|
+
if (!/^[0-9]+$/.test(trimmed)) {
|
|
53
|
+
throw new Error(`inline action: invalid ${label} "${raw}"`);
|
|
54
|
+
}
|
|
55
|
+
return BigInt(trimmed);
|
|
56
|
+
}
|
|
57
|
+
throw new Error(`inline action: missing ${label}`);
|
|
58
|
+
}
|
|
59
|
+
function parseOptionalInlineId(raw, label) {
|
|
60
|
+
if (raw == null)
|
|
61
|
+
return undefined;
|
|
62
|
+
return parseInlineId(raw, label);
|
|
63
|
+
}
|
|
64
|
+
function resolveChatIdFromParams(params) {
|
|
65
|
+
const raw = readFlexibleId(params, "chatId") ??
|
|
66
|
+
readFlexibleId(params, "channelId") ??
|
|
67
|
+
readFlexibleId(params, "to") ??
|
|
68
|
+
readStringParam(params, "to");
|
|
69
|
+
if (!raw) {
|
|
70
|
+
throw new Error("inline action requires chatId/channelId/to");
|
|
71
|
+
}
|
|
72
|
+
return BigInt(normalizeChatId(raw));
|
|
73
|
+
}
|
|
74
|
+
function buildChatPeer(chatId) {
|
|
75
|
+
return {
|
|
76
|
+
type: {
|
|
77
|
+
oneofKind: "chat",
|
|
78
|
+
chat: { chatId },
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function mapMessage(message) {
|
|
83
|
+
const reactions = (message.reactions?.reactions ?? []).map((reaction) => ({
|
|
84
|
+
emoji: reaction.emoji ?? "",
|
|
85
|
+
userId: String(reaction.userId),
|
|
86
|
+
messageId: String(reaction.messageId),
|
|
87
|
+
chatId: String(reaction.chatId),
|
|
88
|
+
date: Number(reaction.date) * 1000,
|
|
89
|
+
}));
|
|
90
|
+
return {
|
|
91
|
+
id: String(message.id),
|
|
92
|
+
fromId: String(message.fromId),
|
|
93
|
+
date: Number(message.date) * 1000,
|
|
94
|
+
text: message.message ?? "",
|
|
95
|
+
out: Boolean(message.out),
|
|
96
|
+
replyToId: message.replyToMsgId != null ? String(message.replyToMsgId) : undefined,
|
|
97
|
+
reactions,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async function loadMessageReactions(params) {
|
|
101
|
+
const result = await params.client.invokeRaw(Method.GET_CHAT_HISTORY, {
|
|
102
|
+
oneofKind: "getChatHistory",
|
|
103
|
+
getChatHistory: {
|
|
104
|
+
peerId: buildChatPeer(params.chatId),
|
|
105
|
+
offsetId: params.messageId + 1n,
|
|
106
|
+
limit: 8,
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
if (result.oneofKind !== "getChatHistory") {
|
|
110
|
+
throw new Error(`inline action: expected getChatHistory result, got ${String(result.oneofKind)}`);
|
|
111
|
+
}
|
|
112
|
+
const target = (result.getChatHistory.messages ?? []).find((message) => message.id === params.messageId) ?? null;
|
|
113
|
+
if (!target) {
|
|
114
|
+
return [];
|
|
115
|
+
}
|
|
116
|
+
const byEmoji = new Map();
|
|
117
|
+
for (const reaction of target.reactions?.reactions ?? []) {
|
|
118
|
+
const emoji = reaction.emoji ?? "";
|
|
119
|
+
if (!emoji)
|
|
120
|
+
continue;
|
|
121
|
+
const existing = byEmoji.get(emoji);
|
|
122
|
+
if (existing) {
|
|
123
|
+
existing.count += 1;
|
|
124
|
+
existing.userIds.push(String(reaction.userId));
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
byEmoji.set(emoji, {
|
|
128
|
+
emoji,
|
|
129
|
+
count: 1,
|
|
130
|
+
userIds: [String(reaction.userId)],
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return Array.from(byEmoji.values());
|
|
134
|
+
}
|
|
135
|
+
async function withInlineClient(params) {
|
|
136
|
+
const account = resolveInlineAccount({ cfg: params.cfg, accountId: params.accountId ?? null });
|
|
137
|
+
if (!account.configured || !account.baseUrl) {
|
|
138
|
+
throw new Error(`Inline not configured for account "${account.accountId}" (missing token or baseUrl)`);
|
|
139
|
+
}
|
|
140
|
+
const token = await resolveInlineToken(account);
|
|
141
|
+
const client = new InlineSdkClient({
|
|
142
|
+
baseUrl: account.baseUrl,
|
|
143
|
+
token,
|
|
144
|
+
});
|
|
145
|
+
await client.connect();
|
|
146
|
+
try {
|
|
147
|
+
return await params.fn(client);
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
await client.close().catch(() => { });
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
function toJsonSafe(value) {
|
|
154
|
+
if (typeof value === "bigint")
|
|
155
|
+
return value.toString();
|
|
156
|
+
if (Array.isArray(value))
|
|
157
|
+
return value.map((item) => toJsonSafe(item));
|
|
158
|
+
if (value && typeof value === "object") {
|
|
159
|
+
const out = {};
|
|
160
|
+
for (const [key, current] of Object.entries(value)) {
|
|
161
|
+
out[key] = toJsonSafe(current);
|
|
162
|
+
}
|
|
163
|
+
return out;
|
|
164
|
+
}
|
|
165
|
+
return value;
|
|
166
|
+
}
|
|
167
|
+
export const inlineMessageActions = {
|
|
168
|
+
listActions: ({ cfg }) => {
|
|
169
|
+
const account = resolveInlineAccount({ cfg, accountId: null });
|
|
170
|
+
if (!account.enabled || !account.configured)
|
|
171
|
+
return [];
|
|
172
|
+
return [...ACTIONS];
|
|
173
|
+
},
|
|
174
|
+
supportsAction: ({ action }) => ACTIONS.includes(action),
|
|
175
|
+
extractToolSend: ({ args }) => {
|
|
176
|
+
const action = typeof args.action === "string" ? args.action.trim() : "";
|
|
177
|
+
if (action !== "sendMessage")
|
|
178
|
+
return null;
|
|
179
|
+
const to = typeof args.to === "string" ? args.to.trim() : "";
|
|
180
|
+
if (!to)
|
|
181
|
+
return null;
|
|
182
|
+
const normalized = normalizeInlineTarget(to) ?? to;
|
|
183
|
+
if (!/^[0-9]+$/.test(normalized))
|
|
184
|
+
return null;
|
|
185
|
+
return { to: normalized };
|
|
186
|
+
},
|
|
187
|
+
handleAction: async ({ action, params, cfg, accountId }) => {
|
|
188
|
+
if (action === "react") {
|
|
189
|
+
return await withInlineClient({
|
|
190
|
+
cfg,
|
|
191
|
+
accountId,
|
|
192
|
+
fn: async (client) => {
|
|
193
|
+
const chatId = resolveChatIdFromParams(params);
|
|
194
|
+
const messageId = parseInlineId(readFlexibleId(params, "messageId") ?? readStringParam(params, "messageId", { required: true }), "messageId");
|
|
195
|
+
const { emoji, remove, isEmpty } = readReactionParams(params, {
|
|
196
|
+
removeErrorMessage: "Emoji is required to remove an Inline reaction.",
|
|
197
|
+
});
|
|
198
|
+
if (isEmpty) {
|
|
199
|
+
throw new Error("inline action: react requires emoji");
|
|
200
|
+
}
|
|
201
|
+
if (remove) {
|
|
202
|
+
const result = await client.invokeRaw(Method.DELETE_REACTION, {
|
|
203
|
+
oneofKind: "deleteReaction",
|
|
204
|
+
deleteReaction: {
|
|
205
|
+
emoji,
|
|
206
|
+
peerId: buildChatPeer(chatId),
|
|
207
|
+
messageId,
|
|
208
|
+
},
|
|
209
|
+
});
|
|
210
|
+
if (result.oneofKind !== "deleteReaction") {
|
|
211
|
+
throw new Error(`inline action: expected deleteReaction result, got ${String(result.oneofKind)}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
const result = await client.invokeRaw(Method.ADD_REACTION, {
|
|
216
|
+
oneofKind: "addReaction",
|
|
217
|
+
addReaction: {
|
|
218
|
+
emoji,
|
|
219
|
+
messageId,
|
|
220
|
+
peerId: buildChatPeer(chatId),
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
if (result.oneofKind !== "addReaction") {
|
|
224
|
+
throw new Error(`inline action: expected addReaction result, got ${String(result.oneofKind)}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return jsonResult({
|
|
228
|
+
ok: true,
|
|
229
|
+
chatId: String(chatId),
|
|
230
|
+
messageId: String(messageId),
|
|
231
|
+
emoji,
|
|
232
|
+
remove,
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
if (action === "reactions") {
|
|
238
|
+
return await withInlineClient({
|
|
239
|
+
cfg,
|
|
240
|
+
accountId,
|
|
241
|
+
fn: async (client) => {
|
|
242
|
+
const chatId = resolveChatIdFromParams(params);
|
|
243
|
+
const messageId = parseInlineId(readFlexibleId(params, "messageId") ?? readStringParam(params, "messageId", { required: true }), "messageId");
|
|
244
|
+
const reactions = await loadMessageReactions({
|
|
245
|
+
client,
|
|
246
|
+
chatId,
|
|
247
|
+
messageId,
|
|
248
|
+
});
|
|
249
|
+
return jsonResult({
|
|
250
|
+
ok: true,
|
|
251
|
+
chatId: String(chatId),
|
|
252
|
+
messageId: String(messageId),
|
|
253
|
+
reactions,
|
|
254
|
+
});
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
if (action === "read") {
|
|
259
|
+
return await withInlineClient({
|
|
260
|
+
cfg,
|
|
261
|
+
accountId,
|
|
262
|
+
fn: async (client) => {
|
|
263
|
+
const chatId = resolveChatIdFromParams(params);
|
|
264
|
+
const limit = Math.max(1, Math.min(100, readNumberParam(params, "limit", { integer: true }) ?? 20));
|
|
265
|
+
const offsetId = parseOptionalInlineId(readFlexibleId(params, "offsetId") ?? readFlexibleId(params, "before"), "offsetId");
|
|
266
|
+
const result = await client.invokeRaw(Method.GET_CHAT_HISTORY, {
|
|
267
|
+
oneofKind: "getChatHistory",
|
|
268
|
+
getChatHistory: {
|
|
269
|
+
peerId: buildChatPeer(chatId),
|
|
270
|
+
...(offsetId != null ? { offsetId } : {}),
|
|
271
|
+
limit,
|
|
272
|
+
},
|
|
273
|
+
});
|
|
274
|
+
if (result.oneofKind !== "getChatHistory") {
|
|
275
|
+
throw new Error(`inline action: expected getChatHistory result, got ${String(result.oneofKind)}`);
|
|
276
|
+
}
|
|
277
|
+
return jsonResult(toJsonSafe({
|
|
278
|
+
ok: true,
|
|
279
|
+
chatId: String(chatId),
|
|
280
|
+
messages: (result.getChatHistory.messages ?? []).map((message) => mapMessage(message)),
|
|
281
|
+
}));
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
if (action === "search") {
|
|
286
|
+
return await withInlineClient({
|
|
287
|
+
cfg,
|
|
288
|
+
accountId,
|
|
289
|
+
fn: async (client) => {
|
|
290
|
+
const chatId = resolveChatIdFromParams(params);
|
|
291
|
+
const query = readStringParam(params, "query") ??
|
|
292
|
+
readStringParam(params, "q") ??
|
|
293
|
+
readStringParam(params, "message", { required: true });
|
|
294
|
+
const limit = Math.max(1, Math.min(100, readNumberParam(params, "limit", { integer: true }) ?? 20));
|
|
295
|
+
const offsetId = parseOptionalInlineId(readFlexibleId(params, "offsetId"), "offsetId");
|
|
296
|
+
const result = await client.invokeRaw(Method.SEARCH_MESSAGES, {
|
|
297
|
+
oneofKind: "searchMessages",
|
|
298
|
+
searchMessages: {
|
|
299
|
+
peerId: buildChatPeer(chatId),
|
|
300
|
+
queries: [query],
|
|
301
|
+
limit,
|
|
302
|
+
...(offsetId != null ? { offsetId } : {}),
|
|
303
|
+
},
|
|
304
|
+
});
|
|
305
|
+
if (result.oneofKind !== "searchMessages") {
|
|
306
|
+
throw new Error(`inline action: expected searchMessages result, got ${String(result.oneofKind)}`);
|
|
307
|
+
}
|
|
308
|
+
return jsonResult(toJsonSafe({
|
|
309
|
+
ok: true,
|
|
310
|
+
chatId: String(chatId),
|
|
311
|
+
query,
|
|
312
|
+
messages: (result.searchMessages.messages ?? []).map((message) => mapMessage(message)),
|
|
313
|
+
}));
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
if (action === "edit") {
|
|
318
|
+
return await withInlineClient({
|
|
319
|
+
cfg,
|
|
320
|
+
accountId,
|
|
321
|
+
fn: async (client) => {
|
|
322
|
+
const chatId = resolveChatIdFromParams(params);
|
|
323
|
+
const messageId = parseInlineId(readFlexibleId(params, "messageId") ?? readStringParam(params, "messageId", { required: true }), "messageId");
|
|
324
|
+
const text = readStringParam(params, "message", { required: true, allowEmpty: true });
|
|
325
|
+
const result = await client.invokeRaw(Method.EDIT_MESSAGE, {
|
|
326
|
+
oneofKind: "editMessage",
|
|
327
|
+
editMessage: {
|
|
328
|
+
messageId,
|
|
329
|
+
peerId: buildChatPeer(chatId),
|
|
330
|
+
text,
|
|
331
|
+
},
|
|
332
|
+
});
|
|
333
|
+
if (result.oneofKind !== "editMessage") {
|
|
334
|
+
throw new Error(`inline action: expected editMessage result, got ${String(result.oneofKind)}`);
|
|
335
|
+
}
|
|
336
|
+
return jsonResult(toJsonSafe({ ok: true, chatId: String(chatId), messageId: String(messageId), text }));
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
if (action === "channel-info") {
|
|
341
|
+
return await withInlineClient({
|
|
342
|
+
cfg,
|
|
343
|
+
accountId,
|
|
344
|
+
fn: async (client) => {
|
|
345
|
+
const chatId = resolveChatIdFromParams(params);
|
|
346
|
+
const result = await client.invokeRaw(Method.GET_CHAT, {
|
|
347
|
+
oneofKind: "getChat",
|
|
348
|
+
getChat: { peerId: buildChatPeer(chatId) },
|
|
349
|
+
});
|
|
350
|
+
if (result.oneofKind !== "getChat") {
|
|
351
|
+
throw new Error(`inline action: expected getChat result, got ${String(result.oneofKind)}`);
|
|
352
|
+
}
|
|
353
|
+
return jsonResult(toJsonSafe({
|
|
354
|
+
ok: true,
|
|
355
|
+
chatId: String(chatId),
|
|
356
|
+
chat: result.getChat.chat ?? null,
|
|
357
|
+
dialog: result.getChat.dialog ?? null,
|
|
358
|
+
pinnedMessageIds: (result.getChat.pinnedMessageIds ?? []).map((id) => String(id)),
|
|
359
|
+
}));
|
|
360
|
+
},
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
if (action === "channel-edit") {
|
|
364
|
+
return await withInlineClient({
|
|
365
|
+
cfg,
|
|
366
|
+
accountId,
|
|
367
|
+
fn: async (client) => {
|
|
368
|
+
const chatId = resolveChatIdFromParams(params);
|
|
369
|
+
const title = readStringParam(params, "title") ??
|
|
370
|
+
readStringParam(params, "name") ??
|
|
371
|
+
readStringParam(params, "message", { required: true });
|
|
372
|
+
const result = await client.invokeRaw(Method.UPDATE_CHAT_INFO, {
|
|
373
|
+
oneofKind: "updateChatInfo",
|
|
374
|
+
updateChatInfo: {
|
|
375
|
+
chatId,
|
|
376
|
+
title,
|
|
377
|
+
},
|
|
378
|
+
});
|
|
379
|
+
if (result.oneofKind !== "updateChatInfo") {
|
|
380
|
+
throw new Error(`inline action: expected updateChatInfo result, got ${String(result.oneofKind)}`);
|
|
381
|
+
}
|
|
382
|
+
return jsonResult(toJsonSafe({
|
|
383
|
+
ok: true,
|
|
384
|
+
chatId: String(chatId),
|
|
385
|
+
title,
|
|
386
|
+
chat: result.updateChatInfo.chat ?? null,
|
|
387
|
+
}));
|
|
388
|
+
},
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
if (action === "addParticipant") {
|
|
392
|
+
return await withInlineClient({
|
|
393
|
+
cfg,
|
|
394
|
+
accountId,
|
|
395
|
+
fn: async (client) => {
|
|
396
|
+
const chatId = resolveChatIdFromParams(params);
|
|
397
|
+
const userId = parseInlineId(readFlexibleId(params, "userId") ??
|
|
398
|
+
readFlexibleId(params, "participant") ??
|
|
399
|
+
readFlexibleId(params, "memberId") ??
|
|
400
|
+
readStringParam(params, "userId", { required: true }), "userId");
|
|
401
|
+
const result = await client.invokeRaw(Method.ADD_CHAT_PARTICIPANT, {
|
|
402
|
+
oneofKind: "addChatParticipant",
|
|
403
|
+
addChatParticipant: {
|
|
404
|
+
chatId,
|
|
405
|
+
userId,
|
|
406
|
+
},
|
|
407
|
+
});
|
|
408
|
+
if (result.oneofKind !== "addChatParticipant") {
|
|
409
|
+
throw new Error(`inline action: expected addChatParticipant result, got ${String(result.oneofKind)}`);
|
|
410
|
+
}
|
|
411
|
+
return jsonResult(toJsonSafe({
|
|
412
|
+
ok: true,
|
|
413
|
+
chatId: String(chatId),
|
|
414
|
+
userId: String(userId),
|
|
415
|
+
participant: result.addChatParticipant.participant ?? null,
|
|
416
|
+
}));
|
|
417
|
+
},
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
if (action === "member-info") {
|
|
421
|
+
return await withInlineClient({
|
|
422
|
+
cfg,
|
|
423
|
+
accountId,
|
|
424
|
+
fn: async (client) => {
|
|
425
|
+
const chatId = resolveChatIdFromParams(params);
|
|
426
|
+
const userId = parseInlineId(readFlexibleId(params, "userId") ?? readStringParam(params, "userId", { required: true }), "userId");
|
|
427
|
+
const result = await client.invokeRaw(Method.GET_CHAT_PARTICIPANTS, {
|
|
428
|
+
oneofKind: "getChatParticipants",
|
|
429
|
+
getChatParticipants: { chatId },
|
|
430
|
+
});
|
|
431
|
+
if (result.oneofKind !== "getChatParticipants") {
|
|
432
|
+
throw new Error(`inline action: expected getChatParticipants result, got ${String(result.oneofKind)}`);
|
|
433
|
+
}
|
|
434
|
+
const user = (result.getChatParticipants.users ?? []).find((candidate) => candidate.id === userId) ?? null;
|
|
435
|
+
const participant = (result.getChatParticipants.participants ?? []).find((candidate) => candidate.userId === userId) ?? null;
|
|
436
|
+
return jsonResult(toJsonSafe({
|
|
437
|
+
ok: true,
|
|
438
|
+
chatId: String(chatId),
|
|
439
|
+
userId: String(userId),
|
|
440
|
+
user,
|
|
441
|
+
participant,
|
|
442
|
+
}));
|
|
443
|
+
},
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
throw new Error(`Action ${action} is not supported for provider inline.`);
|
|
447
|
+
},
|
|
448
|
+
};
|
|
449
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/inline/actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/inline/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/inline/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,aAAa,EAEnB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAKL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAA;AAkItB,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,qBAAqB,CA6NpE,CAAA"}
|
package/dist/inline/channel.js
CHANGED
|
@@ -4,6 +4,8 @@ import { InlineConfigSchema } from "./config-schema.js";
|
|
|
4
4
|
import { listInlineAccountIds, resolveDefaultInlineAccountId, resolveInlineAccount, resolveInlineToken, } from "./accounts.js";
|
|
5
5
|
import { looksLikeInlineTargetId, normalizeInlineTarget } from "./normalize.js";
|
|
6
6
|
import { monitorInlineProvider } from "./monitor.js";
|
|
7
|
+
import { resolveInlineGroupRequireMention, resolveInlineGroupToolPolicy } from "./policy.js";
|
|
8
|
+
import { inlineMessageActions } from "./actions.js";
|
|
7
9
|
import { getInlineRuntime } from "../runtime.js";
|
|
8
10
|
const activeMonitors = new Map();
|
|
9
11
|
const meta = {
|
|
@@ -118,11 +120,16 @@ export const inlineChannelPlugin = {
|
|
|
118
120
|
capabilities: {
|
|
119
121
|
chatTypes: ["direct", "group"],
|
|
120
122
|
media: false,
|
|
121
|
-
reactions:
|
|
123
|
+
reactions: true,
|
|
124
|
+
edit: true,
|
|
125
|
+
groupManagement: true,
|
|
122
126
|
threads: false,
|
|
123
127
|
nativeCommands: false,
|
|
124
128
|
blockStreaming: true,
|
|
125
129
|
},
|
|
130
|
+
streaming: {
|
|
131
|
+
blockStreamingCoalesceDefaults: { minChars: 1500, idleMs: 1000 },
|
|
132
|
+
},
|
|
126
133
|
reload: { configPrefixes: ["channels.inline"] },
|
|
127
134
|
configSchema: buildChannelConfigSchema(InlineConfigSchema),
|
|
128
135
|
config: {
|
|
@@ -168,6 +175,26 @@ export const inlineChannelPlugin = {
|
|
|
168
175
|
};
|
|
169
176
|
},
|
|
170
177
|
},
|
|
178
|
+
groups: {
|
|
179
|
+
resolveRequireMention: ({ cfg, accountId, groupId }) => {
|
|
180
|
+
const resolved = resolveInlineAccount({ cfg, accountId: accountId ?? null });
|
|
181
|
+
return resolveInlineGroupRequireMention({
|
|
182
|
+
cfg,
|
|
183
|
+
groupId,
|
|
184
|
+
accountId,
|
|
185
|
+
requireMentionDefault: resolved.config.requireMention ?? true,
|
|
186
|
+
});
|
|
187
|
+
},
|
|
188
|
+
resolveToolPolicy: ({ cfg, accountId, groupId, senderId, senderName, senderUsername, senderE164 }) => resolveInlineGroupToolPolicy({
|
|
189
|
+
cfg,
|
|
190
|
+
groupId,
|
|
191
|
+
accountId,
|
|
192
|
+
senderId,
|
|
193
|
+
senderName,
|
|
194
|
+
senderUsername,
|
|
195
|
+
senderE164,
|
|
196
|
+
}),
|
|
197
|
+
},
|
|
171
198
|
messaging: {
|
|
172
199
|
normalizeTarget: normalizeInlineTarget,
|
|
173
200
|
targetResolver: {
|
|
@@ -175,6 +202,7 @@ export const inlineChannelPlugin = {
|
|
|
175
202
|
hint: "<chatId>",
|
|
176
203
|
},
|
|
177
204
|
},
|
|
205
|
+
actions: inlineMessageActions,
|
|
178
206
|
outbound: {
|
|
179
207
|
deliveryMode: "direct",
|
|
180
208
|
chunker: (text, limit) => getInlineRuntime().channel.text.chunkMarkdownText(text, limit),
|