@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,536 @@
1
+ /**
2
+ * @fileoverview AgentComponent Types
3
+ *
4
+ * 基于 roy-agent docs/agent-component-design.md
5
+ *
6
+ * 注意:Tool 相关类型从 ToolComponent 复用,保持统一
7
+ */
8
+
9
+ import type { ModelMessage } from "ai";
10
+ import type { Tool, ToolResult } from "../tool/types";
11
+ import type { LLMOutput } from "../llm/types";
12
+
13
+ // AbortSignal type from global scope (instance type, not constructor)
14
+ type AbortSignalType = AbortSignal;
15
+
16
+ // ============================================================================
17
+ // Re-export types from other components
18
+ // ============================================================================
19
+
20
+ // Tool 和 ToolResult 从 ToolComponent 复用
21
+ export { Tool, ToolResult };
22
+
23
+ // Forward declaration for ProjectSummary (avoid circular dependency)
24
+ export interface ProjectSummary {
25
+ projectPath: string;
26
+ projectName: string;
27
+ lastUpdated: number;
28
+ summary: string;
29
+ shortSummary: string;
30
+ draftCount: number;
31
+ memoryMdPath: string;
32
+ draftsDir: string;
33
+ detailsDir: string;
34
+ }
35
+
36
+ // ============================================================================
37
+ // Agent Context
38
+ // ============================================================================
39
+
40
+ /**
41
+ * Agent 执行上下文
42
+ */
43
+ export interface AgentContext {
44
+ /** 会话 ID */
45
+ sessionId?: string;
46
+ /** 消息 ID */
47
+ messageId?: string;
48
+ /** 中断信号 */
49
+ abort?: AbortSignalType;
50
+ /** 额外的上下文信息(会添加到 system prompt) */
51
+ additionInfo?: string;
52
+ /** 元数据 */
53
+ metadata?: Record<string, unknown>;
54
+ /** Agent 类型(用于选择 Behavior Spec) */
55
+ agentType?: string;
56
+ /** 使用的模型 */
57
+ model?: string;
58
+ /** 允许的工具列表(上下文级别,会覆盖 agent 配置) */
59
+ allowedTools?: string[];
60
+ /** 拒绝的工具列表(上下文级别,会覆盖 agent 配置) */
61
+ deniedTools?: string[];
62
+ /** 是否过滤 history 中的 tool 消息(上下文级别,会覆盖 agent 配置) */
63
+ filterHistory?: boolean;
64
+ }
65
+
66
+ /**
67
+ * 工具调用(内部使用)
68
+ */
69
+ export interface ToolCall {
70
+ /** 调用 ID */
71
+ id: string;
72
+
73
+ /** 工具名称 */
74
+ name: string;
75
+
76
+ /** 调用参数 */
77
+ arguments: Record<string, unknown>;
78
+ }
79
+
80
+ /**
81
+ * 工具调用结果
82
+ */
83
+ export interface ToolCallResult {
84
+ /** 调用 ID */
85
+ id: string;
86
+
87
+ /** 工具名称 */
88
+ name: string;
89
+
90
+ /** 调用结果 */
91
+ result: ToolResult;
92
+
93
+ /** 是否成功 */
94
+ success: boolean;
95
+ }
96
+
97
+ // ============================================================================
98
+ // Hook Types
99
+ // ============================================================================
100
+
101
+ /**
102
+ * Hook 点枚举(带 component 前缀)
103
+ */
104
+ export type HookPoint =
105
+ | "agent:before.start" // Agent 开始执行前
106
+ | "agent:before.llm" // 调用 LLM 前
107
+ | "agent:after.llm" // 调用 LLM 后
108
+ | "agent:before.tool" // 执行工具前
109
+ | "agent:after.tool" // 执行工具后
110
+ | "agent:on.iteration" // 每次迭代后
111
+ | "agent:on.threshold" // 达到阈值时
112
+ | "agent:after.complete" // 执行完成后
113
+ | "agent:on.error" // 发生错误时
114
+ | "agent:after.react" // React 循环结束后
115
+ | "on.error"; // 简化写法(兼容)
116
+
117
+ /**
118
+ * Context data for agent:after.react hook
119
+ */
120
+ export interface AgentReactContext {
121
+ /** Current messages for memory extraction */
122
+ messages: ModelMessage[];
123
+ /** Current session ID */
124
+ sessionId?: string;
125
+ /** Execution summary */
126
+ summary?: string;
127
+ }
128
+
129
+ /**
130
+ * Hook 上下文(Agent 特有版本)
131
+ *
132
+ * 注意:这是 AgentComponent 使用的 HookContext 扩展版本
133
+ * 包含 iteration, maxIterations, messages 等 Agent 特有字段
134
+ */
135
+ export interface HookContext {
136
+
137
+ // ===== Hook 点特定字段 =====
138
+
139
+ /** 当前 LLM 输出(after.llm hook 可用) */
140
+ llmOutput?: AgentLLMOutput;
141
+
142
+ /** 当前工具调用(before.tool/after.tool hook 可用) */
143
+ currentToolCall?: ToolCall;
144
+
145
+ /** 工具执行结果(after.tool hook 可用) */
146
+ toolResult?: ToolCallResult;
147
+
148
+ /** 阈值信息(on.threshold hook 可用) */
149
+ threshold?: {
150
+ type: "tokens" | "turns" | "iterations" | "custom";
151
+ value: number;
152
+ limit?: number;
153
+ };
154
+
155
+ /** 当前错误(on.error hook 可用) */
156
+ error?: Error;
157
+
158
+ /** 当前 Agent 实例 */
159
+ agent: AgentInstance;
160
+
161
+ /** 当前迭代次数(可修改) */
162
+ iteration: number;
163
+
164
+ /** 最大迭代次数限制(before.llm hook 可用) */
165
+ maxIterations: number;
166
+
167
+ /** 消息列表(可直接修改) */
168
+ messages: ModelMessage[];
169
+
170
+ /** 可用工具列表(可直接修改) */
171
+ tools: Tool[];
172
+
173
+ /** 当前 system prompt(可直接修改) */
174
+ systemPrompt: string;
175
+
176
+ /** 额外的上下文信息(可直接修改) */
177
+ additionInfo?: string;
178
+
179
+ /** 执行上下文(可直接修改属性) */
180
+ context: AgentContext;
181
+
182
+ // ===== 内部状态(Plugin 通常不需要修改) =====
183
+
184
+ /** 是否已停止 */
185
+ _stopped?: boolean;
186
+
187
+ /** 停止原因 */
188
+ _stopReason?: string;
189
+
190
+ /** 待执行的干预动作 */
191
+ _pendingAction?: {
192
+ type: HookActionType;
193
+ payload?: unknown;
194
+ };
195
+
196
+ /** 错误列表 */
197
+ _errors?: Array<{
198
+ plugin: string;
199
+ error: string;
200
+ }>;
201
+
202
+ // ===== Memory Agent 特定字段 =====
203
+
204
+ /** Project Memory Agent 生成的摘要列表(由 Project Agent 写入,Global Agent 读取) */
205
+ projectSummaries?: ProjectSummary[];
206
+ }
207
+
208
+ /**
209
+ * Hook 干预动作
210
+ */
211
+ export type HookActionType =
212
+ | "stop" // 停止执行
213
+ | "retry" // 重试当前迭代
214
+ | "compress" // 执行压缩
215
+ | "extract_memory" // 提取记忆
216
+ | "inject_message" // 注入消息
217
+ | "skip_tool"; // 跳过当前工具调用
218
+
219
+ /**
220
+ * Hook 返回结果
221
+ */
222
+ export interface HookResult {
223
+ /** 是否继续执行(false = 停止 Agent) */
224
+ continue: boolean;
225
+
226
+ /** 干预动作(可选) */
227
+ action?: {
228
+ type: HookActionType;
229
+ payload?: unknown;
230
+ };
231
+ }
232
+
233
+ /**
234
+ * Plugin 定义
235
+ */
236
+ export interface Plugin {
237
+ /** Plugin 唯一名称 */
238
+ name: string;
239
+
240
+ /** Plugin 版本 */
241
+ version: string;
242
+
243
+ /** Plugin 描述 */
244
+ description?: string;
245
+
246
+ /** 订阅的 Hook 点及优先级 */
247
+ hooks: Array<{
248
+ point: HookPoint;
249
+ /** 优先级,默认 0,数字越大越先执行 */
250
+ priority?: number;
251
+ }>;
252
+
253
+ /** 执行函数 */
254
+ execute: (ctx: HookContext) => HookResult | Promise<HookResult>;
255
+ }
256
+
257
+ // ============================================================================
258
+ // Agent Types
259
+ // ============================================================================
260
+
261
+ /**
262
+ * Agent 类型
263
+ */
264
+ export type AgentType = "primary" | "sub" | "summary";
265
+
266
+ /**
267
+ * Agent 状态
268
+ */
269
+ export type AgentStatus = "idle" | "running" | "paused" | "stopped" | "error";
270
+
271
+ /**
272
+ * Agent 实例配置
273
+ */
274
+ export interface AgentInstanceConfig {
275
+ /** Agent 类型 */
276
+ type: AgentType;
277
+
278
+ /** Agent 名称 */
279
+ name?: string;
280
+
281
+ /** System Prompt */
282
+ systemPrompt?: string;
283
+
284
+ /** Behavior Spec ID */
285
+ behaviorSpecId?: string;
286
+
287
+ /** 使用的模型 */
288
+ model?: string;
289
+
290
+ /** 最大迭代次数 */
291
+ maxIterations?: number;
292
+
293
+ /** 最大错误重试次数 */
294
+ maxErrorRetries?: number;
295
+
296
+ /** 死循环检测阈值 */
297
+ doomLoopThreshold?: number;
298
+
299
+ /** 允许的工具列表 */
300
+ allowedTools?: string[];
301
+
302
+ /** 拒绝的工具列表 */
303
+ deniedTools?: string[];
304
+
305
+ /** 工具超时(毫秒) */
306
+ toolTimeout?: number;
307
+
308
+ /** 工具重试次数 */
309
+ toolRetries?: number;
310
+
311
+ /** 是否过滤 history 中的 tool 消息(默认过滤,避免上下文过长) */
312
+ filterHistory?: boolean;
313
+ }
314
+
315
+ /**
316
+ * Agent 实例
317
+ */
318
+ export interface AgentInstance {
319
+ /** Agent 名称 */
320
+ name: string;
321
+
322
+ /** Agent 配置 */
323
+ config: Required<AgentInstanceConfig>;
324
+
325
+ /** 当前状态 */
326
+ status: AgentStatus;
327
+
328
+ /** 注册的 Plugins */
329
+ plugins: Map<string, Plugin>;
330
+ }
331
+
332
+ /**
333
+ * Agent 执行结果
334
+ */
335
+ export interface AgentRunResult {
336
+ /** 最终文本响应 */
337
+ finalText?: string;
338
+
339
+ /** 是否被 hook 停止 */
340
+ stopped?: boolean;
341
+
342
+ /** 停止原因 */
343
+ stopReason?: string;
344
+
345
+ /** 执行的迭代次数 */
346
+ iterations: number;
347
+
348
+ /** 工具调用列表 */
349
+ toolCalls: ToolCall[];
350
+
351
+ /** 错误信息(如有) */
352
+ error?: string;
353
+ }
354
+
355
+ // ============================================================================
356
+ // LLM Types (from ../llm/types)
357
+ // ============================================================================
358
+
359
+ /**
360
+ * LLM 调用结果
361
+ *
362
+ * 复用 LLMComponent 的 LLMOutput,并扩展 Agent 特有字段
363
+ */
364
+ export interface LLMCallResult {
365
+ /** 成功 */
366
+ success: boolean;
367
+
368
+ /** 输出 */
369
+ output?: LLMOutput;
370
+
371
+ /** 错误信息 */
372
+ error?: string;
373
+
374
+ /** Usage 信息 */
375
+ usage?: {
376
+ promptTokens: number;
377
+ completionTokens: number;
378
+ totalTokens: number;
379
+ };
380
+ }
381
+
382
+ /**
383
+ * Agent 内部使用的 LLM 输出
384
+ * 独立定义以避免与 LLMOutput 的类型冲突
385
+ */
386
+ export interface AgentLLMOutput {
387
+ /** 生成的内容 */
388
+ content: string;
389
+ /** 完成原因 */
390
+ finishReason: "stop" | "length" | "content-filter" | "tool-calls" | "function-call";
391
+ /** 工具调用(兼容格式) */
392
+ toolCalls?: Array<{
393
+ id: string;
394
+ function?: {
395
+ name: string;
396
+ arguments: string;
397
+ };
398
+ name?: string;
399
+ arguments?: string;
400
+ }>;
401
+ /** Usage 信息 */
402
+ usage?: {
403
+ promptTokens: number;
404
+ completionTokens: number;
405
+ totalTokens: number;
406
+ };
407
+ /** 生成模型 */
408
+ model?: string;
409
+ /** 推理内容(思考过程) */
410
+ reasoning?: string;
411
+ }
412
+
413
+ // ============================================================================
414
+ // Summary Agent Types (new)
415
+ // ============================================================================
416
+
417
+ /**
418
+ * Summary Agent 配置
419
+ *
420
+ * 专门用于生成 session checkpoint 的 Agent
421
+ */
422
+ export interface SummaryAgentConfig extends AgentInstanceConfig {
423
+ /** Agent 类型 */
424
+ type: "summary";
425
+
426
+ /** 使用的 prompt */
427
+ promptName: "session/compact";
428
+
429
+ /** 默认模型 */
430
+ model?: string;
431
+
432
+ /** 最大迭代次数(summary 任务只需 1 次) */
433
+ maxIterations: 1;
434
+ }
435
+
436
+ /**
437
+ * Summary Agent 运行选项
438
+ */
439
+ export interface SummaryAgentRunOptions {
440
+ /** 消息列表 */
441
+ messages: Array<{
442
+ role: string;
443
+ content: string;
444
+ }>;
445
+
446
+ /** 用户提供的上下文/提示 */
447
+ userContext?: string;
448
+
449
+ /** 期望的输出格式 */
450
+ outputFormat: "json";
451
+
452
+ /**
453
+ * 场景化提示 (Scenario Hint)
454
+ *
455
+ * 用于指导 checkpoint 生成的重点方向。
456
+ * 当提供此参数时,会在系统提示中添加场景上下文,
457
+ * 帮助 LLM 生成更符合当前场景的 checkpoint。
458
+ */
459
+ scenarioHint?: string;
460
+ }
461
+
462
+ /**
463
+ * Summary Agent 运行结果
464
+ */
465
+ export interface SummaryAgentResult {
466
+ /** Checkpoint 标题 */
467
+ title: string;
468
+
469
+ /** 过程要点 */
470
+ processKeyPoints: string[];
471
+
472
+ /** 当前状态 */
473
+ currentState: string;
474
+
475
+ /** 后续待跟进 */
476
+ nextSteps: string[];
477
+
478
+ /** 用户意图列表 - 从对话中提取的用户相关意图 */
479
+ userIntents: string[];
480
+
481
+ /** 原始 LLM 响应 */
482
+ rawResponse?: string;
483
+ }
484
+
485
+ // ============================================================================
486
+ // Compact Hint Generation Types (new)
487
+ // ============================================================================
488
+
489
+ /**
490
+ * Compact Hint 生成选项
491
+ *
492
+ * 用于两阶段自动压缩流程中的第一阶段:
493
+ * 根据会话历史生成场景化的压缩提示
494
+ */
495
+ export interface CompactHintGenerationOptions {
496
+ /** 消息列表 */
497
+ messages: Array<{
498
+ role: string;
499
+ content: string;
500
+ }>;
501
+
502
+ /**
503
+ * 会话上下文信息(可选)
504
+ *
505
+ * 包含会话相关的额外信息,如:
506
+ * - 当前活跃任务信息
507
+ * - 工作目录
508
+ * - 最近的操作记录等
509
+ */
510
+ sessionContext?: {
511
+ activeTaskId?: string;
512
+ activeTaskTitle?: string;
513
+ workingDirectory?: string;
514
+ recentActions?: string[];
515
+ };
516
+ }
517
+
518
+ /**
519
+ * Compact Hint 生成结果
520
+ */
521
+ export interface CompactHintGenerationResult {
522
+ /**
523
+ * 场景化压缩指导提示(自然语言)
524
+ *
525
+ * 这是一段"压缩指导 Prompt",用于告诉 Compact 阶段:
526
+ * "在当前这个场景/目标/任务下,生成 checkpoint 时应该重点关注什么"
527
+ *
528
+ * 示例:
529
+ * "Feature development. User is implementing JWT authentication for auth-service.
530
+ * Focus on: auth flow decisions, token refresh progress, middleware implementation."
531
+ */
532
+ hint: string;
533
+
534
+ /** 原始 LLM 响应 */
535
+ rawResponse?: string;
536
+ }