@hybridaione/hybridclaw 0.12.9 → 0.12.11

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.
Files changed (192) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +16 -2
  3. package/config.example.json +2 -1
  4. package/console/dist/assets/chat-BzfDrs0I.js +93 -0
  5. package/console/dist/assets/chat-DAI4OGIa.css +1 -0
  6. package/console/dist/assets/{index-Dk4JnrUi.js → index-Cr9FpxIn.js} +4 -4
  7. package/console/dist/assets/{terminal-Bn31vAMt.js → terminal-CHC7yoWJ.js} +1 -1
  8. package/console/dist/index.html +1 -1
  9. package/container/dist/index.js +8 -4
  10. package/container/dist/index.js.map +1 -1
  11. package/container/dist/model-retry.js +104 -0
  12. package/container/dist/model-retry.js.map +1 -1
  13. package/container/dist/runtime-paths.js +5 -2
  14. package/container/dist/runtime-paths.js.map +1 -1
  15. package/container/dist/tool-parallelism.js +1 -1
  16. package/container/dist/tool-parallelism.js.map +1 -1
  17. package/container/dist/tools.js +234 -99
  18. package/container/dist/tools.js.map +1 -1
  19. package/container/package-lock.json +2 -2
  20. package/container/package.json +1 -1
  21. package/container/src/index.ts +9 -2
  22. package/container/src/model-retry.ts +134 -0
  23. package/container/src/runtime-paths.ts +6 -2
  24. package/container/src/tool-parallelism.ts +1 -1
  25. package/container/src/tools.ts +272 -112
  26. package/container/src/types.ts +1 -0
  27. package/dist/agent/prompt-hooks.d.ts.map +1 -1
  28. package/dist/agent/prompt-hooks.js +7 -3
  29. package/dist/agent/prompt-hooks.js.map +1 -1
  30. package/dist/agents/agent-registry.d.ts.map +1 -1
  31. package/dist/agents/agent-registry.js +1 -9
  32. package/dist/agents/agent-registry.js.map +1 -1
  33. package/dist/audit/observability-ingest.d.ts.map +1 -1
  34. package/dist/audit/observability-ingest.js +36 -8
  35. package/dist/audit/observability-ingest.js.map +1 -1
  36. package/dist/auth/codex-auth.d.ts.map +1 -1
  37. package/dist/auth/codex-auth.js +1 -3
  38. package/dist/auth/codex-auth.js.map +1 -1
  39. package/dist/channels/discord/prompt-adapter.d.ts.map +1 -1
  40. package/dist/channels/discord/prompt-adapter.js +1 -3
  41. package/dist/channels/discord/prompt-adapter.js.map +1 -1
  42. package/dist/channels/discord/reactions.d.ts.map +1 -1
  43. package/dist/channels/discord/reactions.js +21 -10
  44. package/dist/channels/discord/reactions.js.map +1 -1
  45. package/dist/channels/discord/runtime.d.ts.map +1 -1
  46. package/dist/channels/discord/runtime.js +13 -5
  47. package/dist/channels/discord/runtime.js.map +1 -1
  48. package/dist/channels/discord/stream.d.ts.map +1 -1
  49. package/dist/channels/discord/stream.js +6 -1
  50. package/dist/channels/discord/stream.js.map +1 -1
  51. package/dist/channels/discord/transport-errors.d.ts +12 -0
  52. package/dist/channels/discord/transport-errors.d.ts.map +1 -0
  53. package/dist/channels/discord/transport-errors.js +59 -0
  54. package/dist/channels/discord/transport-errors.js.map +1 -0
  55. package/dist/channels/discord/typing.d.ts.map +1 -1
  56. package/dist/channels/discord/typing.js +8 -2
  57. package/dist/channels/discord/typing.js.map +1 -1
  58. package/dist/channels/email/connection.d.ts.map +1 -1
  59. package/dist/channels/email/connection.js +42 -4
  60. package/dist/channels/email/connection.js.map +1 -1
  61. package/dist/channels/email/metadata.d.ts.map +1 -1
  62. package/dist/channels/email/metadata.js +1 -4
  63. package/dist/channels/email/metadata.js.map +1 -1
  64. package/dist/channels/email/prompt-adapter.d.ts.map +1 -1
  65. package/dist/channels/email/prompt-adapter.js +1 -3
  66. package/dist/channels/email/prompt-adapter.js.map +1 -1
  67. package/dist/channels/imessage/prompt-adapter.d.ts.map +1 -1
  68. package/dist/channels/imessage/prompt-adapter.js +1 -3
  69. package/dist/channels/imessage/prompt-adapter.js.map +1 -1
  70. package/dist/channels/msteams/prompt-adapter.d.ts.map +1 -1
  71. package/dist/channels/msteams/prompt-adapter.js +1 -3
  72. package/dist/channels/msteams/prompt-adapter.js.map +1 -1
  73. package/dist/channels/msteams/utils.d.ts +2 -1
  74. package/dist/channels/msteams/utils.d.ts.map +1 -1
  75. package/dist/channels/msteams/utils.js +3 -4
  76. package/dist/channels/msteams/utils.js.map +1 -1
  77. package/dist/channels/prompt-adapters.d.ts.map +1 -1
  78. package/dist/channels/prompt-adapters.js +1 -3
  79. package/dist/channels/prompt-adapters.js.map +1 -1
  80. package/dist/channels/telegram/prompt-adapter.d.ts.map +1 -1
  81. package/dist/channels/telegram/prompt-adapter.js +1 -3
  82. package/dist/channels/telegram/prompt-adapter.js.map +1 -1
  83. package/dist/channels/whatsapp/connection.d.ts.map +1 -1
  84. package/dist/channels/whatsapp/connection.js +105 -13
  85. package/dist/channels/whatsapp/connection.js.map +1 -1
  86. package/dist/channels/whatsapp/message-store.d.ts.map +1 -1
  87. package/dist/channels/whatsapp/message-store.js +1 -3
  88. package/dist/channels/whatsapp/message-store.js.map +1 -1
  89. package/dist/channels/whatsapp/prompt-adapter.d.ts.map +1 -1
  90. package/dist/channels/whatsapp/prompt-adapter.js +1 -3
  91. package/dist/channels/whatsapp/prompt-adapter.js.map +1 -1
  92. package/dist/command-registry.d.ts.map +1 -1
  93. package/dist/command-registry.js +24 -0
  94. package/dist/command-registry.js.map +1 -1
  95. package/dist/commands/btw-command.d.ts +3 -0
  96. package/dist/commands/btw-command.d.ts.map +1 -0
  97. package/dist/commands/btw-command.js +57 -0
  98. package/dist/commands/btw-command.js.map +1 -0
  99. package/dist/config/config.d.ts +1 -0
  100. package/dist/config/config.d.ts.map +1 -1
  101. package/dist/config/config.js +2 -0
  102. package/dist/config/config.js.map +1 -1
  103. package/dist/config/runtime-config.d.ts +1 -0
  104. package/dist/config/runtime-config.d.ts.map +1 -1
  105. package/dist/config/runtime-config.js +2 -0
  106. package/dist/config/runtime-config.js.map +1 -1
  107. package/dist/evals/eval-profile.d.ts.map +1 -1
  108. package/dist/evals/eval-profile.js +1 -3
  109. package/dist/evals/eval-profile.js.map +1 -1
  110. package/dist/gateway/auth-token.d.ts +1 -0
  111. package/dist/gateway/auth-token.d.ts.map +1 -1
  112. package/dist/gateway/auth-token.js +8 -4
  113. package/dist/gateway/auth-token.js.map +1 -1
  114. package/dist/gateway/gateway-http-server.d.ts.map +1 -1
  115. package/dist/gateway/gateway-http-server.js +46 -14
  116. package/dist/gateway/gateway-http-server.js.map +1 -1
  117. package/dist/gateway/gateway-service.d.ts +1 -0
  118. package/dist/gateway/gateway-service.d.ts.map +1 -1
  119. package/dist/gateway/gateway-service.js +14 -0
  120. package/dist/gateway/gateway-service.js.map +1 -1
  121. package/dist/gateway/gateway-types.d.ts +1 -0
  122. package/dist/gateway/gateway-types.d.ts.map +1 -1
  123. package/dist/gateway/gateway-types.js.map +1 -1
  124. package/dist/gateway/openai-compatible-request.d.ts.map +1 -1
  125. package/dist/gateway/openai-compatible-request.js +1 -4
  126. package/dist/gateway/openai-compatible-request.js.map +1 -1
  127. package/dist/infra/container-runner.d.ts +1 -1
  128. package/dist/infra/container-runner.d.ts.map +1 -1
  129. package/dist/infra/container-runner.js +22 -14
  130. package/dist/infra/container-runner.js.map +1 -1
  131. package/dist/infra/host-runner.d.ts.map +1 -1
  132. package/dist/infra/host-runner.js +3 -2
  133. package/dist/infra/host-runner.js.map +1 -1
  134. package/dist/logger.d.ts +6 -0
  135. package/dist/logger.d.ts.map +1 -1
  136. package/dist/logger.js +41 -15
  137. package/dist/logger.js.map +1 -1
  138. package/dist/memory/db.d.ts +3 -1
  139. package/dist/memory/db.d.ts.map +1 -1
  140. package/dist/memory/db.js +160 -39
  141. package/dist/memory/db.js.map +1 -1
  142. package/dist/plugins/plugin-dependencies.d.ts.map +1 -1
  143. package/dist/plugins/plugin-dependencies.js +1 -4
  144. package/dist/plugins/plugin-dependencies.js.map +1 -1
  145. package/dist/session/recent-chat-search.d.ts +7 -0
  146. package/dist/session/recent-chat-search.d.ts.map +1 -0
  147. package/dist/session/recent-chat-search.js +23 -0
  148. package/dist/session/recent-chat-search.js.map +1 -0
  149. package/dist/session/session-preview.d.ts +2 -0
  150. package/dist/session/session-preview.d.ts.map +1 -1
  151. package/dist/session/session-preview.js +46 -0
  152. package/dist/session/session-preview.js.map +1 -1
  153. package/dist/skills/skill-import-commons.d.ts +16 -0
  154. package/dist/skills/skill-import-commons.d.ts.map +1 -0
  155. package/dist/skills/skill-import-commons.js +95 -0
  156. package/dist/skills/skill-import-commons.js.map +1 -0
  157. package/dist/skills/skills-import-github.d.ts +0 -1
  158. package/dist/skills/skills-import-github.d.ts.map +1 -1
  159. package/dist/skills/skills-import-github.js +2 -46
  160. package/dist/skills/skills-import-github.js.map +1 -1
  161. package/dist/skills/skills-import-hubs.d.ts.map +1 -1
  162. package/dist/skills/skills-import-hubs.js +7 -42
  163. package/dist/skills/skills-import-hubs.js.map +1 -1
  164. package/dist/skills/skills-import.d.ts.map +1 -1
  165. package/dist/skills/skills-import.js +2 -1
  166. package/dist/skills/skills-import.js.map +1 -1
  167. package/dist/types/container.d.ts +1 -0
  168. package/dist/types/container.d.ts.map +1 -1
  169. package/dist/utils/normalized-strings.d.ts +2 -0
  170. package/dist/utils/normalized-strings.d.ts.map +1 -1
  171. package/dist/utils/normalized-strings.js +6 -0
  172. package/dist/utils/normalized-strings.js.map +1 -1
  173. package/dist/utils/transport-errors.d.ts +3 -0
  174. package/dist/utils/transport-errors.d.ts.map +1 -0
  175. package/dist/utils/transport-errors.js +156 -0
  176. package/dist/utils/transport-errors.js.map +1 -0
  177. package/docs/chat.html +312 -14
  178. package/docs/content/README.md +15 -14
  179. package/docs/content/channels/overview.md +3 -0
  180. package/docs/content/getting-started/quickstart.md +3 -0
  181. package/docs/content/guides/skills/office.md +2 -0
  182. package/docs/content/reference/commands.md +8 -2
  183. package/docs/content/reference/configuration.md +5 -1
  184. package/docs/development/README.md +10 -15
  185. package/docs/development/getting-started/quickstart.md +3 -0
  186. package/docs/development/guides/skills/office.md +2 -0
  187. package/docs/static/chat-ui-config.json +4 -0
  188. package/package.json +1 -1
  189. package/skills/pdf/SKILL.md +2 -0
  190. package/skills/pdf/scripts/create_pdf.mjs +146 -29
  191. package/console/dist/assets/chat-A439MpRy.css +0 -1
  192. package/console/dist/assets/chat-tI8F9f6y.js +0 -93
