819 Commits

Author SHA1 Message Date
Acbox e4aca0db13 feat(container): add current container metrics view
Expose a dedicated container metrics endpoint and surface current CPU, memory, and root filesystem usage in the bot container view. This gives operators a quick health snapshot while degrading cleanly on unsupported backends.
2026-04-24 15:10:47 +08:00
Acbox 8136ef6ed6 feat(usage): add per-call token usage records table
Expose a paginated endpoint and UI table that lists individual LLM call
records (assistant messages with usage) per bot, showing time, session
type, model, provider, and token counts. Respects existing date / model
/ session-type filters and adds full-height loaders plus a max-width
layout to keep the usage page consistent with other top-level pages.
2026-04-24 15:05:53 +08:00
Acbox 419867655e docs(zh): add Simplified Chinese docs, channel guides, and agent skills
- VitePress zh: getting-started, install, memory/TTS providers, full channel set; update zh sidebar
- Drop zh-only pages with no English counterpart
- Add humanizer and humanizer-zh skills; update skills-lock.json
2026-04-24 14:36:31 +08:00
Acbox ee86e00107 fix(web): hide reasoning efforts on model cards
Keep provider model cards focused on high-level model capabilities instead of exposing per-model reasoning effort options in the summary view.
2026-04-24 11:39:15 +08:00
Acbox e127146791 release: v0.7.1 v0.7.1 2026-04-23 21:01:57 +08:00
Acbox 473d559042 feat(channel): structured tool-call IM display with edit-in-place
Introduce a new `show_tool_calls_in_im` bot setting plus a full overhaul of
how tool calls are surfaced in IM channels:

- Add per-bot setting + migration (0072) and expose through settings API /
  handlers / frontend SDK.
- Introduce a `toolCallDroppingStream` wrapper that filters tool_call_* events
  when the setting is off, keeping the rest of the stream intact.
- Add a shared `ToolCallPresentation` model (Header / Body blocks / Footer)
  with plain and Markdown renderers, and a per-tool formatter registry that
  produces rich output (e.g. `web_search` link lists, `list` directory
  previews, `exec` stdout/stderr tails) instead of raw JSON dumps.
- High-capability adapters (Telegram, Feishu, Matrix, Slack, Discord) now
  flush pre-text and then send ONE tool-call message per call, editing it
  in-place from `running` to `completed` / `failed`; mapping from callID to
  platform message ID is tracked per stream, with a fallback to a new
  message if the edit fails. Low-capability adapters (WeCom, QQ, DingTalk)
  keep posting a single final message, but now benefit from the same rich
  per-tool formatting.
- Suppress the early duplicate `EventToolCallStart` (from
  `sdk.ToolInputStartPart`) so that the SDK's final `StreamToolCallPart`
  remains the single source of truth for tool call start, preventing
  duplicated "running" bubbles in IM.
- Stop auto-populating `InputSummary` / `ResultSummary` after a per-tool
  formatter runs, which previously leaked the raw JSON result as a
  fallback footer underneath the formatted body.

Add regression tests for the formatters, the Markdown renderer, the
edit-in-place flow on Telegram/Matrix, and the JSON-leak guard on `list`.
2026-04-23 20:49:44 +08:00
Acbox 35118a81ad refactor(web): responsive settings layout and card grids
Introduce a shared SettingsShell with narrow/standard/wide/full width
tiers, and convert the primary provider/memory/speech/transcription/
email/browser/bot-mcp/channel/heartbeat/compaction settings forms from
single-column space-y stacks to md:grid-cols-2 grids where short fields
pair up and long inputs (secrets, URLs, webhooks, commands, etc.) stay
full width.

Also fix the provider model list, platform grid, and bots grid to use
responsive breakpoint columns instead of single-column flex or fixed
grid-cols-4 / minmax(400px), and make model/bot cards equal-height with
bottom-aligned actions.
2026-04-23 20:22:13 +08:00
Acbox e94b4b58ed fix(pipeline): preserve tool calls and anchor driver cursor correctly
The discuss driver's RC+TR composition had three compounding bugs that
caused old tasks to be re-answered after idle timeouts and made the LLM
blind to its own prior tool usage:

- DecodeTurnResponseEntry only kept visible text via TextContent(), so
  assistant steps carrying only tool_call parts (the first half of every
  tool round) were dropped entirely. Rewritten to render tool_call and
  tool_result parts as <tool_call>/<tool_result> tags, covering both
  Vercel-style content parts and legacy OpenAI ToolCalls/role=tool
  envelopes. Reasoning parts remain stripped to avoid re-injection.

- loadTurnResponses hard-capped TRs at 24h while RC is replayed in full
  from the events table, producing asymmetric context (user messages
  from day 1 visible, matching bot replies missing). The cap is removed;
  any size-bound trimming belongs in compaction, not here.

- lastProcessedMs lived only in memory and was set to time.Now() at turn
  end. After the 10-minute idle timeout, the goroutine exited and the
  next turn started with cursor=0, treating the entire history as new
  traffic. Now initialised from the latest TR's requested_at on cold
  start, and advanced to max(consumed RC.ReceivedAtMs) per turn so that
  messages arriving mid-generation trigger a follow-up round instead of
  being wrongly marked processed.
2026-04-23 20:05:35 +08:00
Acbox defddc2257 feat(web): structured schedule create/edit UI
Replace the read-only schedule list with a form-driven builder so users
never hand-edit cron patterns. A canonical ScheduleFormState feeds two
inverse pure functions (toCron / fromCron) that guarantee round-trip
equivalence, so new and edit flows share the exact same UI state shape
even though the DB stores only the pattern. Unrecognised patterns (AI-
generated ranges/steps, descriptors, 6-field seconds cron) fall back
losslessly to an advanced mode instead of being silently rewritten.

