@ixo/oracle-runtime 0.0.1

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 (583) hide show
  1. package/dist/bootstrap/ambient-factory.d.ts +32 -0
  2. package/dist/bootstrap/ambient-factory.d.ts.map +1 -0
  3. package/dist/bootstrap/ambient-factory.js +128 -0
  4. package/dist/bootstrap/create-oracle-app.d.ts +112 -0
  5. package/dist/bootstrap/create-oracle-app.d.ts.map +1 -0
  6. package/dist/bootstrap/create-oracle-app.js +530 -0
  7. package/dist/bootstrap/graceful-shutdown.d.ts +20 -0
  8. package/dist/bootstrap/graceful-shutdown.d.ts.map +1 -0
  9. package/dist/bootstrap/graceful-shutdown.js +61 -0
  10. package/dist/bootstrap/index.d.ts +13 -0
  11. package/dist/bootstrap/index.d.ts.map +1 -0
  12. package/dist/bootstrap/index.js +6 -0
  13. package/dist/bootstrap/inspect.d.ts +74 -0
  14. package/dist/bootstrap/inspect.d.ts.map +1 -0
  15. package/dist/bootstrap/inspect.js +111 -0
  16. package/dist/bootstrap/plugin-loader.d.ts +50 -0
  17. package/dist/bootstrap/plugin-loader.d.ts.map +1 -0
  18. package/dist/bootstrap/plugin-loader.js +119 -0
  19. package/dist/bootstrap/runtime-app-module.d.ts +38 -0
  20. package/dist/bootstrap/runtime-app-module.d.ts.map +1 -0
  21. package/dist/bootstrap/runtime-app-module.js +114 -0
  22. package/dist/bootstrap/schema-composer.d.ts +46 -0
  23. package/dist/bootstrap/schema-composer.d.ts.map +1 -0
  24. package/dist/bootstrap/schema-composer.js +65 -0
  25. package/dist/config/base-env-config.d.ts +31 -0
  26. package/dist/config/base-env-config.d.ts.map +1 -0
  27. package/dist/config/base-env-config.js +70 -0
  28. package/dist/config/base-env-schema.d.ts +77 -0
  29. package/dist/config/base-env-schema.d.ts.map +1 -0
  30. package/dist/config/base-env-schema.js +102 -0
  31. package/dist/events/scoped-emitter.d.ts +33 -0
  32. package/dist/events/scoped-emitter.d.ts.map +1 -0
  33. package/dist/events/scoped-emitter.js +32 -0
  34. package/dist/graph/index.d.ts +8 -0
  35. package/dist/graph/index.d.ts.map +1 -0
  36. package/dist/graph/index.js +6 -0
  37. package/dist/graph/main-agent-types.d.ts +88 -0
  38. package/dist/graph/main-agent-types.d.ts.map +1 -0
  39. package/dist/graph/main-agent-types.js +20 -0
  40. package/dist/graph/main-agent.d.ts +16 -0
  41. package/dist/graph/main-agent.d.ts.map +1 -0
  42. package/dist/graph/main-agent.js +251 -0
  43. package/dist/graph/middlewares/capability-gate-middleware.d.ts +35 -0
  44. package/dist/graph/middlewares/capability-gate-middleware.d.ts.map +1 -0
  45. package/dist/graph/middlewares/capability-gate-middleware.js +54 -0
  46. package/dist/graph/middlewares/index.d.ts +7 -0
  47. package/dist/graph/middlewares/index.d.ts.map +1 -0
  48. package/dist/graph/middlewares/index.js +6 -0
  49. package/dist/graph/middlewares/page-context-middleware.d.ts +23 -0
  50. package/dist/graph/middlewares/page-context-middleware.d.ts.map +1 -0
  51. package/dist/graph/middlewares/page-context-middleware.js +68 -0
  52. package/dist/graph/middlewares/safety-guardrail-middleware.d.ts +26 -0
  53. package/dist/graph/middlewares/safety-guardrail-middleware.d.ts.map +1 -0
  54. package/dist/graph/middlewares/safety-guardrail-middleware.js +88 -0
  55. package/dist/graph/middlewares/summarization-middleware.d.ts +17 -0
  56. package/dist/graph/middlewares/summarization-middleware.d.ts.map +1 -0
  57. package/dist/graph/middlewares/summarization-middleware.js +62 -0
  58. package/dist/graph/middlewares/tool-repetition-guard-middleware.d.ts +24 -0
  59. package/dist/graph/middlewares/tool-repetition-guard-middleware.d.ts.map +1 -0
  60. package/dist/graph/middlewares/tool-repetition-guard-middleware.js +112 -0
  61. package/dist/graph/middlewares/tool-validation-middleware.d.ts +24 -0
  62. package/dist/graph/middlewares/tool-validation-middleware.d.ts.map +1 -0
  63. package/dist/graph/middlewares/tool-validation-middleware.js +61 -0
  64. package/dist/graph/prompt-composer.d.ts +69 -0
  65. package/dist/graph/prompt-composer.d.ts.map +1 -0
  66. package/dist/graph/prompt-composer.js +315 -0
  67. package/dist/graph/state.d.ts +65 -0
  68. package/dist/graph/state.d.ts.map +1 -0
  69. package/dist/graph/state.js +60 -0
  70. package/dist/graph/sub-agent-fallback.d.ts +56 -0
  71. package/dist/graph/sub-agent-fallback.d.ts.map +1 -0
  72. package/dist/graph/sub-agent-fallback.js +79 -0
  73. package/dist/graph/subagent-as-tool.d.ts +77 -0
  74. package/dist/graph/subagent-as-tool.d.ts.map +1 -0
  75. package/dist/graph/subagent-as-tool.js +197 -0
  76. package/dist/graph/wrap-plugin-tool.d.ts +28 -0
  77. package/dist/graph/wrap-plugin-tool.d.ts.map +1 -0
  78. package/dist/graph/wrap-plugin-tool.js +30 -0
  79. package/dist/index.d.ts +33 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +28 -0
  82. package/dist/llm/index.d.ts +2 -0
  83. package/dist/llm/index.d.ts.map +1 -0
  84. package/dist/llm/index.js +1 -0
  85. package/dist/llm/llm-provider.d.ts +41 -0
  86. package/dist/llm/llm-provider.d.ts.map +1 -0
  87. package/dist/llm/llm-provider.js +130 -0
  88. package/dist/manifest/index.d.ts +6 -0
  89. package/dist/manifest/index.d.ts.map +1 -0
  90. package/dist/manifest/index.js +3 -0
  91. package/dist/manifest/schema.d.ts +31 -0
  92. package/dist/manifest/schema.d.ts.map +1 -0
  93. package/dist/manifest/schema.js +44 -0
  94. package/dist/manifest/tier1-renderer.d.ts +31 -0
  95. package/dist/manifest/tier1-renderer.d.ts.map +1 -0
  96. package/dist/manifest/tier1-renderer.js +68 -0
  97. package/dist/manifest/validator.d.ts +34 -0
  98. package/dist/manifest/validator.d.ts.map +1 -0
  99. package/dist/manifest/validator.js +111 -0
  100. package/dist/matrix/checkpointer/matrix-upload-utils.d.ts +66 -0
  101. package/dist/matrix/checkpointer/matrix-upload-utils.d.ts.map +1 -0
  102. package/dist/matrix/checkpointer/matrix-upload-utils.js +228 -0
  103. package/dist/matrix/checkpointer/type.d.ts +4 -0
  104. package/dist/matrix/checkpointer/type.d.ts.map +1 -0
  105. package/dist/matrix/checkpointer/type.js +1 -0
  106. package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.module.d.ts +3 -0
  107. package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.module.d.ts.map +1 -0
  108. package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.module.js +22 -0
  109. package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.service.d.ts +93 -0
  110. package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.service.d.ts.map +1 -0
  111. package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.service.js +856 -0
  112. package/dist/matrix/room-membership.d.ts +11 -0
  113. package/dist/matrix/room-membership.d.ts.map +1 -0
  114. package/dist/matrix/room-membership.js +33 -0
  115. package/dist/meta-tools/index.d.ts +28 -0
  116. package/dist/meta-tools/index.d.ts.map +1 -0
  117. package/dist/meta-tools/index.js +24 -0
  118. package/dist/meta-tools/list-capabilities.d.ts +12 -0
  119. package/dist/meta-tools/list-capabilities.d.ts.map +1 -0
  120. package/dist/meta-tools/list-capabilities.js +55 -0
  121. package/dist/meta-tools/load-capability.d.ts +24 -0
  122. package/dist/meta-tools/load-capability.d.ts.map +1 -0
  123. package/dist/meta-tools/load-capability.js +82 -0
  124. package/dist/modules/auth/auth-header.middleware.d.ts +37 -0
  125. package/dist/modules/auth/auth-header.middleware.d.ts.map +1 -0
  126. package/dist/modules/auth/auth-header.middleware.js +115 -0
  127. package/dist/modules/auth/auth.module.d.ts +9 -0
  128. package/dist/modules/auth/auth.module.d.ts.map +1 -0
  129. package/dist/modules/auth/auth.module.js +27 -0
  130. package/dist/modules/auth/index.d.ts +3 -0
  131. package/dist/modules/auth/index.d.ts.map +1 -0
  132. package/dist/modules/auth/index.js +2 -0
  133. package/dist/modules/auth/validate-ucan-delegation.d.ts +31 -0
  134. package/dist/modules/auth/validate-ucan-delegation.d.ts.map +1 -0
  135. package/dist/modules/auth/validate-ucan-delegation.js +36 -0
  136. package/dist/modules/blob-store/blob-store.module.d.ts +10 -0
  137. package/dist/modules/blob-store/blob-store.module.d.ts.map +1 -0
  138. package/dist/modules/blob-store/blob-store.module.js +25 -0
  139. package/dist/modules/blob-store/blob-store.service.d.ts +66 -0
  140. package/dist/modules/blob-store/blob-store.service.d.ts.map +1 -0
  141. package/dist/modules/blob-store/blob-store.service.js +108 -0
  142. package/dist/modules/blob-store/index.d.ts +3 -0
  143. package/dist/modules/blob-store/index.d.ts.map +1 -0
  144. package/dist/modules/blob-store/index.js +2 -0
  145. package/dist/modules/health/health.controller.d.ts +18 -0
  146. package/dist/modules/health/health.controller.d.ts.map +1 -0
  147. package/dist/modules/health/health.controller.js +48 -0
  148. package/dist/modules/health/health.module.d.ts +8 -0
  149. package/dist/modules/health/health.module.d.ts.map +1 -0
  150. package/dist/modules/health/health.module.js +21 -0
  151. package/dist/modules/index.d.ts +8 -0
  152. package/dist/modules/index.d.ts.map +1 -0
  153. package/dist/modules/index.js +6 -0
  154. package/dist/modules/messages/__test-fixtures__/deps.d.ts +41 -0
  155. package/dist/modules/messages/__test-fixtures__/deps.d.ts.map +1 -0
  156. package/dist/modules/messages/__test-fixtures__/deps.js +73 -0
  157. package/dist/modules/messages/__test-fixtures__/fake-agent.d.ts +27 -0
  158. package/dist/modules/messages/__test-fixtures__/fake-agent.d.ts.map +1 -0
  159. package/dist/modules/messages/__test-fixtures__/fake-agent.js +41 -0
  160. package/dist/modules/messages/__test-fixtures__/fake-response.d.ts +29 -0
  161. package/dist/modules/messages/__test-fixtures__/fake-response.d.ts.map +1 -0
  162. package/dist/modules/messages/__test-fixtures__/fake-response.js +55 -0
  163. package/dist/modules/messages/agent-builder.d.ts +64 -0
  164. package/dist/modules/messages/agent-builder.d.ts.map +1 -0
  165. package/dist/modules/messages/agent-builder.js +219 -0
  166. package/dist/modules/messages/batch-invoker.d.ts +36 -0
  167. package/dist/modules/messages/batch-invoker.d.ts.map +1 -0
  168. package/dist/modules/messages/batch-invoker.js +58 -0
  169. package/dist/modules/messages/dto/list-messages.dto.d.ts +4 -0
  170. package/dist/modules/messages/dto/list-messages.dto.d.ts.map +1 -0
  171. package/dist/modules/messages/dto/list-messages.dto.js +17 -0
  172. package/dist/modules/messages/dto/send-message.dto.d.ts +73 -0
  173. package/dist/modules/messages/dto/send-message.dto.d.ts.map +1 -0
  174. package/dist/modules/messages/dto/send-message.dto.js +318 -0
  175. package/dist/modules/messages/file-processing-credit-sink.port.d.ts +20 -0
  176. package/dist/modules/messages/file-processing-credit-sink.port.d.ts.map +1 -0
  177. package/dist/modules/messages/file-processing-credit-sink.port.js +1 -0
  178. package/dist/modules/messages/file-processing.service.d.ts +195 -0
  179. package/dist/modules/messages/file-processing.service.d.ts.map +1 -0
  180. package/dist/modules/messages/file-processing.service.js +1278 -0
  181. package/dist/modules/messages/homeserver-cache.d.ts +11 -0
  182. package/dist/modules/messages/homeserver-cache.d.ts.map +1 -0
  183. package/dist/modules/messages/homeserver-cache.js +31 -0
  184. package/dist/modules/messages/matrix-listener-bridge.d.ts +63 -0
  185. package/dist/modules/messages/matrix-listener-bridge.d.ts.map +1 -0
  186. package/dist/modules/messages/matrix-listener-bridge.js +280 -0
  187. package/dist/modules/messages/messages.controller.d.ts +13 -0
  188. package/dist/modules/messages/messages.controller.d.ts.map +1 -0
  189. package/dist/modules/messages/messages.controller.js +95 -0
  190. package/dist/modules/messages/messages.module.d.ts +3 -0
  191. package/dist/modules/messages/messages.module.d.ts.map +1 -0
  192. package/dist/modules/messages/messages.module.js +75 -0
  193. package/dist/modules/messages/messages.service.d.ts +112 -0
  194. package/dist/modules/messages/messages.service.d.ts.map +1 -0
  195. package/dist/modules/messages/messages.service.js +279 -0
  196. package/dist/modules/messages/oracle-runtime-bundle.d.ts +38 -0
  197. package/dist/modules/messages/oracle-runtime-bundle.d.ts.map +1 -0
  198. package/dist/modules/messages/oracle-runtime-bundle.js +40 -0
  199. package/dist/modules/messages/post-message-syncer.d.ts +30 -0
  200. package/dist/modules/messages/post-message-syncer.d.ts.map +1 -0
  201. package/dist/modules/messages/post-message-syncer.js +73 -0
  202. package/dist/modules/messages/request-preparer.d.ts +53 -0
  203. package/dist/modules/messages/request-preparer.d.ts.map +1 -0
  204. package/dist/modules/messages/request-preparer.js +139 -0
  205. package/dist/modules/messages/sse-stream-runner.d.ts +73 -0
  206. package/dist/modules/messages/sse-stream-runner.d.ts.map +1 -0
  207. package/dist/modules/messages/sse-stream-runner.js +352 -0
  208. package/dist/modules/messages/sse.utils.d.ts +29 -0
  209. package/dist/modules/messages/sse.utils.d.ts.map +1 -0
  210. package/dist/modules/messages/sse.utils.js +77 -0
  211. package/dist/modules/messages/user-context-fetcher.d.ts +41 -0
  212. package/dist/modules/messages/user-context-fetcher.d.ts.map +1 -0
  213. package/dist/modules/messages/user-context-fetcher.js +117 -0
  214. package/dist/modules/secrets/index.d.ts +2 -0
  215. package/dist/modules/secrets/index.d.ts.map +1 -0
  216. package/dist/modules/secrets/index.js +1 -0
  217. package/dist/modules/secrets/secrets.service.d.ts +29 -0
  218. package/dist/modules/secrets/secrets.service.d.ts.map +1 -0
  219. package/dist/modules/secrets/secrets.service.js +107 -0
  220. package/dist/modules/sessions/dto/create-session.dto.d.ts +6 -0
  221. package/dist/modules/sessions/dto/create-session.dto.d.ts.map +1 -0
  222. package/dist/modules/sessions/dto/create-session.dto.js +5 -0
  223. package/dist/modules/sessions/dto/delete-session.dto.d.ts +6 -0
  224. package/dist/modules/sessions/dto/delete-session.dto.d.ts.map +1 -0
  225. package/dist/modules/sessions/dto/delete-session.dto.js +5 -0
  226. package/dist/modules/sessions/dto/list-sessions.dto.d.ts +7 -0
  227. package/dist/modules/sessions/dto/list-sessions.dto.d.ts.map +1 -0
  228. package/dist/modules/sessions/dto/list-sessions.dto.js +6 -0
  229. package/dist/modules/sessions/session-history-processor.service.d.ts +48 -0
  230. package/dist/modules/sessions/session-history-processor.service.d.ts.map +1 -0
  231. package/dist/modules/sessions/session-history-processor.service.js +254 -0
  232. package/dist/modules/sessions/sessions.controller.d.ts +13 -0
  233. package/dist/modules/sessions/sessions.controller.d.ts.map +1 -0
  234. package/dist/modules/sessions/sessions.controller.js +113 -0
  235. package/dist/modules/sessions/sessions.module.d.ts +3 -0
  236. package/dist/modules/sessions/sessions.module.d.ts.map +1 -0
  237. package/dist/modules/sessions/sessions.module.js +49 -0
  238. package/dist/modules/sessions/sessions.service.d.ts +23 -0
  239. package/dist/modules/sessions/sessions.service.d.ts.map +1 -0
  240. package/dist/modules/sessions/sessions.service.js +168 -0
  241. package/dist/modules/subscription/subscription.middleware.d.ts +37 -0
  242. package/dist/modules/subscription/subscription.middleware.d.ts.map +1 -0
  243. package/dist/modules/subscription/subscription.middleware.js +141 -0
  244. package/dist/modules/subscription/subscription.module.d.ts +12 -0
  245. package/dist/modules/subscription/subscription.module.d.ts.map +1 -0
  246. package/dist/modules/subscription/subscription.module.js +26 -0
  247. package/dist/modules/throttler/throttler.module.d.ts +11 -0
  248. package/dist/modules/throttler/throttler.module.d.ts.map +1 -0
  249. package/dist/modules/throttler/throttler.module.js +32 -0
  250. package/dist/modules/ucan/index.d.ts +7 -0
  251. package/dist/modules/ucan/index.d.ts.map +1 -0
  252. package/dist/modules/ucan/index.js +6 -0
  253. package/dist/modules/ucan/ucan.config.d.ts +87 -0
  254. package/dist/modules/ucan/ucan.config.d.ts.map +1 -0
  255. package/dist/modules/ucan/ucan.config.js +114 -0
  256. package/dist/modules/ucan/ucan.module.d.ts +29 -0
  257. package/dist/modules/ucan/ucan.module.d.ts.map +1 -0
  258. package/dist/modules/ucan/ucan.module.js +46 -0
  259. package/dist/modules/ucan/ucan.service.d.ts +129 -0
  260. package/dist/modules/ucan/ucan.service.d.ts.map +1 -0
  261. package/dist/modules/ucan/ucan.service.js +582 -0
  262. package/dist/modules/ws/emitter.d.ts +12 -0
  263. package/dist/modules/ws/emitter.d.ts.map +1 -0
  264. package/dist/modules/ws/emitter.js +12 -0
  265. package/dist/modules/ws/ws.gateway.d.ts +34 -0
  266. package/dist/modules/ws/ws.gateway.d.ts.map +1 -0
  267. package/dist/modules/ws/ws.gateway.js +241 -0
  268. package/dist/modules/ws/ws.module.d.ts +3 -0
  269. package/dist/modules/ws/ws.module.d.ts.map +1 -0
  270. package/dist/modules/ws/ws.module.js +21 -0
  271. package/dist/modules/ws/ws.service.d.ts +25 -0
  272. package/dist/modules/ws/ws.service.d.ts.map +1 -0
  273. package/dist/modules/ws/ws.service.js +113 -0
  274. package/dist/plugin-api/define-plugin.d.ts +19 -0
  275. package/dist/plugin-api/define-plugin.d.ts.map +1 -0
  276. package/dist/plugin-api/define-plugin.js +25 -0
  277. package/dist/plugin-api/oracle-plugin.d.ts +92 -0
  278. package/dist/plugin-api/oracle-plugin.d.ts.map +1 -0
  279. package/dist/plugin-api/oracle-plugin.js +15 -0
  280. package/dist/plugin-api/tool-helper.d.ts +33 -0
  281. package/dist/plugin-api/tool-helper.d.ts.map +1 -0
  282. package/dist/plugin-api/tool-helper.js +40 -0
  283. package/dist/plugin-api/types.d.ts +378 -0
  284. package/dist/plugin-api/types.d.ts.map +1 -0
  285. package/dist/plugin-api/types.js +1 -0
  286. package/dist/plugins/agui/agui-agent.d.ts +10 -0
  287. package/dist/plugins/agui/agui-agent.d.ts.map +1 -0
  288. package/dist/plugins/agui/agui-agent.js +110 -0
  289. package/dist/plugins/agui/agui.plugin.d.ts +16 -0
  290. package/dist/plugins/agui/agui.plugin.d.ts.map +1 -0
  291. package/dist/plugins/agui/agui.plugin.js +117 -0
  292. package/dist/plugins/agui/index.d.ts +3 -0
  293. package/dist/plugins/agui/index.d.ts.map +1 -0
  294. package/dist/plugins/agui/index.js +2 -0
  295. package/dist/plugins/composio/composio-tools.d.ts +59 -0
  296. package/dist/plugins/composio/composio-tools.d.ts.map +1 -0
  297. package/dist/plugins/composio/composio-tools.js +88 -0
  298. package/dist/plugins/composio/composio-ucan.d.ts +14 -0
  299. package/dist/plugins/composio/composio-ucan.d.ts.map +1 -0
  300. package/dist/plugins/composio/composio-ucan.js +32 -0
  301. package/dist/plugins/composio/composio.plugin.d.ts +45 -0
  302. package/dist/plugins/composio/composio.plugin.d.ts.map +1 -0
  303. package/dist/plugins/composio/composio.plugin.js +116 -0
  304. package/dist/plugins/composio/index.d.ts +4 -0
  305. package/dist/plugins/composio/index.d.ts.map +1 -0
  306. package/dist/plugins/composio/index.js +3 -0
  307. package/dist/plugins/credits/claim-processing.module.d.ts +28 -0
  308. package/dist/plugins/credits/claim-processing.module.d.ts.map +1 -0
  309. package/dist/plugins/credits/claim-processing.module.js +37 -0
  310. package/dist/plugins/credits/claim-processing.service.d.ts +92 -0
  311. package/dist/plugins/credits/claim-processing.service.d.ts.map +1 -0
  312. package/dist/plugins/credits/claim-processing.service.js +406 -0
  313. package/dist/plugins/credits/credits-middleware.d.ts +23 -0
  314. package/dist/plugins/credits/credits-middleware.d.ts.map +1 -0
  315. package/dist/plugins/credits/credits-middleware.js +154 -0
  316. package/dist/plugins/credits/credits.plugin.d.ts +55 -0
  317. package/dist/plugins/credits/credits.plugin.d.ts.map +1 -0
  318. package/dist/plugins/credits/credits.plugin.js +95 -0
  319. package/dist/plugins/credits/file-processing-sink.module.d.ts +18 -0
  320. package/dist/plugins/credits/file-processing-sink.module.d.ts.map +1 -0
  321. package/dist/plugins/credits/file-processing-sink.module.js +56 -0
  322. package/dist/plugins/credits/index.d.ts +8 -0
  323. package/dist/plugins/credits/index.d.ts.map +1 -0
  324. package/dist/plugins/credits/index.js +7 -0
  325. package/dist/plugins/credits/subscription-sink.module.d.ts +23 -0
  326. package/dist/plugins/credits/subscription-sink.module.d.ts.map +1 -0
  327. package/dist/plugins/credits/subscription-sink.module.js +54 -0
  328. package/dist/plugins/credits/token-limiter.d.ts +139 -0
  329. package/dist/plugins/credits/token-limiter.d.ts.map +1 -0
  330. package/dist/plugins/credits/token-limiter.js +302 -0
  331. package/dist/plugins/domain-indexer/domain-indexer-agent.d.ts +7 -0
  332. package/dist/plugins/domain-indexer/domain-indexer-agent.d.ts.map +1 -0
  333. package/dist/plugins/domain-indexer/domain-indexer-agent.js +48 -0
  334. package/dist/plugins/domain-indexer/domain-indexer-tools.d.ts +8 -0
  335. package/dist/plugins/domain-indexer/domain-indexer-tools.d.ts.map +1 -0
  336. package/dist/plugins/domain-indexer/domain-indexer-tools.js +194 -0
  337. package/dist/plugins/domain-indexer/domain-indexer.plugin.d.ts +20 -0
  338. package/dist/plugins/domain-indexer/domain-indexer.plugin.d.ts.map +1 -0
  339. package/dist/plugins/domain-indexer/domain-indexer.plugin.js +78 -0
  340. package/dist/plugins/domain-indexer/index.d.ts +2 -0
  341. package/dist/plugins/domain-indexer/index.d.ts.map +1 -0
  342. package/dist/plugins/domain-indexer/index.js +1 -0
  343. package/dist/plugins/editor/apply-sandbox-output.d.ts +33 -0
  344. package/dist/plugins/editor/apply-sandbox-output.d.ts.map +1 -0
  345. package/dist/plugins/editor/apply-sandbox-output.js +302 -0
  346. package/dist/plugins/editor/block-actions.d.ts +84 -0
  347. package/dist/plugins/editor/block-actions.d.ts.map +1 -0
  348. package/dist/plugins/editor/block-actions.js +471 -0
  349. package/dist/plugins/editor/blocknote-helper.d.ts +147 -0
  350. package/dist/plugins/editor/blocknote-helper.d.ts.map +1 -0
  351. package/dist/plugins/editor/blocknote-helper.js +542 -0
  352. package/dist/plugins/editor/blocknote-tools.d.ts +364 -0
  353. package/dist/plugins/editor/blocknote-tools.d.ts.map +1 -0
  354. package/dist/plugins/editor/blocknote-tools.js +2123 -0
  355. package/dist/plugins/editor/editor-agent.d.ts +47 -0
  356. package/dist/plugins/editor/editor-agent.d.ts.map +1 -0
  357. package/dist/plugins/editor/editor-agent.js +158 -0
  358. package/dist/plugins/editor/editor-mx.d.ts +56 -0
  359. package/dist/plugins/editor/editor-mx.d.ts.map +1 -0
  360. package/dist/plugins/editor/editor-mx.js +100 -0
  361. package/dist/plugins/editor/editor.plugin.d.ts +32 -0
  362. package/dist/plugins/editor/editor.plugin.d.ts.map +1 -0
  363. package/dist/plugins/editor/editor.plugin.js +189 -0
  364. package/dist/plugins/editor/index.d.ts +6 -0
  365. package/dist/plugins/editor/index.d.ts.map +1 -0
  366. package/dist/plugins/editor/index.js +5 -0
  367. package/dist/plugins/editor/mint-invocation-tool.d.ts +72 -0
  368. package/dist/plugins/editor/mint-invocation-tool.d.ts.map +1 -0
  369. package/dist/plugins/editor/mint-invocation-tool.js +173 -0
  370. package/dist/plugins/editor/page-functions.d.ts +100 -0
  371. package/dist/plugins/editor/page-functions.d.ts.map +1 -0
  372. package/dist/plugins/editor/page-functions.js +317 -0
  373. package/dist/plugins/editor/page-tools.d.ts +75 -0
  374. package/dist/plugins/editor/page-tools.d.ts.map +1 -0
  375. package/dist/plugins/editor/page-tools.js +238 -0
  376. package/dist/plugins/editor/prompts.d.ts +22 -0
  377. package/dist/plugins/editor/prompts.d.ts.map +1 -0
  378. package/dist/plugins/editor/prompts.js +451 -0
  379. package/dist/plugins/editor/provider.d.ts +101 -0
  380. package/dist/plugins/editor/provider.d.ts.map +1 -0
  381. package/dist/plugins/editor/provider.js +249 -0
  382. package/dist/plugins/editor/standalone-editor-tool.d.ts +17 -0
  383. package/dist/plugins/editor/standalone-editor-tool.d.ts.map +1 -0
  384. package/dist/plugins/editor/standalone-editor-tool.js +136 -0
  385. package/dist/plugins/editor/survey-helpers.d.ts +112 -0
  386. package/dist/plugins/editor/survey-helpers.d.ts.map +1 -0
  387. package/dist/plugins/editor/survey-helpers.js +358 -0
  388. package/dist/plugins/firecrawl/firecrawl-agent.d.ts +7 -0
  389. package/dist/plugins/firecrawl/firecrawl-agent.d.ts.map +1 -0
  390. package/dist/plugins/firecrawl/firecrawl-agent.js +84 -0
  391. package/dist/plugins/firecrawl/firecrawl-tools.d.ts +37 -0
  392. package/dist/plugins/firecrawl/firecrawl-tools.d.ts.map +1 -0
  393. package/dist/plugins/firecrawl/firecrawl-tools.js +129 -0
  394. package/dist/plugins/firecrawl/firecrawl.plugin.d.ts +32 -0
  395. package/dist/plugins/firecrawl/firecrawl.plugin.d.ts.map +1 -0
  396. package/dist/plugins/firecrawl/firecrawl.plugin.js +69 -0
  397. package/dist/plugins/firecrawl/index.d.ts +3 -0
  398. package/dist/plugins/firecrawl/index.d.ts.map +1 -0
  399. package/dist/plugins/firecrawl/index.js +2 -0
  400. package/dist/plugins/index.d.ts +47 -0
  401. package/dist/plugins/index.d.ts.map +1 -0
  402. package/dist/plugins/index.js +69 -0
  403. package/dist/plugins/matrix-group-chats/channel-memory.module.d.ts +7 -0
  404. package/dist/plugins/matrix-group-chats/channel-memory.module.d.ts.map +1 -0
  405. package/dist/plugins/matrix-group-chats/channel-memory.module.js +22 -0
  406. package/dist/plugins/matrix-group-chats/channel-memory.repo.d.ts +62 -0
  407. package/dist/plugins/matrix-group-chats/channel-memory.repo.d.ts.map +1 -0
  408. package/dist/plugins/matrix-group-chats/channel-memory.repo.js +311 -0
  409. package/dist/plugins/matrix-group-chats/channel-memory.service.d.ts +89 -0
  410. package/dist/plugins/matrix-group-chats/channel-memory.service.d.ts.map +1 -0
  411. package/dist/plugins/matrix-group-chats/channel-memory.service.js +565 -0
  412. package/dist/plugins/matrix-group-chats/channel-memory.summarizer.d.ts +18 -0
  413. package/dist/plugins/matrix-group-chats/channel-memory.summarizer.d.ts.map +1 -0
  414. package/dist/plugins/matrix-group-chats/channel-memory.summarizer.js +128 -0
  415. package/dist/plugins/matrix-group-chats/channel-memory.types.d.ts +50 -0
  416. package/dist/plugins/matrix-group-chats/channel-memory.types.d.ts.map +1 -0
  417. package/dist/plugins/matrix-group-chats/channel-memory.types.js +2 -0
  418. package/dist/plugins/matrix-group-chats/guard.d.ts +83 -0
  419. package/dist/plugins/matrix-group-chats/guard.d.ts.map +1 -0
  420. package/dist/plugins/matrix-group-chats/guard.js +138 -0
  421. package/dist/plugins/matrix-group-chats/index.d.ts +59 -0
  422. package/dist/plugins/matrix-group-chats/index.d.ts.map +1 -0
  423. package/dist/plugins/matrix-group-chats/index.js +140 -0
  424. package/dist/plugins/matrix-group-chats/middleware.d.ts +31 -0
  425. package/dist/plugins/matrix-group-chats/middleware.d.ts.map +1 -0
  426. package/dist/plugins/matrix-group-chats/middleware.js +186 -0
  427. package/dist/plugins/matrix-group-chats/power-levels.d.ts +15 -0
  428. package/dist/plugins/matrix-group-chats/power-levels.d.ts.map +1 -0
  429. package/dist/plugins/matrix-group-chats/power-levels.js +36 -0
  430. package/dist/plugins/matrix-group-chats/room-info.d.ts +23 -0
  431. package/dist/plugins/matrix-group-chats/room-info.d.ts.map +1 -0
  432. package/dist/plugins/matrix-group-chats/room-info.js +34 -0
  433. package/dist/plugins/matrix-group-chats/tools.d.ts +8 -0
  434. package/dist/plugins/matrix-group-chats/tools.d.ts.map +1 -0
  435. package/dist/plugins/matrix-group-chats/tools.js +154 -0
  436. package/dist/plugins/memory/index.d.ts +5 -0
  437. package/dist/plugins/memory/index.d.ts.map +1 -0
  438. package/dist/plugins/memory/index.js +3 -0
  439. package/dist/plugins/memory/memory-tools.d.ts +52 -0
  440. package/dist/plugins/memory/memory-tools.d.ts.map +1 -0
  441. package/dist/plugins/memory/memory-tools.js +88 -0
  442. package/dist/plugins/memory/memory-ucan.d.ts +17 -0
  443. package/dist/plugins/memory/memory-ucan.d.ts.map +1 -0
  444. package/dist/plugins/memory/memory-ucan.js +43 -0
  445. package/dist/plugins/memory/memory.plugin.d.ts +51 -0
  446. package/dist/plugins/memory/memory.plugin.d.ts.map +1 -0
  447. package/dist/plugins/memory/memory.plugin.js +76 -0
  448. package/dist/plugins/memory/types.d.ts +75 -0
  449. package/dist/plugins/memory/types.d.ts.map +1 -0
  450. package/dist/plugins/memory/types.js +2 -0
  451. package/dist/plugins/portal/index.d.ts +3 -0
  452. package/dist/plugins/portal/index.d.ts.map +1 -0
  453. package/dist/plugins/portal/index.js +2 -0
  454. package/dist/plugins/portal/portal-agent.d.ts +9 -0
  455. package/dist/plugins/portal/portal-agent.d.ts.map +1 -0
  456. package/dist/plugins/portal/portal-agent.js +70 -0
  457. package/dist/plugins/portal/portal.plugin.d.ts +16 -0
  458. package/dist/plugins/portal/portal.plugin.d.ts.map +1 -0
  459. package/dist/plugins/portal/portal.plugin.js +115 -0
  460. package/dist/plugins/sandbox/index.d.ts +3 -0
  461. package/dist/plugins/sandbox/index.d.ts.map +1 -0
  462. package/dist/plugins/sandbox/index.js +2 -0
  463. package/dist/plugins/sandbox/sandbox-mcp.d.ts +46 -0
  464. package/dist/plugins/sandbox/sandbox-mcp.d.ts.map +1 -0
  465. package/dist/plugins/sandbox/sandbox-mcp.js +80 -0
  466. package/dist/plugins/sandbox/sandbox-write-blob.d.ts +22 -0
  467. package/dist/plugins/sandbox/sandbox-write-blob.d.ts.map +1 -0
  468. package/dist/plugins/sandbox/sandbox-write-blob.js +80 -0
  469. package/dist/plugins/sandbox/sandbox.plugin.d.ts +80 -0
  470. package/dist/plugins/sandbox/sandbox.plugin.d.ts.map +1 -0
  471. package/dist/plugins/sandbox/sandbox.plugin.js +204 -0
  472. package/dist/plugins/skills/index.d.ts +3 -0
  473. package/dist/plugins/skills/index.d.ts.map +1 -0
  474. package/dist/plugins/skills/index.js +2 -0
  475. package/dist/plugins/skills/skills-tools.d.ts +20 -0
  476. package/dist/plugins/skills/skills-tools.d.ts.map +1 -0
  477. package/dist/plugins/skills/skills-tools.js +204 -0
  478. package/dist/plugins/skills/skills-ucan.d.ts +24 -0
  479. package/dist/plugins/skills/skills-ucan.d.ts.map +1 -0
  480. package/dist/plugins/skills/skills-ucan.js +28 -0
  481. package/dist/plugins/skills/skills.plugin.d.ts +37 -0
  482. package/dist/plugins/skills/skills.plugin.d.ts.map +1 -0
  483. package/dist/plugins/skills/skills.plugin.js +82 -0
  484. package/dist/plugins/slack/index.d.ts +4 -0
  485. package/dist/plugins/slack/index.d.ts.map +1 -0
  486. package/dist/plugins/slack/index.js +3 -0
  487. package/dist/plugins/slack/slack.module.d.ts +9 -0
  488. package/dist/plugins/slack/slack.module.d.ts.map +1 -0
  489. package/dist/plugins/slack/slack.module.js +27 -0
  490. package/dist/plugins/slack/slack.plugin.d.ts +30 -0
  491. package/dist/plugins/slack/slack.plugin.d.ts.map +1 -0
  492. package/dist/plugins/slack/slack.plugin.js +40 -0
  493. package/dist/plugins/slack/slack.service.d.ts +32 -0
  494. package/dist/plugins/slack/slack.service.d.ts.map +1 -0
  495. package/dist/plugins/slack/slack.service.js +157 -0
  496. package/dist/plugins/user-preferences/index.d.ts +4 -0
  497. package/dist/plugins/user-preferences/index.d.ts.map +1 -0
  498. package/dist/plugins/user-preferences/index.js +3 -0
  499. package/dist/plugins/user-preferences/service/user-preferences.service.d.ts +61 -0
  500. package/dist/plugins/user-preferences/service/user-preferences.service.d.ts.map +1 -0
  501. package/dist/plugins/user-preferences/service/user-preferences.service.js +105 -0
  502. package/dist/plugins/user-preferences/user-preferences-http.module.d.ts +10 -0
  503. package/dist/plugins/user-preferences/user-preferences-http.module.d.ts.map +1 -0
  504. package/dist/plugins/user-preferences/user-preferences-http.module.js +23 -0
  505. package/dist/plugins/user-preferences/user-preferences-tool.d.ts +22 -0
  506. package/dist/plugins/user-preferences/user-preferences-tool.d.ts.map +1 -0
  507. package/dist/plugins/user-preferences/user-preferences-tool.js +103 -0
  508. package/dist/plugins/user-preferences/user-preferences.controller.d.ts +18 -0
  509. package/dist/plugins/user-preferences/user-preferences.controller.d.ts.map +1 -0
  510. package/dist/plugins/user-preferences/user-preferences.controller.js +72 -0
  511. package/dist/plugins/user-preferences/user-preferences.plugin.d.ts +27 -0
  512. package/dist/plugins/user-preferences/user-preferences.plugin.d.ts.map +1 -0
  513. package/dist/plugins/user-preferences/user-preferences.plugin.js +66 -0
  514. package/dist/registries/config-schema-registry.d.ts +24 -0
  515. package/dist/registries/config-schema-registry.d.ts.map +1 -0
  516. package/dist/registries/config-schema-registry.js +27 -0
  517. package/dist/registries/index.d.ts +13 -0
  518. package/dist/registries/index.d.ts.map +1 -0
  519. package/dist/registries/index.js +6 -0
  520. package/dist/registries/manifest-registry.d.ts +49 -0
  521. package/dist/registries/manifest-registry.d.ts.map +1 -0
  522. package/dist/registries/manifest-registry.js +53 -0
  523. package/dist/registries/middleware-registry.d.ts +41 -0
  524. package/dist/registries/middleware-registry.d.ts.map +1 -0
  525. package/dist/registries/middleware-registry.js +52 -0
  526. package/dist/registries/shared-state-registry.d.ts +41 -0
  527. package/dist/registries/shared-state-registry.d.ts.map +1 -0
  528. package/dist/registries/shared-state-registry.js +65 -0
  529. package/dist/registries/subagent-registry.d.ts +55 -0
  530. package/dist/registries/subagent-registry.d.ts.map +1 -0
  531. package/dist/registries/subagent-registry.js +106 -0
  532. package/dist/registries/test-fixtures.d.ts +47 -0
  533. package/dist/registries/test-fixtures.d.ts.map +1 -0
  534. package/dist/registries/test-fixtures.js +168 -0
  535. package/dist/registries/tool-registry.d.ts +74 -0
  536. package/dist/registries/tool-registry.d.ts.map +1 -0
  537. package/dist/registries/tool-registry.js +130 -0
  538. package/dist/runtime-context/ambient.d.ts +118 -0
  539. package/dist/runtime-context/ambient.d.ts.map +1 -0
  540. package/dist/runtime-context/ambient.js +1 -0
  541. package/dist/runtime-context/build-plugin.d.ts +20 -0
  542. package/dist/runtime-context/build-plugin.d.ts.map +1 -0
  543. package/dist/runtime-context/build-plugin.js +16 -0
  544. package/dist/runtime-context/build-runtime.d.ts +60 -0
  545. package/dist/runtime-context/build-runtime.d.ts.map +1 -0
  546. package/dist/runtime-context/build-runtime.js +81 -0
  547. package/dist/testing/create-test-runtime.d.ts +95 -0
  548. package/dist/testing/create-test-runtime.d.ts.map +1 -0
  549. package/dist/testing/create-test-runtime.js +302 -0
  550. package/dist/testing/index.d.ts +5 -0
  551. package/dist/testing/index.d.ts.map +1 -0
  552. package/dist/testing/index.js +5 -0
  553. package/dist/testing/integration/chat-client.d.ts +143 -0
  554. package/dist/testing/integration/chat-client.d.ts.map +1 -0
  555. package/dist/testing/integration/chat-client.js +238 -0
  556. package/dist/testing/integration/harness.d.ts +189 -0
  557. package/dist/testing/integration/harness.d.ts.map +1 -0
  558. package/dist/testing/integration/harness.js +461 -0
  559. package/dist/testing/integration/index.d.ts +14 -0
  560. package/dist/testing/integration/index.d.ts.map +1 -0
  561. package/dist/testing/integration/index.js +18 -0
  562. package/dist/testing/integration/setup.d.ts +2 -0
  563. package/dist/testing/integration/setup.d.ts.map +1 -0
  564. package/dist/testing/integration/setup.js +41 -0
  565. package/dist/testing/integration/sse-parser.d.ts +99 -0
  566. package/dist/testing/integration/sse-parser.d.ts.map +1 -0
  567. package/dist/testing/integration/sse-parser.js +125 -0
  568. package/dist/testing/integration/ucan.d.ts +74 -0
  569. package/dist/testing/integration/ucan.d.ts.map +1 -0
  570. package/dist/testing/integration/ucan.js +95 -0
  571. package/dist/testing/integration/wait-for-matrix-loaded.d.ts +19 -0
  572. package/dist/testing/integration/wait-for-matrix-loaded.d.ts.map +1 -0
  573. package/dist/testing/integration/wait-for-matrix-loaded.js +31 -0
  574. package/dist/testing/mocks.d.ts +64 -0
  575. package/dist/testing/mocks.d.ts.map +1 -0
  576. package/dist/testing/mocks.js +141 -0
  577. package/dist/testing/nest-doubles.d.ts +10 -0
  578. package/dist/testing/nest-doubles.d.ts.map +1 -0
  579. package/dist/testing/nest-doubles.js +19 -0
  580. package/dist/utils/emoji.d.ts +3 -0
  581. package/dist/utils/emoji.d.ts.map +1 -0
  582. package/dist/utils/emoji.js +36 -0
  583. package/package.json +102 -0
