@ai-setting/roy-agent-core 1.7.52 → 1.7.55

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 (367) hide show
  1. package/dist/config/config-component.d.ts +346 -0
  2. package/dist/config/config-parser.d.ts +45 -0
  3. package/dist/config/env-key.d.ts +97 -0
  4. package/dist/config/env-source.d.ts +113 -0
  5. package/dist/config/file-source.d.ts +90 -0
  6. package/dist/config/index.d.ts +4 -0
  7. package/dist/config/protocol-resolver.d.ts +94 -0
  8. package/dist/env/agent/agent-component.d.ts +646 -0
  9. package/dist/env/agent/agent-config-registration.d.ts +18 -0
  10. package/dist/env/agent/agent-registry.d.ts +500 -0
  11. package/dist/env/agent/index.d.ts +9 -0
  12. package/dist/env/agent/index.js +3 -3
  13. package/dist/env/agent/summary-agent.d.ts +44 -0
  14. package/dist/env/agent/types.d.ts +503 -0
  15. package/dist/env/commands/commands-component.d.ts +97 -0
  16. package/dist/env/commands/commands-config-registration.d.ts +19 -0
  17. package/dist/env/commands/index.d.ts +7 -0
  18. package/dist/env/commands/parser.d.ts +18 -0
  19. package/dist/env/commands/types.d.ts +133 -0
  20. package/dist/env/component.d.ts +186 -0
  21. package/dist/env/constants.d.ts +112 -0
  22. package/dist/env/context/env-context.d.ts +420 -0
  23. package/dist/env/context/env-event.d.ts +144 -0
  24. package/dist/env/context/index.d.ts +13 -0
  25. package/dist/env/debug/debug-component.d.ts +160 -0
  26. package/dist/env/debug/formatters/index.d.ts +8 -0
  27. package/dist/env/debug/formatters/repl-formatter.d.ts +80 -0
  28. package/dist/env/debug/formatters/trace-formatter.d.ts +43 -0
  29. package/dist/env/debug/formatters/tree-formatter.d.ts +72 -0
  30. package/dist/env/debug/index.d.ts +15 -0
  31. package/dist/env/debug/index.js +1 -1
  32. package/dist/env/debug/parser/regex-parser.d.ts +49 -0
  33. package/dist/env/debug/parser/span-builder.d.ts +79 -0
  34. package/dist/env/debug/reader/log-reader.d.ts +55 -0
  35. package/dist/env/debug/reader/span-db-reader.d.ts +70 -0
  36. package/dist/env/debug/types.d.ts +145 -0
  37. package/dist/env/environment.d.ts +185 -0
  38. package/dist/env/error-reply.d.ts +184 -0
  39. package/dist/env/errors.d.ts +120 -0
  40. package/dist/env/event-source/bounty-cli-handler.d.ts +42 -0
  41. package/dist/env/event-source/bounty-im-handler.d.ts +232 -0
  42. package/dist/env/event-source/event-source-component.d.ts +177 -0
  43. package/dist/env/event-source/event-source-config-registration.d.ts +18 -0
  44. package/dist/env/event-source/event-source-handlers.d.ts +472 -0
  45. package/dist/env/event-source/event-store.d.ts +110 -0
  46. package/dist/env/event-source/idempotency-key.d.ts +19 -0
  47. package/dist/env/event-source/index.d.ts +15 -0
  48. package/dist/env/event-source/index.js +6 -6
  49. package/dist/env/event-source/timer-handler.d.ts +74 -0
  50. package/dist/env/event-source/types.d.ts +803 -0
  51. package/dist/env/hook/global-hook-manager.d.ts +73 -0
  52. package/dist/env/hook/hook-manager.d.ts +139 -0
  53. package/dist/env/hook/index.d.ts +9 -0
  54. package/dist/env/hook/types.d.ts +107 -0
  55. package/dist/env/index.d.ts +24 -0
  56. package/dist/env/index.js +18 -18
  57. package/dist/env/interface.d.ts +156 -0
  58. package/dist/env/lark-mention-utils.d.ts +59 -0
  59. package/dist/env/llm/adapter-ai-sdk.d.ts +10 -0
  60. package/dist/env/llm/adapter-pi-ai.d.ts +184 -0
  61. package/dist/env/llm/adapter.d.ts +100 -0
  62. package/dist/env/llm/factory.d.ts +13 -0
  63. package/dist/env/llm/hooks.d.ts +150 -0
  64. package/dist/env/llm/index.d.ts +16 -0
  65. package/dist/env/llm/index.js +2 -2
  66. package/dist/env/llm/invoke.d.ts +304 -0
  67. package/dist/env/llm/llm-cache.d.ts +38 -0
  68. package/dist/env/llm/llm.d.ts +263 -0
  69. package/dist/env/llm/opencode-session.d.ts +79 -0
  70. package/dist/env/llm/provider.d.ts +40 -0
  71. package/dist/env/llm/reasoning-defense.d.ts +104 -0
  72. package/dist/env/llm/tool-args-parser.d.ts +77 -0
  73. package/dist/env/llm/tool-schema.d.ts +54 -0
  74. package/dist/env/llm/transform.d.ts +57 -0
  75. package/dist/env/llm/types.d.ts +844 -0
  76. package/dist/env/log-trace/decorator.d.ts +88 -0
  77. package/dist/env/log-trace/index.d.ts +14 -0
  78. package/dist/env/log-trace/log-trace-component.d.ts +268 -0
  79. package/dist/env/log-trace/log-trace-config-registration.d.ts +25 -0
  80. package/dist/env/log-trace/logger.d.ts +83 -0
  81. package/dist/env/log-trace/opentelemetry/cli-propagation.d.ts +105 -0
  82. package/dist/env/log-trace/opentelemetry/mod.d.ts +24 -0
  83. package/dist/env/log-trace/opentelemetry/propagation-env.d.ts +81 -0
  84. package/dist/env/log-trace/opentelemetry/propagation.d.ts +79 -0
  85. package/dist/env/log-trace/opentelemetry/tracer-provider.d.ts +157 -0
  86. package/dist/env/log-trace/span-storage.d.ts +37 -0
  87. package/dist/env/log-trace/trace-context.d.ts +28 -0
  88. package/dist/env/log-trace/types.d.ts +127 -0
  89. package/dist/env/mcp/command-resolver.d.ts +12 -0
  90. package/dist/env/mcp/config.d.ts +103 -0
  91. package/dist/env/mcp/index.d.ts +13 -0
  92. package/dist/env/mcp/loader.d.ts +78 -0
  93. package/dist/env/mcp/mcp-component.d.ts +54 -0
  94. package/dist/env/mcp/mcp-config-registration.d.ts +19 -0
  95. package/dist/env/mcp/npm-prefix/index.d.ts +17 -0
  96. package/dist/env/mcp/scanner.d.ts +38 -0
  97. package/dist/env/mcp/tool/adapter.d.ts +32 -0
  98. package/dist/env/mcp/tool/index.d.ts +4 -0
  99. package/dist/env/mcp/types.d.ts +131 -0
  100. package/dist/env/memory/built-in/index.d.ts +41 -0
  101. package/dist/env/memory/built-in/recall-memory.d.ts +29 -0
  102. package/dist/env/memory/built-in/record-memory.d.ts +44 -0
  103. package/dist/env/memory/index.d.ts +10 -0
  104. package/dist/env/memory/memory-component.d.ts +114 -0
  105. package/dist/env/memory/memory-config-registration.d.ts +18 -0
  106. package/dist/env/memory/memory-config.d.ts +18 -0
  107. package/dist/env/memory/plugin/index.d.ts +16 -0
  108. package/dist/env/memory/plugin/memory-agent.d.ts +126 -0
  109. package/dist/env/memory/plugin/memory-manager.d.ts +71 -0
  110. package/dist/env/memory/plugin/memory-plugin.d.ts +103 -0
  111. package/dist/env/memory/plugin/recall-memory.d.ts +16 -0
  112. package/dist/env/memory/plugin/types.d.ts +75 -0
  113. package/dist/env/memory/tools/memory-agent-tools.d.ts +109 -0
  114. package/dist/env/memory/types.d.ts +80 -0
  115. package/dist/env/paths.d.ts +46 -0
  116. package/dist/env/plugin/bounty-cli-notification-channel.d.ts +60 -0
  117. package/dist/env/plugin/event-bus-notification-channel.d.ts +50 -0
  118. package/dist/env/plugin/index.d.ts +13 -0
  119. package/dist/env/plugin/lark-cli-notification-channel.d.ts +61 -0
  120. package/dist/env/plugin/notification-channel.d.ts +143 -0
  121. package/dist/env/plugin/plugin-component.d.ts +232 -0
  122. package/dist/env/plugin/types.d.ts +146 -0
  123. package/dist/env/prompt/index.d.ts +7 -0
  124. package/dist/env/prompt/index.js +2 -2
  125. package/dist/env/prompt/prompt-component.d.ts +194 -0
  126. package/dist/env/prompt/prompt-config-registration.d.ts +18 -0
  127. package/dist/env/prompt/prompt-store.d.ts +26 -0
  128. package/dist/env/prompt/prompts-index.d.ts +146 -0
  129. package/dist/env/prompt/renderer.d.ts +21 -0
  130. package/dist/env/prompt/types.d.ts +176 -0
  131. package/dist/env/session/hooks.d.ts +14 -0
  132. package/dist/env/session/index.d.ts +19 -0
  133. package/dist/env/session/index.js +4 -4
  134. package/dist/env/session/search-query-parser.d.ts +41 -0
  135. package/dist/env/session/session-component.d.ts +464 -0
  136. package/dist/env/session/session-config-registration.d.ts +18 -0
  137. package/dist/env/session/session-id.d.ts +26 -0
  138. package/dist/env/session/session-message-converter.d.ts +142 -0
  139. package/dist/env/session/session-store.d.ts +188 -0
  140. package/dist/env/session/storage/index.d.ts +5 -0
  141. package/dist/env/session/storage/index.js +3 -3
  142. package/dist/env/session/storage/memory.d.ts +119 -0
  143. package/dist/env/session/storage/sqlite.d.ts +108 -0
  144. package/dist/env/session/types.d.ts +705 -0
  145. package/dist/env/session-tree-stopper.d.ts +79 -0
  146. package/dist/env/skill/config.d.ts +13 -0
  147. package/dist/env/skill/index.d.ts +6 -0
  148. package/dist/env/skill/parser.d.ts +9 -0
  149. package/dist/env/skill/scanner.d.ts +25 -0
  150. package/dist/env/skill/skill-component.d.ts +89 -0
  151. package/dist/env/skill/skill-config-registration.d.ts +18 -0
  152. package/dist/env/skill/tool/index.d.ts +1 -0
  153. package/dist/env/skill/tool/skill-tool.d.ts +15 -0
  154. package/dist/env/skill/types.d.ts +61 -0
  155. package/dist/env/task/backend/index.d.ts +24 -0
  156. package/dist/env/task/backend/index.js +702 -0
  157. package/dist/env/task/backend/roy-sidecar-task-port.d.ts +148 -0
  158. package/dist/env/task/backend/sqlite-task-port.d.ts +28 -0
  159. package/dist/env/task/backend/task-store-backend.d.ts +107 -0
  160. package/dist/env/task/backend/types.d.ts +282 -0
  161. package/dist/env/task/delegate/bg-task-id-storage.d.ts +9 -0
  162. package/dist/env/task/delegate/delegate-tool.d.ts +681 -0
  163. package/dist/env/task/delegate/index.d.ts +8 -0
  164. package/dist/env/task/delegate/index.js +2 -2
  165. package/dist/env/task/delegate/process-registry.d.ts +58 -0
  166. package/dist/env/task/delegate/stop-tool.d.ts +12 -0
  167. package/dist/env/task/delegate/subagent-resolver.d.ts +25 -0
  168. package/dist/env/task/events/index.d.ts +7 -0
  169. package/dist/env/task/events/task-event-payloads.d.ts +101 -0
  170. package/dist/env/task/events/task-event-types.d.ts +23 -0
  171. package/dist/env/task/hooks/contexts.d.ts +191 -0
  172. package/dist/env/task/hooks/index.d.ts +7 -0
  173. package/dist/env/task/hooks/task-hook-points.d.ts +42 -0
  174. package/dist/env/task/index.d.ts +7 -0
  175. package/dist/env/task/index.js +3 -3
  176. package/dist/env/task/plugins/auto-task-plugin.d.ts +38 -0
  177. package/dist/env/task/plugins/card-chat-routing.d.ts +88 -0
  178. package/dist/env/task/plugins/fake-user-message-helper.d.ts +90 -0
  179. package/dist/env/task/plugins/index.d.ts +8 -0
  180. package/dist/env/task/plugins/index.js +4 -4
  181. package/dist/env/task/plugins/lark-card-action-handler.d.ts +166 -0
  182. package/dist/env/task/plugins/lark-card-patch-notifier.d.ts +600 -0
  183. package/dist/env/task/plugins/lark-cli-task-notify-plugin.d.ts +231 -0
  184. package/dist/env/task/plugins/max-iteration-reminder-plugin.d.ts +112 -0
  185. package/dist/env/task/plugins/per-task-group-chat-plugin.d.ts +561 -0
  186. package/dist/env/task/plugins/task-tag-plugin.d.ts +70 -0
  187. package/dist/env/task/plugins/workflow-extractor-agent.d.ts +43 -0
  188. package/dist/env/task/registry-hook-installer.d.ts +43 -0
  189. package/dist/env/task/storage/index.d.ts +5 -0
  190. package/dist/env/task/storage/migrations/001_add_project_path_context.d.ts +14 -0
  191. package/dist/env/task/storage/migrations/002_add_task_type.d.ts +14 -0
  192. package/dist/env/task/storage/migrations/003_add_process_description.d.ts +20 -0
  193. package/dist/env/task/storage/migrations/004_rename_action_to_milestone.d.ts +37 -0
  194. package/dist/env/task/storage/migrations/005_convert_blob_description_to_text.d.ts +51 -0
  195. package/dist/env/task/storage/sqlite-task-store.d.ts +241 -0
  196. package/dist/env/task/tag-service.d.ts +138 -0
  197. package/dist/env/task/task-child-context.d.ts +70 -0
  198. package/dist/env/task/task-component.d.ts +270 -0
  199. package/dist/env/task/task-config-registration.d.ts +19 -0
  200. package/dist/env/task/task-creation-registry.d.ts +181 -0
  201. package/dist/env/task/task-reuse-context.d.ts +52 -0
  202. package/dist/env/task/task-reuse-registry.d.ts +31 -0
  203. package/dist/env/task/tools/batch-archive-tool.d.ts +9 -0
  204. package/dist/env/task/tools/batch-delete-tool.d.ts +9 -0
  205. package/dist/env/task/tools/complete-tool.d.ts +12 -0
  206. package/dist/env/task/tools/create-tool.d.ts +6 -0
  207. package/dist/env/task/tools/delete-tool.d.ts +6 -0
  208. package/dist/env/task/tools/get-tool.d.ts +6 -0
  209. package/dist/env/task/tools/index.d.ts +13 -0
  210. package/dist/env/task/tools/list-tool.d.ts +6 -0
  211. package/dist/env/task/tools/operation/create-tool.d.ts +12 -0
  212. package/dist/env/task/tools/operation/delete-tool.d.ts +6 -0
  213. package/dist/env/task/tools/operation/get-tool.d.ts +6 -0
  214. package/dist/env/task/tools/operation/index.d.ts +8 -0
  215. package/dist/env/task/tools/operation/list-tool.d.ts +6 -0
  216. package/dist/env/task/tools/operation/operation-types.d.ts +225 -0
  217. package/dist/env/task/tools/operation/update-tool.d.ts +6 -0
  218. package/dist/env/task/tools/search-tool.d.ts +9 -0
  219. package/dist/env/task/tools/task-tree-tool.d.ts +65 -0
  220. package/dist/env/task/tools/task-types.d.ts +255 -0
  221. package/dist/env/task/tools/update-tool.d.ts +6 -0
  222. package/dist/env/task/types.d.ts +290 -0
  223. package/dist/env/tool/built-in/bash-effect.d.ts +36 -0
  224. package/dist/env/tool/built-in/bash.d.ts +16 -0
  225. package/dist/env/tool/built-in/echo.d.ts +7 -0
  226. package/dist/env/tool/built-in/edit-file.d.ts +6 -0
  227. package/dist/env/tool/built-in/glob.d.ts +6 -0
  228. package/dist/env/tool/built-in/grep.d.ts +6 -0
  229. package/dist/env/tool/built-in/index.d.ts +39 -0
  230. package/dist/env/tool/built-in/query-background-process-tool.d.ts +113 -0
  231. package/dist/env/tool/built-in/read-file.d.ts +5 -0
  232. package/dist/env/tool/built-in/understand-image.d.ts +59 -0
  233. package/dist/env/tool/built-in/write-file.d.ts +5 -0
  234. package/dist/env/tool/index.d.ts +16 -0
  235. package/dist/env/tool/registry.d.ts +61 -0
  236. package/dist/env/tool/tool-component.d.ts +242 -0
  237. package/dist/env/tool/tool-config-registration.d.ts +18 -0
  238. package/dist/env/tool/types.d.ts +274 -0
  239. package/dist/env/tool/validator.d.ts +14 -0
  240. package/dist/env/types.d.ts +184 -0
  241. package/dist/env/workflow/decorators/decorator-node.d.ts +76 -0
  242. package/dist/env/workflow/decorators/edge.d.ts +42 -0
  243. package/dist/env/workflow/decorators/index.d.ts +13 -0
  244. package/dist/env/workflow/decorators/node-as.d.ts +40 -0
  245. package/dist/env/workflow/decorators/workflow.d.ts +30 -0
  246. package/dist/env/workflow/engine/dag-manager.d.ts +176 -0
  247. package/dist/env/workflow/engine/engine.d.ts +440 -0
  248. package/dist/env/workflow/engine/event-bus.d.ts +54 -0
  249. package/dist/env/workflow/engine/executor.d.ts +122 -0
  250. package/dist/env/workflow/engine/index.d.ts +15 -0
  251. package/dist/env/workflow/engine/index.js +2 -2
  252. package/dist/env/workflow/engine/node-registry.d.ts +159 -0
  253. package/dist/env/workflow/engine/scheduler.d.ts +164 -0
  254. package/dist/env/workflow/extractor/workflow-converter.d.ts +55 -0
  255. package/dist/env/workflow/fixtures.d.ts +401 -0
  256. package/dist/env/workflow/hooks/index.d.ts +4 -0
  257. package/dist/env/workflow/hooks/workflow-hook-points.d.ts +161 -0
  258. package/dist/env/workflow/index.d.ts +30 -0
  259. package/dist/env/workflow/index.js +9 -9
  260. package/dist/env/workflow/metadata/keys.d.ts +6 -0
  261. package/dist/env/workflow/nodes/agent-component-adapter.d.ts +175 -0
  262. package/dist/env/workflow/nodes/agent-node.d.ts +206 -0
  263. package/dist/env/workflow/nodes/ask-user-node.d.ts +66 -0
  264. package/dist/env/workflow/nodes/condition-node.d.ts +39 -0
  265. package/dist/env/workflow/nodes/index.d.ts +8 -0
  266. package/dist/env/workflow/nodes/index.js +1 -1
  267. package/dist/env/workflow/nodes/merge-node.d.ts +40 -0
  268. package/dist/env/workflow/nodes/python-call-node.d.ts +95 -0
  269. package/dist/env/workflow/nodes/skill-node.d.ts +29 -0
  270. package/dist/env/workflow/nodes/tool-node.d.ts +64 -0
  271. package/dist/env/workflow/nodes/workflow-node.d.ts +118 -0
  272. package/dist/env/workflow/plugins/index.d.ts +6 -0
  273. package/dist/env/workflow/plugins/index.js +2 -2
  274. package/dist/env/workflow/plugins/lark-cli-workflow-notify-plugin.d.ts +107 -0
  275. package/dist/env/workflow/plugins/workflow-json-output-plugin.d.ts +166 -0
  276. package/dist/env/workflow/runtime/runtime-cancellation-scope.d.ts +121 -0
  277. package/dist/env/workflow/service/index.d.ts +9 -0
  278. package/dist/env/workflow/service/registry.d.ts +37 -0
  279. package/dist/env/workflow/service/workflow-service.d.ts +422 -0
  280. package/dist/env/workflow/storage/index.d.ts +11 -0
  281. package/dist/env/workflow/storage/mock-repositories.d.ts +106 -0
  282. package/dist/env/workflow/storage/safe-json.d.ts +62 -0
  283. package/dist/env/workflow/storage/sqlite.d.ts +57 -0
  284. package/dist/env/workflow/storage/tag-repo.d.ts +65 -0
  285. package/dist/env/workflow/storage/workflow-repo.d.ts +161 -0
  286. package/dist/env/workflow/tools/ask-user-tool.d.ts +35 -0
  287. package/dist/env/workflow/tools/index.d.ts +16 -0
  288. package/dist/env/workflow/tools/index.js +6 -6
  289. package/dist/env/workflow/tools/run-workflow.d.ts +130 -0
  290. package/dist/env/workflow/tools/submit-json-output-tool.d.ts +38 -0
  291. package/dist/env/workflow/tools/workflow-add-tool.d.ts +47 -0
  292. package/dist/env/workflow/tools/workflow-get-tool.d.ts +29 -0
  293. package/dist/env/workflow/tools/workflow-list-tool.d.ts +55 -0
  294. package/dist/env/workflow/tools/workflow-run-status-tool.d.ts +26 -0
  295. package/dist/env/workflow/tools/workflow-run-stop-tool.d.ts +29 -0
  296. package/dist/env/workflow/tools/workflow-search-tool.d.ts +33 -0
  297. package/dist/env/workflow/tools/workflow-tag-list-tool.d.ts +59 -0
  298. package/dist/env/workflow/tools/workflow-validate-tool.d.ts +69 -0
  299. package/dist/env/workflow/types/context.d.ts +17 -0
  300. package/dist/env/workflow/types/decorators-types.d.ts +182 -0
  301. package/dist/env/workflow/types/edge.d.ts +33 -0
  302. package/dist/env/workflow/types/event.d.ts +869 -0
  303. package/dist/env/workflow/types/index.d.ts +16 -0
  304. package/dist/env/workflow/types/run.d.ts +254 -0
  305. package/dist/env/workflow/types/workflow-error.d.ts +79 -0
  306. package/dist/env/workflow/types/workflow-hil.d.ts +57 -0
  307. package/dist/env/workflow/types/workflow-message.d.ts +193 -0
  308. package/dist/env/workflow/types/workflow-session.d.ts +17 -0
  309. package/dist/env/workflow/types/workflow.d.ts +654 -0
  310. package/dist/env/workflow/types_compat.d.ts +10 -0
  311. package/dist/env/workflow/utils/agent-session-metadata.d.ts +48 -0
  312. package/dist/env/workflow/utils/build-agent-node-output.d.ts +11 -0
  313. package/dist/env/workflow/utils/create-workflow.d.ts +35 -0
  314. package/dist/env/workflow/utils/dependency-prescan.d.ts +67 -0
  315. package/dist/env/workflow/utils/execution-state.d.ts +46 -0
  316. package/dist/env/workflow/utils/extract-agent-json-output.d.ts +6 -0
  317. package/dist/env/workflow/utils/index.d.ts +14 -0
  318. package/dist/env/workflow/utils/index.js +1 -1
  319. package/dist/env/workflow/utils/json-schema-to-zod.d.ts +23 -0
  320. package/dist/env/workflow/utils/node-id-utils.d.ts +20 -0
  321. package/dist/env/workflow/utils/node-output-contracts.d.ts +137 -0
  322. package/dist/env/workflow/utils/node-registry-helper.d.ts +36 -0
  323. package/dist/env/workflow/utils/output-schema-hint.d.ts +7 -0
  324. package/dist/env/workflow/utils/parse-agent-output-config.d.ts +9 -0
  325. package/dist/env/workflow/utils/recovery-validator.d.ts +30 -0
  326. package/dist/env/workflow/utils/redact-command-secrets.d.ts +70 -0
  327. package/dist/env/workflow/utils/sensitive-redact.d.ts +37 -0
  328. package/dist/env/workflow/utils/session-parser.d.ts +23 -0
  329. package/dist/env/workflow/utils/session-recovery.d.ts +122 -0
  330. package/dist/env/workflow/utils/shell-dialect-lint.d.ts +75 -0
  331. package/dist/env/workflow/utils/template-contract-validator.d.ts +87 -0
  332. package/dist/env/workflow/utils/template-resolver.d.ts +285 -0
  333. package/dist/env/workflow/utils/validate-workflow-definition.d.ts +79 -0
  334. package/dist/env/workflow/utils/validation-rules.d.ts +103 -0
  335. package/dist/env/workflow/utils/workflow-message-metadata.d.ts +20 -0
  336. package/dist/env/workflow/utils/workflow-sanitize.d.ts +51 -0
  337. package/dist/env/workflow/workflow-component.d.ts +138 -0
  338. package/dist/index.d.ts +59 -0
  339. package/dist/index.js +21 -21
  340. package/dist/shared/@ai-setting/{roy-agent-core-stnddvx9.js → roy-agent-core-12d2xap8.js} +1 -1
  341. package/dist/shared/@ai-setting/{roy-agent-core-pk1b3kvf.js → roy-agent-core-2b8jtv7m.js} +1 -1
  342. package/dist/shared/@ai-setting/{roy-agent-core-x8n1r7h4.js → roy-agent-core-2bscfrr1.js} +188 -7
  343. package/dist/shared/@ai-setting/{roy-agent-core-gdsqp6j8.js → roy-agent-core-6masakz4.js} +45 -0
  344. package/dist/shared/@ai-setting/{roy-agent-core-vvxb9522.js → roy-agent-core-6qxh4xrm.js} +67 -6
  345. package/dist/shared/@ai-setting/{roy-agent-core-h93v6p6y.js → roy-agent-core-7qy3nffr.js} +2 -2
  346. package/dist/shared/@ai-setting/{roy-agent-core-s214vmmd.js → roy-agent-core-8eqngasy.js} +2 -2
  347. package/dist/shared/@ai-setting/{roy-agent-core-brwzs8wf.js → roy-agent-core-9h72sk1n.js} +1 -1
  348. package/dist/shared/@ai-setting/{roy-agent-core-na73mym1.js → roy-agent-core-a4vzsn0g.js} +212 -1
  349. package/dist/shared/@ai-setting/{roy-agent-core-35s1w7tc.js → roy-agent-core-aer5kw1j.js} +142 -70
  350. package/dist/shared/@ai-setting/{roy-agent-core-j8e92gj8.js → roy-agent-core-b5ew8t0k.js} +0 -59
  351. package/dist/shared/@ai-setting/{roy-agent-core-rcfewbzr.js → roy-agent-core-cd62e9p1.js} +1 -1
  352. package/dist/shared/@ai-setting/{roy-agent-core-39xejr39.js → roy-agent-core-e2z1etk4.js} +1 -1
  353. package/dist/shared/@ai-setting/{roy-agent-core-pkpkctvf.js → roy-agent-core-g36jevrk.js} +14 -183
  354. package/dist/shared/@ai-setting/{roy-agent-core-ezgsem94.js → roy-agent-core-j2nvedt6.js} +465 -128
  355. package/dist/shared/@ai-setting/{roy-agent-core-p2r27era.js → roy-agent-core-mxdc756a.js} +1 -1
  356. package/dist/shared/@ai-setting/{roy-agent-core-p8ak03s0.js → roy-agent-core-w527pcpe.js} +293 -42
  357. package/dist/shared/@ai-setting/{roy-agent-core-3tv1q6f2.js → roy-agent-core-ytr2w0vb.js} +2 -2
  358. package/dist/shared/@ai-setting/{roy-agent-core-yd21n6c7.js → roy-agent-core-zvemdfx5.js} +1 -1
  359. package/dist/test-utils/child-process-mock.d.ts +73 -0
  360. package/dist/util/process/process-tree-killer.d.ts +67 -0
  361. package/dist/utils/id.d.ts +11 -0
  362. package/dist/utils/loose-json.d.ts +30 -0
  363. package/dist/utils/media.d.ts +70 -0
  364. package/dist/utils/temp-file-manager/index.d.ts +99 -0
  365. package/package.json +5 -3
  366. /package/dist/shared/@ai-setting/{roy-agent-core-zy3hqfwg.js → roy-agent-core-0hq21px2.js} +0 -0
  367. /package/dist/shared/@ai-setting/{roy-agent-core-0cfaqnz9.js → roy-agent-core-k25gv86p.js} +0 -0