package/CHANGELOG.md CHANGED
@@ -2,6 +2,66 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## [0.12.11](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.11)
6
+
7
+ ### Added
8
+
9
+ - **Ephemeral `/btw` side-question command**: Added `/btw <question>` across
10
+ local and Discord slash-command surfaces. It answers side questions from
11
+ recent conversation context with a tool-less model call, without persisting
12
+ the side exchange to session history.
13
+ - **Concurrent `/btw` threads in browser chat**: The built-in `/chat` surface
14
+ accepts `/btw ...` while a primary run is active and renders those replies in
15
+ a distinct side-thread presentation.
16
+ - **Bash tool state can persist between calls**: Added persistent bash state
17
+ support so bash tool calls can preserve
18
+ working directory, exported environment variables, and aliases for the active
19
+ session by default, plus `container.persistBashState` and a matching
20
+ `/admin/config` toggle (`Persistent bash state`) to disable this behavior
21
+ when stateless shell calls are preferred.
22
+
23
+ ### Fixed
24
+
25
+ - **Expected transport outages stay local and less noisy**: Discord, Email
26
+ IMAP, and WhatsApp transport handlers now classify expected transient
27
+ transport failures, keep reconnect loops local, and rate-limit repetitive
28
+ outage logs.
29
+ - **Cloud artifact path remapping remains stable across workspace roots**:
30
+ Artifact remapping now preserves host-resolved workspace paths when runtime
31
+ and display roots differ, keeping generated files downloadable and attachable
32
+ in cloud-backed sessions.
33
+ - **Remote skill import guardrails close unsafe/over-budget paths**: GitHub
34
+ and skill-hub imports now enforce shared file-count/byte budgets during
35
+ streaming downloads and consistently reject unsafe relative paths.
36
+
37
+ ## [0.12.10](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.10)
38
+
39
+ ### Added
40
+
41
+ - **Web chat conversation search**: The built-in `/chat` sidebar can now search
42
+ recent sessions by title and show contextual match snippets, making it much
43
+ easier to jump back into older browser conversations without paging through
44
+ the default recent list.
45
+
46
+ ### Changed
47
+
48
+ - **Bundled PDF creation handles longer documents cleanly**:
49
+ `skills/pdf/scripts/create_pdf.mjs` now wraps long lines, respects explicit
50
+ `\n` line breaks, and adds pages automatically when content exceeds the
51
+ first page. The bundled PDF skill guidance and office-skills docs now call
52
+ out the improved layout behavior.
53
+
54
+ ### Fixed
55
+
56
+ - **Browser chat stays keyboard-ready between turns**: Both the built-in web
57
+ chat and the console chat now restore focus to the composer after streamed
58
+ replies finish, so back-to-back prompts no longer require clicking back into
59
+ the input field.
60
+ - **Artifact downloads survive custom workspace display roots**: Container
61
+ output artifacts are remapped against the active workspace path even when the
62
+ runtime exposes a different display root such as `/app`, keeping generated
63
+ files downloadable and attachable from chat surfaces.
64
+
5
65
  ## [0.12.9](https://github.com/HybridAIOne/hybridclaw/tree/v0.12.9)
