@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
@@ -4,6 +4,7 @@ import {
4
4
  wireScheduler,
5
5
  runScheduledTask,
6
6
  getScheduledTasks,
7
+ createSchedulerRuntimeHandlers,
7
8
  } from './scheduler-runner.js'
8
9
  import { resetPikkuState, pikkuState } from '../../pikku-state.js'
9
10
  import { CoreScheduledTask } from './scheduler.types.js'
@@ -37,15 +38,15 @@ describe('wireScheduler', () => {
37
38
  }
38
39
 
39
40
  // Set up metadata first
40
- pikkuState('scheduler', 'meta')['test-task'] = {
41
- pikkuFuncName: 'scheduler_test-task',
41
+ pikkuState(null, 'scheduler', 'meta')['test-task'] = {
42
+ pikkuFuncId: 'scheduler_test-task',
42
43
  name: 'test-task',
43
44
  schedule: '0 0 * * *',
44
45
  }
45
46
 
46
47
  wireScheduler(mockTask)
47
48
 
48
- const tasks = pikkuState('scheduler', 'tasks')
49
+ const tasks = pikkuState(null, 'scheduler', 'tasks')
49
50
  assert.equal(tasks.has('test-task'), true)
50
51
  assert.equal(tasks.get('test-task'), mockTask)
51
52
  })
