倪程伟
6bf64449bd
fix(channel/feishu): register all IM event handlers to prevent HandlerNotFoundException ( #196 )
...
The Lark SDK throws HandlerNotFoundException for any event type without
a registered handler. This exception is caught internally by the SDK's
WebSocket client, which then sends a 500 response to the Feishu server.
The server may close the connection as a result, and the exception is
swallowed — never reaching the application layer.
Added empty handlers for all remaining IM event types:
- P2MessageReadV1 (read receipts)
- P2MessageRecalledV1 (message recall)
- P2ChatMemberBotDeletedV1 (bot removed from chat)
- P2ChatMemberUserAddedV1 / UserDeletedV1 / UserWithdrawnV1
- P2ChatUpdatedV1 (chat info update)
- P2ChatDisbandedV1 (chat disbanded)
- P2ChatAccessEventBotP2pChatEnteredV1 (bot entered p2p chat)
Also added explicit logback config for com.lark.oapi at WARN level
to ensure SDK internal errors are not silently filtered.
Refs: larksuite/oapi-sdk-java#185
2026-05-22 16:10:05 +08:00
matevip
26bf75fd2f
fix(ui): stop chat content clipping in a narrow message column
2026-05-22 14:09:18 +08:00
matevip
5f571e86a2
feat(agent,ui): multi-level subagent delegation tree
2026-05-22 13:44:01 +08:00
matevip
8bd8a02cd0
feat(agent,ui): nested subagent timeline + always-on plan panel
2026-05-22 09:48:06 +08:00
matevip
66af70388b
fix(goal): give reasoning models enough budget for the evaluator JSON
2026-05-21 22:27:43 +08:00
matevip
2a1b8cbcbf
fix(goal,ui): gate inline prompt by real long-task signal; soften copy
2026-05-21 22:27:33 +08:00
matevip
34175ab94d
fix(goal,ui): guard evaluating flag against the message_complete race
2026-05-21 22:27:25 +08:00
matevip
7d7ea99747
fix(goal): emit goal_evaluated on every GoalEvaluationNode skip path
2026-05-21 22:27:17 +08:00
matevip
81915ccfae
feat(tool): read_file can page through an oversized single line via startColumn ( #190 )
2026-05-21 22:27:09 +08:00
matevip
9e93c52d9a
fix(goal): real evaluator, retry refactor, hardened node + extra edges
2026-05-21 22:27:00 +08:00
matevip
495a5c126d
fix(goal,ui): wire evaluating halo, followup ↻ mark, dedupe system-line icon
2026-05-21 22:26:48 +08:00
matevip
c34e8290ac
feat(goal,ui): inline set-goal prompt, terminal system-line, sidebar dot
2026-05-21 22:26:40 +08:00
matevip
9c5ad29d42
chore(llm): drop unused imports, add XIAOMI_MIMO cross-turn cache tests
2026-05-21 17:24:53 +08:00
倪程伟
7861f603eb
fix(llm): MiMo thinking 模式 reasoning_content 多轮对话兼容修复 ( #189 )
...
MiMo V2 系列在 thinking 模式下,assistant 消息携带 tool_calls 时必须同时包含 reasoning_content,否则提供方返回 400。
- ModelFamily 新增 MIMO_THINKING 族,detect() 添加 mimo* 匹配
- FallbackPolicy 新增 XIAOMI_MIMO(patchCrossTurn=true, patchNonToolCall=true)
- 新增 ReasoningContentCache,按 tool_call_ids 回放真实推理内容
- 缓存作用范围:所有 patchCrossTurn=true 的 thinking provider(MiMo + DeepSeek)
- NodeStreamingChatHelper 流式响应完成后写入缓存
Closes #188
2026-05-21 17:15:35 +08:00
matevip
02407871f4
fix(goal,ui): unwrap R envelope correctly in goal store
2026-05-21 16:26:31 +08:00
matevip
e61b05bba0
fix(tool): read_file no longer returns empty content + infinite retry on oversized single lines ( #190 )
2026-05-21 16:26:24 +08:00
matevip
49d9eccaec
fix(goal,ui): center the avatar logo inside the ring wrapper
2026-05-21 16:26:18 +08:00
matevip
7e1ce66ace
fix(goal,ui): the ring rendered as a square — explicit box-shadow:none
2026-05-21 16:26:11 +08:00
matevip
a910004b3b
feat(agent): digital-employee builder skill to auto-create agents and chain them into a workflow ( #165 )
2026-05-21 16:26:04 +08:00
matevip
892bc652f2
fix(goal,ui): refine ring CSS — 5px breathing gap, same-hue track for layering
2026-05-21 16:25:57 +08:00
matevip
e8ec612ca8
docs: add user guide for the persistent-goal feature
2026-05-21 16:25:50 +08:00
matevip
2b6a4c64c9
fix(agent): add data-fidelity rules to summarizer prompts + fix fallback cut ( #187 )
2026-05-21 15:13:15 +08:00
matevip
03e68d3c74
fix(agent): structure-aware truncation to stop mid-JSON cuts inducing hallucination ( #187 )
2026-05-21 15:13:07 +08:00
matevip
43bbe26ff9
fix(goal,agent): expose goal management tools to every agent by default
2026-05-21 14:44:06 +08:00
matevip
c9e54e820f
fix(goal,ui): live ring update after agent-triggered setGoal / addGoalCriterion
2026-05-21 14:43:59 +08:00
matevip
89f8413db8
test(agent): sync LaneDPerformanceFixesTest with MAX_RETRIES bump
2026-05-21 14:43:52 +08:00
matevip
e61c9d46d3
fix(goal,ui): load active goal on conversation switch
2026-05-21 14:43:46 +08:00
matevip
efce3bc209
fix(goal): pin JSON wire form for GoalStatus to lowercase
2026-05-21 14:43:40 +08:00
matevip
746ade0410
feat(goal): flip enabled flag on, forward completions to long-term memory
2026-05-21 14:43:34 +08:00
matevip
3a0595d5bd
feat(goal,ui): Jobs-cut frontend for persistent goal
2026-05-21 14:43:28 +08:00
matevip
6646e91585
feat(goal): built-in tools for agent-driven goal management
2026-05-21 14:43:20 +08:00
matevip
ce74a0ae48
feat(goal): graph topology + evaluation node wired into ReAct + Plan-Execute
2026-05-21 14:43:13 +08:00
matevip
ac6c8a18e3
feat(goal): persistent cross-turn goal with self-evaluation scaffolding
2026-05-21 14:43:01 +08:00
matevip
51e6542a5a
feat(channel/qq): add scan-to-bind onboarding via QQ Open Platform Lite portal
2026-05-20 21:47:49 +08:00
matevip
b26bca1584
fix(qq): handle non-Map data in DISPATCH events ( #185 )
2026-05-20 21:47:43 +08:00
matevip
2d3afa6550
feat(sessions): paginate admin list, add back-nav, redesign with depth
2026-05-20 20:58:05 +08:00
matevip
fe62a98c8f
feat(chat-console): surface Sessions admin via header menu ( #183 )
2026-05-20 20:57:58 +08:00
matevip
82540a5fcb
docs(conversation): bilingualize ConversationService comments (en/zh)
2026-05-20 20:57:53 +08:00
matevip
86c5d871bf
style(settings-ui): make sub-nav collapse toggle a floating primary-tinted circle pinned to the nav bottom
2026-05-20 20:57:48 +08:00
matevip
6a4318c268
fix(channel): IM conversations respect per-conversation model selection ( #183 )
2026-05-20 17:49:03 +08:00
倪程伟
d7378273b2
fix(llm): classify "network connection error" as retryable SERVER_ERROR ( #179 )
...
Some providers (notably SiliconFlow) return "network connection error" in the response body when their backend is overloaded or the upstream model connection is disrupted. classifyError() had no pattern for this string, so it fell through to UNKNOWN (non-retryable), surfacing the raw error to the user on the first failure instead of running the exponential-backoff recovery. Adds the pattern to the SERVER_ERROR classifier and a friendly message mapping in extractUserFriendlyError(); bumps MAX_RETRIES from 5 to 10 so sustained wiki batch load can ride out provider flaps without surfacing an error to the channel user.
Closes #178
2026-05-20 16:49:54 +08:00
matevip
43136fc663
fix(channel): sweep orphan tool rows + guard rules; scope rule name to channel
2026-05-20 16:35:57 +08:00
matevip
12ff190392
feat(feishu): transcribe inbound voice messages via SttService
2026-05-20 16:35:46 +08:00
matevip
6b4456043e
fix(feishu): outbound generated-file URLs become native attachments
2026-05-20 16:01:03 +08:00
matevip
6b397a10ed
feat(feishu): inbound file/audio/video download — SDK path + cache push
2026-05-20 15:53:40 +08:00
matevip
71e08b015e
sync: Feishu approval card 5-chain hotfix — verified end-to-end in production
2026-05-20 15:24:47 +08:00
matevip
090bb64c6a
sync: Feishu channel-native tool provider + DbRuleGuardian generic guard
2026-05-20 12:29:29 +08:00
matevip
85d7ee23c4
sync: ChannelToolProvider SPI + node-local reconcile framework for channel-native tools
2026-05-20 12:18:51 +08:00
matevip
a9fa8e7fb1
sync: interactive approval card on Feishu via Schema-2.0 button + card.action callback
2026-05-20 12:05:47 +08:00
matevip
3554da8dbc
sync: inject sender context into agent prompt + Feishu DONE ack hook
2026-05-20 11:51:58 +08:00