6
66
 
7
67
  ### Added
package/README.md CHANGED
@@ -93,6 +93,11 @@ operator and maintainer manual lives at
93
93
  Once the gateway is running, open HybridClaw locally:
94
94
 
95
95
  - Web Chat: `http://127.0.0.1:9090/chat`
96
+ - Web Chat keeps a recent-session sidebar and can search conversation titles
97
+ with contextual snippets before you reopen an older browser session
98
+ - Web Chat accepts `/btw <question>` side questions while a primary run is
99
+ active, so you can ask an ephemeral follow-up without interrupting the
100
+ current run
96
101
  - Admin Console: `http://127.0.0.1:9090/admin` for channels, versioned agent files,
97
102
  scheduler, audit, config, and channel-specific instructions
98
103
  - Agent Dashboard: `http://127.0.0.1:9090/agents`
@@ -116,6 +121,11 @@ Once the gateway is running, open HybridClaw locally:
116
121
  - `/admin/gateway` reloads runtime config and refreshes secrets from the
117
122
  browser without tearing down the enclosing workspace container; keep
118
123
  `hybridclaw gateway restart` for local/manual full restarts.
124
+ - `container.persistBashState` controls whether bash tool calls share shell
125
+ state (`cd`, exported env vars, aliases) across turns in the same active
126
+ runtime session; `/admin/config` exposes the same setting as `Persistent bash state`.
127
+ - Generated artifacts remain downloadable and attachable even when the sandbox
128
+ exposes a custom workspace display root such as `/app`.
119
129
  - `hybridclaw tui` includes a keyboard-driven approval picker and prints a
