@ai-setting/roy-agent-core 1.7.58 → 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 (120) 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 +12 -1
  8. package/dist/env/event-source/index.d.ts +4 -2
  9. package/dist/env/event-source/index.js +30 -20
  10. package/dist/env/event-source/types.d.ts +89 -1
  11. package/dist/env/hook/index.js +6 -6
  12. package/dist/env/index.d.ts +1 -1
  13. package/dist/env/index.js +46 -46
  14. package/dist/env/llm/index.js +9 -9
  15. package/dist/env/log-trace/index.d.ts +1 -1
  16. package/dist/env/log-trace/index.js +12 -8
  17. package/dist/env/log-trace/logger.d.ts +2 -0
  18. package/dist/env/mcp/index.js +9 -9
  19. package/dist/env/mcp/tool/index.js +2 -2
  20. package/dist/env/memory/index.js +9 -9
  21. package/dist/env/memory/plugin/index.js +2 -2
  22. package/dist/env/plugin/index.js +8 -8
  23. package/dist/env/prompt/index.js +8 -8
  24. package/dist/env/session/index.js +11 -11
  25. package/dist/env/session/storage/index.js +5 -5
  26. package/dist/env/skill/index.js +8 -8
  27. package/dist/env/task/delegate/index.js +9 -9
  28. package/dist/env/task/index.js +16 -16
  29. package/dist/env/task/mcp/index.d.ts +16 -0
  30. package/dist/env/task/mcp/index.js +222 -0
  31. package/dist/env/task/mcp/task-mcp-server.d.ts +142 -0
  32. package/dist/env/task/plugins/index.d.ts +1 -0
  33. package/dist/env/task/plugins/index.js +47 -12
  34. package/dist/env/task/storage/index.js +4 -4
  35. package/dist/env/task/storage/migrations/log-migration.d.ts +19 -0
  36. package/dist/env/task/storage/sqlite-task-store.d.ts +29 -0
  37. package/dist/env/task/task-component.d.ts +48 -3
  38. package/dist/env/task/tools/index.js +4 -4
  39. package/dist/env/task/tools/task-types.d.ts +60 -11
  40. package/dist/env/tool/built-in/index.js +4 -4
  41. package/dist/env/tool/index.js +11 -11
  42. package/dist/env/workflow/engine/index.js +13 -13
  43. package/dist/env/workflow/hooks/index.js +8 -8
  44. package/dist/env/workflow/index.js +23 -23
  45. package/dist/env/workflow/nodes/index.js +3 -3
  46. package/dist/env/workflow/plugins/index.js +9 -9
  47. package/dist/env/workflow/service/index.js +3 -3
  48. package/dist/env/workflow/storage/index.js +4 -4
  49. package/dist/env/workflow/tools/index.js +15 -15
  50. package/dist/env/workflow/tools/run-workflow.d.ts +30 -0
  51. package/dist/env/workflow/utils/index.js +5 -5
  52. package/dist/env/workflow/utils/session-recovery.d.ts +27 -0
  53. package/dist/index.js +81 -71
  54. package/dist/shared/@ai-setting/{roy-agent-core-tze5596n.js → roy-agent-core-0f989bnp.js} +3 -3
  55. package/dist/shared/@ai-setting/{roy-agent-core-e250355z.js → roy-agent-core-22r4zmkw.js} +3 -3
  56. package/dist/shared/@ai-setting/{roy-agent-core-8p63s836.js → roy-agent-core-2qkrpc7m.js} +1 -1
  57. package/dist/shared/@ai-setting/{roy-agent-core-47s81t6g.js → roy-agent-core-3bpntd80.js} +2 -2
  58. package/dist/shared/@ai-setting/{roy-agent-core-rcgvmtms.js → roy-agent-core-3p59ap0x.js} +1 -1
  59. package/dist/shared/@ai-setting/{roy-agent-core-en2xqxs9.js → roy-agent-core-4m5spt7m.js} +39 -14
  60. package/dist/shared/@ai-setting/{roy-agent-core-5f7myqnb.js → roy-agent-core-5565cvw8.js} +11 -5
  61. package/dist/shared/@ai-setting/{roy-agent-core-2fk8c9ax.js → roy-agent-core-5knpegzr.js} +3 -3
  62. package/dist/shared/@ai-setting/{roy-agent-core-08njdcpj.js → roy-agent-core-60p2380d.js} +1 -1
  63. package/dist/shared/@ai-setting/{roy-agent-core-0yn7a78e.js → roy-agent-core-6cyjps72.js} +14 -14
  64. package/dist/shared/@ai-setting/{roy-agent-core-89sxsrc7.js → roy-agent-core-8fy467qs.js} +1 -1
  65. package/dist/shared/@ai-setting/{roy-agent-core-x6c45yqd.js → roy-agent-core-99nwgj84.js} +1 -1
  66. package/dist/shared/@ai-setting/{roy-agent-core-20m8je6e.js → roy-agent-core-9k8ms63r.js} +1 -1
  67. package/dist/shared/@ai-setting/{roy-agent-core-0kn3zt1t.js → roy-agent-core-9s3payp1.js} +2 -2
  68. package/dist/shared/@ai-setting/{roy-agent-core-hefarcp0.js → roy-agent-core-a5nh5q6v.js} +1 -1
  69. package/dist/shared/@ai-setting/{roy-agent-core-hs41gx9w.js → roy-agent-core-aa514zm8.js} +5 -5
  70. package/dist/shared/@ai-setting/{roy-agent-core-yphwdm9x.js → roy-agent-core-ajmgyawx.js} +2 -2
  71. package/dist/shared/@ai-setting/{roy-agent-core-caevk7xd.js → roy-agent-core-arx535cs.js} +30 -8
  72. package/dist/shared/@ai-setting/{roy-agent-core-vath15kt.js → roy-agent-core-bc3v8pw4.js} +6 -6
  73. package/dist/shared/@ai-setting/{roy-agent-core-m97jn2ra.js → roy-agent-core-bdzdw1g3.js} +1 -1
  74. package/dist/shared/@ai-setting/{roy-agent-core-ck60j1q9.js → roy-agent-core-bxkjk7zx.js} +2 -1
  75. package/dist/shared/@ai-setting/{roy-agent-core-6bradb0j.js → roy-agent-core-cndvj1hv.js} +8 -8
  76. package/dist/shared/@ai-setting/{roy-agent-core-d75t8gea.js → roy-agent-core-dg286rpd.js} +1 -1
  77. package/dist/shared/@ai-setting/{roy-agent-core-q4gdfypk.js → roy-agent-core-dp1hp24k.js} +3 -3
  78. package/dist/shared/@ai-setting/{roy-agent-core-ygn5tzt1.js → roy-agent-core-dythsgkn.js} +2 -2
  79. package/dist/shared/@ai-setting/{roy-agent-core-em4hks9t.js → roy-agent-core-e6k448ka.js} +4 -4
  80. package/dist/shared/@ai-setting/{roy-agent-core-ytd5eztz.js → roy-agent-core-expvav8a.js} +1 -1
  81. package/dist/shared/@ai-setting/{roy-agent-core-vgdhxbx3.js → roy-agent-core-g44nbgtt.js} +2 -2
  82. package/dist/shared/@ai-setting/{roy-agent-core-14bq77wr.js → roy-agent-core-g5sw19fa.js} +1 -1
  83. package/dist/shared/@ai-setting/{roy-agent-core-991pk4ss.js → roy-agent-core-gtb4fj8j.js} +16 -16
  84. package/dist/shared/@ai-setting/{roy-agent-core-gksw1gjb.js → roy-agent-core-hf0t8agb.js} +1 -1
  85. package/dist/shared/@ai-setting/{roy-agent-core-txwptxk1.js → roy-agent-core-j0x9yf96.js} +3 -3
  86. package/dist/shared/@ai-setting/{roy-agent-core-84rs0c8d.js → roy-agent-core-jrksyqb6.js} +7 -7
  87. package/dist/shared/@ai-setting/{roy-agent-core-ge87xbas.js → roy-agent-core-jsdqzfbj.js} +1 -1
  88. package/dist/shared/@ai-setting/{roy-agent-core-m68z3pw1.js → roy-agent-core-jsn21cb9.js} +1 -1
  89. package/dist/shared/@ai-setting/{roy-agent-core-n0p0hwgd.js → roy-agent-core-kfmrfaft.js} +1 -1
  90. package/dist/shared/@ai-setting/{roy-agent-core-7q4wdze2.js → roy-agent-core-khc23qs1.js} +1 -1
  91. package/dist/shared/@ai-setting/{roy-agent-core-e1w17tht.js → roy-agent-core-m2tv4pj0.js} +2 -2
  92. package/dist/shared/@ai-setting/{roy-agent-core-4096f575.js → roy-agent-core-mhppywse.js} +4 -4
  93. package/dist/shared/@ai-setting/{roy-agent-core-t64nmayv.js → roy-agent-core-mw0bc9g6.js} +2 -2
  94. package/dist/shared/@ai-setting/{roy-agent-core-8bngppw0.js → roy-agent-core-n1ck0x1r.js} +13 -13
  95. package/dist/shared/@ai-setting/{roy-agent-core-w93z6a42.js → roy-agent-core-nd5171pv.js} +12 -12
  96. package/dist/shared/@ai-setting/{roy-agent-core-geh6j7bw.js → roy-agent-core-p2dpcyrz.js} +2 -2
  97. package/dist/shared/@ai-setting/{roy-agent-core-fw6k4w1h.js → roy-agent-core-pj5tfmn5.js} +6 -6
  98. package/dist/shared/@ai-setting/{roy-agent-core-029r8kdw.js → roy-agent-core-q212q0w1.js} +4 -4
  99. package/dist/shared/@ai-setting/{roy-agent-core-psg6f1v6.js → roy-agent-core-qgapy83x.js} +6 -6
  100. package/dist/shared/@ai-setting/{roy-agent-core-jjxdmedn.js → roy-agent-core-qpqqx1wd.js} +2 -2
  101. package/dist/shared/@ai-setting/{roy-agent-core-syyw58p9.js → roy-agent-core-qrjs2500.js} +2 -2
  102. package/dist/shared/@ai-setting/{roy-agent-core-84xtww7d.js → roy-agent-core-qw5fpa24.js} +3 -3
  103. package/dist/shared/@ai-setting/{roy-agent-core-kq9pz2a7.js → roy-agent-core-rnzm0tpf.js} +4 -4
  104. package/dist/shared/@ai-setting/{roy-agent-core-7nb23tdd.js → roy-agent-core-s7w47mnn.js} +1 -1
  105. package/dist/shared/@ai-setting/{roy-agent-core-t4x089js.js → roy-agent-core-sf9tsj0g.js} +1 -1
  106. package/dist/shared/@ai-setting/{roy-agent-core-jjhw9am6.js → roy-agent-core-tn96n4wz.js} +4 -4
  107. package/dist/shared/@ai-setting/{roy-agent-core-c7w2h47a.js → roy-agent-core-vmfk4m1v.js} +3 -3
  108. package/dist/shared/@ai-setting/{roy-agent-core-cyefe8z5.js → roy-agent-core-x1m0gs0q.js} +1 -1
  109. package/dist/shared/@ai-setting/{roy-agent-core-baaa4wtp.js → roy-agent-core-xc0es9zc.js} +2 -2
  110. package/dist/shared/@ai-setting/{roy-agent-core-fbjd7bt6.js → roy-agent-core-xeqp659x.js} +64 -29
  111. package/dist/shared/@ai-setting/{roy-agent-core-rt115qfc.js → roy-agent-core-y0k9kaxz.js} +14 -4
  112. package/dist/shared/@ai-setting/{roy-agent-core-c36335nw.js → roy-agent-core-yd85623y.js} +15 -3
  113. package/dist/shared/@ai-setting/{roy-agent-core-9zhkdg6w.js → roy-agent-core-ygfjgk9b.js} +2 -2
  114. package/dist/shared/@ai-setting/{roy-agent-core-vh0qzb24.js → roy-agent-core-ymcvsdzn.js} +36 -15
  115. package/dist/shared/@ai-setting/{roy-agent-core-eanq305k.js → roy-agent-core-yr5eqyhz.js} +11 -11
  116. package/dist/shared/@ai-setting/{roy-agent-core-fy4mcj6x.js → roy-agent-core-ytnedzks.js} +292 -105
  117. package/dist/shared/@ai-setting/{roy-agent-core-2ctyjy62.js → roy-agent-core-z51jktet.js} +1 -1
  118. package/dist/utils/temp-file-manager/index.js +2 -2
  119. package/package.json +16 -1
  120. /package/dist/shared/@ai-setting/{roy-agent-core-3ztzc83c.js → roy-agent-core-5enxfga2.js} +0 -0
