@ai-setting/roy-agent-core 1.0.0

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 (378) hide show
  1. package/dist/index.js +99145 -0
  2. package/package.json +114 -0
  3. package/src/config/config-component.test.ts +627 -0
  4. package/src/config/config-component.ts +906 -0
  5. package/src/config/config-parser.test.ts +319 -0
  6. package/src/config/config-parser.ts +203 -0
  7. package/src/config/decentralized-config.test.ts +740 -0
  8. package/src/config/env-key.ts +210 -0
  9. package/src/config/env-source.test.ts +252 -0
  10. package/src/config/env-source.ts +301 -0
  11. package/src/config/file-source.test.ts +357 -0
  12. package/src/config/file-source.ts +421 -0
  13. package/src/config/index.ts +24 -0
  14. package/src/config/protocol-resolver.test.ts +217 -0
  15. package/src/config/protocol-resolver.ts +228 -0
  16. package/src/env/agent/agent-component.abort.test.ts +511 -0
  17. package/src/env/agent/agent-component.record-session.test.ts +349 -0
  18. package/src/env/agent/agent-component.test.ts +1389 -0
  19. package/src/env/agent/agent-component.tool-error.test.ts +327 -0
  20. package/src/env/agent/agent-component.ts +1711 -0
  21. package/src/env/agent/agent-config-registration.test.ts +226 -0
  22. package/src/env/agent/agent-config-registration.ts +46 -0
  23. package/src/env/agent/agent-reminder-plugin.integration.test.ts +243 -0
  24. package/src/env/agent/index.ts +10 -0
  25. package/src/env/agent/summary-agent.parse-hint.test.ts +360 -0
  26. package/src/env/agent/summary-agent.ts +508 -0
  27. package/src/env/agent/types.ts +536 -0
  28. package/src/env/commands/commands-component.test.ts +364 -0
  29. package/src/env/commands/commands-component.ts +604 -0
  30. package/src/env/commands/commands-config-registration.test.ts +198 -0
  31. package/src/env/commands/commands-config-registration.ts +38 -0
  32. package/src/env/commands/index.ts +21 -0
  33. package/src/env/commands/parser.test.ts +203 -0
  34. package/src/env/commands/parser.ts +115 -0
  35. package/src/env/commands/types.ts +184 -0
  36. package/src/env/commands-prompt-integration.test.ts +243 -0
  37. package/src/env/component-env.test.ts +119 -0
  38. package/src/env/component.ts +335 -0
  39. package/src/env/constants.test.ts +72 -0
  40. package/src/env/constants.ts +123 -0
  41. package/src/env/debug/debug-component.test.ts +114 -0
  42. package/src/env/debug/debug-component.ts +547 -0
  43. package/src/env/debug/formatters/index.ts +9 -0
  44. package/src/env/debug/formatters/repl-formatter.test.ts +139 -0
  45. package/src/env/debug/formatters/repl-formatter.ts +358 -0
  46. package/src/env/debug/formatters/trace-formatter.test.ts +119 -0
  47. package/src/env/debug/formatters/trace-formatter.ts +191 -0
  48. package/src/env/debug/formatters/tree-formatter.test.ts +107 -0
  49. package/src/env/debug/formatters/tree-formatter.ts +325 -0
  50. package/src/env/debug/index.ts +38 -0
  51. package/src/env/debug/parser/regex-parser.test.ts +201 -0
  52. package/src/env/debug/parser/regex-parser.ts +196 -0
  53. package/src/env/debug/parser/span-builder.test.ts +241 -0
  54. package/src/env/debug/parser/span-builder.ts +386 -0
  55. package/src/env/debug/reader/log-reader.test.ts +170 -0
  56. package/src/env/debug/reader/log-reader.ts +186 -0
  57. package/src/env/debug/reader/span-db-reader.test.ts +118 -0
  58. package/src/env/debug/reader/span-db-reader.ts +201 -0
  59. package/src/env/debug/types.test.ts +187 -0
  60. package/src/env/debug/types.ts +171 -0
  61. package/src/env/environment-init.test.ts +183 -0
  62. package/src/env/environment-lifecycle.test.ts +516 -0
  63. package/src/env/environment-service.test.ts +332 -0
  64. package/src/env/environment.handle-query.test.ts +96 -0
  65. package/src/env/environment.test.ts +232 -0
  66. package/src/env/environment.ts +708 -0
  67. package/src/env/errors.test.ts +165 -0
  68. package/src/env/errors.ts +157 -0
  69. package/src/env/event-source/event-source-agent-handler.test.ts +193 -0
  70. package/src/env/event-source/event-source-agent-handler.ts +111 -0
  71. package/src/env/event-source/event-source-component.process-cleanup.test.ts +236 -0
  72. package/src/env/event-source/event-source-component.stop.test.ts +346 -0
  73. package/src/env/event-source/event-source-component.test.ts +1207 -0
  74. package/src/env/event-source/event-source-component.ts +1379 -0
  75. package/src/env/event-source/event-source-config-registration.test.ts +242 -0
  76. package/src/env/event-source/event-source-config-registration.ts +37 -0
  77. package/src/env/event-source/event-source-integration.test.ts +320 -0
  78. package/src/env/event-source/event-source-platform.test.ts +630 -0
  79. package/src/env/event-source/types.ts +298 -0
  80. package/src/env/hook/global-hook-manager.ts +162 -0
  81. package/src/env/hook/hook-manager.test.ts +374 -0
  82. package/src/env/hook/hook-manager.ts +309 -0
  83. package/src/env/hook/index.ts +38 -0
  84. package/src/env/hook/types.ts +138 -0
  85. package/src/env/index.ts +144 -0
  86. package/src/env/interface.ts +203 -0
  87. package/src/env/llm/hooks.test.ts +293 -0
  88. package/src/env/llm/hooks.ts +316 -0
  89. package/src/env/llm/index.ts +61 -0
  90. package/src/env/llm/invoke-threshold-check.test.ts +88 -0
  91. package/src/env/llm/invoke-timeout.test.ts +54 -0
  92. package/src/env/llm/invoke.test.ts +71 -0
  93. package/src/env/llm/invoke.ts +1039 -0
  94. package/src/env/llm/llm-config.test.ts +523 -0
  95. package/src/env/llm/llm.test.ts +233 -0
  96. package/src/env/llm/llm.ts +568 -0
  97. package/src/env/llm/provider.test.ts +182 -0
  98. package/src/env/llm/provider.ts +108 -0
  99. package/src/env/llm/transform.test.ts +251 -0
  100. package/src/env/llm/transform.ts +286 -0
  101. package/src/env/llm/types.test.ts +580 -0
  102. package/src/env/llm/types.ts +424 -0
  103. package/src/env/log-trace/decorator-otel.test.ts +182 -0
  104. package/src/env/log-trace/decorator.ts +230 -0
  105. package/src/env/log-trace/index.ts +79 -0
  106. package/src/env/log-trace/log-trace-component.test.ts +242 -0
  107. package/src/env/log-trace/log-trace-component.ts +497 -0
  108. package/src/env/log-trace/log-trace-config-registration.test.ts +348 -0
  109. package/src/env/log-trace/log-trace-config-registration.ts +45 -0
  110. package/src/env/log-trace/logger.test.ts +149 -0
  111. package/src/env/log-trace/logger.ts +522 -0
  112. package/src/env/log-trace/opentelemetry/cli-propagation.test.ts +147 -0
  113. package/src/env/log-trace/opentelemetry/cli-propagation.ts +194 -0
  114. package/src/env/log-trace/opentelemetry/integration.test.ts +668 -0
  115. package/src/env/log-trace/opentelemetry/mod.ts +25 -0
  116. package/src/env/log-trace/opentelemetry/propagation-env.test.ts +181 -0
  117. package/src/env/log-trace/opentelemetry/propagation-env.ts +136 -0
  118. package/src/env/log-trace/opentelemetry/propagation.test.ts +259 -0
  119. package/src/env/log-trace/opentelemetry/propagation.ts +215 -0
  120. package/src/env/log-trace/opentelemetry/tracer-provider-context.test.ts +166 -0
  121. package/src/env/log-trace/opentelemetry/tracer-provider.test.ts +379 -0
  122. package/src/env/log-trace/opentelemetry/tracer-provider.ts +612 -0
  123. package/src/env/log-trace/span-storage.test.ts +145 -0
  124. package/src/env/log-trace/span-storage.ts +230 -0
  125. package/src/env/log-trace/trace-context.test.ts +187 -0
  126. package/src/env/log-trace/trace-context.ts +162 -0
  127. package/src/env/log-trace/types.test.ts +63 -0
  128. package/src/env/log-trace/types.ts +172 -0
  129. package/src/env/mcp/README.md +244 -0
  130. package/src/env/mcp/__integration__/mcp-component.integration.test.ts +373 -0
  131. package/src/env/mcp/config.test.ts +74 -0
  132. package/src/env/mcp/config.ts +116 -0
  133. package/src/env/mcp/index.ts +41 -0
  134. package/src/env/mcp/loader.test.ts +161 -0
  135. package/src/env/mcp/loader.ts +209 -0
  136. package/src/env/mcp/mcp-component.test.ts +111 -0
  137. package/src/env/mcp/mcp-component.ts +358 -0
  138. package/src/env/mcp/mcp-config-registration.test.ts +304 -0
  139. package/src/env/mcp/mcp-config-registration.ts +50 -0
  140. package/src/env/mcp/scanner.test.ts +170 -0
  141. package/src/env/mcp/scanner.ts +246 -0
  142. package/src/env/mcp/tool/adapter.test.ts +520 -0
  143. package/src/env/mcp/tool/adapter.ts +521 -0
  144. package/src/env/mcp/tool/index.ts +5 -0
  145. package/src/env/mcp/types.test.ts +171 -0
  146. package/src/env/mcp/types.ts +79 -0
  147. package/src/env/memory/README.md +177 -0
  148. package/src/env/memory/built-in/index.ts +59 -0
  149. package/src/env/memory/built-in/recall-memory.ts +103 -0
  150. package/src/env/memory/built-in/record-memory.ts +148 -0
  151. package/src/env/memory/index.ts +20 -0
  152. package/src/env/memory/memory-component.test.ts +239 -0
  153. package/src/env/memory/memory-component.ts +503 -0
  154. package/src/env/memory/memory-config-registration.test.ts +67 -0
  155. package/src/env/memory/memory-config-registration.ts +48 -0
  156. package/src/env/memory/memory-config.ts +45 -0
  157. package/src/env/memory/memory-file.test.ts +268 -0
  158. package/src/env/memory/plugin/index.ts +48 -0
  159. package/src/env/memory/plugin/memory-agent.test.ts +249 -0
  160. package/src/env/memory/plugin/memory-agent.ts +365 -0
  161. package/src/env/memory/plugin/memory-manager.ts +198 -0
  162. package/src/env/memory/plugin/memory-plugin-agent.test.ts +145 -0
  163. package/src/env/memory/plugin/memory-plugin.ts +210 -0
  164. package/src/env/memory/plugin/plugin-simplified.test.ts +51 -0
  165. package/src/env/memory/plugin/recall-memory.test.ts +106 -0
  166. package/src/env/memory/plugin/recall-memory.ts +53 -0
  167. package/src/env/memory/plugin/types.ts +101 -0
  168. package/src/env/memory/tools/memory-agent-tools.ts +228 -0
  169. package/src/env/memory/types.ts +85 -0
  170. package/src/env/paths.ts +118 -0
  171. package/src/env/prompt/index.ts +18 -0
  172. package/src/env/prompt/memory-prompts.test.ts +91 -0
  173. package/src/env/prompt/prompt-component.test.ts +491 -0
  174. package/src/env/prompt/prompt-component.ts +619 -0
  175. package/src/env/prompt/prompt-config-registration.test.ts +213 -0
  176. package/src/env/prompt/prompt-config-registration.ts +39 -0
  177. package/src/env/prompt/prompts-index.ts +504 -0
  178. package/src/env/prompt/renderer.ts +67 -0
  179. package/src/env/prompt/types.ts +136 -0
  180. package/src/env/session/hooks.ts +18 -0
  181. package/src/env/session/index.ts +37 -0
  182. package/src/env/session/search-query-parser.test.ts +425 -0
  183. package/src/env/session/search-query-parser.ts +171 -0
  184. package/src/env/session/session-checkpoint.test.ts +523 -0
  185. package/src/env/session/session-component.extract-recent-messages.test.ts +209 -0
  186. package/src/env/session/session-component.test.ts +132 -0
  187. package/src/env/session/session-component.ts +1249 -0
  188. package/src/env/session/session-config-registration.test.ts +138 -0
  189. package/src/env/session/session-config-registration.ts +52 -0
  190. package/src/env/session/session-message-converter.test.ts +763 -0
  191. package/src/env/session/session-message-converter.ts +415 -0
  192. package/src/env/session/session-message-e2e.test.ts +448 -0
  193. package/src/env/session/session-search.test.ts +391 -0
  194. package/src/env/session/session-store.test.ts +362 -0
  195. package/src/env/session/session-store.ts +141 -0
  196. package/src/env/session/storage/index.ts +6 -0
  197. package/src/env/session/storage/memory.ts +502 -0
  198. package/src/env/session/storage/sqlite.ts +794 -0
  199. package/src/env/session/types.ts +742 -0
  200. package/src/env/skill/config.ts +39 -0
  201. package/src/env/skill/index.ts +6 -0
  202. package/src/env/skill/parser.test.ts +116 -0
  203. package/src/env/skill/parser.ts +77 -0
  204. package/src/env/skill/scanner.test.ts +211 -0
  205. package/src/env/skill/scanner.ts +119 -0
  206. package/src/env/skill/skill-component.test.ts +234 -0
  207. package/src/env/skill/skill-component.ts +352 -0
  208. package/src/env/skill/skill-config-registration.test.ts +60 -0
  209. package/src/env/skill/skill-config-registration.ts +43 -0
  210. package/src/env/skill/tool/index.ts +1 -0
  211. package/src/env/skill/tool/skill-tool.test.ts +100 -0
  212. package/src/env/skill/tool/skill-tool.ts +72 -0
  213. package/src/env/skill/types.ts +64 -0
  214. package/src/env/task/delegate/delegate-tool.test.ts +498 -0
  215. package/src/env/task/delegate/delegate-tool.ts +1014 -0
  216. package/src/env/task/delegate/index.ts +18 -0
  217. package/src/env/task/delegate/stop-tool.test.ts +140 -0
  218. package/src/env/task/delegate/stop-tool.ts +119 -0
  219. package/src/env/task/delegate/task-events.test.ts +178 -0
  220. package/src/env/task/delegate/task-events.ts +143 -0
  221. package/src/env/task/hooks/contexts.test.ts +92 -0
  222. package/src/env/task/hooks/contexts.ts +192 -0
  223. package/src/env/task/hooks/index.ts +23 -0
  224. package/src/env/task/hooks/task-hook-points.test.ts +32 -0
  225. package/src/env/task/hooks/task-hook-points.ts +54 -0
  226. package/src/env/task/index.ts +7 -0
  227. package/src/env/task/plugins/index.ts +13 -0
  228. package/src/env/task/plugins/task-plugin.test.ts +74 -0
  229. package/src/env/task/plugins/task-plugin.ts +89 -0
  230. package/src/env/task/plugins/task-tag-plugin.test.ts +377 -0
  231. package/src/env/task/plugins/task-tag-plugin.ts +319 -0
  232. package/src/env/task/plugins/task-workflow-extractor.integration.test.ts +226 -0
  233. package/src/env/task/plugins/workflow-extractor-agent.test.ts +107 -0
  234. package/src/env/task/plugins/workflow-extractor-agent.ts +225 -0
  235. package/src/env/task/storage/index.ts +6 -0
  236. package/src/env/task/storage/sqlite-task-store.test.ts +283 -0
  237. package/src/env/task/storage/sqlite-task-store.ts +903 -0
  238. package/src/env/task/storage/task-search.test.ts +291 -0
  239. package/src/env/task/tag-service.test.ts +198 -0
  240. package/src/env/task/tag-service.ts +264 -0
  241. package/src/env/task/task-component.test.ts +193 -0
  242. package/src/env/task/task-component.ts +658 -0
  243. package/src/env/task/task-config-registration.test.ts +57 -0
  244. package/src/env/task/task-config-registration.ts +37 -0
  245. package/src/env/task/task-types.test.ts +137 -0
  246. package/src/env/task/tools/complete-tool.ts +44 -0
  247. package/src/env/task/tools/create-tool.ts +49 -0
  248. package/src/env/task/tools/delete-tool.ts +43 -0
  249. package/src/env/task/tools/get-tool.ts +59 -0
  250. package/src/env/task/tools/index.ts +10 -0
  251. package/src/env/task/tools/list-tool.ts +40 -0
  252. package/src/env/task/tools/operation/create-tool.ts +48 -0
  253. package/src/env/task/tools/operation/delete-tool.ts +43 -0
  254. package/src/env/task/tools/operation/get-tool.ts +43 -0
  255. package/src/env/task/tools/operation/index.ts +9 -0
  256. package/src/env/task/tools/operation/list-tool.ts +40 -0
  257. package/src/env/task/tools/operation/operation-tools.test.ts +274 -0
  258. package/src/env/task/tools/operation/operation-types.ts +75 -0
  259. package/src/env/task/tools/operation/update-tool.ts +47 -0
  260. package/src/env/task/tools/task-tools.test.ts +203 -0
  261. package/src/env/task/tools/task-types.test.ts +75 -0
  262. package/src/env/task/tools/task-types.ts +68 -0
  263. package/src/env/task/tools/update-tool.ts +70 -0
  264. package/src/env/task/types.ts +160 -0
  265. package/src/env/tool/built-in/bash.ts +201 -0
  266. package/src/env/tool/built-in/echo.ts +29 -0
  267. package/src/env/tool/built-in/edit-file.test.ts +136 -0
  268. package/src/env/tool/built-in/edit-file.ts +92 -0
  269. package/src/env/tool/built-in/glob.test.ts +94 -0
  270. package/src/env/tool/built-in/glob.ts +65 -0
  271. package/src/env/tool/built-in/grep.test.ts +122 -0
  272. package/src/env/tool/built-in/grep.ts +108 -0
  273. package/src/env/tool/built-in/index.ts +44 -0
  274. package/src/env/tool/built-in/read-file.test.ts +84 -0
  275. package/src/env/tool/built-in/read-file.ts +75 -0
  276. package/src/env/tool/built-in/write-file.test.ts +119 -0
  277. package/src/env/tool/built-in/write-file.ts +68 -0
  278. package/src/env/tool/index.ts +24 -0
  279. package/src/env/tool/registry.test.ts +257 -0
  280. package/src/env/tool/registry.ts +167 -0
  281. package/src/env/tool/tool-component.test.ts +559 -0
  282. package/src/env/tool/tool-component.ts +563 -0
  283. package/src/env/tool/tool-config-registration.test.ts +249 -0
  284. package/src/env/tool/tool-config-registration.ts +46 -0
  285. package/src/env/tool/types.ts +267 -0
  286. package/src/env/tool/validator.test.ts +143 -0
  287. package/src/env/tool/validator.ts +44 -0
  288. package/src/env/types.ts +180 -0
  289. package/src/env/workflow/ask-user-tool-registration.test.ts +216 -0
  290. package/src/env/workflow/complex-workflow.integration.test.ts +1900 -0
  291. package/src/env/workflow/decorators/decorator-node.ts +229 -0
  292. package/src/env/workflow/decorators/decorator.test.ts +196 -0
  293. package/src/env/workflow/decorators/edge.ts +82 -0
  294. package/src/env/workflow/decorators/index.ts +31 -0
  295. package/src/env/workflow/decorators/node-as.ts +98 -0
  296. package/src/env/workflow/decorators/workflow.ts +54 -0
  297. package/src/env/workflow/engine/dag-manager.test.ts +570 -0
  298. package/src/env/workflow/engine/dag-manager.ts +594 -0
  299. package/src/env/workflow/engine/engine.ts +1422 -0
  300. package/src/env/workflow/engine/event-bus.test.ts +359 -0
  301. package/src/env/workflow/engine/event-bus.ts +156 -0
  302. package/src/env/workflow/engine/executor-agent-session.test.ts +84 -0
  303. package/src/env/workflow/engine/executor.test.ts +619 -0
  304. package/src/env/workflow/engine/executor.ts +593 -0
  305. package/src/env/workflow/engine/index.ts +24 -0
  306. package/src/env/workflow/engine/node-registry.test.ts +560 -0
  307. package/src/env/workflow/engine/node-registry.ts +289 -0
  308. package/src/env/workflow/engine/resume-removed.test.ts +22 -0
  309. package/src/env/workflow/engine/scheduler.test.ts +715 -0
  310. package/src/env/workflow/engine/scheduler.ts +318 -0
  311. package/src/env/workflow/engine/workflow-engine.test.ts +815 -0
  312. package/src/env/workflow/extractor/workflow-converter.ts +306 -0
  313. package/src/env/workflow/fixtures.ts +380 -0
  314. package/src/env/workflow/index.ts +38 -0
  315. package/src/env/workflow/integration/run-resume-unified.test.ts +186 -0
  316. package/src/env/workflow/integration/service-integration.test.ts +267 -0
  317. package/src/env/workflow/metadata/keys.ts +12 -0
  318. package/src/env/workflow/nodes/agent-component-adapter.test.ts +318 -0
  319. package/src/env/workflow/nodes/agent-component-adapter.ts +448 -0
  320. package/src/env/workflow/nodes/agent-node.test.ts +371 -0
  321. package/src/env/workflow/nodes/agent-node.ts +598 -0
  322. package/src/env/workflow/nodes/ask-user-node.ts +113 -0
  323. package/src/env/workflow/nodes/condition-node.ts +200 -0
  324. package/src/env/workflow/nodes/index.ts +9 -0
  325. package/src/env/workflow/nodes/merge-node.ts +141 -0
  326. package/src/env/workflow/nodes/skill-node.test.ts +253 -0
  327. package/src/env/workflow/nodes/skill-node.ts +393 -0
  328. package/src/env/workflow/nodes/tool-node.test.ts +251 -0
  329. package/src/env/workflow/nodes/tool-node.ts +493 -0
  330. package/src/env/workflow/nodes/workflow-llm-history.test.ts +455 -0
  331. package/src/env/workflow/nodes/workflow-node.test.ts +315 -0
  332. package/src/env/workflow/nodes/workflow-node.ts +311 -0
  333. package/src/env/workflow/service/index.ts +27 -0
  334. package/src/env/workflow/service/registry.test.ts +133 -0
  335. package/src/env/workflow/service/registry.ts +71 -0
  336. package/src/env/workflow/service/workflow-service.test.ts +310 -0
  337. package/src/env/workflow/service/workflow-service.ts +393 -0
  338. package/src/env/workflow/storage/index.ts +28 -0
  339. package/src/env/workflow/storage/mock-repositories.ts +385 -0
  340. package/src/env/workflow/storage/sqlite.test.ts +179 -0
  341. package/src/env/workflow/storage/sqlite.ts +163 -0
  342. package/src/env/workflow/storage/workflow-repo.test.ts +780 -0
  343. package/src/env/workflow/storage/workflow-repo.ts +342 -0
  344. package/src/env/workflow/tools/ask-user-tool.ts +82 -0
  345. package/src/env/workflow/tools/index.ts +26 -0
  346. package/src/env/workflow/tools/run-workflow.test.ts +352 -0
  347. package/src/env/workflow/tools/run-workflow.ts +214 -0
  348. package/src/env/workflow/types/context.ts +18 -0
  349. package/src/env/workflow/types/decorators-types.ts +198 -0
  350. package/src/env/workflow/types/event.test.ts +515 -0
  351. package/src/env/workflow/types/event.ts +193 -0
  352. package/src/env/workflow/types/index.ts +49 -0
  353. package/src/env/workflow/types/run.test.ts +437 -0
  354. package/src/env/workflow/types/run.ts +173 -0
  355. package/src/env/workflow/types/workflow-hil.ts +114 -0
  356. package/src/env/workflow/types/workflow-message.test.ts +138 -0
  357. package/src/env/workflow/types/workflow-message.ts +196 -0
  358. package/src/env/workflow/types/workflow-session.test.ts +95 -0
  359. package/src/env/workflow/types/workflow-session.ts +59 -0
  360. package/src/env/workflow/types/workflow.test.ts +495 -0
  361. package/src/env/workflow/types/workflow.ts +195 -0
  362. package/src/env/workflow/types_compat.ts +51 -0
  363. package/src/env/workflow/utils/create-workflow.ts +47 -0
  364. package/src/env/workflow/utils/execution-state.ts +245 -0
  365. package/src/env/workflow/utils/index.ts +18 -0
  366. package/src/env/workflow/utils/node-registry-helper.ts +58 -0
  367. package/src/env/workflow/utils/recovery-validator.test.ts +460 -0
  368. package/src/env/workflow/utils/recovery-validator.ts +377 -0
  369. package/src/env/workflow/utils/session-parser.test.ts +111 -0
  370. package/src/env/workflow/utils/session-parser.ts +94 -0
  371. package/src/env/workflow/utils/session-recovery.test.ts +334 -0
  372. package/src/env/workflow/utils/session-recovery.ts +188 -0
  373. package/src/env/workflow/utils/template-resolver.test.ts +258 -0
  374. package/src/env/workflow/utils/template-resolver.ts +436 -0
  375. package/src/env/workflow/utils/validation-rules.ts +149 -0
  376. package/src/env/workflow/workflow-component.ts +544 -0
  377. package/src/index.ts +422 -0
  378. package/src/utils/id.ts +21 -0
