@ai-setting/roy-agent-core 1.7.76 → 1.7.85
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/config-protection.d.ts +89 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.js +16 -0
- package/dist/env/agent/agent-component.d.ts +42 -21
- package/dist/env/agent/agent-component.js +3 -3
- package/dist/env/agent/index.js +3 -3
- package/dist/env/agent/types.d.ts +32 -12
- package/dist/env/error-reply.d.ts +6 -0
- package/dist/env/error-reply.js +1 -1
- package/dist/env/event-source/bounty-im-handler.d.ts +8 -0
- package/dist/env/event-source/es-command.d.ts +39 -0
- package/dist/env/event-source/es-plugins.d.ts +68 -0
- package/dist/env/event-source/event-source-component.d.ts +15 -0
- package/dist/env/event-source/event-source-handlers.d.ts +68 -0
- package/dist/env/event-source/event-source-handlers.js +22 -10
- package/dist/env/event-source/index.d.ts +5 -1
- package/dist/env/event-source/index.js +59 -10
- package/dist/env/event-source/types.d.ts +101 -1
- package/dist/env/event-source/wecom-card-action-handler.d.ts +141 -0
- package/dist/env/event-source/wecom-card-builder.d.ts +220 -0
- package/dist/env/event-source/wecom-cli-handler.d.ts +266 -0
- package/dist/env/event-source/wecom-cli-sender.d.ts +88 -0
- package/dist/env/event-source/wecom-media.d.ts +130 -0
- package/dist/env/event-source/wecom-respond-registry.d.ts +151 -0
- package/dist/env/event-source/wecom-ws-bridge.d.ts +213 -0
- package/dist/env/index.js +19 -17
- package/dist/env/task/backend/index.js +37 -1
- package/dist/env/task/backend/task-store-backend.d.ts +12 -0
- package/dist/env/task/backend/types.d.ts +19 -0
- package/dist/env/task/delegate/delegate-tool.d.ts +62 -2
- package/dist/env/task/delegate/delegate-tool.js +3 -1
- package/dist/env/task/delegate/index.js +1 -1
- package/dist/env/task/index.js +4 -4
- package/dist/env/task/mcp/index.js +3 -0
- package/dist/env/task/mcp/task-mcp-server.d.ts +1 -1
- package/dist/env/task/plugins/fake-user-message-helper.d.ts +10 -2
- package/dist/env/task/plugins/index.d.ts +3 -0
- package/dist/env/task/plugins/index.js +36 -4
- package/dist/env/task/plugins/lark-card-patch-notifier.d.ts +41 -2
- package/dist/env/task/plugins/lark-card-patch-notifier.js +1 -1
- package/dist/env/task/plugins/lark-cli-task-notify-plugin.d.ts +16 -0
- package/dist/env/task/plugins/task-op-watermark-plugin.d.ts +112 -0
- package/dist/env/task/plugins/wecom-card-state-store.d.ts +121 -0
- package/dist/env/task/plugins/wecom-task-notify-plugin.d.ts +224 -0
- package/dist/env/task/storage/index.js +2 -2
- package/dist/env/task/storage/sqlite-task-store.d.ts +54 -0
- package/dist/env/task/task-component.d.ts +16 -0
- package/dist/env/task/tools/operation/operation-types.d.ts +13 -13
- package/dist/env/tool/built-in/index.d.ts +2 -0
- package/dist/env/tool/built-in/index.js +6 -1
- package/dist/env/tool/index.js +3 -2
- package/dist/env/workflow/index.js +3 -3
- package/dist/env/workflow/plugins/index.js +2 -2
- package/dist/env/workflow/tools/index.js +2 -2
- package/dist/env/workflow/types/event.d.ts +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +71 -20
- package/dist/shared/@ai-setting/{roy-agent-core-v87njmq7.js → roy-agent-core-0dh8npnz.js} +1 -1
- package/dist/shared/@ai-setting/roy-agent-core-2stt4rp5.js +134 -0
- package/dist/shared/@ai-setting/{roy-agent-core-mww0mnd9.js → roy-agent-core-7bpj859q.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-nmx9934r.js → roy-agent-core-7dd0s3xb.js} +15 -5
- package/dist/shared/@ai-setting/{roy-agent-core-ghnagzrh.js → roy-agent-core-b31v3qpv.js} +853 -48
- package/dist/shared/@ai-setting/{roy-agent-core-cxy143m4.js → roy-agent-core-begm7ytz.js} +63 -2
- package/dist/shared/@ai-setting/{roy-agent-core-aa2j7bk9.js → roy-agent-core-cha0jc7n.js} +40 -26
- package/dist/shared/@ai-setting/{roy-agent-core-p3zv1mx5.js → roy-agent-core-d1n4jbza.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-q5r75vev.js → roy-agent-core-dkrvmjsh.js} +17 -75
- package/dist/shared/@ai-setting/{roy-agent-core-abqhkbn3.js → roy-agent-core-ezvpreqz.js} +23 -0
- package/dist/shared/@ai-setting/{roy-agent-core-99nwgj84.js → roy-agent-core-fzw9xzm1.js} +1 -1
- package/dist/shared/@ai-setting/roy-agent-core-h21gngxf.js +247 -0
- package/dist/shared/@ai-setting/roy-agent-core-m3vjepzz.js +544 -0
- package/dist/shared/@ai-setting/{roy-agent-core-zycadbpx.js → roy-agent-core-p6ks90tb.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-ntq0gz7q.js → roy-agent-core-q813vafd.js} +1 -1
- package/dist/shared/@ai-setting/{roy-agent-core-z43aj03k.js → roy-agent-core-qk9hd89p.js} +21 -2
- package/dist/shared/@ai-setting/{roy-agent-core-6cy43nss.js → roy-agent-core-rykf7c04.js} +49 -9
- package/dist/shared/@ai-setting/{roy-agent-core-8ez6mccb.js → roy-agent-core-tk98f92b.js} +4 -0
- package/dist/shared/@ai-setting/{roy-agent-core-bxkjk7zx.js → roy-agent-core-vx8zc847.js} +4 -1
- package/dist/shared/@ai-setting/roy-agent-core-vyr6svt6.js +31 -0
- package/dist/shared/@ai-setting/{roy-agent-core-t3rrb959.js → roy-agent-core-xf6z96qy.js} +2086 -163
- package/package.json +10 -1
- package/dist/shared/@ai-setting/roy-agent-core-f77k3gqt.js +0 -71
- /package/dist/shared/@ai-setting/{roy-agent-core-b4x6x4k2.js → roy-agent-core-m1fgtnrc.js} +0 -0
- /package/dist/shared/@ai-setting/{roy-agent-core-v85n42ve.js → roy-agent-core-ze5cqpf2.js} +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview WecomCardStateStore — 企微任务进展消息的持久化记录(Task #5193)
|
|
3
|
+
*
|
|
4
|
+
* ## 为什么需要(与 lark-cards.db 同因)
|
|
5
|
+
*
|
|
6
|
+
* 企微 wecom-cli **没有** interactive card / 消息更新 API ——
|
|
7
|
+
* 进展卡片是**每次更新发一条新 markdown**。但节流判定、
|
|
8
|
+
* 「无卡片不凭空发卡」守卫、终态收尾都需要知道
|
|
9
|
+
* 「这个 task 是否发过、发到哪个 chat、当前什么状态」。
|
|
10
|
+
*
|
|
11
|
+
* ## 与 lark-card-state-store 的关系
|
|
12
|
+
*
|
|
13
|
+
* 结构对齐(同一套接口语义),但**独立库文件**(wecom-cards.db):
|
|
14
|
+
* - lark-cards.db 有 messageId(可 patch 同一张卡)
|
|
15
|
+
* - wecom-cards.db 无 messageId 语义(每条都是新消息),
|
|
16
|
+
* 记录 `taskId → chatId / status / timeline / updateCount`
|
|
17
|
+
*
|
|
18
|
+
* ## 记录生命周期
|
|
19
|
+
*
|
|
20
|
+
* ```
|
|
21
|
+
* create 成功 → upsert({status:"open"})
|
|
22
|
+
* update 成功 → touch(updateCount+1,timeline 追加)
|
|
23
|
+
* 节流 → touch timeline(数据不丢,只是不发)
|
|
24
|
+
* completed/failed/cancelled → markClosed()
|
|
25
|
+
* delete → markClosed()(保留记录便于追溯)
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* ★ 终态**不删除**记录:保留 chatId / timeline 便于事后追溯。
|
|
29
|
+
*/
|
|
30
|
+
/** 记录状态(与 LarkCardRecordStatus 语义一致) */
|
|
31
|
+
export type WecomCardRecordStatus = "open" | "paused" | "closed";
|
|
32
|
+
/** 一条企微卡片持久化记录 */
|
|
33
|
+
export interface WecomCardState {
|
|
34
|
+
/** 任务 ID(主键) */
|
|
35
|
+
taskId: number;
|
|
36
|
+
/** 企微 chat_id(单聊=userid,群聊=chatid) */
|
|
37
|
+
chatId: string;
|
|
38
|
+
/** 当前 pin 状态(企微无 pin,恒 false;保留字段对齐接口) */
|
|
39
|
+
pinned: boolean;
|
|
40
|
+
/** 记录状态 */
|
|
41
|
+
status: WecomCardRecordStatus;
|
|
42
|
+
/** 首次发卡时间(ms epoch) */
|
|
43
|
+
createdAt: number;
|
|
44
|
+
/** 最后更新时间(ms epoch) */
|
|
45
|
+
updatedAt: number;
|
|
46
|
+
/** 终结时间(ms epoch);仅 status=closed 有值 */
|
|
47
|
+
closedAt?: number;
|
|
48
|
+
/** 已发送的更新条数(诊断用) */
|
|
49
|
+
updateCount: number;
|
|
50
|
+
/**
|
|
51
|
+
* 累积时间线(JSON 字符串:Milestone[])
|
|
52
|
+
*
|
|
53
|
+
* ★ 企微每次发新消息都要带**完整历史时间线**(无 patch 能力),
|
|
54
|
+
* 所以时间线必须持久化 —— 重启后第一条 update 也要能渲染
|
|
55
|
+
* 完整历史。
|
|
56
|
+
*/
|
|
57
|
+
timeline?: string;
|
|
58
|
+
}
|
|
59
|
+
/** 持久化端口(hook 只依赖这个接口,便于测试注入内存实现) */
|
|
60
|
+
export interface WecomCardStateStore {
|
|
61
|
+
/** 写入或覆盖一条记录 */
|
|
62
|
+
upsert(state: WecomCardState): void;
|
|
63
|
+
/** 按 taskId 读取 */
|
|
64
|
+
get(taskId: number): WecomCardState | undefined;
|
|
65
|
+
/** 列出全部记录(诊断用) */
|
|
66
|
+
list(): WecomCardState[];
|
|
67
|
+
/** 标记为暂停(保留记录) */
|
|
68
|
+
markPaused(taskId: number): void;
|
|
69
|
+
/** 从暂停/终结翻回进行中(resume) */
|
|
70
|
+
markReopened(taskId: number): void;
|
|
71
|
+
/** 标记终结(completed / failed / cancelled / deleted) */
|
|
72
|
+
markClosed(taskId: number): void;
|
|
73
|
+
/** 真删除(仅测试/手工清理用) */
|
|
74
|
+
delete(taskId: number): void;
|
|
75
|
+
/** 释放资源 */
|
|
76
|
+
close(): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 内存实现(测试 / 降级)
|
|
80
|
+
*
|
|
81
|
+
* ★ 独立导出(`createMemoryWecomCardStore`),测试直接用,
|
|
82
|
+
* 不经过 `createWecomCardStateStore` 的测试环境守卫。
|
|
83
|
+
*/
|
|
84
|
+
export declare class MemoryWecomCardStateStore implements WecomCardStateStore {
|
|
85
|
+
private readonly records;
|
|
86
|
+
upsert(state: WecomCardState): void;
|
|
87
|
+
get(taskId: number): WecomCardState | undefined;
|
|
88
|
+
list(): WecomCardState[];
|
|
89
|
+
markPaused(taskId: number): void;
|
|
90
|
+
markReopened(taskId: number): void;
|
|
91
|
+
markClosed(taskId: number): void;
|
|
92
|
+
delete(taskId: number): void;
|
|
93
|
+
close(): void;
|
|
94
|
+
}
|
|
95
|
+
/** 测试工厂:内存 store */
|
|
96
|
+
export declare function createMemoryWecomCardStore(): WecomCardStateStore;
|
|
97
|
+
export declare class SqliteWecomCardStateStore implements WecomCardStateStore {
|
|
98
|
+
private readonly db;
|
|
99
|
+
constructor(dbPath: string);
|
|
100
|
+
upsert(state: WecomCardState): void;
|
|
101
|
+
get(taskId: number): WecomCardState | undefined;
|
|
102
|
+
list(): WecomCardState[];
|
|
103
|
+
markPaused(taskId: number): void;
|
|
104
|
+
markReopened(taskId: number): void;
|
|
105
|
+
markClosed(taskId: number): void;
|
|
106
|
+
delete(taskId: number): void;
|
|
107
|
+
close(): void;
|
|
108
|
+
}
|
|
109
|
+
/** 默认库文件路径:`$HOME/.local/share/roy-agent/wecom-cards.db` */
|
|
110
|
+
export declare function getDefaultWecomCardDbPath(): string;
|
|
111
|
+
/**
|
|
112
|
+
* 创建持久化 store
|
|
113
|
+
*
|
|
114
|
+
* ★ 失败降级:SQLite 打不开时**不抛错**,回落内存实现并 warn ——
|
|
115
|
+
* 卡片该发还得发,绝不能因为持久化层故障让通知路径整体崩掉。
|
|
116
|
+
*
|
|
117
|
+
* ★ 测试环境保护(与 createLarkCardStateStore 同配方):
|
|
118
|
+
* bun test 环境 + 未显式指定路径 → 一律返回内存实现(零副作用),
|
|
119
|
+
* 防止测试污染真实用户库。
|
|
120
|
+
*/
|
|
121
|
+
export declare function createWecomCardStateStore(dbPath?: string): WecomCardStateStore;
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview WecomTaskNotifyHook — 企微任务进展通知 Hook(Task #5193)
|
|
3
|
+
*
|
|
4
|
+
* 在任务生命周期事件上,把「任务进展」渲染成 **markdown 消息**
|
|
5
|
+
* 发到企微(对齐 LarkCliTaskNotifyHook 的 hook 结构):
|
|
6
|
+
*
|
|
7
|
+
* - `task:after.create` → 发初始卡片
|
|
8
|
+
* - `task:after.update` → 发更新卡片(进度/状态/变更摘要)
|
|
9
|
+
* - `task:after.complete` → 发终态卡片(仅真验收完成)
|
|
10
|
+
* - `task:after.delete` → 发取消收尾
|
|
11
|
+
* - `task:operation:after.create` → 时间线追加(节流)
|
|
12
|
+
*
|
|
13
|
+
* ## 与 lark-cli 插件的关键差异
|
|
14
|
+
*
|
|
15
|
+
* | 维度 | lark-cli | wecom-cli |
|
|
16
|
+
* |------|----------|-----------|
|
|
17
|
+
* | 卡片形态 | interactive card(可 patch 同一张) | **markdown 消息(每次新发)** |
|
|
18
|
+
* | 更新方式 | PATCH 原卡片 | 每次更新发一条新 markdown |
|
|
19
|
+
* | pin/unpin | 支持 | **无**(恒 false) |
|
|
20
|
+
* | messageId 跟踪 | 必须(patch 键) | 不需要 |
|
|
21
|
+
*
|
|
22
|
+
* ⇒ 企微侧防刷屏靠**节流**(operationThrottleMs 默认 5s);
|
|
23
|
+
* 时间线**必须持久化**(wecom-cards.db)—— 每条新消息都要
|
|
24
|
+
* 渲染完整历史,重启后也不能丢。
|
|
25
|
+
*
|
|
26
|
+
* ## chat_id 语义(实测硬约束,Task #5174)
|
|
27
|
+
*
|
|
28
|
+
* - replyChannel.chatId:单聊 = 对方 userid,群聊 = chatid
|
|
29
|
+
* - CLI 需要真实 userid(`wotnB7Wg...` 形态)→ 出站统一走
|
|
30
|
+
* `sendWecomReply`(内部 `resolveWecomCliChatId` 解析 + 缓存)
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import { createWecomTaskNotifyHook } from "./wecom-task-notify-plugin";
|
|
35
|
+
* globalHookManager.register("task:after.create", createWecomTaskNotifyHook({...}));
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
import type { Hook, HookContext } from "../../hook/types";
|
|
39
|
+
import type { Task } from "../types";
|
|
40
|
+
import { type WecomSendResult } from "../../event-source/wecom-respond-registry";
|
|
41
|
+
import { MemoryWecomCardStateStore, getDefaultWecomCardDbPath, type WecomCardStateStore } from "./wecom-card-state-store";
|
|
42
|
+
/** 通知类型(对齐 NotifyType) */
|
|
43
|
+
export declare const WecomNotifyType: {
|
|
44
|
+
readonly TASK_CREATED: "task_created";
|
|
45
|
+
readonly TASK_UPDATED: "task_updated";
|
|
46
|
+
readonly TASK_COMPLETED: "task_completed";
|
|
47
|
+
readonly OPERATION_CREATED: "operation_created";
|
|
48
|
+
};
|
|
49
|
+
export type WecomNotifyType = (typeof WecomNotifyType)[keyof typeof WecomNotifyType];
|
|
50
|
+
/** 时间线里程碑(渲染用,与 LarkCardPatchNotifier.Milestone 形态对齐) */
|
|
51
|
+
export interface WecomMilestone {
|
|
52
|
+
title: string;
|
|
53
|
+
timestamp: string;
|
|
54
|
+
description?: string;
|
|
55
|
+
}
|
|
56
|
+
/** 插件配置 */
|
|
57
|
+
export interface WecomTaskNotifyConfig {
|
|
58
|
+
/** 是否启用 */
|
|
59
|
+
enabled?: boolean;
|
|
60
|
+
/** 优先级 */
|
|
61
|
+
priority?: number;
|
|
62
|
+
/** 插件名称(用于 pluginEnabled 检查) */
|
|
63
|
+
pluginName?: string;
|
|
64
|
+
/** 事件源 ID(用于 pluginEnabled 检查) */
|
|
65
|
+
sourceId?: string;
|
|
66
|
+
/**
|
|
67
|
+
* 操作记录通知节流间隔(毫秒)
|
|
68
|
+
*
|
|
69
|
+
* 企微每次更新都是**新消息**,不加节流会刷屏。默认 5000ms;
|
|
70
|
+
* 设为 0 表示不节流。
|
|
71
|
+
*/
|
|
72
|
+
operationThrottleMs?: number;
|
|
73
|
+
/**
|
|
74
|
+
* 时间线最多保留的里程碑条数(防消息无限膨胀)
|
|
75
|
+
*
|
|
76
|
+
* 企微 markdown 消息有长度上限,时间线太长会被截断。
|
|
77
|
+
* 默认 20 条,超出时丢最旧的(最新进展最重要)。
|
|
78
|
+
*/
|
|
79
|
+
maxTimelineEntries?: number;
|
|
80
|
+
/** 通知类型过滤(空数组 = 全开) */
|
|
81
|
+
notifyTypes?: WecomNotifyType[];
|
|
82
|
+
/**
|
|
83
|
+
* 出站 sender(测试注入;不传用 sendWecomReply)
|
|
84
|
+
*/
|
|
85
|
+
sender?: {
|
|
86
|
+
send(input: {
|
|
87
|
+
chatId: string;
|
|
88
|
+
content: string;
|
|
89
|
+
}): Promise<WecomSendResult>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* 卡片记录持久化 store
|
|
93
|
+
*
|
|
94
|
+
* 不传 → 自动创建(`~/.local/share/roy-agent/wecom-cards.db`);
|
|
95
|
+
* 测试可注入 MemoryWecomCardStateStore。
|
|
96
|
+
*/
|
|
97
|
+
cardStateStore?: WecomCardStateStore;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 从 EnvContext 判定是否企微事件,并提取 chatId。
|
|
101
|
+
*
|
|
102
|
+
* 判定优先级:
|
|
103
|
+
* 1. `envEvent.type === "event-source.event.wecom-cli"`(生产主路径)
|
|
104
|
+
* 2. `replyChannel.type === "wecom-cli"`(兜底:事件类型缺失但通道明确)
|
|
105
|
+
*
|
|
106
|
+
* 两者都不满足(lark / cli-command / timer…)→ isWecom=false,插件跳过。
|
|
107
|
+
*/
|
|
108
|
+
export declare function extractWecomFields(env: {
|
|
109
|
+
envEvent?: unknown;
|
|
110
|
+
replyChannel?: {
|
|
111
|
+
type?: string;
|
|
112
|
+
chatId?: string;
|
|
113
|
+
};
|
|
114
|
+
}, fallbackSourceId?: string): {
|
|
115
|
+
isWecom: boolean;
|
|
116
|
+
chatId?: string;
|
|
117
|
+
sourceId?: string;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* 渲染企微进展卡片(markdown)
|
|
121
|
+
*
|
|
122
|
+
* 结构(对齐 lark 卡片的信息密度,压缩成 markdown):
|
|
123
|
+
* ```
|
|
124
|
+
* ### 📋 Task #42 · 时空增强任务
|
|
125
|
+
* **状态**:🔄 进行中(80%)
|
|
126
|
+
* > 任务描述第一行…
|
|
127
|
+
*
|
|
128
|
+
* **时间线**
|
|
129
|
+
* - 🕐 2026-06-01 00:00 — Task 创建
|
|
130
|
+
* - 🕐 2026-06-01 02:00 — 完成需求分析:已完成核心功能的需求拆解
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function buildWecomTaskCard(input: {
|
|
134
|
+
task: Task;
|
|
135
|
+
statusLabel: string;
|
|
136
|
+
milestones: WecomMilestone[];
|
|
137
|
+
/** 变更摘要(update 时) */
|
|
138
|
+
changeSummary?: string;
|
|
139
|
+
/** 是否终态(终态加收尾分隔线) */
|
|
140
|
+
terminal?: boolean;
|
|
141
|
+
}): string;
|
|
142
|
+
export declare class WecomTaskNotifyHook implements Hook {
|
|
143
|
+
readonly name: string;
|
|
144
|
+
readonly priority: number;
|
|
145
|
+
readonly description?: string;
|
|
146
|
+
readonly pluginName?: string;
|
|
147
|
+
readonly sourceId?: string;
|
|
148
|
+
private readonly config;
|
|
149
|
+
/** 出站 sender(默认 sendWecomReply,测试可注入) */
|
|
150
|
+
private readonly sender;
|
|
151
|
+
/** 持久化 store(taskId → chatId/status/timeline) */
|
|
152
|
+
private readonly cardStateStore;
|
|
153
|
+
/** 操作记录节流状态:key `op:${taskId}` → 上次发送时间戳 */
|
|
154
|
+
private lastNotifyTimestamps;
|
|
155
|
+
constructor(config?: WecomTaskNotifyConfig);
|
|
156
|
+
/**
|
|
157
|
+
* 默认出站:sendWecomReply(CLI 主路径 → WS fallback)
|
|
158
|
+
*
|
|
159
|
+
* sourceId 从事件 metadata 取(sendWecomReply 只在 WS fallback 时用)。
|
|
160
|
+
*/
|
|
161
|
+
private defaultSend;
|
|
162
|
+
execute(ctx: HookContext<unknown>): Promise<void>;
|
|
163
|
+
/** 任务创建:发初始卡片 */
|
|
164
|
+
private onAfterCreate;
|
|
165
|
+
/** 任务更新:发更新卡片 */
|
|
166
|
+
private onAfterUpdate;
|
|
167
|
+
/** 任务终态(task_complete):仅真验收完成(to_validate 是自查关) */
|
|
168
|
+
private onAfterComplete;
|
|
169
|
+
/** 任务删除(硬删除):收尾 */
|
|
170
|
+
private onAfterDelete;
|
|
171
|
+
/** 操作记录创建:时间线追加(节流) */
|
|
172
|
+
private onAfterOperationCreate;
|
|
173
|
+
/** 发初始卡片 */
|
|
174
|
+
private sendCardStart;
|
|
175
|
+
/** 发更新卡片 */
|
|
176
|
+
private sendCardUpdate;
|
|
177
|
+
/** 发终态卡片 */
|
|
178
|
+
private sendCardFinish;
|
|
179
|
+
/**
|
|
180
|
+
* 投递(永不抛)
|
|
181
|
+
*
|
|
182
|
+
* ★ Task #5203:主路径 = WS 直发 template_card(text_notice 进展卡);
|
|
183
|
+
* 构造失败 / WS 不可用 → 回落 markdown(CLI 路径,#5193 行为)。
|
|
184
|
+
*
|
|
185
|
+
* @returns 是否成功(失败时调用方决定是否落库)
|
|
186
|
+
*/
|
|
187
|
+
private deliver;
|
|
188
|
+
/**
|
|
189
|
+
* ★ Task #5203:经 WS 直发 template_card。
|
|
190
|
+
*
|
|
191
|
+
* - chatType:单聊 → chat_type=1;群聊 → 2
|
|
192
|
+
* (★ Task #5270:读 replyChannel.params.chatType——
|
|
193
|
+
* buildWecomReplyChannel 塞入,顶层无 chatType 字段;
|
|
194
|
+
* 另当 chatId 与当前 env 的 chatId 不一致时(终态/删除
|
|
195
|
+
* 链路用持久化记录的 rec.chatId,可能来自群会话)按群聊
|
|
196
|
+
* 处理,避免群 chatid + chat_type=1 错配被企微丢弃)
|
|
197
|
+
* - 失败返回 false(调用方回落 markdown),绝不抛
|
|
198
|
+
*/
|
|
199
|
+
private deliverTemplateCard;
|
|
200
|
+
/** 读记录(store 异常降级为 undefined,绝不抛) */
|
|
201
|
+
private getRecord;
|
|
202
|
+
/** 解析持久化的时间线 JSON(损坏时返回空数组) */
|
|
203
|
+
private parseTimeline;
|
|
204
|
+
/** 时间线截断(保留最新 N 条) */
|
|
205
|
+
private trimTimeline;
|
|
206
|
+
/** 持久化时间线(失败只 warn) */
|
|
207
|
+
private persistTimeline;
|
|
208
|
+
/** 从记录重建最小 Task(delete 后 Task 已不存在) */
|
|
209
|
+
private hydrateTask;
|
|
210
|
+
/**
|
|
211
|
+
* 操作记录发送节流
|
|
212
|
+
*
|
|
213
|
+
* 同一 Task 在 operationThrottleMs(默认 5s)窗口内只发一次,
|
|
214
|
+
* 避免 agent 每次 tool call 都刷屏(企微每次都是新消息,比 lark 更敏感)。
|
|
215
|
+
*
|
|
216
|
+
* ★ 返回 true **不代表丢弃**:被节流的 operation 仍会先并进
|
|
217
|
+
* 时间线并落库,只是不立刻发送。
|
|
218
|
+
*/
|
|
219
|
+
private shouldThrottleOperation;
|
|
220
|
+
/** 检查是否应该发送通知 */
|
|
221
|
+
private shouldNotify;
|
|
222
|
+
}
|
|
223
|
+
export declare function createWecomTaskNotifyHook(config?: WecomTaskNotifyConfig): WecomTaskNotifyHook;
|
|
224
|
+
export { MemoryWecomCardStateStore, getDefaultWecomCardDbPath };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import"../../../shared/@ai-setting/roy-agent-core-
|
|
1
|
+
import"../../../shared/@ai-setting/roy-agent-core-q813vafd.js";
|
|
2
2
|
import {
|
|
3
3
|
SQLiteTaskStore,
|
|
4
4
|
getDefaultDataDir,
|
|
5
5
|
getDefaultTaskDbPath
|
|
6
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
6
|
+
} from "../../../shared/@ai-setting/roy-agent-core-ezvpreqz.js";
|
|
7
7
|
import"../../../shared/@ai-setting/roy-agent-core-qq96p0tj.js";
|
|
8
8
|
import"../../../shared/@ai-setting/roy-agent-core-7f7t9wwp.js";
|
|
9
9
|
import"../../../shared/@ai-setting/roy-agent-core-85xyctnb.js";
|
|
@@ -71,6 +71,13 @@ export interface TaskStore {
|
|
|
71
71
|
* 确定性映射:sub-agent 的 task_create 用 sessionId=sub-session id)。
|
|
72
72
|
*/
|
|
73
73
|
getTaskIdBySessionId(sessionId: string): Promise<number | undefined>;
|
|
74
|
+
/**
|
|
75
|
+
* Task #5081(optional)— 按 session_id 反查该 session 关联的**全部**
|
|
76
|
+
* task id(不限定 create 记录)。TaskOpWatermarkPlugin 对全部 task
|
|
77
|
+
* 求并集水位。optional:外部宿主实现可不提供(调用方降级到
|
|
78
|
+
* getTaskIdBySessionId 单值)。
|
|
79
|
+
*/
|
|
80
|
+
getTaskIdsBySessionId?(sessionId: string): Promise<number[]>;
|
|
74
81
|
createOperation(options: CreateOperationOptions): Promise<TaskOperation>;
|
|
75
82
|
getOperation(id: number): Promise<TaskOperation | undefined>;
|
|
76
83
|
updateOperation(id: number, updates: {
|
|
@@ -82,6 +89,22 @@ export interface TaskStore {
|
|
|
82
89
|
}): Promise<TaskOperation | undefined>;
|
|
83
90
|
deleteOperation(id: number): Promise<boolean>;
|
|
84
91
|
listOperations(options: ListOperationsOptions): Promise<TaskOperation[]>;
|
|
92
|
+
/**
|
|
93
|
+
* Task #5081(optional)— 绕过 operationsCache 的直读查询。
|
|
94
|
+
*
|
|
95
|
+
* 跨进程写入的 operation 不会失效本进程缓存 → `listOperations`
|
|
96
|
+
* 可能读陈旧快照。本方法**直打 DB**(`ORDER BY id DESC`,不读写
|
|
97
|
+
* 缓存),供 TaskOpWatermarkPlugin 的水位检查使用。
|
|
98
|
+
*
|
|
99
|
+
* optional:不破坏外部宿主实现的 TaskStore 契约(能力探测 +
|
|
100
|
+
* 降级路径见 plugin 侧)。
|
|
101
|
+
*/
|
|
102
|
+
listOperationsFresh?(options: ListOperationsOptions): Promise<TaskOperation[]>;
|
|
103
|
+
/**
|
|
104
|
+
* Task #5081(optional)— 主动失效 operationsCache。
|
|
105
|
+
* 降级路径配套:`listOperations` 前调用,保证读到最新。
|
|
106
|
+
*/
|
|
107
|
+
invalidateOperationsCache?(taskId: number): void;
|
|
85
108
|
createTag(name: string): Promise<TaskTag>;
|
|
86
109
|
getTag(id: number): Promise<TaskTag | undefined>;
|
|
87
110
|
getTagByName(name: string): Promise<TaskTag | undefined>;
|
|
@@ -186,6 +209,28 @@ export declare class SQLiteTaskStore implements TaskStore {
|
|
|
186
209
|
}): Promise<TaskOperation | undefined>;
|
|
187
210
|
deleteOperation(id: number): Promise<boolean>;
|
|
188
211
|
listOperations(options: ListOperationsOptions): Promise<TaskOperation[]>;
|
|
212
|
+
/**
|
|
213
|
+
* Task #5081 — 绕过 operationsCache 的直读查询(optional 能力)。
|
|
214
|
+
*
|
|
215
|
+
* 为什么必须有:operationsCache 只在本进程 create/update/delete 时
|
|
216
|
+
* 失效(:744/:785/:800),**跨进程写入的 operation 不会失效本进程
|
|
217
|
+
* 缓存** —— CLI 探针 / 另一 daemon 进程写的记录,本进程的
|
|
218
|
+
* `listOperations` 永远看不到(读陈旧快照)→ TaskOpWatermarkPlugin
|
|
219
|
+
* 的水位检查会漏报。
|
|
220
|
+
*
|
|
221
|
+
* 要点:
|
|
222
|
+
* - `ORDER BY id DESC`:水位语义要求**单调自增 id**(timestamp 同
|
|
223
|
+
* 毫秒多条会漏),id 是 AUTOINCREMENT 严格单调。
|
|
224
|
+
* - **只读,不写 operationsCache**:不污染其它调用方的缓存语义。
|
|
225
|
+
*/
|
|
226
|
+
listOperationsFresh(options: ListOperationsOptions): Promise<TaskOperation[]>;
|
|
227
|
+
/**
|
|
228
|
+
* Task #5081 — 主动失效 operationsCache(optional 能力)。
|
|
229
|
+
*
|
|
230
|
+
* 供不支持 `listOperationsFresh` 的外部宿主 backend 走降级路径:
|
|
231
|
+
* `listOperations` 之前先失效缓存,保证下次读到最新。
|
|
232
|
+
*/
|
|
233
|
+
invalidateOperationsCache(taskId: number): void;
|
|
189
234
|
/**
|
|
190
235
|
* 按 session_id 反查该 session 创建的第一个 task。
|
|
191
236
|
*
|
|
@@ -195,6 +240,15 @@ export declare class SQLiteTaskStore implements TaskStore {
|
|
|
195
240
|
* 不依赖易失的 EnvContext.currentTaskId(会被 task_complete 清空)或结果文本正则。
|
|
196
241
|
*/
|
|
197
242
|
getTaskIdBySessionId(sessionId: string): Promise<number | undefined>;
|
|
243
|
+
/**
|
|
244
|
+
* Task #5081 — 按 session_id 反查该 session 关联的**全部** task id
|
|
245
|
+
* (optional 能力,TaskStore 接口同款 optional)。
|
|
246
|
+
*
|
|
247
|
+
* 与 getTaskIdBySessionId 的区别:不限定 milestone_type='create'、
|
|
248
|
+
* 不 LIMIT 1 —— sub-session 往同一 task 写过任何 operation 记录
|
|
249
|
+
* (记进度 / milestone / pre_complete 留痕)都算关联。
|
|
250
|
+
*/
|
|
251
|
+
getTaskIdsBySessionId(sessionId: string): Promise<number[]>;
|
|
198
252
|
private rowToTask;
|
|
199
253
|
/**
|
|
200
254
|
* 安全解析 tags 字段。
|
|
@@ -161,6 +161,14 @@ export declare class TaskComponent extends BaseComponent {
|
|
|
161
161
|
* 按 session_id 反查该 session 创建的第一个 task(sub-session → task 确定性映射)。
|
|
162
162
|
*/
|
|
163
163
|
getTaskIdBySessionId(sessionId: string): Promise<number | undefined>;
|
|
164
|
+
/**
|
|
165
|
+
* Task #5081 — 按 session_id 反查该 session 绑定的**全部** task。
|
|
166
|
+
*
|
|
167
|
+
* 为什么需要:一个 sub-session 可能创建/关联多个 task
|
|
168
|
+
* (getTaskIdBySessionId 只返回第一个,ORDER BY timestamp ASC)。
|
|
169
|
+
* TaskOpWatermarkPlugin 对全部 task 求并集水位(保守不漏报)。
|
|
170
|
+
*/
|
|
171
|
+
getTaskIdsBySessionId(sessionId: string): Promise<number[]>;
|
|
164
172
|
/**
|
|
165
173
|
* Get task with operations
|
|
166
174
|
*
|
|
@@ -383,6 +391,14 @@ export declare class TaskComponent extends BaseComponent {
|
|
|
383
391
|
* List operations for a task
|
|
384
392
|
*/
|
|
385
393
|
listOperations(options: ListOperationsOptions): Promise<TaskOperation[]>;
|
|
394
|
+
/**
|
|
395
|
+
* Task #5081 — 绕过 operationsCache 的直读(optional 能力探测)。
|
|
396
|
+
*
|
|
397
|
+
* store 实现 `listOperationsFresh` 时直打 DB;否则降级
|
|
398
|
+
* `listOperations` + `invalidateOperationsCache`(若支持)。
|
|
399
|
+
* 语义等价,保证跨进程写入的记录可见。
|
|
400
|
+
*/
|
|
401
|
+
listOperationsFresh(options: ListOperationsOptions): Promise<TaskOperation[]>;
|
|
386
402
|
/**
|
|
387
403
|
* 获取 TagService
|
|
388
404
|
*/
|
|
@@ -82,31 +82,31 @@ export declare const CreateOperationToolSchema: z.ZodEffects<z.ZodObject<{
|
|
|
82
82
|
md_path: z.ZodOptional<z.ZodString>;
|
|
83
83
|
}, "strip", z.ZodTypeAny, {
|
|
84
84
|
task_id: number;
|
|
85
|
-
milestone_type?: "
|
|
85
|
+
milestone_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
86
86
|
milestone_title?: string | undefined;
|
|
87
87
|
milestone_description?: string | undefined;
|
|
88
88
|
process_description?: string | undefined;
|
|
89
|
-
action_type?: "
|
|
89
|
+
action_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
90
90
|
action_title?: string | undefined;
|
|
91
91
|
action_description?: string | undefined;
|
|
92
92
|
md_path?: string | undefined;
|
|
93
93
|
}, {
|
|
94
94
|
task_id: number;
|
|
95
|
-
milestone_type?: "
|
|
95
|
+
milestone_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
96
96
|
milestone_title?: string | undefined;
|
|
97
97
|
milestone_description?: string | undefined;
|
|
98
98
|
process_description?: string | undefined;
|
|
99
|
-
action_type?: "
|
|
99
|
+
action_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
100
100
|
action_title?: string | undefined;
|
|
101
101
|
action_description?: string | undefined;
|
|
102
102
|
md_path?: string | undefined;
|
|
103
103
|
}>, CreateOperationToolParams, {
|
|
104
104
|
task_id: number;
|
|
105
|
-
milestone_type?: "
|
|
105
|
+
milestone_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
106
106
|
milestone_title?: string | undefined;
|
|
107
107
|
milestone_description?: string | undefined;
|
|
108
108
|
process_description?: string | undefined;
|
|
109
|
-
action_type?: "
|
|
109
|
+
action_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
110
110
|
action_title?: string | undefined;
|
|
111
111
|
action_description?: string | undefined;
|
|
112
112
|
md_path?: string | undefined;
|
|
@@ -144,17 +144,17 @@ export declare const ListOperationsToolSchema: z.ZodEffects<z.ZodObject<{
|
|
|
144
144
|
task_id: number;
|
|
145
145
|
limit: number;
|
|
146
146
|
offset: number;
|
|
147
|
-
milestone_type?: "
|
|
148
|
-
action_type?: "
|
|
147
|
+
milestone_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
148
|
+
action_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
149
149
|
}, {
|
|
150
150
|
task_id: number;
|
|
151
151
|
limit?: number | undefined;
|
|
152
152
|
offset?: number | undefined;
|
|
153
|
-
milestone_type?: "
|
|
154
|
-
action_type?: "
|
|
153
|
+
milestone_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
154
|
+
action_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
155
155
|
}>, {
|
|
156
156
|
task_id: number;
|
|
157
|
-
milestone_type: "
|
|
157
|
+
milestone_type: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
158
158
|
limit: number;
|
|
159
159
|
offset: number;
|
|
160
160
|
_deprecated_fields_used: string[];
|
|
@@ -162,8 +162,8 @@ export declare const ListOperationsToolSchema: z.ZodEffects<z.ZodObject<{
|
|
|
162
162
|
task_id: number;
|
|
163
163
|
limit?: number | undefined;
|
|
164
164
|
offset?: number | undefined;
|
|
165
|
-
milestone_type?: "
|
|
166
|
-
action_type?: "
|
|
165
|
+
milestone_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
166
|
+
action_type?: "completed" | "create" | "progress" | "milestone" | "problem" | "solution" | "decision" | "review" | "workflow_extracted" | undefined;
|
|
167
167
|
}>;
|
|
168
168
|
export interface ListOperationsToolParams {
|
|
169
169
|
task_id: number;
|
|
@@ -7,6 +7,7 @@ import { writeFileTool } from "./write-file";
|
|
|
7
7
|
import { editFileTool } from "./edit-file";
|
|
8
8
|
import { grepTool } from "./grep";
|
|
9
9
|
import { understandImageTool } from "./understand-image";
|
|
10
|
+
import { wecomRespondTool } from "../../event-source/wecom-respond-registry";
|
|
10
11
|
import { createQueryBackgroundProcessTool } from "./query-background-process-tool";
|
|
11
12
|
import { createCompactSessionTool, compactSessionTool } from "./compact-session-tool";
|
|
12
13
|
export { bashTool };
|
|
@@ -17,6 +18,7 @@ export { writeFileTool };
|
|
|
17
18
|
export { editFileTool };
|
|
18
19
|
export { grepTool };
|
|
19
20
|
export { understandImageTool };
|
|
21
|
+
export { wecomRespondTool };
|
|
20
22
|
import { queryBackgroundProcessTool } from "./query-background-process-tool";
|
|
21
23
|
export { queryBackgroundProcessTool, createQueryBackgroundProcessTool };
|
|
22
24
|
export { compactSessionTool, createCompactSessionTool };
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
grepTool,
|
|
9
9
|
readFileTool,
|
|
10
10
|
writeFileTool
|
|
11
|
-
} from "../../../shared/@ai-setting/roy-agent-core-
|
|
11
|
+
} from "../../../shared/@ai-setting/roy-agent-core-tk98f92b.js";
|
|
12
12
|
import {
|
|
13
13
|
getUnderstandImageLLMProvider,
|
|
14
14
|
resetUnderstandImageLLMProvider,
|
|
@@ -22,13 +22,18 @@ import {
|
|
|
22
22
|
queryBackgroundProcessTool
|
|
23
23
|
} from "../../../shared/@ai-setting/roy-agent-core-2akfd64z.js";
|
|
24
24
|
import"../../../shared/@ai-setting/roy-agent-core-fttgm52a.js";
|
|
25
|
+
import {
|
|
26
|
+
wecomRespondTool
|
|
27
|
+
} from "../../../shared/@ai-setting/roy-agent-core-m3vjepzz.js";
|
|
25
28
|
import"../../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
|
|
29
|
+
import"../../../shared/@ai-setting/roy-agent-core-7cbpmk4q.js";
|
|
26
30
|
import"../../../shared/@ai-setting/roy-agent-core-qq96p0tj.js";
|
|
27
31
|
import"../../../shared/@ai-setting/roy-agent-core-7f7t9wwp.js";
|
|
28
32
|
import"../../../shared/@ai-setting/roy-agent-core-85xyctnb.js";
|
|
29
33
|
import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
|
|
30
34
|
export {
|
|
31
35
|
writeFileTool,
|
|
36
|
+
wecomRespondTool,
|
|
32
37
|
understandImageTool,
|
|
33
38
|
setUnderstandImageLLMProvider,
|
|
34
39
|
resetUnderstandImageLLMProvider,
|
package/dist/env/tool/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
grepTool,
|
|
11
11
|
readFileTool,
|
|
12
12
|
writeFileTool
|
|
13
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
13
|
+
} from "../../shared/@ai-setting/roy-agent-core-tk98f92b.js";
|
|
14
14
|
import {
|
|
15
15
|
getUnderstandImageLLMProvider,
|
|
16
16
|
resetUnderstandImageLLMProvider,
|
|
@@ -19,13 +19,14 @@ import {
|
|
|
19
19
|
} from "../../shared/@ai-setting/roy-agent-core-xwm8zavb.js";
|
|
20
20
|
import"../../shared/@ai-setting/roy-agent-core-2akfd64z.js";
|
|
21
21
|
import"../../shared/@ai-setting/roy-agent-core-fttgm52a.js";
|
|
22
|
+
import"../../shared/@ai-setting/roy-agent-core-m3vjepzz.js";
|
|
22
23
|
import {
|
|
23
24
|
ToolComponent,
|
|
24
25
|
ToolRegistry,
|
|
25
26
|
ToolValidator,
|
|
26
27
|
getMaxOutputSize,
|
|
27
28
|
setToolConfigComponent
|
|
28
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
29
|
+
} from "../../shared/@ai-setting/roy-agent-core-ze5cqpf2.js";
|
|
29
30
|
import"../../shared/@ai-setting/roy-agent-core-jvv2h3d6.js";
|
|
30
31
|
import"../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
|
|
31
32
|
import"../../shared/@ai-setting/roy-agent-core-mkc3zshb.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
WorkflowComponent
|
|
3
|
-
} from "../../shared/@ai-setting/roy-agent-core-
|
|
3
|
+
} from "../../shared/@ai-setting/roy-agent-core-0dh8npnz.js";
|
|
4
4
|
import"../../shared/@ai-setting/roy-agent-core-es203w7p.js";
|
|
5
5
|
import {
|
|
6
6
|
Edge,
|
|
@@ -14,12 +14,12 @@ import {
|
|
|
14
14
|
DecoratorNode,
|
|
15
15
|
init_decorator_node
|
|
16
16
|
} from "../../shared/@ai-setting/roy-agent-core-1ce3fqrk.js";
|
|
17
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
17
|
+
import"../../shared/@ai-setting/roy-agent-core-7bpj859q.js";
|
|
18
18
|
import"../../shared/@ai-setting/roy-agent-core-ddyk1rc0.js";
|
|
19
19
|
import"../../shared/@ai-setting/roy-agent-core-0qyrk5k0.js";
|
|
20
20
|
import"../../shared/@ai-setting/roy-agent-core-hhrg314p.js";
|
|
21
21
|
import"../../shared/@ai-setting/roy-agent-core-12n08pg5.js";
|
|
22
|
-
import"../../shared/@ai-setting/roy-agent-core-
|
|
22
|
+
import"../../shared/@ai-setting/roy-agent-core-rykf7c04.js";
|
|
23
23
|
import"../../shared/@ai-setting/roy-agent-core-6rh8k6ba.js";
|
|
24
24
|
import"../../shared/@ai-setting/roy-agent-core-6atd905e.js";
|
|
25
25
|
import"../../shared/@ai-setting/roy-agent-core-dqxec05w.js";
|
|
@@ -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-d1n4jbza.js";
|
|
5
|
+
import"../../../shared/@ai-setting/roy-agent-core-7dd0s3xb.js";
|
|
6
6
|
import"../../../shared/@ai-setting/roy-agent-core-c2gbt68e.js";
|
|
7
7
|
import"../../../shared/@ai-setting/roy-agent-core-ax9e9szb.js";
|
|
8
8
|
import"../../../shared/@ai-setting/roy-agent-core-cpcd24n2.js";
|