@@ -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();
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  init_hooks
3
- } from "../../../shared/@ai-setting/roy-agent-core-hefarcp0.js";
3
+ } from "../../../shared/@ai-setting/roy-agent-core-a5nh5q6v.js";
4
4
  import {
5
5
  WorkflowHookPoints,
6
6
  emitWorkflowNodeHook,
7
7
  emitWorkflowRunHook,
8
8
  getRegisteredWorkflowHookPoints
9
- } from "../../../shared/@ai-setting/roy-agent-core-geh6j7bw.js";
10
- import"../../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
11
- import"../../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
12
- import"../../../shared/@ai-setting/roy-agent-core-m97jn2ra.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";
9
+ } from "../../../shared/@ai-setting/roy-agent-core-p2dpcyrz.js";
10
+ import"../../../shared/@ai-setting/roy-agent-core-expvav8a.js";
11
+ import"../../../shared/@ai-setting/roy-agent-core-ajmgyawx.js";
12
+ import"../../../shared/@ai-setting/roy-agent-core-bdzdw1g3.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
  init_hooks();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WorkflowComponent
3
- } from "../../shared/@ai-setting/roy-agent-core-0yn7a78e.js";
4
- import"../../shared/@ai-setting/roy-agent-core-vgdhxbx3.js";
3
+ } from "../../shared/@ai-setting/roy-agent-core-6cyjps72.js";
4
+ import"../../shared/@ai-setting/roy-agent-core-g44nbgtt.js";
5
5
  import {
6
6
  Edge,
7
7
  NodeAs,
@@ -14,24 +14,24 @@ 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-en2xqxs9.js";
18
- import"../../shared/@ai-setting/roy-agent-core-kq9pz2a7.js";
19
- import"../../shared/@ai-setting/roy-agent-core-c7w2h47a.js";
17
+ import"../../shared/@ai-setting/roy-agent-core-4m5spt7m.js";
18
+ import"../../shared/@ai-setting/roy-agent-core-rnzm0tpf.js";
19
+ import"../../shared/@ai-setting/roy-agent-core-vmfk4m1v.js";
20
20
  import"../../shared/@ai-setting/roy-agent-core-hhrg314p.js";
21
- import"../../shared/@ai-setting/roy-agent-core-9zhkdg6w.js";
22
- import"../../shared/@ai-setting/roy-agent-core-w93z6a42.js";
21
+ import"../../shared/@ai-setting/roy-agent-core-ygfjgk9b.js";
22
+ import"../../shared/@ai-setting/roy-agent-core-nd5171pv.js";
23
23
  import"../../shared/@ai-setting/roy-agent-core-6atd905e.js";
24
- import"../../shared/@ai-setting/roy-agent-core-txwptxk1.js";
25
- import"../../shared/@ai-setting/roy-agent-core-d75t8gea.js";
24
+ import"../../shared/@ai-setting/roy-agent-core-j0x9yf96.js";
25
+ import"../../shared/@ai-setting/roy-agent-core-dg286rpd.js";
26
26
  import"../../shared/@ai-setting/roy-agent-core-1db4vpc6.js";
27
27
  import"../../shared/@ai-setting/roy-agent-core-ze068vc9.js";
28
- import"../../shared/@ai-setting/roy-agent-core-hefarcp0.js";
29
- import"../../shared/@ai-setting/roy-agent-core-geh6j7bw.js";
28
+ import"../../shared/@ai-setting/roy-agent-core-a5nh5q6v.js";
29
+ import"../../shared/@ai-setting/roy-agent-core-p2dpcyrz.js";
30
30
  import"../../shared/@ai-setting/roy-agent-core-7exqwax1.js";
31
- import"../../shared/@ai-setting/roy-agent-core-89sxsrc7.js";
32
- import"../../shared/@ai-setting/roy-agent-core-t4x089js.js";
31
+ import"../../shared/@ai-setting/roy-agent-core-8fy467qs.js";
32
+ import"../../shared/@ai-setting/roy-agent-core-sf9tsj0g.js";
33
33
  import"../../shared/@ai-setting/roy-agent-core-ddwa0n6h.js";
34
- import"../../shared/@ai-setting/roy-agent-core-08njdcpj.js";
34
+ import"../../shared/@ai-setting/roy-agent-core-60p2380d.js";
35
35
  import {
36
36
  BaseEventSchema,
37
37
  ControlPauseEventSchema,
@@ -85,8 +85,8 @@ import {
85
85
  unresolvedVariable
86
86
  } from "../../shared/@ai-setting/roy-agent-core-jrj30vq3.js";
87
87
  import"../../shared/@ai-setting/roy-agent-core-rvxg1wps.js";
88
- import"../../shared/@ai-setting/roy-agent-core-ge87xbas.js";
89
- import"../../shared/@ai-setting/roy-agent-core-e1w17tht.js";
88
+ import"../../shared/@ai-setting/roy-agent-core-jsdqzfbj.js";
89
+ import"../../shared/@ai-setting/roy-agent-core-m2tv4pj0.js";
90
90
  import"../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
91
91
  import"../../shared/@ai-setting/roy-agent-core-c1v263jn.js";
92
92
  import {
@@ -95,13 +95,13 @@ import {
95
95
  createWorkflowAskUserEvent
96
96
  } from "../../shared/@ai-setting/roy-agent-core-e25xkv53.js";
97
97
  import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
98
- import"../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
99
- import"../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
100
- import"../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
101
- import"../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
102
- import"../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
103
- import"../../shared/@ai-setting/roy-agent-core-8p63s836.js";
104
- import"../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
98
+ import"../../shared/@ai-setting/roy-agent-core-9s3payp1.js";
99
+ import"../../shared/@ai-setting/roy-agent-core-expvav8a.js";
100
+ import"../../shared/@ai-setting/roy-agent-core-ajmgyawx.js";
101
+ import"../../shared/@ai-setting/roy-agent-core-bdzdw1g3.js";
102
+ import"../../shared/@ai-setting/roy-agent-core-qrjs2500.js";
103
+ import"../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
104
+ import"../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
105
105
  import"../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
106
106
  import"../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
107
107
 
@@ -7,9 +7,9 @@ import {
7
7
  init_skill_node,
8
8
  init_tool_node,
9
9
  init_workflow_node
10
- } from "../../../shared/@ai-setting/roy-agent-core-d75t8gea.js";
11
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
12
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
10
+ } from "../../../shared/@ai-setting/roy-agent-core-dg286rpd.js";
11
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
12
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
13
13
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
14
14
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
15
15
 
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  LarkCliWorkflowNotifyHook,
3
3
  createLarkCliWorkflowNotifyHook
4
- } from "../../../shared/@ai-setting/roy-agent-core-psg6f1v6.js";
5
- import"../../../shared/@ai-setting/roy-agent-core-c36335nw.js";
6
- import"../../../shared/@ai-setting/roy-agent-core-geh6j7bw.js";
7
- import"../../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
8
- import"../../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
9
- import"../../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
10
- import"../../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
11
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
12
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
4
+ } from "../../../shared/@ai-setting/roy-agent-core-qgapy83x.js";
5
+ import"../../../shared/@ai-setting/roy-agent-core-yd85623y.js";
6
+ import"../../../shared/@ai-setting/roy-agent-core-p2dpcyrz.js";
7
+ import"../../../shared/@ai-setting/roy-agent-core-expvav8a.js";
8
+ import"../../../shared/@ai-setting/roy-agent-core-ajmgyawx.js";
9
+ import"../../../shared/@ai-setting/roy-agent-core-bdzdw1g3.js";
10
+ import"../../../shared/@ai-setting/roy-agent-core-qrjs2500.js";
11
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
12
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
13
13
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
14
14
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
15
15
  export {
@@ -5,10 +5,10 @@ import {
5
5
  } from "../../../shared/@ai-setting/roy-agent-core-hhrg314p.js";
6
6
  import {
7
7
  WorkflowService
8
- } from "../../../shared/@ai-setting/roy-agent-core-9zhkdg6w.js";
8
+ } from "../../../shared/@ai-setting/roy-agent-core-ygfjgk9b.js";
9
9
  import"../../../shared/@ai-setting/roy-agent-core-7exqwax1.js";
