Acbox
e7844dfa89
release: v0.5.0-beta.1
2026-03-14 17:30:48 +08:00
晨苒
627b673a5c
refactor: multi-provider memory adapters with scan-based builtin ( #227 )
...
* refactor: restructure memory into multi-provider adapters, remove manifest.json dependency
- Rename internal/memory/provider to internal/memory/adapters with per-provider subdirectories (builtin, mem0, openviking)
- Replace manifest.json-based delete/update with scan-based index from daily files
- Add mem0 and openviking provider adapters with HTTP client, chat hooks, MCP tools, and CRUD
- Wire provider lifecycle into registry (auto-instantiate on create, evict on update/delete)
- Split docker-compose into base stack + optional overlays (qdrant, browser, mem0, openviking)
- Update admin UI to support dynamic provider config schema rendering
* chore(lint): fix all golangci-lint issues for clean CI
* refactor(docker): replace compose overlay files with profiles
* feat(memory): add built-in memory multi modes
* fix(ci): golangci lint
* feat(memory): edit built-in memory sparse design
2026-03-14 06:04:13 +08:00
Fodesu
b46e494d3a
feat(tts): introduce TTS system ( #195 )
2026-03-13 02:49:52 +08:00
Acbox
fe04c5722b
release: v0.4.3
2026-03-11 20:57:52 +08:00
Acbox
1da251885d
feat(agent): add extensible tag interception system and inline reactions
...
Refactor the attachment tag extraction into a generic TagResolver/StreamTagExtractor
system that supports multiple custom tags. Implement <reactions> tag allowing the
agent to embed emoji reactions directly in text responses, dispatched as side-effects
through the channel reactor interface.
- Add TagResolver interface and StreamTagExtractor streaming state machine
- Refactor AttachmentsStreamExtractor as backward-compatible wrapper
- Add reactionsResolver and ReactionDeltaAction stream event
- Wire reaction dispatch in Go channel inbound processor
- Fix .gitignore to scope compiled binary patterns to repo root
2026-03-11 17:43:30 +08:00
Acbox
30653fbdbf
fix(agent): reject send tool when targeting the same conversation
...
Pass replyTarget through the full pipeline (ChatRequest → gateway
identity → agent headers → MCP session) so the send tool can detect
when the destination matches the current conversation and return an
error guiding the agent to reply directly instead.
2026-03-11 16:59:42 +08:00
Acbox Liu
23d49a1c7b
feat: message abort and web socket support ( #222 )
...
* feat: message abort and web socket support
* fix(web): chat end
* fix: lint
* fix: lint
2026-03-09 23:27:50 +08:00
Acbox
99114d2521
Merge branch 'v0.4'
2026-03-07 18:26:46 +08:00
Acbox
c70d452238
release: v0.4.2
2026-03-07 18:20:46 +08:00
Ringo.Typowriter
e6a6dbe3f6
feat(channel): add QQ channel support and image message pipeline ( #199 )
...
* feat(channel): add qq adapter and outbound delivery
* feat(channel): ingest inbound qq messages
* feat(web): expose qq channel in management ui
* feat(channel): support qq attachment ingestion
* fix(mcp): fail read raw immediately for missing files
* fix(agent): parse inline image data into native image parts
* test(agent): align read_media tool tests with SDK options
* fix(channel): harden qq image delivery and reconnect loop
Avoid data URLs for qq channel images, reset reconnect backoff after healthy sessions, and fall back gracefully for malformed public image URLs.
* fix(channel): restore qq media delivery and target resolution
* fix(qq,mcp,agent): fix message/qq regressions and pass go lint
* fix(qq,agent): validate inline base64 and sync heartbeat seq
* fix(qq): validate remote voice mime for upload checks
* fix(qq): fall back intents and restore adapter wiring
* fix(qq): prevent final text leakage and dedupe persisted inbound query
2026-03-07 17:12:06 +08:00
Acbox
7f3f8ce2e5
release: v0.4.1
2026-03-07 16:02:53 +08:00
Acbox
d4749ab322
release: v0.4.0
2026-03-07 15:33:43 +08:00
Acbox
4109a141f9
feat: move all tools from @memoh/agent into built-in mcp
2026-03-06 16:48:18 +08:00
Acbox
387ac50030
release: v0.3.1
2026-03-05 00:44:50 +08:00
Acbox
1ccf6fd80e
release: v0.3.0
2026-03-04 23:56:46 +08:00
Acbox
ffb59d0c3b
fix(agent): thinking failed with openai-completions model
2026-03-04 23:50:27 +08:00
BBQ
a8b960db80
fix(agent): replace jsdom with linkedom to fix Docker EISDIR error ( #186 )
...
jsdom relies on Node.js-specific APIs that Bun cannot properly resolve
when running a bundled artifact. This caused an EISDIR error in Docker
containers (Bun tried to read the jsdom directory as a file).
Replace jsdom with linkedom, a lightweight pure-JS DOM implementation
that is fully compatible with Bun and @mozilla/readability. Also remove
the --external jsdom build flag since linkedom bundles cleanly.
Closes #181
2026-03-04 22:11:08 +08:00
Ringo.Typowriter
0a2a17ecc8
feat(agent): add readMedia tool for model to view the image ( #165 )
...
* feat(agent): add readMedia tool for loading local images into model
context
* feat(channel/inbound): include container attachment refs in inbound
query
* fix(agent): preserve ImagePart literal typing in buildNativeImageParts
* chore: rename tool
---------
Co-authored-by: 晨苒 <16112591+chen-ran@users.noreply.github.com >
2026-03-04 11:24:01 +08:00
Acbox
f0517a3a1f
fix: inbox indirectly push notidy item into context
2026-03-03 20:38:36 +08:00
Acbox Liu
ea719f7ca7
refactor: memory provider ( #140 )
...
* refactor: memory provider
* fix: migrations
* feat: divide collection from different built-in memory
* feat: add `MEMORY.md` and `PROFILES.md`
* use .env for docker compose. fix #142 (#143 )
* feat(web): add brand icons for search providers (#144 )
Add custom FontAwesome icon definitions for all 9 search providers:
- Yandex: uses existing faYandex from FA free brands
- Tavily, Jina, Exa, Bocha, Serper: custom icons from brand SVGs
- DuckDuckGo, SearXNG, Sogou: custom icons from Simple Icons
Icons are registered with a custom 'fac' prefix and rendered as
monochrome (currentColor) via FontAwesome's standard rendering.
* fix: resolve multiple UI bugs (#147 )
* feat: add email service with multi-adapter support (#146 )
* feat: add email service with multi-adapter support
Implement a full-stack email service with global provider management,
per-bot bindings with granular read/write permissions, outbox audit
storage, and MCP tool integration for direct mailbox access.
Backend:
- Email providers: CRUD with dynamic config schema (generic SMTP/IMAP, Mailgun)
- Generic adapter: go-mail (SMTP) + go-imap/v2 (IMAP IDLE real-time push via
UnilateralDataHandler + UID-based tracking + periodic check fallback)
- Mailgun adapter: mailgun-go/v5 with dual inbound mode (webhook + poll)
- Bot email bindings: per-bot provider binding with independent r/w permissions
- Outbox: outbound email audit log with status tracking
- Trigger: inbound emails push notification to bot_inbox (from/subject only,
LLM reads full content on demand via MCP tools)
- MailboxReader interface: on-demand IMAP queries for listing/reading emails
- MCP tools: email_accounts, email_send, email_list (paginated mailbox),
email_read (by UID) — all with multi-binding and provider_id selection
- Webhook: /email/mailgun/webhook/:config_id (JWT-skipped, signature-verified)
- DB migration: 0019_add_email (email_providers, bot_email_bindings, email_outbox)
Frontend:
- Email Providers page: /email-providers with MasterDetailSidebarLayout
- Dynamic config form rendered from ordered provider meta schema with i18n keys
- Bot detail: Email tab with bindings management + outbox audit table
- Sidebar navigation entry
- Full i18n support (en + zh)
- Auto-generated SDK from Swagger
Closes #17
* feat(email): trigger bot conversation immediately on inbound email
Instead of only storing an inbox item and waiting for the next chat,
the email trigger now proactively invokes the conversation resolver
so the bot processes new emails right away — aligned with the
schedule/heartbeat trigger pattern.
* fix: lint
---------
Co-authored-by: Acbox <acbox0328@gmail.com >
* chore: update AGENTS.md
* feat: files preview
* feat(web): improve MCP details page
* refactor(skills): import skill with pure markdown string
* merge main into refactor/memory
* fix: migration
* refactor: temp delete qdrant and bm25 index
* fix: clean merge code
* fix: update memory handler
---------
Co-authored-by: Leohearts <leohearts@leohearts.com >
Co-authored-by: Menci <mencici@msn.com >
Co-authored-by: Quincy <69751197+dqygit@users.noreply.github.com >
Co-authored-by: BBQ <35603386+HoneyBBQ@users.noreply.github.com >
Co-authored-by: Ran <16112591+chen-ran@users.noreply.github.com >
2026-03-03 15:33:50 +08:00
Ringo.Typowriter
d3edd17d90
feat(agent): loop detection ( #152 )
...
* feat(loop-detection): add configurable text and tool loop guards
* style(web): remove duplicate separator in bot settings
2026-03-02 15:00:09 +08:00
Acbox
dc6f9bee89
release: v0.2.0
2026-03-01 18:04:54 +08:00
Acbox
d69daeff68
release: v0.2.0-beta.1
2026-03-01 16:31:06 +08:00
斬風千雪
d4ad1597e3
fix(agent): force flush remaining text before call tools ( #134 )
2026-02-26 23:59:49 +08:00
Acbox Liu
fe10abf3fc
refactor: inbox ( #137 )
...
* refactor: inbox
* fix: migrations
* fix: migrations
2026-02-26 20:16:02 +08:00
Acbox Liu
2f38662d4d
feat: heartbeat ( #108 )
...
* feat: heartbeat
* feat: independent heartbeat model
2026-02-25 16:32:52 +08:00
Ran
d92993e56e
release: v0.1.2
2026-02-24 23:39:52 +08:00
Ran
6f392cbb90
release: v0.1.1
2026-02-24 20:55:52 +08:00
Acbox
bd28c624b9
release: v0.1.0
2026-02-24 03:47:07 +08:00
Ran
5e12b5a53f
fix: ensure unifying on hardcoded /data mount path
2026-02-24 03:35:27 +08:00
Acbox
7ada20967a
release: v0.1.0-beta.7
2026-02-23 14:49:18 +08:00
Acbox Liu
17cd077f34
feat: add thinking support ( #100 )
...
* feat: add thinking support
* feat: improve thinking block render in web and filter thinking content in channels
* fix: migrate
2026-02-23 14:41:27 +08:00
Acbox
18535f97f2
feat: improve prompts
2026-02-23 14:18:41 +08:00
Ran
efbf7be0da
release: v0.1.0-beta.6
2026-02-23 06:29:08 +08:00
Acbox
da9d64e508
fix(agent): tell agent that when to use tools and when to respond directly
2026-02-23 04:38:13 +08:00
Acbox
b560e17723
fix(typo): mesasage -> message
2026-02-23 00:34:17 +08:00
Acbox
ac929f9f44
feat: add message id in user header
2026-02-23 00:06:15 +08:00
Acbox
c17d56c9d1
feat: improve system prompts
2026-02-22 23:40:48 +08:00
Acbox Liu
ee0aa319e2
feat: add restful apis of container file system ( #92 )
...
* feat: add restful apis of container file system
* feat: add fs tools in agent
2026-02-22 16:42:30 +08:00
Acbox
928b0c0ee5
refactor: subagent usage and related tools
2026-02-22 16:35:50 +08:00
Acbox
3669027c95
fix(typo): ./packages/agent/README.md
2026-02-22 02:08:04 +08:00
Acbox Liu
e6d70b523e
refactor: divide agent logic and gateway into different package ( #90 )
...
* feat: add @memoh/agent
* chore: use @memoh/agent in @memoh-gateway
2026-02-22 02:06:47 +08:00
Acbox
0e56c85233
refactor: remove all ts packages will no longer be used
2026-01-29 01:38:28 +08:00
Acbox
0711b1f086
feat: agent gateway
2026-01-28 14:00:28 +08:00
Acbox
65e03f0b1e
feat: increase max-step of agent
2026-01-17 13:12:49 +08:00
Acbox
9ee8b19475
feat: container
2026-01-15 20:10:37 +08:00
Acbox
a61a1e76b2
chore: tied project
2026-01-15 02:15:11 +08:00
Acbox
1945e9bfbf
fix: close mcp client on finish
2026-01-15 00:02:29 +08:00
Acbox
ce99749bdb
feat: mcp
2026-01-14 23:57:38 +08:00
Acbox
3094cb19fb
refactor: rename project from memohome to memoh
2026-01-12 17:31:21 +08:00