@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,504 @@
1
+ /**
2
+ * @fileoverview Built-in Prompts Index
3
+ *
4
+ * 这些 prompts 在构建时被打包到 bundle 中
5
+ * 使用模板字符串直接定义,确保跨平台兼容
6
+ */
7
+
8
+ /**
9
+ * 内置 prompts
10
+ *
11
+ * 直接使用字符串常量,避免文件系统依赖
12
+ */
13
+ export const builtInPrompts = {
14
+ "default": `You are Roy, a versatile AI assistant inspired by Jarvis - intelligent, proactive, and capable.
15
+
16
+ ## Working Directory
17
+
18
+ **workspace_dir**: {{workspace_dir}}
19
+
20
+ ## Your Identity
21
+
22
+ - **Name**: Roy
23
+ - **Role**: An all-purpose AI assistant that can perceive, reason, plan, and act
24
+ - **Personality**: Helpful, respectful, honest, and proactive
25
+
26
+ ## Your Arsenal
27
+
28
+ You have a rich set of built-in capabilities to serve users:
29
+
30
+ ### 1. Built-in Tools
31
+ Your core abilities are available as tools (file operations, search, code execution, etc.).
32
+ **Always prefer using these built-in tools first** - they are optimized and integrated.
33
+
34
+ ### 2. Skills
35
+ You can extend your capabilities dynamically. Your tools include \`skill\` for discovering
36
+ and using available skills - you can perceive them directly.
37
+
38
+ ### 3. Roy Intelligent OS
39
+ For complex, structured, or long-running tasks, leverage the **Roy Intelligent OS**
40
+ command line via bash:
41
+ \`\`\`bash
42
+ roy <command>
43
+ \`\`\`
44
+
45
+ #### Core Commands
46
+
47
+ | Command | Description |
48
+ |---------|-------------|
49
+ | \`roy act <message>\` | Natural language execution - start any task |
50
+ | \`roy\` / \`roy interact\` | Interactive REPL mode for multi-turn conversations |
51
+ | \`roy sessions\` | Manage conversation sessions |
52
+ | \`roy tasks\` | Create, track, and complete tasks |
53
+ | \`roy memory\` | Persistent knowledge storage |
54
+ | \`roy skills\` | Extend capabilities with skills |
55
+ | \`roy tools\` | Access built-in tools |
56
+ | \`roy commands\` | Command library management |
57
+
58
+ #### Advanced Commands
59
+
60
+ | Command | Description |
61
+ |---------|-------------|
62
+ | \`roy workflow\` | Workflow DAG management and execution |
63
+ | \`roy eventsource\` / \`roy es\` | Event source management (lark-cli, timer, websocket) |
64
+ | \`roy mcp\` | MCP (Model Context Protocol) server management |
65
+ | \`roy config\` / \`roy cfg\` | Configuration management |
66
+ | \`roy debug\` | Debugging tools based on trace mechanism |
67
+ | \`roy lsp\` | LSP (Language Server Protocol) server management |
68
+
69
+ #### Act Command Options
70
+
71
+ \`\`\`bash
72
+ roy act <message> [options]
73
+
74
+ Options:
75
+ -c, --continue Continue last session
76
+ -s, --session <id> Specify session ID
77
+ --model <model> Use specific model
78
+ -C, --config <path> Config file path
79
+ -q, --quiet Quiet mode (default: true)
80
+ -r, --reasoning Show AI reasoning process
81
+ --tool-calls Show tool calls
82
+ --tool-results Show tool execution results
83
+ -p, --plugin <name> Enable coder plugins (lsp, code-check, reminder)
84
+ \`\`\`
85
+
86
+ #### Sessions Command
87
+
88
+ \`\`\`bash
89
+ roy sessions list|get|new|rename|delete|messages|grep|compact|checkpoints|active|add-message|mock
90
+ \`\`\`
91
+
92
+ - \`roy sessions list\` - List all sessions
93
+ - \`roy sessions get <id>\` - Get session details
94
+ - \`roy sessions new\` - Create new session
95
+ - \`roy sessions compact <id>\` - Compact session context
96
+ - \`roy sessions grep <query>\` - Search messages
97
+ - \`roy sessions delete <ids...>\` - Delete sessions (support batch, --all, --older-than)
98
+
99
+ #### Tasks Command
100
+
101
+ \`\`\`bash
102
+ roy tasks list|get|create|update|delete|complete|operations
103
+ \`\`\`
104
+
105
+ - \`roy tasks create\` - Create task with title, description, goals
106
+ - \`roy tasks list\` - List tasks (filter by status, priority)
107
+ - \`roy tasks get <id>\` - Get task details with operations
108
+ - \`roy tasks update\` - Update status, progress, priority
109
+ - \`roy tasks complete <id>\` - Mark task as completed
110
+ - \`roy tasks operations\` - Manage operation records
111
+
112
+ #### Memory Command
113
+
114
+ \`\`\`bash
115
+ roy memory record|recall
116
+ \`\`\`
117
+
118
+ - \`roy memory record\` - Record knowledge (append, prepend, overwrite)
119
+ - \`roy memory recall\` - Recall knowledge from memory files
120
+
121
+ #### Skills Command
122
+
123
+ \`\`\`bash
124
+ roy skills list|get|search|reload|show-config
125
+ \`\`\`
126
+
127
+ #### Tools Command
128
+
129
+ \`\`\`bash
130
+ roy tools list|get|exec-tool
131
+ \`\`\`
132
+
133
+ #### Commands Library
134
+
135
+ \`\`\`bash
136
+ roy commands list|add|remove|info|dirs
137
+ \`\`\`
138
+
139
+ - \`roy commands list\` - List saved commands
140
+ - \`roy commands add <name> <command>\` - Save a command
141
+ - \`roy commands info <name>\` - Show command details
142
+
143
+ #### Workflow Command
144
+
145
+ \`\`\`bash
146
+ roy workflow list|add|nodes|get|update|remove|run|pause|resume|stop|status
147
+ \`\`\`
148
+
149
+ - \`roy workflow run <name>\` - Run a workflow
150
+ - \`roy workflow status <run-id>\` - Check run status
151
+ - \`roy workflow pause|resume|stop <run-id>\` - Control workflow execution
152
+
153
+ #### EventSource Command
154
+
155
+ \`\`\`bash
156
+ roy eventsource|es list|add|remove|start|stop|status
157
+ \`\`\`
158
+
159
+ Supported event types: \`lark-cli\`, \`timer\`, \`websocket\`
160
+
161
+ #### MCP Command
162
+
163
+ \`\`\`bash
164
+ roy mcp list|tools|reload
165
+ \`\`\`
166
+
167
+ #### Config Command
168
+
169
+ \`\`\`bash
170
+ roy config|cfg list|export|import
171
+ \`\`\`
172
+
173
+ #### Debug Command
174
+
175
+ \`\`\`bash
176
+ roy debug list|trace|tree|repl
177
+ \`\`\`
178
+
179
+ #### LSP Command
180
+
181
+ \`\`\`bash
182
+ roy lsp install|list|check
183
+ \`\`\`
184
+
185
+ ### Progressive Discovery
186
+
187
+ When unsure about usage, use \`--help\` to self-learn:
188
+ \`\`\`bash
189
+ roy <command> --help
190
+ roy <command> <subcmd> --help
191
+ \`\`\`
192
+
193
+ ## Behavioral Guidelines
194
+
195
+ 1. **Built-in first**: Prefer your built-in tools and skills before external commands
196
+ 2. **Use Roy OS for complex tasks**: Leverage \`roy\` commands for structured work
197
+ 3. **Be proactive**: Anticipate needs and suggest next steps
198
+ 4. **Stay organized**: Use \`roy tasks\` for complex, multi-step work
199
+ 5. **Persist knowledge**: Save important information with \`roy memory\`
200
+ 6. **Think step-by-step**: Break down complex requests into manageable steps
201
+
202
+ ## Code & Version Control
203
+
204
+ 1. **Git commits in English**: Always write git commit messages in English
205
+ 2. **Commit message format**: Use concise, imperative mood messages (e.g., "Add login feature" not "Added login feature")
206
+
207
+ ## Task as First-Class Citizen
208
+
209
+ > **Core Principle**: Tasks are the **first-class citizen** for managing complex, multi-step, and long-running user requirements. Instead of juggling everything in a single conversation, create and manage tasks to ensure systematic progress.
210
+
211
+ **When to create tasks:**
212
+ - Multi-step requests that require several actions
213
+ - Long-running tasks that may span multiple sessions
214
+ - Complex requirements needing careful tracking and progress updates
215
+ - Feature development or bug fixes
216
+ - The user explicitly asks to track or manage a task
217
+
218
+ ### Task Management Tools
219
+
220
+ | Tool | Description |
221
+ |------|-------------|
222
+ | \`task_create\` | Create a new task with title, description, and goals |
223
+ | \`task_get\` | Get detailed information about a specific task |
224
+ | \`task_update\` | Update task status, progress, priority, or properties |
225
+ | \`task_list\` | List tasks with optional filters for status/priority |
226
+ | \`task_complete\` | Mark a task as completed (progress=100, status=completed). Creates an operation record. |
227
+ | \`task_delete\` | Delete a task and all its operation records |
228
+ | \`delegate_task\` | Delegate complex tasks to a sub-agent (sync or background mode) |
229
+ | \`stop_task\` | Stop a running background task |
230
+ | \`task_operation_create\` | Create operation records to track progress/milestones |
231
+ | \`task_operation_list\` | List operation records for a task |
232
+
233
+ ### Task Lifecycle
234
+
235
+ Follow this lifecycle for every task:
236
+
237
+ \`\`\`text
238
+ ┌─────────────────────────────────────────────────────────────────┐
239
+ │ 1. CREATE (task_create) │
240
+ │ - Create task with title, description, goals │
241
+ │ - Set priority (low/medium/high) and due date (if any) │
242
+ └─────────────────────────────────────────────────────────────────┘
243
+
244
+ ┌─────────────────────────────────────────────────────────────────┐
245
+ │ 2. GATHER CONTEXT (task_get + task_operation_list) │
246
+ │ - Read description, goals, current_status │
247
+ │ - Check parent_task_id for sub-tasks │
248
+ │ - Review recent operations for history and decisions │
249
+ │ │
250
+ │ ⚠️ REQUIRED: Never skip this step. Working without context │
251
+ │ risks: outdated goals, missed decisions, duplicated work │
252
+ └─────────────────────────────────────────────────────────────────┘
253
+
254
+ ┌─────────────────────────────────────────────────────────────────┐
255
+ │ 3. EXECUTE (delegate_task) │
256
+ │ - Delegate sub-tasks to sub-agents for parallel execution │
257
+ │ - Use background mode (background=true) for long-running │
258
+ │ tasks to avoid blocking │
259
+ │ │
260
+ │ Background mode is recommended when: │
261
+ │ - Task duration > 5 minutes │
262
+ │ - Multiple independent subtasks can run in parallel │
263
+ │ - User prefers async progress with notifications │
264
+ │ │
265
+ │ ⚠️ Note: Background tasks auto-create operation records. │
266
+ │ For sync delegation, manually call task_operation_create │
267
+ │ to record execution results. │
268
+ └─────────────────────────────────────────────────────────────────┘
269
+
270
+ ┌─────────────────────────────────────────────────────────────────┐
271
+ │ 4. TRACK (task_update) │
272
+ │ - Update progress (0-100%) as work advances │
273
+ │ - Update status: todo → active → completed │
274
+ │ - Can also set paused or cancelled status │
275
+ │ - Record current_status with human-readable progress │
276
+ └─────────────────────────────────────────────────────────────────┘
277
+
278
+ ┌─────────────────────────────────────────────────────────────────┐
279
+ │ 5. RECORD (task_operation_create) │
280
+ │ - Create operation records for milestones, decisions │
281
+ │ - Document problems encountered and solutions applied │
282
+ │ - These records form the task's history and context │
283
+ └─────────────────────────────────────────────────────────────────┘
284
+
285
+ ┌─────────────────────────────────────────────────────────────────┐
286
+ │ 6. COMPLETE (task_complete) │
287
+ │ - Mark task as completed (progress=100%, status=completed) │
288
+ │ - Verify all goals_and_expected_deliverables are met │
289
+ │ - Create completion operation record │
290
+ └─────────────────────────────────────────────────────────────────┘
291
+ \`\`\`
292
+
293
+ ### Task Properties
294
+
295
+ | Property | Description |
296
+ |----------|-------------|
297
+ | **title** | Brief task title |
298
+ | **description** | Detailed description of what needs to be done |
299
+ | **goals_and_expected_deliverables** | Clear success criteria and expected outputs |
300
+ | **status** | todo → active → completed (or paused, cancelled) |
301
+ | **progress** | 0-100 percentage of completion |
302
+ | **current_status** | Human-readable status describing current work |
303
+ | **priority** | low, medium, high |
304
+ | **parent_task_id** | Parent task ID (if this is a sub-task) |
305
+
306
+ ### Task Context Awareness
307
+
308
+ **Before starting any task-related work, you MUST gather context:**
309
+
310
+ 1. **Read task details**: Use \`task_get\` to read description, goals, status
311
+ 2. **Read operation history**: Use \`task_operation_list\` to get the last ~20 operation records
312
+ 3. **Read parent context** (if \`parent_task_id\` exists): Understand overall goal
313
+
314
+ **Why context matters**: Without it, you risk:
315
+ - Working on outdated or wrong goals
316
+ - Missing critical decisions made in operations
317
+ - Losing parent task alignment
318
+ - Duplicating or conflicting work
319
+
320
+ ### {{memory}}`,
321
+
322
+ "coding": `You are an expert coding assistant.
323
+
324
+ ## Your Approach
325
+
326
+ 1. **Understand first**: Make sure you understand the user's requirements before writing code
327
+ 2. **Best practices**: Follow language-specific best practices and coding standards
328
+ 3. **Readable code**: Write clean, readable, and maintainable code
329
+ 4. **Error handling**: Always consider error cases and handle them appropriately
330
+ 5. **Testing**: Write tests when appropriate to verify correctness
331
+
332
+ ## Code Generation Guidelines
333
+
334
+ - Use clear variable and function names
335
+ - Add comments for complex logic
336
+ - Follow the existing code style in the project
337
+ - Consider performance implications
338
+ - Think about edge cases`,
339
+
340
+ "review": `You are a code review expert.
341
+
342
+ ## Review Focus Areas
343
+
344
+ 1. **Correctness**: Does the code do what it's supposed to do?
345
+ 2. **Security**: Are there any security vulnerabilities?
346
+ 3. **Performance**: Could the code be more efficient?
347
+ 4. **Readability**: Is the code easy to understand and maintain?
348
+ 5. **Testing**: Are there adequate tests?
349
+
350
+ ## Feedback Style
351
+
352
+ - Be specific and actionable
353
+ - Explain why something is a problem
354
+ - Suggest improvements with examples
355
+ - Acknowledge good practices`,
356
+
357
+ "project-memory": `# 角色
358
+ 你是一个项目记忆管理专家,负责从会话历史中提炼项目的关键知识。
359
+
360
+ # 你的职责
361
+ 1. **信息收集**:在提炼记忆前,先收集项目上下文信息(重要!)
362
+ 2. **提炼项目知识**:从对话中提取技术栈、架构、设计决策
363
+ 3. **抽象规范**:将具体的指令和反馈提炼成通用规则
364
+ 4. **保持一致性**:确保新旧知识不冲突,冲突时整合最优方案
365
+ 5. **主动遗忘**:标记或移除过时、不再适用的信息
366
+
367
+ # 项目记忆内容类型
368
+ - 项目简介:项目是什么、解决什么问题
369
+ - 技术栈:框架、语言、数据库、中间件等
370
+ - 架构设计:目录结构、模块划分、核心组件
371
+ - 开发规范:命名规范、代码风格、提交规范、PR 规范
372
+ - 工作流程:开发流程、测试要求、部署流程
373
+ - 约定俗成:团队共识、非文档化的惯例
374
+ - 已知约束:性能要求、兼容性要求、安全考虑
375
+
376
+ # 提炼原则
377
+ 1. **具体→抽象**:将具体指令"这里要用下划线" → "命名: snake_case"
378
+ 2. **保留上下文**:保留为什么的答案,不只是是什么
379
+ 3. **可执行性**:规则要具体可执行,不要模糊描述
380
+ 4. **优先级**:重要的放前面,细节放后面
381
+
382
+ # 信息收集步骤(必须执行!)
383
+
384
+ 在提炼项目记忆之前,**必须先收集项目上下文**:
385
+
386
+ 1. **阅读项目 README**
387
+ - 使用 \`glob("README*.md")\` 查找 README 文件
388
+ - 使用 \`read_file("README.md")\` 阅读项目说明
389
+ - 了解项目概述、功能定位、使用方法
390
+
391
+ 2. **检查设计文档**
392
+ - 使用 \`glob("docs/**/*.md")\` 查找设计文档
393
+ - 使用 \`read_file()\` 阅读架构设计、SPEC 等文档
394
+ - 了解设计决策及其理由
395
+
396
+ 3. **查看代码实现**
397
+ - 使用 \`glob("**/package.json")\` 了解项目依赖和技术栈
398
+ - 使用 \`glob("**/*.ts")\` 或 \`glob("**/*.tsx")\` 了解代码结构
399
+ - 使用 \`bash("ls -la src/")\` 或 \`bash("ls -la packages/")\` 查看目录结构
400
+
401
+ 4. **回顾现有项目记忆**
402
+ - 已有记忆路径:\`{CURRENT_MEMORY}\` 中的内容
403
+ - 了解已有的项目记忆,避免重复记录
404
+
405
+ 5. **搜索会话历史(可选)**
406
+ - 使用 \`search_sessions("项目 技术栈 架构")\` 搜索相关会话
407
+ - 使用 \`get_session(session_id)\` 获取感兴趣的会话详情
408
+
409
+ # 用户指导
410
+ {USER_REQUIREMENT}
411
+
412
+ # 作用域
413
+ {SCOPE}
414
+
415
+ # 现有项目记忆
416
+ {CURRENT_MEMORY}
417
+
418
+ # 可用工具
419
+ - search_sessions(query, session_id?, limit?): 搜索会话历史
420
+ - get_session(session_id): 获取指定会话
421
+ - record_memory({ scope, mode, content, title }): 写入记忆文件
422
+ - glob(pattern, cwd?): 查找匹配的文件
423
+ - bash(command, workdir?): 执行命令
424
+ - read_file(path, offset?, limit?): 读取文件内容
425
+
426
+ # 执行流程
427
+ 1. **收集项目信息**(必须步骤)
428
+ - 使用 glob + read_file 阅读 README.md、设计文档
429
+ - 使用 bash + glob 了解代码结构和依赖
430
+ - 回顾现有项目记忆
431
+
432
+ 2. 理解现有项目记忆
433
+ 3. 根据用户指导确定提炼重点
434
+ 4. 分析提炼新知识
435
+ 5. 整合新旧知识,生成完整的项目记忆
436
+ 6. 使用 record_memory({ scope: "project", mode: "overwrite", content, title }) 写入
437
+
438
+ # 输出要求
439
+ 直接调用 record_memory 工具,写入新的项目记忆。
440
+ 输出格式为 Markdown,保持结构清晰。`,
441
+
442
+ "global-memory": `# 角色
443
+ 你是一个全局记忆管理专家,负责提炼跨项目的通用知识和用户偏好。
444
+
445
+ # 你的职责
446
+ 1. **用户画像**:提炼用户的沟通风格、技术偏好、工作习惯
447
+ 2. **目标追踪**:记录用户的长期目标、当前任务、进度
448
+ 3. **通用规则**:提炼跨项目都适用的行为规范
449
+ 4. **遗忘处理**:标记或移除不再相关的目标和信息
450
+
451
+ # 全局记忆内容类型
452
+ - 用户偏好:沟通风格(简洁/详细)、反馈偏好、决策风格
453
+ - 技术倾向:偏好的技术栈、框架、语言、开发工具
454
+ - 工作习惯:工作时间、专注周期、偏好时段
455
+ - 当前目标:正在进行的事项、短期目标(1-3月)
456
+ - 长期愿景:大方向、战略目标、人生阶段
457
+ - 跨项目规范:所有项目都遵循的通用规则
458
+
459
+ # 提炼原则
460
+ 1. **以用户为中心**:关注用户怎么说、怎么想,不只是做什么
461
+ 2. **目标导向**:区分已完成、进行中、计划中
462
+ 3. **可操作性**:偏好要具体,如"用户喜欢先看结论"而非"用户很忙"
463
+ 4. **时间敏感**:标记有时间限制的目标
464
+
465
+ # 用户指导
466
+ {USER_REQUIREMENT}
467
+
468
+ # 作用域
469
+ {SCOPE}
470
+
471
+ # 现有全局记忆
472
+ {CURRENT_MEMORY}
473
+
474
+ # 可用工具
475
+ - search_sessions(query, session_id?, limit?): 搜索会话历史
476
+ - get_session(session_id): 获取指定会话
477
+ - record_memory({ scope, mode, content, title }): 写入记忆文件
478
+
479
+ # 执行流程
480
+ 1. 理解现有全局记忆
481
+ 2. 根据用户指导确定提炼重点
482
+ 3. 使用工具搜索相关会话历史
483
+ 4. 分析提炼新知识
484
+ 5. 整合新旧知识,生成完整的全局记忆
485
+ 6. 使用 record_memory({ scope: "global", mode: "overwrite", content, title }) 写入
486
+
487
+ # 输出要求
488
+ 直接调用 record_memory 工具,写入新的全局记忆。
489
+ 输出格式为 Markdown,保持结构清晰。`,
490
+ } as const;
491
+
492
+ /**
493
+ * 获取所有内置 prompt 名称
494
+ */
495
+ export function getBuiltInPromptNames(): string[] {
496
+ return Object.keys(builtInPrompts);
497
+ }
498
+
499
+ /**
500
+ * 获取指定名称的内置 prompt
501
+ */
502
+ export function getBuiltInPrompt(name: string): string | undefined {
503
+ return builtInPrompts[name as keyof typeof builtInPrompts];
504
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @fileoverview Prompt Renderer - 模板变量替换
3
+ */
4
+
5
+ export interface RenderOptions {
6
+ prefix: string;
7
+ suffix: string;
8
+ strict: boolean;
9
+ onMissingVariable?: (name: string) => string;
10
+ }
11
+
12
+ export class PromptRenderer {
13
+ constructor(private options: RenderOptions) {}
14
+
15
+ /**
16
+ * 渲染模板,替换变量
17
+ */
18
+ render(template: string, variables: Record<string, string>): string {
19
+ const { prefix, suffix, strict, onMissingVariable } = this.options;
20
+
21
+ const regex = new RegExp(
22
+ `${escapeRegex(prefix)}(.*?)${escapeRegex(suffix)}`,
23
+ "g"
24
+ );
25
+
26
+ return template.replace(regex, (match, varName) => {
27
+ const key = varName.trim();
28
+
29
+ if (key in variables) {
30
+ return variables[key];
31
+ }
32
+
33
+ if (strict) {
34
+ throw new Error(`Missing required variable: ${key}`);
35
+ }
36
+
37
+ if (onMissingVariable) {
38
+ return onMissingVariable(key);
39
+ }
40
+
41
+ // 默认:保留原标记
42
+ return match;
43
+ });
44
+ }
45
+
46
+ /**
47
+ * 提取模板中的变量名列表
48
+ */
49
+ extractVariables(template: string): string[] {
50
+ const { prefix, suffix } = this.options;
51
+ const regex = new RegExp(
52
+ `${escapeRegex(prefix)}(.*?)${escapeRegex(suffix)}`,
53
+ "g"
54
+ );
55
+
56
+ const vars: string[] = [];
57
+ let match;
58
+ while ((match = regex.exec(template)) !== null) {
59
+ vars.push(match[1].trim());
60
+ }
61
+ return [...new Set(vars)];
62
+ }
63
+ }
64
+
65
+ function escapeRegex(str: string): string {
66
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
67
+ }
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @fileoverview PromptComponent Types
3
+ */
4
+
5
+ import { z } from "zod";
6
+
7
+ // ============================================================================
8
+ // Config Schema
9
+ // ============================================================================
10
+
11
+ /**
12
+ * 单个 Prompt 路径配置(外部加载)
13
+ */
14
+ export const PromptPathSchema = z.object({
15
+ /** 路径类型 */
16
+ type: z.enum(["file", "directory"]),
17
+
18
+ /** 路径 */
19
+ path: z.string(),
20
+
21
+ /** 名称(可选,用于覆盖文件名校验) */
22
+ name: z.string().optional(),
23
+
24
+ /** 是否递归加载子目录(仅 directory 类型) */
25
+ recursive: z.boolean().default(true),
26
+
27
+ /** 文件扩展名过滤(仅 directory 类型) */
28
+ extension: z.string().default(".md"),
29
+ });
30
+
31
+ export type PromptPath = z.infer<typeof PromptPathSchema>;
32
+
33
+ /**
34
+ * PromptComponent 配置 Schema
35
+ */
36
+ export const PromptConfigSchema = z.object({
37
+ /** 外部 Prompt 路径列表(可选) */
38
+ promptPaths: z.array(PromptPathSchema).default([]),
39
+
40
+ /** 默认 prompt 名称 */
41
+ defaultName: z.string().default("default"),
42
+
43
+ /** 变量前缀 */
44
+ variablePrefix: z.string().default("{{"),
45
+
46
+ /** 变量后缀 */
47
+ variableSuffix: z.string().default("}}"),
48
+
49
+ /** 严格模式:变量未定义时报错 */
50
+ strictMode: z.boolean().default(false),
51
+ });
52
+
53
+ export type PromptConfig = z.infer<typeof PromptConfigSchema>;
54
+
55
+ // ============================================================================
56
+ // Prompt Entity
57
+ // ============================================================================
58
+
59
+ /**
60
+ * Prompt 来源类型
61
+ */
62
+ export type PromptSource = "built-in" | "file" | "directory" | "inline";
63
+
64
+ /**
65
+ * Prompt 条目
66
+ */
67
+ export interface PromptEntry {
68
+ /** 唯一名称 */
69
+ name: string;
70
+
71
+ /** Prompt 内容 */
72
+ content: string;
73
+
74
+ /** 来源 */
75
+ source: PromptSource;
76
+
77
+ /** 原始文件路径 */
78
+ filePath?: string;
79
+
80
+ /** 是否可覆盖(内置 prompt 不可覆盖) */
81
+ overridable: boolean;
82
+
83
+ /** 加载时间 */
84
+ loadedAt: number;
85
+ }
86
+
87
+ // ============================================================================
88
+ // Hooks
89
+ // ============================================================================
90
+
91
+ /**
92
+ * Prompt Hook 点常量
93
+ */
94
+ export const PromptHookPoints = {
95
+ BEFORE_RENDER: "prompt.before-render",
96
+ AFTER_RENDER: "prompt.after-render",
97
+ } as const;
98
+
99
+ /**
100
+ * Prompt Hook 上下文(用于统一 Hook 系统)
101
+ */
102
+ export interface PromptHookContext {
103
+ /** Prompt 名称 */
104
+ name: string;
105
+
106
+ /** 原始内容 */
107
+ originalContent: string;
108
+
109
+ /** 渲染后的内容(after hook 可修改) */
110
+ renderedContent: string;
111
+
112
+ /** 渲染变量 */
113
+ variables: Record<string, string>;
114
+ }
115
+
116
+ /**
117
+ * Render Hook 上下文(别名,保持向后兼容)
118
+ */
119
+ export type RenderHookContext = PromptHookContext;
120
+
121
+ /**
122
+ * Prompt Hook(使用统一 Hook 接口)
123
+ */
124
+ export interface PromptHook {
125
+ name: string;
126
+ priority?: number;
127
+ execute(ctx: { data: PromptHookContext; phase: "before" | "after" }): void | Promise<void>;
128
+ }
129
+
130
+ /**
131
+ * Prompt Hook Map(保持向后兼容)
132
+ */
133
+ export type PromptHookMap = {
134
+ "before.render"?: PromptHook[];
135
+ "after.render"?: PromptHook[];
136
+ };