@inline-openclaw/inline 0.0.4 → 0.0.6
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 +32 -12
- package/dist/inline/accounts.d.ts.map +1 -1
- package/dist/inline/accounts.js +19 -7
- package/dist/inline/accounts.js.map +1 -1
- package/dist/inline/actions.d.ts +1 -0
- package/dist/inline/actions.d.ts.map +1 -1
- package/dist/inline/actions.js +644 -40
- package/dist/inline/actions.js.map +1 -1
- package/dist/inline/channel.d.ts.map +1 -1
- package/dist/inline/channel.js +421 -29
- package/dist/inline/channel.js.map +1 -1
- package/dist/inline/config-schema.d.ts +91 -0
- package/dist/inline/config-schema.d.ts.map +1 -1
- package/dist/inline/config-schema.js +16 -0
- package/dist/inline/config-schema.js.map +1 -1
- package/dist/inline/media.d.ts +9 -0
- package/dist/inline/media.d.ts.map +1 -0
- package/dist/inline/media.js +137 -0
- package/dist/inline/media.js.map +1 -0
- package/dist/inline/monitor.d.ts.map +1 -1
- package/dist/inline/monitor.js +193 -94
- package/dist/inline/monitor.js.map +1 -1
- package/dist/inline/policy.d.ts.map +1 -1
- package/dist/inline/policy.js +2 -3
- package/dist/inline/policy.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -12,6 +12,7 @@ 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
|
+
- Native media upload/send for images, videos, and documents from `mediaUrl` payloads.
|
|
15
16
|
- Emoji reactions via message tool actions (`react`, `reactions`).
|
|
16
17
|
- Reaction events on bot-authored messages are surfaced back to the agent as inbound context.
|
|
17
18
|
|
|
@@ -69,6 +70,7 @@ channels:
|
|
|
69
70
|
|
|
70
71
|
`baseUrl` defaults to `https://api.inline.chat`.
|
|
71
72
|
`dmPolicy` defaults to `pairing` (recommended starting point).
|
|
73
|
+
`requireMention` defaults to `false` for groups (set `true` to require explicit mentions).
|
|
72
74
|
|
|
73
75
|
Example:
|
|
74
76
|
|
|
@@ -88,7 +90,7 @@ channels:
|
|
|
88
90
|
groupPolicy: "allowlist" # allowlist|open|disabled
|
|
89
91
|
groupAllowFrom:
|
|
90
92
|
- "inline:123" # or "user:123" or just "123"
|
|
91
|
-
requireMention: true
|
|
93
|
+
requireMention: true # optional: default is false
|
|
92
94
|
replyToBotWithoutMention: true # if true, replies to bot messages can bypass mention requirement
|
|
93
95
|
|
|
94
96
|
# Inbound context history (used to build richer thread context for the agent):
|
|
@@ -96,6 +98,7 @@ channels:
|
|
|
96
98
|
dmHistoryLimit: 6 # direct messages
|
|
97
99
|
|
|
98
100
|
# Streaming + chunking:
|
|
101
|
+
mediaMaxMb: 20
|
|
99
102
|
blockStreaming: true
|
|
100
103
|
chunkMode: "newline" # length|newline
|
|
101
104
|
blockStreamingCoalesce:
|
|
@@ -118,19 +121,36 @@ If you set `dmPolicy: "open"`, set `allowFrom: ["*"]`.
|
|
|
118
121
|
|
|
119
122
|
## Message Tool RPC Actions
|
|
120
123
|
|
|
121
|
-
The plugin exposes Inline RPC-backed actions through
|
|
124
|
+
The plugin exposes Inline RPC-backed actions through OpenClaw's `message` tool.
|
|
125
|
+
All actions use a numeric Inline chat id via `to`, `chatId`, or `channelId`.
|
|
122
126
|
|
|
123
|
-
- `
|
|
124
|
-
- `
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
- `edit`
|
|
128
|
-
- `
|
|
129
|
-
-
|
|
130
|
-
- `
|
|
131
|
-
- `
|
|
127
|
+
- Replying: `reply`, `thread-reply`
|
|
128
|
+
- Reactions: `react`, `reactions`
|
|
129
|
+
- Reading/searching: `read`, `search`
|
|
130
|
+
- Editing: `edit`
|
|
131
|
+
- Channels/threads: `channel-info`, `channel-edit`, `channel-list`, `channel-create`, `channel-delete`, `channel-move`, `thread-list`, `thread-create`
|
|
132
|
+
- Participants: `addParticipant`, `removeParticipant`, `leaveGroup`, `member-info`
|
|
133
|
+
- Message lifecycle: `delete`, `unsend`
|
|
134
|
+
- Pins: `pin`, `unpin`, `list-pins`
|
|
135
|
+
- Space permissions: `permissions`
|
|
132
136
|
|
|
133
|
-
|
|
137
|
+
You can gate action groups from config:
|
|
138
|
+
|
|
139
|
+
```yaml
|
|
140
|
+
channels:
|
|
141
|
+
inline:
|
|
142
|
+
actions:
|
|
143
|
+
reply: true
|
|
144
|
+
reactions: true
|
|
145
|
+
read: true
|
|
146
|
+
search: true
|
|
147
|
+
edit: true
|
|
148
|
+
channels: true
|
|
149
|
+
participants: true
|
|
150
|
+
delete: true
|
|
151
|
+
pins: true
|
|
152
|
+
permissions: true
|
|
153
|
+
```
|
|
134
154
|
|
|
135
155
|
Multi-account:
|
|
136
156
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/inline/accounts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAG7D,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,mBAAmB,CAAA;CAC5B,CAAA;
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/inline/accounts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAG7D,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,EAAE,mBAAmB,CAAA;CAC5B,CAAA;AAiBD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,EAAE,CAelE;AAED,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAIzE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,GAAG,qBAAqB,CAqCxB;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWxF"}
|
package/dist/inline/accounts.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk";
|
|
1
|
+
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { InlineRuntimeConfigSchema } from "./config-schema.js";
|
|
4
4
|
const DEFAULT_BASE_URL = "https://api.inline.chat";
|
|
5
|
+
function normalizeInlineAccountId(raw) {
|
|
6
|
+
return normalizeAccountId(raw ?? DEFAULT_ACCOUNT_ID);
|
|
7
|
+
}
|
|
5
8
|
function readInlineConfig(cfg) {
|
|
6
9
|
const raw = (cfg.channels?.inline ?? {});
|
|
7
10
|
const result = InlineRuntimeConfigSchema.safeParse(raw);
|
|
@@ -14,17 +17,16 @@ export function listInlineAccountIds(cfg) {
|
|
|
14
17
|
const config = readInlineConfig(cfg);
|
|
15
18
|
const ids = new Set();
|
|
16
19
|
const hasBase = Boolean((config.token ?? "").trim() ||
|
|
17
|
-
(config.tokenFile ?? "").trim()
|
|
18
|
-
(config.baseUrl ?? "").trim());
|
|
20
|
+
(config.tokenFile ?? "").trim());
|
|
19
21
|
if (hasBase) {
|
|
20
22
|
ids.add(DEFAULT_ACCOUNT_ID);
|
|
21
23
|
}
|
|
22
24
|
for (const key of Object.keys(config.accounts ?? {})) {
|
|
23
|
-
const normalized = key
|
|
25
|
+
const normalized = normalizeInlineAccountId(key);
|
|
24
26
|
if (normalized)
|
|
25
27
|
ids.add(normalized);
|
|
26
28
|
}
|
|
27
|
-
return [...ids];
|
|
29
|
+
return [...ids].sort((a, b) => a.localeCompare(b));
|
|
28
30
|
}
|
|
29
31
|
export function resolveDefaultInlineAccountId(cfg) {
|
|
30
32
|
const ids = listInlineAccountIds(cfg);
|
|
@@ -34,8 +36,18 @@ export function resolveDefaultInlineAccountId(cfg) {
|
|
|
34
36
|
}
|
|
35
37
|
export function resolveInlineAccount(params) {
|
|
36
38
|
const config = readInlineConfig(params.cfg);
|
|
37
|
-
const requested =
|
|
38
|
-
|
|
39
|
+
const requested = params.accountId == null
|
|
40
|
+
? resolveDefaultInlineAccountId(params.cfg)
|
|
41
|
+
: normalizeInlineAccountId(params.accountId);
|
|
42
|
+
let accountOverride = null;
|
|
43
|
+
for (const [key, value] of Object.entries(config.accounts ?? {})) {
|
|
44
|
+
if (!value)
|
|
45
|
+
continue;
|
|
46
|
+
if (normalizeInlineAccountId(key) !== requested)
|
|
47
|
+
continue;
|
|
48
|
+
accountOverride = value;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
39
51
|
const { accounts: _accounts, ...base } = config;
|
|
40
52
|
const effective = accountOverride
|
|
41
53
|
? { ...base, ...accountOverride }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/inline/accounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/inline/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/inline/actions.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { type ChannelMessageActionAdapter } from "openclaw/plugin-sdk";
|
|
2
2
|
export declare const inlineMessageActions: ChannelMessageActionAdapter;
|
|
3
|
+
export declare const inlineSupportedActions: ("send" | "broadcast" | "poll" | "react" | "reactions" | "read" | "edit" | "unsend" | "reply" | "sendWithEffect" | "renameGroup" | "setGroupIcon" | "addParticipant" | "removeParticipant" | "leaveGroup" | "sendAttachment" | "delete" | "pin" | "unpin" | "list-pins" | "permissions" | "thread-create" | "thread-list" | "thread-reply" | "search" | "sticker" | "sticker-search" | "member-info" | "role-info" | "emoji-list" | "emoji-upload" | "sticker-upload" | "role-add" | "role-remove" | "channel-info" | "channel-list" | "channel-create" | "channel-edit" | "channel-delete" | "channel-move" | "category-create" | "category-edit" | "category-delete" | "voice-status" | "event-list" | "event-create" | "timeout" | "kick" | "ban" | "set-presence")[];
|
|
3
4
|
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/inline/actions.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../src/inline/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,2BAA2B,EAGjC,MAAM,qBAAqB,CAAA;AAoa5B,eAAO,MAAM,oBAAoB,EAAE,2BAs0BlC,CAAA;AAED,eAAO,MAAM,sBAAsB,0uBAAmB,CAAA"}
|