@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,53 @@
1
+ import { validateExamplesAgainstTools } from '../manifest/validator.js';
2
+ /**
3
+ * Stores plugin manifests and wires the cross-tool-reference check that can
4
+ * only run once tool registration is complete.
5
+ *
6
+ * Manifest titles can collide (display only); the registry does not block on
7
+ * title duplication.
8
+ */
9
+ export class ManifestRegistry {
10
+ entries = [];
11
+ /** Record a plugin's manifest. */
12
+ register(plugin) {
13
+ this.entries.push({ pluginName: plugin.name, manifest: plugin.manifest });
14
+ }
15
+ /**
16
+ * Plain-pass collect — returns the registered manifests in registration
17
+ * order. Manifests are eagerly available on the plugin, so this method
18
+ * accepts no context but matches the registry shape used elsewhere.
19
+ */
20
+ collect() {
21
+ return [...this.entries];
22
+ }
23
+ /**
24
+ * For each registered manifest, validate that every `examples[].tool`
25
+ * reference exists in the supplied registries. Sub-agents are first-class
26
+ * tools to the agent — they get wrapped as `call_<name>` StructuredTools —
27
+ * so the validator unions tool names with sub-agent wrapped names. Both
28
+ * registries MUST have been collected and asserted before calling this.
29
+ *
30
+ * Returns the union of all per-plugin error strings — each entry is
31
+ * prefixed with the plugin name and field path (delegated to
32
+ * `validateExamplesAgainstTools`).
33
+ */
34
+ validateAgainstTools(toolRegistry, subAgentRegistry) {
35
+ const errors = [];
36
+ for (const { pluginName, manifest } of this.entries) {
37
+ const toolNames = [
38
+ ...toolRegistry.toolNamesForPlugin(pluginName),
39
+ ...subAgentRegistry.subAgentNamesForPlugin(pluginName),
40
+ ];
41
+ const result = validateExamplesAgainstTools(manifest, toolNames, pluginName);
42
+ errors.push(...result.errors);
43
+ }
44
+ return { errors };
45
+ }
46
+ /**
47
+ * Manifest title collisions are display-only, so this is a no-op. Provided
48
+ * for a uniform registry surface.
49
+ */
50
+ assertNoCollisions() {
51
+ // Intentional no-op — title collisions warned at the loader level.
52
+ }
53
+ }
@@ -0,0 +1,41 @@
1
+ import type { OraclePlugin } from '../plugin-api/oracle-plugin.js';
2
+ import type { AgentMiddleware, PluginContext } from '../plugin-api/types.js';
3
+ /** A collected middleware tagged with the plugin that contributed it. */
4
+ export interface RegisteredMiddleware {
5
+ pluginName: string;
6
+ middleware: AgentMiddleware;
7
+ }
8
+ /**
9
+ * Stores plugins that contribute middlewares and resolves them by invoking
10
+ * each plugin's `getMiddlewares(buildCtx)` at collection time.
11
+ *
12
+ * Order is preserved as registration order — the loader applies any
13
+ * dependency-driven topological reordering before registering plugins here,
14
+ * so the registry just preserves the order it gets.
15
+ *
16
+ * Middlewares are boot-time-only — there's no per-request hook. The
17
+ * registry caches the first `collect(buildCtx)` result so request-time
18
+ * agent builds don't re-run each plugin's `getMiddlewares`.
19
+ */
20
+ export declare class MiddlewareRegistry {
21
+ private readonly plugins;
22
+ private bootCache;
23
+ /**
24
+ * Add a plugin whose `getMiddlewares` will be called at `collect()` time.
25
+ * Plugins are stored in the order they are registered.
26
+ */
27
+ register(plugin: OraclePlugin): void;
28
+ /**
29
+ * Invoke `getMiddlewares(buildCtx)` on every registered plugin in
30
+ * registration order and return the flattened list. Skips plugins that do
31
+ * not implement `getMiddlewares`. The result is cached after the first
32
+ * call.
33
+ */
34
+ collect(buildCtx: PluginContext): RegisteredMiddleware[];
35
+ /**
36
+ * Middlewares have no names, so no collision is possible. Method exists for
37
+ * a uniform registry surface.
38
+ */
39
+ assertNoCollisions(): void;
40
+ }
41
+ //# sourceMappingURL=middleware-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware-registry.d.ts","sourceRoot":"","sources":["../../src/registries/middleware-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE7E,yEAAyE;AACzE,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,SAAS,CAAuC;IAExD;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,aAAa,GAAG,oBAAoB,EAAE;IAcxD;;;OAGG;IACH,kBAAkB,IAAI,IAAI;CAG3B"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Stores plugins that contribute middlewares and resolves them by invoking
3
+ * each plugin's `getMiddlewares(buildCtx)` at collection time.
4
+ *
5
+ * Order is preserved as registration order — the loader applies any
6
+ * dependency-driven topological reordering before registering plugins here,
7
+ * so the registry just preserves the order it gets.
8
+ *
9
+ * Middlewares are boot-time-only — there's no per-request hook. The
10
+ * registry caches the first `collect(buildCtx)` result so request-time
11
+ * agent builds don't re-run each plugin's `getMiddlewares`.
12
+ */
13
+ export class MiddlewareRegistry {
14
+ plugins = [];
15
+ bootCache = null;
16
+ /**
17
+ * Add a plugin whose `getMiddlewares` will be called at `collect()` time.
18
+ * Plugins are stored in the order they are registered.
19
+ */
20
+ register(plugin) {
21
+ this.plugins.push(plugin);
22
+ this.bootCache = null;
23
+ }
24
+ /**
25
+ * Invoke `getMiddlewares(buildCtx)` on every registered plugin in
26
+ * registration order and return the flattened list. Skips plugins that do
27
+ * not implement `getMiddlewares`. The result is cached after the first
28
+ * call.
29
+ */
30
+ collect(buildCtx) {
31
+ if (this.bootCache !== null)
32
+ return this.bootCache;
33
+ const out = [];
34
+ for (const plugin of this.plugins) {
35
+ if (!plugin.getMiddlewares)
36
+ continue;
37
+ const middlewares = plugin.getMiddlewares(buildCtx);
38
+ for (const middleware of middlewares) {
39
+ out.push({ pluginName: plugin.name, middleware });
40
+ }
41
+ }
42
+ this.bootCache = out;
43
+ return out;
44
+ }
45
+ /**
46
+ * Middlewares have no names, so no collision is possible. Method exists for
47
+ * a uniform registry surface.
48
+ */
49
+ assertNoCollisions() {
50
+ // Intentional no-op — middleware order is established by the loader.
51
+ }
52
+ }
@@ -0,0 +1,41 @@
1
+ import type { OraclePlugin } from '../plugin-api/oracle-plugin.js';
2
+ import type { RuntimeContext, SharedAccessors } from '../plugin-api/types.js';
3
+ /** A single read accessor, contributed by a plugin under a unique key. */
4
+ type SharedAccessorFn = (state: any, runCtx: RuntimeContext) => unknown;
5
+ /** A collected accessor tagged with the plugin that contributed it. */
6
+ export interface RegisteredSharedAccessor {
7
+ pluginName: string;
8
+ key: string;
9
+ accessor: SharedAccessorFn;
10
+ }
11
+ /**
12
+ * Stores read-only accessors that plugins expose to other plugins via
13
+ * `runCtx.shared`. Each accessor is keyed by a string and computes a value
14
+ * from graph state plus the live RuntimeContext.
15
+ *
16
+ * Key collisions across plugins are a boot error — the spec forbids two
17
+ * plugins from owning the same `ctx.shared.<key>`.
18
+ */
19
+ export declare class SharedStateRegistry {
20
+ private readonly entries;
21
+ /** Record a plugin's shared accessors. Plugins without any are skipped. */
22
+ register(plugin: OraclePlugin): void;
23
+ /** Return the registered accessors in registration order. */
24
+ collect(): RegisteredSharedAccessor[];
25
+ /**
26
+ * Build a `SharedAccessors` snapshot from the supplied state and runtime
27
+ * context by invoking each registered accessor lazily as keys are read.
28
+ *
29
+ * Accessors run on demand (via `Object.defineProperty` getters) so that an
30
+ * accessor that throws does not break unrelated `ctx.shared.<otherKey>`
31
+ * reads.
32
+ */
33
+ build(state: any, runCtx: RuntimeContext): SharedAccessors;
34
+ /**
35
+ * Throw if two plugins contribute accessors under the same key. The error
36
+ * message names both plugins.
37
+ */
38
+ assertNoCollisions(): void;
39
+ }
40
+ export {};
41
+ //# sourceMappingURL=shared-state-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-state-registry.d.ts","sourceRoot":"","sources":["../../src/registries/shared-state-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9E,0EAA0E;AAC1E,KAAK,gBAAgB,GAAG,CAEtB,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC;AAEb,uEAAuE;AACvE,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAQpC,6DAA6D;IAC7D,OAAO,IAAI,wBAAwB,EAAE;IAIrC;;;;;;;OAOG;IACH,KAAK,CAEH,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,cAAc,GACrB,eAAe;IAYlB;;;OAGG;IACH,kBAAkB,IAAI,IAAI;CAmB3B"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Stores read-only accessors that plugins expose to other plugins via
3
+ * `runCtx.shared`. Each accessor is keyed by a string and computes a value
4
+ * from graph state plus the live RuntimeContext.
5
+ *
6
+ * Key collisions across plugins are a boot error — the spec forbids two
7
+ * plugins from owning the same `ctx.shared.<key>`.
8
+ */
9
+ export class SharedStateRegistry {
10
+ entries = [];
11
+ /** Record a plugin's shared accessors. Plugins without any are skipped. */
12
+ register(plugin) {
13
+ if (!plugin.getSharedState)
14
+ return;
15
+ const map = plugin.getSharedState();
16
+ for (const [key, accessor] of Object.entries(map)) {
17
+ this.entries.push({ pluginName: plugin.name, key, accessor });
18
+ }
19
+ }
20
+ /** Return the registered accessors in registration order. */
21
+ collect() {
22
+ return [...this.entries];
23
+ }
24
+ /**
25
+ * Build a `SharedAccessors` snapshot from the supplied state and runtime
26
+ * context by invoking each registered accessor lazily as keys are read.
27
+ *
28
+ * Accessors run on demand (via `Object.defineProperty` getters) so that an
29
+ * accessor that throws does not break unrelated `ctx.shared.<otherKey>`
30
+ * reads.
31
+ */
32
+ build(
33
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
+ state, runCtx) {
35
+ const target = {};
36
+ for (const { key, accessor } of this.entries) {
37
+ Object.defineProperty(target, key, {
38
+ enumerable: true,
39
+ configurable: false,
40
+ get: () => accessor(state, runCtx),
41
+ });
42
+ }
43
+ return target;
44
+ }
45
+ /**
46
+ * Throw if two plugins contribute accessors under the same key. The error
47
+ * message names both plugins.
48
+ */
49
+ assertNoCollisions() {
50
+ const seen = new Map();
51
+ const collisions = [];
52
+ for (const { pluginName, key } of this.entries) {
53
+ const prev = seen.get(key);
54
+ if (prev !== undefined && prev !== pluginName) {
55
+ collisions.push(`Shared-state key "${key}" registered by both "${prev}" and "${pluginName}"`);
56
+ }
57
+ else if (prev === undefined) {
58
+ seen.set(key, pluginName);
59
+ }
60
+ }
61
+ if (collisions.length > 0) {
62
+ throw new Error(`SharedStateRegistry: shared-state key collisions detected:\n - ${collisions.join('\n - ')}`);
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,55 @@
1
+ import type { OraclePlugin } from '../plugin-api/oracle-plugin.js';
2
+ import type { PluginContext, PluginSubAgent, RuntimeContext } from '../plugin-api/types.js';
3
+ /** A collected sub-agent tagged with the plugin that contributed it. */
4
+ export interface RegisteredSubAgent {
5
+ pluginName: string;
6
+ subAgent: PluginSubAgent;
7
+ }
8
+ /**
9
+ * Stores plugins that contribute sub-agents and resolves them by invoking
10
+ * each plugin's `getSubAgents(buildCtx)` at collection time.
11
+ *
12
+ * Sub-agents are wrapped as tools by the runtime, so their names share the
13
+ * tool namespace. Duplicate sub-agent names across plugins are a boot error.
14
+ *
15
+ * Like `ToolRegistry`, boot-time outputs are cached on the first
16
+ * `collectBoot(buildCtx)` call so per-request builds only re-run the
17
+ * request-time hook.
18
+ */
19
+ export declare class SubAgentRegistry {
20
+ private readonly plugins;
21
+ private bootCache;
22
+ private collected;
23
+ /** Add a plugin whose `getSubAgents` will be called at `collect()` time. */
24
+ register(plugin: OraclePlugin): void;
25
+ /**
26
+ * Run every plugin's `getSubAgents(buildCtx)` once and cache the result.
27
+ */
28
+ collectBoot(buildCtx: PluginContext): RegisteredSubAgent[];
29
+ /**
30
+ * Run every plugin's `getRequestSubAgents(rtCtx)`. Does NOT touch the boot
31
+ * cache.
32
+ */
33
+ collectRequest(rtCtx: RuntimeContext): Promise<RegisteredSubAgent[]>;
34
+ /**
35
+ * Combined boot + request collection used by the main agent build.
36
+ */
37
+ collect(buildCtx: PluginContext, rtCtx?: RuntimeContext): Promise<RegisteredSubAgent[]>;
38
+ /**
39
+ * The *wrapped* tool names contributed by a given plugin in the most recent
40
+ * collection (boot-only if a full request collection has not yet happened).
41
+ * Mirrors `ToolRegistry.toolNamesForPlugin` so the manifest validator can
42
+ * treat sub-agents as the tools they become to the agent.
43
+ *
44
+ * Each entry passes through `computeSubAgentToolName` — the same transform
45
+ * `createSubagentAsTool` applies when building the StructuredTool — so the
46
+ * names returned here match what the agent will actually see.
47
+ */
48
+ subAgentNamesForPlugin(pluginName: string): string[];
49
+ /**
50
+ * Throw if two plugins contribute sub-agents with the same name. The error
51
+ * message names both plugin names so the boot log points at the conflict.
52
+ */
53
+ assertNoCollisions(): void;
54
+ }
55
+ //# sourceMappingURL=subagent-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-registry.d.ts","sourceRoot":"","sources":["../../src/registries/subagent-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACf,MAAM,wBAAwB,CAAC;AAEhC,wEAAwE;AACxE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,SAAS,CAAqC;IAEtD,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAMpC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,kBAAkB,EAAE;IAc1D;;;OAGG;IACG,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAY1E;;OAEG;IACG,OAAO,CACX,QAAQ,EAAE,aAAa,EACvB,KAAK,CAAC,EAAE,cAAc,GACrB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAQhC;;;;;;;;;OASG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAMpD;;;OAGG;IACH,kBAAkB,IAAI,IAAI;CAyB3B"}
@@ -0,0 +1,106 @@
1
+ import { computeSubAgentToolName } from '../graph/subagent-as-tool.js';
2
+ /**
3
+ * Stores plugins that contribute sub-agents and resolves them by invoking
4
+ * each plugin's `getSubAgents(buildCtx)` at collection time.
5
+ *
6
+ * Sub-agents are wrapped as tools by the runtime, so their names share the
7
+ * tool namespace. Duplicate sub-agent names across plugins are a boot error.
8
+ *
9
+ * Like `ToolRegistry`, boot-time outputs are cached on the first
10
+ * `collectBoot(buildCtx)` call so per-request builds only re-run the
11
+ * request-time hook.
12
+ */
13
+ export class SubAgentRegistry {
14
+ plugins = [];
15
+ bootCache = null;
16
+ collected = null;
17
+ /** Add a plugin whose `getSubAgents` will be called at `collect()` time. */
18
+ register(plugin) {
19
+ this.plugins.push(plugin);
20
+ this.bootCache = null;
21
+ this.collected = null;
22
+ }
23
+ /**
24
+ * Run every plugin's `getSubAgents(buildCtx)` once and cache the result.
25
+ */
26
+ collectBoot(buildCtx) {
27
+ if (this.bootCache !== null)
28
+ return this.bootCache;
29
+ const out = [];
30
+ for (const plugin of this.plugins) {
31
+ if (!plugin.getSubAgents)
32
+ continue;
33
+ const subAgents = plugin.getSubAgents(buildCtx);
34
+ for (const subAgent of subAgents) {
35
+ out.push({ pluginName: plugin.name, subAgent });
36
+ }
37
+ }
38
+ this.bootCache = out;
39
+ return out;
40
+ }
41
+ /**
42
+ * Run every plugin's `getRequestSubAgents(rtCtx)`. Does NOT touch the boot
43
+ * cache.
44
+ */
45
+ async collectRequest(rtCtx) {
46
+ const out = [];
47
+ for (const plugin of this.plugins) {
48
+ if (!plugin.getRequestSubAgents)
49
+ continue;
50
+ const requestSubAgents = await plugin.getRequestSubAgents(rtCtx);
51
+ for (const subAgent of requestSubAgents) {
52
+ out.push({ pluginName: plugin.name, subAgent });
53
+ }
54
+ }
55
+ return out;
56
+ }
57
+ /**
58
+ * Combined boot + request collection used by the main agent build.
59
+ */
60
+ async collect(buildCtx, rtCtx) {
61
+ const boot = this.collectBoot(buildCtx);
62
+ const request = rtCtx ? await this.collectRequest(rtCtx) : [];
63
+ const out = [...boot, ...request];
64
+ this.collected = out;
65
+ return out;
66
+ }
67
+ /**
68
+ * The *wrapped* tool names contributed by a given plugin in the most recent
69
+ * collection (boot-only if a full request collection has not yet happened).
70
+ * Mirrors `ToolRegistry.toolNamesForPlugin` so the manifest validator can
71
+ * treat sub-agents as the tools they become to the agent.
72
+ *
73
+ * Each entry passes through `computeSubAgentToolName` — the same transform
74
+ * `createSubagentAsTool` applies when building the StructuredTool — so the
75
+ * names returned here match what the agent will actually see.
76
+ */
77
+ subAgentNamesForPlugin(pluginName) {
78
+ return (this.collected ?? this.bootCache ?? [])
79
+ .filter((entry) => entry.pluginName === pluginName)
80
+ .map((entry) => computeSubAgentToolName(entry.subAgent.name));
81
+ }
82
+ /**
83
+ * Throw if two plugins contribute sub-agents with the same name. The error
84
+ * message names both plugin names so the boot log points at the conflict.
85
+ */
86
+ assertNoCollisions() {
87
+ const source = this.collected ?? this.bootCache;
88
+ if (source === null) {
89
+ throw new Error('SubAgentRegistry.assertNoCollisions called before collect');
90
+ }
91
+ const seen = new Map();
92
+ const collisions = [];
93
+ for (const { pluginName, subAgent } of source) {
94
+ const prev = seen.get(subAgent.name);
95
+ if (prev !== undefined && prev !== pluginName) {
96
+ collisions.push(`Sub-agent "${subAgent.name}" registered by both "${prev}" and "${pluginName}"`);
97
+ }
98
+ else if (prev === undefined) {
99
+ seen.set(subAgent.name, pluginName);
100
+ }
101
+ }
102
+ if (collisions.length > 0) {
103
+ throw new Error(`SubAgentRegistry: sub-agent name collisions detected:\n - ${collisions.join('\n - ')}`);
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ import { OraclePlugin } from '../plugin-api/oracle-plugin.js';
3
+ import type { AgentMiddleware, PluginContext, PluginManifest, PluginSubAgent, PluginTool, RuntimeContext } from '../plugin-api/types.js';
4
+ /** Build a minimal PluginContext sufficient for registry collection. */
5
+ export declare function makeBuildCtx(overrides?: Partial<PluginContext>): PluginContext;
6
+ /** Build a minimal PluginManifest for tests. */
7
+ export declare function makeManifest(overrides?: Partial<PluginManifest>): PluginManifest;
8
+ /** Build a PluginTool fixture with a no-op handler. */
9
+ export declare function makeTool(name: string, overrides?: Partial<PluginTool>): PluginTool;
10
+ /** Build a PluginSubAgent fixture. */
11
+ export declare function makeSubAgent(name: string, overrides?: Partial<PluginSubAgent>): PluginSubAgent;
12
+ /**
13
+ * Build a minimally-typed AgentMiddleware fixture for registry tests.
14
+ * Registries only store and forward middlewares — they never invoke them —
15
+ * so a name-only object satisfies the structural type without pulling
16
+ * langchain into the test module graph.
17
+ */
18
+ export declare function makeMiddleware(label: string): AgentMiddleware;
19
+ /**
20
+ * Build a plain `OraclePlugin`-conforming object. Avoids subclassing the
21
+ * abstract class so tests stay shape-driven and tolerate API additions.
22
+ */
23
+ export interface TestPluginInit {
24
+ name: string;
25
+ version?: string;
26
+ manifest?: PluginManifest;
27
+ dependsOn?: string[];
28
+ softDependsOn?: string[];
29
+ configSchema?: z.ZodObject<any>;
30
+ autoDetect?: (env: NodeJS.ProcessEnv) => boolean;
31
+ autoDetectHint?: string;
32
+ getTools?: (ctx: PluginContext) => PluginTool[] | Promise<PluginTool[]>;
33
+ getSubAgents?: (ctx: PluginContext) => PluginSubAgent[];
34
+ getMiddlewares?: (ctx: PluginContext) => AgentMiddleware[];
35
+ getRequestTools?: (rtCtx: RuntimeContext) => PluginTool[] | Promise<PluginTool[]>;
36
+ getRequestSubAgents?: (rtCtx: RuntimeContext) => PluginSubAgent[] | Promise<PluginSubAgent[]>;
37
+ getSharedState?: () => Record<string, (state: any, runCtx: RuntimeContext) => unknown>;
38
+ }
39
+ /**
40
+ * Minimal `RuntimeContext` stub used by `SharedStateRegistry.build` tests.
41
+ * Mirrors the pattern in `plugin-api.test.ts` — `satisfies RuntimeContext`
42
+ * keeps the shape honest with one narrow assertion on the unrelated LLM
43
+ * adapter return.
44
+ */
45
+ export declare function makeRuntimeContext(overrides?: Partial<RuntimeContext>): RuntimeContext;
46
+ export declare function makePlugin(init: TestPluginInit): OraclePlugin;
47
+ //# sourceMappingURL=test-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-fixtures.d.ts","sourceRoot":"","sources":["../../src/registries/test-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,cAAc,EACf,MAAM,wBAAwB,CAAC;AAEhC,wEAAwE;AACxE,wBAAgB,YAAY,CAC1B,SAAS,GAAE,OAAO,CAAC,aAAa,CAAM,GACrC,aAAa,CAkBf;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAC1B,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,cAAc,CAQhB;AAED,uDAAuD;AACvD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAO,CAAC,UAAU,CAAM,GAClC,UAAU,CAQZ;AAED,sCAAsC;AACtC,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,cAAc,CAQhB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAE7D;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAEzB,YAAY,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxE,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,cAAc,EAAE,CAAC;IACxD,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,eAAe,EAAE,CAAC;IAC3D,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,cAAc,KAClB,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1C,mBAAmB,CAAC,EAAE,CACpB,KAAK,EAAE,cAAc,KAClB,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,EAAE,MAAM,MAAM,CAC3B,MAAM,EAEN,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,KAAK,OAAO,CAChD,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GACtC,cAAc,CA6EhB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAyC7D"}
@@ -0,0 +1,168 @@
1
+ import { z } from 'zod';
2
+ import { OraclePlugin } from '../plugin-api/oracle-plugin.js';
3
+ /** Build a minimal PluginContext sufficient for registry collection. */
4
+ export function makeBuildCtx(overrides = {}) {
5
+ const noopLogger = {
6
+ log: () => undefined,
7
+ error: () => undefined,
8
+ warn: () => undefined,
9
+ };
10
+ return {
11
+ config: {},
12
+ identity: {
13
+ name: 'TestOracle',
14
+ org: 'Acme',
15
+ description: 'test oracle',
16
+ entityDid: 'did:ixo:test',
17
+ },
18
+ availablePlugins: new Set(),
19
+ logger: noopLogger,
20
+ ...overrides,
21
+ };
22
+ }
23
+ /** Build a minimal PluginManifest for tests. */
24
+ export function makeManifest(overrides = {}) {
25
+ return {
26
+ title: 'Test Plugin',
27
+ summary: 'A plugin used in registry tests.',
28
+ whenToUse: ['always for testing'],
29
+ visibility: 'always',
30
+ ...overrides,
31
+ };
32
+ }
33
+ /** Build a PluginTool fixture with a no-op handler. */
34
+ export function makeTool(name, overrides = {}) {
35
+ return {
36
+ name,
37
+ description: `tool ${name}`,
38
+ schema: z.object({}),
39
+ handler: async () => 'ok',
40
+ ...overrides,
41
+ };
42
+ }
43
+ /** Build a PluginSubAgent fixture. */
44
+ export function makeSubAgent(name, overrides = {}) {
45
+ return {
46
+ name,
47
+ description: `subagent ${name}`,
48
+ systemPrompt: 'you are a test sub-agent',
49
+ tools: [],
50
+ ...overrides,
51
+ };
52
+ }
53
+ /**
54
+ * Build a minimally-typed AgentMiddleware fixture for registry tests.
55
+ * Registries only store and forward middlewares — they never invoke them —
56
+ * so a name-only object satisfies the structural type without pulling
57
+ * langchain into the test module graph.
58
+ */
59
+ export function makeMiddleware(label) {
60
+ return { name: label };
61
+ }
62
+ /**
63
+ * Minimal `RuntimeContext` stub used by `SharedStateRegistry.build` tests.
64
+ * Mirrors the pattern in `plugin-api.test.ts` — `satisfies RuntimeContext`
65
+ * keeps the shape honest with one narrow assertion on the unrelated LLM
66
+ * adapter return.
67
+ */
68
+ export function makeRuntimeContext(overrides = {}) {
69
+ const base = {
70
+ user: {
71
+ did: 'did:ixo:user1',
72
+ matrixUserId: '@did-ixo-user1:ixo.world',
73
+ ucanDelegation: { raw: 'test-ucan-delegation' },
74
+ },
75
+ session: {
76
+ id: 'session-1',
77
+ client: 'portal',
78
+ requestId: 'req-1',
79
+ },
80
+ history: {
81
+ messages: [],
82
+ recent: () => [],
83
+ userContext: {},
84
+ state: { messages: [] },
85
+ },
86
+ config: {},
87
+ availablePlugins: new Set(),
88
+ loadedPlugins: new Set(),
89
+ secrets: {
90
+ getIndex: async () => ({}),
91
+ getValues: async () => ({}),
92
+ },
93
+ blobStore: {
94
+ put: async () => 'blob_0000000000000000',
95
+ get: async () => null,
96
+ isValidBlobId: (value) => typeof value === 'string' && /^blob_[0-9a-f]{16}$/.test(value),
97
+ },
98
+ matrix: {
99
+ postToRoom: async () => 'event-id',
100
+ getRoomState: async (roomId) => ({ roomId, state: [] }),
101
+ getEventById: async (_roomId, eventId) => ({
102
+ eventId,
103
+ type: 'm.room.message',
104
+ content: {},
105
+ }),
106
+ },
107
+ ucan: {
108
+ requireCapability: () => undefined,
109
+ hasCapability: () => true,
110
+ mintInvocation: async () => 'invocation-cid',
111
+ resolveServiceDid: async () => 'did:web:example.com',
112
+ hasSigningKey: () => true,
113
+ createInvocationFromDelegation: async () => ({
114
+ invocation: 'invocation-car',
115
+ }),
116
+ },
117
+ llm: {
118
+ get: () => ({}),
119
+ },
120
+ emit: {
121
+ toolCall: () => undefined,
122
+ actionCall: () => undefined,
123
+ renderComponent: () => undefined,
124
+ reasoning: () => undefined,
125
+ browserToolCall: () => undefined,
126
+ router: () => undefined,
127
+ messageCacheInvalidation: () => undefined,
128
+ },
129
+ logger: {
130
+ log: () => undefined,
131
+ error: () => undefined,
132
+ warn: () => undefined,
133
+ },
134
+ abortSignal: new AbortController().signal,
135
+ shared: {},
136
+ };
137
+ return { ...base, ...overrides };
138
+ }
139
+ export function makePlugin(init) {
140
+ class TestPlugin extends OraclePlugin {
141
+ name = init.name;
142
+ version = init.version ?? '0.0.1';
143
+ manifest = init.manifest ?? makeManifest();
144
+ dependsOn = init.dependsOn;
145
+ softDependsOn = init.softDependsOn;
146
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
147
+ configSchema = init.configSchema;
148
+ autoDetectHint = init.autoDetectHint;
149
+ autoDetect(env) {
150
+ return init.autoDetect ? init.autoDetect(env) : true;
151
+ }
152
+ getTools(ctx) {
153
+ return init.getTools ? init.getTools(ctx) : [];
154
+ }
155
+ getSubAgents(ctx) {
156
+ return init.getSubAgents ? init.getSubAgents(ctx) : [];
157
+ }
158
+ getMiddlewares(ctx) {
159
+ return init.getMiddlewares ? init.getMiddlewares(ctx) : [];
160
+ }
161
+ getRequestTools = init.getRequestTools;
162
+ getRequestSubAgents = init.getRequestSubAgents;
163
+ getSharedState() {
164
+ return init.getSharedState ? init.getSharedState() : {};
165
+ }
166
+ }
167
+ return new TestPlugin();
168
+ }