@inline-openclaw/inline 0.0.63 → 0.0.65

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
@@ -34,41 +34,53 @@ Reply-thread behavior:
34
34
 
35
35
  ## Install
36
36
 
37
- Requires OpenClaw `2026.6.11` or newer.
37
+ The current Inline plugin targets OpenClaw `2026.8.x` from `2026.8.2`. Install
38
+ the plugin version for your OpenClaw release line:
39
+
40
+ | OpenClaw line | Inline plugin | Exact install |
41
+ | --- | --- | --- |
42
+ | `2026.8.x` (`>=2026.8.2`) | `0.0.65` | `openclaw plugins install @inline-openclaw/inline --force --accept-capabilities` |
43
+ | `2026.7.x` (`>=2026.7.1`) | `0.0.63` | `openclaw plugins install @inline-openclaw/inline@0.0.63 --force` |
44
+ | `2026.6.x` (`>=2026.6.11`, including extended-stable `2026.6.34`) | `0.0.63` | `openclaw plugins install @inline-openclaw/inline@0.0.63 --force` |
45
+
46
+ `@latest` follows the newest supported OpenClaw line; it is not a compatibility
47
+ alias for older host APIs.
38
48
 
39
49
  ## Compatibility
40
50
 
41
51
  | Plugin version | OpenClaw host | Inline realtime SDK | Status | Notes |
42
52
  | --- | --- | --- | --- | --- |
43
- | `0.0.63` | `>=2026.6.11 || >=2026.7.1-0` | `0.0.16` | Current | Applies live-safe settings writes without restarting the Inline channel before it can answer. |
53
+ | `0.0.65` | `>=2026.8.2 <2026.9.0` | `0.0.17` | Current | Makes chat-triggered updates noninteractive by explicitly accepting the trusted Inline capability surface. |
54
+ | `0.0.64` | `>=2026.8.2 <2026.9.0` | `0.0.17` | Previous | Supports the stable 2026.8 plugin SDK and preserves DM/group reply-thread routing. |
55
+ | `0.0.63` | `>=2026.6.11 || >=2026.7.1-0` | `0.0.16` | Previous | Applies live-safe settings writes without restarting the Inline channel before it can answer. |
44
56
  | `0.0.62` | `>=2026.6.11 || >=2026.7.1-0` | `0.0.16` | Previous | Keeps the thread-only Following control out of direct-message agent settings, where the server does not support it. |
45
57
  | `0.0.61` | `>=2026.6.11 || >=2026.7.1-0` | `0.0.16` | Previous | Bounds model discovery through provider authentication so agent settings return a fallback instead of hanging indefinitely. |
46
58
  | `0.0.60` | `>=2026.6.11 || >=2026.7.1-0` | `0.0.16` | Previous | Uses the plugin index's supported force-install path for exact updates on current OpenClaw hosts. |
47
- | `0.0.59` | `>=2026.6.11 || >=2026.7.1-0` | `0.0.16` | Previous | Adds mentionable Agent specialization, exact Agent activation, and fail-closed bot-message provenance. |
48
- | `0.0.57` | `>=2026.6.11 || >=2026.7.1-0` | `0.0.14` | Previous | Hardens exact CLI-managed upgrades, deterministic channel listing, default/help consistency, and packed-artifact validation. |
49
59
 
50
60
  From npm:
51
61
 
52
62
  ```sh
53
- openclaw plugins install @inline-openclaw/inline
63
+ openclaw plugins install @inline-openclaw/inline --force --accept-capabilities
54
64
  ```
55
65
 
56
66
  If the plugin is already installed, update in place:
57
67
 
58
68
  ```sh
59
- openclaw plugins install --force @inline-openclaw/inline@latest
69
+ openclaw plugins update inline --accept-capabilities
60
70
  openclaw gateway restart
61
71
  openclaw plugins list
62
- openclaw channels status
72
+ openclaw plugins inspect inline --json
73
+ openclaw channels status --channel inline --probe --json
63
74
  openclaw message send --channel inline --target chat:123 --message "Inline smoke test" --dry-run
64
75
  ```
65
76
 
66
77
  After initial installation, an OpenClaw owner can run `/inline_update` from