@@ -63,7 +64,10 @@ describe('wireScheduler', () => {
63
64
  assert.throws(
64
65
  () => wireScheduler(mockTask),
65
66
  (error: any) => {
66
- assert.equal(error.message, 'Task metadata not found')
67
+ assert.equal(
68
+ error.message,
69
+ "Missing generated metadata for scheduled task 'missing-meta-task'"
70
+ )
67
71
  return true
68
72
  }
69
73
  )
@@ -80,8 +84,8 @@ describe('wireScheduler', () => {
80
84
  }
81
85
 
82
86
  // Set up metadata
83
- pikkuState('scheduler', 'meta')['duplicate-task'] = {
84
- pikkuFuncName: 'scheduler_duplicate-task',
87
+ pikkuState(null, 'scheduler', 'meta')['duplicate-task'] = {
88
+ pikkuFuncId: 'scheduler_duplicate-task',
85
89
  name: 'duplicate-task',
86
90
  schedule: '0 0 * * *',
87
91
  }
@@ -120,15 +124,15 @@ describe('wireScheduler', () => {
120
124
  tags: ['scheduled'],
121
125
  }
122
126
 
123
- pikkuState('scheduler', 'meta')['task-with-middleware'] = {
124
- pikkuFuncName: 'scheduler_task-with-middleware',
127
+ pikkuState(null, 'scheduler', 'meta')['task-with-middleware'] = {
128
+ pikkuFuncId: 'scheduler_task-with-middleware',
125
129
  name: 'task-with-middleware',
126
130
  schedule: '0 0 * * *',
127
131
  }
128
132
 
129
133
  wireScheduler(mockTask)
130
134
 
131
- const tasks = pikkuState('scheduler', 'tasks')
135
+ const tasks = pikkuState(null, 'scheduler', 'tasks')
132
136
  const task = tasks.get('task-with-middleware')
133
137
  assert.equal(task?.middleware?.length, 1)
134
138
  assert.deepEqual(task?.tags, ['scheduled'])
@@ -151,13 +155,13 @@ describe('runScheduledTask', () => {
151
155
  }
152
156
 
153
157
  // Set up metadata and task
154
- pikkuState('scheduler', 'meta')['simple-task'] = {
155
- pikkuFuncName: 'scheduler_simple-task',
158
+ pikkuState(null, 'scheduler', 'meta')['simple-task'] = {
159
+ pikkuFuncId: 'scheduler_simple-task',
156
160
  name: 'simple-task',
157
161
  schedule: '0 0 * * *',
158
162
  }
159
- pikkuState('function', 'meta')['scheduler_simple-task'] = {
160
- pikkuFuncName: 'scheduler_simple-task',
163
+ pikkuState(null, 'function', 'meta')['scheduler_simple-task'] = {
164
+ pikkuFuncId: 'scheduler_simple-task',
161
165
  inputSchemaName: null,
162
166
  outputSchemaName: null,
163
167
  }
@@ -185,19 +189,19 @@ describe('runScheduledTask', () => {
185
189
  schedule: '0 0 * * *',
186
190
  func: {
187
191
  func: async (services: any, data: any, wire: any) => {
188
- receivedSession = await wire.session.get()
192
+ receivedSession = await wire.getSession()
189
193
  },
190
194
  auth: false,
191
195
  },
192
196
  }
193
197
 
194
- pikkuState('scheduler', 'meta')['task-with-session'] = {
195
- pikkuFuncName: 'scheduler_task-with-session',
198
+ pikkuState(null, 'scheduler', 'meta')['task-with-session'] = {
199
+ pikkuFuncId: 'scheduler_task-with-session',
196
200
  name: 'task-with-session',
197
201
  schedule: '0 0 * * *',
198
202
  }
199
- pikkuState('function', 'meta')['scheduler_task-with-session'] = {
200
- pikkuFuncName: 'scheduler_task-with-session',
203
+ pikkuState(null, 'function', 'meta')['scheduler_task-with-session'] = {
204
+ pikkuFuncId: 'scheduler_task-with-session',
201
205
  inputSchemaName: null,
202
206
  outputSchemaName: null,
203
207
  }
@@ -243,7 +247,7 @@ describe('runScheduledTask', () => {
243
247
  }
244
248
 
245
249
  // Add task but not metadata
246
- pikkuState('scheduler', 'tasks').set('task-without-meta', mockTask)
250
+ pikkuState(null, 'scheduler', 'tasks').set('task-without-meta', mockTask)
247
251
 
248
252
  const mockLogger = createMockLogger()
249
253
 
@@ -273,13 +277,13 @@ describe('runScheduledTask', () => {
273
277
  },
274
278
  }
275
279
 
276
- pikkuState('scheduler', 'meta')['skipped-task'] = {
277
- pikkuFuncName: 'scheduler_skipped-task',
280
+ pikkuState(null, 'scheduler', 'meta')['skipped-task'] = {
281
+ pikkuFuncId: 'scheduler_skipped-task',
278
282
  name: 'skipped-task',
279
283
  schedule: '0 0 * * *',
280
284
  }
281
- pikkuState('function', 'meta')['scheduler_skipped-task'] = {
282
- pikkuFuncName: 'scheduler_skipped-task',
285
+ pikkuState(null, 'function', 'meta')['scheduler_skipped-task'] = {
286
+ pikkuFuncId: 'scheduler_skipped-task',
283
287
  inputSchemaName: null,
284
288
  outputSchemaName: null,
285
289
  }
@@ -316,13 +320,13 @@ describe('runScheduledTask', () => {
316
320
  },
317
321
  }
318
322
 
319
- pikkuState('scheduler', 'meta')['skipped-task-no-reason'] = {
320
- pikkuFuncName: 'scheduler_skipped-task-no-reason',
323
+ pikkuState(null, 'scheduler', 'meta')['skipped-task-no-reason'] = {
324
+ pikkuFuncId: 'scheduler_skipped-task-no-reason',
321
325
  name: 'skipped-task-no-reason',
322
326
  schedule: '0 0 * * *',
323
327
  }
324
- pikkuState('function', 'meta')['scheduler_skipped-task-no-reason'] = {
325
- pikkuFuncName: 'scheduler_skipped-task-no-reason',
328
+ pikkuState(null, 'function', 'meta')['scheduler_skipped-task-no-reason'] = {
329
+ pikkuFuncId: 'scheduler_skipped-task-no-reason',
326
330
  inputSchemaName: null,
327
331
  outputSchemaName: null,
328
332
  }
@@ -362,13 +366,13 @@ describe('runScheduledTask', () => {
362
366
  },
363
367
  }
364
368
 
365
- pikkuState('scheduler', 'meta')['wire-task'] = {
366
- pikkuFuncName: 'scheduler_wire-task',
369
+ pikkuState(null, 'scheduler', 'meta')['wire-task'] = {
370
+ pikkuFuncId: 'scheduler_wire-task',
367
371
  name: 'wire-task',
368
372
  schedule: '*/5 * * * *',
369
373
  }
370
- pikkuState('function', 'meta')['scheduler_wire-task'] = {
371
- pikkuFuncName: 'scheduler_wire-task',
374
+ pikkuState(null, 'function', 'meta')['scheduler_wire-task'] = {
375
+ pikkuFuncId: 'scheduler_wire-task',
372
376
  inputSchemaName: null,
373
377
  outputSchemaName: null,
374
378
  }
@@ -400,13 +404,13 @@ describe('runScheduledTask', () => {
400
404
  },
401
405
  }
402
406
 
403
- pikkuState('scheduler', 'meta')['session-services-task'] = {
404
- pikkuFuncName: 'scheduler_session-services-task',
407
+ pikkuState(null, 'scheduler', 'meta')['session-services-task'] = {
408
+ pikkuFuncId: 'scheduler_session-services-task',
405
409
  name: 'session-services-task',
406
410
  schedule: '0 0 * * *',
407
411
  }
408
- pikkuState('function', 'meta')['scheduler_session-services-task'] = {
409
- pikkuFuncName: 'scheduler_session-services-task',
412
+ pikkuState(null, 'function', 'meta')['scheduler_session-services-task'] = {
413
+ pikkuFuncId: 'scheduler_session-services-task',
410
414
  inputSchemaName: null,
411
415
  outputSchemaName: null,
412
416
  }
@@ -445,13 +449,13 @@ describe('runScheduledTask', () => {
445
449
  },
446
450
  }
447
451
 
448
- pikkuState('scheduler', 'meta')['cleanup-task'] = {
449
- pikkuFuncName: 'scheduler_cleanup-task',
452
+ pikkuState(null, 'scheduler', 'meta')['cleanup-task'] = {
453
+ pikkuFuncId: 'scheduler_cleanup-task',
450
454
  name: 'cleanup-task',
451
455
  schedule: '0 0 * * *',
452
456
  }
453
- pikkuState('function', 'meta')['scheduler_cleanup-task'] = {
454
- pikkuFuncName: 'scheduler_cleanup-task',
457
+ pikkuState(null, 'function', 'meta')['scheduler_cleanup-task'] = {
458
+ pikkuFuncId: 'scheduler_cleanup-task',
455
459
  inputSchemaName: null,
456
460
  outputSchemaName: null,
457
461
  }
@@ -489,13 +493,13 @@ describe('runScheduledTask', () => {
489
493
  },
490
494
  }
491
495
 
492
- pikkuState('scheduler', 'meta')['error-cleanup-task'] = {
493
- pikkuFuncName: 'scheduler_error-cleanup-task',
496
+ pikkuState(null, 'scheduler', 'meta')['error-cleanup-task'] = {
497
+ pikkuFuncId: 'scheduler_error-cleanup-task',
494
498
  name: 'error-cleanup-task',
495
499
  schedule: '0 0 * * *',
496
500
  }
497
- pikkuState('function', 'meta')['scheduler_error-cleanup-task'] = {
498
- pikkuFuncName: 'scheduler_error-cleanup-task',
501
+ pikkuState(null, 'function', 'meta')['scheduler_error-cleanup-task'] = {
502
+ pikkuFuncId: 'scheduler_error-cleanup-task',
499
503
  inputSchemaName: null,
500
504
  outputSchemaName: null,
501
505
  }
@@ -526,13 +530,13 @@ describe('runScheduledTask', () => {
526
530
  },
527
531
  }
528
532
 
529
- pikkuState('scheduler', 'meta')['error-task'] = {
530
- pikkuFuncName: 'scheduler_error-task',
533
+ pikkuState(null, 'scheduler', 'meta')['error-task'] = {
534
+ pikkuFuncId: 'scheduler_error-task',
531
535
  name: 'error-task',
532
536
  schedule: '0 0 * * *',
533
537
  }
534
- pikkuState('function', 'meta')['scheduler_error-task'] = {
535
- pikkuFuncName: 'scheduler_error-task',
538
+ pikkuState(null, 'function', 'meta')['scheduler_error-task'] = {
539
+ pikkuFuncId: 'scheduler_error-task',
536
540
  inputSchemaName: null,
537
541
  outputSchemaName: null,
538
542
  }
@@ -573,13 +577,13 @@ describe('runScheduledTask', () => {
573
577
  middleware: [middleware],
574
578
  }
575
579
 
576
- pikkuState('scheduler', 'meta')['middleware-task'] = {
577
- pikkuFuncName: 'scheduler_middleware-task',
580
+ pikkuState(null, 'scheduler', 'meta')['middleware-task'] = {
581
+ pikkuFuncId: 'scheduler_middleware-task',
578
582
  name: 'middleware-task',
579
583
  schedule: '0 0 * * *',
580
584
  }
581
- pikkuState('function', 'meta')['scheduler_middleware-task'] = {
582
- pikkuFuncName: 'scheduler_middleware-task',
585
+ pikkuState(null, 'function', 'meta')['scheduler_middleware-task'] = {
586
+ pikkuFuncId: 'scheduler_middleware-task',
583
587
  inputSchemaName: null,
584
588
  outputSchemaName: null,
585
589
  }
@@ -607,8 +611,8 @@ describe('getScheduledTasks', () => {
607
611
  },
608
612
  }
609
613
 
610
- pikkuState('scheduler', 'meta')['test-task'] = {
611
- pikkuFuncName: 'scheduler_test-task',
614
+ pikkuState(null, 'scheduler', 'meta')['test-task'] = {
615
+ pikkuFuncId: 'scheduler_test-task',
612
616
  name: 'test-task',
613
617
  schedule: '0 0 * * *',
614
618
  }
@@ -625,3 +629,43 @@ describe('getScheduledTasks', () => {
625
629
  assert.equal(tasks.size, 0)
626
630
  })
627
631
  })
632
+
633
+ describe('createSchedulerRuntimeHandlers', () => {
634
+ test('invokes RPC with optional session and runs scheduled task callback', async () => {
635
+ const calls: Array<{ type: string; value: any }> = []
636
+ const logger = createMockLogger()
637
+ const singletonServices = { logger } as any
638
+
639
+ const handlers = createSchedulerRuntimeHandlers({
640
+ singletonServices,
641
+ })
642
+
643
+ const originalGetContextRPCService = (await import('../rpc/rpc-runner.js'))
644
+ .rpcService.getContextRPCService
645
+ ;(await import('../rpc/rpc-runner.js')).rpcService.getContextRPCService = ((
646
+ _services: any,
647
+ wire: any
648
+ ) => {
649
+ calls.push({ type: 'wire', value: wire })
650
+ return {
651
+ invoke: async (rpcName: string, data: any) => {
652
+ calls.push({ type: 'invoke', value: { rpcName, data } })
653
+ },
654
+ } as any
655
+ }) as any
656
+
657
+ try {
658
+ await handlers.invokeRPC('testRpc', { value: 1 }, { userId: 'u1' } as any)
659
+ } finally {
660
+ ;(await import('../rpc/rpc-runner.js')).rpcService.getContextRPCService =
661
+ originalGetContextRPCService
662
+ }
663
+
664
+ assert.equal(calls[0]?.type, 'wire')
665
+ assert.deepEqual(calls[0]?.value, { session: { userId: 'u1' } })
666
+ assert.deepEqual(calls[1]?.value, {
667
+ rpcName: 'testRpc',
668
+ data: { value: 1 },
669
+ })
670
+ })
671
+ })
@@ -7,14 +7,20 @@ import {
7
7
  } from '../../types/core.types.js'
8
8
  import type { CoreScheduledTask } from './scheduler.types.js'
9
9
  import { getErrorResponse, PikkuError } from '../../errors/error-handler.js'
10
+ import { PikkuMissingMetaError } from '../../errors/errors.js'
10
11
  import { closeWireServices } from '../../utils.js'
11
12
  import { pikkuState } from '../../pikku-state.js'
12
13
  import { addFunction, runPikkuFunc } from '../../function/function-runner.js'
13
- import { PikkuSessionService } from '../../services/user-session-service.js'
14
+ import {
15
+ PikkuSessionService,
16
+ createMiddlewareSessionWireProps,
17
+ } from '../../services/user-session-service.js'
14
18
  import {
15
19
  CorePikkuFunctionConfig,
16
20
  CorePikkuFunctionSessionless,
17
21
  } from '../../function/functions.types.js'
22
+ import { rpcService } from '../rpc/rpc-runner.js'
23
+ import { SchedulerRuntimeHandlers } from '../../services/scheduler-service.js'
18
24
 
19
25
  export type RunScheduledTasksParams = {
20
26
  name: string
@@ -34,12 +40,14 @@ export const wireScheduler = <
34
40
  >(
35
41
  scheduledTask: CoreScheduledTask<PikkuFunctionConfig>
36
42
  ) => {
37
- const meta = pikkuState('scheduler', 'meta')
43
+ const meta = pikkuState(null, 'scheduler', 'meta')
38
44
  const taskMeta = meta[scheduledTask.name]
39
45
  if (!taskMeta) {
40
- throw new Error('Task metadata not found')
46
+ throw new PikkuMissingMetaError(
47
+ `Missing generated metadata for scheduled task '${scheduledTask.name}'`
48
+ )
41
49
  }
42
- addFunction(taskMeta.pikkuFuncName, {
50
+ addFunction(taskMeta.pikkuFuncId, {
43
51
  func: scheduledTask.func.func,
44
52
  auth: scheduledTask.func.auth,
45
53
  permissions: scheduledTask.func.permissions,
@@ -47,7 +55,7 @@ export const wireScheduler = <
47
55
  tags: scheduledTask.func.tags,
48
56
  })
49
57
 
50
- const tasks = pikkuState('scheduler', 'tasks')
58
+ const tasks = pikkuState(null, 'scheduler', 'tasks')
51
59
  if (tasks.has(scheduledTask.name)) {
52
60
  throw new Error(`Scheduled task already exists: ${scheduledTask.name}`)
53
61
  }
@@ -76,8 +84,8 @@ export async function runScheduledTask({
76
84
  createWireServices,
77
85
  }: RunScheduledTasksParams): Promise<void> {
78
86
  let wireServices: any
79
- const task = pikkuState('scheduler', 'tasks').get(name)
80
- const meta = pikkuState('scheduler', 'meta')[name]
87
+ const task = pikkuState(null, 'scheduler', 'tasks').get(name)
88
+ const meta = pikkuState(null, 'scheduler', 'meta')[name]
81
89
 
82
90
  const userSession = new PikkuSessionService()
83
91
  if (session) {
@@ -103,7 +111,7 @@ export async function runScheduledTask({
103
111
  throw new ScheduledTaskSkippedError(name, reason)
104
112
  },
105
113
  },
106
- session: userSession,
114
+ ...createMiddlewareSessionWireProps(userSession),
107
115
  }
108
116
 
109
117
  try {
@@ -111,7 +119,7 @@ export async function runScheduledTask({
111
119
  `Running schedule task: ${name} | schedule: ${task.schedule}`
112
120
  )
113
121
 
114
- await runPikkuFunc('scheduler', meta.name, meta.pikkuFuncName, {
122
+ await runPikkuFunc('scheduler', meta.name, meta.pikkuFuncId, {
115
123
  singletonServices,
116
124
  createWireServices,
117
125
  auth: false,
@@ -120,6 +128,7 @@ export async function runScheduledTask({
120
128
  wireMiddleware: task.middleware,
121
129
  tags: task.tags,
122
130
  wire,
131
+ sessionService: userSession,
123
132
  })
124
133
  } catch (e: any) {
125
134
  const errorResponse = getErrorResponse(e)
@@ -135,5 +144,36 @@ export async function runScheduledTask({
135
144
  }
136
145
 
137
146
  export const getScheduledTasks = () => {
138
- return pikkuState('scheduler', 'tasks')
147
+ return pikkuState(null, 'scheduler', 'tasks')
148
+ }
149
+
150
+ export const createSchedulerRuntimeHandlers = ({
151
+ singletonServices,
152
+ createWireServices,
153
+ }: {
154
+ singletonServices: CoreSingletonServices
155
+ createWireServices?: CreateWireServices<
156
+ CoreSingletonServices,
157
+ CoreServices<CoreSingletonServices>,
158
+ CoreUserSession
159
+ >
160
+ }): SchedulerRuntimeHandlers => {
161
+ return {
162
+ logger: singletonServices.logger,
163
+ invokeRPC: async (
164
+ rpcName: string,
165
+ data?: any,
166
+ session?: CoreUserSession
167
+ ) => {
168
+ const wire = session ? ({ session } as PikkuWire) : ({} as PikkuWire)
169
+ const rpc = rpcService.getContextRPCService(singletonServices, wire)
170
+ await rpc.invoke(rpcName, data)
171
+ },
172
+ runScheduledTask: async (name: string) =>
173
+ runScheduledTask({
174
+ name,
175
+ singletonServices,
176
+ createWireServices,
177
+ }),
178
+ }
139
179
  }
@@ -0,0 +1,9 @@
1
+ export { wireSecret } from './secret.types.js'
2
+ export type {
3
+ CoreSecret,
4
+ OAuth2CredentialConfig,
5
+ SecretDefinitionMeta,
6
+ SecretDefinitionsMeta,
7
+ SecretDefinitions,
8
+ } from './secret.types.js'
9
+ export { validateAndBuildSecretDefinitionsMeta } from './validate-secret-definitions.js'
@@ -0,0 +1,32 @@
1
+ export type CoreSecret<T = unknown> = {
2
+ name: string
3
+ displayName: string
4
+ description?: string
5
+ secretId: string
6
+ schema: T
7
+ }
8
+
9
+ export type OAuth2CredentialConfig = {
10
+ tokenSecretId: string
11
+ authorizationUrl: string
12
+ tokenUrl: string
13
+ scopes: string[]
14
+ pkce?: boolean
15
+ additionalParams?: Record<string, string>
16
+ }
17
+
18
+ export type SecretDefinitionMeta = {
19
+ name: string
20
+ displayName: string
21
+ description?: string
22
+ secretId: string
23
+ schema?: Record<string, unknown> | string
24
+ oauth2?: OAuth2CredentialConfig
25
+ sourceFile?: string
26
+ }
27
+
28
+ export type SecretDefinitionsMeta = Record<string, SecretDefinitionMeta>
29
+
30
+ export type SecretDefinitions = SecretDefinitionMeta[]
31
+
32
+ export const wireSecret = <T>(_config: CoreSecret<T>): void => {}
@@ -0,0 +1,82 @@
1
+ import type {
2
+ SecretDefinitions,
3
+ SecretDefinitionsMeta,
4
+ } from './secret.types.js'
5
+
6
+ export interface SchemaRefLike {
7
+ variableName: string
8
+ sourceFile: string
9
+ }
10
+
11
+ export function validateAndBuildSecretDefinitionsMeta(
12
+ definitions: SecretDefinitions,
13
+ schemaLookup: Map<string, SchemaRefLike>
14
+ ): SecretDefinitionsMeta {
15
+ const meta: SecretDefinitionsMeta = {}
16
+ const secretIdToDefinition: Map<string, SecretDefinitions[0]> = new Map()
17
+
18
+ for (const def of definitions) {
19
+ const existingDef = secretIdToDefinition.get(def.secretId)
20
+
21
+ if (existingDef) {
22
+ if (def.schema && existingDef.schema) {
23
+ const defSchemaRef = schemaLookup.get(def.schema as string)
24
+ const existingSchemaRef = schemaLookup.get(existingDef.schema as string)
25
+
26
+ if (defSchemaRef && existingSchemaRef) {
27
+ if (
28
+ defSchemaRef.variableName !== existingSchemaRef.variableName ||
29
+ defSchemaRef.sourceFile !== existingSchemaRef.sourceFile
30
+ ) {
31
+ throw new Error(
32
+ `Secret '${def.secretId}' is defined with different schemas.\n` +
33
+ ` First definition: ${existingDef.sourceFile} (schema: ${existingSchemaRef.variableName})\n` +
34
+ ` Second definition: ${def.sourceFile} (schema: ${defSchemaRef.variableName})\n` +
35
+ `Credentials sharing a secretId must use the same schema.`
36
+ )
37
+ }
38
+ }
39
+ }
40
+
41
+ if (def.oauth2 && existingDef.oauth2) {
42
+ if (JSON.stringify(def.oauth2) !== JSON.stringify(existingDef.oauth2)) {
43
+ throw new Error(
44
+ `OAuth2 secret '${def.secretId}' is defined with different configurations.\n` +
45
+ ` First definition: ${existingDef.sourceFile}\n` +
46
+ ` Second definition: ${def.sourceFile}\n` +
47
+ `Credentials sharing a secretId must use the same configuration.`
48
+ )
49
+ }
50
+ }
51
+
52
+ if (!meta[def.name]) {
53
+ meta[def.name] = {
54
+ name: def.name,
55
+ displayName: def.displayName,
56
+ description: def.description,
57
+ secretId: def.secretId,
58
+ schema: def.schema,
59
+ oauth2: def.oauth2,
60
+ sourceFile: def.sourceFile,
61
+ }
62
+ }
63
+ continue
64
+ }
65
+
66
+ secretIdToDefinition.set(def.secretId, def)
67
+
68
+ if (!meta[def.name]) {
69
+ meta[def.name] = {
70
+ name: def.name,
71
+ displayName: def.displayName,
72
+ description: def.description,
73
+ secretId: def.secretId,
74
+ schema: def.schema,
75
+ oauth2: def.oauth2,
76
+ sourceFile: def.sourceFile,
77
+ }
78
+ }
79
+ }
80
+
81
+ return meta
82
+ }
@@ -0,0 +1,10 @@
1
+ export { wireTrigger, wireTriggerSource } from './trigger-runner.js'
2
+ export { PikkuTriggerService } from './pikku-trigger-service.js'
3
+ export type {
4
+ TriggerMeta,
5
+ TriggerSourceMeta,
6
+ CorePikkuTriggerFunction,
7
+ CorePikkuTriggerFunctionConfig,
8
+ CoreTrigger,
9
+ PikkuTrigger,
10
+ } from './trigger.types.js'