@ai-setting/roy-agent-core 1.7.59 → 1.7.61

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.
Files changed (119) hide show
  1. package/dist/config/index.js +8 -8
  2. package/dist/env/agent/index.js +14 -14
  3. package/dist/env/commands/index.js +8 -8
  4. package/dist/env/context/index.js +4 -4
  5. package/dist/env/debug/index.js +8 -8
  6. package/dist/env/event-source/cli-command-handler.d.ts +90 -0
  7. package/dist/env/event-source/event-source-handlers.d.ts +1 -0
  8. package/dist/env/event-source/index.d.ts +3 -1
  9. package/dist/env/event-source/index.js +30 -20
  10. package/dist/env/event-source/types.d.ts +21 -1
  11. package/dist/env/hook/index.js +6 -6
  12. package/dist/env/index.js +46 -46
  13. package/dist/env/llm/index.js +9 -9
  14. package/dist/env/log-trace/index.d.ts +1 -1
  15. package/dist/env/log-trace/index.js +12 -8
  16. package/dist/env/log-trace/logger.d.ts +2 -0
  17. package/dist/env/mcp/index.js +9 -9
  18. package/dist/env/mcp/tool/index.js +2 -2
  19. package/dist/env/memory/index.js +9 -9
  20. package/dist/env/memory/plugin/index.js +2 -2
  21. package/dist/env/plugin/index.js +8 -8
  22. package/dist/env/prompt/index.js +8 -8
  23. package/dist/env/session/index.js +11 -11
  24. package/dist/env/session/storage/index.js +5 -5
  25. package/dist/env/skill/index.js +8 -8
  26. package/dist/env/task/delegate/index.js +9 -9
  27. package/dist/env/task/index.js +16 -16
  28. package/dist/env/task/mcp/index.d.ts +16 -0
  29. package/dist/env/task/mcp/index.js +222 -0
  30. package/dist/env/task/mcp/task-mcp-server.d.ts +142 -0
  31. package/dist/env/task/plugins/index.d.ts +1 -0
  32. package/dist/env/task/plugins/index.js +47 -12
  33. package/dist/env/task/storage/index.js +4 -4
  34. package/dist/env/task/storage/migrations/log-migration.d.ts +19 -0
  35. package/dist/env/task/storage/sqlite-task-store.d.ts +29 -0
  36. package/dist/env/task/task-component.d.ts +48 -3
  37. package/dist/env/task/tools/index.js +4 -4
  38. package/dist/env/task/tools/task-types.d.ts +60 -11
  39. package/dist/env/tool/built-in/index.js +4 -4
  40. package/dist/env/tool/index.js +11 -11
  41. package/dist/env/workflow/engine/index.js +13 -13
  42. package/dist/env/workflow/hooks/index.js +8 -8
  43. package/dist/env/workflow/index.js +23 -23
  44. package/dist/env/workflow/nodes/index.js +3 -3
  45. package/dist/env/workflow/plugins/index.js +9 -9
  46. package/dist/env/workflow/service/index.js +3 -3
  47. package/dist/env/workflow/storage/index.js +4 -4
  48. package/dist/env/workflow/tools/index.js +15 -15
  49. package/dist/env/workflow/tools/run-workflow.d.ts +30 -0
  50. package/dist/env/workflow/utils/index.js +5 -5
  51. package/dist/env/workflow/utils/session-recovery.d.ts +27 -0
  52. package/dist/index.js +81 -71
  53. package/dist/shared/@ai-setting/{roy-agent-core-tze5596n.js → roy-agent-core-0f989bnp.js} +3 -3
  54. package/dist/shared/@ai-setting/{roy-agent-core-e250355z.js → roy-agent-core-22r4zmkw.js} +3 -3
  55. package/dist/shared/@ai-setting/{roy-agent-core-8p63s836.js → roy-agent-core-2qkrpc7m.js} +1 -1
  56. package/dist/shared/@ai-setting/{roy-agent-core-47s81t6g.js → roy-agent-core-3bpntd80.js} +2 -2
  57. package/dist/shared/@ai-setting/{roy-agent-core-rcgvmtms.js → roy-agent-core-3p59ap0x.js} +1 -1
  58. package/dist/shared/@ai-setting/{roy-agent-core-en2xqxs9.js → roy-agent-core-4m5spt7m.js} +39 -14
  59. package/dist/shared/@ai-setting/{roy-agent-core-5f7myqnb.js → roy-agent-core-5565cvw8.js} +11 -5
  60. package/dist/shared/@ai-setting/{roy-agent-core-2fk8c9ax.js → roy-agent-core-5knpegzr.js} +3 -3
  61. package/dist/shared/@ai-setting/{roy-agent-core-08njdcpj.js → roy-agent-core-60p2380d.js} +1 -1
  62. package/dist/shared/@ai-setting/{roy-agent-core-0yn7a78e.js → roy-agent-core-6cyjps72.js} +14 -14
  63. package/dist/shared/@ai-setting/{roy-agent-core-89sxsrc7.js → roy-agent-core-8fy467qs.js} +1 -1
  64. package/dist/shared/@ai-setting/{roy-agent-core-x6c45yqd.js → roy-agent-core-99nwgj84.js} +1 -1
  65. package/dist/shared/@ai-setting/{roy-agent-core-20m8je6e.js → roy-agent-core-9k8ms63r.js} +1 -1
  66. package/dist/shared/@ai-setting/{roy-agent-core-0kn3zt1t.js → roy-agent-core-9s3payp1.js} +2 -2
  67. package/dist/shared/@ai-setting/{roy-agent-core-hefarcp0.js → roy-agent-core-a5nh5q6v.js} +1 -1
  68. package/dist/shared/@ai-setting/{roy-agent-core-hs41gx9w.js → roy-agent-core-aa514zm8.js} +5 -5
  69. package/dist/shared/@ai-setting/{roy-agent-core-yphwdm9x.js → roy-agent-core-ajmgyawx.js} +2 -2
  70. package/dist/shared/@ai-setting/{roy-agent-core-caevk7xd.js → roy-agent-core-arx535cs.js} +30 -8
  71. package/dist/shared/@ai-setting/{roy-agent-core-vath15kt.js → roy-agent-core-bc3v8pw4.js} +6 -6
  72. package/dist/shared/@ai-setting/{roy-agent-core-m97jn2ra.js → roy-agent-core-bdzdw1g3.js} +1 -1
  73. package/dist/shared/@ai-setting/{roy-agent-core-ck60j1q9.js → roy-agent-core-bxkjk7zx.js} +2 -1
  74. package/dist/shared/@ai-setting/{roy-agent-core-6bradb0j.js → roy-agent-core-cndvj1hv.js} +8 -8
  75. package/dist/shared/@ai-setting/{roy-agent-core-d75t8gea.js → roy-agent-core-dg286rpd.js} +1 -1
  76. package/dist/shared/@ai-setting/{roy-agent-core-q4gdfypk.js → roy-agent-core-dp1hp24k.js} +3 -3
  77. package/dist/shared/@ai-setting/{roy-agent-core-ygn5tzt1.js → roy-agent-core-dythsgkn.js} +2 -2
  78. package/dist/shared/@ai-setting/{roy-agent-core-em4hks9t.js → roy-agent-core-e6k448ka.js} +4 -4
  79. package/dist/shared/@ai-setting/{roy-agent-core-ytd5eztz.js → roy-agent-core-expvav8a.js} +1 -1
  80. package/dist/shared/@ai-setting/{roy-agent-core-vgdhxbx3.js → roy-agent-core-g44nbgtt.js} +2 -2
  81. package/dist/shared/@ai-setting/{roy-agent-core-14bq77wr.js → roy-agent-core-g5sw19fa.js} +1 -1
  82. package/dist/shared/@ai-setting/{roy-agent-core-991pk4ss.js → roy-agent-core-gtb4fj8j.js} +16 -16
  83. package/dist/shared/@ai-setting/{roy-agent-core-gksw1gjb.js → roy-agent-core-hf0t8agb.js} +1 -1
  84. package/dist/shared/@ai-setting/{roy-agent-core-txwptxk1.js → roy-agent-core-j0x9yf96.js} +3 -3
  85. package/dist/shared/@ai-setting/{roy-agent-core-84rs0c8d.js → roy-agent-core-jrksyqb6.js} +7 -7
  86. package/dist/shared/@ai-setting/{roy-agent-core-ge87xbas.js → roy-agent-core-jsdqzfbj.js} +1 -1
  87. package/dist/shared/@ai-setting/{roy-agent-core-m68z3pw1.js → roy-agent-core-jsn21cb9.js} +1 -1
  88. package/dist/shared/@ai-setting/{roy-agent-core-n0p0hwgd.js → roy-agent-core-kfmrfaft.js} +1 -1
  89. package/dist/shared/@ai-setting/{roy-agent-core-7q4wdze2.js → roy-agent-core-khc23qs1.js} +1 -1
  90. package/dist/shared/@ai-setting/{roy-agent-core-e1w17tht.js → roy-agent-core-m2tv4pj0.js} +2 -2
  91. package/dist/shared/@ai-setting/{roy-agent-core-4096f575.js → roy-agent-core-mhppywse.js} +4 -4
  92. package/dist/shared/@ai-setting/{roy-agent-core-t64nmayv.js → roy-agent-core-mw0bc9g6.js} +2 -2
  93. package/dist/shared/@ai-setting/{roy-agent-core-8bngppw0.js → roy-agent-core-n1ck0x1r.js} +13 -13
  94. package/dist/shared/@ai-setting/{roy-agent-core-w93z6a42.js → roy-agent-core-nd5171pv.js} +12 -12
  95. package/dist/shared/@ai-setting/{roy-agent-core-geh6j7bw.js → roy-agent-core-p2dpcyrz.js} +2 -2
  96. package/dist/shared/@ai-setting/{roy-agent-core-fw6k4w1h.js → roy-agent-core-pj5tfmn5.js} +6 -6
  97. package/dist/shared/@ai-setting/{roy-agent-core-029r8kdw.js → roy-agent-core-q212q0w1.js} +4 -4
  98. package/dist/shared/@ai-setting/{roy-agent-core-psg6f1v6.js → roy-agent-core-qgapy83x.js} +6 -6
  99. package/dist/shared/@ai-setting/{roy-agent-core-jjxdmedn.js → roy-agent-core-qpqqx1wd.js} +2 -2
  100. package/dist/shared/@ai-setting/{roy-agent-core-syyw58p9.js → roy-agent-core-qrjs2500.js} +2 -2
  101. package/dist/shared/@ai-setting/{roy-agent-core-84xtww7d.js → roy-agent-core-qw5fpa24.js} +3 -3
  102. package/dist/shared/@ai-setting/{roy-agent-core-kq9pz2a7.js → roy-agent-core-rnzm0tpf.js} +4 -4
  103. package/dist/shared/@ai-setting/{roy-agent-core-7nb23tdd.js → roy-agent-core-s7w47mnn.js} +1 -1
  104. package/dist/shared/@ai-setting/{roy-agent-core-t4x089js.js → roy-agent-core-sf9tsj0g.js} +1 -1
  105. package/dist/shared/@ai-setting/{roy-agent-core-jjhw9am6.js → roy-agent-core-tn96n4wz.js} +4 -4
  106. package/dist/shared/@ai-setting/{roy-agent-core-c7w2h47a.js → roy-agent-core-vmfk4m1v.js} +3 -3
  107. package/dist/shared/@ai-setting/{roy-agent-core-cyefe8z5.js → roy-agent-core-x1m0gs0q.js} +1 -1
  108. package/dist/shared/@ai-setting/{roy-agent-core-baaa4wtp.js → roy-agent-core-xc0es9zc.js} +2 -2
  109. package/dist/shared/@ai-setting/{roy-agent-core-fbjd7bt6.js → roy-agent-core-xeqp659x.js} +64 -29
  110. package/dist/shared/@ai-setting/{roy-agent-core-rt115qfc.js → roy-agent-core-y0k9kaxz.js} +14 -4
  111. package/dist/shared/@ai-setting/{roy-agent-core-c36335nw.js → roy-agent-core-yd85623y.js} +15 -3
  112. package/dist/shared/@ai-setting/{roy-agent-core-9zhkdg6w.js → roy-agent-core-ygfjgk9b.js} +2 -2
  113. package/dist/shared/@ai-setting/{roy-agent-core-vh0qzb24.js → roy-agent-core-ymcvsdzn.js} +36 -15
  114. package/dist/shared/@ai-setting/{roy-agent-core-eanq305k.js → roy-agent-core-yr5eqyhz.js} +11 -11
  115. package/dist/shared/@ai-setting/{roy-agent-core-6q5m1qk5.js → roy-agent-core-ytnedzks.js} +239 -90
  116. package/dist/shared/@ai-setting/{roy-agent-core-2ctyjy62.js → roy-agent-core-z51jktet.js} +1 -1
  117. package/dist/utils/temp-file-manager/index.js +2 -2
  118. package/package.json +16 -1
  119. /package/dist/shared/@ai-setting/{roy-agent-core-3ztzc83c.js → roy-agent-core-5enxfga2.js} +0 -0
