Commit Graph

785 Commits

Author SHA1 Message Date
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
aki 3509947bc0 Fix dangling tool call history 2026-04-14 06:23:48 +08:00
Fodesu 3945bd913d test(agent): satisfy lint for generate loop tests 2026-04-14 06:23:01 +08:00
Fodesu 33461d7ac1 fix(agent): stop generate loop aborts correctly 2026-04-14 06:23:01 +08:00
Fodesu 59147b255d fix(agent): guard tool loop state against concurrent tool execution 2026-04-14 06:23:01 +08:00
晨苒 1a6d12a137 feat(cli): add bots and docker compose commands 2026-04-14 06:22:00 +08:00
晨苒 d50eeea114 reactor(cli): move memoh cli to tui
1. Split the oversized `cmd/agent` entrypoint into a multi-file package and update dev/build scripts to use the package path instead of compiling `main.go` directly.
2. Add a new `memoh` terminal UI for local bot chat, with Bubble Tea
2026-04-14 06:22:00 +08:00
晨苒 8c9f222783 fix(ui): add acl template tooltip 2026-04-14 05:51:38 +08:00
BBQ 60517bc2a6 feat(acl): add bot security policy presets
Initialize new bots with preset ACL templates and an allow-by-default fallback so common access setups can be selected during bot creation instead of being configured manually afterward.
2026-04-14 05:51:38 +08:00
aki 0e6c8ca451 fix(telegram): dedupe repeated inbound updates 2026-04-14 05:15:45 +08:00
BBQ 447d647aef fix(sqlc): cast optional scalar settings args (#370)
Add explicit scalar casts for optional timezone and context token budget fields so sqlc can parse UpsertBotSettings again. Regenerating sqlc also syncs the stale generated bot/query structs that drifted from the schema.
2026-04-14 04:36:44 +08:00
Acbox 6100b966f8 release: v0.7.0-beta.3 v0.7.0-beta.3 2026-04-14 01:16:06 +08:00
Acbox 7255056f28 feat(icons): add github-copilot icon 2026-04-14 01:13:49 +08:00
EYHN c4114227e5 feat(agent): add background task execution and notifications (#365) 2026-04-13 20:28:42 +08:00
LiBr df8fbd8859 feat(provider): add github copilot device flow provider (#364) 2026-04-13 19:38:33 +08:00
KasuganoSora a40207ab6d feat: Misskey channel adapter, agent reliability hardening & stream error resilience (#359) 2026-04-13 17:10:50 +08:00
Acbox 26b01cc463 fix(media): failed to store the media to /data/media and add image part 2026-04-13 12:58:08 +08:00
Acbox d46269de89 feat(command): improve slash command UX (#361)
Make slash commands easier to navigate in chat by splitting help into levels, compacting list output, and surfacing current selections for model, search, memory, and browser settings. Also route /status to the active conversation session and add an access inspector so users can understand their current command and ACL context.
2026-04-13 12:37:12 +08:00
Chrys c9c221e35d fix(web): constrain skills editor dialog layout (#363) 2026-04-12 23:30:41 +08:00
晨苒 6b9e69b514 chore(ci): add tauri macOS signing 2026-04-11 23:41:54 +08:00
Acbox 3307b27a80 feat(web): add timezone setup for each bot 2026-04-11 19:39:17 +08:00
Acbox bb6c3c826e chore(ci): update trigger condition for actions 2026-04-11 19:31:48 +08:00
Acbox Liu 7a21fd5f07 feat: ui message (#357) 2026-04-11 13:29:41 +08:00
BBQ f376a2abe3 fix(channel): add wechatoa webhook delivery and proxy config (#356)
Unify webhook handling across channel adapters and add the WeChat Official Account channel so inbound routing and replies work without platform-specific handlers. Add adapter-scoped proxy support and stable config field ordering so restricted network environments can deliver WeChat and Telegram messages reliably.
2026-04-10 21:26:11 +08:00
Ming Lin 4d3f2de7e2 feat: Add GPU CDI support for workspace containers (#332)
* feat: add CDI GPU support for workspace containers

* feat: expose GPU CDI settings in bot container UI

* feat: move GPU settings into advanced container options

* docs: document advanced CDI device configuration
2026-04-10 14:52:17 +08:00
Cocoon-Break 5159405913 fix(test): use proto.Clone to avoid copylocks lint error 2026-04-10 08:54:10 +08:00
Fodesu 19619d73a9 fix(chat): respect override model selection (#354) 2026-04-10 02:31:29 +08:00
EYHN f2fa845e16 fix(bridge): close stdout/stderr pipes on exec timeout to prevent stream hang (#351) 2026-04-09 21:43:11 +08:00
BBQ d3bf6bc90a fix(channel,attachment): channel quality refactor & attachment pipeline fixes (#349)
* feat(channel): add DingTalk channel adapter

- Add DingTalk channel adapter (`internal/channel/adapters/dingtalk/`) using dingtalk-stream-sdk-go, supporting inbound message receiving and outbound text/markdown reply
- Register DingTalk adapter in cmd/agent and cmd/memoh
- Add go.mod dependency: github.com/memohai/dingtalk-stream-sdk-go
- Add Dingtalk and Wecom SVG icons and Vue components to @memohai/icon
- Refactor existing icon components to remove redundant inline wrappers
- Add `channelTypeDisplayName` util for consistent channel label resolution
- Add DingTalk/WeCom i18n entries (en/zh) for types and typesShort
- Extend channel-icon, bot-channels, channel-settings-panel to support dingtalk/wecom
- Use channelTypeDisplayName in profile page to replace ad-hoc i18n lookup

* fix(channel,attachment): channel quality refactor & attachment pipeline fixes

Channel module:
- Fix RemoveAdapter not cleaning connectionMeta (stale status leak)
- Fix preparedAttachmentTypeFromMime misclassifying image/gif
- Fix sleepWithContext time.After goroutine/timer leak
- Export IsDataURL/IsHTTPURL/IsDataPath, dedup across packages
- Cache OutboundPolicy in managerOutboundStream to avoid repeated lookups
- Split OutboundAttachmentStore: extract ContainerAttachmentIngester interface
- Add ManagerOption funcs (WithInboundQueueSize, WithInboundWorkers, WithRefreshInterval)
- Add thread-safety docs on OutboundStream / managerOutboundStream
- Add debug logs on successful send/edit paths
- Expand outbound_prepare_test.go with 21 new cases
- Convert no-receiver adapter helpers to package-level funcs; drop unused params

DingTalk adapter:
- Implement AttachmentResolver: download inbound media via /v1.0/robot/messageFiles/download
- Fix pure-image inbound messages failing due to missing resolver

Attachment pipeline:
- Fix images invisible to LLM in pipeline (DCP) path: inject InlineImages into
  last user message when cfg.Query is empty
- Fix public_url fallback: skip direct URL-to-LLM when ContentHash is set,
  always prefer inlined persisted asset
- Inject path: carry ImageParts through agent.InjectMessage; inline persisted
  attachments in resolver inject goroutine so mid-stream images reach the model
- Fix ResolveMime for images: prefer content-sniffed MIME over platform-declared
  MIME (fixes Feishu sending image/png header for actual JPEG content → API 400)
2026-04-09 14:36:11 +08:00
kuishou68 8b47382b6a fix: preserve exec exit code after stream cancellation 2026-04-09 11:55:21 +08:00
Acbox fffe5ac34f fix(web): start WS/SSE connections even when bot has no sessions
When a new bot had no sessions, initialize() returned early without
starting WebSocket, message events SSE, or local stream SSE. This
caused the first conversation to hang because stream events had no
delivery channel to reach the frontend.
2026-04-08 22:50:07 +08:00
Acbox a71f2ad529 chore(dev): add minify dev mode 2026-04-08 22:15:48 +08:00
晨苒 48da4e026e release: v0.7.0-beta.2 v0.7.0-beta.2 2026-04-08 02:52:24 +08:00
Quicy fb71f5a5f1 fix: clear loading on request failure 2026-04-08 01:35:30 +08:00
Quicy 18e19cc176 fix(ui): fix text alignment in chat and sidebar hover style issue 2026-04-08 01:35:30 +08:00