@ai-setting/roy-agent-core 1.7.93 → 1.7.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/env/event-source/event-source-handlers.js +4 -4
- package/dist/env/event-source/index.js +5 -5
- package/dist/env/index.js +7 -7
- package/dist/env/task/index.js +1 -1
- package/dist/env/task/plugins/index.js +2 -2
- package/dist/env/task/plugins/lark-card-action-handler.d.ts +58 -3
- package/dist/env/task/plugins/lark-card-patch-notifier.d.ts +130 -0
- package/dist/env/task/plugins/lark-card-patch-notifier.js +5 -1
- package/dist/env/task/plugins/lark-card-state-store.d.ts +8 -0
- package/dist/env/task/plugins/lark-cli-task-notify-plugin.d.ts +75 -0
- package/dist/env/task/task-component.d.ts +25 -0
- package/dist/env/workflow/plugins/index.js +2 -2
- package/dist/index.js +7 -7
- package/dist/shared/@ai-setting/{roy-agent-core-px73ewzd.js → roy-agent-core-57q8a049.js} +223 -10
- package/dist/shared/@ai-setting/{roy-agent-core-33n84tf9.js → roy-agent-core-6bga36qk.js} +63 -3
- package/dist/shared/@ai-setting/{roy-agent-core-mp7sqfb5.js → roy-agent-core-83n2nvdp.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-0yzxapfa.js → roy-agent-core-ddp3n8cb.js} +150 -5
- package/dist/shared/@ai-setting/{roy-agent-core-v3wm8gyj.js → roy-agent-core-h3j1z13p.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-vz886vr8.js → roy-agent-core-pc2z7kwy.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-aeh7qg1r.js → roy-agent-core-vw4gv5am.js} +21 -3
- package/package.json +1 -1
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
resolveLarkChannelSystemPrompt,
|
|
18
18
|
timerHandler,
|
|
19
19
|
wecomCliHandler
|
|
20
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
20
|
+
} from "../../shared/@ai-setting/roy-agent-core-6bga36qk.js";
|
|
21
21
|
import"../../shared/@ai-setting/roy-agent-core-ev110pkx.js";
|
|
22
22
|
import {
|
|
23
23
|
cliCommandHandler
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import"../../shared/@ai-setting/roy-agent-core-mgmp2gfm.js";
|
|
26
26
|
import"../../shared/@ai-setting/roy-agent-core-kfspjx59.js";
|
|
27
27
|
import"../../shared/@ai-setting/roy-agent-core-2stt4rp5.js";
|
|
28
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
28
|
+
import"../../shared/@ai-setting/roy-agent-core-57q8a049.js";
|
|
29
29
|
import"../../shared/@ai-setting/roy-agent-core-th8fq714.js";
|
|
30
30
|
import"../../shared/@ai-setting/roy-agent-core-c4ec7k0p.js";
|
|
31
31
|
import"../../shared/@ai-setting/roy-agent-core-brw8wp2q.js";
|
|
@@ -34,8 +34,8 @@ import"../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
|
|
|
34
34
|
import"../../shared/@ai-setting/roy-agent-core-msktt7y7.js";
|
|
35
35
|
import"../../shared/@ai-setting/roy-agent-core-m46fe3x4.js";
|
|
36
36
|
import"../../shared/@ai-setting/roy-agent-core-4rtg69cn.js";
|
|
37
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
38
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
37
|
+
import"../../shared/@ai-setting/roy-agent-core-h3j1z13p.js";
|
|
38
|
+
import"../../shared/@ai-setting/roy-agent-core-ddp3n8cb.js";
|
|
39
39
|
import"../../shared/@ai-setting/roy-agent-core-418zc9ha.js";
|
|
40
40
|
import"../../shared/@ai-setting/roy-agent-core-pxqz1d1m.js";
|
|
41
41
|
import"../../shared/@ai-setting/roy-agent-core-bwyc2j0n.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import"../../shared/@ai-setting/roy-agent-core-m1fgtnrc.js";
|
|
2
2
|
import {
|
|
3
3
|
EventSourceComponent
|
|
4
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
4
|
+
} from "../../shared/@ai-setting/roy-agent-core-83n2nvdp.js";
|
|
5
5
|
import {
|
|
6
6
|
BountyIMInstance,
|
|
7
7
|
COMMAND_PREFIX,
|
|
@@ -56,7 +56,7 @@ import {
|
|
|
56
56
|
translateCardActionToCommand,
|
|
57
57
|
wecomCliHandler,
|
|
58
58
|
writeFallbackModelList
|
|
59
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
59
|
+
} from "../../shared/@ai-setting/roy-agent-core-6bga36qk.js";
|
|
60
60
|
import {
|
|
61
61
|
BUILT_IN_EVENT_SOURCE_TYPES,
|
|
62
62
|
BUILT_IN_EVENT_SOURCE_TYPE_LIST,
|
|
@@ -76,7 +76,7 @@ import {
|
|
|
76
76
|
import"../../shared/@ai-setting/roy-agent-core-mgmp2gfm.js";
|
|
77
77
|
import"../../shared/@ai-setting/roy-agent-core-kfspjx59.js";
|
|
78
78
|
import"../../shared/@ai-setting/roy-agent-core-2stt4rp5.js";
|
|
79
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
79
|
+
import"../../shared/@ai-setting/roy-agent-core-57q8a049.js";
|
|
80
80
|
import"../../shared/@ai-setting/roy-agent-core-th8fq714.js";
|
|
81
81
|
import"../../shared/@ai-setting/roy-agent-core-c4ec7k0p.js";
|
|
82
82
|
import {
|
|
@@ -90,8 +90,8 @@ import"../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
|
|
|
90
90
|
import"../../shared/@ai-setting/roy-agent-core-msktt7y7.js";
|
|
91
91
|
import"../../shared/@ai-setting/roy-agent-core-m46fe3x4.js";
|
|
92
92
|
import"../../shared/@ai-setting/roy-agent-core-4rtg69cn.js";
|
|
93
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
94
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
93
|
+
import"../../shared/@ai-setting/roy-agent-core-h3j1z13p.js";
|
|
94
|
+
import"../../shared/@ai-setting/roy-agent-core-ddp3n8cb.js";
|
|
95
95
|
import"../../shared/@ai-setting/roy-agent-core-418zc9ha.js";
|
|
96
96
|
import"../../shared/@ai-setting/roy-agent-core-pxqz1d1m.js";
|
|
97
97
|
import"../../shared/@ai-setting/roy-agent-core-bwyc2j0n.js";
|
package/dist/env/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BaseEnvironment
|
|
3
|
-
} from "../shared/@ai-setting/roy-agent-core-
|
|
3
|
+
} from "../shared/@ai-setting/roy-agent-core-pc2z7kwy.js";
|
|
4
4
|
import {
|
|
5
5
|
TaskComponent
|
|
6
|
-
} from "../shared/@ai-setting/roy-agent-core-
|
|
6
|
+
} from "../shared/@ai-setting/roy-agent-core-vw4gv5am.js";
|
|
7
7
|
import"../shared/@ai-setting/roy-agent-core-jzmk4kdh.js";
|
|
8
8
|
import"../shared/@ai-setting/roy-agent-core-jm136jzh.js";
|
|
9
9
|
import"../shared/@ai-setting/roy-agent-core-m4x47ne9.js";
|
|
@@ -15,11 +15,11 @@ import"../shared/@ai-setting/roy-agent-core-bcv09vrt.js";
|
|
|
15
15
|
import"../shared/@ai-setting/roy-agent-core-p5cz9m8v.js";
|
|
16
16
|
import {
|
|
17
17
|
EventSourceComponent
|
|
18
|
-
} from "../shared/@ai-setting/roy-agent-core-
|
|
18
|
+
} from "../shared/@ai-setting/roy-agent-core-83n2nvdp.js";
|
|
19
19
|
import {
|
|
20
20
|
builtInHandlers,
|
|
21
21
|
larkCliHandler
|
|
22
|
-
} from "../shared/@ai-setting/roy-agent-core-
|
|
22
|
+
} from "../shared/@ai-setting/roy-agent-core-6bga36qk.js";
|
|
23
23
|
import {
|
|
24
24
|
EventSourceInitHooks,
|
|
25
25
|
getDefaultConfigForType,
|
|
@@ -31,7 +31,7 @@ import"../shared/@ai-setting/roy-agent-core-64py47c3.js";
|
|
|
31
31
|
import"../shared/@ai-setting/roy-agent-core-mgmp2gfm.js";
|
|
32
32
|
import"../shared/@ai-setting/roy-agent-core-kfspjx59.js";
|
|
33
33
|
import"../shared/@ai-setting/roy-agent-core-2stt4rp5.js";
|
|
34
|
-
import"../shared/@ai-setting/roy-agent-core-
|
|
34
|
+
import"../shared/@ai-setting/roy-agent-core-57q8a049.js";
|
|
35
35
|
import"../shared/@ai-setting/roy-agent-core-th8fq714.js";
|
|
36
36
|
import"../shared/@ai-setting/roy-agent-core-c4ec7k0p.js";
|
|
37
37
|
import"../shared/@ai-setting/roy-agent-core-brw8wp2q.js";
|
|
@@ -40,8 +40,8 @@ import"../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
|
|
|
40
40
|
import"../shared/@ai-setting/roy-agent-core-msktt7y7.js";
|
|
41
41
|
import"../shared/@ai-setting/roy-agent-core-m46fe3x4.js";
|
|
42
42
|
import"../shared/@ai-setting/roy-agent-core-4rtg69cn.js";
|
|
43
|
-
import"../shared/@ai-setting/roy-agent-core-
|
|
44
|
-
import"../shared/@ai-setting/roy-agent-core-
|
|
43
|
+
import"../shared/@ai-setting/roy-agent-core-h3j1z13p.js";
|
|
44
|
+
import"../shared/@ai-setting/roy-agent-core-ddp3n8cb.js";
|
|
45
45
|
import"../shared/@ai-setting/roy-agent-core-418zc9ha.js";
|
|
46
46
|
import"../shared/@ai-setting/roy-agent-core-pxqz1d1m.js";
|
|
47
47
|
import {
|
package/dist/env/task/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
TaskPriorityEnum,
|
|
6
6
|
TaskStatusEnum,
|
|
7
7
|
TaskTypeEnum
|
|
8
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
8
|
+
} from "../../shared/@ai-setting/roy-agent-core-vw4gv5am.js";
|
|
9
9
|
import"../../shared/@ai-setting/roy-agent-core-jzmk4kdh.js";
|
|
10
10
|
import"../../shared/@ai-setting/roy-agent-core-jm136jzh.js";
|
|
11
11
|
import"../../shared/@ai-setting/roy-agent-core-m4x47ne9.js";
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
parseExtractorOutput,
|
|
31
31
|
registerLayaCompletionTaskHook,
|
|
32
32
|
renderCompletionState
|
|
33
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
33
|
+
} from "../../../shared/@ai-setting/roy-agent-core-57q8a049.js";
|
|
34
34
|
import"../../../shared/@ai-setting/roy-agent-core-th8fq714.js";
|
|
35
35
|
import"../../../shared/@ai-setting/roy-agent-core-c4ec7k0p.js";
|
|
36
36
|
import"../../../shared/@ai-setting/roy-agent-core-brw8wp2q.js";
|
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
renderWorkflowInfoLines,
|
|
67
67
|
resolveTaskTitleForDisplay,
|
|
68
68
|
sanitizeInlineText
|
|
69
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
69
|
+
} from "../../../shared/@ai-setting/roy-agent-core-ddp3n8cb.js";
|
|
70
70
|
import"../../../shared/@ai-setting/roy-agent-core-418zc9ha.js";
|
|
71
71
|
import"../../../shared/@ai-setting/roy-agent-core-pxqz1d1m.js";
|
|
72
72
|
import"../../../shared/@ai-setting/roy-agent-core-ecap4nws.js";
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - 不依赖具体 bot 身份 / profile(由 caller 注入)
|
|
14
14
|
* - 失败必须明确返回 ok=false,不静默成功
|
|
15
15
|
*/
|
|
16
|
-
import { buildTaskCard, DEFAULT_APP_LINK_BASE, type LarkCardPatchNotifier } from "./lark-card-patch-notifier";
|
|
16
|
+
import { buildTaskCard, DEFAULT_APP_LINK_BASE, type LarkCardPatchNotifier, type Milestone, type SessionCardTaskSummary } from "./lark-card-patch-notifier";
|
|
17
17
|
import { type ActivityMessage, type ToolCallView, type ActivityProbeResult } from "./sub-session-activity";
|
|
18
18
|
/** 卡片按钮点击事件的关键字段(精简版,caller 从 event 里挑出) */
|
|
19
19
|
export interface CardActionEvent {
|
|
@@ -55,8 +55,8 @@ export interface CardActionEvent {
|
|
|
55
55
|
/** lark-cli profile */
|
|
56
56
|
profile?: string;
|
|
57
57
|
}
|
|
58
|
-
/** 卡片动作名(★ Task #5360:加 `refresh_activity`) */
|
|
59
|
-
export type CardActionName = "create_group" | "disband_group" | "refresh_activity";
|
|
58
|
+
/** 卡片动作名(★ Task #5360:加 `refresh_activity`;★ Task #5580:加 `select_task`) */
|
|
59
|
+
export type CardActionName = "create_group" | "disband_group" | "refresh_activity" | "select_task";
|
|
60
60
|
/**
|
|
61
61
|
* 运行时判定一个字符串是否是本 handler 认识的 action。
|
|
62
62
|
*
|
|
@@ -91,6 +91,13 @@ export type CardActionValidation = {
|
|
|
91
91
|
ok: true;
|
|
92
92
|
action: "refresh_activity";
|
|
93
93
|
sessionId: string;
|
|
94
|
+
}
|
|
95
|
+
/** ★ Task #5580:切任务需要 sessionId(卡片主键)+ taskId(切到哪个任务) */
|
|
96
|
+
| {
|
|
97
|
+
ok: true;
|
|
98
|
+
action: "select_task";
|
|
99
|
+
sessionId: string;
|
|
100
|
+
taskId: number;
|
|
94
101
|
} | {
|
|
95
102
|
ok: false;
|
|
96
103
|
action: string;
|
|
@@ -131,6 +138,34 @@ export type SessionCardRefreshHandler = (opts: {
|
|
|
131
138
|
cardUpdate?: ReturnType<typeof buildTaskCard>;
|
|
132
139
|
error?: string;
|
|
133
140
|
}>;
|
|
141
|
+
/**
|
|
142
|
+
* ★ Task #5580(CV P6 配套):`loadSessionTasks` 的**带总数**返回形态。
|
|
143
|
+
*
|
|
144
|
+
* ## 为什么需要
|
|
145
|
+
*
|
|
146
|
+
* 端口为了压掉 N+1 查询,详情只取**前 N 个**(默认 20);但卡片要写
|
|
147
|
+
* 「共 12 个任务」,数字必须来自**真实总数**,不能退化成「共 20 个」。
|
|
148
|
+
*
|
|
149
|
+
* 兼容:端口也可以直接返回数组(老形态)—— 那时总数按数组长度计。
|
|
150
|
+
*/
|
|
151
|
+
export interface SessionCardTaskListResult {
|
|
152
|
+
tasks: SessionCardTaskSummaryPortItem[];
|
|
153
|
+
/** 该 session 关联的**全部** task 数量(可大于 tasks.length) */
|
|
154
|
+
total?: number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* ★ Task #5580:`loadSessionTasks` 端口的条目形状(= 渲染层摘要 + 可选详情字段)。
|
|
158
|
+
*
|
|
159
|
+
* 端口实现可以直接返回 `Task` 实体(多字段无害),渲染层只取它认识的。
|
|
160
|
+
*/
|
|
161
|
+
export type SessionCardTaskSummaryPortItem = SessionCardTaskSummary & {
|
|
162
|
+
currentStatus?: string;
|
|
163
|
+
priority?: string;
|
|
164
|
+
parentTaskId?: number;
|
|
165
|
+
goals?: string;
|
|
166
|
+
createdAt?: string;
|
|
167
|
+
updatedAt?: string;
|
|
168
|
+
};
|
|
134
169
|
/** 端口注入(caller 提供 IO 能力,本模块保持纯函数) */
|
|
135
170
|
export interface CardActionPorts {
|
|
136
171
|
/** 读取 task(用于读 context)★ #5581:session_id 可选透传(MCP 路径按钮主键) */
|
|
@@ -222,6 +257,26 @@ export interface CardActionPorts {
|
|
|
222
257
|
* 返回 [] ⇒ 面板照出 + 「暂无消息」(诚实)。
|
|
223
258
|
*/
|
|
224
259
|
loadSessionMessages?: (sessionId: string, limit?: number) => Promise<ActivityMessage[] | ToolCallView[] | undefined> | ActivityMessage[] | ToolCallView[] | undefined;
|
|
260
|
+
/**
|
|
261
|
+
* ★ Task #5580:读该 session 内的**全部 task**(最近优先,最多若干条)。
|
|
262
|
+
*
|
|
263
|
+
* 用途:session 卡的「🗂️ 任务列表」面板(一个 session 复用多次时会有多个
|
|
264
|
+
* task 生命周期,只显示单 task 不够)。
|
|
265
|
+
*
|
|
266
|
+
* 装配点实现:`taskComponent.getTaskIdsBySessionId(sessionId)` + 逐个 `getTask`。
|
|
267
|
+
*
|
|
268
|
+
* 不注入 / 抛错 ⇒ 不渲染任务列表面板(降级不抛,与其它端口同一套
|
|
269
|
+
* best-effort 语义);返回 [] ⇒ 面板不渲染(没有任务 = 没有这个面板)。
|
|
270
|
+
*/
|
|
271
|
+
loadSessionTasks?: (sessionId: string) => Promise<SessionCardTaskListResult | SessionCardTaskSummaryPortItem[] | undefined> | SessionCardTaskListResult | SessionCardTaskSummaryPortItem[] | undefined;
|
|
272
|
+
/**
|
|
273
|
+
* ★ Task #5580:读某个 task 的里程碑(task_operation 的 milestone 形态)。
|
|
274
|
+
*
|
|
275
|
+
* 用途:点 `select_task` 后渲染「📌 任务里程碑」区。
|
|
276
|
+
*
|
|
277
|
+
* 不注入 / 抛错 ⇒ 里程碑区显示「(该任务暂无里程碑)」,绝不阻断整卡 patch。
|
|
278
|
+
*/
|
|
279
|
+
loadTaskMilestones?: (taskId: number) => Promise<Milestone[] | undefined> | Milestone[] | undefined;
|
|
225
280
|
/**
|
|
226
281
|
* ★ Task #5403:建群成功后初始化「群 session」—— **关联建群**。
|
|
227
282
|
*
|
|
@@ -551,6 +551,28 @@ export declare function renderMilestones(milestones: Milestone[]): string;
|
|
|
551
551
|
* 样式:`- **HH:mm:ss → 现在** <title>` + 可选缩进说明行
|
|
552
552
|
*/
|
|
553
553
|
export declare function renderProcessSteps(steps: ProcessStep[]): string;
|
|
554
|
+
/**
|
|
555
|
+
* ★ Task #5580 —— session 卡「任务列表」最多展示几个(用户定稿:最近 5 个)。
|
|
556
|
+
*
|
|
557
|
+
* 用户需求(2026-11-13):一个 sub session 会被复用跑很多 task,卡片要能
|
|
558
|
+
* 「罗列最近 5 个 + 展示任务总数」,再多就靠总数提示(不刷屏)。
|
|
559
|
+
*/
|
|
560
|
+
export declare const SESSION_TASK_LIST_MAX = 5;
|
|
561
|
+
/**
|
|
562
|
+
* ★ Task #5580 —— 渲染 session 卡「任务列表」面板内容。
|
|
563
|
+
*
|
|
564
|
+
* ## 规则(用户定稿)
|
|
565
|
+
* - `tasks` 按**最近优先**传入(新 → 旧),渲染层取前 `SESSION_TASK_LIST_MAX` 个
|
|
566
|
+
* —— 「最近 5 个」是渲染契约,调用方不必自己截断(少一处漂移点)。
|
|
567
|
+
* - 超过 5 个 → 标题/首行给总数提示「共 N 个任务,最近 5 个:」
|
|
568
|
+
* - 每个条目一个 `select_task` 按钮(点击 → 执行动态 / 任务里程碑切到该任务)
|
|
569
|
+
*
|
|
570
|
+
* @returns `{ title, elements }`,由调用方包进 collapsible_panel(`session_task_list`)
|
|
571
|
+
*/
|
|
572
|
+
export declare function renderSessionTaskList(sessionId: string, tasks: SessionCardTaskSummary[], taskTotal?: number): {
|
|
573
|
+
title: string;
|
|
574
|
+
elements: Array<Record<string, any>>;
|
|
575
|
+
};
|
|
554
576
|
/**
|
|
555
577
|
* ★ Task #4889 —— 按语义来源把过程步骤分成两组。
|
|
556
578
|
*
|
|
@@ -660,6 +682,17 @@ export interface SessionCardState {
|
|
|
660
682
|
activity?: SubSessionActivity | null;
|
|
661
683
|
/** ★ Task #5420:上次的最近消息列表(patch 未传时沿用,避免擦面板) */
|
|
662
684
|
recentMessages?: ActivityMessage[] | ToolCallView[];
|
|
685
|
+
/**
|
|
686
|
+
* ★ Task #5580:该 session 的全部 task 摘要(「🗂️ 任务列表」面板)。
|
|
687
|
+
* 与 task / recentMessages 同语义:本次没传就沿用上一次(不擦面板)。
|
|
688
|
+
*/
|
|
689
|
+
sessionTasks?: SessionCardTaskSummary[];
|
|
690
|
+
/** ★ Task #5580:任务总数(tasks 被截断到 5 时用于「共 N 个任务」提示) */
|
|
691
|
+
taskTotal?: number;
|
|
692
|
+
/** ★ Task #5580:「📌 任务里程碑」区展示的是哪个任务 */
|
|
693
|
+
selectedTask?: NonNullable<Parameters<typeof buildSessionCard>[0]["selectedTask"]>;
|
|
694
|
+
/** ★ Task #5580:选中任务的里程碑 list */
|
|
695
|
+
selectedTaskMilestones?: Milestone[];
|
|
663
696
|
/**
|
|
664
697
|
* ★ Task #5364 返工(BLOCKER-5):该 session 内创建的 roy 任务(**可选增强**)。
|
|
665
698
|
*
|
|
@@ -715,6 +748,41 @@ export declare function buildSessionCard(opts: {
|
|
|
715
748
|
createdAt?: string;
|
|
716
749
|
updatedAt?: string;
|
|
717
750
|
};
|
|
751
|
+
/**
|
|
752
|
+
* ★ Task #5580:该 session 内**全部 task** 的摘要 list(最近优先)。
|
|
753
|
+
*
|
|
754
|
+
* 渲染规则(用户 2026-11-13 定稿):
|
|
755
|
+
* - ≤5 个 → 直接罗列
|
|
756
|
+
* - >5 个 → 只罗列**最近 5 个** + 总数提示(「共 N 个任务,最近 5 个:」)
|
|
757
|
+
* - 每条带 `select_task` 按钮(点击 → 执行动态切换到该任务)
|
|
758
|
+
* - undefined → 不渲染面板(零噪音,与 task 区块同语义)
|
|
759
|
+
*/
|
|
760
|
+
tasks?: SessionCardTaskSummary[];
|
|
761
|
+
/** ★ Task #5580:任务总数(tasks 被截断到 5 时用于「共 N 个任务」提示) */
|
|
762
|
+
taskTotal?: number;
|
|
763
|
+
/**
|
|
764
|
+
* ★ Task #5580:当前**选中**的任务(点 select_task 后切换到这里)。
|
|
765
|
+
* undefined → 不渲染「任务里程碑」面板。
|
|
766
|
+
*
|
|
767
|
+
* ★ CV P3(已记录取舍):**没有 null 清除路径** —— 选中态的生命周期绑定
|
|
768
|
+
* 在任务存续上,任务删除/归档后由刷新把它从 `tasks` 列表里剔除(此时
|
|
769
|
+
* `selectedTask` 不再出现在任务列表里,用户自然会点别的任务)。
|
|
770
|
+
* 若将来需要"取消选中",把类型扩成 `| null` 并在 rememberSessionCard
|
|
771
|
+
* 区分 `undefined`(沿用)/ `null`(清除)即可。
|
|
772
|
+
*/
|
|
773
|
+
selectedTask?: SessionCardTaskSummary & {
|
|
774
|
+
currentStatus?: string;
|
|
775
|
+
priority?: string;
|
|
776
|
+
parentTaskId?: number;
|
|
777
|
+
goals?: string;
|
|
778
|
+
createdAt?: string;
|
|
779
|
+
updatedAt?: string;
|
|
780
|
+
};
|
|
781
|
+
/**
|
|
782
|
+
* ★ Task #5580:选中任务的里程碑 list(task_operation 的 milestone),
|
|
783
|
+
* 渲染进「任务里程碑」面板,随 select_task 切换。
|
|
784
|
+
*/
|
|
785
|
+
selectedTaskMilestones?: Milestone[];
|
|
718
786
|
/** 所属 agent(subagentType),可选 */
|
|
719
787
|
agentType?: string;
|
|
720
788
|
/** 开始时间(ISO) */
|
|
@@ -1028,6 +1096,15 @@ export declare class LarkCardPatchNotifier {
|
|
|
1028
1096
|
activity?: SubSessionActivity | null;
|
|
1029
1097
|
/** ★ Task #5364 返工:该 session 内的任务信息(渲染进**同一张** session 卡) */
|
|
1030
1098
|
task?: Parameters<typeof buildSessionCard>[0]["task"];
|
|
1099
|
+
/** ★ Task #5580:该 session 内全部 task 的摘要列表(「🗂️ 任务列表」面板) */
|
|
1100
|
+
tasks?: SessionCardTaskSummary[];
|
|
1101
|
+
/**
|
|
1102
|
+
* ★ Task #5420:最近消息列表(「💬 会话查看」面板)。
|
|
1103
|
+
*
|
|
1104
|
+
* 补声明:方法体内一直读 `opts.recentMessages`(carry-forward 逻辑),
|
|
1105
|
+
* 但 opts 类型漏了这一项 ⇒ tsc 长期报 TS2339(存量缺陷,本次顺手修掉)。
|
|
1106
|
+
*/
|
|
1107
|
+
recentMessages?: ActivityMessage[] | ToolCallView[];
|
|
1031
1108
|
perTaskChatId?: string;
|
|
1032
1109
|
perTaskChatName?: string;
|
|
1033
1110
|
}): Promise<boolean>;
|
|
@@ -1049,6 +1126,28 @@ export declare class LarkCardPatchNotifier {
|
|
|
1049
1126
|
private findSessionCardBySessionId;
|
|
1050
1127
|
/** 这个 messageId 是否属于一张 **session 卡**(★ Task #5384 守卫入口)。 */
|
|
1051
1128
|
isSessionCardMessage(messageId: string): boolean;
|
|
1129
|
+
/**
|
|
1130
|
+
* ★ Task #5602:这个 messageId 是否属于一张 **task 卡**。
|
|
1131
|
+
*
|
|
1132
|
+
* ## 为什么需要
|
|
1133
|
+
*
|
|
1134
|
+
* task 卡上的「💬 会话查看」按钮(action=refresh_activity)走
|
|
1135
|
+
* session 主键路径;`buildSessionCardWithActivity` 只查
|
|
1136
|
+
* `sessionStates` ⇒ task 卡查不到 ⇒ fallback `buildSessionCard`
|
|
1137
|
+
* 整卡重建 ⇒ **task 卡被 session 渲染器覆盖**(用户实测:
|
|
1138
|
+
* 「📋 任务卡」点一下变成「💬 会话卡」)。
|
|
1139
|
+
*
|
|
1140
|
+
* handler 据此把 refresh_activity 委托回 task 路径
|
|
1141
|
+
* (`handleRefreshActivity`,保持 task 卡身份渲染)。
|
|
1142
|
+
*
|
|
1143
|
+
* ## 判定来源(两处,覆盖两个生命周期)
|
|
1144
|
+
*
|
|
1145
|
+
* - 运行中:`states`(`startTask` / `hydrateState` 写入)
|
|
1146
|
+
* - 终态后:`finalisedCards`(`finishTask` 会 `states.delete`,
|
|
1147
|
+
* 但卡还在飞书里,用户仍可点按钮 —— #5020 终态守卫的集合
|
|
1148
|
+
* 恰好就是「曾是 task 卡」的权威记录)
|
|
1149
|
+
*/
|
|
1150
|
+
isTaskCardMessage(messageId: string): boolean;
|
|
1052
1151
|
/**
|
|
1053
1152
|
* ★ Task #5384:把 **task 侧的更新**应用进 session 卡,返回可 patch 的卡片。
|
|
1054
1153
|
*
|
|
@@ -1162,6 +1261,8 @@ export declare class LarkCardPatchNotifier {
|
|
|
1162
1261
|
activity?: SubSessionActivity | null;
|
|
1163
1262
|
/** ★ Task #5364 返工(BLOCKER-5):session 内的任务信息(合并渲染) */
|
|
1164
1263
|
task?: Parameters<typeof buildSessionCard>[0]["task"];
|
|
1264
|
+
/** ★ Task #5580:该 session 内全部 task 的摘要列表(「🗂️ 任务列表」面板) */
|
|
1265
|
+
tasks?: SessionCardTaskSummary[];
|
|
1165
1266
|
perTaskChatId?: string;
|
|
1166
1267
|
perTaskChatName?: string;
|
|
1167
1268
|
}): Promise<{
|
|
@@ -1204,6 +1305,8 @@ export declare class LarkCardPatchNotifier {
|
|
|
1204
1305
|
* 用户 08:13 定稿:**一张 session 卡**,task 信息是卡上的区块。
|
|
1205
1306
|
*/
|
|
1206
1307
|
task?: Parameters<typeof buildSessionCard>[0]["task"];
|
|
1308
|
+
/** ★ Task #5580:该 session 内全部 task 的摘要列表(首卡就带上) */
|
|
1309
|
+
tasks?: SessionCardTaskSummary[];
|
|
1207
1310
|
perTaskChatId?: string;
|
|
1208
1311
|
perTaskChatName?: string;
|
|
1209
1312
|
}): Promise<StartTaskResult>;
|
|
@@ -1228,6 +1331,15 @@ export declare class LarkCardPatchNotifier {
|
|
|
1228
1331
|
* undefined = 本次没查(沿用 state 里的上次值,与 activity 同语义)。
|
|
1229
1332
|
*/
|
|
1230
1333
|
recentMessages?: ActivityMessage[] | ToolCallView[];
|
|
1334
|
+
/**
|
|
1335
|
+
* ★ Task #5580:该 session 的全部 task 摘要(「🗂️ 任务列表」面板)。
|
|
1336
|
+
* undefined = 本次没查(沿用 state);[] = 查了确实没有(不渲染面板)。
|
|
1337
|
+
*/
|
|
1338
|
+
sessionTasks?: SessionCardTaskSummary[];
|
|
1339
|
+
/** ★ Task #5580:当前选中的任务(点 select_task 后的焦点) */
|
|
1340
|
+
selectedTask?: Parameters<typeof buildSessionCard>[0]["selectedTask"];
|
|
1341
|
+
/** ★ Task #5580:选中任务的里程碑(「📌 任务里程碑」区) */
|
|
1342
|
+
selectedTaskMilestones?: Milestone[];
|
|
1231
1343
|
}): CardPayload | undefined;
|
|
1232
1344
|
/**
|
|
1233
1345
|
* ★ 补充需求(22:31)—— 记录 session 卡的累计状态(供 refresh 重建)。
|
|
@@ -1252,6 +1364,11 @@ export declare class LarkCardPatchNotifier {
|
|
|
1252
1364
|
activity?: SubSessionActivity | null;
|
|
1253
1365
|
/** ★ Task #5420:上次的最近消息列表 */
|
|
1254
1366
|
recentMessages?: ActivityMessage[] | ToolCallView[];
|
|
1367
|
+
/** ★ Task #5580:session 内的任务列表 / 总数 / 选中任务 / 里程碑 */
|
|
1368
|
+
sessionTasks?: SessionCardTaskSummary[];
|
|
1369
|
+
taskTotal?: number;
|
|
1370
|
+
selectedTask?: NonNullable<Parameters<typeof buildSessionCard>[0]["selectedTask"]>;
|
|
1371
|
+
selectedTaskMilestones?: Milestone[];
|
|
1255
1372
|
/** ★ Task #5364 返工:任务区块 + 专属群(合并渲染) */
|
|
1256
1373
|
task?: NonNullable<Parameters<typeof buildSessionCard>[0]["task"]>;
|
|
1257
1374
|
perTaskChatId?: string;
|
|
@@ -1415,6 +1532,19 @@ export declare class LarkCardPatchNotifier {
|
|
|
1415
1532
|
* - 单测要隔离:显式传 `cardNotifier` 构造参数(既有 55 条测试都这么做),
|
|
1416
1533
|
* 或者调用 {@link __resetSharedLarkCardNotifierForTest}
|
|
1417
1534
|
*/
|
|
1535
|
+
/**
|
|
1536
|
+
* ★ Task #5580:session 卡任务列表的**单条摘要**(渲染层最小字段集)。
|
|
1537
|
+
*
|
|
1538
|
+
* 与 `SessionCardTaskPayload`(单 task 详情区块)的区别:
|
|
1539
|
+
* 列表条目只需要「点得动、认得出」—— id / 标题 / 状态 / 进度,
|
|
1540
|
+
* 不搬 goals / parentTaskId / createdAt 等重字段(点进详情再看)。
|
|
1541
|
+
*/
|
|
1542
|
+
export interface SessionCardTaskSummary {
|
|
1543
|
+
id: number;
|
|
1544
|
+
title?: string;
|
|
1545
|
+
status?: string;
|
|
1546
|
+
progress?: number;
|
|
1547
|
+
}
|
|
1418
1548
|
/**
|
|
1419
1549
|
* ★ Task #5364 返工:session 卡上「任务信息」区块的渲染载荷类型。
|
|
1420
1550
|
*
|
|
@@ -2,6 +2,7 @@ import {
|
|
|
2
2
|
DEFAULT_APP_LINK_BASE,
|
|
3
3
|
HEAD_TITLE_MAX_WIDTH,
|
|
4
4
|
LarkCardPatchNotifier,
|
|
5
|
+
SESSION_TASK_LIST_MAX,
|
|
5
6
|
__resetSharedLarkCardNotifierForTest,
|
|
6
7
|
buildChatAppLink,
|
|
7
8
|
buildCollapsiblePanel,
|
|
@@ -21,12 +22,13 @@ import {
|
|
|
21
22
|
renderMilestones,
|
|
22
23
|
renderProcessSteps,
|
|
23
24
|
renderProgressBar,
|
|
25
|
+
renderSessionTaskList,
|
|
24
26
|
renderTaskInfoLines,
|
|
25
27
|
renderWorkflowInfoLines,
|
|
26
28
|
resolveTaskTitleForDisplay,
|
|
27
29
|
sanitizeInlineText,
|
|
28
30
|
truncateHeadTitle
|
|
29
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
31
|
+
} from "../../../shared/@ai-setting/roy-agent-core-ddp3n8cb.js";
|
|
30
32
|
import"../../../shared/@ai-setting/roy-agent-core-418zc9ha.js";
|
|
31
33
|
import"../../../shared/@ai-setting/roy-agent-core-pxqz1d1m.js";
|
|
32
34
|
import"../../../shared/@ai-setting/roy-agent-core-yshw2fvj.js";
|
|
@@ -39,6 +41,7 @@ export {
|
|
|
39
41
|
resolveTaskTitleForDisplay,
|
|
40
42
|
renderWorkflowInfoLines,
|
|
41
43
|
renderTaskInfoLines,
|
|
44
|
+
renderSessionTaskList,
|
|
42
45
|
renderProgressBar,
|
|
43
46
|
renderProcessSteps,
|
|
44
47
|
renderMilestones,
|
|
@@ -58,6 +61,7 @@ export {
|
|
|
58
61
|
buildCollapsiblePanel,
|
|
59
62
|
buildChatAppLink,
|
|
60
63
|
__resetSharedLarkCardNotifierForTest,
|
|
64
|
+
SESSION_TASK_LIST_MAX,
|
|
61
65
|
LarkCardPatchNotifier,
|
|
62
66
|
HEAD_TITLE_MAX_WIDTH,
|
|
63
67
|
DEFAULT_APP_LINK_BASE
|
|
@@ -147,6 +147,14 @@ export declare function createLarkCardStateStore(dbPath?: string): LarkCardState
|
|
|
147
147
|
export declare function getSharedLarkCardStateStore(): LarkCardStateStore;
|
|
148
148
|
/** 测试钩子:丢弃单例(避免用例间串味 / 连到真实库)。 */
|
|
149
149
|
export declare function __resetSharedLarkCardStateStoreForTest(): void;
|
|
150
|
+
/**
|
|
151
|
+
* 测试钩子:注入指定 store 为共享单例(Task #5608)。
|
|
152
|
+
*
|
|
153
|
+
* 守卫的持久层兜底读 `getSharedLarkCardStateStore()`,
|
|
154
|
+
* 测试需要一个可控的库而不连真实 `~/.local/share/roy-agent/`。
|
|
155
|
+
* 传 `undefined` 等价 reset。
|
|
156
|
+
*/
|
|
157
|
+
export declare function __setSharedLarkCardStateStoreForTest(store: LarkCardStateStore | undefined): void;
|
|
150
158
|
/**
|
|
151
159
|
* 为什么需要独立表(不能塞进 `lark_card`)
|
|
152
160
|
*
|
|
@@ -91,6 +91,63 @@ export interface TaskNotifyConfig {
|
|
|
91
91
|
* 老卡片再也无法 patch(永远停在"进行中")+ pin 一直挂着。
|
|
92
92
|
*/
|
|
93
93
|
cardStateStore?: LarkCardStateStore;
|
|
94
|
+
/**
|
|
95
|
+
* ★ Task #5580:是否在 session 卡之外**再发一张任务卡片**(默认 true)。
|
|
96
|
+
*
|
|
97
|
+
* ## 背景(用户 2026-11-13 定稿)
|
|
98
|
+
*
|
|
99
|
+
* 「之前的任务卡片功能必须保留:lark-cli ES 插件中根据 task hook 触发的
|
|
100
|
+
* 任务卡片消息也要发出来并 pin 住。不能只有 session 卡片——两者并存:
|
|
101
|
+
* 任务卡片(用户关心任务级别)+ session 卡片(调试用,功能以后削弱)」
|
|
102
|
+
*
|
|
103
|
+
* 这**反转**了 #5364 的「单卡语义」(当时定稿:一个 session 只发一张卡,
|
|
104
|
+
* task 信息作为卡上区块)。现在两者并存:
|
|
105
|
+
* - session 卡:会话视角(任务列表 / 执行动态 / 活性)—— 调试用,后续削弱
|
|
106
|
+
* - task 卡:任务视角(进度 / 里程碑 / 建群)—— 用户主关注
|
|
107
|
+
*
|
|
108
|
+
* 设 `false` 可退回 #5364 的单卡语义(软回滚开关)。
|
|
109
|
+
*/
|
|
110
|
+
emitTaskCard?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* ★ Task #5580:config.jsonc 开关读取端口(生产装配注入)。
|
|
113
|
+
* 不传 ⇒ 退回 `emitTaskCard` 代码级默认 / true。
|
|
114
|
+
*/
|
|
115
|
+
cardNotifyConfigReader?: () => LarkCardNotifyFlags;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* ★ Task #5580(2026-11-15 补充):config.jsonc 可配的卡片开关。
|
|
119
|
+
*
|
|
120
|
+
* ## 配置键(config.jsonc)
|
|
121
|
+
*
|
|
122
|
+
* ```jsonc
|
|
123
|
+
* {
|
|
124
|
+
* "task": {
|
|
125
|
+
* "plugins": {
|
|
126
|
+
* "larkCard": {
|
|
127
|
+
* // task hook 触发的任务卡片(用户主关注,pin)
|
|
128
|
+
* "emitTaskCard": true,
|
|
129
|
+
* // sub-session 生命周期触发的 session 卡片(调试用)
|
|
130
|
+
* "emitSessionCard": true
|
|
131
|
+
* }
|
|
132
|
+
* }
|
|
133
|
+
* }
|
|
134
|
+
* }
|
|
135
|
+
* ```
|
|
136
|
+
*
|
|
137
|
+
* ## 生效方式(热更新)
|
|
138
|
+
*
|
|
139
|
+
* config.jsonc 是 task 组件的 file source(watch 开启)⇒
|
|
140
|
+
* **改文件即生效,无需重启 ES**。开关在每次 hook 执行 / 每次
|
|
141
|
+
* session 生命周期事件时**现读**(不是构造时缓存)。
|
|
142
|
+
*
|
|
143
|
+
* ## 优先级
|
|
144
|
+
*
|
|
145
|
+
* 显式传给 hook 的 `config.emitTaskCard`(代码级)优先于
|
|
146
|
+
* config.jsonc(文件级)—— 便于单测与特殊部署覆盖。
|
|
147
|
+
*/
|
|
148
|
+
export interface LarkCardNotifyFlags {
|
|
149
|
+
emitTaskCard: boolean;
|
|
150
|
+
emitSessionCard: boolean;
|
|
94
151
|
}
|
|
95
152
|
/**
|
|
96
153
|
* 卡片路由端口(Task #4230 follow-up)
|
|
@@ -118,6 +175,14 @@ export declare class LarkCliTaskNotifyHook implements Hook {
|
|
|
118
175
|
readonly pluginName?: string;
|
|
119
176
|
readonly sourceId?: string;
|
|
120
177
|
private readonly config;
|
|
178
|
+
/**
|
|
179
|
+
* ★ Task #5580:config.jsonc 开关的读取端口(可选注入)。
|
|
180
|
+
*
|
|
181
|
+
* 生产装配点(task-component)注入 `taskComponent.getCardNotifyConfig`;
|
|
182
|
+
* 不注入(单测 / 未接线)⇒ 退回 `config.emitTaskCard` 代码级默认。
|
|
183
|
+
* 每次 hook 执行时现读 ⇒ config.jsonc 热更新即时生效。
|
|
184
|
+
*/
|
|
185
|
+
cardNotifyConfigReader?: () => LarkCardNotifyFlags;
|
|
121
186
|
/** 卡片模式 notifier 实例 */
|
|
122
187
|
private cardNotifier?;
|
|
123
188
|
/**
|
|
@@ -185,6 +250,16 @@ export declare class LarkCliTaskNotifyHook implements Hook {
|
|
|
185
250
|
setCardRoutingPorts(ports: CardRoutingPorts): void;
|
|
186
251
|
/** 诊断:端口是否注入 */
|
|
187
252
|
hasCardRoutingPorts(): boolean;
|
|
253
|
+
/**
|
|
254
|
+
* ★ Task #5580:emitTaskCard 的**现读**语义。
|
|
255
|
+
*
|
|
256
|
+
* 优先级:显式 config.emitTaskCard(代码级)> config.jsonc
|
|
257
|
+
* (文件级,经 cardNotifyConfigReader)> 默认 true。
|
|
258
|
+
*
|
|
259
|
+
* 为什么不用构造时缓存:config.jsonc 是 file source(watch 开),
|
|
260
|
+
* 用户改文件应即时生效 —— 每次执行现读。
|
|
261
|
+
*/
|
|
262
|
+
private currentEmitTaskCard;
|
|
188
263
|
execute(ctx: HookContext<unknown>): Promise<void>;
|
|
189
264
|
/** 任务创建:发初始卡片(+ pin) */
|
|
190
265
|
private onAfterCreate;
|
|
@@ -87,6 +87,31 @@ export declare class TaskComponent extends BaseComponent {
|
|
|
87
87
|
* or has been disposed.
|
|
88
88
|
*/
|
|
89
89
|
getBackgroundTaskManager(): BackgroundTaskManager | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* ★ Task #5580(2026-11-15 补充)—— lark 卡片开关(config.jsonc 可配)。
|
|
92
|
+
*
|
|
93
|
+
* ## 配置键(沿用 task 组件点号惯例)
|
|
94
|
+
*
|
|
95
|
+
* - `task.plugins.larkCard.emitTaskCard`(默认 true)
|
|
96
|
+
* —— task hook 触发的**任务卡片**(用户主关注,pin)
|
|
97
|
+
* - `task.plugins.larkCard.emitSessionCard`(默认 true)
|
|
98
|
+
* —— sub-session 生命周期触发的 **session 卡片**(调试用)
|
|
99
|
+
*
|
|
100
|
+
* ## 生效方式
|
|
101
|
+
*
|
|
102
|
+
* config.jsonc 是 task 组件的 file source(watch 开启)⇒
|
|
103
|
+
* 改文件即热更新,**无需重启 ES**。每次 hook 执行时现读
|
|
104
|
+
* (`LarkCliTaskNotifyHook` 在 execute 内调用本方法)。
|
|
105
|
+
*
|
|
106
|
+
* ## 降级
|
|
107
|
+
*
|
|
108
|
+
* configComponent 缺失 / 键未配置 / 值不是 boolean ⇒ 默认 true
|
|
109
|
+
* (与改造前行为一致:两卡并存)。
|
|
110
|
+
*/
|
|
111
|
+
getCardNotifyConfig(): {
|
|
112
|
+
emitTaskCard: boolean;
|
|
113
|
+
emitSessionCard: boolean;
|
|
114
|
+
};
|
|
90
115
|
/**
|
|
91
116
|
* 发布 EnvEvent
|
|
92
117
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
LarkCliWorkflowNotifyHook,
|
|
3
3
|
createLarkCliWorkflowNotifyHook
|
|
4
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
5
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
4
|
+
} from "../../../shared/@ai-setting/roy-agent-core-h3j1z13p.js";
|
|
5
|
+
import"../../../shared/@ai-setting/roy-agent-core-ddp3n8cb.js";
|
|
6
6
|
import"../../../shared/@ai-setting/roy-agent-core-418zc9ha.js";
|
|
7
7
|
import"../../../shared/@ai-setting/roy-agent-core-pxqz1d1m.js";
|
|
8
8
|
import"../../../shared/@ai-setting/roy-agent-core-5e9vmj5e.js";
|