@@ -0,0 +1,142 @@
1
+ /**
2
+ * @fileoverview Task MCP Server — roy's task tools over MCP, reusable by any host.
3
+ *
4
+ * Task #4619 —「代码逻辑都在 roy-agent,插件只是薄的一层」的核心交付之一。
5
+ *
6
+ * ## 为什么 core 需要这个模块
7
+ *
8
+ * `roy-agent-core` 之前**只有 MCP client**(`packages/core/src/env/mcp/*`),
9
+ * 没有任何 server。结果每一个「MCP 说话」的宿主都得自己写一个 server,
10
+ * 而 server 之上还得自己实现一遍 task 语义 —— 于是出现了
11
+ * `roy-plugin-for-agent/claude/mcp/roy-task-mcp-server.mjs`(281 行)+
12
+ * `claude/mcp/bridge.mjs`(482 行裸 SQL)这套复刻。
13
+ *
14
+ * 本模块把「MCP 传输 + 工具装配」收进 core:
15
+ *
16
+ * ```
17
+ * 宿主(Claude Code / Codex / opencode / …)
18
+ * └─ 只做一件事:new TaskMcpServer(backend) 并把 stdin/stdout 接上
19
+ * └─ 工具定义、JSON Schema、语义、错误封装 ← 全在 core
20
+ * ```
21
+ *
22
+ * 语义本身来自 `TaskBackend`(= `TaskStoreBackend`),工具描述与参数 schema
23
+ * 来自 core 自己的工具工厂(`createTaskTool` / `treeTasksTool` / …),
24
+ * **不是**手抄的副本。
25
+ *
26
+ * ## 依赖注入
27
+ *
28
+ * 宿主提供 `TaskBackend`(`@ai-setting/roy-agent-core/env/task/backend`):
29
+ *
30
+ * - 想读 roy 自己的库 → `createSQLiteTaskPort()` + `TaskStoreBackend`
31
+ * - 想用自己的库 → 实现 `TaskPersistencePort` + `TaskStoreBackend`
32
+ * - 已有 sidecar 词表 → `createRoySidecarTaskPort(store, vocabulary)`
33
+ *
34
+ * 三种都拿到**完全相同**的语义与工具面。
35
+ */
36
+ import type { TaskBackend } from "../backend/types";
37
+ /** The task tools exposed over MCP. */
38
+ export declare const TASK_MCP_TOOL_NAMES: readonly ["task_create", "task_tree", "task_get", "task_list", "task_search", "task_update", "task_complete", "task_operation_create", "task_operation_list"];
39
+ export type TaskMcpToolName = (typeof TASK_MCP_TOOL_NAMES)[number];
40
+ /** An MCP tool definition (JSON Schema document — MCP requires JSON Schema). */
41
+ export interface TaskMcpToolDefinition {
42
+ name: string;
43
+ description: string;
44
+ inputSchema: Record<string, unknown>;
45
+ }
46
+ /** JSON-RPC error codes used by this server. */
47
+ export declare const TASK_MCP_JSON_RPC_ERRORS: Readonly<{
48
+ PARSE_ERROR: -32700;
49
+ INVALID_REQUEST: -32600;
50
+ METHOD_NOT_FOUND: -32601;
51
+ INVALID_PARAMS: -32602;
52
+ INTERNAL_ERROR: -32603;
53
+ }>;
54
+ /**
55
+ * MCP protocol versions this server understands.
56
+ *
57
+ * ⚠️ Task #4622 — `2025-11-25` was **missing** here.
58
+ *
59
+ * Task #4619 moved this contract into core but copied the list without the
60
+ * newest entry. That regressed the handshake in two ways:
61
+ *
62
+ * 1. `@modelcontextprotocol/sdk@1.29.0` (this repo's own dependency)
63
+ * declares `LATEST_PROTOCOL_VERSION = '2025-11-25'` — a modern client
64
+ * asks for exactly that version.
65
+ * 2. The **already published** plugin (`@ai-setting/roy-task-plugin@0.6.1`)
66
+ * listed `2025-11-25` first and used it as its `DEFAULT_PROTOCOL_VERSION`.
67
+ *
68
+ * So core without it silently *downgraded* the negotiated version relative
69
+ * to the plugin release users already run. The list must stay a superset of
70
+ * the SDK's own list, newest first.
71
+ */
72
+ export declare const TASK_MCP_SUPPORTED_PROTOCOL_VERSIONS: readonly string[];
73
+ export declare const TASK_MCP_DEFAULT_PROTOCOL_VERSION = "2025-11-25";
74
+ export interface TaskMcpServerOptions {
75
+ /** Server name reported in `initialize`. */
76
+ name?: string;
77
+ /** Server version reported in `initialize`. */
78
+ version?: string;
79
+ /** Session id stamped on created tasks / operations. */
80
+ sessionId?: string;
81
+ /** Working directory reported to tools that want one. */
82
+ workdir?: string;
83
+ }
84
+ /** A JSON-RPC request as it arrives on the wire. */
85
+ export interface TaskMcpRequest {
86
+ jsonrpc?: string;
87
+ id?: number | string | null;
88
+ method?: string;
89
+ params?: Record<string, unknown>;
90
+ }
91
+ /** A JSON-RPC response. `null` means "no response" (notification). */
92
+ export interface TaskMcpResponse {
93
+ jsonrpc: "2.0";
94
+ id: number | string | null;
95
+ result?: Record<string, unknown>;
96
+ error?: {
97
+ code: number;
98
+ message: string;
99
+ data?: unknown;
100
+ };
101
+ }
102
+ /** The server handle a host drives. */
103
+ export interface TaskMcpServer {
104
+ /**
105
+ * Handle one JSON-RPC request. Returns `null` for notifications.
106
+ *
107
+ * Async because tool execution is async — a host that speaks JSON-RPC over
108
+ * stdio awaits this before writing the response.
109
+ */
110
+ handleRequest(request: TaskMcpRequest): Promise<TaskMcpResponse | null>;
111
+ /** The tool surface this server exposes. */
112
+ listTools(): TaskMcpToolDefinition[];
113
+ /** Invoke a tool by name (throws on unknown tool). */
114
+ callTool(name: string, args: Record<string, unknown>): Promise<unknown>;
115
+ }
116
+ /**
117
+ * Convert a zod schema (v3) into a JSON Schema document.
118
+ *
119
+ * MCP requires a **JSON Schema document**, not a zod object. roy's
120
+ * `task_operation_create` / `task_operation_list` use `ZodEffects`
121
+ * (preprocess + transform), so the inner schema is unwrapped first.
122
+ *
123
+ * Fault-isolated: a conversion failure degrades to `{}` (the tool advertises
124
+ * no parameters) rather than breaking server startup.
125
+ */
126
+ export declare function toJsonSchemaDocument(parameters: unknown): Record<string, unknown>;
127
+ /**
128
+ * Build the MCP tool definitions for a backend.
129
+ *
130
+ * The descriptions and parameter schemas come from **core's own tool
131
+ * factories** — a host never has to hand-write them.
132
+ */
133
+ export declare function createTaskMcpToolDefinitions(backend: TaskBackend): TaskMcpToolDefinition[];
134
+ /** Negotiate a protocol version, falling back to our default. */
135
+ export declare function negotiateTaskMcpProtocolVersion(requested?: string): string;
136
+ /**
137
+ * Create a task MCP server bound to a `TaskBackend`.
138
+ *
139
+ * The returned handle is transport-agnostic: the host decides how bytes get
140
+ * in and out (stdio for Claude Code, an HTTP/SSE transport, a socket, …).
141
+ */
142
+ export declare function createTaskMcpServer(backend: TaskBackend, options?: TaskMcpServerOptions): TaskMcpServer;
@@ -6,3 +6,4 @@ export { createAutoTaskPlugin, type AutoTaskPluginConfig, } from "./auto-task-pl
6
6
  export { WORKFLOW_EXTRACTOR_PROMPT, formatExtractorInput, formatExtractorInputFromDescription, parseExtractorOutput, } from "./workflow-extractor-agent";
