@ai-setting/roy-agent-core 1.7.55 → 1.7.57
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/config/index.js +8 -8
- package/dist/env/agent/agent-component.d.ts +41 -0
- package/dist/env/agent/index.js +15 -14
- package/dist/env/commands/index.js +8 -8
- package/dist/env/context/index.js +4 -4
- package/dist/env/debug/index.js +8 -8
- package/dist/env/environment.d.ts +7 -0
- package/dist/env/event-source/event-source-handlers.d.ts +28 -0
- package/dist/env/event-source/index.js +18 -17
- package/dist/env/hook/index.js +6 -6
- package/dist/env/index.js +45 -43
- package/dist/env/llm/adapter-ai-sdk.d.ts +6 -0
- package/dist/env/llm/adapter-pi-ai.d.ts +5 -0
- package/dist/env/llm/index.js +11 -11
- package/dist/env/llm/invoke.d.ts +33 -1
- package/dist/env/llm/llm.d.ts +13 -0
- package/dist/env/llm/outbound-defense.d.ts +140 -0
- package/dist/env/log-trace/decorator.d.ts +46 -3
- package/dist/env/log-trace/index.d.ts +1 -0
- package/dist/env/log-trace/index.js +34 -8
- package/dist/env/log-trace/opentelemetry/tracer-provider.d.ts +86 -1
- package/dist/env/log-trace/trace-filters.d.ts +127 -0
- package/dist/env/mcp/index.js +9 -9
- package/dist/env/mcp/tool/index.js +2 -2
- package/dist/env/memory/index.js +9 -9
- package/dist/env/memory/plugin/index.js +2 -2
- package/dist/env/plugin/index.js +8 -8
- package/dist/env/prompt/index.js +8 -8
- package/dist/env/session/index.js +12 -11
- package/dist/env/session/session-component.d.ts +4 -0
- package/dist/env/session/storage/index.js +6 -4
- package/dist/env/skill/index.js +8 -8
- package/dist/env/task/delegate/index.js +9 -9
- package/dist/env/task/index.js +18 -17
- package/dist/env/task/plugins/index.js +11 -10
- package/dist/env/task/plugins/lark-card-patch-notifier.d.ts +109 -2
- package/dist/env/task/plugins/lark-card-state-store.d.ts +137 -0
- package/dist/env/task/plugins/lark-cli-task-notify-plugin.d.ts +154 -2
- package/dist/env/task/storage/index.js +4 -3
- package/dist/env/task/tools/index.js +4 -4
- package/dist/env/tool/built-in/index.js +5 -5
- package/dist/env/tool/index.js +12 -12
- package/dist/env/workflow/engine/index.js +13 -13
- package/dist/env/workflow/hooks/index.js +8 -8
- package/dist/env/workflow/index.js +24 -23
- package/dist/env/workflow/nodes/index.js +3 -3
- package/dist/env/workflow/plugins/index.js +9 -9
- package/dist/env/workflow/service/index.js +3 -3
- package/dist/env/workflow/storage/index.js +4 -4
- package/dist/env/workflow/tools/index.js +16 -15
- package/dist/env/workflow/utils/index.js +6 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.js +90 -63
- package/dist/shared/@ai-setting/{roy-agent-core-k25gv86p.js → roy-agent-core-029r8kdw.js} +4 -4
- package/dist/shared/@ai-setting/{roy-agent-core-8s9jd2qy.js → roy-agent-core-08njdcpj.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-tdbv7ff4.js → roy-agent-core-0kn3zt1t.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-8eqngasy.js → roy-agent-core-0yn7a78e.js} +14 -14
- package/dist/shared/@ai-setting/{roy-agent-core-tbrn9wdm.js → roy-agent-core-14bq77wr.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-mxdc756a.js → roy-agent-core-1sfbs57v.js} +9 -9
- package/dist/shared/@ai-setting/{roy-agent-core-qamktze3.js → roy-agent-core-20m8je6e.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-yhsssn86.js → roy-agent-core-2ctyjy62.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-9jzysq50.js → roy-agent-core-2fk8c9ax.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-2k4xffaa.js → roy-agent-core-4096f575.js} +4 -4
- package/dist/shared/@ai-setting/{roy-agent-core-2gay3sjt.js → roy-agent-core-47s81t6g.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-w527pcpe.js → roy-agent-core-5f7myqnb.js} +45 -494
- package/dist/shared/@ai-setting/{roy-agent-core-zjttt2y4.js → roy-agent-core-7nb23tdd.js} +1 -1
- package/dist/shared/@ai-setting/roy-agent-core-7q4wdze2.js +7 -0
- package/dist/shared/@ai-setting/{roy-agent-core-cd62e9p1.js → roy-agent-core-84rs0c8d.js} +23 -10
- package/dist/shared/@ai-setting/{roy-agent-core-dwx9hjwx.js → roy-agent-core-84xtww7d.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-a4vzsn0g.js → roy-agent-core-89sxsrc7.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-g36jevrk.js → roy-agent-core-8bngppw0.js} +580 -83
- package/dist/shared/@ai-setting/roy-agent-core-8p63s836.js +578 -0
- package/dist/shared/@ai-setting/{roy-agent-core-7evvpfwc.js → roy-agent-core-9zhkdg6w.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-ak4dc3kg.js → roy-agent-core-baaa4wtp.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-b5ew8t0k.js → roy-agent-core-c36335nw.js} +146 -8
- package/dist/shared/@ai-setting/{roy-agent-core-7qy3nffr.js → roy-agent-core-c7w2h47a.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-j5c3chtn.js → roy-agent-core-cyefe8z5.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-2bscfrr1.js → roy-agent-core-d75t8gea.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-0hq21px2.js → roy-agent-core-e1w17tht.js} +632 -36
- package/dist/shared/@ai-setting/{roy-agent-core-ne2t1pay.js → roy-agent-core-e250355z.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-ytr2w0vb.js → roy-agent-core-eanq305k.js} +69 -25
- package/dist/shared/@ai-setting/{roy-agent-core-12d2xap8.js → roy-agent-core-em4hks9t.js} +4 -4
- package/dist/shared/@ai-setting/{roy-agent-core-6qxh4xrm.js → roy-agent-core-en2xqxs9.js} +7 -7
- package/dist/shared/@ai-setting/{roy-agent-core-e2z1etk4.js → roy-agent-core-ewcc5qdt.js} +11 -11
- package/dist/shared/@ai-setting/{roy-agent-core-qm9jda8p.js → roy-agent-core-fbjd7bt6.js} +3 -7
- package/dist/shared/@ai-setting/{roy-agent-core-fvs48d38.js → roy-agent-core-fw6k4w1h.js} +14 -9
- package/dist/shared/@ai-setting/{roy-agent-core-2b8jtv7m.js → roy-agent-core-ge87xbas.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-9csa89jx.js → roy-agent-core-geh6j7bw.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-dv714bqh.js → roy-agent-core-gksw1gjb.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-fs36xgcs.js → roy-agent-core-hefarcp0.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-t37wbysj.js → roy-agent-core-hs41gx9w.js} +5 -5
- package/dist/shared/@ai-setting/{roy-agent-core-1cv9j4dg.js → roy-agent-core-jjhw9am6.js} +4 -4
- package/dist/shared/@ai-setting/{roy-agent-core-978b6wfx.js → roy-agent-core-jjxdmedn.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-j2nvedt6.js → roy-agent-core-jw5ar4p0.js} +33 -38
- package/dist/shared/@ai-setting/{roy-agent-core-zvemdfx5.js → roy-agent-core-kq9pz2a7.js} +13 -6
- package/dist/shared/@ai-setting/{roy-agent-core-8t7wny6v.js → roy-agent-core-m68z3pw1.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-k8b440n3.js → roy-agent-core-m97jn2ra.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-kzg1jwt8.js → roy-agent-core-n0p0hwgd.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-9h72sk1n.js → roy-agent-core-psg6f1v6.js} +6 -6
- package/dist/shared/@ai-setting/{roy-agent-core-athdr2m0.js → roy-agent-core-q4gdfypk.js} +12 -4
- package/dist/shared/@ai-setting/{roy-agent-core-nde5gzta.js → roy-agent-core-rcgvmtms.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-8seq65bp.js → roy-agent-core-rt115qfc.js} +44 -1
- package/dist/shared/@ai-setting/{roy-agent-core-5apmk4qw.js → roy-agent-core-syyw58p9.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-tjg71zqp.js → roy-agent-core-t4x089js.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-zd3ddm4k.js → roy-agent-core-t64nmayv.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-6167phd4.js → roy-agent-core-txwptxk1.js} +4 -4
- package/dist/shared/@ai-setting/{roy-agent-core-rnwr39b0.js → roy-agent-core-tze5596n.js} +6 -4
- package/dist/shared/@ai-setting/{roy-agent-core-skzjs973.js → roy-agent-core-vath15kt.js} +6 -6
- package/dist/shared/@ai-setting/{roy-agent-core-vrsxhw9e.js → roy-agent-core-vgdhxbx3.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-7g03zkkb.js → roy-agent-core-vh0qzb24.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-aer5kw1j.js → roy-agent-core-w93z6a42.js} +17 -17
- package/dist/shared/@ai-setting/{roy-agent-core-rx16h2m1.js → roy-agent-core-ygn5tzt1.js} +3 -3
- package/dist/shared/@ai-setting/{roy-agent-core-4z3rq5gw.js → roy-agent-core-yphwdm9x.js} +2 -2
- package/dist/shared/@ai-setting/{roy-agent-core-qcspfszy.js → roy-agent-core-ytd5eztz.js} +1 -1
- package/dist/utils/temp-file-manager/index.js +2 -2
- package/package.json +1 -1
- package/dist/shared/@ai-setting/roy-agent-core-dsevjbck.js +0 -245
package/dist/env/memory/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MemoryComponent,
|
|
4
4
|
SOURCE_PRIORITY,
|
|
5
5
|
getSourcePriority
|
|
6
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
6
|
+
} from "../../shared/@ai-setting/roy-agent-core-baaa4wtp.js";
|
|
7
7
|
import {
|
|
8
8
|
RecallMemorySchema,
|
|
9
9
|
RecordMemorySchema
|
|
@@ -23,15 +23,15 @@ import {
|
|
|
23
23
|
generateProjectSummary,
|
|
24
24
|
parseMemoryAgentOutput,
|
|
25
25
|
recallMemory
|
|
26
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
26
|
+
} from "../../shared/@ai-setting/roy-agent-core-cyefe8z5.js";
|
|
27
27
|
import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
|
|
28
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
29
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
30
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
31
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
32
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
33
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
34
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
28
|
+
import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
|
|
29
|
+
import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
|
|
30
|
+
import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
|
|
31
|
+
import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
32
|
+
import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
33
|
+
import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
34
|
+
import"../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
35
35
|
import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
36
36
|
import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
37
37
|
export {
|
|
@@ -13,8 +13,8 @@ import {
|
|
|
13
13
|
generateProjectSummary,
|
|
14
14
|
parseMemoryAgentOutput,
|
|
15
15
|
recallMemory
|
|
16
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
17
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
16
|
+
} from "../../../shared/@ai-setting/roy-agent-core-cyefe8z5.js";
|
|
17
|
+
import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
18
18
|
import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
19
19
|
import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
20
20
|
export {
|
package/dist/env/plugin/index.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EventBusNotificationChannel,
|
|
3
3
|
PluginComponent
|
|
4
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
4
|
+
} from "../../shared/@ai-setting/roy-agent-core-hs41gx9w.js";
|
|
5
5
|
import {
|
|
6
6
|
normalizeLarkAtMentions
|
|
7
7
|
} from "../../shared/@ai-setting/roy-agent-core-64f22h1g.js";
|
|
8
8
|
import {
|
|
9
9
|
BasePlugin
|
|
10
10
|
} from "../../shared/@ai-setting/roy-agent-core-az13yzmc.js";
|
|
11
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
12
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
13
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
14
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
15
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
16
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
11
|
+
import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
|
|
12
|
+
import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
|
|
13
|
+
import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
|
|
14
|
+
import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
15
|
+
import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
16
|
+
import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
17
17
|
import {
|
|
18
18
|
createLogger,
|
|
19
19
|
init_logger
|
|
20
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
20
|
+
} from "../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
21
21
|
import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
22
22
|
import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
23
23
|
// src/env/plugin/lark-cli-notification-channel.ts
|
package/dist/env/prompt/index.js
CHANGED
|
@@ -3,17 +3,17 @@ import {
|
|
|
3
3
|
PromptConfigSchema,
|
|
4
4
|
PromptPathSchema,
|
|
5
5
|
PromptRenderer
|
|
6
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
6
|
+
} from "../../shared/@ai-setting/roy-agent-core-em4hks9t.js";
|
|
7
7
|
import"../../shared/@ai-setting/roy-agent-core-6masakz4.js";
|
|
8
8
|
import"../../shared/@ai-setting/roy-agent-core-qxnbvgwe.js";
|
|
9
9
|
import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
|
|
10
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
11
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
12
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
13
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
14
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
15
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
16
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
10
|
+
import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
|
|
11
|
+
import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
|
|
12
|
+
import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
|
|
13
|
+
import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
14
|
+
import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
15
|
+
import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
16
|
+
import"../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
17
17
|
import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
18
18
|
import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
19
19
|
export {
|
|
@@ -3,24 +3,25 @@ import {
|
|
|
3
3
|
MIN_SESSION_ID_LENGTH,
|
|
4
4
|
SessionComponent,
|
|
5
5
|
isValidSessionId
|
|
6
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
6
|
+
} from "../../shared/@ai-setting/roy-agent-core-kq9pz2a7.js";
|
|
7
7
|
import {
|
|
8
8
|
MemorySessionStore
|
|
9
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
9
|
+
} from "../../shared/@ai-setting/roy-agent-core-c7w2h47a.js";
|
|
10
10
|
import"../../shared/@ai-setting/roy-agent-core-ze068vc9.js";
|
|
11
11
|
import"../../shared/@ai-setting/roy-agent-core-rvxg1wps.js";
|
|
12
12
|
import {
|
|
13
13
|
SessionMessageConverter
|
|
14
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
15
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
14
|
+
} from "../../shared/@ai-setting/roy-agent-core-ge87xbas.js";
|
|
15
|
+
import"../../shared/@ai-setting/roy-agent-core-e1w17tht.js";
|
|
16
|
+
import"../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
|
|
16
17
|
import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
|
|
17
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
18
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
19
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
20
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
21
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
22
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
23
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
18
|
+
import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
|
|
19
|
+
import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
|
|
20
|
+
import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
|
|
21
|
+
import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
22
|
+
import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
23
|
+
import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
24
|
+
import"../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
24
25
|
import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
25
26
|
import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
26
27
|
export {
|
|
@@ -397,6 +397,10 @@ export declare class SessionComponent extends BaseComponent {
|
|
|
397
397
|
* 现在:优先取干净的纯文本轮次(信息密度最高),一轮都没取到时兜底保留最近
|
|
398
398
|
* 若干条原始消息(含 tool 轮次),至少让 CLI 能看到「刚才在干什么」。
|
|
399
399
|
*/
|
|
400
|
+
/**
|
|
401
|
+
* ★ 2026-10-22:**只存摘要**(Task #4479)。改造前平均 878KB(最大 12.8MB)
|
|
402
|
+
* —— 入参是完整 messages 数组,返回值是抽出来的消息正文。
|
|
403
|
+
*/
|
|
400
404
|
private extractRecentMessages;
|
|
401
405
|
/**
|
|
402
406
|
* Preview compact operation
|
|
@@ -3,10 +3,12 @@ import {
|
|
|
3
3
|
SQLiteSessionStore,
|
|
4
4
|
getDefaultDataDir,
|
|
5
5
|
getDefaultSessionDbPath
|
|
6
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
7
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
8
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
9
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
6
|
+
} from "../../../shared/@ai-setting/roy-agent-core-c7w2h47a.js";
|
|
7
|
+
import"../../../shared/@ai-setting/roy-agent-core-ge87xbas.js";
|
|
8
|
+
import"../../../shared/@ai-setting/roy-agent-core-e1w17tht.js";
|
|
9
|
+
import"../../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
|
|
10
|
+
import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
11
|
+
import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
10
12
|
import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
11
13
|
import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
12
14
|
export {
|
package/dist/env/skill/index.js
CHANGED
|
@@ -6,20 +6,20 @@ import {
|
|
|
6
6
|
getSourcePriority,
|
|
7
7
|
parseFrontmatter,
|
|
8
8
|
parseSkillFile
|
|
9
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
9
|
+
} from "../../shared/@ai-setting/roy-agent-core-47s81t6g.js";
|
|
10
10
|
import {
|
|
11
11
|
SkillToolSchema,
|
|
12
12
|
buildSkillDescription,
|
|
13
13
|
createSkillTool
|
|
14
14
|
} from "../../shared/@ai-setting/roy-agent-core-psvxt4c9.js";
|
|
15
15
|
import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
|
|
16
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
17
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
18
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
19
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
20
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
21
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
22
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
16
|
+
import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
|
|
17
|
+
import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
|
|
18
|
+
import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
|
|
19
|
+
import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
20
|
+
import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
21
|
+
import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
22
|
+
import"../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
23
23
|
import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
24
24
|
import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
25
25
|
export {
|
|
@@ -3,19 +3,19 @@ import {
|
|
|
3
3
|
BackgroundTaskManager,
|
|
4
4
|
createDelegateTool,
|
|
5
5
|
createStopTool
|
|
6
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
7
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
8
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
6
|
+
} from "../../../shared/@ai-setting/roy-agent-core-1sfbs57v.js";
|
|
7
|
+
import"../../../shared/@ai-setting/roy-agent-core-14bq77wr.js";
|
|
8
|
+
import"../../../shared/@ai-setting/roy-agent-core-2ctyjy62.js";
|
|
9
9
|
import"../../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
|
|
10
10
|
import"../../../shared/@ai-setting/roy-agent-core-6masakz4.js";
|
|
11
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
11
|
+
import"../../../shared/@ai-setting/roy-agent-core-ygn5tzt1.js";
|
|
12
12
|
import"../../../shared/@ai-setting/roy-agent-core-qxnbvgwe.js";
|
|
13
13
|
import"../../../shared/@ai-setting/roy-agent-core-c1v263jn.js";
|
|
14
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
15
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
16
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
17
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
18
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
14
|
+
import"../../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
|
|
15
|
+
import"../../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
16
|
+
import"../../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
17
|
+
import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
18
|
+
import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
19
19
|
import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
20
20
|
import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
21
21
|
export {
|
package/dist/env/task/index.js
CHANGED
|
@@ -5,33 +5,34 @@ 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-ewcc5qdt.js";
|
|
9
9
|
import"../../shared/@ai-setting/roy-agent-core-amkqnyzy.js";
|
|
10
|
-
import
|
|
11
|
-
|
|
12
|
-
getDefaultTaskDbPath
|
|
13
|
-
} from "../../shared/@ai-setting/roy-agent-core-qm9jda8p.js";
|
|
14
|
-
import"../../shared/@ai-setting/roy-agent-core-7g03zkkb.js";
|
|
10
|
+
import"../../shared/@ai-setting/roy-agent-core-7q4wdze2.js";
|
|
11
|
+
import"../../shared/@ai-setting/roy-agent-core-vh0qzb24.js";
|
|
15
12
|
import"../../shared/@ai-setting/roy-agent-core-rn57psp0.js";
|
|
16
13
|
import {
|
|
17
14
|
TaskEntityEventTypes
|
|
18
15
|
} from "../../shared/@ai-setting/roy-agent-core-8gxth0eh.js";
|
|
19
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
20
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
21
|
-
import
|
|
16
|
+
import"../../shared/@ai-setting/roy-agent-core-1sfbs57v.js";
|
|
17
|
+
import"../../shared/@ai-setting/roy-agent-core-14bq77wr.js";
|
|
18
|
+
import {
|
|
19
|
+
SQLiteTaskStore,
|
|
20
|
+
getDefaultTaskDbPath
|
|
21
|
+
} from "../../shared/@ai-setting/roy-agent-core-fbjd7bt6.js";
|
|
22
|
+
import"../../shared/@ai-setting/roy-agent-core-2ctyjy62.js";
|
|
22
23
|
import"../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
|
|
23
24
|
import"../../shared/@ai-setting/roy-agent-core-6masakz4.js";
|
|
24
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
25
|
+
import"../../shared/@ai-setting/roy-agent-core-ygn5tzt1.js";
|
|
25
26
|
import"../../shared/@ai-setting/roy-agent-core-qxnbvgwe.js";
|
|
26
27
|
import"../../shared/@ai-setting/roy-agent-core-c1v263jn.js";
|
|
27
28
|
import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
|
|
28
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
29
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
30
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
31
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
32
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
33
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
34
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
29
|
+
import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
|
|
30
|
+
import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
|
|
31
|
+
import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
|
|
32
|
+
import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
33
|
+
import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
34
|
+
import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
35
|
+
import"../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
35
36
|
import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
36
37
|
import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
37
38
|
export {
|
|
@@ -10,21 +10,22 @@ import {
|
|
|
10
10
|
formatExtractorInput,
|
|
11
11
|
formatExtractorInputFromDescription,
|
|
12
12
|
parseExtractorOutput
|
|
13
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
14
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
13
|
+
} from "../../../shared/@ai-setting/roy-agent-core-8bngppw0.js";
|
|
14
|
+
import"../../../shared/@ai-setting/roy-agent-core-fbjd7bt6.js";
|
|
15
|
+
import"../../../shared/@ai-setting/roy-agent-core-2ctyjy62.js";
|
|
15
16
|
import"../../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
|
|
16
17
|
import"../../../shared/@ai-setting/roy-agent-core-6masakz4.js";
|
|
17
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
18
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
19
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
18
|
+
import"../../../shared/@ai-setting/roy-agent-core-c36335nw.js";
|
|
19
|
+
import"../../../shared/@ai-setting/roy-agent-core-89sxsrc7.js";
|
|
20
|
+
import"../../../shared/@ai-setting/roy-agent-core-08njdcpj.js";
|
|
20
21
|
import"../../../shared/@ai-setting/roy-agent-core-jrj30vq3.js";
|
|
21
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
22
|
+
import"../../../shared/@ai-setting/roy-agent-core-gksw1gjb.js";
|
|
22
23
|
import"../../../shared/@ai-setting/roy-agent-core-e25xkv53.js";
|
|
23
24
|
import"../../../shared/@ai-setting/roy-agent-core-az13yzmc.js";
|
|
24
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
25
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
26
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
27
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
25
|
+
import"../../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
|
|
26
|
+
import"../../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
|
|
27
|
+
import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
|
|
28
|
+
import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
|
|
28
29
|
import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
|
|
29
30
|
import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
30
31
|
export {
|
|
@@ -61,7 +61,25 @@
|
|
|
61
61
|
* ★ Part 2(workflow 通知):新增 `"stopped"`(灰)—— task 只会用前三种,
|
|
62
62
|
* 但同一套卡片骨架要给 workflow run 复用,而 workflow 有 stopped 终态。
|
|
63
63
|
*/
|
|
64
|
-
export type CardStatus = "running" | "completed" | "failed" | "stopped"
|
|
64
|
+
export type CardStatus = "running" | "completed" | "failed" | "stopped"
|
|
65
|
+
/**
|
|
66
|
+
* ★ Task #4536:任务被**取消**(task.status = "cancelled")
|
|
67
|
+
*
|
|
68
|
+
* 旧实现把 cancelled 映射成 "failed" → 卡片显示「🚨 任务失败」,
|
|
69
|
+
* 语义错误(用户主动取消 ≠ 失败)。新增独立状态,灰色 + 「已取消」。
|
|
70
|
+
*/
|
|
71
|
+
| "cancelled"
|
|
72
|
+
/**
|
|
73
|
+
* ★ Task #4540:任务被**删除**(用户口中的「取消」= `deleteTask()` 硬删除)
|
|
74
|
+
*
|
|
75
|
+
* 与 `cancelled` 的区别:
|
|
76
|
+
* - `cancelled` = `updateTask(status="cancelled")`,任务**实体还在**(可查、可恢复)
|
|
77
|
+
* - `deleted` = `deleteTask()`,任务实体**已从库消失**(不可恢复)
|
|
78
|
+
*
|
|
79
|
+
* 语义上必须分开:用户看到「🚫 已取消」会以为任务还能找回来;
|
|
80
|
+
* 硬删除后任务真的没了,卡片应显示「🗑️ 已删除」。
|
|
81
|
+
*/
|
|
82
|
+
| "deleted";
|
|
65
83
|
/** workflow 卡片状态(与 CardStatus 同集合;语义别名,便于阅读) */
|
|
66
84
|
export type WorkflowCardStatus = CardStatus;
|
|
67
85
|
/** 里程碑(关键节点):时间 + 标题 + 描述 */
|
|
@@ -167,11 +185,27 @@ export interface FinishTaskOptions {
|
|
|
167
185
|
messageId: string;
|
|
168
186
|
chatId?: string;
|
|
169
187
|
profile?: string;
|
|
170
|
-
|
|
188
|
+
/**
|
|
189
|
+
* 终态卡片状态
|
|
190
|
+
*
|
|
191
|
+
* ★ Task #4536 扩展:
|
|
192
|
+
* - `completed` task.status = completed
|
|
193
|
+
* - `failed` task.status = failed / timeout
|
|
194
|
+
* - `cancelled` task.status = cancelled(**不再**误标「失败」)
|
|
195
|
+
* - `stopped` task.status = paused(用户 stop / 暂停;不是终结,可 resume)
|
|
196
|
+
*/
|
|
197
|
+
status: Exclude<CardStatus, "running">;
|
|
171
198
|
meta?: TaskMeta;
|
|
172
199
|
/** 终态补充说明(会作为最后一条里程碑 append) */
|
|
173
200
|
finalStep?: string;
|
|
174
201
|
progress?: number;
|
|
202
|
+
/**
|
|
203
|
+
* 收尾里程碑的自定义标题(Task #4536 / xval round2 NIT 3)
|
|
204
|
+
*
|
|
205
|
+
* `pauseTask` 默认写「Task 已暂停」;archived 场景应传「Task 已归档」,
|
|
206
|
+
* 否则归档任务的卡片会误显示"已暂停"。
|
|
207
|
+
*/
|
|
208
|
+
pausedMilestoneTitle?: string;
|
|
175
209
|
}
|
|
176
210
|
export interface StartTaskResult {
|
|
177
211
|
messageId: string;
|
|
@@ -449,6 +483,22 @@ export declare function buildWorkflowCard(opts: {
|
|
|
449
483
|
updateCount?: number;
|
|
450
484
|
spinner?: string;
|
|
451
485
|
}): CardPayload;
|
|
486
|
+
/**
|
|
487
|
+
* 卡片状态的对外快照(Task #4536)
|
|
488
|
+
*
|
|
489
|
+
* 用于持久化 / 重启恢复:`exportState` / `hydrateState` 的载荷类型。
|
|
490
|
+
*/
|
|
491
|
+
export interface CardStateSnapshot {
|
|
492
|
+
chatId?: string;
|
|
493
|
+
profile?: string;
|
|
494
|
+
meta?: TaskMeta;
|
|
495
|
+
startedAt?: string;
|
|
496
|
+
updateCount?: number;
|
|
497
|
+
spinnerIndex?: number;
|
|
498
|
+
milestones?: Milestone[];
|
|
499
|
+
processSteps?: ProcessStep[];
|
|
500
|
+
progress?: number;
|
|
501
|
+
}
|
|
452
502
|
/**
|
|
453
503
|
* LarkCardPatchNotifier - 封装单卡片 patch 逻辑
|
|
454
504
|
*/
|
|
@@ -480,6 +530,63 @@ export declare class LarkCardPatchNotifier {
|
|
|
480
530
|
* (旧实现传 `--content` 是非法 flag → 秒失败 → 卡片永远停在初始态)。
|
|
481
531
|
*/
|
|
482
532
|
updateTask(opts: UpdateTaskOptions): Promise<void>;
|
|
533
|
+
/**
|
|
534
|
+
* 导出某张卡片的累积内容快照(Task #4536 / xval MAJOR 3)
|
|
535
|
+
*
|
|
536
|
+
* 供上层(`LarkCliTaskNotifyHook`)持久化到 store,让 roy-agent 重启后
|
|
537
|
+
* 第一次 patch 仍能带上原里程碑 / 过程步骤 / 更新计数,而不是退回
|
|
538
|
+
* "第 1 次更新 + 暂无里程碑"。
|
|
539
|
+
*
|
|
540
|
+
* 返回 `undefined` 表示本 notifier 没有该 messageId 的状态
|
|
541
|
+
* (例如刚重启 —— 此时调用方应先用 {@link hydrateState} 灌入)。
|
|
542
|
+
*/
|
|
543
|
+
exportState(messageId: string): CardStateSnapshot | undefined;
|
|
544
|
+
/**
|
|
545
|
+
* 注入某张卡片的状态快照(Task #4536 / xval MAJOR 3)
|
|
546
|
+
*
|
|
547
|
+
* 用于**进程重启后**从持久层恢复卡片内容:之后 `updateTask` /
|
|
548
|
+
* `pauseTask` 会基于这份快照继续累积,而不是从空白重建。
|
|
549
|
+
*
|
|
550
|
+
* ★ 幂等:已有 state 时不覆盖(内存里的比持久化的更新)。
|
|
551
|
+
*/
|
|
552
|
+
hydrateState(messageId: string, snapshot: CardStateSnapshot): void;
|
|
553
|
+
/**
|
|
554
|
+
* 暂停卡片(Task #4536:stop / archived)+ unpin,**保留**卡片状态与时间线
|
|
555
|
+
*
|
|
556
|
+
* ★ 为什么不能复用 `finishTask`(xval MAJOR 2 回归):
|
|
557
|
+
* `finishTask` 末尾会 `states.delete(messageId)` —— 那是终态语义(卡片到此为止)。
|
|
558
|
+
* `paused` **不是**终态(可 resume),如果也删状态:
|
|
559
|
+
* 1. resume 后 `updateTask` 从空 state 重建 → 里程碑 / 过程步骤 /
|
|
560
|
+
* "第 N 次更新" 全部丢失,卡片退回"第 1 次更新 + 暂无里程碑";
|
|
561
|
+
* 2. 卡片 action handler 的 fallback 也会把 paused 卡片重建成蓝色 running。
|
|
562
|
+
*
|
|
563
|
+
* 所以 pause 只做三件事:patch 成灰底「已暂停」、unpin、**保留 state**。
|
|
564
|
+
* 只有 `unpinOnFinish` 为 true 时才 unpin(与 finishTask 一致)。
|
|
565
|
+
*/
|
|
566
|
+
pauseTask(opts: FinishTaskOptions): Promise<void>;
|
|
567
|
+
/**
|
|
568
|
+
* 单独 pin 一条已存在的卡片消息(Task #4536)
|
|
569
|
+
*
|
|
570
|
+
* 用途:任务 **resume**(paused → active)后把卡片重新置顶,
|
|
571
|
+
* 让 pin 状态与任务状态保持一致(stop 时 unpin,resume 时 re-pin)。
|
|
572
|
+
*
|
|
573
|
+
* ★ 与 `startTask` 里的 pin 走**同一套** lark-cli 契约:
|
|
574
|
+
* `im pins create --data '{"message_id":"om_xxx"}'`(绝不传 --chat-id/--message-id,
|
|
575
|
+
* 那是非法 flag → unknown flag → pin 永远失败,Task #4230 的老坑)。
|
|
576
|
+
*
|
|
577
|
+
* 失败直接抛出,由调用方决定降级(pin 失败不应阻断卡片 patch)。
|
|
578
|
+
*/
|
|
579
|
+
pinMessage(messageId: string, profile?: string): Promise<void>;
|
|
580
|
+
/**
|
|
581
|
+
* 单独 unpin 一条已存在的卡片消息(Task #4540)
|
|
582
|
+
*
|
|
583
|
+
* 与 {@link pinMessage} 配对。为什么需要它:`finishTask` / `pauseTask` 的
|
|
584
|
+
* unpin 是"尽力而为"的副作用,且一旦 patch 抛错,unpin 那段可能整段跳过。
|
|
585
|
+
* 而用户最在意的是「pin 别再挂着」—— 所以删除任务时额外补一次显式 unpin。
|
|
586
|
+
*
|
|
587
|
+
* 幂等:已 unpin 的消息再 delete 只会 warn(由 `buildUnpinArgs` 保证带 `--yes`)。
|
|
588
|
+
*/
|
|
589
|
+
unpinMessage(messageId: string, profile?: string): Promise<void>;
|
|
483
590
|
/**
|
|
484
591
|
* 完成任务:patch final status(终态里程碑 → 进度 100%)+ unpin
|
|
485
592
|
*
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LarkCardStateStore — 任务进展卡片消息的**持久化**记录(Task #4536)
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么需要
|
|
5
|
+
*
|
|
6
|
+
* `LarkCliTaskNotifyHook` 原来只把「taskId → messageId」存在内存 `Map` 里:
|
|
7
|
+
*
|
|
8
|
+
* ```typescript
|
|
9
|
+
* private cardMessageIds: Map<number, string> = new Map();
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* ⇒ roy-agent 进程一重启,之前发过的卡片**再也无法被 patch**,
|
|
13
|
+
* 变成永远停在「进行中」的孤儿卡片,pin 也一直挂着。
|
|
14
|
+
*
|
|
15
|
+
* ## 设计选型:独立 SQLite 库文件(不写 task.context)
|
|
16
|
+
*
|
|
17
|
+
* | 方案 | 结论 |
|
|
18
|
+
* |------|------|
|
|
19
|
+
* | a) 写 `task.context` | ❌ 写 context 会同步触发 `task:after.update` → 本插件重入(现有 `CARD_START_INFLIGHT_SENTINEL` 就是被这个坑逼出来的);且 context 会被 `renderTaskInfoLines` 渲染进卡片正文,messageId/chatId 会污染用户可见内容 |
|
|
20
|
+
* | b) 给 `tasks.db` 加表 | ❌ 需要 migration,且插件层拿不到 task store 句柄,耦合更重 |
|
|
21
|
+
*
|
|
22
|
+
* ※ 关于 `task:after.complete` 影响面的准确描述见
|
|
23
|
+
* `lark-cli-task-notify-plugin.ts` 里 `onAfterUpdate` 的注释(xval round2 NIT-2 更正)。
|
|
24
|
+
* | c) 独立 JSON 文件 | ❌ 无事务、无跨进程锁,并发 hook 会互相覆盖 |
|
|
25
|
+
* | **c') 独立 SQLite 库文件** | ✅ 复用既有 `createCompatibleDatabase`(bun:sqlite / better-sqlite3 双运行时),UPSERT 原子、自带跨进程锁、零 migration |
|
|
26
|
+
*
|
|
27
|
+
* 库文件:`~/.local/share/roy-agent/lark-cards.db`(与 `tasks.db` / `workflows.db` 同目录)
|
|
28
|
+
*
|
|
29
|
+
* ## 记录生命周期
|
|
30
|
+
*
|
|
31
|
+
* ```
|
|
32
|
+
* startTask 成功 → upsert({status: "open", pinned: true})
|
|
33
|
+
* patch 成功 → upsert/touch(messageId 不变)
|
|
34
|
+
* paused(stop) → markPaused() → status="paused"(保留 messageId,resume 可复用)
|
|
35
|
+
* resume → markReopened()→ status="open"
|
|
36
|
+
* completed/failed/cancelled → markClosed() → status="closed" + closedAt
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* ★ 终态**不删除**记录:保留 messageId/chatId 便于事后追溯(用户手动删卡片后
|
|
40
|
+
* 再 patch 会失败,但记录本身仍有诊断价值)。
|
|
41
|
+
*/
|
|
42
|
+
/**
|
|
43
|
+
* 卡片记录状态
|
|
44
|
+
*
|
|
45
|
+
* - `open` 进行中(卡片 pin 着,可 patch)
|
|
46
|
+
* - `paused` 已暂停(stop)。**保留 messageId**:任务 resume 后继续 patch 同一张卡
|
|
47
|
+
* - `closed` 已终结(completed / failed / cancelled)。记录保留,不再 patch
|
|
48
|
+
*/
|
|
49
|
+
export type LarkCardRecordStatus = "open" | "paused" | "closed";
|
|
50
|
+
/** 一条卡片持久化记录 */
|
|
51
|
+
export interface LarkCardState {
|
|
52
|
+
/** 任务 ID(主键) */
|
|
53
|
+
taskId: number;
|
|
54
|
+
/** 飞书 message_id(om_xxx) */
|
|
55
|
+
messageId: string;
|
|
56
|
+
/** 飞书 chat_id(oc_xxx) */
|
|
57
|
+
chatId: string;
|
|
58
|
+
/** lark-cli profile(多 appId 场景) */
|
|
59
|
+
profile?: string;
|
|
60
|
+
/** 当前 pin 状态(true = 置顶中) */
|
|
61
|
+
pinned: boolean;
|
|
62
|
+
/** 记录状态 */
|
|
63
|
+
status: LarkCardRecordStatus;
|
|
64
|
+
/** 首次发卡时间(ms epoch) */
|
|
65
|
+
createdAt: number;
|
|
66
|
+
/** 最后更新时间(ms epoch) */
|
|
67
|
+
updatedAt: number;
|
|
68
|
+
/** 终结时间(ms epoch);仅 status=closed 有值 */
|
|
69
|
+
closedAt?: number;
|
|
70
|
+
/**
|
|
71
|
+
* 卡片自持的累积内容(Task #4536 / xval MAJOR 3)
|
|
72
|
+
*
|
|
73
|
+
* ★ 为什么要持久化:`LarkCardPatchNotifier` 的里程碑 / 过程步骤 / 更新计数
|
|
74
|
+
* 只存在内存里。只持久化 messageId 的话,重启后第一次 patch 会用空状态
|
|
75
|
+
* 重建卡片 → 用户看到"暂无里程碑 / 第 1 次更新",历史进展被静默抹掉。
|
|
76
|
+
*
|
|
77
|
+
* 存 JSON 字符串(不建子表):内容规模小(每次更新只 append 一条),
|
|
78
|
+
* 读取模式永远是"整张卡一起取出",不需要按里程碑查询。
|
|
79
|
+
*/
|
|
80
|
+
timeline?: string;
|
|
81
|
+
}
|
|
82
|
+
/** 持久化端口(hook 只依赖这个接口,便于测试注入内存实现) */
|
|
83
|
+
export interface LarkCardStateStore {
|
|
84
|
+
/** 写入或覆盖一条记录 */
|
|
85
|
+
upsert(state: LarkCardState): void;
|
|
86
|
+
/** 按 taskId 读取 */
|
|
87
|
+
get(taskId: number): LarkCardState | undefined;
|
|
88
|
+
/** 列出全部记录(诊断用) */
|
|
89
|
+
list(): LarkCardState[];
|
|
90
|
+
/** 更新 pin 状态 */
|
|
91
|
+
markPinned(taskId: number, pinned: boolean): void;
|
|
92
|
+
/** 标记为暂停(保留 messageId) */
|
|
93
|
+
markPaused(taskId: number): void;
|
|
94
|
+
/** 从暂停/终结翻回进行中(resume) */
|
|
95
|
+
markReopened(taskId: number): void;
|
|
96
|
+
/** 标记终结(completed / failed / cancelled) */
|
|
97
|
+
markClosed(taskId: number): void;
|
|
98
|
+
/** 真删除(仅测试/手工清理用) */
|
|
99
|
+
delete(taskId: number): void;
|
|
100
|
+
/** 释放资源 */
|
|
101
|
+
close(): void;
|
|
102
|
+
}
|
|
103
|
+
export declare class MemoryLarkCardStateStore implements LarkCardStateStore {
|
|
104
|
+
private readonly records;
|
|
105
|
+
upsert(state: LarkCardState): void;
|
|
106
|
+
get(taskId: number): LarkCardState | undefined;
|
|
107
|
+
list(): LarkCardState[];
|
|
108
|
+
markPinned(taskId: number, pinned: boolean): void;
|
|
109
|
+
markPaused(taskId: number): void;
|
|
110
|
+
markReopened(taskId: number): void;
|
|
111
|
+
markClosed(taskId: number): void;
|
|
112
|
+
delete(taskId: number): void;
|
|
113
|
+
close(): void;
|
|
114
|
+
}
|
|
115
|
+
export declare class SqliteLarkCardStateStore implements LarkCardStateStore {
|
|
116
|
+
private readonly db;
|
|
117
|
+
constructor(dbPath: string);
|
|
118
|
+
upsert(state: LarkCardState): void;
|
|
119
|
+
get(taskId: number): LarkCardState | undefined;
|
|
120
|
+
list(): LarkCardState[];
|
|
121
|
+
markPinned(taskId: number, pinned: boolean): void;
|
|
122
|
+
markPaused(taskId: number): void;
|
|
123
|
+
markReopened(taskId: number): void;
|
|
124
|
+
markClosed(taskId: number): void;
|
|
125
|
+
delete(taskId: number): void;
|
|
126
|
+
close(): void;
|
|
127
|
+
}
|
|
128
|
+
/** 默认库文件路径:`$HOME/.local/share/roy-agent/lark-cards.db` */
|
|
129
|
+
export declare function getDefaultLarkCardDbPath(): string;
|
|
130
|
+
/**
|
|
131
|
+
* 创建持久化 store
|
|
132
|
+
*
|
|
133
|
+
* ★ 失败降级:SQLite 打不开(权限 / 磁盘满 / 运行时缺 sqlite)时
|
|
134
|
+
* **不抛错**,回落内存实现并 warn —— 卡片该发还得发,绝不能因为
|
|
135
|
+
* 持久化层故障让通知路径整体崩掉(诉求 C:健壮性)。
|
|
136
|
+
*/
|
|
137
|
+
export declare function createLarkCardStateStore(dbPath?: string): LarkCardStateStore;
|