@pikku/core 0.11.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (363) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/crypto-utils.d.ts +2 -0
  3. package/dist/crypto-utils.js +78 -0
  4. package/dist/errors/error-handler.js +3 -3
  5. package/dist/errors/errors.d.ts +8 -0
  6. package/dist/errors/errors.js +16 -0
  7. package/dist/errors/index.d.ts +0 -1
  8. package/dist/errors/index.js +0 -1
  9. package/dist/function/function-runner.d.ts +10 -3
  10. package/dist/function/function-runner.js +136 -31
  11. package/dist/function/functions.types.d.ts +35 -12
  12. package/dist/function/functions.types.js +16 -6
  13. package/dist/function/index.d.ts +2 -2
  14. package/dist/function/index.js +1 -2
  15. package/dist/handle-error.js +1 -10
  16. package/dist/index.d.ts +30 -24
  17. package/dist/index.js +19 -27
  18. package/dist/middleware/auth-apikey.d.ts +1 -1
  19. package/dist/middleware/auth-apikey.js +3 -3
  20. package/dist/middleware/auth-bearer.d.ts +1 -1
  21. package/dist/middleware/auth-bearer.js +3 -6
  22. package/dist/middleware/auth-cookie.d.ts +1 -1
  23. package/dist/middleware/auth-cookie.js +6 -8
  24. package/dist/middleware/cors.d.ts +46 -0
  25. package/dist/middleware/cors.js +73 -0
  26. package/dist/middleware/index.d.ts +5 -3
  27. package/dist/middleware/index.js +5 -3
  28. package/dist/middleware/remote-auth.d.ts +5 -0
  29. package/dist/middleware/remote-auth.js +55 -0
  30. package/dist/middleware/timeout.d.ts +1 -1
  31. package/dist/middleware-runner.d.ts +3 -14
  32. package/dist/middleware-runner.js +14 -16
  33. package/dist/permissions.d.ts +3 -86
  34. package/dist/permissions.js +20 -80
  35. package/dist/pikku-state.d.ts +33 -104
  36. package/dist/pikku-state.js +150 -66
  37. package/dist/schema.d.ts +8 -6
  38. package/dist/schema.js +31 -18
  39. package/dist/services/ai-agent-runner-service.d.ts +24 -0
  40. package/dist/services/ai-agent-runner-service.js +1 -0
  41. package/dist/services/ai-run-state-service.d.ts +13 -0
  42. package/dist/services/ai-run-state-service.js +1 -0
  43. package/dist/services/ai-storage-service.d.ts +18 -0
  44. package/dist/services/ai-storage-service.js +1 -0
  45. package/dist/services/deployment-service.d.ts +19 -0
  46. package/dist/services/deployment-service.js +1 -0
  47. package/dist/services/gopass-secrets.d.ts +47 -0
  48. package/dist/services/gopass-secrets.js +94 -0
  49. package/dist/services/in-memory-trigger-service.d.ts +23 -0
  50. package/dist/services/in-memory-trigger-service.js +50 -0
  51. package/dist/services/in-memory-workflow-service.d.ts +59 -0
  52. package/dist/services/in-memory-workflow-service.js +287 -0
  53. package/dist/services/index.d.ts +25 -11
  54. package/dist/services/index.js +10 -13
  55. package/dist/services/local-secrets.d.ts +23 -0
  56. package/dist/services/local-secrets.js +45 -0
  57. package/dist/services/local-variables.d.ts +5 -0
  58. package/dist/services/local-variables.js +18 -0
  59. package/dist/services/scheduler-service.d.ts +21 -1
  60. package/dist/services/scheduler-service.js +14 -0
  61. package/dist/services/schema-service.d.ts +6 -0
  62. package/dist/services/scoped-secret-service.d.ts +16 -0
  63. package/dist/services/scoped-secret-service.js +35 -0
  64. package/dist/services/secret-service.d.ts +25 -4
  65. package/dist/services/trigger-service.d.ts +23 -0
  66. package/dist/services/trigger-service.js +1 -0
  67. package/dist/services/typed-secret-service.d.ts +30 -0
  68. package/dist/services/typed-secret-service.js +40 -0
  69. package/dist/services/typed-variables-service.d.ts +27 -0
  70. package/dist/services/typed-variables-service.js +46 -0
  71. package/dist/services/user-session-service.d.ts +13 -0
  72. package/dist/services/user-session-service.js +17 -0
  73. package/dist/services/variables-service.d.ts +5 -0
  74. package/dist/services/workflow-service.d.ts +43 -0
  75. package/dist/services/workflow-service.js +1 -0
  76. package/dist/types/core.types.d.ts +54 -10
  77. package/dist/types/core.types.js +7 -0
  78. package/dist/types/state.types.d.ts +127 -0
  79. package/dist/types/state.types.js +1 -0
  80. package/dist/utils.d.ts +10 -1
  81. package/dist/utils.js +60 -3
  82. package/dist/version.d.ts +6 -0
  83. package/dist/version.js +19 -0
  84. package/dist/wirings/ai-agent/ai-agent-memory.d.ts +29 -0
  85. package/dist/wirings/ai-agent/ai-agent-memory.js +199 -0
  86. package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +9 -0
  87. package/dist/wirings/ai-agent/ai-agent-model-config.js +36 -0
  88. package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +60 -0
  89. package/dist/wirings/ai-agent/ai-agent-prepare.js +312 -0
  90. package/dist/wirings/ai-agent/ai-agent-registry.d.ts +15 -0
  91. package/dist/wirings/ai-agent/ai-agent-registry.js +47 -0
  92. package/dist/wirings/ai-agent/ai-agent-runner.d.ts +3 -0
  93. package/dist/wirings/ai-agent/ai-agent-runner.js +96 -0
  94. package/dist/wirings/ai-agent/ai-agent-stream.d.ts +11 -0
  95. package/dist/wirings/ai-agent/ai-agent-stream.js +503 -0
  96. package/dist/wirings/ai-agent/ai-agent.types.d.ts +254 -0
  97. package/dist/wirings/ai-agent/ai-agent.types.js +1 -0
  98. package/dist/wirings/ai-agent/index.d.ts +5 -0
  99. package/dist/wirings/ai-agent/index.js +4 -0
  100. package/dist/wirings/channel/channel-common.d.ts +7 -4
  101. package/dist/wirings/channel/channel-common.js +15 -8
  102. package/dist/wirings/channel/channel-handler.js +13 -4
  103. package/dist/wirings/channel/channel-middleware-runner.d.ts +9 -0
  104. package/dist/wirings/channel/channel-middleware-runner.js +73 -0
  105. package/dist/wirings/channel/channel-runner.js +12 -12
  106. package/dist/wirings/channel/channel.types.d.ts +5 -1
  107. package/dist/wirings/channel/define-channel-routes.d.ts +21 -0
  108. package/dist/wirings/channel/define-channel-routes.js +23 -0
  109. package/dist/wirings/channel/index.d.ts +10 -8
  110. package/dist/wirings/channel/index.js +7 -8
  111. package/dist/wirings/channel/local/index.d.ts +3 -3
  112. package/dist/wirings/channel/local/index.js +3 -3
  113. package/dist/wirings/channel/local/local-channel-runner.js +18 -6
  114. package/dist/wirings/channel/log-channels.js +1 -1
  115. package/dist/wirings/channel/serverless/index.d.ts +1 -1
  116. package/dist/wirings/channel/serverless/index.js +1 -1
  117. package/dist/wirings/channel/serverless/serverless-channel-runner.js +17 -6
  118. package/dist/wirings/cli/channel/cli-channel-runner.js +3 -2
  119. package/dist/wirings/cli/channel/index.d.ts +1 -1
  120. package/dist/wirings/cli/channel/index.js +1 -1
  121. package/dist/wirings/cli/cli-runner.d.ts +1 -1
  122. package/dist/wirings/cli/cli-runner.js +22 -18
  123. package/dist/wirings/cli/cli.types.d.ts +7 -6
  124. package/dist/wirings/cli/define-cli-commands.d.ts +19 -0
  125. package/dist/wirings/cli/define-cli-commands.js +20 -0
  126. package/dist/wirings/cli/index.d.ts +2 -3
  127. package/dist/wirings/cli/index.js +1 -3
  128. package/dist/wirings/http/http-routes.d.ts +69 -0
  129. package/dist/wirings/http/http-routes.js +139 -0
  130. package/dist/wirings/http/http-runner.d.ts +2 -2
  131. package/dist/wirings/http/http-runner.js +62 -27
  132. package/dist/wirings/http/http.types.d.ts +77 -24
  133. package/dist/wirings/http/index.d.ts +5 -4
  134. package/dist/wirings/http/index.js +4 -3
  135. package/dist/wirings/http/log-http-routes.js +1 -1
  136. package/dist/wirings/http/routers/path-to-regex.js +2 -2
  137. package/dist/wirings/mcp/index.d.ts +4 -3
  138. package/dist/wirings/mcp/index.js +3 -3
  139. package/dist/wirings/mcp/mcp-runner.d.ts +1 -3
  140. package/dist/wirings/mcp/mcp-runner.js +42 -56
  141. package/dist/wirings/mcp/mcp.types.d.ts +3 -3
  142. package/dist/wirings/node/index.d.ts +2 -0
  143. package/dist/wirings/node/index.js +1 -0
  144. package/dist/wirings/node/node.types.d.ts +20 -0
  145. package/dist/wirings/node/node.types.js +1 -0
  146. package/dist/wirings/oauth2/index.d.ts +3 -0
  147. package/dist/wirings/oauth2/index.js +2 -0
  148. package/dist/wirings/oauth2/oauth2-client.d.ts +47 -0
  149. package/dist/wirings/oauth2/oauth2-client.js +267 -0
  150. package/dist/wirings/oauth2/oauth2.types.d.ts +65 -0
  151. package/dist/wirings/oauth2/oauth2.types.js +4 -0
  152. package/dist/wirings/oauth2/wire-oauth2-credential.d.ts +20 -0
  153. package/dist/wirings/oauth2/wire-oauth2-credential.js +21 -0
  154. package/dist/wirings/queue/index.d.ts +2 -2
  155. package/dist/wirings/queue/index.js +1 -1
  156. package/dist/wirings/queue/queue-runner.d.ts +7 -0
  157. package/dist/wirings/queue/queue-runner.js +23 -12
  158. package/dist/wirings/queue/queue.types.d.ts +8 -2
  159. package/dist/wirings/rpc/index.d.ts +1 -1
  160. package/dist/wirings/rpc/index.js +1 -1
  161. package/dist/wirings/rpc/rpc-runner.d.ts +40 -13
  162. package/dist/wirings/rpc/rpc-runner.js +191 -25
  163. package/dist/wirings/rpc/rpc-types.d.ts +15 -4
  164. package/dist/wirings/scheduler/index.d.ts +3 -3
  165. package/dist/wirings/scheduler/index.js +2 -3
  166. package/dist/wirings/scheduler/log-schedulers.js +1 -1
  167. package/dist/wirings/scheduler/scheduler-runner.d.ts +5 -0
  168. package/dist/wirings/scheduler/scheduler-runner.js +28 -10
  169. package/dist/wirings/secret/index.d.ts +3 -0
  170. package/dist/wirings/secret/index.js +2 -0
  171. package/dist/wirings/secret/secret.types.d.ts +27 -0
  172. package/dist/wirings/secret/secret.types.js +1 -0
  173. package/dist/wirings/secret/validate-secret-definitions.d.ts +6 -0
  174. package/dist/wirings/secret/validate-secret-definitions.js +55 -0
  175. package/dist/wirings/trigger/index.d.ts +3 -0
  176. package/dist/wirings/trigger/index.js +2 -0
  177. package/dist/wirings/trigger/pikku-trigger-service.d.ts +26 -0
  178. package/dist/wirings/trigger/pikku-trigger-service.js +75 -0
  179. package/dist/wirings/trigger/trigger-runner.d.ts +42 -0
  180. package/dist/wirings/trigger/trigger-runner.js +85 -0
  181. package/dist/wirings/trigger/trigger.types.d.ts +130 -0
  182. package/dist/wirings/trigger/trigger.types.js +40 -0
  183. package/dist/wirings/variable/index.d.ts +3 -0
  184. package/dist/wirings/variable/index.js +2 -0
  185. package/dist/wirings/variable/validate-variable-definitions.d.ts +6 -0
  186. package/dist/wirings/variable/validate-variable-definitions.js +45 -0
  187. package/dist/wirings/variable/variable.types.d.ts +18 -0
  188. package/dist/wirings/variable/variable.types.js +1 -0
  189. package/dist/wirings/workflow/dsl/index.d.ts +5 -0
  190. package/dist/wirings/workflow/dsl/index.js +4 -0
  191. package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +292 -0
  192. package/dist/wirings/workflow/dsl/workflow-dsl.types.js +5 -0
  193. package/dist/wirings/workflow/dsl/workflow-runner.d.ts +5 -0
  194. package/dist/wirings/workflow/dsl/workflow-runner.js +23 -0
  195. package/dist/wirings/workflow/graph/graph-node.d.ts +117 -0
  196. package/dist/wirings/workflow/graph/graph-node.js +58 -0
  197. package/dist/wirings/workflow/graph/graph-runner.d.ts +9 -0
  198. package/dist/wirings/workflow/graph/graph-runner.js +540 -0
  199. package/dist/wirings/workflow/graph/index.d.ts +4 -0
  200. package/dist/wirings/workflow/graph/index.js +3 -0
  201. package/dist/wirings/workflow/graph/template.d.ts +15 -0
  202. package/dist/wirings/workflow/graph/template.js +27 -0
  203. package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +15 -0
  204. package/dist/wirings/workflow/graph/wire-workflow-graph.js +8 -0
  205. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +82 -0
  206. package/dist/wirings/workflow/graph/workflow-graph.types.js +15 -0
  207. package/dist/wirings/workflow/index.d.ts +7 -12
  208. package/dist/wirings/workflow/index.js +8 -11
  209. package/dist/wirings/workflow/pikku-workflow-service.d.ts +114 -10
  210. package/dist/wirings/workflow/pikku-workflow-service.js +386 -115
  211. package/dist/wirings/workflow/workflow-helpers.d.ts +36 -0
  212. package/dist/wirings/workflow/workflow-helpers.js +38 -0
  213. package/dist/wirings/workflow/workflow-utils.d.ts +1 -0
  214. package/dist/wirings/workflow/workflow-utils.js +1 -0
  215. package/dist/wirings/workflow/workflow.types.d.ts +83 -214
  216. package/package.json +13 -6
  217. package/run-tests.sh +4 -1
  218. package/src/crypto-utils.ts +99 -0
  219. package/src/errors/error-handler.ts +3 -3
  220. package/src/errors/errors.ts +17 -0
  221. package/src/errors/index.ts +0 -1
  222. package/src/factory-functions.test.ts +42 -2
  223. package/src/function/function-runner.test.ts +5 -12
  224. package/src/function/function-runner.ts +195 -40
  225. package/src/function/functions.types.ts +66 -14
  226. package/src/function/index.ts +5 -2
  227. package/src/handle-error.ts +2 -10
  228. package/src/index.ts +106 -27
  229. package/src/middleware/auth-apikey.test.ts +15 -12
  230. package/src/middleware/auth-apikey.ts +3 -3
  231. package/src/middleware/auth-bearer.test.ts +17 -14
  232. package/src/middleware/auth-bearer.ts +25 -27
  233. package/src/middleware/auth-cookie.test.ts +16 -13
  234. package/src/middleware/auth-cookie.ts +6 -8
  235. package/src/middleware/cors.ts +96 -0
  236. package/src/middleware/index.ts +5 -3
  237. package/src/middleware/remote-auth.ts +68 -0
  238. package/src/middleware-runner.test.ts +122 -0
  239. package/src/middleware-runner.ts +24 -17
  240. package/src/permissions.test.ts +102 -86
  241. package/src/permissions.ts +32 -93
  242. package/src/pikku-state.ts +168 -201
  243. package/src/run-tests-script.test.ts +49 -0
  244. package/src/schema.ts +50 -18
  245. package/src/services/ai-agent-runner-service.ts +29 -0
  246. package/src/services/ai-run-state-service.ts +20 -0
  247. package/src/services/ai-storage-service.ts +39 -0
  248. package/src/services/deployment-service.ts +22 -0
  249. package/src/services/gopass-secrets.ts +95 -0
  250. package/src/services/in-memory-trigger-service.ts +68 -0
  251. package/src/services/in-memory-workflow-service.ts +395 -0
  252. package/src/services/index.ts +49 -14
  253. package/src/services/local-secrets.ts +51 -0
  254. package/src/services/local-variables.ts +22 -0
  255. package/src/services/scheduler-service.ts +29 -1
  256. package/src/services/schema-service.ts +7 -0
  257. package/src/services/scoped-secret-service.ts +41 -0
  258. package/src/services/secret-service.ts +25 -4
  259. package/src/services/trigger-service.ts +38 -0
  260. package/src/services/typed-secret-service.ts +70 -0
  261. package/src/services/typed-variables-service.ts +81 -0
  262. package/src/services/user-session-service.ts +23 -0
  263. package/src/services/variables-service.ts +5 -0
  264. package/src/services/workflow-service.ts +94 -0
  265. package/src/types/core.types.ts +82 -8
  266. package/src/types/state.types.ts +169 -0
  267. package/src/utils.ts +74 -5
  268. package/src/version.test.ts +80 -0
  269. package/src/version.ts +25 -0
  270. package/src/wirings/ai-agent/ai-agent-memory.ts +300 -0
  271. package/src/wirings/ai-agent/ai-agent-model-config.ts +43 -0
  272. package/src/wirings/ai-agent/ai-agent-prepare.ts +470 -0
  273. package/src/wirings/ai-agent/ai-agent-registry.test.ts +37 -0
  274. package/src/wirings/ai-agent/ai-agent-registry.ts +82 -0
  275. package/src/wirings/ai-agent/ai-agent-runner.test.ts +75 -0
  276. package/src/wirings/ai-agent/ai-agent-runner.ts +137 -0
  277. package/src/wirings/ai-agent/ai-agent-stream.test.ts +246 -0
  278. package/src/wirings/ai-agent/ai-agent-stream.ts +774 -0
  279. package/src/wirings/ai-agent/ai-agent.types.ts +273 -0
  280. package/src/wirings/ai-agent/index.ts +28 -0
  281. package/src/wirings/channel/channel-common.ts +32 -19
  282. package/src/wirings/channel/channel-handler.ts +18 -5
  283. package/src/wirings/channel/channel-middleware-runner.ts +119 -0
  284. package/src/wirings/channel/channel-runner.ts +14 -15
  285. package/src/wirings/channel/channel.types.ts +17 -1
  286. package/src/wirings/channel/define-channel-routes.ts +25 -0
  287. package/src/wirings/channel/index.ts +23 -8
  288. package/src/wirings/channel/local/index.ts +3 -3
  289. package/src/wirings/channel/local/local-channel-runner.test.ts +47 -2
  290. package/src/wirings/channel/local/local-channel-runner.ts +22 -6
  291. package/src/wirings/channel/log-channels.ts +1 -1
  292. package/src/wirings/channel/serverless/index.ts +5 -1
  293. package/src/wirings/channel/serverless/serverless-channel-runner.ts +22 -6
  294. package/src/wirings/cli/channel/cli-channel-runner.ts +4 -3
  295. package/src/wirings/cli/channel/index.ts +1 -1
  296. package/src/wirings/cli/cli-runner.test.ts +28 -28
  297. package/src/wirings/cli/cli-runner.ts +27 -19
  298. package/src/wirings/cli/cli.types.ts +12 -11
  299. package/src/wirings/cli/command-parser.test.ts +8 -8
  300. package/src/wirings/cli/define-cli-commands.ts +24 -0
  301. package/src/wirings/cli/index.ts +10 -4
  302. package/src/wirings/http/http-routes.test.ts +322 -0
  303. package/src/wirings/http/http-routes.ts +198 -0
  304. package/src/wirings/http/http-runner.test.ts +5 -5
  305. package/src/wirings/http/http-runner.ts +80 -29
  306. package/src/wirings/http/http.types.ts +121 -23
  307. package/src/wirings/http/index.ts +16 -4
  308. package/src/wirings/http/log-http-routes.ts +1 -1
  309. package/src/wirings/http/routers/path-to-regex.test.ts +30 -19
  310. package/src/wirings/http/routers/path-to-regex.ts +2 -2
  311. package/src/wirings/mcp/index.ts +27 -3
  312. package/src/wirings/mcp/mcp-endpoint-registry.test.ts +3 -3
  313. package/src/wirings/mcp/mcp-runner.ts +56 -67
  314. package/src/wirings/mcp/mcp.types.ts +3 -3
  315. package/src/wirings/node/index.ts +2 -0
  316. package/src/wirings/node/node.types.ts +23 -0
  317. package/src/wirings/oauth2/index.ts +3 -0
  318. package/src/wirings/oauth2/oauth2-client.test.ts +929 -0
  319. package/src/wirings/oauth2/oauth2-client.ts +335 -0
  320. package/src/wirings/oauth2/oauth2.types.ts +69 -0
  321. package/src/wirings/oauth2/wire-oauth2-credential.ts +23 -0
  322. package/src/wirings/queue/index.ts +14 -2
  323. package/src/wirings/queue/queue-runner.test.ts +115 -73
  324. package/src/wirings/queue/queue-runner.ts +39 -13
  325. package/src/wirings/queue/queue.types.ts +12 -2
  326. package/src/wirings/rpc/index.ts +1 -1
  327. package/src/wirings/rpc/rpc-runner.ts +270 -34
  328. package/src/wirings/rpc/rpc-types.ts +21 -4
  329. package/src/wirings/scheduler/index.ts +7 -4
  330. package/src/wirings/scheduler/log-schedulers.ts +1 -1
  331. package/src/wirings/scheduler/scheduler-runner.test.ts +97 -53
  332. package/src/wirings/scheduler/scheduler-runner.ts +50 -10
  333. package/src/wirings/secret/index.ts +9 -0
  334. package/src/wirings/secret/secret.types.ts +32 -0
  335. package/src/wirings/secret/validate-secret-definitions.ts +82 -0
  336. package/src/wirings/trigger/index.ts +10 -0
  337. package/src/wirings/trigger/pikku-trigger-service.ts +134 -0
  338. package/src/wirings/trigger/trigger-runner.ts +138 -0
  339. package/src/wirings/trigger/trigger.types.ts +178 -0
  340. package/src/wirings/variable/index.ts +8 -0
  341. package/src/wirings/variable/validate-variable-definitions.ts +69 -0
  342. package/src/wirings/variable/variable.types.ts +22 -0
  343. package/src/wirings/workflow/dsl/index.ts +31 -0
  344. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +320 -0
  345. package/src/wirings/workflow/dsl/workflow-runner.ts +28 -0
  346. package/src/wirings/workflow/graph/graph-node.ts +222 -0
  347. package/src/wirings/workflow/graph/graph-runner.test.ts +495 -0
  348. package/src/wirings/workflow/graph/graph-runner.ts +816 -0
  349. package/src/wirings/workflow/graph/index.ts +14 -0
  350. package/src/wirings/workflow/graph/template.ts +42 -0
  351. package/src/wirings/workflow/graph/wire-workflow-graph.ts +29 -0
  352. package/src/wirings/workflow/graph/workflow-graph.types.ts +104 -0
  353. package/src/wirings/workflow/index.ts +64 -26
  354. package/src/wirings/workflow/pikku-workflow-service.test.ts +212 -0
  355. package/src/wirings/workflow/pikku-workflow-service.ts +571 -136
  356. package/src/wirings/workflow/workflow-helpers.ts +79 -0
  357. package/src/wirings/workflow/workflow-utils.ts +0 -0
  358. package/src/wirings/workflow/workflow.types.ts +123 -279
  359. package/tsconfig.tsbuildinfo +1 -1
  360. package/dist/wirings/workflow/workflow-runner.d.ts +0 -34
  361. package/dist/wirings/workflow/workflow-runner.js +0 -65
  362. package/src/function/function-runner.ts.bak +0 -188
  363. package/src/wirings/workflow/workflow-runner.ts +0 -72