@@ -0,0 +1,192 @@
1
+ /**
2
+ * @fileoverview Task Hook Contexts - Hook 上下文类型定义
3
+ */
4
+
5
+ import type { CreateTaskOptions, UpdateTaskOptions, Task, TaskOperation, CreateOperationOptions } from "../types";
6
+ import type { TagService } from "../tag-service";
7
+ import type { DelegateToolResult } from "../delegate/delegate-tool";
8
+
9
+ // ========================================================================
10
+ // Task CRUD Contexts
11
+ // ========================================================================
12
+
13
+ /**
14
+ * Task Create Hook Context
15
+ *
16
+ * 触发时机:createTask() 方法调用后,实际创建前
17
+ *
18
+ * Plugin 可直接修改 options 来干预创建行为
19
+ */
20
+ export interface TaskCreateContext {
21
+ /** 创建选项(Plugin 可直接修改) */
22
+ options: CreateTaskOptions;
23
+ /** Session ID */
24
+ sessionId: string;
25
+ /** Tag 服务引用 */
26
+ tagService: TagService;
27
+ }
28
+
29
+ /**
30
+ * Task Create Result Hook Context
31
+ *
32
+ * 触发时机:Task 创建成功后
33
+ *
34
+ * Plugin 可在此 Hook 中:
35
+ * - 同步 Tag 到数据库
36
+ * - 创建关联资源
37
+ * - 发送通知
38
+ */
39
+ export interface TaskCreateResultContext {
40
+ /** 创建后的 Task(已包含生成 ID) */
41
+ task: Task;
42
+ /** Session ID */
43
+ sessionId: string;
44
+ /** Tag 服务引用 */
45
+ tagService: TagService;
46
+ }
47
+
48
+ /**
49
+ * Task Update Hook Context
50
+ *
51
+ * 触发时机:updateTask() 方法调用后,实际更新前
52
+ *
53
+ * Plugin 可直接修改 options 来干预更新行为
54
+ */
55
+ export interface TaskUpdateContext {
56
+ /** Task ID */
57
+ id: number;
58
+ /** 更新选项(Plugin 可直接修改) */
59
+ options: UpdateTaskOptions;
60
+ /** Tag 服务引用 */
61
+ tagService: TagService;
62
+ }
63
+
64
+ /**
65
+ * Task Update Result Hook Context
66
+ *
67
+ * 触发时机:Task 更新成功后
68
+ */
69
+ export interface TaskUpdateResultContext {
70
+ /** 更新后的 Task */
71
+ task: Task;
72
+ /** 变更的字段 */
73
+ changes: Partial<UpdateTaskOptions>;
74
+ /** Tag 服务引用 */
75
+ tagService: TagService;
76
+ }
77
+
78
+ /**
79
+ * Task Delete Hook Context
80
+ *
81
+ * 触发时机:deleteTask() 方法调用后,实际删除前
82
+ */
83
+ export interface TaskDeleteContext {
84
+ /** Task ID */
85
+ id: number;
86
+ }
87
+
88
+ /**
89
+ * Task Delete Result Hook Context
90
+ *
91
+ * 触发时机:Task 删除成功后
92
+ *
93
+ * 注意:删除成功后无法获取 Task 的详细信息
94
+ */
95
+ export interface TaskDeleteResultContext {
96
+ /** 被删除的 Task ID */
97
+ id: number;
98
+ /** 是否成功删除 */
99
+ deleted: boolean;
100
+ }
101
+
102
+ // ========================================================================
103
+ // Delegate Contexts
104
+ // ========================================================================
105
+
106
+ /**
107
+ * Delegate Before Hook Context
108
+ *
109
+ * 触发时机:delegate_task 工具执行前
110
+ *
111
+ * Plugin 可直接修改 prompt 来注入上下文
112
+ */
113
+ export interface TaskDelegateContext {
114
+ /** 关联的 Task ID */
115
+ taskId?: number;
116
+ /** 执行提示词(Plugin 可直接修改以注入上下文) */
117
+ prompt: string;
118
+ /** SubAgent 类型 */
119
+ subagentType: string;
120
+ /** 是否后台执行 */
121
+ background: boolean;
122
+ /** 超时时间 */
123
+ timeout?: number;
124
+ /** 清理策略 */
125
+ cleanup?: "delete" | "keep";
126
+ /** 执行原因 */
127
+ reason?: string;
128
+ /** Tag 服务引用 */
129
+ tagService: TagService;
130
+ }
131
+
132
+ /**
133
+ * Delegate After Hook Context
134
+ *
135
+ * 触发时机:delegate_task 工具执行后
136
+ */
137
+ export interface TaskDelegateResultContext {
138
+ /** 关联的 Task ID */
139
+ taskId?: number;
140
+ /** 执行结果 */
141
+ result: DelegateToolResult;
142
+ /** Tag 服务引用 */
143
+ tagService: TagService;
144
+ }
145
+
146
+ // ========================================================================
147
+ // Operation Contexts
148
+ // ========================================================================
149
+
150
+ /**
151
+ * Operation Create Hook Context
152
+ *
153
+ * 触发时机:createOperation() 方法调用后,实际创建前
154
+ *
155
+ * Plugin 可直接修改 options 来干预操作记录创建
156
+ */
157
+ export interface TaskOperationCreateContext {
158
+ /** 创建选项(Plugin 可直接修改) */
159
+ options: CreateOperationOptions;
160
+ }
161
+
162
+ /**
163
+ * Operation Create Result Hook Context
164
+ *
165
+ * 触发时机:操作记录创建成功后
166
+ */
167
+ export interface TaskOperationCreateResultContext {
168
+ /** 创建后的操作记录 */
169
+ operation: TaskOperation;
170
+ }
171
+
172
+ // ========================================================================
173
+ // Context Map(用于泛型推导)
174
+ // ========================================================================
175
+
176
+ /**
177
+ * TaskHookContextMap - Hook 点与 Context 类型的映射
178
+ *
179
+ * 用于 Hook 执行时类型安全的 Context 获取
180
+ */
181
+ export interface TaskHookContextMap {
182
+ "task:before.create": TaskCreateContext;
183
+ "task:after.create": TaskCreateResultContext;
184
+ "task:before.update": TaskUpdateContext;
185
+ "task:after.update": TaskUpdateResultContext;
186
+ "task:before.delete": TaskDeleteContext;
187
+ "task:after.delete": TaskDeleteResultContext;
188
+ "task:delegate:before": TaskDelegateContext;
189
+ "task:delegate:after": TaskDelegateResultContext;
190
+ "task:operation:before.create": TaskOperationCreateContext;
191
+ "task:operation:after.create": TaskOperationCreateResultContext;
192
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @fileoverview Task Hooks Module
3
+ *
4
+ * 提供 Task Component 的 Hook 机制
5
+ */
6
+
7
+ // Hook 点常量
8
+ export { TaskHookPoints, type TaskHookPoint } from "./task-hook-points";
9
+
10
+ // Context 类型
11
+ export type {
12
+ TaskCreateContext,
13
+ TaskCreateResultContext,
14
+ TaskUpdateContext,
15
+ TaskUpdateResultContext,
16
+ TaskDeleteContext,
17
+ TaskDeleteResultContext,
18
+ TaskDelegateContext,
19
+ TaskDelegateResultContext,
20
+ TaskOperationCreateContext,
21
+ TaskOperationCreateResultContext,
22
+ TaskHookContextMap,
23
+ } from "./contexts";
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @fileoverview Task Hook Points Tests
3
+ */
4
+
5
+ import { describe, test, expect } from "vitest";
6
+ import { TaskHookPoints } from "./task-hook-points";
7
+
8
+ describe("TaskHookPoints", () => {
9
+ test("should export all task CRUD hook points", () => {
10
+ expect(TaskHookPoints.BEFORE_CREATE).toBe("task:before.create");
11
+ expect(TaskHookPoints.AFTER_CREATE).toBe("task:after.create");
12
+ expect(TaskHookPoints.BEFORE_UPDATE).toBe("task:before.update");
13
+ expect(TaskHookPoints.AFTER_UPDATE).toBe("task:after.update");
14
+ expect(TaskHookPoints.BEFORE_DELETE).toBe("task:before.delete");
15
+ expect(TaskHookPoints.AFTER_DELETE).toBe("task:after.delete");
16
+ });
17
+
18
+ test("should export delegate hook points", () => {
19
+ expect(TaskHookPoints.DELEGATE_BEFORE).toBe("task:delegate:before");
20
+ expect(TaskHookPoints.DELEGATE_AFTER).toBe("task:delegate:after");
21
+ });
22
+
23
+ test("should export operation hook points", () => {
24
+ expect(TaskHookPoints.OPERATION_BEFORE_CREATE).toBe("task:operation:before.create");
25
+ expect(TaskHookPoints.OPERATION_AFTER_CREATE).toBe("task:operation:after.create");
26
+ });
27
+
28
+ test("should have 10 hook points total", () => {
29
+ const hookPoints = Object.values(TaskHookPoints);
30
+ expect(hookPoints).toHaveLength(10);
31
+ });
32
+ });
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @fileoverview Task Hook Points - Hook 点常量定义
3
+ *
4
+ * 定义 Task Component 生命周期中的所有 Hook 点
5
+ */
6
+
7
+ export const TaskHookPoints = {
8
+ // ========================================================================
9
+ // Task CRUD Hooks
10
+ // ========================================================================
11
+
12
+ /** 创建 Task 前 - 可干预 options */
13
+ BEFORE_CREATE: "task:before.create",
14
+
15
+ /** 创建 Task 后 - 观察或触发副作用 */
16
+ AFTER_CREATE: "task:after.create",
17
+
18
+ /** 更新 Task 前 - 可干预 options */
19
+ BEFORE_UPDATE: "task:before.update",
20
+
21
+ /** 更新 Task 后 - 观察变更 */
22
+ AFTER_UPDATE: "task:after.update",
23
+
24
+ /** 删除 Task 前 - 观察 */
25
+ BEFORE_DELETE: "task:before.delete",
26
+
27
+ /** 删除 Task 后 - 清理关联资源 */
28
+ AFTER_DELETE: "task:after.delete",
29
+
30
+ // ========================================================================
31
+ // Delegate Hooks
32
+ // ========================================================================
33
+
34
+ /** 委派任务前 - 可干预 prompt、参数 */
35
+ DELEGATE_BEFORE: "task:delegate:before",
36
+
37
+ /** 委派任务后 - 观察结果 */
38
+ DELEGATE_AFTER: "task:delegate:after",
39
+
40
+ // ========================================================================
41
+ // Operation Hooks
42
+ // ========================================================================
43
+
44
+ /** 创建操作记录前 - 可干预 options */
45
+ OPERATION_BEFORE_CREATE: "task:operation:before.create",
46
+
47
+ /** 创建操作记录后 - 观察或触发副作用 */
48
+ OPERATION_AFTER_CREATE: "task:operation:after.create",
49
+ } as const;
50
+
51
+ /**
52
+ * Task Hook 点类型
53
+ */
54
+ export type TaskHookPoint = typeof TaskHookPoints[keyof typeof TaskHookPoints];
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview Task Component Index
3
+ */
4
+
5
+ export { TaskComponent, type TaskComponentOptions } from "./task-component";
6
+ export * from "./types";
7
+ export { SQLiteTaskStore, type TaskStore } from "./storage";
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @fileoverview Task Plugins Module
3
+ */
4
+
5
+ export { TaskPlugin, type TaskPluginConfig, type TaskPluginHook } from "./task-plugin";
6
+ export { TaskTagPlugin } from "./task-tag-plugin";
7
+ export {
8
+ WORKFLOW_EXTRACTOR_PROMPT,
9
+ createWorkflowExtractorAgent,
10
+ formatExtractorInput,
11
+ formatExtractorInputFromDescription,
12
+ parseExtractorOutput,
13
+ } from "./workflow-extractor-agent";
@@ -0,0 +1,74 @@
1
+ /**
2
+ * @fileoverview TaskPlugin Tests
3
+ */
4
+
5
+ import { describe, test, expect } from "vitest";
6
+ import { TaskPlugin, type TaskPluginConfig } from "./task-plugin";
7
+
8
+ // Concrete implementation for testing
9
+ class TestPlugin extends TaskPlugin {
10
+ readonly name = "TestPlugin";
11
+ readonly hooks = [
12
+ { point: "task:before.create", priority: 10 },
13
+ { point: "task:after.create", priority: 5 },
14
+ ];
15
+
16
+ execute() {
17
+ // No-op for testing
18
+ }
19
+ }
20
+
21
+ describe("TaskPlugin", () => {
22
+ test("should have name and hooks", () => {
23
+ const plugin = new TestPlugin();
24
+
25
+ expect(plugin.name).toBe("TestPlugin");
26
+ expect(plugin.hooks).toHaveLength(2);
27
+ expect(plugin.hooks[0].point).toBe("task:before.create");
28
+ expect(plugin.hooks[0].priority).toBe(10);
29
+ });
30
+
31
+ test("should get hook points", () => {
32
+ const plugin = new TestPlugin();
33
+ const points = plugin.getHookPoints();
34
+
35
+ expect(points).toContain("task:before.create");
36
+ expect(points).toContain("task:after.create");
37
+ });
38
+
39
+ test("should get priority for hook", () => {
40
+ const plugin = new TestPlugin();
41
+
42
+ expect(plugin.getPriorityForHook("task:before.create")).toBe(10);
43
+ expect(plugin.getPriorityForHook("task:after.create")).toBe(5);
44
+ expect(plugin.getPriorityForHook("unknown")).toBe(0);
45
+ });
46
+
47
+ test("should be enabled by default", () => {
48
+ const plugin = new TestPlugin();
49
+ expect(plugin.isEnabled()).toBe(true);
50
+ });
51
+
52
+ test("should set enabled state", () => {
53
+ const plugin = new TestPlugin();
54
+
55
+ plugin.setEnabled(false);
56
+ expect(plugin.isEnabled()).toBe(false);
57
+
58
+ plugin.setEnabled(true);
59
+ expect(plugin.isEnabled()).toBe(true);
60
+ });
61
+
62
+ test("should use config priority when hook priority not set", () => {
63
+ class PluginWithConfig extends TaskPlugin {
64
+ readonly name = "ConfigPlugin";
65
+ readonly hooks = [
66
+ { point: "task:before.create" }, // No priority
67
+ ];
68
+ execute() {}
69
+ }
70
+
71
+ const plugin = new PluginWithConfig({ priority: 20 });
72
+ expect(plugin.getPriorityForHook("task:before.create")).toBe(20);
73
+ });
74
+ });
@@ -0,0 +1,89 @@
1
+ /**
2
+ * @fileoverview TaskPlugin 基类
3
+ *
4
+ * 所有 Task Plugin 的基类,提供统一的接口和生命周期管理
5
+ */
6
+
7
+ import type { HookContext } from "../../hook/types";
8
+ import type { AgentInstanceConfig } from "../../agent/types";
9
+
10
+ /**
11
+ * TaskPlugin 配置
12
+ */
13
+ export interface TaskPluginConfig {
14
+ /** 是否启用 */
15
+ enabled?: boolean;
16
+ /** 优先级 */
17
+ priority?: number;
18
+ }
19
+
20
+ /**
21
+ * TaskPlugin Hook 定义
22
+ */
23
+ export interface TaskPluginHook {
24
+ /** Hook 点 */
25
+ point: string;
26
+ /** 优先级(数字越大越先执行)*/
27
+ priority?: number;
28
+ }
29
+
30
+ /**
31
+ * TaskPlugin 基类
32
+ */
33
+ export abstract class TaskPlugin {
34
+ abstract readonly name: string;
35
+ abstract readonly hooks: TaskPluginHook[];
36
+ protected config: TaskPluginConfig;
37
+
38
+ constructor(config: TaskPluginConfig = {}) {
39
+ this.config = { enabled: true, priority: 0, ...config };
40
+ }
41
+
42
+ /**
43
+ * 执行 Hook
44
+ * @param ctx Hook 上下文
45
+ */
46
+ abstract execute(ctx: HookContext): void | Promise<void>;
47
+
48
+ /**
49
+ * 设置依赖组件(可选实现)
50
+ */
51
+ setComponents?(llmComponent: unknown, taskComponent: unknown): void;
52
+
53
+ /**
54
+ * 获取 Hook 点列表
55
+ */
56
+ getHookPoints(): string[] {
57
+ return this.hooks.map(h => h.point);
58
+ }
59
+
60
+ /**
61
+ * 获取指定 Hook 点的优先级
62
+ */
63
+ getPriorityForHook(hookPoint: string): number {
64
+ const hook = this.hooks.find(h => h.point === hookPoint);
65
+ return hook?.priority ?? this.config.priority ?? 0;
66
+ }
67
+
68
+ /**
69
+ * 检查是否启用
70
+ */
71
+ isEnabled(): boolean {
72
+ return this.config.enabled ?? true;
73
+ }
74
+
75
+ /**
76
+ * 设置启用状态
77
+ */
78
+ setEnabled(enabled: boolean): void {
79
+ this.config.enabled = enabled;
80
+ }
81
+
82
+ /**
83
+ * 获取依赖的 Agent 配置列表(可选实现)
84
+ *
85
+ * 子类可覆盖此方法声明依赖的 Agents
86
+ * TaskComponent.registerPlugin 时会自动注册这些 Agents
87
+ */
88
+ static getRequiredAgents?(): AgentInstanceConfig[];
89
+ }