The dialog adds live previews (human-readable via cronstrue, next 3
trigger times via cron-parser evaluated in the bot timezone) and row
actions for edit / enable-toggle / delete.
2026-04-23 19:36:25 +08:00
Acbox 7642cb8ca4 chore(providers): refresh codex model presets
Align the bundled Codex provider with the current GPT-5.4 and GPT-5.3 model lineup, and expose explicit reasoning effort options for supported models.
2026-04-23 18:14:38 +08:00
Acbox 62fff09e10 fix(web): normalize about version display
Prevent the About page from rendering duplicate `v` prefixes when the server already returns tags like `v0.7.0`. Reuse the same normalization for release checks so the displayed version and update comparison stay consistent.
2026-04-23 18:06:09 +08:00
Acbox d05ba8956a fix: stop escaped history context blowup
Avoid feeding structured tool payloads back into pipeline context as doubly encoded JSON, and return readable history summaries instead of raw message blobs.
2026-04-23 17:56:09 +08:00
Fira 80ac96da2f Fix json structure (#399) 2026-04-23 16:24:38 +08:00
Fira 6a11105299 Remove dead code in i18n strings (#398) 2026-04-23 00:21:05 +08:00
Chrys e1dd6e15a9 fix(web): unify channel icon fallbacks (#397) 2026-04-22 22:14:41 +08:00
Acbox 925fdee478 feat: transcription support (#394)
* feat: expand speech provider support with new client types and configuration schema

* feat: add icon support for speech providers and update related configurations

* feat: add SVG support for Deepgram and Elevenlabs with Vue components

* feat: except *-speech client type in llm provider

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: remove go.mod replace

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: update go module dependencies

* feat: Ear and Mouth

* fix: separate ear/mouth page

* fix: separate audio domain and restore transcription templates

Move speech and transcription internals into the audio domain, restore template-driven transcription providers, and regenerate Swagger/SDK so the frontend can stop hand-calling /transcription-* APIs.

---------

Co-authored-by: aki <arisu@ieee.org>
2026-04-22 00:12:01 +08:00
Acbox fd8f1ec078 Revert "Feat/speech support (#392)" (#393)
This reverts commit c9dcfe287f.
2026-04-22 00:11:16 +08:00
Acbox c9dcfe287f Feat/speech support (#392)
* feat: expand speech provider support with new client types and configuration schema

* feat: add icon support for speech providers and update related configurations

* feat: add SVG support for Deepgram and Elevenlabs with Vue components

* feat: except *-speech client type in llm provider

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: remove go.mod replace

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: update go module dependencies

* feat: Ear and Mouth

* fix: separate ear/mouth page

* fix: separate audio domain and restore transcription templates

Move speech and transcription internals into the audio domain, restore template-driven transcription providers, and regenerate Swagger/SDK so the frontend can stop hand-calling /transcription-* APIs.

---------

Co-authored-by: aki <arisu@ieee.org>
2026-04-22 00:09:46 +08:00
Yiming Qi 8d78925a23 feat: expand speech provider support with new client types and config… (#389)
* feat: expand speech provider support with new client types and configuration schema

* feat: add icon support for speech providers and update related configurations

* feat: add SVG support for Deepgram and Elevenlabs with Vue components

* feat: except *-speech client type in llm provider

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: remove go.mod replace

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: update go module dependencies

---------

Co-authored-by: Acbox <acbox0328@gmail.com>
2026-04-19 21:58:16 +08:00
Fodesu 8e013ad1ad feat(platform): add slack platform support (#385)
* feat(platform): add slack platform support

* docs: add slack channel setup guide

* feat: normalize slack unicode reactions

* chore(docs): remove unsupport feature

* fix(slack): harden adapter stream and identity handling

- ignore reaction and speech stream events in Slack outbound
  streams
  - normalize Slack conversation types to framework-standard values
  - route DiscoverSelf through the adapter API factory
  - add config-scoped Slack user display-name caching
  - expand adapter interface assertions and add regression coverage
  - add ChannelTypeSlack to well-known channel constants
2026-04-19 14:17:05 +08:00
Fodesu db777b98ac fix(agent): stream loop abort, mid-stream retry parity, collector cleanup (#376)
* fix(agent): align stream retry abort and event collection

* fix(agent): cancel stream on loop detect, harden retry and tool events

* fix(agent): drain previous stream before retry

* fix(lint): ctx ci lint

---------

Co-authored-by: 晨苒 <16112591+chen-ran@users.noreply.github.com>
2026-04-18 03:19:58 +08:00
Quincy b534248e19 fix: resolve context switch failure in browser automation (#380)
* fix: resolve context switch failure in browser automation

* feat: update logo and optimize sidebar empty state

---------

Co-authored-by: 晨苒 <16112591+chen-ran@users.noreply.github.com>
2026-04-18 03:07:17 +08:00
Chrys 28d11713db fix: preserve empty skill discovery roots (#384) 2026-04-17 23:17:04 +08:00
Chrys dee82177d3 feat: add bot-level skill paths configuration (#383) 2026-04-17 16:05:00 +08:00
晨苒 7aa6ec6ca9 chore(ci): add release.yml workflow_dispatch 2026-04-16 18:38:02 +08:00
Acbox d3a820b2dc release: v0.7.0 v0.7.0 2026-04-16 18:16:11 +08:00
Acbox 2f5bb97ab4 chore: update logo to web and documentation 2026-04-16 18:14:18 +08:00
晨苒 74f04427af chore(ci): unify release pipeline 2026-04-16 17:58:23 +08:00
Acbox 68b1efa343 docs: update to v0.7 2026-04-16 17:45:56 +08:00
晨苒 fc1ee59dea Revert "release: v0.7.0"
This reverts commit 9e3fae7e9b.
2026-04-16 17:37:59 +08:00
Acbox 9e3fae7e9b release: v0.7.0 2026-04-16 16:50:58 +08:00
Acbox 9f10033f63 feat(agent): include platform self identities in system prompts
Give bots their known per-channel account handles in the system prompt so they can reason about platform-specific self references consistently. Reuse persisted channel self_identity data across chat, discuss, schedule, heartbeat, and subagent prompts.
2026-04-16 16:44:29 +08:00
Acbox e0fc2f514e fix(agent): surface tool calls before input completes
Emit tool-call placeholders as soon as tool input streaming starts so long writes appear immediately in chat. Reuse the same UI tool message when full input arrives to avoid duplicate cards, and keep the hook-required test suite green.
2026-04-16 16:42:07 +08:00
Acbox 1a5b1d6086 fix(web): show send tool calls in chat
Remove the frontend filter that hid send tool blocks delivered to the current conversation so assistant actions remain visible in chat.
2026-04-16 16:39:57 +08:00
Chrys 33e18e7e64 feat(skills): add effective skill resolution and actions (#377)
* feat(skills): add effective skill resolution and actions

* refactor(workspace): normalize skill-related env and prompt

* chore(api): regenerate skills OpenAPI and SDK artifacts

* feat(web): surface effective skill state in console

* test(skills): cover API and runtime effective state

* fix(web): show adopt action for discovered skills

* fix(web): align skill header and show stateful visibility icon

* refactor(web): compact skill metadata on narrow layouts

* fix(web): constrain long skill text in cards

* refactor(skills): narrow default discovery roots

* fix(skills): harden managed skill path validation

* feat: add path in the results of `use_skill`

---------

Co-authored-by: Acbox <acbox0328@gmail.com>
2026-04-16 13:50:39 +08:00
Fodesu 8e1ed3683f feat(agent): relax provider http timeouts (#348) 2026-04-15 00:07:41 +08:00
晨苒 38ac907361 chore(docs): update new memoh logo 2026-04-14 22:41:54 +08:00
Quincy 7cc7b959e2 fix: resolve bot styling issue (#375) 2026-04-14 22:31:30 +08:00
Acbox 5382c3cd27 feat(web): add sidebar collapse 2026-04-14 21:58:29 +08:00
Acbox 19d5cd606d chore: update AGENTS.md 2026-04-14 21:56:42 +08:00
Acbox 2a1c4a2e5f fix(providers): github copilot icon 2026-04-14 21:30:46 +08:00
Acbox 27d2b99301 feat: add immediate context compaction API, UI button, and /compact slash command
- Add POST /bots/:bot_id/sessions/:session_id/compact endpoint for
  synchronous context compaction with fallback to chat model when no
  dedicated compaction model is configured
- Add "Compact Now" button to session info panel in the web UI
- Add /compact slash command for triggering compaction from chat
- Regenerate OpenAPI spec and TypeScript SDK
2026-04-14 21:30:05 +08:00
Acbox 6328281fc2 fix: enforce speech/LLM isolation in providers and models
SQL queries (CountProviders, CountModels, ListModels, ListEnabledModels,
ListModelsByProviderID) now exclude speech types. Added IsLLMClientType
guard to prevent cross-domain queries via /models?client_type and
/providers/:id/import-models. Frontend provider forms no longer offer
edge-speech as a client type option.

Also fixed pre-existing SA5011 staticcheck warnings in proxy_test.go
and executor_test.go.
2026-04-14 21:07:27 +08:00
Acbox 84f1d0612a refactor: replace context_token_budget with model context_window for context trimming
The per-bot context_token_budget column was unused (no frontend UI) and
has been removed. Context trimming now derives the budget from the chat
model's context_window setting, which is already configured per model.
2026-04-14 21:04:42 +08:00
晨苒 cb44408277 fix(ci): avoid direct secrets access in tauri workflows 2026-04-14 06:51:06 +08:00
晨苒 4d5f3f9126 release: v0.7.0-beta.4 v0.7.0-beta.4 2026-04-14 06:44:07 +08:00
晨苒 fa48f59d38 fix(docker): docker-compose.yml typo 2026-04-14 06:43:30 +08:00
lijianlin 0c2527453b fix(schedule): use anyOf for nullable max_calls 2026-04-14 06:38:49 +08:00
晨苒 a076b232fc Merge branch 'pr/350' 2026-04-14 06:37:43 +08:00
晨苒 1739a7b671 Merge branch 'main' into pr/350 2026-04-14 06:33:19 +08:00