120
130
  ready-to-run `hybridclaw tui --resume <sessionId>` command on exit.
121
131
  - `hybridclaw doctor` checks runtime health including resource hygiene
@@ -130,8 +140,9 @@ Once the gateway is running, open HybridClaw locally:
130
140
  observed skill, artifact presence, and counted tool-call totals.
131
141
  - Channel delivery stays predictable: email seeds its first mailbox cursor from
132
142
  the current head instead of replaying old inbox mail, retry-aware transports
133
- honor server `Retry-After` backoff, and WhatsApp startup avoids intermittent
134
- init-query bad-request failures.
143
+ honor server `Retry-After` backoff, expected transient Discord/Email/WhatsApp
144
+ transport outages stay local with rate-limited logging, and WhatsApp startup
145
+ avoids intermittent init-query bad-request failures.
135
146
 
136
147
  ## Models, Skills, and Memory
137
148
 
@@ -143,6 +154,9 @@ Once the gateway is running, open HybridClaw locally:
143
154
  - Skills can be enabled or disabled globally or per channel from
144
155
  `hybridclaw skill enable|disable`, TUI `/skill config`, or the admin
145
156
  `Skills` page.
157
+ - Built-in office skills handle longer PDF creation flows cleanly: the bundled
158
+ PDF creator wraps long lines, honors explicit `\n`, and adds pages
159
+ automatically when reports or invoices spill past the first page.
146
160
  - Built-in memory can stay standalone or layer with ByteRover, Mem0, Honcho,
147
161
  MemPalace, QMD, and GBrain plugins depending on whether you want
148
162
  local-first recall, hosted memory, or domain-specific retrieval.
@@ -373,7 +373,8 @@
373
373
  "binds": [],
374
374
  "additionalMounts": "",
375
375
  "maxOutputBytes": 10485760,
376
- "maxConcurrent": 5
376
+ "maxConcurrent": 5,
377
+ "persistBashState": true
377
378
  },
378
379
  "mcpServers": {
379
380
  "filesystem": {