7
7
  export { LarkCliTaskNotifyHook, createLarkCliTaskNotifyHook, type TaskNotifyConfig, NotifyType, } from "./lark-cli-task-notify-plugin";
8
8
  export { PerTaskGroupChatPlugin, createPerTaskGroupChatPlugin, type PerTaskGroupConfig, } from "./per-task-group-chat-plugin";
9
+ export { LarkCardPatchNotifier, type LarkCardPatchNotifierOptions, buildTaskCard, buildWorkflowCard, renderProgressBar, renderMilestones, renderProcessSteps, renderTaskInfoLines, renderContextAsLines, renderWorkflowInfoLines, formatTimestampForDisplay, formatDateTimeForDisplay, formatDurationMs, sanitizeInlineText, humanizeValue, resolveTaskTitleForDisplay, buildChatAppLink, DEFAULT_APP_LINK_BASE, type CardStatus, type WorkflowCardStatus, type Milestone, type ProcessStep, type TaskMeta, type WorkflowMeta, type CardPayload, type StartTaskOptions, type UpdateTaskOptions, type FinishTaskOptions, type StartTaskResult, type StartWorkflowOptions, type UpdateWorkflowOptions, type FinishWorkflowOptions, } from "./lark-card-patch-notifier";
@@ -10,34 +10,69 @@ import {
10
10
  formatExtractorInput,
11
11
  formatExtractorInputFromDescription,
12
12
  parseExtractorOutput
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";
13
+ } from "../../../shared/@ai-setting/roy-agent-core-n1ck0x1r.js";
14
+ import"../../../shared/@ai-setting/roy-agent-core-z51jktet.js";
15
+ import"../../../shared/@ai-setting/roy-agent-core-xeqp659x.js";
16
16
  import"../../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