@@ -6,7 +6,7 @@ import { Logger } from '../../services/index.js'
6
6
  * @param logger - A logger for logging information.
7
7
  */
8
8
  export const logRoutes = (logger: Logger) => {
9
- const routesByType = pikkuState('http', 'routes')
9
+ const routesByType = pikkuState(null, 'http', 'routes')
10
10
  if (routesByType.size === 0) {
11
11
  logger.info('No routes added')
12
12
  return
@@ -23,6 +23,7 @@ describe('PathToRegexRouter', () => {
23
23
  test('should correctly identify static routes', () => {
24
24
  // Setup test routes
25
25
  pikkuState(
26
+ null,
26
27
  'http',
27
28
  'routes',
28
29
  new Map([
@@ -36,8 +37,8 @@ describe('PathToRegexRouter', () => {
36
37
  ],
37
38
  ])
38
39
  )
39
- pikkuState('http', 'middleware', new Map())
40
- pikkuState('channel', 'channels', new Map())
40
+ pikkuState(null, 'http', 'middleware', new Map())
41
+ pikkuState(null, 'channel', 'channels', new Map())
41
42
 
42
43
  router.initialize()
43
44
 
@@ -56,6 +57,7 @@ describe('PathToRegexRouter', () => {
56
57
  test('should handle dynamic routes with parameters', () => {
57
58
  // Setup test routes with parameters
58
59
  pikkuState(
60
+ null,
59
61
  'http',
60
62
  'routes',
61
63
  new Map([
@@ -71,8 +73,8 @@ describe('PathToRegexRouter', () => {
71
73
  ],
72
74
  ])
73
75
  )
74
- pikkuState('http', 'middleware', new Map())
75
- pikkuState('channel', 'channels', new Map())
76
+ pikkuState(null, 'http', 'middleware', new Map())
77
+ pikkuState(null, 'channel', 'channels', new Map())
76
78
 
77
79
  router.initialize()
78
80
 
@@ -98,6 +100,7 @@ describe('PathToRegexRouter', () => {
98
100
  test('should handle multi-parameter routes', () => {
99
101
  // Setup routes with multiple parameters
100
102
  pikkuState(
103
+ null,
101
104
  'http',
102
105
  'routes',
103
106
  new Map([
@@ -116,8 +119,8 @@ describe('PathToRegexRouter', () => {
116
119
  ],
117
120
  ])
118
121
  )
119
- pikkuState('http', 'middleware', new Map())
120
- pikkuState('channel', 'channels', new Map())
122
+ pikkuState(null, 'http', 'middleware', new Map())
123
+ pikkuState(null, 'channel', 'channels', new Map())
121
124
 
122
125
  router.initialize()
123
126
 
@@ -139,6 +142,7 @@ describe('PathToRegexRouter', () => {
139
142
  test('should prioritize static routes over dynamic routes for performance', () => {
140
143
  // Setup mixed routes where static could conflict with dynamic
141
144
  pikkuState(
145
+ null,
142
146
  'http',
143
147
  'routes',
144
148
  new Map([
@@ -151,8 +155,8 @@ describe('PathToRegexRouter', () => {
151
155
  ],
152
156
  ])
153
157
  )
154
- pikkuState('http', 'middleware', new Map())
155
- pikkuState('channel', 'channels', new Map())
158
+ pikkuState(null, 'http', 'middleware', new Map())
159
+ pikkuState(null, 'channel', 'channels', new Map())
156
160
 
157
161
  router.initialize()
158
162
 
@@ -167,6 +171,7 @@ describe('PathToRegexRouter', () => {
167
171
  describe('Path Normalization', () => {
168
172
  test('should normalize paths without leading slash', () => {
169
173
  pikkuState(
174
+ null,
170
175
  'http',
171
176
  'routes',
172
177
  new Map([
@@ -179,8 +184,8 @@ describe('PathToRegexRouter', () => {
179
184
  ],
180
185
  ])
181
186
  )
182
- pikkuState('http', 'middleware', new Map())
183
- pikkuState('channel', 'channels', new Map())
187
+ pikkuState(null, 'http', 'middleware', new Map())
188
+ pikkuState(null, 'channel', 'channels', new Map())
184
189
 
185
190
  router.initialize()
186
191
 
@@ -201,9 +206,10 @@ describe('PathToRegexRouter', () => {
201
206
 
202
207
  describe('Channel Routes Integration', () => {
203
208
  test('should handle channel routes as GET routes', () => {
204
- pikkuState('http', 'routes', new Map())
205
- pikkuState('http', 'middleware', new Map())
209
+ pikkuState(null, 'http', 'routes', new Map())
210
+ pikkuState(null, 'http', 'middleware', new Map())
206
211
  pikkuState(
212
+ null,
207
213
  'channel',
208
214
  'channels',
209
215
  new Map([
@@ -233,11 +239,13 @@ describe('PathToRegexRouter', () => {
233
239
  const routeMiddleware = [async () => {}]
234
240
 
235
241
  pikkuState(
242
+ null,
236
243
  'http',
237
244
  'routes',
238
245
  new Map([['get', new Map([['/api/test', mockRoute('/api/test')]])]])
239
246
  )
240
247
  pikkuState(
248
+ null,
241
249
  'http',
242
250
  'middleware',
243
251
  new Map([
@@ -245,7 +253,7 @@ describe('PathToRegexRouter', () => {
245
253
  ['/api/test', routeMiddleware],
246
254
  ])
247
255
  )
248
- pikkuState('channel', 'channels', new Map())
256
+ pikkuState(null, 'channel', 'channels', new Map())
249
257
 
250
258
  router.initialize()
251
259
 
@@ -260,12 +268,13 @@ describe('PathToRegexRouter', () => {
260
268
  describe('No Match Scenarios', () => {
261
269
  test('should return null for non-existent routes', () => {
262
270
  pikkuState(
271
+ null,
263
272
  'http',
264
273
  'routes',
265
274
  new Map([['get', new Map([['/existing', mockRoute('/existing')]])]])
266
275
  )
267
- pikkuState('http', 'middleware', new Map())
268
- pikkuState('channel', 'channels', new Map())
276
+ pikkuState(null, 'http', 'middleware', new Map())
277
+ pikkuState(null, 'channel', 'channels', new Map())
269
278
 
270
279
  router.initialize()
271
280
 
@@ -275,12 +284,13 @@ describe('PathToRegexRouter', () => {
275
284
 
276
285
  test('should return null for unsupported HTTP methods', () => {
277
286
  pikkuState(
287
+ null,
278
288
  'http',
279
289
  'routes',
280
290
  new Map([['get', new Map([['/test', mockRoute('/test')]])]])
281
291
  )
282
- pikkuState('http', 'middleware', new Map())
283
- pikkuState('channel', 'channels', new Map())
292
+ pikkuState(null, 'http', 'middleware', new Map())
293
+ pikkuState(null, 'channel', 'channels', new Map())
284
294
 
285
295
  router.initialize()
286
296
 
@@ -292,12 +302,13 @@ describe('PathToRegexRouter', () => {
292
302
  describe('Lazy Initialization', () => {
293
303
  test('should initialize automatically on first match call', () => {
294
304
  pikkuState(
305
+ null,
295
306
  'http',
296
307
  'routes',
297
308
  new Map([['get', new Map([['/test', mockRoute('/test')]])]])
298
309
  )
299
- pikkuState('http', 'middleware', new Map())
300
- pikkuState('channel', 'channels', new Map())
310
+ pikkuState(null, 'http', 'middleware', new Map())
311
+ pikkuState(null, 'channel', 'channels', new Map())
301
312
 
302
313
  // Don't call initialize manually
303
314
  const result = router.match('get', '/test')
@@ -25,8 +25,8 @@ export class PathToRegexRouter implements Router {
25
25
  }
26
26
 
27
27
  public initialize() {
28
- const routes = pikkuState('http', 'routes')
29
- const channelRoutes = pikkuState('channel', 'channels')
28
+ const routes = pikkuState(null, 'http', 'routes')
29
+ const channelRoutes = pikkuState(null, 'channel', 'channels')
30
30
 
31
31
  // Helper function to compile routes for a given method
32
32
  const compileRoutesForMethod = (
@@ -1,3 +1,27 @@
1
- export * from './mcp.types.js'
2
- export * from './mcp-runner.js'
3
- export * from './mcp-endpoint-registry.js'
1
+ export { MCPEndpointRegistry } from './mcp-endpoint-registry.js'
2
+ export {
3
+ MCPError,
4
+ wireMCPResource,
5
+ wireMCPPrompt,
6
+ runMCPResource,
7
+ runMCPTool,
8
+ runMCPPrompt,
9
+ } from './mcp-runner.js'
10
+ export {
11
+ getMCPResourcesMeta,
12
+ getMCPToolsMeta,
13
+ getMCPPromptsMeta,
14
+ } from './mcp-runner.js'
15
+ export type {
16
+ AssertMCPResourceURIParams,
17
+ CoreMCPPrompt,
18
+ CoreMCPResource,
19
+ CoreMCPTool,
20
+ MCPPromptResponse,
21
+ MCPResourceMeta,
22
+ MCPResourceResponse,
23
+ MCPToolMeta,
24
+ MCPToolResponse,
25
+ MCPPromptMeta,
26
+ PikkuMCP,
27
+ } from './mcp.types.js'
@@ -147,7 +147,7 @@ describe('MCPEndpointRegistry', () => {
147
147
  uri: 'file://test.txt',
148
148
  title: 'Test Resource',
149
149
  description: 'Test description',
150
- pikkuFuncName: 'testResource',
150
+ pikkuFuncId: 'testResource',
151
151
  inputSchema: null,
152
152
  outputSchema: null,
153
153
  mimeType: 'text/plain',
@@ -164,7 +164,7 @@ describe('MCPEndpointRegistry', () => {
164
164
  name: 'test-tool',
165
165
  title: 'Test Tool',
166
166
  description: 'Test description',
167
- pikkuFuncName: 'testTool',
167
+ pikkuFuncId: 'testTool',
168
168
  inputSchema: null,
169
169
  outputSchema: null,
170
170
  },
@@ -179,7 +179,7 @@ describe('MCPEndpointRegistry', () => {
179
179
  'test-prompt': {
180
180
  name: 'test-prompt',
181
181
  description: 'Test Prompt',
182
- pikkuFuncName: 'testPrompt',
182
+ pikkuFuncId: 'testPrompt',
183
183
  inputSchema: null,
184
184
  outputSchema: null,
185
185
  arguments: [],
@@ -7,7 +7,6 @@ import {
7
7
  } from '../../types/core.types.js'
8
8
  import type {
9
9
  CoreMCPResource,
10
- CoreMCPTool,
11
10
  CoreMCPPrompt,
12
11
  JsonRpcRequest,
13
12
  JsonRpcResponse,
@@ -22,8 +21,15 @@ import { getErrorResponse } from '../../errors/error-handler.js'
22
21
  import { closeWireServices } from '../../utils.js'
23
22
  import { pikkuState } from '../../pikku-state.js'
24
23
  import { addFunction, runPikkuFunc } from '../../function/function-runner.js'
25
- import { BadRequestError, NotFoundError } from '../../errors/errors.js'
26
- import { PikkuSessionService } from '../../services/user-session-service.js'
24
+ import {
25
+ BadRequestError,
26
+ NotFoundError,
27
+ PikkuMissingMetaError,
28
+ } from '../../errors/errors.js'
29
+ import {
30
+ PikkuSessionService,
31
+ createMiddlewareSessionWireProps,
32
+ } from '../../services/user-session-service.js'
27
33
 
28
34
  export class MCPError extends Error {
29
35
  constructor(public readonly error: JsonRpcErrorResponse) {
@@ -56,39 +62,21 @@ export const wireMCPResource = <
56
62
  >(
57
63
  mcpResource: CoreMCPResource<PikkuFunctionConfig>
58
64
  ) => {
59
- const resourcesMeta = pikkuState('mcp', 'resourcesMeta')
65
+ const resourcesMeta = pikkuState(null, 'mcp', 'resourcesMeta')
60
66
  const mcpResourceMeta = resourcesMeta[mcpResource.uri]
61
67
  if (!mcpResourceMeta) {
62
- throw new Error(`MCP resource metadata not found for '${mcpResource.uri}'`)
68
+ throw new PikkuMissingMetaError(
69
+ `Missing generated metadata for MCP resource '${mcpResource.uri}'`
70
+ )
63
71
  }
64
- addFunction(mcpResourceMeta.pikkuFuncName, mcpResource.func as any)
65
- const resources = pikkuState('mcp', 'resources')
72
+ addFunction(mcpResourceMeta.pikkuFuncId, mcpResource.func as any)
73
+ const resources = pikkuState(null, 'mcp', 'resources')
66
74
  if (resources.has(mcpResource.uri)) {
67
75
  throw new Error(`MCP resource already exists: ${mcpResource.uri}`)
68
76
  }
69
77
  resources.set(mcpResource.uri, mcpResource)
70
78
  }
71
79
 
72
- export const wireMCPTool = <
73
- PikkuFunctionConfig extends CorePikkuFunctionConfig<
74
- CorePikkuFunctionSessionless<any, any>
75
- > = CorePikkuFunctionConfig<CorePikkuFunctionSessionless<any, any>>,
76
- >(
77
- mcpTool: CoreMCPTool<PikkuFunctionConfig>
78
- ) => {
79
- const toolsMeta = pikkuState('mcp', 'toolsMeta')
80
- const mcpToolMeta = toolsMeta[mcpTool.name]
81
- if (!mcpToolMeta) {
82
- throw new Error(`MCP tool metadata not found for '${mcpTool.name}'`)
83
- }
84
- addFunction(mcpToolMeta.pikkuFuncName, mcpTool.func as any)
85
- const tools = pikkuState('mcp', 'tools')
86
- if (tools.has(mcpTool.name)) {
87
- throw new Error(`MCP tool already exists: ${mcpTool.name}`)
88
- }
89
- tools.set(mcpTool.name, mcpTool)
90
- }
91
-
92
80
  export const wireMCPPrompt = <
93
81
  PikkuFunctionConfig extends CorePikkuFunctionConfig<
94
82
  CorePikkuFunctionSessionless<any, any>
@@ -96,13 +84,15 @@ export const wireMCPPrompt = <
96
84
  >(
97
85
  mcpPrompt: CoreMCPPrompt<PikkuFunctionConfig>
98
86
  ) => {
99
- const promptsMeta = pikkuState('mcp', 'promptsMeta')
87
+ const promptsMeta = pikkuState(null, 'mcp', 'promptsMeta')
100
88
  const mcpPromptMeta = promptsMeta[mcpPrompt.name]
101
89
  if (!mcpPromptMeta) {
102
- throw new Error(`MCP prompt metadata not found for '${mcpPrompt.name}'`)
90
+ throw new PikkuMissingMetaError(
91
+ `Missing generated metadata for MCP prompt '${mcpPrompt.name}'`
92
+ )
103
93
  }
104
- addFunction(mcpPromptMeta.pikkuFuncName, mcpPrompt.func as any)
105
- const prompts = pikkuState('mcp', 'prompts')
94
+ addFunction(mcpPromptMeta.pikkuFuncId, mcpPrompt.func as any)
95
+ const prompts = pikkuState(null, 'mcp', 'prompts')
106
96
  if (prompts.has(mcpPrompt.name)) {
107
97
  throw new Error(`MCP prompt already exists: ${mcpPrompt.name}`)
108
98
  }
@@ -115,15 +105,15 @@ export async function runMCPResource(
115
105
  uri: string
116
106
  ) {
117
107
  let endpoint: CoreMCPResource | undefined
118
- let pikkuFuncName: string | undefined
108
+ let pikkuFuncId: string | undefined
119
109
  let extractedParams: Record<string, string> = {}
120
110
 
121
- const metas = pikkuState('mcp', 'resourcesMeta')
122
- const endpoints = pikkuState('mcp', 'resources')
111
+ const metas = pikkuState(null, 'mcp', 'resourcesMeta')
112
+ const endpoints = pikkuState(null, 'mcp', 'resources')
123
113
 
124
114
  if (endpoints.has(uri)) {
125
115
  endpoint = endpoints.get(uri)
126
- pikkuFuncName = metas[uri]?.pikkuFuncName
116
+ pikkuFuncId = metas[uri]?.pikkuFuncId
127
117
  } else {
128
118
  for (const [uriTemplate, value] of endpoints.entries()) {
129
119
  // Extract parameter names from the template
@@ -139,7 +129,7 @@ export async function runMCPResource(
139
129
 
140
130
  if (match) {
141
131
  endpoint = value
142
- pikkuFuncName = metas[uriTemplate]?.pikkuFuncName
132
+ pikkuFuncId = metas[uriTemplate]?.pikkuFuncId
143
133
 
144
134
  // Extract parameter values and create params object
145
135
  for (let i = 0; i < paramNames.length; i++) {
@@ -158,7 +148,7 @@ export async function runMCPResource(
158
148
  'resource',
159
149
  uri,
160
150
  endpoint,
161
- pikkuFuncName,
151
+ pikkuFuncId,
162
152
  { ...params, mcp: { ...params.mcp, uri } } as RunMCPEndpointParams<
163
153
  keyof CoreMCPResource
164
154
  >
@@ -170,14 +160,13 @@ export async function runMCPTool(
170
160
  params: RunMCPEndpointParams,
171
161
  name: string
172
162
  ) {
173
- const endpoint = pikkuState('mcp', 'tools').get(name)
174
- const meta = pikkuState('mcp', 'toolsMeta')[name]
163
+ const meta = pikkuState(null, 'mcp', 'toolsMeta')[name]
175
164
  return await runMCPPikkuFunc(
176
165
  request,
177
166
  'tool',
178
167
  name,
179
- endpoint,
180
- meta?.pikkuFuncName,
168
+ undefined,
169
+ meta?.pikkuFuncId,
181
170
  params
182
171
  )
183
172
  }
@@ -187,14 +176,14 @@ export async function runMCPPrompt(
187
176
  params: RunMCPEndpointParams,
188
177
  name: string
189
178
  ) {
190
- const endpoint = pikkuState('mcp', 'prompts').get(name)
191
- const meta = pikkuState('mcp', 'promptsMeta')[name]
179
+ const endpoint = pikkuState(null, 'mcp', 'prompts').get(name)
180
+ const meta = pikkuState(null, 'mcp', 'promptsMeta')[name]
192
181
  return await runMCPPikkuFunc(
193
182
  request,
194
183
  'prompt',
195
184
  name,
196
185
  endpoint,
197
- meta?.pikkuFuncName,
186
+ meta?.pikkuFuncId,
198
187
  params
199
188
  )
200
189
  }
@@ -206,27 +195,26 @@ async function runMCPPikkuFunc(
206
195
  request: JsonRpcRequest,
207
196
  type: 'resource' | 'tool' | 'prompt',
208
197
  name: string,
209
- mcp: CoreMCPResource | CoreMCPTool | CoreMCPPrompt | undefined,
210
- pikkuFuncName: string | undefined,
198
+ mcp: CoreMCPResource | CoreMCPPrompt | undefined,
199
+ pikkuFuncId: string | undefined,
211
200
  { singletonServices, createWireServices, mcp: mcpWire }: RunMCPEndpointParams
212
201
  ): Promise<JsonRpcResponse> {
213
202
  let wireServices: any
214
203
 
215
204
  try {
216
- // Validate JSON-RPC request structure
217
205
  if (request.jsonrpc !== '2.0') {
218
206
  throw new BadRequestError(
219
207
  'Invalid JSON-RPC version, only supoorted version is 2.0'
220
208
  )
221
209
  }
222
210
 
223
- if (!mcp) {
211
+ if (mcp === undefined && type !== 'tool') {
224
212
  throw new NotFoundError(
225
213
  `MCP '${type}' registration not found for '${name}'`
226
214
  )
227
215
  }
228
216
 
229
- if (!pikkuFuncName) {
217
+ if (!pikkuFuncId) {
230
218
  throw new NotFoundError(
231
219
  `MCP '${type}' PikkuFunction Mapping not found for '${name}'`
232
220
  )
@@ -234,33 +222,38 @@ async function runMCPPikkuFunc(
234
222
 
235
223
  singletonServices.logger.debug(`Running MCP ${type}: ${name}`)
236
224
 
225
+ const mcpSessionService = new PikkuSessionService()
237
226
  const wire: PikkuWire = {
238
227
  mcp: mcpWire,
239
- session: new PikkuSessionService(),
228
+ ...createMiddlewareSessionWireProps(mcpSessionService),
240
229
  }
241
230
 
242
- // Get metadata for the MCP endpoint to access pre-resolved middleware
243
231
  let meta: any
244
232
  if (type === 'resource') {
245
- meta = pikkuState('mcp', 'resourcesMeta')[name]
233
+ meta = pikkuState(null, 'mcp', 'resourcesMeta')[name]
246
234
  } else if (type === 'tool') {
247
- meta = pikkuState('mcp', 'toolsMeta')[name]
235
+ meta = pikkuState(null, 'mcp', 'toolsMeta')[name]
248
236
  } else if (type === 'prompt') {
249
- meta = pikkuState('mcp', 'promptsMeta')[name]
237
+ meta = pikkuState(null, 'mcp', 'promptsMeta')[name]
250
238
  }
251
239
 
252
- const result = await runPikkuFunc('mcp', `${type}:${name}`, pikkuFuncName, {
240
+ let result = await runPikkuFunc('mcp', `${type}:${name}`, pikkuFuncId, {
253
241
  singletonServices,
254
242
  createWireServices,
255
243
  data: () => request.params,
256
244
  inheritedMiddleware: meta?.middleware,
257
- wireMiddleware: mcp.middleware,
245
+ wireMiddleware: mcp?.middleware,
258
246
  inheritedPermissions: meta?.permissions,
259
- wirePermissions: mcp.permissions,
260
- tags: mcp.tags,
247
+ wirePermissions: mcp?.permissions,
248
+ tags: mcp?.tags,
261
249
  wire,
250
+ sessionService: mcpSessionService,
262
251
  })
263
252
 
253
+ if (type === 'tool' && meta?.outputSchema !== 'MCPToolResponse') {
254
+ result = [{ type: 'text', text: JSON.stringify(result) }]
255
+ }
256
+
264
257
  return {
265
258
  id: request.id,
266
259
  result,
@@ -297,26 +290,22 @@ async function runMCPPikkuFunc(
297
290
  }
298
291
  }
299
292
 
300
- export const getMCPTools = () => {
301
- return pikkuState('mcp', 'tools')
302
- }
303
-
304
293
  export const getMCPResources = () => {
305
- return pikkuState('mcp', 'resources')
294
+ return pikkuState(null, 'mcp', 'resources')
306
295
  }
307
296
 
308
297
  export const getMCPResourcesMeta = () => {
309
- return pikkuState('mcp', 'resourcesMeta')
298
+ return pikkuState(null, 'mcp', 'resourcesMeta')
310
299
  }
311
300
 
312
301
  export const getMCPToolsMeta = () => {
313
- return pikkuState('mcp', 'toolsMeta')
302
+ return pikkuState(null, 'mcp', 'toolsMeta')
314
303
  }
315
304
 
316
305
  export const getMCPPrompts = () => {
317
- return pikkuState('mcp', 'prompts')
306
+ return pikkuState(null, 'mcp', 'prompts')
318
307
  }
319
308
 
320
309
  export const getMCPPromptsMeta = () => {
321
- return pikkuState('mcp', 'promptsMeta')
310
+ return pikkuState(null, 'mcp', 'promptsMeta')
322
311
  }
@@ -50,7 +50,7 @@ export type PikkuMCP<Tools extends string = any> = {
50
50
  export type MCPResourceMeta = Record<
51
51
  string,
52
52
  Omit<CoreMCPResource, 'func' | 'middleware' | 'permissions'> & {
53
- pikkuFuncName: string
53
+ pikkuFuncId: string
54
54
  inputSchema: string | null
55
55
  outputSchema: string | null
56
56
  middleware?: MiddlewareMetadata[] // Pre-resolved middleware chain (tag + explicit)
@@ -64,7 +64,7 @@ export type MCPResourceMeta = Record<
64
64
  export type MCPToolMeta = Record<
65
65
  string,
66
66
  Omit<CoreMCPTool, 'func' | 'middleware' | 'permissions'> & {
67
- pikkuFuncName: string
67
+ pikkuFuncId: string
68
68
  inputSchema: string | null
69
69
  outputSchema: string | null
70
70
  middleware?: MiddlewareMetadata[] // Pre-resolved middleware chain (tag + explicit)
@@ -78,7 +78,7 @@ export type MCPToolMeta = Record<
78
78
  export type MCPPromptMeta = Record<
79
79
  string,
80
80
  Omit<CoreMCPPrompt, 'func' | 'middleware' | 'permissions'> & {
81
- pikkuFuncName: string
81
+ pikkuFuncId: string
82
82
  inputSchema: string | null
83
83
  outputSchema: string | null
84
84
  arguments: Array<{
@@ -0,0 +1,2 @@
1
+ export type { CoreNodeConfig, NodeType } from './node.types.js'
2
+ export type { NodesMeta } from './node.types.js'
@@ -0,0 +1,23 @@
1
+ export type NodeType = 'trigger' | 'action' | 'end'
2
+
3
+ export type CoreNodeConfig = {
4
+ displayName: string
5
+ category: string
6
+ type: NodeType
7
+ errorOutput?: boolean
8
+ }
9
+
10
+ export type NodeMeta = {
11
+ name: string
12
+ displayName: string
13
+ category: string
14
+ type: NodeType
15
+ rpc: string
16
+ description?: string
17
+ errorOutput: boolean
18
+ inputSchemaName: string | null
19
+ outputSchemaName: string | null
20
+ tags?: string[]
21
+ }
22
+
23
+ export type NodesMeta = Record<string, NodeMeta>
@@ -0,0 +1,3 @@
1
+ export { OAuth2Client } from './oauth2-client.js'
2
+ export { wireOAuth2Credential } from './wire-oauth2-credential.js'
3
+ export type { OAuth2AppCredential, OAuth2Token } from './oauth2.types.js'