@inline-openclaw/inline 0.0.65 → 0.0.67
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 +15 -7
- package/dist/approval-handler.runtime.js +44 -5
- package/dist/approval-handler.runtime.js.map +3 -3
- package/dist/channel-plugin-api.js +110 -29
- package/dist/channel-plugin-api.js.map +8 -7
- package/dist/runtime-register-api.js +238 -11
- package/dist/runtime-register-api.js.map +9 -6
- package/docs/openclaw-setup.md +1 -1
- package/openclaw.plugin.json +0 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ the plugin version for your OpenClaw release line:
|
|
|
39
39
|
|
|
40
40
|
| OpenClaw line | Inline plugin | Exact install |
|
|
41
41
|
| --- | --- | --- |
|
|
42
|
-
| `2026.8.x` (`>=2026.8.2`) | `0.0.
|
|
42
|
+
| `2026.8.x` (`>=2026.8.2`) | `0.0.67` | `openclaw plugins install @inline-openclaw/inline --force --accept-capabilities` |
|
|
43
43
|
| `2026.7.x` (`>=2026.7.1`) | `0.0.63` | `openclaw plugins install @inline-openclaw/inline@0.0.63 --force` |
|
|
44
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
45
|
|
|
@@ -50,12 +50,12 @@ alias for older host APIs.
|
|
|
50
50
|
|
|
51
51
|
| Plugin version | OpenClaw host | Inline realtime SDK | Status | Notes |
|
|
52
52
|
| --- | --- | --- | --- | --- |
|
|
53
|
-
| `0.0.
|
|
53
|
+
| `0.0.67` | `>=2026.8.2 <2026.9.0` | `0.0.17` | Current | Keeps the manifest compatible with ClawHub's metadata transport without changing the channel schema. |
|
|
54
|
+
| `0.0.66` | `>=2026.8.2 <2026.9.0` | `0.0.17` | Previous | Bounds direct account probes so SDK cleanup completes before the host deadline. |
|
|
55
|
+
| `0.0.65` | `>=2026.8.2 <2026.9.0` | `0.0.17` | Previous | Makes chat-triggered updates noninteractive by explicitly accepting the trusted Inline capability surface. |
|
|
54
56
|
| `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
57
|
| `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. |
|
|
56
58
|
| `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. |
|
|
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. |
|
|
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. |
|
|
59
59
|
|
|
60
60
|
From npm:
|
|
61
61
|
|
|
@@ -80,6 +80,14 @@ capability consent, strips credential variables from the updater process, and
|
|
|
80
80
|
asks for `/restart` after OpenClaw reports a successful update. Other authorized
|
|
81
81
|
chat members cannot update host plugins.
|
|
82
82
|
|
|
83
|
+
Installed skills are published to Inline for Skilled Agent selection on gateway
|
|
84
|
+
start and whenever OpenClaw emits `skill_changed`. Any authorized bot user can
|
|
85
|
+
run `/inline_sync` to force an immediate command-and-skill catalog republish,
|
|
86
|
+
then open or reopen Inline's Skilled Agent editor to load it. `/inline_version`
|
|
87
|
+
shows the loaded plugin/OpenClaw versions, safe install source and timestamps
|
|
88
|
+
when OpenClaw provides them, and the last in-process catalog-sync result. These
|
|
89
|
+
commands never print tokens, paths, package specs, or raw configuration.
|
|
90
|
+
|
|
83
91
|
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.
|
|
84
92
|
|
|
85
93
|
From a local checkout (dev):
|
|
@@ -363,12 +371,12 @@ The plugin also registers `inline_bot_commands` for Inline bot command managemen
|
|
|
363
371
|
|
|
364
372
|
Bot command sync:
|
|
365
373
|
|
|
366
|
-
- On `gateway_start
|
|
374
|
+
- On `gateway_start` and OpenClaw's `skill_changed` event, the plugin republishes bot commands and installed skills for each enabled/configured Inline account.
|
|
367
375
|
- Default commands include the same user-facing command set as bundled chat providers (for example: `/status`, `/model`, `/exec`, `/usage`, etc.).
|
|
368
|
-
- Inline also registers `/threadreply` to manage this group's reply-thread mode, `/follow` and `/unfollow` for explicit dialog relevance, and owner-only `/inline_update` for tracked plugin updates.
|
|
376
|
+
- Inline also registers `/threadreply` to manage this group's reply-thread mode, `/follow` and `/unfollow` for explicit dialog relevance, `/inline_sync` for a manual catalog refresh, `/inline_version` for safe runtime/install information, and owner-only `/inline_update` for tracked plugin updates.
|
|
369
377
|
- Inline accepts `/command@botusername` when the suffix matches the active bot and ignores commands targeted at another bot, including in followed threads.
|
|
370
378
|
- The plugin uses OpenClaw's command, skill command, and plugin command registries when available.
|
|
371
|
-
- Inline-owned `/follow`, `/unfollow`, `/threadreply`, and `/
|
|
379
|
+
- Inline-owned `/follow`, `/unfollow`, `/threadreply`, `/inline_update`, `/inline_sync`, and `/inline_version` entries are preserved when a larger host command set is truncated to the Bot API's 100-command limit or retried after `BOT_COMMANDS_TOO_MUCH`; catalog sync logs how many entries were omitted.
|
|
372
380
|
- Disable startup sync globally with `commands.native: false`, or per-channel with `channels.inline.commands.native: false`. Disabled startup sync clears existing Inline bot commands for the affected account.
|
|
373
381
|
- Disable skill command inclusion with `commands.nativeSkills: false`, or per-channel with `channels.inline.commands.nativeSkills: false`.
|
|
374
382
|
|
|
@@ -5632,6 +5632,20 @@ var BlockDisclosure_Kind;
|
|
|
5632
5632
|
BlockDisclosure_Kind2[BlockDisclosure_Kind2["DEFAULT"] = 0] = "DEFAULT";
|
|
5633
5633
|
BlockDisclosure_Kind2[BlockDisclosure_Kind2["PROGRESS"] = 1] = "PROGRESS";
|
|
5634
5634
|
})(BlockDisclosure_Kind || (BlockDisclosure_Kind = {}));
|
|
5635
|
+
var BlockDisclosure_ActivityKind;
|
|
5636
|
+
(function(BlockDisclosure_ActivityKind2) {
|
|
5637
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
5638
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["REASONING"] = 1] = "REASONING";
|
|
5639
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["EXPLORE"] = 2] = "EXPLORE";
|
|
5640
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["READ"] = 3] = "READ";
|
|
5641
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["SEARCH"] = 4] = "SEARCH";
|
|
5642
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["EDIT"] = 5] = "EDIT";
|
|
5643
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["DELETE"] = 6] = "DELETE";
|
|
5644
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["MOVE"] = 7] = "MOVE";
|
|
5645
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["COMMAND"] = 8] = "COMMAND";
|
|
5646
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["WEB"] = 9] = "WEB";
|
|
5647
|
+
BlockDisclosure_ActivityKind2[BlockDisclosure_ActivityKind2["TOOL"] = 10] = "TOOL";
|
|
5648
|
+
})(BlockDisclosure_ActivityKind || (BlockDisclosure_ActivityKind = {}));
|
|
5635
5649
|
var BlockTable_Alignment;
|
|
5636
5650
|
(function(BlockTable_Alignment2) {
|
|
5637
5651
|
BlockTable_Alignment2[BlockTable_Alignment2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
@@ -9551,13 +9565,15 @@ class BlockDisclosure$Type extends import_runtime4.MessageType {
|
|
|
9551
9565
|
{ no: 2, name: "kind", kind: "enum", T: () => ["BlockDisclosure.Kind", BlockDisclosure_Kind, "KIND_"] },
|
|
9552
9566
|
{ no: 3, name: "initially_open", kind: "scalar", opt: true, T: 8 },
|
|
9553
9567
|
{ no: 4, name: "children", kind: "message", repeat: 1, T: () => Block },
|
|
9554
|
-
{ no: 5, name: "is_rtl", kind: "scalar", opt: true, T: 8 }
|
|
9568
|
+
{ no: 5, name: "is_rtl", kind: "scalar", opt: true, T: 8 },
|
|
9569
|
+
{ no: 6, name: "activity_kind", kind: "enum", T: () => ["BlockDisclosure.ActivityKind", BlockDisclosure_ActivityKind, "ACTIVITY_KIND_"] }
|
|
9555
9570
|
]);
|
|
9556
9571
|
}
|
|
9557
9572
|
create(value) {
|
|
9558
9573
|
const message = globalThis.Object.create(this.messagePrototype);
|
|
9559
9574
|
message.kind = 0;
|
|
9560
9575
|
message.children = [];
|
|
9576
|
+
message.activityKind = 0;
|
|
9561
9577
|
if (value !== undefined)
|
|
9562
9578
|
import_runtime3.reflectionMergePartial(this, message, value);
|
|
9563
9579
|
return message;
|
|
@@ -9582,6 +9598,9 @@ class BlockDisclosure$Type extends import_runtime4.MessageType {
|
|
|
9582
9598
|
case 5:
|
|
9583
9599
|
message.isRtl = reader.bool();
|
|
9584
9600
|
break;
|
|
9601
|
+
case 6:
|
|
9602
|
+
message.activityKind = reader.int32();
|
|
9603
|
+
break;
|
|
9585
9604
|
default:
|
|
9586
9605
|
let u = options.readUnknownField;
|
|
9587
9606
|
if (u === "throw")
|
|
@@ -9604,6 +9623,8 @@ class BlockDisclosure$Type extends import_runtime4.MessageType {
|
|
|
9604
9623
|
Block.internalBinaryWrite(message.children[i], writer.tag(4, import_runtime.WireType.LengthDelimited).fork(), options).join();
|
|
9605
9624
|
if (message.isRtl !== undefined)
|
|
9606
9625
|
writer.tag(5, import_runtime.WireType.Varint).bool(message.isRtl);
|
|
9626
|
+
if (message.activityKind !== 0)
|
|
9627
|
+
writer.tag(6, import_runtime.WireType.Varint).int32(message.activityKind);
|
|
9607
9628
|
let u = options.writeUnknownFields;
|
|
9608
9629
|
if (u !== false)
|
|
9609
9630
|
(u == true ? import_runtime2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
@@ -33870,7 +33891,8 @@ class AgentProjectCatalog$Type extends import_runtime4.MessageType {
|
|
|
33870
33891
|
constructor() {
|
|
33871
33892
|
super("AgentProjectCatalog", [
|
|
33872
33893
|
{ no: 1, name: "options", kind: "message", repeat: 1, T: () => AgentProjectOption },
|
|
33873
|
-
{ no: 2, name: "can_select_folder", kind: "scalar", opt: true, T: 8 }
|
|
33894
|
+
{ no: 2, name: "can_select_folder", kind: "scalar", opt: true, T: 8 },
|
|
33895
|
+
{ no: 3, name: "default_project_id", kind: "scalar", opt: true, T: 9 }
|
|
33874
33896
|
]);
|
|
33875
33897
|
}
|
|
33876
33898
|
create(value) {
|
|
@@ -33891,6 +33913,9 @@ class AgentProjectCatalog$Type extends import_runtime4.MessageType {
|
|
|
33891
33913
|
case 2:
|
|
33892
33914
|
message.canSelectFolder = reader.bool();
|
|
33893
33915
|
break;
|
|
33916
|
+
case 3:
|
|
33917
|
+
message.defaultProjectId = reader.string();
|
|
33918
|
+
break;
|
|
33894
33919
|
default:
|
|
33895
33920
|
let u = options.readUnknownField;
|
|
33896
33921
|
if (u === "throw")
|
|
@@ -33907,6 +33932,8 @@ class AgentProjectCatalog$Type extends import_runtime4.MessageType {
|
|
|
33907
33932
|
AgentProjectOption.internalBinaryWrite(message.options[i], writer.tag(1, import_runtime.WireType.LengthDelimited).fork(), options).join();
|
|
33908
33933
|
if (message.canSelectFolder !== undefined)
|
|
33909
33934
|
writer.tag(2, import_runtime.WireType.Varint).bool(message.canSelectFolder);
|
|
33935
|
+
if (message.defaultProjectId !== undefined)
|
|
33936
|
+
writer.tag(3, import_runtime.WireType.LengthDelimited).string(message.defaultProjectId);
|
|
33910
33937
|
let u = options.writeUnknownFields;
|
|
33911
33938
|
if (u !== false)
|
|
33912
33939
|
(u == true ? import_runtime2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
@@ -34020,7 +34047,8 @@ class AgentModelOption$Type extends import_runtime4.MessageType {
|
|
|
34020
34047
|
{ no: 1, name: "id", kind: "scalar", T: 9 },
|
|
34021
34048
|
{ no: 2, name: "label", kind: "scalar", T: 9 },
|
|
34022
34049
|
{ no: 3, name: "description", kind: "scalar", opt: true, T: 9 },
|
|
34023
|
-
{ no: 4, name: "reasoning_effort_ids", kind: "scalar", repeat: 2, T: 9 }
|
|
34050
|
+
{ no: 4, name: "reasoning_effort_ids", kind: "scalar", repeat: 2, T: 9 },
|
|
34051
|
+
{ no: 5, name: "default_reasoning_effort_id", kind: "scalar", opt: true, T: 9 }
|
|
34024
34052
|
]);
|
|
34025
34053
|
}
|
|
34026
34054
|
create(value) {
|
|
@@ -34049,6 +34077,9 @@ class AgentModelOption$Type extends import_runtime4.MessageType {
|
|
|
34049
34077
|
case 4:
|
|
34050
34078
|
message.reasoningEffortIds.push(reader.string());
|
|
34051
34079
|
break;
|
|
34080
|
+
case 5:
|
|
34081
|
+
message.defaultReasoningEffortId = reader.string();
|
|
34082
|
+
break;
|
|
34052
34083
|
default:
|
|
34053
34084
|
let u = options.readUnknownField;
|
|
34054
34085
|
if (u === "throw")
|
|
@@ -34069,6 +34100,8 @@ class AgentModelOption$Type extends import_runtime4.MessageType {
|
|
|
34069
34100
|
writer.tag(3, import_runtime.WireType.LengthDelimited).string(message.description);
|
|
34070
34101
|
for (let i = 0;i < message.reasoningEffortIds.length; i++)
|
|
34071
34102
|
writer.tag(4, import_runtime.WireType.LengthDelimited).string(message.reasoningEffortIds[i]);
|
|
34103
|
+
if (message.defaultReasoningEffortId !== undefined)
|
|
34104
|
+
writer.tag(5, import_runtime.WireType.LengthDelimited).string(message.defaultReasoningEffortId);
|
|
34072
34105
|
let u = options.writeUnknownFields;
|
|
34073
34106
|
if (u !== false)
|
|
34074
34107
|
(u == true ? import_runtime2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
@@ -34080,7 +34113,8 @@ var AgentModelOption = new AgentModelOption$Type;
|
|
|
34080
34113
|
class AgentModelCatalog$Type extends import_runtime4.MessageType {
|
|
34081
34114
|
constructor() {
|
|
34082
34115
|
super("AgentModelCatalog", [
|
|
34083
|
-
{ no: 1, name: "options", kind: "message", repeat: 1, T: () => AgentModelOption }
|
|
34116
|
+
{ no: 1, name: "options", kind: "message", repeat: 1, T: () => AgentModelOption },
|
|
34117
|
+
{ no: 2, name: "default_model_id", kind: "scalar", opt: true, T: 9 }
|
|
34084
34118
|
]);
|
|
34085
34119
|
}
|
|
34086
34120
|
create(value) {
|
|
@@ -34098,6 +34132,9 @@ class AgentModelCatalog$Type extends import_runtime4.MessageType {
|
|
|
34098
34132
|
case 1:
|
|
34099
34133
|
message.options.push(AgentModelOption.internalBinaryRead(reader, reader.uint32(), options));
|
|
34100
34134
|
break;
|
|
34135
|
+
case 2:
|
|
34136
|
+
message.defaultModelId = reader.string();
|
|
34137
|
+
break;
|
|
34101
34138
|
default:
|
|
34102
34139
|
let u = options.readUnknownField;
|
|
34103
34140
|
if (u === "throw")
|
|
@@ -34112,6 +34149,8 @@ class AgentModelCatalog$Type extends import_runtime4.MessageType {
|
|
|
34112
34149
|
internalBinaryWrite(message, writer, options) {
|
|
34113
34150
|
for (let i = 0;i < message.options.length; i++)
|
|
34114
34151
|
AgentModelOption.internalBinaryWrite(message.options[i], writer.tag(1, import_runtime.WireType.LengthDelimited).fork(), options).join();
|
|
34152
|
+
if (message.defaultModelId !== undefined)
|
|
34153
|
+
writer.tag(2, import_runtime.WireType.LengthDelimited).string(message.defaultModelId);
|
|
34115
34154
|
let u = options.writeUnknownFields;
|
|
34116
34155
|
if (u !== false)
|
|
34117
34156
|
(u == true ? import_runtime2.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
@@ -69212,5 +69251,5 @@ export {
|
|
|
69212
69251
|
inlineApprovalNativeRuntime
|
|
69213
69252
|
};
|
|
69214
69253
|
|
|
69215
|
-
//# debugId=
|
|
69254
|
+
//# debugId=1D806320E6C7C86164756E2164756E21
|
|
69216
69255
|
//# sourceMappingURL=approval-handler.runtime.js.map
|