17
17
  import"../../../shared/@ai-setting/roy-agent-core-6masakz4.js";
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";
18
+ import {
19
+ DEFAULT_APP_LINK_BASE,
20
+ LarkCardPatchNotifier,
21
+ buildChatAppLink,
22
+ buildTaskCard,
23
+ buildWorkflowCard,
24
+ formatDateTimeForDisplay,
25
+ formatDurationMs,
26
+ formatTimestampForDisplay,
27
+ humanizeValue,
28
+ renderContextAsLines,
29
+ renderMilestones,
30
+ renderProcessSteps,
31
+ renderProgressBar,
32
+ renderTaskInfoLines,
33
+ renderWorkflowInfoLines,
34
+ resolveTaskTitleForDisplay,
35
+ sanitizeInlineText
36
+ } from "../../../shared/@ai-setting/roy-agent-core-yd85623y.js";
37
+ import"../../../shared/@ai-setting/roy-agent-core-8fy467qs.js";
38
+ import"../../../shared/@ai-setting/roy-agent-core-60p2380d.js";
21
39
  import"../../../shared/@ai-setting/roy-agent-core-jrj30vq3.js";
22
- import"../../../shared/@ai-setting/roy-agent-core-gksw1gjb.js";
40
+ import"../../../shared/@ai-setting/roy-agent-core-hf0t8agb.js";
23
41
  import"../../../shared/@ai-setting/roy-agent-core-e25xkv53.js";