10
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
11
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
10
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
11
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
12
12
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
13
13
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
14
14
  export {
@@ -8,13 +8,13 @@ import {
8
8
  migrateEmptyTagsToDefault,
9
9
  resetDatabase,
10
10
  rowToWorkflow
11
- } from "../../../shared/@ai-setting/roy-agent-core-jjxdmedn.js";
11
+ } from "../../../shared/@ai-setting/roy-agent-core-qpqqx1wd.js";
12
12
  import {
13
13
  TagRepository
14
- } from "../../../shared/@ai-setting/roy-agent-core-rcgvmtms.js";
14
+ } from "../../../shared/@ai-setting/roy-agent-core-3p59ap0x.js";
15
15
  import"../../../shared/@ai-setting/roy-agent-core-rvxg1wps.js";
16
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
17
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
16
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
17
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.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 {
@@ -24,10 +24,10 @@ import {
24
24
  getRunWorkflowTool,
25
25
  initRunWorkflowTool,
26
26
  resetRunWorkflowTool
27
- } from "../../../shared/@ai-setting/roy-agent-core-en2xqxs9.js";
28
- import"../../../shared/@ai-setting/roy-agent-core-kq9pz2a7.js";
29
- import"../../../shared/@ai-setting/roy-agent-core-c7w2h47a.js";
30
- import"../../../shared/@ai-setting/roy-agent-core-9zhkdg6w.js";
27
+ } from "../../../shared/@ai-setting/roy-agent-core-4m5spt7m.js";
28
+ import"../../../shared/@ai-setting/roy-agent-core-rnzm0tpf.js";
29
+ import"../../../shared/@ai-setting/roy-agent-core-vmfk4m1v.js";
30
+ import"../../../shared/@ai-setting/roy-agent-core-ygfjgk9b.js";
31
31
  import {
32
32
  WORKFLOW_SUBMIT_OUTPUT_TOOL_NAME,
33
33
  WorkflowJsonOutputMarker,
@@ -37,23 +37,23 @@ import {
37
37
  } from "../../../shared/@ai-setting/roy-agent-core-1db4vpc6.js";
38
38
  import"../../../shared/@ai-setting/roy-agent-core-ze068vc9.js";
39
39
  import"../../../shared/@ai-setting/roy-agent-core-7exqwax1.js";
40
- import"../../../shared/@ai-setting/roy-agent-core-89sxsrc7.js";
41
- import"../../../shared/@ai-setting/roy-agent-core-08njdcpj.js";
40
+ import"../../../shared/@ai-setting/roy-agent-core-8fy467qs.js";
41
+ import"../../../shared/@ai-setting/roy-agent-core-60p2380d.js";
42
42
  import"../../../shared/@ai-setting/roy-agent-core-jrj30vq3.js";
43
43
  import"../../../shared/@ai-setting/roy-agent-core-rvxg1wps.js";
44
- import"../../../shared/@ai-setting/roy-agent-core-ge87xbas.js";
45
- import"../../../shared/@ai-setting/roy-agent-core-e1w17tht.js";
44
+ import"../../../shared/@ai-setting/roy-agent-core-jsdqzfbj.js";
45
+ import"../../../shared/@ai-setting/roy-agent-core-m2tv4pj0.js";
46
46
  import"../../../shared/@ai-setting/roy-agent-core-zjdzk1gg.js";
47
47
  import"../../../shared/@ai-setting/roy-agent-core-c1v263jn.js";
48
48
  import"../../../shared/@ai-setting/roy-agent-core-e25xkv53.js";
49
49
  import"../../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
50
- import"../../../shared/@ai-setting/roy-agent-core-0kn3zt1t.js";
51
- import"../../../shared/@ai-setting/roy-agent-core-ytd5eztz.js";
52
- import"../../../shared/@ai-setting/roy-agent-core-yphwdm9x.js";
53
- import"../../../shared/@ai-setting/roy-agent-core-m97jn2ra.js";
54
- import"../../../shared/@ai-setting/roy-agent-core-syyw58p9.js";
55
- import"../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
56
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
50
+ import"../../../shared/@ai-setting/roy-agent-core-9s3payp1.js";
51
+ import"../../../shared/@ai-setting/roy-agent-core-expvav8a.js";
52
+ import"../../../shared/@ai-setting/roy-agent-core-ajmgyawx.js";
53
+ import"../../../shared/@ai-setting/roy-agent-core-bdzdw1g3.js";
54
+ import"../../../shared/@ai-setting/roy-agent-core-qrjs2500.js";
55
+ import"../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
56
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
57
57
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
58
58
  import"../../../shared/@ai-setting/roy-agent-core-fs0mn2jk.js";
59
59
 
@@ -91,6 +91,36 @@ export interface RunWorkflowToolInterface {
91
91
  description: string;
92
92
  inputSchema: typeof RunWorkflowInputSchema;
93
93
  }
94
+ /**
95
+ * Legacy tool-side default run budget (30 minutes).
96
+ *
97
+ * Kept as the fallback for definitions that declare no `config.timeout`, and
98
+ * for the case where the definition cannot be resolved at all. See
99
+ * `resolveEffectiveTimeout` for the full precedence chain.
100
+ */
101
+ export declare const DEFAULT_WORKFLOW_RUN_TIMEOUT_MS = 1800000;
102
+ /**
103
+ * Resolve the effective run budget for `workflow_run`.
104
+ *
105
+ * Precedence (Task #4604 / D2):
106
+ * 1. Caller-supplied `timeout` — always wins (explicit intent)
107
+ * 2. Workflow definition `config.timeout` — the workflow's declared budget
108
+ * 3. `DEFAULT_WORKFLOW_RUN_TIMEOUT_MS` — legacy 30-minute fallback
109
+ *
110
+ * Why step 2 exists: previously the tool's 30-minute default was forwarded to
111
+ * the engine, so a workflow declaring `config.timeout: 7200000` was still
112
+ * aborted at 30 minutes. The definition is the authoritative budget — the tool
113
+ * should not silently shrink it.
114
+ *
115
+ * Only positive finite numbers are accepted at every level; anything else falls
116
+ * through to the next level (same defensive shape as tool-node's
117
+ * `getToolTimeoutMs`).
118
+ *
119
+ * Definition lookup is wrapped in try/catch: a missing/partial WorkflowService
120
+ * (lightweight test doubles, mock services) must NOT make workflow execution
121
+ * fail here. We degrade to the legacy default instead.
122
+ */
123
+ export declare function resolveEffectiveTimeout(workflowService: WorkflowService | undefined, workflowName: string | undefined, explicitTimeout: number | undefined): number;
94
124
  /**
95
125
  * Create a workflow_run tool with the given WorkflowService
96
126
  *
@@ -14,25 +14,25 @@ import {
14
14
  hasClosedOutputContract,
15
15
  validateTemplateContracts,
16
16
  validateWorkflowDefinition
17
- } from "../../../shared/@ai-setting/roy-agent-core-89sxsrc7.js";
17
+ } from "../../../shared/@ai-setting/roy-agent-core-8fy467qs.js";
18
18
  import {
19
19
  TemplateResolver,
20
20
  init_template_resolver,
21
21
  resolveTemplateString,
22
22
  resolveTemplates
23
- } from "../../../shared/@ai-setting/roy-agent-core-t4x089js.js";
23
+ } from "../../../shared/@ai-setting/roy-agent-core-sf9tsj0g.js";
24
24
  import {
25
25
  getFromMapWithNormalization,
26
26
  init_node_id_utils
27
27
  } from "../../../shared/@ai-setting/roy-agent-core-ddwa0n6h.js";
28
- import"../../../shared/@ai-setting/roy-agent-core-08njdcpj.js";
28
+ import"../../../shared/@ai-setting/roy-agent-core-60p2380d.js";
29
29
  import"../../../shared/@ai-setting/roy-agent-core-jrj30vq3.js";
30
30
  import"../../../shared/@ai-setting/roy-agent-core-e25xkv53.js";
31
31
  import {
32
32
  TracedAs,
33
33
  init_decorator
34
- } from "../../../shared/@ai-setting/roy-agent-core-8p63s836.js";
35
- import"../../../shared/@ai-setting/roy-agent-core-rt115qfc.js";
34
+ } from "../../../shared/@ai-setting/roy-agent-core-2qkrpc7m.js";
35
+ import"../../../shared/@ai-setting/roy-agent-core-y0k9kaxz.js";
36
36
  import"../../../shared/@ai-setting/roy-agent-core-jnszp0jq.js";
37
37
  import {
38
38
  __legacyDecorateClassTS
@@ -62,6 +62,33 @@ export declare function findLastCallMessage(messages: SessionMessage[]): Session
62
62
  * Extracts outputs by matching:
63
63
  * - workflow.node.start with workflow.node.end pairs
64
64
  * - workflow.node.call with workflow.node.result pairs
65
+ *
66
+ * ★ Task #4604 (D3) — pair by the TERMINAL message's own node id.
67
+ *
68
+ * The previous implementation tracked a single `lastStartNodeId` scalar, which
69
+ * broke whenever nodes ran concurrently (the norm: the workflow fans out build
70
+ * nodes in parallel). With 4 interleaved starts followed by ends in completion
71
+ * order, the scalar only ever remembered the LAST start, so:
72
+ *
73
+ * start A, start B, start C, start D
74
+ * end C -> mis-attributed to D
75
+ * end A -> dropped (scalar already consumed)
76
+ * end D -> dropped
77
+ *
78
+ * => nodeOutputs lost finished nodes. `--session` resume then treated those
79
+ * nodes as never-executed and rebuilt them (Task #4599 §5.4: 3 finished
80
+ * docker builds re-run, 40+ minutes wasted, produced wheels overwritten).
81
+ *
82
+ * The terminal message always carries its own node id (`nodeId` /
83
+ * `workflowNodeId`), so pairing by it is both simpler and correct for:
84
+ * - concurrent fan-out (id from the end message),
85
+ * - a start with no end (node stays pending → no output),
86
+ * - an end with no observed start (node is done → output recorded),
87
+ * - retries (the last end wins, via Map.set overwrite).
88
+ *
89
+ * Legacy `workflow.node.call` / `workflow.node.result` pairs follow the same
90
+ * rule, which is also what fixes cross-pairing when several calls are in
91
+ * flight at once.
65
92
  */
66
93
  export declare function parseNodeOutputs(messages: SessionMessage[]): Map<string, unknown>;
67
94
  /**