@@ -7,6 +7,157 @@ import {
7
7
  __legacyDecorateClassTS
8
8
  } from "./roy-agent-core-fs0mn2jk.js";
9
9
 
10
+ // src/env/workflow/utils/redact-command-secrets.ts
11
+ function replaceTrailing(match, raw) {
12
+ if (raw.length === 0)
13
+ return match;
14
+ const idx = match.lastIndexOf(raw);
15
+ if (idx < 0)
16
+ return match;
17
+ return match.slice(0, idx) + MASK;
18
+ }
19
+ function looksLikeCredentialCommand(command) {
20
+ return PASSWORD_FLAG_TOOL_RE.test(command);
21
+ }
22
+ function looksLikeShortATool(command) {
23
+ return SHORT_A_TOOL_RE.test(command);
24
+ }
25
+ function looksLikePasswordValue(value) {
26
+ if (value.length === 0)
27
+ return false;
28
+ if (PATH_LIKE_RE.test(value))
29
+ return false;
30
+ if (NUMERIC_RE.test(value))
31
+ return false;
32
+ return true;
33
+ }
34
+ function redactCommandSecrets(command) {
35
+ if (!command)
36
+ return command;
37
+ let out = command;
38
+ out = out.replace(AUTH_SCHEME_RE, (match, prefix, scheme, value) => isMasked(value) ? match : `${prefix}${scheme} ${MASK}`);
39
+ out = out.replace(URL_USERINFO_RE, (match, head, value, at) => isMasked(value) ? match : `${head}${MASK}${at}`);
40
+ out = out.replace(URL_QUERY_RE, (match, amp, name, eq, value) => {
41
+ if (!SENSITIVE_QUERY_KEY_RE.test(name))
42
+ return match;
43
+ if (isMasked(value))
44
+ return match;
45
+ return `${amp}${name}${eq}${MASK}`;
46
+ });
47
+ out = out.replace(SHORT_U_RE, (match, lead, flag, user, pass) => {
48
+ if (isMasked(pass))
49
+ return match;
50
+ const name = user.slice(0, -1);
51
+ if (UID_GID_RE.test(name) && UID_GID_RE.test(pass))
52
+ return match;
53
+ if (name === pass)
54
+ return match;
55
+ return `${lead}${flag}${user}${MASK}`;
56
+ });
57
+ out = out.replace(LONG_USER_RE, (match, lead, flag, user, pass) => {
58
+ if (isMasked(pass))
59
+ return match;
60
+ const name = user.slice(0, -1);
61
+ if (UID_GID_RE.test(name) && UID_GID_RE.test(pass))
62
+ return match;
63
+ if (name === pass)
64
+ return match;
65
+ return `${lead}${flag}${user}${MASK}`;
66
+ });
67
+ if (looksLikeCredentialCommand(command)) {
68
+ const maskPassword = (match, lead, flag, dq, sq, bare) => {
69
+ const value = dq ?? sq ?? bare ?? "";
70
+ if (isMasked(value) || !looksLikePasswordValue(value))
71
+ return match;
72
+ if (dq !== undefined)
73
+ return `${lead}${flag}"${MASK}"`;
74
+ if (sq !== undefined)
75
+ return `${lead}${flag}'${MASK}'`;
76
+ return lead + flag + MASK;
77
+ };
78
+ out = out.replace(SHORT_P_SPACED_RE, maskPassword);
79
+ out = out.replace(SHORT_P_ATTACHED_RE, maskPassword);
80
+ }
81
+ out = out.replace(AUTH_FAILURE_CRED_RE, (match, head, user, pass) => isMasked(pass) ? match : `${head}${user}:${MASK}`);
82
+ out = out.replace(AWS_SET_SECRET_RE, (match, key, value) => isMasked(value) ? match : `${key} ${MASK}`);
83
+ if (looksLikeShortATool(command)) {
84
+ out = out.replace(SHORT_A_SECRET_RE, (match, lead, flag, value) => isMasked(value) || !looksLikePasswordValue(value) ? match : `${lead}${flag}${MASK}`);
85
+ out = out.replace(SHORT_A_ATTACHED_RE, (match, lead, flag, value) => isMasked(value) || !looksLikePasswordValue(value) ? match : `${lead}${flag}${MASK}`);
86
+ }
87
+ out = out.replace(ASSIGNMENT_RE, (match, key, dq, sq, bare) => {
88
+ if (!SENSITIVE_KEY_RE.test(key))
89
+ return match;
90
+ const value = dq ?? sq ?? bare ?? "";
91
+ if (value === MASK)
92
+ return match;
93
+ const isAuthHeaderKey = /^(?:proxy-)?authorization$/i.test(key);
94
+ if (isAuthHeaderKey && AUTH_SCHEME_WORD_RE.test(value))
95
+ return match;
96
+ const raw = dq !== undefined ? `"${value}"` : sq !== undefined ? `'${value}'` : value;
97
+ return replaceTrailing(match, raw);
98
+ });
99
+ out = out.replace(FLAG_RE, (match, lead, flag, _sep, dq, sq, bare) => {
100
+ if (!SENSITIVE_KEY_RE.test(flag))
101
+ return match;
102
+ const value = dq ?? sq ?? bare ?? "";
103
+ if (value === MASK)
104
+ return match;
105
+ const raw = dq !== undefined ? `"${value}"` : sq !== undefined ? `'${value}'` : value;
106
+ return replaceTrailing(match, raw);
107
+ });
108
+ return out;
109
+ }
110
+ function summarizeCommand(command, maxLen = 120) {
111
+ if (!command)
112
+ return "";
113
+ const collapsed = command.replace(/\s+/g, " ").trim();
114
+ if (collapsed.length <= maxLen)
115
+ return collapsed;
116
+ return `${collapsed.slice(0, maxLen)}…`;
117
+ }
118
+ var MASK = "[REDACTED]", SENSITIVE_KEY_RE, BARE_VALUE = `[^\\s;&|]+[^\\s;&|"'<>()]|[^\\s;&|]`, ASSIGNMENT_RE, FLAG_RE, AUTH_SCHEME_RE, SENSITIVE_QUERY_KEY_RE, URL_QUERY_RE, URL_USERINFO_RE, AUTH_FAILURE_CRED_RE, SHORT_U_RE, LONG_USER_RE, UID_GID_RE, SHORT_P_SPACED_RE, SHORT_P_ATTACHED_RE, isMasked = (value) => (value ?? "").trim() === MASK, AUTH_SCHEME_WORD_RE, PASSWORD_FLAG_TOOL_RE, SHORT_A_TOOL_RE, SHORT_A_SECRET_RE, SHORT_A_ATTACHED_RE, AWS_SET_SECRET_RE, PATH_LIKE_RE, NUMERIC_RE;
119
+ var init_redact_command_secrets = __esm(() => {
120
+ SENSITIVE_KEY_RE = /(?:pass(?:word|wd|phrase)?|token|secret|api[_-]?key|apikey|credential|authorization|private[_-]?key)/i;
121
+ ASSIGNMENT_RE = new RegExp(`(?<![A-Za-z0-9_.-])([A-Za-z0-9_][A-Za-z0-9_.-]*)\\s*[=:]\\s*(?:"([^"]*)"|'([^']*)'|(${BARE_VALUE}))`, "g");
122
+ FLAG_RE = new RegExp(`(^|[\\s])(--?[A-Za-z0-9][A-Za-z0-9_.-]*)(=\\s*|\\s+)(?:"([^"]*)"|'([^']*)'|(${BARE_VALUE}))`, "g");
123
+ AUTH_SCHEME_RE = new RegExp(`((?:Proxy-)?Authorization["']?\\s*[:=]\\s*["']?\\s*)(Bearer|Basic|Token|Digest)\\s+(${BARE_VALUE}|\\[REDACTED\\])`, "gi");
124
+ SENSITIVE_QUERY_KEY_RE = new RegExp([
125
+ "^pass(?:word|wd)?$",
126
+ "^pwd$",
127
+ "^token$",
128
+ "^access[_-]?token$",
129
+ "^refresh[_-]?token$",
130
+ "^id[_-]?token$",
131
+ "^secret$",
132
+ "^client[_-]?secret$",
133
+ "^api[_-]?key$",
134
+ "^apikey$",
135
+ "^credential$",
136
+ "^credentials$",
137
+ "^sig$",
138
+ "^signature$",
139
+ "^auth$",
140
+ "^authorization$",
141
+ "^private[_-]?key$"
142
+ ].join("|"), "i");
143
+ URL_QUERY_RE = /([?&])([A-Za-z_][A-Za-z0-9_.-]*)(=)([^&#\s"']+)/g;
144
+ URL_USERINFO_RE = /(\/\/[^/\s:@]+:)([^/\s"']+)(@)/g;
145
+ AUTH_FAILURE_CRED_RE = /(\b(?:auth(?:entication|orization)?|login|credentials?|password|passwd|token)\b[^\n:]{0,40}?[\s"'])([A-Za-z0-9_.-]{1,64}):([^\s;&|"'<>]{3,})/gi;
146
+ SHORT_U_RE = /(^|\s)(-u\s+)([^:\s]+:)([^\s;&|"']+)/g;
147
+ LONG_USER_RE = /(^|\s)(--user(?:=|\s+))([^:\s]+:)([^\s;&|"']+)/g;
148
+ UID_GID_RE = /^\d+$/;
149
+ SHORT_P_SPACED_RE = new RegExp(`(^|\\s)(-p\\s+)(?:"([^"]*)"|'([^']*)'|(${BARE_VALUE}))`, "g");
150
+ SHORT_P_ATTACHED_RE = new RegExp(`(^|\\s)(-p)(?:"([^"]*)"|'([^']*)'|(${BARE_VALUE}))`, "g");
151
+ AUTH_SCHEME_WORD_RE = /^(?:bearer|basic|token|digest|negotiate|ntlm)$/i;
152
+ PASSWORD_FLAG_TOOL_RE = /(?<![\w/.-])(?:docker\s+login|helm\s+(?:registry\s+)?login|mysql|mysqldump|mariadb|sshpass)\b/i;
153
+ SHORT_A_TOOL_RE = /(?<![\w/.-])redis-cli\b/i;
154
+ SHORT_A_SECRET_RE = new RegExp(`(^|\\s)(-a\\s+)(?!-)(${BARE_VALUE})`, "g");
155
+ SHORT_A_ATTACHED_RE = new RegExp(`(^|\\s)(-a)(${BARE_VALUE})`, "g");
156
+ AWS_SET_SECRET_RE = new RegExp(`\\b((?:aws[_-])?(?:secret[_-]?access[_-]?key|session[_-]?token))\\s+(?!set\\b)([^=\\s;&|][^\\s;&|]*[^\\s;&|"'<>()]|[^=\\s;&|])`, "gi");
157
+ PATH_LIKE_RE = /^(?:\/|\.\/|\.\.\/|~\/)/;
158
+ NUMERIC_RE = /^\d+$/;
159
+ });
160
+
10
161
  // src/env/workflow/nodes/tool-node.ts
11
162
  function isPositiveNumber(v) {
12
163
  return typeof v === "number" && Number.isFinite(v) && v > 0;
@@ -23,9 +174,39 @@ function getToolTimeoutMs(input, config) {
23
174
  }
24
175
  return DEFAULT_TOOL_TIMEOUT_MS;
25
176
  }
26
- var DEFAULT_TOOL_TIMEOUT_MS = 60000, ToolNode;
177
+ function redactTail(text, tailChars) {
178
+ const window = text.length > tailChars + REDACT_TAIL_SLACK ? text.slice(-(tailChars + REDACT_TAIL_SLACK)) : text;
179
+ return redactCommandSecrets(window).trim().slice(-tailChars).trim();
180
+ }
181
+ function redactErrorForOutput(err) {
182
+ const message = redactCommandSecrets(err.message);
183
+ const stack = typeof err.stack === "string" ? redactCommandSecrets(err.stack) : undefined;
184
+ if (message === err.message && stack === err.stack)
185
+ return err;
186
+ const clone = new Error(message, { cause: err });
187
+ clone.name = err.name;
188
+ if (stack)
189
+ clone.stack = stack;
190
+ return clone;
191
+ }
192
+ function buildExitCodeError(exitCode, md, toolInput) {
193
+ const parts = [`Tool exited with code ${exitCode}`];
194
+ const rawCommand = toolInput && typeof toolInput === "object" ? toolInput.command ?? toolInput.cmd : undefined;
195
+ if (typeof rawCommand === "string" && rawCommand.trim().length > 0) {
196
+ const safe = summarizeCommand(redactCommandSecrets(rawCommand));
197
+ if (safe.length > 0) {
198
+ parts.push(`command: ${safe}`);
199
+ }
200
+ }
201
+ const stdout = typeof md.stdout === "string" ? md.stdout : "";
202
+ const stdoutTail = redactTail(stdout, 300);
203
+ parts.push(stdoutTail.length > 0 ? `stdout tail: ${stdoutTail}` : "(no stdout)");
204
+ return parts.join(" | ");
205
+ }
206
+ var DEFAULT_TOOL_TIMEOUT_MS = 60000, REDACT_TAIL_SLACK = 4096, ToolNode;
27
207
  var init_tool_node = __esm(() => {
28
208
  init_decorator();
209
+ init_redact_command_secrets();
29
210
  ToolNode = class ToolNode {
30
211
  definition;
31
212
  toolRegistry;
@@ -125,7 +306,7 @@ var init_tool_node = __esm(() => {
125
306
  }
126
307
  }
127
308
  const extractedOutput = this.extractFromWrapper(output);
128
- const wrapperError = this.extractErrorFromWrapper(output);
309
+ const wrapperError = this.extractErrorFromWrapper(output, input);
129
310
  return {
130
311
  output: extractedOutput,
131
312
  error: wrapperError,
@@ -134,7 +315,7 @@ var init_tool_node = __esm(() => {
134
315
  } catch (error) {
135
316
  return {
136
317
  output: undefined,
137
- error: error instanceof Error ? error : new Error(String(error)),
318
+ error: error instanceof Error ? redactErrorForOutput(error) : new Error(redactCommandSecrets(String(error))),
138
319
  durationMs: Date.now() - startTime
139
320
  };
140
321
  }
@@ -159,7 +340,7 @@ var init_tool_node = __esm(() => {
159
340
  }
160
341
  return result;
161
342
  }
162
- extractErrorFromWrapper(value) {
343
+ extractErrorFromWrapper(value, toolInput) {
163
344
  if (value === null || value === undefined) {
164
345
  return;
165
346
  }
@@ -172,10 +353,10 @@ var init_tool_node = __esm(() => {
172
353
  }
173
354
  const err = obj.error;
174
355
  if (typeof err === "string" && err.length > 0) {
175
- return err;
356
+ return redactCommandSecrets(err);
176
357
  }
177
358
  if (err instanceof Error) {
178
- return err;
359
+ return redactErrorForOutput(err);
179
360
  }
180
361
  const md = obj.metadata;
181
362
  if (md) {
@@ -185,7 +366,7 @@ var init_tool_node = __esm(() => {
185
366
  }
186
367
  if (typeof md.exit_code === "number" && md.exit_code !== 0) {
187
368
  const stderr = typeof md.stderr === "string" ? md.stderr : "";
188
- return stderr.length > 0 ? stderr : `Tool exited with code ${md.exit_code}`;
369
+ return stderr.length > 0 ? redactCommandSecrets(stderr) : buildExitCodeError(md.exit_code, md, toolInput);
189
370
  }
190
371
  }
191
372
  return `Tool execution failed (success=false, no error message)`;
@@ -1548,6 +1548,28 @@ workflow-creator 是**多轮对话式**协作。每个阶段都可能需要 ask
1548
1548
  - ❌ **禁止**对 \`tool\` 节点写深层路径(如 \`{{nodes.bash-node.output.foo}}\`)—— tool 输出常是字符串,无法再取属性
1549
1549
  - ✅ 存疑时一律退回 \`.output\`,或用 \`{{nodes.X.output}}\` 打印后**人肉核对**
1550
1550
 
1551
+ ### 阶段 4.6: 单节点冒烟前置 (Per-node Standalone Smoke) \uD83E\uDDEA
1552
+
1553
+ > **依据 Task #4385 §3.4**:历史失败中,大量节点是**在整条 workflow 里第一次被执行**的 ——
1554
+ > 脚本名拼错、产物目录不存在、命令依赖 \`cd\`、参数没传进去…… 一个坏节点就烧掉整轮 run,
1555
+ > 然后你在整条链路的噪音里排障。**先把每个节点单独跑通,再拼成 DAG。**
1556
+
1557
+ **在把 YAML 组装/注册之前,对每一个 \`tool\` / \`pythonCall\` / \`skill\` 节点逐个做单节点冒烟:**
1558
+
1559
+ 1. 用 \`bash\` 把该节点的 \`config.command\`(或 \`config.script\` / \`args\`)**原样**执行一次。
1560
+ - 变量先替换成真实值再跑(不要留着 \`{{input.x}}\` 跑,那验不出东西)
1561
+ - 逐个节点跑,**不是**跑整条链路
1562
+ 2. 三项全绿才算该节点通过:
1563
+ - ✅ **exit code = 0**(非 0 立刻停下修,不要往后拼)
1564
+ - ✅ **产物/目录真实存在**(脚本声称会写出的文件、目录、wheel、日志,用 \`ls\` 核实)
1565
+ - ✅ **输出非空且含预期标记**(\`grep\` 你后面要引用的那个标记,命中才算通)
1566
+ 3. 任何一项红了 → **先修这个节点**(改路径 / 改命令 / 改脚本),修好重跑,**不要**带着红灯继续组装。
1567
+
1568
+ **为什么不能省**:\`workflow_validate\` 只校验 DAG 结构 + 模板引用契约,它**看不到**
1569
+ "这个 shell 命令在这个 cwd 下到底能不能跑通"。单节点冒烟是唯一廉价、快速、可重复的补位。
1570
+
1571
+ **通过后**记录一张自检表(节点 id → exit code / 产物 / 标记),写进最终报告。
1572
+
1551
1573
  ### 阶段 5: 迭代验证 (Iterative Validate) \uD83D\uDD01
1552
1574
 
1553
1575
  调用 \`workflow_validate\`,它返回 \`{ valid, errors, warnings, infos, errorCount, warningCount }\`。
@@ -1601,6 +1623,29 @@ workflow-creator 是**多轮对话式**协作。每个阶段都可能需要 ask
1601
1623
  **未通过冒烟 → 禁止 \`task_complete\`**:回到阶段 4 改 YAML,重跑,直到通过;或明确报告失败原因
1602
1624
  (**不得**用"应该没问题"之类的措辞声称通过)。
1603
1625
 
1626
+ #### \uD83D\uDEAB 手动补跑 ≠ 真跑(依据 Task #4385 §3.5)
1627
+
1628
+ workflow run 失败后,**手动**把某个节点的命令再敲一遍、看到它成功了,**不算**该节点被验证。
1629
+
1630
+ - ❌ 手动补跑的结果**不得计入** PASS 计数,也**不得**作为 "节点没问题" 的依据
1631
+ - ❌ 不得因为"手动跑通了"就跳过修 YAML / 重跑 workflow
1632
+ - ✅ 手动作业只能用来**定位原因**;结论必须靠**重跑 workflow** 得出
1633
+ - ✅ 若最终确实没能在 workflow 内验证某节点,结论里必须显式标注
1634
+ **「⚠️ 该节点未经 workflow run 验证」**,与真正通过的节点分开列
1635
+
1636
+ > 为什么:手动跑不经过模板解析、依赖排序、引擎超时与 fail-fast。
1637
+ > 一条在 shell 里通的命令,在节点里完全可能因为 \`{{}}\` 解析成空串而"成功但空转"。
1638
+
1639
+ #### \uD83D\uDD0D 归因:先分清「超时」与「别的节点先 fail-fast」(依据 Task #4385 §5)
1640
+
1641
+ 说"某个节点超时了"之前,**必须先证明没有其他节点先失败**。
1642
+
1643
+ - 引擎是 **fail-fast** 的:任一节点失败会立刻收尾整个 run,**尚未跑完的节点看起来就像"卡住/超时"**
1644
+ - 因此**先排除**:\`roy-agent debug trace <trace_id>\` 里是否已有**其它节点**的失败 span / error
1645
+ - 只有在确认 "无其它节点先失败" 之后,才可以判断为真超时,再去看该节点自己的 span 耗时与 stdout
1646
+ - ❌ 不要把 fail-fast 的连带中止当成超时去"修超时参数" —— 这会让你在错误的节点上白改几轮
1647
+ (历史教训:#4361 / #4366 连续两轮误判)
1648
+
1604
1649
  > \uD83D\uDEAB **绝不允许用 \`workflow update\` 绕过冒烟验证**(历史上真实节点版本 v1.1.0/v1.2.0 就是走
1605
1650
  > \`workflow update\` 注册的,完全绕过了 validate 与冒烟)。update 后**同样必须**重跑阶段 5 + 5.5。
1606
1651
 
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  isValidSessionId
3
- } from "./roy-agent-core-yd21n6c7.js";
3
+ } from "./roy-agent-core-zvemdfx5.js";
4
4
  import {
5
5
  TAG_MAX_COUNT,
6
6
  TAG_MIN_COUNT
7
7
  } from "./roy-agent-core-7evvpfwc.js";
8
8
  import {
9
9
  validateWorkflowDefinition
10
- } from "./roy-agent-core-na73mym1.js";
10
+ } from "./roy-agent-core-a4vzsn0g.js";
11
11
  import {
12
12
  getCurrentBgTaskId
13
13
  } from "./roy-agent-core-c1v263jn.js";
@@ -24,7 +24,8 @@ import {
24
24
  init_logger
25
25
  } from "./roy-agent-core-8seq65bp.js";
26
26
  import {
27
- __legacyDecorateClassTS
27
+ __legacyDecorateClassTS,
28
+ __require
28
29
  } from "./roy-agent-core-fs0mn2jk.js";
29
30
 
30
31
  // src/env/workflow/tools/ask-user-tool.ts
@@ -480,8 +481,25 @@ var logger5 = createLogger("workflow-validate-tool");
480
481
  var WorkflowValidateInputSchema = z6.object({
481
482
  definition: z6.any().optional().describe("Workflow definition object (alternative to definition_yaml)"),
482
483
  definition_yaml: z6.string().optional().describe("Workflow definition as YAML or JSON string"),
483
- yaml: z6.string().optional().describe("Alias for definition_yaml — workflow definition as YAML or JSON string")
484
+ yaml: z6.string().optional().describe("Alias for definition_yaml — workflow definition as YAML or JSON string"),
485
+ file: z6.string().optional().describe("Path to a YAML/JSON file to validate. Use this INSTEAD of passing " + "`$(cat /path)` — shell substitutions are NOT expanded by this tool.")
484
486
  });
487
+ function isAllowedPath(absPath) {
488
+ const cwd = process.cwd();
489
+ const normalized = absPath.replace(/\\/g, "/");
490
+ if (normalized === cwd || normalized.startsWith(`${cwd}/`))
491
+ return true;
492
+ if (normalized === "/tmp" || normalized.startsWith("/tmp/"))
493
+ return true;
494
+ return false;
495
+ }
496
+ function detectShellSubstitution(text) {
497
+ const trimmed = text.trim();
498
+ const looksLikeSubstitution = /^\$\(.*\)$/.test(trimmed) || /^`.*`$/.test(trimmed) || /\$\(\s*cat\s+/.test(trimmed) || /`\s*cat\s+/.test(trimmed);
499
+ if (!looksLikeSubstitution)
500
+ return;
501
+ return "Shell substitutions such as `$(cat /path)` are NOT expanded by this tool — the " + "string is passed to the YAML parser verbatim, which is why you saw " + "`Parsed definition is not an object`. Pass the path directly instead: " + 'workflow_validate({ file: "/tmp/x.yaml" }).';
502
+ }
485
503
  function createWorkflowValidateTool(_workflowService) {
486
504
  return {
487
505
  name: "workflow_validate",
@@ -493,13 +511,56 @@ function createWorkflowValidateTool(_workflowService) {
493
511
  let definition;
494
512
  if (params.definition && typeof params.definition === "object") {
495
513
  definition = params.definition;
514
+ } else if (params.file && typeof params.file === "string") {
515
+ const fs = await import("node:fs/promises");
516
+ const nodePath = await import("node:path");
517
+ const abs = nodePath.resolve(params.file);
518
+ if (!isAllowedPath(abs)) {
519
+ return {
520
+ success: false,
521
+ output: "",
522
+ error: `Refusing to read outside the working directory or /tmp: ${abs}. Copy the file into CWD or /tmp first.`,
523
+ metadata: { execution_time_ms: 0 }
524
+ };
525
+ }
526
+ let raw;
527
+ try {
528
+ raw = await fs.readFile(abs, "utf-8");
529
+ } catch (readErr) {
530
+ const code = readErr?.code;
531
+ return {
532
+ success: false,
533
+ output: "",
534
+ error: code === "ENOENT" ? `Workflow file not found: ${abs}. Check the path (it is resolved against CWD: ${process.cwd()}).` : `Failed to read workflow file ${abs}: ${readErr instanceof Error ? readErr.message : String(readErr)}`,
535
+ metadata: { execution_time_ms: 0 }
536
+ };
537
+ }
538
+ try {
539
+ definition = yaml2.parse(raw);
540
+ } catch (yamlErr) {
541
+ return {
542
+ success: false,
543
+ output: "",
544
+ error: `Invalid YAML in ${abs}: ${yamlErr instanceof Error ? yamlErr.message : String(yamlErr)}`,
545
+ metadata: { execution_time_ms: 0 }
546
+ };
547
+ }
496
548
  } else {
497
549
  const yamlText = params.yaml ?? params.definition_yaml;
498
550
  if (!yamlText || typeof yamlText !== "string") {
499
551
  return {
500
552
  success: false,
501
553
  output: "",
502
- error: "Must provide either 'definition' (object), 'definition_yaml', or 'yaml' (string)",
554
+ error: "Must provide either 'definition' (object), 'file' (path), 'definition_yaml', or 'yaml' (string)",
555
+ metadata: { execution_time_ms: 0 }
556
+ };
557
+ }
558
+ const substitutionHint = detectShellSubstitution(yamlText);
559
+ if (substitutionHint) {
560
+ return {
561
+ success: false,
562
+ output: "",
563
+ error: substitutionHint,
503
564
  metadata: { execution_time_ms: 0 }
504
565
  };
505
566
  }
@@ -518,7 +579,7 @@ function createWorkflowValidateTool(_workflowService) {
518
579
  return {
519
580
  success: false,
520
581
  output: "",
521
- error: "Parsed definition is not an object",
582
+ error: `Parsed definition is not an object (got ${definition === null ? "null" : typeof definition}). If you passed a file path as a string, use workflow_validate({ file: "/path/to.yaml" }) ` + "instead of embedding `$(cat ...)` — shell substitutions are not expanded here.",
522
583
  metadata: { execution_time_ms: 0 }
523
584
  };
524
585
  }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  SessionMessageConverter
3
- } from "./roy-agent-core-pk1b3kvf.js";
3
+ } from "./roy-agent-core-2b8jtv7m.js";
4
4
  import {
5
5
  canonicalizeParts
6
- } from "./roy-agent-core-zy3hqfwg.js";
6
+ } from "./roy-agent-core-0hq21px2.js";
7
7
  import {
8
8
  createLogger,
9
9
  init_logger
@@ -13,7 +13,7 @@ import {
13
13
  createWorkflowSearchTool,
14
14
  createWorkflowTagListTool,
15
15
  createWorkflowValidateTool
16
- } from "./roy-agent-core-vvxb9522.js";
16
+ } from "./roy-agent-core-6qxh4xrm.js";
17
17
  import {
18
18
  WorkflowService
19
19
  } from "./roy-agent-core-7evvpfwc.js";
@@ -21,7 +21,7 @@ import {
21
21
  WorkflowEngine,
22
22
  exports_engine,
23
23
  init_engine
24
- } from "./roy-agent-core-35s1w7tc.js";
24
+ } from "./roy-agent-core-aer5kw1j.js";
25
25
  import {
26
26
  BaseComponent
27
27
  } from "./roy-agent-core-tdbv7ff4.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  LarkCardPatchNotifier,
3
3
  formatDurationMs
4
- } from "./roy-agent-core-j8e92gj8.js";
4
+ } from "./roy-agent-core-b5ew8t0k.js";
5
5
  import {
6
6
  WorkflowHookPoints,
7
7
  init_workflow_hook_points