24
42
  import"../../../shared/@ai-setting/roy-agent-core-az13yzmc.js";
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";
43
+ import"../../../shared/@ai-setting/roy-agent-core-bdzdw1g3.js";
44
+ import"../../../shared/@ai-setting/roy-agent-core-qrjs2500.js";
45
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
46
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
29
47
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
30
48
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
31
49
  export {
50
+ sanitizeInlineText,
51
+ resolveTaskTitleForDisplay,
52
+ renderWorkflowInfoLines,
53
+ renderTaskInfoLines,
54
+ renderProgressBar,
55
+ renderProcessSteps,
56
+ renderMilestones,
57
+ renderContextAsLines,
32
58
  parseExtractorOutput,
59
+ humanizeValue,
60
+ formatTimestampForDisplay,
33
61
  formatExtractorInputFromDescription,
34
62
  formatExtractorInput,
63
+ formatDurationMs,
64
+ formatDateTimeForDisplay,
35
65
  createPerTaskGroupChatPlugin,
36
66
  createLarkCliTaskNotifyHook,
37
67
  createAutoTaskPlugin,
68
+ buildWorkflowCard,
69
+ buildTaskCard,
70
+ buildChatAppLink,
38
71
  WORKFLOW_EXTRACTOR_PROMPT,
39
72
  TaskTagPlugin,
40
73
  PerTaskGroupChatPlugin,
41
74
  NotifyType,
42
- LarkCliTaskNotifyHook
75
+ LarkCliTaskNotifyHook,
76
+ LarkCardPatchNotifier,
77
+ DEFAULT_APP_LINK_BASE
43
78
  };
