@inline-chat/hermes-agent-adapter 1.1.0 → 1.2.0
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 +57 -11
- package/package.json +6 -6
- package/plugin/inline/adapter.py +746 -6
- package/plugin/inline/cli.py +1 -1
- package/plugin/inline/plugin.yaml +8 -1
- package/plugin/inline/sidecar/index.mjs +1844 -23
package/README.md
CHANGED
|
@@ -41,6 +41,7 @@ Supported:
|
|
|
41
41
|
- Reactions on bot messages, plus opt-in lifecycle/system events as synthetic Hermes messages.
|
|
42
42
|
- Cron or standalone sends through `INLINE_HOME_CHANNEL` and `hermes send --to inline:<chat-id>`.
|
|
43
43
|
- Hermes-native `typing_indicator` and `gateway_restart_notification` toggles, with plugin-owned YAML bridge coverage for external-plugin compatibility.
|
|
44
|
+
- Detailed and Friendly output (the bot's Output setting in Inline; see Output below): a live, collapsible progress message for each turn, or short updates instead.
|
|
44
45
|
|
|
45
46
|
Unsupported or intentionally limited:
|
|
46
47
|
|
|
@@ -51,6 +52,19 @@ Unsupported or intentionally limited:
|
|
|
51
52
|
- Ephemeral in-channel private replies. Private notices are sent as DMs when a user id is available.
|
|
52
53
|
- Live voice sessions or calls. Voice file messages are supported, but realtime audio is not.
|
|
53
54
|
- Media without a usable Inline CDN/local URL. Those messages still produce text summaries, but Hermes may not receive a local file path.
|
|
55
|
+
- Progress for turns Hermes starts on its own. Scheduled (cron) turns and late background sub-agent results post only their answer.
|
|
56
|
+
|
|
57
|
+
## Release 1.2.0
|
|
58
|
+
|
|
59
|
+
Work shows in two output modes, Detailed and Friendly, chosen per chat in
|
|
60
|
+
Inline's agent settings; Detailed no longer repeats the still-working notice.
|
|
61
|
+
The plugin manifest declares its activity hooks, and the bundled sidecar speaks
|
|
62
|
+
the focus status protocol. Tested on Hermes `0.23.0`.
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
npm install -g @inline-chat/hermes-agent-adapter@1.2.0
|
|
66
|
+
inline-hermes install --force
|
|
67
|
+
```
|
|
54
68
|
|
|
55
69
|
## Release 1.1.0
|
|
56
70
|
|
|
@@ -226,10 +240,10 @@ mismatch, rerun the same command after rebuilding or upgrading the package.
|
|
|
226
240
|
- Node.js: `>=20` is required for the bundled sidecar. Hermes-managed Node 22,
|
|
227
241
|
system Node, or an explicit `INLINE_NODE_BIN` path all work.
|
|
228
242
|
- Inbound recovery retries without waiting for another message or reconnect. Independent chats are consumed concurrently; same-chat order and delivery acknowledgements are preserved. Sender provenance lookups start with a short timeout and expand up to the existing SDK ceiling after timeouts; deferred inputs stay recoverable. Stream replacement wakes pending backpressure writes.
|
|
229
|
-
- Inline transport: the 1.
|
|
243
|
+
- Inline transport: the 1.2.0 candidate sidecar uses `@inline-chat/realtime-sdk@0.0.24` and is
|
|
230
244
|
bundled into the npm package, so Hermes startup does not run `npm install`.
|
|
231
|
-
This SDK includes widget calls and
|
|
232
|
-
`0.0.
|
|
245
|
+
This SDK includes widget calls, submitted forms and focus status; protocol `0.0.16` and SDK
|
|
246
|
+
`0.0.24` must be published before the adapter's registry-only release preflight.
|
|
233
247
|
- Live sends require a valid Inline user or bot token in `INLINE_TOKEN`,
|
|
234
248
|
`INLINE_BOT_TOKEN`, `platforms.inline.token`, or `inline.token`.
|
|
235
249
|
|
|
@@ -294,14 +308,46 @@ platforms:
|
|
|
294
308
|
enabled: true
|
|
295
309
|
```
|
|
296
310
|
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
311
|
+
### Output: Detailed or Friendly
|
|
312
|
+
|
|
313
|
+
Each bot has an Output setting in Inline (the bot's chat settings), with a
|
|
314
|
+
per-chat override. The adapter reads it at the start of every turn (cached for
|
|
315
|
+
30 seconds per chat) and declares the `OUTPUT_MODE` capability so Inline offers
|
|
316
|
+
the setting. An unset setting means Detailed.
|
|
317
|
+
|
|
318
|
+
- **Detailed**: while Hermes works, one progress message ("Working · 1m 4s")
|
|
319
|
+
shows each step as a row: commands with their output tail and exit code, files
|
|
320
|
+
read and searched, edits with their diff, web searches, plans, sub-agents with
|
|
321
|
+
their own steps nested inside, and approvals waiting on someone. Hermes'
|
|
322
|
+
commentary between tool calls appears inside it too, and its "still working"
|
|
323
|
+
notice is left out since the timer already shows it. When the answer is ready
|
|
324
|
+
the message collapses to "Worked for 1m 4s" and the answer follows as its own
|
|
325
|
+
message. A message someone sends mid-turn ends the progress message there;
|
|
326
|
+
later work starts a new one.
|
|
327
|
+
- **Friendly**: no progress message. Hermes' commentary between tool calls posts
|
|
328
|
+
as short updates, Hermes' "⏳ Working — 3 min" notice keeps a long turn
|
|
329
|
+
visibly alive (removed once the turn succeeds), then the answer.
|
|
330
|
+
|
|
331
|
+
Approvals, questions and errors look the same in both modes. Output tails are
|
|
332
|
+
capped at 2,000 characters and diffs at 8,000, and values that look like secrets
|
|
333
|
+
are hidden. Row titles come from the tool, never from its output.
|
|
334
|
+
|
|
335
|
+
This runs entirely on Hermes' public plugin hooks (`pre_tool_call`,
|
|
336
|
+
`post_tool_call`, `subagent_start`/`subagent_stop`,
|
|
337
|
+
`pre_approval_request`/`post_approval_response`) and its interim-message
|
|
338
|
+
contract. Turns Hermes starts on its own, such as scheduled (cron) runs, have no
|
|
339
|
+
processing hooks and post only their answer.
|
|
340
|
+
|
|
341
|
+
The old experimental timeline is gone: `INLINE_EXPERIMENTAL_AGENT_ACTIVITY` is
|
|
342
|
+
ignored and logs a warning when enabled.
|
|
343
|
+
|
|
344
|
+
Inline's display defaults keep Hermes' own tool-progress bubbles off
|
|
345
|
+
(`tool_progress: off`) and turn on `interim_assistant_messages`, which the
|
|
346
|
+
Output setting then shows as Detailed commentary or Friendly updates. Explicit
|
|
347
|
+
Hermes display settings still take precedence: turning `tool_progress` on adds
|
|
348
|
+
Hermes' own progress bubbles on top of Detailed output, and turning
|
|
349
|
+
`interim_assistant_messages` off hides commentary in both modes. Token streaming
|
|
350
|
+
remains opt-in through both `streaming.enabled: true` and
|
|
305
351
|
`display.platforms.inline.streaming: true`.
|
|
306
352
|
|
|
307
353
|
Hermes-native sends and scheduled deliveries accept Inline's explicit target
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inline-chat/hermes-agent-adapter",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Hermes Agent platform adapter for Inline, with a native Python plugin and bundled Inline realtime sidecar.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"build": "mkdir -p plugin/inline/sidecar && bun build ./src/install.ts --outdir dist --entry-naming '[name].js' --target=node --format=esm --packages=bundle && bun build ./src/sidecar/index.ts --outdir plugin/inline/sidecar --entry-naming 'index.mjs' --target=node --format=esm --packages=bundle && tsc -p tsconfig.json --emitDeclarationOnly",
|
|
58
|
-
"lint": "bunx oxlint --ignore-path ../../.oxlintignore scripts/release-stage.mjs src/install.ts src/sidecar/contract.ts src/sidecar/index.ts src/sidecar/telemetry.ts src/sidecar/telemetry.test.ts src/sidecar/user-directory.ts src/sidecar/user-directory.test.ts src/sidecar/inbound-delivery.ts src/sidecar/inbound-delivery.test.ts src/sidecar/inbound-stream.ts src/sidecar/inbound-stream.test.ts tests/inbound-flow.test.ts tests/adapter-python.test.ts tests/install.test.ts tests/package-artifact.test.ts tests/sidecar-contract.test.ts tests/sidecar-runtime.test.ts tests/telemetry-python.test.ts vitest.config.ts",
|
|
58
|
+
"lint": "bunx oxlint --ignore-path ../../.oxlintignore scripts/release-stage.mjs src/install.ts src/sidecar/activity.ts src/sidecar/activity.test.ts src/sidecar/agent-activity-copy.test.ts src/sidecar/contract.ts src/sidecar/index.ts src/sidecar/telemetry.ts src/sidecar/telemetry.test.ts src/sidecar/user-directory.ts src/sidecar/user-directory.test.ts src/sidecar/inbound-delivery.ts src/sidecar/inbound-delivery.test.ts src/sidecar/inbound-stream.ts src/sidecar/inbound-stream.test.ts tests/inbound-flow.test.ts tests/activity-python.test.ts tests/adapter-python.test.ts tests/install.test.ts tests/package-artifact.test.ts tests/sidecar-contract.test.ts tests/sidecar-runtime.test.ts tests/telemetry-python.test.ts vitest.config.ts",
|
|
59
59
|
"pretest": "bun run build",
|
|
60
60
|
"prepack": "bun run build",
|
|
61
61
|
"prepublishOnly": "bun run check",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"check": "bun run typecheck && bun run lint && bun run test"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@inline-chat/realtime-sdk": "0.0.
|
|
69
|
+
"@inline-chat/realtime-sdk": "0.0.24",
|
|
70
70
|
"yaml": "2.9.0"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
@@ -95,9 +95,9 @@
|
|
|
95
95
|
"testedHermesVersion": "0.23.0",
|
|
96
96
|
"testedHermesCommit": "2bd378ed1b8d6bf2192cb26e0a55ff3091e6bd19"
|
|
97
97
|
},
|
|
98
|
-
"gitHead": "
|
|
98
|
+
"gitHead": "5f1bb189568123b7f99c20f7828d62f067c019ed",
|
|
99
99
|
"inlineRelease": {
|
|
100
|
-
"tag": "hermes-agent-v1.
|
|
101
|
-
"sha": "
|
|
100
|
+
"tag": "hermes-agent-v1.2.0",
|
|
101
|
+
"sha": "5f1bb189568123b7f99c20f7828d62f067c019ed"
|
|
102
102
|
}
|
|
103
103
|
}
|