Acbox Liu
2f38662d4d
feat: heartbeat ( #108 )
...
* feat: heartbeat
* feat: independent heartbeat model
2026-02-25 16:32:52 +08:00
Ran
30fe3edc39
fix(release): switch to agent-bin and gzip-only embedded web
2026-02-24 22:29:15 +08:00
Ran
ffda558d24
feat(memoh): unify embedded runtime serving and release binaries
2026-02-24 19:39:01 +08:00
Ran
0c6a905317
feat(auth): implement JWT token refresh mechanism
2026-02-24 16:47:58 +08:00
Ran
5e12b5a53f
fix: ensure unifying on hardcoded /data mount path
2026-02-24 03:35:27 +08:00
Ran
65c4d6f793
feat(container): support for apple container
2026-02-23 22:40:46 +08:00
Acbox
8590c53f3d
feat(web): add sunagent, history, skills page
2026-02-23 15:49:28 +08:00
ringotypowriter
45e7362b44
Merge branch 'main' into fix/provider-scoped-model-id-resolution
2026-02-22 17:00:51 +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
ringotypowriter
8cd7c4aa86
Merge branch 'main' into fix/provider-scoped-model-id-resolution
2026-02-22 12:47:37 +08:00
Acbox Liu
c591af14b0
feat: bot inbox ( #77 )
...
* feat: bot inbox
* feat: unified header
* fix: missing tool_call usage
* feat: add group name in header
2026-02-22 01:27:24 +08:00
ringotypowriter
50bdbd519c
fix(models,settings,conversation): scope model_id uniqueness per
...
provider and harden model reference resolution
2026-02-21 22:31:32 +08:00
BBQ
4fc0ca5110
fix(container): propagate host timezone to all containers
...
Replace TZ env var with /etc/localtime bind-mount in docker-compose
and inject timezone spec opts into containerd bot containers.
2026-02-20 03:22:31 +08:00
BBQ
bc374fe8cd
refactor: content-addressed assets, cross-channel multimodal, infra simplification ( #63 )
...
* refactor(attachment): multimodal attachment refactor with snapshot schema and storage layer
- Add snapshot schema migration (0008) and update init/versions/snapshots
- Add internal/attachment and internal/channel normalize for unified attachment handling
- Move containerfs provider from internal/media to internal/storage
- Update agent types, channel adapters (Telegram/Feishu), inbound and handlers
- Add containerd snapshot lineage and local_channel tests
- Regenerate sqlc, swagger and SDK
* refactor(media): content-addressed asset system with unified naming
- Replace asset_id foreign key with content_hash as sole identifier
for bot_history_message_assets (pure soft-link model)
- Remove mime, size_bytes, storage_key from DB; derive at read time
via media.Resolve from actual storage
- Merge migrations 0008/0009 into single 0008; keep 0001 as canonical schema
- Add Docker initdb script for deterministic migration execution order
- Fix cross-channel real-time image display (Telegram → WebUI SSE)
- Fix message disappearing on refresh (null assets fallback)
- Fix file icon instead of image preview (mime derivation from storage)
- Unify AssetID → ContentHash naming across Go, Agent, and Frontend
- Change storage key prefix from 4-char to 2-char for directory sharding
- Add server-entrypoint.sh for Docker deployment migration handling
* refactor(infra): embedded migrations, Docker simplification, and config consolidation
- Embed SQL migrations into Go binary, removing shell-based migration scripts
- Consolidate config files into conf/ directory (app.example.toml, app.docker.toml, app.dev.toml)
- Simplify Docker setup: remove initdb.d scripts, streamline nginx config and entrypoint
- Remove legacy CLI, feishu-echo commands, and obsolete incremental migration files
- Update install script and docs to require sudo for one-click install
- Add mise tasks for dev environment orchestration
* chore: recover migrations
---------
Co-authored-by: Acbox <acbox0328@gmail.com >
2026-02-19 00:20:27 +08:00
Acbox
1294b4cf75
feat: connection test of provider
2026-02-18 18:52:26 +08:00
Acbox
d6c47472b2
refactor: move client_type key from provider to model
2026-02-18 18:30:27 +08:00
BBQ
df7876a30c
feat: add media asset system, channel lifecycle refactor, and chat attachments ( #54 )
2026-02-17 19:06:46 +08:00
斬風千雪
0bdc31311c
improvement(mcp): make CNI binary & data path configurable ( #55 )
2026-02-17 17:57:13 +08:00
Ringo.Typowriter
3aea635e44
fix: skill normalize ( #57 )
2026-02-17 17:55:07 +08:00
BBQ
b8a6a85fbb
fix(containerd): re-apply CNI network after server restart for running MCP tasks
...
Server container restart drops cni0 bridge, veth and iptables masquerade
in its network namespace while MCP tasks keep running in containerd.
Reconcile and ensureContainerAndTask now re-run SetupNetwork for already-
running tasks so outbound connectivity is restored.
2026-02-16 16:45:38 +08:00
Acbox
961ecbb96d
feat: search provider
2026-02-16 01:22:15 +08:00
Ran
7817ec8147
fix(web): channel switch failure
...
Also add webui memory page
2026-02-14 07:30:21 +08:00
BBQ
faaadf14c5
feat(channel): pass conversation type through to agent gateway and persist in route
...
Propagate conversation type (direct/group/thread) from channel adapters
all the way to the agent prompt. Store conversation_type on bot_channel_routes
so the bot knows whether a message originates from a p2p chat, group, or thread.
Schema changes are folded into the 0001 init migration (destructive update).
2026-02-13 06:22:24 +08:00
Ran
0406f42e86
feat: memory search/compact/rebuild api
2026-02-13 06:14:57 +08:00
BBQ
76dbae2844
feat(bots): per-key parallel health checks with MCP connection probing
...
- Refactor RuntimeChecker interface: CheckKeys() + RunCheck() for
individual check dispatch instead of batch-all
- Add GET /bots/:id/checks/keys to list all available check keys
- Add GET /bots/:id/checks/run/:key to evaluate a single check
- MCP ConnectionChecker probes each active connection independently
via tools/list with 8s timeout
- Keep container checks (init/record/task/data_path) as fast builtins
- Graceful network setup failure in containerd handler (log warning
instead of killing task) for containerd-in-docker compatibility
2026-02-13 02:43:23 +08:00
BBQ
fddacbb86d
fix(containerd): keep task running when network setup fails
...
In containerd-in-docker mode, SetupNetwork fails because netns is
unavailable. Previously this killed the task, making stdio MCP tools
unusable. Now the task continues running with a warning log, since
stdio MCP communication does not require networking.
2026-02-13 01:50:59 +08:00
BBQ
c7d66f89ab
feat(bots): MCP add/import merge, batch select and batch delete/export
2026-02-13 01:11:40 +08:00
BBQ
3a1aa31611
fix(mcp): move import/export routes to /mcp-ops to avoid /:id conflict
...
Echo router treats /mcp/import and /mcp/export as /mcp/:id matches.
Move to /bots/:bot_id/mcp-ops/import and /mcp-ops/export.
2026-02-13 00:47:44 +08:00
BBQ
9dd7135820
refactor(mcp): standard mcpServers input format with type inference
...
- Accept standard mcpServers item format (command/args/env/url/headers)
- Auto-infer connection type: command -> stdio, url -> http/sse
- Add PUT /bots/:bot_id/mcp/import for batch import from mcpServers dict
- Add GET /bots/:bot_id/mcp/export for standard format export
- Add UpsertMCPConnectionByName SQL for import upsert by name
- Preserve is_active state on import upsert
2026-02-13 00:25:42 +08:00
BBQ
85251a2905
refactor(core): codebase quality cleanup
...
- Remove user-level model settings (chat_model_id, memory_model_id,
embedding_model_id, max_context_load_time, language) from users table
- Merge migration 0002 into 0001, remove compatibility migrations
- Delete dead conversation/resolver.go (1177 lines, only flow/resolver.go used)
- Remove type aliases (Chat=Conversation, types_alias.go)
- Fix SQL: remove AND false stub, fix UpdateChatTitle model_id,
reset model IDs in DeleteSettings, add preauth expiry filter,
add ListMessages limit, remove 10 dead queries
- Extract shared handler helpers (RequireChannelIdentityID, AuthorizeBotAccess)
- Rename internal/router to internal/channel/inbound
- Fix identity confusion: remove UserID->ChannelIdentityID fallbacks
- Fix all _ = var patterns with proper error logging
- Fix error propagation: storeMessages, rescheduleJob, botContainerID
- Fix naming: ModelId->ModelID, active->is_active, Duration semantic fix
- Remove dead code: mcpService, ReplyTarget, callMCPServer, sshShellQuote,
buildSessionMetadata, ChatRequest.Language, TriggerPayload.ChatID
- Fix code quality: errors.Is(), remove goto, CreateHuman deprecated
- Remove Enable model endpoint and user-level settings CLI commands
- Regenerate sqlc, swagger, SDK
2026-02-12 23:50:48 +08:00
BBQ
c53d35740e
feat(deploy): self-contained containerd with embedded MCP image
...
- Add Dockerfile.containerd: multi-stage build that compiles MCP binary,
assembles rootfs, creates Docker image tar, and bundles it with containerd
- Add containerd-entrypoint.sh: auto-imports MCP image on first start
- Fix MCP image reference: rename busybox_image to image in config,
use fully-qualified docker.io/library/memoh-mcp:latest everywhere
- Make image ref configurable via config.toml instead of hardcoded
- Simplify deploy.sh: remove manual nerdctl/containerd-install steps
2026-02-12 23:50:48 +08:00
BBQ
1c15eb2146
refactor(core): restructure conversation/channel/message domains and modernize deployment
...
- Replace chat package with conversation flow architecture
- Add channel identity avatar support (migration 0002)
- Refactor channel adapters, identities, and message routing
- Update frontend: simplify composables, modernize UI components
- Improve Docker builds with cache mounts and version metadata
- Optimize healthchecks and simplify service dependencies
2026-02-12 20:55:03 +08:00
BBQ
ca5c6a1866
refactor(core): restructure conversation, channel and message domains
...
- Rename chat module to conversation with flow-based architecture
- Move channelidentities into channel/identities subpackage
- Add channel/route for routing logic
- Add message service with event hub
- Add MCP providers: container, directory, schedule
- Refactor Feishu/Telegram adapters with directory and stream support
- Add platform management page and channel badges in web UI
- Update database schema for conversations, messages and channel routes
- Add @memoh/shared package for cross-package type definitions
2026-02-12 15:34:40 +08:00
BBQ
75e2ef0467
merge(github): merge github/main, resolve index.ts URL conflict
...
Keep our defensive absolute-URL check in createAuthFetcher.
2026-02-12 14:45:49 +08:00
Ran
01cb6c85db
fix(deploy): many docker compose bug
2026-02-12 08:23:25 +08:00
BBQ
d99ba38b7d
merge(github): merge github/main, keep our code and docs/spec
2026-02-12 05:20:18 +08:00
BBQ
a75fdb8040
refactor(mcp): standardize unified tool gateway on go-sdk
...
Split business executors from federation sources and migrate unified tool/federation transports to the official go-sdk for stricter MCP compliance and safer session lifecycle handling. Add targeted regression tests for accept compatibility, initialization retries, pending cleanup, and include updated swagger artifacts.
2026-02-11 17:37:16 +08:00
BBQ
02b33c8e85
refactor(core): finalize user-centric identity and policy cleanup
...
Unify auth and chat identity semantics around user_id, enforce personal-bot owner-only authorization, and remove legacy compatibility branches in integration tests.
2026-02-11 15:49:38 +08:00
Acbox
a4199f0575
chore: move swagger docs to spec
2026-02-11 15:29:26 +08:00
Acbox
1f30e666e0
feat(web): use generate sdk
2026-02-11 15:23:47 +08:00
BBQ
06e8619a37
refactor(core): migrate channel identity and binding across app
...
Align channel identity and bind flow across backend and app-facing layers, including generated swagger artifacts and package lock updates while excluding docs content changes.
2026-02-11 14:51:58 +08:00
Acbox
77f7cf8808
feat: SOUL.md, IDENTITY.md, TOOLS.md
2026-02-09 22:45:06 +08:00
Acbox
4f5a8f5e64
feat: file operation restful api
2026-02-09 21:03:05 +08:00
Acbox Liu
8ea779779e
feat: mcp ( #31 )
...
* feat: add mcp connections table and related crud api
* feat: mcp-stdio api
2026-02-09 20:07:40 +08:00
Acbox
8ea2c0379d
Merge branch 'refactor/channel-gateway'
2026-02-08 22:34:50 +08:00
Ran
26dd8651b7
feat: go cni lifecycle manage
2026-02-08 21:39:34 +08:00
Acbox
318bd87f65
feat: skills
2026-02-08 01:57:06 +08:00
Ran
3f8cb3292c
chore: optimize code structure
2026-02-08 01:45:53 +08:00
Acbox
da671a658c
fix: mcp
2026-02-08 01:02:04 +08:00