@@ -1,11 +1,11 @@
1
- import"../../../shared/@ai-setting/roy-agent-core-7q4wdze2.js";
1
+ import"../../../shared/@ai-setting/roy-agent-core-khc23qs1.js";
2
2
  import {
3
3
  SQLiteTaskStore,
4
4
  getDefaultDataDir,
5
5
  getDefaultTaskDbPath
6
- } from "../../../shared/@ai-setting/roy-agent-core-fbjd7bt6.js";
7
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
8
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
6
+ } from "../../../shared/@ai-setting/roy-agent-core-xeqp659x.js";
7
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
8
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
9
9
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
10
10
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
11
11
  export {
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @fileoverview Migration logging helper.
3
+ *
4
+ * Task #4619 — the task migrations used to print with `console.log`, which
5
+ * is **stdout**.
6
+ *
7
+ * That is fatal for a stdio MCP server: the MCP stdio transport is
8
+ * newline-delimited JSON-RPC on stdout, and one stray non-JSON line makes
9
+ * the client drop the server (Claude Code reports
10
+ * `mcp_servers: [{"name":"plugin:roy-task:roy-task","status":"failed"}]`).
11
+ *
12
+ * Measured: the plugin's MCP server emitted **24 of 26 stdout lines** that
13
+ * were not JSON — 5 migration banners plus core's `[INFO]` trace lines.
14
+ *
15
+ * So migration output goes to **stderr**, always. It is diagnostics, not
16
+ * protocol.
17
+ */
18
+ /** Print one migration diagnostic to stderr (never stdout). */
19
+ export declare function logMigration(message: string): void;
@@ -11,6 +11,26 @@
11
11
  * - 内存缓存提高性能
12
12
  * - 默认路径:~/.local/share/roy-agent/tasks.db
13
13
  */
14
+ /**
15
+ * 获取 SQLite 数据库类
16
+ *
17
+ * 根据运行时环境选择正确的实现:
18
+ * - Bun 运行时:使用 bun:sqlite(命名导出)
19
+ * - Node.js 22.5+:使用 node:sqlite(内置,无需原生编译)
20
+ * - 旧版 Node.js/Electron:使用 better-sqlite3(默认导出,需要原生编译)
21
+ *
22
+ * ⚠️ Task #4619:`node:sqlite` 优先于 `better-sqlite3`。
23
+ *
24
+ * `better-sqlite3` 是**原生插件**。插件的 Claude 侧 MCP server 是
25
+ * `#!/usr/bin/env node` 的 `.mjs` 脚本 —— 纯 node 环境。它不能依赖一个
26
+ * 需要编译的原生模块(插件自己的 `bridge.mjs` 注释记录了 better-sqlite3
27
+ * 在 node 24 下 `Assertion failed: (env) != nullptr` 直接 abort 进程)。
28
+ *
29
+ * `node:sqlite`(Node 22.5+,Node 24 已 stable)是 **node 内置**的,
30
+ * 且 `prepare(sql).all() / .get() / .run()` 与 better-sqlite3 同形,
31
+ * 所以 `createCompatibleDatabase` 的 shim 无需改动即可工作。
32
+ */
33
+ export declare function getDatabaseClass(): new (path: string) => any;
14
34
  /**
15
35
  * 创建兼容的 Database 实例
16
36
  *
@@ -21,6 +41,15 @@
21
41
  * 此函数确保两种实现都有 run() 方法
22
42
  */
23
43
  export declare function createCompatibleDatabase(path: string): any;
44
+ /**
45
+ * Apply the bun:sqlite ↔ better-sqlite3 / node:sqlite compat shim to an
46
+ * **existing** database handle.
47
+ *
48
+ * Task #4619 — factored out of `createCompatibleDatabase` so the shim can be
49
+ * applied to a `node:sqlite` handle (which the plugin's plain-node MCP
50
+ * server uses) without going through the driver constructor.
51
+ */
52
+ export declare function createCompatibleDatabaseFrom(db: any): any;
24
53
  import type { Task, TaskOperation, TaskTag, CreateTaskOptions, UpdateTaskOptions, ListTasksOptions, TaskListResult, SearchTasksOptions, CreateOperationOptions, ListOperationsOptions } from "../types";
25
54
  import type { ListTagsOptions, SearchTagsOptions } from "../tag-service";
26
55
  /**
@@ -137,11 +137,56 @@ export declare class TaskComponent extends BaseComponent {
137
137
  getTaskIdBySessionId(sessionId: string): Promise<number | undefined>;
138
138
  /**
139
139
  * Get task with operations
140
+ *
141
+ * Task #4619 (cross-validation M-2): the result is **flat** —
142
+ * `{ ...task, operations }` — not `{ task, operations }`.
143
+ *
144
+ * Two independent reasons, both about the published contract:
145
+ *
146
+ * 1. The old plugin's `taskGet` returned `{ ...task, operations }`, and
147
+ * that flat shape is what every client written against the published
148
+ * plugin reads (`task.title`, `task.operations`). Nesting moved every
149
+ * task field one level down — just as breaking as dropping the
150
+ * operations.
151
+ * 2. `TaskStoreBackend.getTaskWithOperations()` (the backend the plugin
152
+ * binds) already returns the flat shape. The two implementations had
153
+ * drifted, so the same tool produced two different shapes depending on
154
+ * which backend it was bound to.
155
+ *
156
+ * ---
157
+ *
158
+ * Task #4622: the flat shape ALSO carries a **nested `task` alias**, so
159
+ * the already-published `@ai-setting/roy-agent-cli@1.7.59` keeps working.
160
+ *
161
+ * That CLI declares `"@ai-setting/roy-agent-core": "^1.5.83"` — a range
162
+ * that accepts 1.7.61 — and its `tasks get` command reads the **nested**
163
+ * shape:
164
+ *
165
+ * const result = await taskComponent.getTaskWithOperations(args.id);
166
+ * output.log(`Task #${result.task.id}: ${result.task.title}`);
167
+ *
168
+ * Publishing the flat-only shape therefore broke `roy-agent tasks get`
169
+ * for every user still on CLI 1.7.59:
170
+ *
171
+ * TypeError: Cannot read properties of undefined (reading 'id')
172
+ *
173
+ * (Measured against the real published tarball, not reasoned about.)
174
+ *
175
+ * So the result carries **both** views:
176
+ *
177
+ * result.id → flat access (the plugin's MCP contract)
178
+ * result.task.id → nested access (published CLI 1.7.59)
179
+ *
180
+ * The alias points at the **same object** the flat fields were spread
181
+ * from, so the two views can never disagree. It is deliberately **not**
182
+ * self-referential (`result.task === result`), because that would make
183
+ * `JSON.stringify` throw "Converting circular structure to JSON" — and
184
+ * this very object is what `task_get` serialises for the MCP wire.
140
185
  */
141
- getTaskWithOperations(id: number): Promise<{
142
- task: Task;
186
+ getTaskWithOperations(id: number): Promise<(Task & {
143
187
  operations: TaskOperation[];
144
- } | undefined>;
188
+ task: Task;
189
+ }) | undefined>;
145
190
  /**
146
191
  * Update task
147
192
  */
@@ -9,10 +9,10 @@ import {
9
9
  searchTasksTool,
10
10
  treeTasksTool,
11
11
  updateTaskTool
12
- } from "../../../shared/@ai-setting/roy-agent-core-vh0qzb24.js";
13
- import"../../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
14
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
15
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
12
+ } from "../../../shared/@ai-setting/roy-agent-core-ymcvsdzn.js";
13
+ import"../../../shared/@ai-setting/roy-agent-core-qrjs2500.js";
14
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
15
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
16
16
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
17
17
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
18
18
  export {
@@ -2,6 +2,19 @@
2
2
  * @fileoverview Task Tool Parameter Schemas
3
3
  */
4
4
  import { z } from "zod";
5
+ /**
6
+ * The sentinel values used when a caller does **not** supply a value.
7
+ *
8
+ * They are deliberately the values the field descriptions already documented
9
+ * ("Use 'unknown' if unknown" / "If unknown, use '{}' or '{"type":"unknown"}'"),
10
+ * so the advertised contract and the runtime default agree.
11
+ *
12
+ * ⚠️ They are *sentinels*, not caller-specified values. `create-tool.ts`
13
+ * must therefore treat them as "the caller said nothing" — otherwise a
14
+ * default would mask the parent-task inheritance (Task #2395).
15
+ */
16
+ export declare const UNKNOWN_PROJECT_PATH = "unknown";
17
+ export declare const UNKNOWN_TASK_CONTEXT = "{\"type\":\"unknown\"}";
5
18
  /**
6
19
  * task_create tool parameters
7
20
  */
@@ -13,9 +26,9 @@ export declare const CreateTaskToolSchema: z.ZodObject<{
13
26
  goals_and_expected_deliverables: z.ZodOptional<z.ZodString>;
14
27
  due_date: z.ZodOptional<z.ZodString>;
15
28
  tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
16
- project_path: z.ZodString;
29
+ project_path: z.ZodDefault<z.ZodString>;
17
30
  parent_task_id: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodNull]>>;
18
- context: z.ZodString;
31
+ context: z.ZodDefault<z.ZodString>;
19
32
  }, "strip", z.ZodTypeAny, {
20
33
  type: "normal" | "cycle" | "longterm";
21
34
  title: string;
@@ -29,30 +42,46 @@ export declare const CreateTaskToolSchema: z.ZodObject<{
29
42
  parent_task_id?: number | null | undefined;
30
43
  }, {
31
44
  title: string;
32
- project_path: string;
33
- context: string;
34
45
  type?: "normal" | "cycle" | "longterm" | undefined;
35
46
  tags?: string[] | undefined;
36
47
  description?: string | undefined;
37
48
  priority?: "low" | "medium" | "high" | undefined;
38
49
  goals_and_expected_deliverables?: string | undefined;
39
50
  due_date?: string | undefined;
51
+ project_path?: string | undefined;
40
52
  parent_task_id?: number | null | undefined;
53
+ context?: string | undefined;
41
54
  }>;
42
55
  export type CreateTaskToolParams = z.infer<typeof CreateTaskToolSchema>;
43
56
  /**
44
57
  * task_get tool parameters
58
+ *
59
+ * Task #4619 (cross-validation M-2): `include_operations` now defaults to
60
+ * **true**.
61
+ *
62
+ * The old plugin's `bridge.mjs` returned `{ ...task, operations }`
63
+ * unconditionally, and its advertised catalogue for `task_get` had exactly
64
+ * one property (`id`) — there was no way to ask for the lean shape. When
65
+ * the plugin moved to roy's real schemas, the default `false` silently
66
+ * dropped the milestones from every response, with no error anywhere.
67
+ *
68
+ * The richer response is the compatible one, so it is now the default;
69
+ * `include_operations: false` still opts out.
45
70
  */
46
- export declare const GetTaskToolSchema: z.ZodObject<{
71
+ export declare const GetTaskToolSchema: z.ZodEffects<z.ZodObject<{
47
72
  task_id: z.ZodNumber;
73
+ } & {
48
74
  include_operations: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
49
75
  }, "strip", z.ZodTypeAny, {
50
- task_id: number;
51
76
  include_operations: boolean;
77
+ task_id: number;
52
78
  }, {
53
79
  task_id: number;
54
80
  include_operations?: boolean | undefined;
55
- }>;
81
+ }>, {
82
+ include_operations: boolean;
83
+ task_id: number;
84
+ }, unknown>;
56
85
  export type GetTaskToolParams = z.infer<typeof GetTaskToolSchema>;
57
86
  /**
58
87
  * task_list tool parameters
@@ -121,8 +150,9 @@ export type SearchTasksToolParams = z.infer<typeof SearchTasksToolSchema>;
121
150
  /**
122
151
  * task_update tool parameters
123
152
  */
124
- export declare const UpdateTaskToolSchema: z.ZodObject<{
153
+ export declare const UpdateTaskToolSchema: z.ZodEffects<z.ZodObject<{
125
154
  task_id: z.ZodNumber;
155
+ } & {
126
156
  title: z.ZodOptional<z.ZodString>;
127
157
  description: z.ZodOptional<z.ZodString>;
128
158
  status: z.ZodOptional<z.ZodEnum<["todo", "active", "completed", "paused", "cancelled", "archived"]>>;
@@ -166,7 +196,22 @@ export declare const UpdateTaskToolSchema: z.ZodObject<{
166
196
  parent_task_id?: number | null | undefined;
167
197
  context?: string | undefined;
168
198
  current_status?: string | undefined;
169
- }>;
199
+ }>, {
200
+ task_id: number;
201
+ type?: "normal" | "cycle" | "longterm" | undefined;
202
+ status?: "todo" | "active" | "completed" | "paused" | "cancelled" | "archived" | undefined;
203
+ tags?: string[] | undefined;
204
+ description?: string | undefined;
205
+ progress?: number | undefined;
206
+ title?: string | undefined;
207
+ priority?: "low" | "medium" | "high" | undefined;
208
+ goals_and_expected_deliverables?: string | undefined;
209
+ due_date?: string | undefined;
210
+ project_path?: string | undefined;
211
+ parent_task_id?: number | null | undefined;
212
+ context?: string | undefined;
213
+ current_status?: string | undefined;
214
+ }, unknown>;
170
215
  export type UpdateTaskToolParams = z.infer<typeof UpdateTaskToolSchema>;
171
216
  /**
172
217
  * task_delete tool parameters
@@ -188,8 +233,9 @@ export type DeleteTaskToolParams = z.infer<typeof DeleteTaskToolSchema>;
188
233
  * 支持任意形式的寻址:本地文件路径 / 飞书 doc URL / git 分支名 / GitHub PR/commit URL。
189
234
  * 该参数会持久化到 task.context.deliverable_storage_path。
190
235
  */
191
- export declare const CompleteTaskToolSchema: z.ZodObject<{
236
+ export declare const CompleteTaskToolSchema: z.ZodEffects<z.ZodObject<{
192
237
  task_id: z.ZodNumber;
238
+ } & {
193
239
  deliverable_storage_path: z.ZodOptional<z.ZodString>;
194
240
  }, "strip", z.ZodTypeAny, {
195
241
  task_id: number;
@@ -197,7 +243,10 @@ export declare const CompleteTaskToolSchema: z.ZodObject<{
197
243
  }, {
198
244
  task_id: number;
199
245
  deliverable_storage_path?: string | undefined;
200
- }>;
246
+ }>, {
247
+ task_id: number;
248
+ deliverable_storage_path?: string | undefined;
249
+ }, unknown>;
201
250
  export type CompleteTaskToolParams = z.infer<typeof CompleteTaskToolSchema>;
202
251
  /**
203
252
  * task_batch_archive tool parameters
@@ -8,7 +8,7 @@ import {
8
8
  grepTool,
9
9
  readFileTool,
10
10
  writeFileTool
11
- } from "../../../shared/@ai-setting/roy-agent-core-q4gdfypk.js";
11
+ } from "../../../shared/@ai-setting/roy-agent-core-dp1hp24k.js";
12
12
  import {
13
13
  getUnderstandImageLLMProvider,
14
14
  resetUnderstandImageLLMProvider,
@@ -19,10 +19,10 @@ import {
19
19
  createQueryBackgroundProcessTool,
20
20
  queryBackgroundProcessTool
21
21
  } from "../../../shared/@ai-setting/roy-agent-core-amkqnyzy.js";
22
- import"../../../shared/@ai-setting/roy-agent-core-14bq77wr.js";
22
+ import"../../../shared/@ai-setting/roy-agent-core-g5sw19fa.js";
23
23
  import"../../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
24
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
25
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
24
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
25
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
26
26
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
27
27
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
28
28
  export {
@@ -9,7 +9,7 @@ import {
9
9
  grepTool,
10
10
  readFileTool,
11
11
  writeFileTool
12
- } from "../../shared/@ai-setting/roy-agent-core-q4gdfypk.js";
12
+ } from "../../shared/@ai-setting/roy-agent-core-dp1hp24k.js";
13
13
  import {
14
14
  getUnderstandImageLLMProvider,
15
15
  resetUnderstandImageLLMProvider,
@@ -17,25 +17,25 @@ import {
17
17
  understandImageTool
18
18
  } from "../../shared/@ai-setting/roy-agent-core-xwm8zavb.js";
19
19
  import"../../shared/@ai-setting/roy-agent-core-amkqnyzy.js";
20
- import"../../shared/@ai-setting/roy-agent-core-14bq77wr.js";
20
+ import"../../shared/@ai-setting/roy-agent-core-g5sw19fa.js";
21
21
  import {
22
22
  ToolComponent,
23
23
  ToolRegistry,
24
24
  ToolValidator,
25
25
  getMaxOutputSize,
26
26
  setToolConfigComponent
27
- } from "../../shared/@ai-setting/roy-agent-core-fw6k4w1h.js";
28
- import"../../shared/@ai-setting/roy-agent-core-n0p0hwgd.js";
27
+ } from "../../shared/@ai-setting/roy-agent-core-pj5tfmn5.js";
28
+ import"../../shared/@ai-setting/roy-agent-core-kfmrfaft.js";
29
29
  import"../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
30
30
  import"../../shared/@ai-setting/roy-agent-core-e25xkv53.js";
31
31
  import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
32
- import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
33
- import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
34
- import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
35
- import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
36
- import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
37
- import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
38
- import"../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
32
+ import"../../shared/@ai-setting/roy-agent-core-9s3payp1.js";
33
+ import"../../shared/@ai-setting/roy-agent-core-expvav8a.js";
34
+ import"../../shared/@ai-setting/roy-agent-core-ajmgyawx.js";
35
+ import"../../shared/@ai-setting/roy-agent-core-bdzdw1g3.js";
36
+ import"../../shared/@ai-setting/roy-agent-core-qrjs2500.js";
37
+ import"../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
38
+ import"../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
39
39
  import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
40
40
  import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
41
41
  export {
@@ -5,27 +5,27 @@ import {
5
5
  Scheduler,
6
6
  WorkflowEngine,
7
7
  init_engine
8
- } from "../../../shared/@ai-setting/roy-agent-core-w93z6a42.js";
8
+ } from "../../../shared/@ai-setting/roy-agent-core-nd5171pv.js";
9
9
  import"../../../shared/@ai-setting/roy-agent-core-6atd905e.js";
10
- import"../../../shared/@ai-setting/roy-agent-core-txwptxk1.js";
11
- import"../../../shared/@ai-setting/roy-agent-core-d75t8gea.js";
10
+ import"../../../shared/@ai-setting/roy-agent-core-j0x9yf96.js";
11
+ import"../../../shared/@ai-setting/roy-agent-core-dg286rpd.js";
12
12
  import"../../../shared/@ai-setting/roy-agent-core-1db4vpc6.js";
13
13
  import"../../../shared/@ai-setting/roy-agent-core-ze068vc9.js";
14
- import"../../../shared/@ai-setting/roy-agent-core-hefarcp0.js";
15
- import"../../../shared/@ai-setting/roy-agent-core-geh6j7bw.js";
16
- import"../../../shared/@ai-setting/roy-agent-core-t4x089js.js";
14
+ import"../../../shared/@ai-setting/roy-agent-core-a5nh5q6v.js";
15
+ import"../../../shared/@ai-setting/roy-agent-core-p2dpcyrz.js";
16
+ import"../../../shared/@ai-setting/roy-agent-core-sf9tsj0g.js";
17
17
  import"../../../shared/@ai-setting/roy-agent-core-ddwa0n6h.js";
18
18
  import {
19
19
  DAGManager
20
- } from "../../../shared/@ai-setting/roy-agent-core-08njdcpj.js";
20
+ } from "../../../shared/@ai-setting/roy-agent-core-60p2380d.js";
21
21
  import"../../../shared/@ai-setting/roy-agent-core-jrj30vq3.js";
22
22
  import"../../../shared/@ai-setting/roy-agent-core-e25xkv53.js";
23
- import"../../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
24
- import"../../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
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";
23
+ import"../../../shared/@ai-setting/roy-agent-core-expvav8a.js";
24
+ import"../../../shared/@ai-setting/roy-agent-core-ajmgyawx.js";
25
+ import"../../../shared/@ai-setting/roy-agent-core-bdzdw1g3.js";
26
+ import"../../../shared/@ai-setting/roy-agent-core-qrjs2500.js";
27
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
28
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
29
29
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
30
30
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
31
31
  init_engine();