fix(hub): agent 会话记忆在配置变更/发版后丢失 + Feishu thread 400 (#19)

Co-authored-by: Hong Jiarong <me@jrhim.com>
Co-committed-by: Hong Jiarong <me@jrhim.com>
This commit is contained in:
2026-07-20 22:45:42 +08:00
committed by 洪佳荣
parent 5f668d71a2
commit 54b9fee22c
5 changed files with 85 additions and 21 deletions
+10 -5
View File
@@ -7,8 +7,10 @@
*
* - `trigger_message` / `reply`: `message.get` by message_id.
* - `status_card`: the run's status card message — same `message.get` by id.
* - `thread`: lark's thread replies. The SDK exposes `message.list` with a
* `parent_message_id` filter; we map "thread" to that.
* - `thread`: lark's thread replies. `im.v1.message.list` with
* `container_id_type="thread"` and `container_id` = the thread_id (NOT a
* message_id, which Feishu rejects with 230001). The caller supplies the
* thread_id via `args.id`; the trigger context exposes it as `thread_id`.
*
* The lark SDK's `im.v1.message` methods are dynamic at runtime (weak types);
* we cast through a known request/response shape and return a compact JSON for
@@ -69,11 +71,14 @@ export async function readFeishuContext(
return JSON.stringify(compact(msg));
}
case "thread": {
// Thread = replies to a parent message. `container_id` is the parent's
// message_id; container_id_type=message_id scopes the list to that thread.
// Thread = replies to a topic. Feishu's `im.v1.message.list` scopes
// thread replies when `container_id_type="thread"` and `container_id`
// is the thread_id (NOT a message_id — that is rejected with 230001
// "invalid container_id_type"). The caller supplies the thread_id via
// `args.id`; the trigger context exposes it as `thread_id`.
const res = await api.list({
params: {
container_id_type: "message_id",
container_id_type: "thread",
container_id: args.id,
page_size: 50,
},