@@ -0,0 +1,302 @@
1
+ import { HumanMessage } from '@langchain/core/messages';
2
+ import { resolvePlugins, } from '../bootstrap/plugin-loader.js';
3
+ import { validateManifest } from '../manifest/validator.js';
4
+ import { ConfigSchemaRegistry, ManifestRegistry, MiddlewareRegistry, SharedStateRegistry, SubAgentRegistry, ToolRegistry, } from '../registries/index.js';
5
+ import { buildPluginContext } from '../runtime-context/build-plugin.js';
6
+ import { buildRuntimeContext, } from '../runtime-context/build-runtime.js';
7
+ import { mockBlobStore, mockEmit, mockLlm, mockLogger, mockMatrix, mockSecrets, mockUcan, } from './mocks.js';
8
+ /**
9
+ * Build a `TestRuntime` for unit-testing one or more plugins in isolation.
10
+ *
11
+ * The harness wires the same registries the production runtime does, so
12
+ * collisions, manifest validation, and meta-tool behavior all match what
13
+ * an oracle would see at boot. It does NOT spin up Matrix, Redis, or a
14
+ * real LLM — every ambient service is replaced with a mock by default.
15
+ */
16
+ export async function createTestRuntime(opts) {
17
+ const logger = opts.logger ?? mockLogger();
18
+ // 1. Resolve the plugin list through the production loader. `autoDetect`
19
+ // probes are typed against `NodeJS.ProcessEnv` (string-or-undefined values),
20
+ // so we stringify the test config — plugin authors can drop in numbers or
21
+ // bools and still see consistent string-shaped probe input.
22
+ const env = {};
23
+ for (const [k, v] of Object.entries(opts.config ?? {})) {
24
+ if (v === undefined || v === null)
25
+ continue;
26
+ env[k] = typeof v === 'string' ? v : String(v);
27
+ }
28
+ const resolved = resolvePlugins({
29
+ bundled: opts.plugins,
30
+ features: opts.features,
31
+ env,
32
+ logger,
33
+ });
34
+ const loadedPluginNames = new Set(resolved.loaded.map((p) => p.name));
35
+ // 2. Populate the six registries.
36
+ const tools = new ToolRegistry();
37
+ const subAgents = new SubAgentRegistry();
38
+ const middlewares = new MiddlewareRegistry();
39
+ const manifests = new ManifestRegistry();
40
+ const configSchemas = new ConfigSchemaRegistry();
41
+ const sharedState = new SharedStateRegistry();
42
+ for (const plugin of resolved.loaded) {
43
+ tools.register(plugin);
44
+ subAgents.register(plugin);
45
+ middlewares.register(plugin);
46
+ manifests.register(plugin);
47
+ configSchemas.register(plugin);
48
+ sharedState.register(plugin);
49
+ }
50
+ // 3. Mock ambient services. `let`-bindings so `rt.mocks.*` can swap them.
51
+ let matrixAdapter = mockMatrix(opts.mocks?.matrix);
52
+ const llmAdapter = mockLlm(opts.mocks?.llm);
53
+ const secretsAdapter = mockSecrets(opts.mocks?.secrets);
54
+ const blobStoreAdapter = mockBlobStore();
55
+ const ucanAdapter = mockUcan();
56
+ const emitAdapter = mockEmit();
57
+ let fetchHandler = opts.mocks?.fetch;
58
+ const identity = {
59
+ name: 'TestOracle',
60
+ org: 'Test',
61
+ description: 'createTestRuntime',
62
+ entityDid: 'did:ixo:test',
63
+ ...opts.identity,
64
+ };
65
+ // Build the ambient services with `matrix` as a getter so subsequent
66
+ // `rt.mocks.matrix(...)` swaps are picked up by every fresh
67
+ // `buildRuntimeContext` call without relying on a re-bind.
68
+ const ambient = {
69
+ config: opts.config ?? {},
70
+ identity,
71
+ availablePlugins: loadedPluginNames,
72
+ secrets: secretsAdapter,
73
+ blobStore: blobStoreAdapter,
74
+ get matrix() {
75
+ return matrixAdapter;
76
+ },
77
+ llm: llmAdapter,
78
+ emit: emitAdapter,
79
+ ucan: ucanAdapter,
80
+ logger,
81
+ };
82
+ // 4. Build the per-plugin PluginContexts (used to collect tools/subagents/etc).
83
+ const buildCtxFor = (pluginName) => buildPluginContext({
84
+ config: opts.config ?? {},
85
+ identity,
86
+ availablePlugins: loadedPluginNames,
87
+ logger,
88
+ pluginName,
89
+ });
90
+ // Pre-collect tools/subagents/middlewares so the registries' query helpers
91
+ // (`toolsForPlugin`, `assertNoCollisions`) work synchronously thereafter.
92
+ // Registries pass a single PluginContext to every plugin; we use the
93
+ // generic `__test__`-scoped one — attribution is by `plugin.name`, not by
94
+ // anything inside the ctx, so a shared ctx is correct.
95
+ const sharedBuildCtx = buildCtxFor('__test__');
96
+ const collectedTools = await tools.collect(sharedBuildCtx);
97
+ const collectedSubAgents = await subAgents.collect(sharedBuildCtx);
98
+ const collectedMiddlewares = middlewares.collect(sharedBuildCtx);
99
+ const loadedSet = new Set();
100
+ // 5. Helper to construct a fresh RuntimeContext per invocation.
101
+ const buildRtCtx = () => {
102
+ const runConfig = {
103
+ context: {
104
+ user: {
105
+ did: 'did:ixo:test-user',
106
+ matrixUserId: '@did-ixo-test-user:ixo.world',
107
+ ucanDelegation: { raw: 'test-ucan' },
108
+ ...opts.user,
109
+ },
110
+ session: {
111
+ id: 'test-session',
112
+ client: 'portal',
113
+ requestId: 'test-req',
114
+ ...opts.session,
115
+ },
116
+ },
117
+ };
118
+ const stateInput = {
119
+ messages: [],
120
+ ...(opts.state ?? {}),
121
+ loadedPlugins: loadedSet,
122
+ };
123
+ return buildRuntimeContext(runConfig, ambient, stateInput);
124
+ };
125
+ // 6. Public surface.
126
+ const runtime = {
127
+ async invokeTool(name, args) {
128
+ const entry = collectedTools.find((t) => t.tool.name === name);
129
+ if (!entry) {
130
+ const available = collectedTools.map((t) => t.tool.name).join(', ');
131
+ throw new Error(`Tool "${name}" not found. Registered tools: ${available || '(none)'}.`);
132
+ }
133
+ return entry.tool.handler(args, buildRtCtx());
134
+ },
135
+ async invokeMiddleware(nameOrIndex, state, runtimeArg) {
136
+ const middleware = findMiddleware(collectedMiddlewares, nameOrIndex);
137
+ const runtimeCtx = runtimeArg ?? { context: {} };
138
+ const out = {};
139
+ // Run hooks in agent order. LangChain hooks have rich generic types
140
+ // (BeforeAgentHook<TSchema, TFullContext> and friends), but at the
141
+ // unit-test boundary they all collapse to `(state, runtime) => result`.
142
+ // Each call goes through `runHook` so the harness invokes whichever
143
+ // hooks the middleware actually defined.
144
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
145
+ const m = middleware;
146
+ const before1 = await runHook(m.beforeAgent, state, runtimeCtx);
147
+ if (before1 !== undefined)
148
+ out.before = before1;
149
+ const before2 = await runHook(m.beforeModel, state, runtimeCtx);
150
+ if (before2 !== undefined)
151
+ out.before = before2;
152
+ const after1 = await runHook(m.afterModel, state, runtimeCtx);
153
+ if (after1 !== undefined)
154
+ out.after = after1;
155
+ const after2 = await runHook(m.afterAgent, state, runtimeCtx);
156
+ if (after2 !== undefined)
157
+ out.after = after2;
158
+ return out;
159
+ },
160
+ async invokeSubAgent(name, task) {
161
+ const entry = collectedSubAgents.find((s) => s.subAgent.name === name);
162
+ if (!entry) {
163
+ throw new Error(`Sub-agent "${name}" not found. Registered: ${collectedSubAgents.map((s) => s.subAgent.name).join(', ') ||
164
+ '(none)'}.`);
165
+ }
166
+ const sub = entry.subAgent;
167
+ const buildCtx = buildCtxFor(entry.pluginName);
168
+ const subTools = typeof sub.tools === 'function' ? sub.tools(buildCtx) : sub.tools;
169
+ const systemPrompt = typeof sub.systemPrompt === 'function'
170
+ ? sub.systemPrompt(buildCtx)
171
+ : sub.systemPrompt;
172
+ // Layer-1: deterministic envelope. Reuses the configured llm mock so
173
+ // authors can opt into a recorded response via `mocks.llm.respondWith`.
174
+ const model = ambient.llm.get(sub.model ?? 'subagent');
175
+ const reply = await model.invoke([new HumanMessage(task)]);
176
+ const replyText = typeof reply.content === 'string'
177
+ ? reply.content
178
+ : JSON.stringify(reply.content);
179
+ return JSON.stringify({
180
+ subAgent: sub.name,
181
+ plugin: entry.pluginName,
182
+ task,
183
+ systemPromptPreview: systemPrompt.slice(0, 80),
184
+ toolNames: subTools.map((t) => t.name),
185
+ reply: replyText,
186
+ });
187
+ },
188
+ listTools(plugin) {
189
+ const filtered = plugin
190
+ ? collectedTools.filter((t) => t.pluginName === plugin)
191
+ : collectedTools;
192
+ return filtered.map((t) => t.tool);
193
+ },
194
+ getManifest(plugin) {
195
+ const entry = manifests.collect().find((m) => m.pluginName === plugin);
196
+ if (!entry)
197
+ throw new Error(`Plugin "${plugin}" is not registered.`);
198
+ return entry.manifest;
199
+ },
200
+ listCapabilities() {
201
+ const out = [];
202
+ for (const { pluginName, manifest } of manifests.collect()) {
203
+ const visibility = manifest.visibility ?? 'on-demand';
204
+ if (visibility === 'silent')
205
+ continue;
206
+ out.push({
207
+ name: pluginName,
208
+ summary: manifest.summary,
209
+ visibility,
210
+ loaded: visibility === 'always' || loadedSet.has(pluginName),
211
+ category: manifest.category,
212
+ tags: manifest.tags ?? [],
213
+ });
214
+ }
215
+ return out;
216
+ },
217
+ loadCapability(name) {
218
+ const entry = manifests.collect().find((m) => m.pluginName === name);
219
+ if (!entry) {
220
+ throw new Error(`Cannot load capability "${name}" — not registered. Call rt.listCapabilities() to see what's available.`);
221
+ }
222
+ if (entry.manifest.visibility === 'silent') {
223
+ throw new Error(`Capability "${name}" is silent and cannot be loaded by the agent.`);
224
+ }
225
+ loadedSet.add(name);
226
+ },
227
+ assertNoCollisions() {
228
+ tools.assertNoCollisions();
229
+ subAgents.assertNoCollisions();
230
+ middlewares.assertNoCollisions();
231
+ manifests.assertNoCollisions();
232
+ configSchemas.assertNoCollisions();
233
+ sharedState.assertNoCollisions();
234
+ // Cross-check examples against tools too — surfaces stale `examples[].tool`.
235
+ const cross = manifests.validateAgainstTools(tools, subAgents);
236
+ if (cross.errors.length > 0) {
237
+ throw new Error(`Manifest cross-check failed:\n - ${cross.errors.join('\n - ')}`);
238
+ }
239
+ },
240
+ assertManifestValid() {
241
+ const errors = [];
242
+ for (const { pluginName, manifest } of manifests.collect()) {
243
+ const result = validateManifest(manifest, pluginName);
244
+ if (!result.valid)
245
+ errors.push(...result.errors);
246
+ }
247
+ if (errors.length > 0) {
248
+ throw new Error(`Manifest validation failed:\n - ${errors.join('\n - ')}`);
249
+ }
250
+ },
251
+ async invokeAgent(_messages) {
252
+ throw new Error('invokeAgent is not implemented yet. Full agent assembly lights up once ' +
253
+ 'createMainAgent is consumed by createOracleApp. For unit tests, use ' +
254
+ 'invokeTool / invokeMiddleware / invokeSubAgent.');
255
+ },
256
+ mocks: {
257
+ matrix(overrides) {
258
+ matrixAdapter = mockMatrix(overrides);
259
+ },
260
+ fetch(handler) {
261
+ fetchHandler = handler;
262
+ },
263
+ },
264
+ async close() {
265
+ // Nothing allocated outside JS heap; placeholder for symmetry with
266
+ // future resource-holding test runtimes (e.g. recorded LLM cassettes).
267
+ },
268
+ };
269
+ // Expose the fetch handler under a leading-underscore hidden field so
270
+ // tests can read whatever was bound via `rt.mocks.fetch(...)` without
271
+ // widening the public `TestRuntime` interface.
272
+ Object.defineProperty(runtime, '_fetchHandler', {
273
+ enumerable: false,
274
+ get: () => fetchHandler,
275
+ });
276
+ return runtime;
277
+ }
278
+ /**
279
+ * Locate a middleware in the collected list by name, falling back to a
280
+ * positional `mw{n}` form so the `makeMiddleware('mw0')`-style fixtures
281
+ * still resolve. Throws with a useful list when the middleware is missing.
282
+ */
283
+ function findMiddleware(collected, nameOrIndex) {
284
+ if (typeof nameOrIndex === 'number') {
285
+ const found = collected[nameOrIndex];
286
+ if (!found) {
287
+ throw new Error(`Middleware index ${nameOrIndex} out of range (0..${collected.length - 1}).`);
288
+ }
289
+ return found.middleware;
290
+ }
291
+ const direct = collected.find((m) => m.middleware.name === nameOrIndex);
292
+ if (direct)
293
+ return direct.middleware;
294
+ const names = collected.map((m) => m.middleware.name).join(', ');
295
+ throw new Error(`Middleware "${nameOrIndex}" not found. Registered: ${names || '(none)'}.`);
296
+ }
297
+ async function runHook(entry, state, runtime) {
298
+ if (!entry)
299
+ return undefined;
300
+ const fn = typeof entry === 'function' ? entry : entry.hook;
301
+ return fn(state, runtime);
302
+ }
@@ -0,0 +1,5 @@
1
+ export { createTestRuntime, type CreateTestRuntimeOptions, type TestRuntime, type CapabilityListing, } from './create-test-runtime.js';
2
+ export { mockResponse, mockMatrix, mockLlm, mockSecrets, mockBlobStore, mockEmit, mockUcan, mockLogger, type MockResponseLike, type MockResponseInit, type MockMatrixOverrides, type MockLlmOptions, type FetchHandler, } from './mocks.js';
3
+ export { makePlugin, makeManifest, makeTool, makeSubAgent, makeMiddleware, makeBuildCtx, makeRuntimeContext, type TestPluginInit, } from '../registries/test-fixtures.js';
4
+ export { makeConfig } from './nest-doubles.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EAChB,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,KAAK,cAAc,GACpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { createTestRuntime, } from './create-test-runtime.js';
2
+ export { mockResponse, mockMatrix, mockLlm, mockSecrets, mockBlobStore, mockEmit, mockUcan, mockLogger, } from './mocks.js';
3
+ // Convenience re-exports — keep authors on one import path.
4
+ export { makePlugin, makeManifest, makeTool, makeSubAgent, makeMiddleware, makeBuildCtx, makeRuntimeContext, } from '../registries/test-fixtures.js';
5
+ export { makeConfig } from './nest-doubles.js';
@@ -0,0 +1,143 @@
1
+ /**
2
+ * `ChatClient` — HTTP/SSE client for talking to a booted oracle from
3
+ * an integration test. Mirrors the production frontend pattern from
4
+ * `packages/oracles-client-sdk/src/hooks/use-chat/v2/use-send-message.ts`:
5
+ *
6
+ * - `POST /messages/:sessionId` with `x-ucan-delegation` header
7
+ * - `timezone` sent in the request BODY (not the header)
8
+ * - SSE parsed via the typed `parseSSEStream` (mirror of the SDK's parser)
9
+ * - `X-Request-Id` header captured from the response — required for stream
10
+ *
11
+ * Streams yield the same typed `SSEEvent` discriminated union the SDK uses,
12
+ * so test assertions reason about the exact event payloads the frontend
13
+ * consumes. No bespoke parser, no `unknown`-typed events.
14
+ */
15
+ import { type SendMessageResponse } from '../../modules/messages/dto/send-message.dto.js';
16
+ import { type SSEEvent } from './sse-parser.js';
17
+ export type { SSEEvent } from './sse-parser.js';
18
+ export type { SendMessageResponse } from '../../modules/messages/dto/send-message.dto.js';
19
+ /** Options used to construct a `ChatClient`. */
20
+ export interface ChatClientOptions {
21
+ /** Base64 UCAN delegation, forwarded as `x-ucan-delegation`. */
22
+ delegation?: string;
23
+ /** IANA timezone string — sent in the request BODY (matches SDK). */
24
+ timezone?: string;
25
+ /** Per-request timeout (ms). Default 60_000. */
26
+ timeoutMs?: number;
27
+ /** Override the `fetch` impl. */
28
+ fetch?: typeof globalThis.fetch;
29
+ }
30
+ /** Per-call options accepted by `ChatClient.send` and `ChatClient.stream`. */
31
+ export interface SendOptions {
32
+ /** Cancel the request mid-flight. */
33
+ signal?: AbortSignal;
34
+ /** Per-call override of the constructor's `timezone`. */
35
+ timezone?: string;
36
+ /** Per-call override of the constructor's `delegation`. */
37
+ delegation?: string;
38
+ /** Optional metadata forwarded to the server (matches SDK). */
39
+ metadata?: Record<string, unknown>;
40
+ /** Optional attachments — same shape the SDK sends. */
41
+ attachments?: Array<{
42
+ mxcUri?: string;
43
+ eventId?: string;
44
+ filename: string;
45
+ mimetype: string;
46
+ size?: number;
47
+ }>;
48
+ /** Optional declared browser tools. */
49
+ tools?: Array<{
50
+ name: string;
51
+ description: string;
52
+ schema: Record<string, unknown>;
53
+ }>;
54
+ /** Optional declared AG-UI actions. */
55
+ agActions?: Array<{
56
+ name: string;
57
+ description: string;
58
+ schema: Record<string, unknown>;
59
+ hasRender?: boolean;
60
+ }>;
61
+ /**
62
+ * Per-call override — defaults to `true` in `ChatClient` so tests always
63
+ * receive the full transcript. Pass `false` to mirror the production
64
+ * payload (only the last assistant message).
65
+ */
66
+ returnAllMessages?: boolean;
67
+ }
68
+ /**
69
+ * Non-stream `send()` body — guaranteed to include the full transcript
70
+ * since `ChatClient` defaults `returnAllMessages: true`. The `message`
71
+ * field is the last assistant message (the older response shape, kept for
72
+ * backward-compatible test assertions).
73
+ */
74
+ export interface SendMessageWithTranscriptResponse extends SendMessageResponse {
75
+ messages: NonNullable<SendMessageResponse['messages']>;
76
+ }
77
+ /** Result of an HTTP request issued by `ChatClient`. */
78
+ export interface SendResult<TBody = unknown> {
79
+ body: TBody;
80
+ durationMs: number;
81
+ status: number;
82
+ requestId?: string;
83
+ }
84
+ export type StreamOptions = SendOptions;
85
+ /** Result yielded by `ChatClient.stream()` once iteration completes. */
86
+ export interface StreamFinal {
87
+ events: SSEEvent[];
88
+ /** Concatenated text from every `message` event in arrival order. */
89
+ text: string;
90
+ durationMs: number;
91
+ /** `X-Request-Id` — always present for stream responses (matches SDK). */
92
+ requestId: string;
93
+ }
94
+ export declare class ChatClient {
95
+ private readonly baseUrl;
96
+ private readonly delegation;
97
+ private readonly timezone;
98
+ private readonly timeoutMs;
99
+ private readonly fetchImpl;
100
+ constructor(baseUrl: string, opts?: ChatClientOptions);
101
+ /** Headers shared by every request. `timezone` is NOT here — it's in the body. */
102
+ private authHeaders;
103
+ /**
104
+ * Compose the JSON body the SDK sends — keys match
105
+ * `apps/qiforge-example` → SDK → controller exactly.
106
+ */
107
+ private composeBody;
108
+ /** Raw `fetch` against the oracle's base URL — for plugin HTTP routes. */
109
+ fetch(path: string, init?: RequestInit): Promise<Response>;
110
+ /**
111
+ * `POST /messages/:sessionId` with `stream: false`.
112
+ *
113
+ * `ChatClient` defaults `returnAllMessages: true`, so `body.messages`
114
+ * holds the full session transcript and `body.message` is the last
115
+ * assistant message (same shape the production payload returns). The
116
+ * caller can opt out via `opts.returnAllMessages = false` — in that case
117
+ * `body.messages` will be `undefined` at runtime but the type stays
118
+ * non-optional for the default case; narrow manually if you opt out.
119
+ */
120
+ send(sessionId: string, message: string, opts?: SendOptions): Promise<SendResult<SendMessageWithTranscriptResponse>>;
121
+ /**
122
+ * `POST /messages/:sessionId` with `stream: true`. Returns an async
123
+ * iterable of typed SSE events plus a `final()` method resolving to the
124
+ * complete event list + accumulated text.
125
+ */
126
+ stream(sessionId: string, message: string, opts?: StreamOptions): AsyncIterable<SSEEvent> & {
127
+ final(): Promise<StreamFinal>;
128
+ };
129
+ /**
130
+ * `POST /sessions` — create a new chat session and return its id.
131
+ *
132
+ * Required before `send`/`stream` against a sessionId — `MessagesService`
133
+ * throws 404 if the session doesn't already exist. Tests call this in
134
+ * `beforeAll` and reuse the returned id, matching the SDK's
135
+ * `useSessionManager` flow on the frontend.
136
+ */
137
+ createSession(): Promise<string>;
138
+ /** `GET /messages/:sessionId` — list messages in a session. */
139
+ list(sessionId: string): Promise<SendResult>;
140
+ /** `POST /messages/abort` — cancel an ongoing stream by session id. */
141
+ abort(sessionId: string): Promise<SendResult>;
142
+ }
143
+ //# sourceMappingURL=chat-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-client.d.ts","sourceRoot":"","sources":["../../../src/testing/integration/chat-client.ts"],"names":[],"mappings":"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"}