67
- Inline. The command delegates to OpenClaw's tracked-plugin updater, strips
68
- credential variables from the updater process, and asks for `/restart` after a
69
- successful update. Other authorized chat members cannot update host plugins.
78
+ Inline. The command delegates to OpenClaw's tracked-plugin updater with explicit
79
+ capability consent, strips credential variables from the updater process, and
80
+ asks for `/restart` after OpenClaw reports a successful update. Other authorized
81
+ chat members cannot update host plugins.
70
82
 
71
- After updating, verify that `openclaw plugins list` shows `inline`, `openclaw channels status` reports Inline configured/running, and `openclaw plugins inspect inline --json` reports the expected package version.
83
+ After updating, verify that `openclaw plugins list` shows `inline`, `openclaw channels status --channel inline --probe --json` reports Inline configured/running, and `openclaw plugins inspect inline --json` reports the expected package version.
72
84
 
73
85
  From a local checkout (dev):
74
86
 
@@ -76,7 +88,7 @@ From a local checkout (dev):
76
88
  cd /path/to/inline/openclaw
77
89
  bun run build
78
90
  npm pack --ignore-scripts --pack-destination /tmp
79
- openclaw plugins install --force npm-pack:/tmp/inline-openclaw-inline-<version>.tgz
91
+ openclaw plugins install npm-pack:/tmp/inline-openclaw-inline-<version>.tgz --force --accept-capabilities
80
92
  ```
81
93
 
82
94
  ## Configure
@@ -270,6 +282,7 @@ Inline reply-thread semantics:
270
282
  - Agent-authored callback buttons use `agent:` action IDs. A press is acknowledged immediately and becomes a normal agent turn with the actor, chat, source message, interaction, action ID, and callback data. The normal response edits the source message; omitted buttons clear its old buttons and returned buttons replace them. Adapter-owned command, approval, thread, and model controls use `system:` IDs and keep their deterministic handlers.
271
283
  - `thread-reply` expects `threadId` to be the child reply-thread chat id, while `to` stays the parent chat id.
272
284
  - If `threadId` is missing, `thread-reply` can use the current reply-thread context or a saved route from `thread-create` when called with the parent chat target plus `parentMessageId`.
285
+ - Ordinary `send`, `reply`, and attachment actions inherit the current child when they target its parent; an unrelated explicit destination remains unrelated. Current supported OpenClaw hosts cannot validate and mirror an explicit child-to-parent escape reliably, so Inline rejects those flags when they request that ambiguous parent escape. Explicit unrelated destinations and explicit child targets remain supported.
273
286
  - `thread-create` creates a top-level Inline thread when called without a parent target. Use `participant`/`participants` for a private thread, or `spaceId` with `isPublic: true` for a public space thread. If `spaceId` is present and no participants are supplied, Inline defaults `thread-create` to a public space thread.
274
287
  - `thread-create` creates a real reply thread from a parent chat when `to`/`chatId`/`channelId` is supplied, or when an explicit `replyToId`/`messageId` anchor can be paired with the current channel context.
275
288
  - `forward`/`forwardMessages` forwards one or more source `messageId`/`messageIds` to a destination `to`/`chatId`/`userId`. The source can be `from`/`source`/`fromChatId`/`fromUserId`; when omitted in an Inline conversation, it defaults to the current chat.
@@ -277,8 +290,16 @@ Inline reply-thread semantics:
277
290
  - `pin`/`unpin` use `messageId` and default to the current Inline chat/thread when no target is passed; `list-pins` also defaults to the current chat/thread.
278
291
  - `invite-to-space` invites one user per call into a space using `userId`/`user`/`participant`, `email`, or `phoneNumber`; pass `role: "admin"` for admin invites or omit it for a member invite.
279
292
  - In `replyThreadMode: "auto"`, explicit user requests such as "reply in a thread" create and answer in a child reply thread automatically; the `thread-create` and `thread-reply` message-tool actions remain available for manual tool use.
280
- - Automatic thread creation falls back to parent-chat delivery if the reply thread cannot be created.
281
- - Existing route state is reused only for the same parent-message anchor. New parent-chat messages get separate reply threads; messages already inside a reply thread stay in that thread and do not create nested threads.
293
+ - Parent typing stops before reply-thread handoff; subsequent typing, presence, and answers stay in the child. If required creation cannot be confirmed, Inline reports a short error in the parent without generating the answer there.
294
+ - Reply threads can be created from both DM and group parent chats. A first-level DM child keeps direct-message access policy and no-mention behavior even though Inline encodes the child as a chat. Session isolation follows OpenClaw’s `session.dmScope`; use `per-channel-peer` for separate sender transcripts. The host default `main` shares DM transcripts and is unsuitable when an untrusted participant can join a DM child.
295
+ - A message tool that creates a reply thread during a response moves subsequent visible typing, presence, and delivery to that child. The OpenClaw run and transcript keep the session in which the turn started; the next child message opens the child session. The adapter leaves final suppression to OpenClaw and does not discard a final merely because a tool sent something. Host dedupe varies by action, text, route, and streaming path; identical tool/final output can still repeat, and host streaming suppression can hide distinct text. No OpenClaw internals are patched. Any commentary already sent before creation remains in the parent.
296
+ - Saved thread routes are scoped to the parent message. A missing current-message route never selects an unrelated active thread, and an agent without its own active route cannot inherit another agent's route.
297
+ - Anchored creation reuses the server's existing child only for the same parent-message anchor. Inside a child, unanchored creation reuses that child; an explicit child-local anchor can create a nested Inline reply thread. Nested creation is a durable destination operation and does not move the current generated turn, so send nested content with `thread-reply` using the returned child id. This adapter only guarantees root-DM policy/session projection for first-level DM reply children; nested DM children remain an explicit advanced path.
298
+ - A repeated unanchored `thread-create` that still targets the stale parent during the same live handoff also reuses that handoff's child.
299
+ - During parent-to-child handoff, the exact source parent reply reference is stripped from stale-parent/implicit sends. Other references explicitly targeting the parent are rejected. Omitted destinations inherit the child, and explicitly targeted child-local numeric IDs are preserved even if they equal the parent's source ID. Numeric IDs alone cannot prove which chat an arbitrary reference came from.
300
+ - A mentioned Inline Agent specialization is retained with the saved reply-thread route, so later child follow-ups normally do not require another Agent mention. If local route state expires or is lost, mention the Agent again.
301
+ - Parent DM history is omitted for participants added only to its child. `inline_parent_context` also validates the trusted Inline requester against the actual parent DM peer, including explicit parent overrides. Group history and non-Inline operator tool access keep their existing bot-token access contract.
302
+ - Per-DM reply mode and parent-history limits are honored. The existing `/threadreply` command is group-only; configure DMs through Agent Settings or config.
282
303
  - Inline current-message media is attached like native channels. Reply-thread anchor media is summarized as context and is not promoted to current-message media on every child-thread turn.
283
304
 
284
305
  You can gate action groups from config:
@@ -14404,6 +14404,13 @@ function resolveControlCommandGate(params) {
14404
14404
  shouldBlock: params.allowTextCommands && params.hasControlCommand && !commandAuthorized
14405
14405
  };
14406
14406
  }
14407
+ function resolveUseAccessGroups(cfg) {
14408
+ const commands = cfg.commands;
14409
+ if (!commands || typeof commands !== "object" || Array.isArray(commands)) {
14410
+ return true;
14411
+ }
14412
+ return commands.useAccessGroups !== false;
14413
+ }
14407
14414
  function resolveMentionGatingWithBypass(params) {
14408
14415
  const shouldBypassMention = params.isGroup && params.requireMention && !params.wasMentioned && !(params.hasAnyMention ?? false) && params.allowTextCommands && params.commandAuthorized && params.hasControlCommand;
14409
14416
  const effectiveWasMentioned = params.wasMentioned || params.implicitMention === true || shouldBypassMention;
@@ -15026,5 +15033,5 @@ export {
15026
15033
  inspectInlineReadOnlyAccount
15027
15034
  };
15028
15035
 
15029
- //# debugId=EB875D24E1B044C264756E2164756E21
15036
+ //# debugId=ABA852CEA796C68F64756E2164756E21
15030
15037
  //# sourceMappingURL=account-inspect-api.js.map