@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
@@ -1,17 +1,38 @@
1
1
  /**
2
- * Interface for retrieving secrets.
2
+ * Interface for retrieving and managing secrets.
3
3
  */
4
4
  export interface SecretService {
5
5
  /**
6
- * Retrieves a secret by key.
6
+ * Retrieves a secret by key and parses it as JSON.
7
7
  * @param key - The key of the secret to retrieve.
8
- * @returns A promise that resolves to the secret value.
8
+ * @returns A promise that resolves to the parsed secret value.
9
+ * @throws If the secret is not found.
9
10
  */
10
11
  getSecretJSON<Return = {}>(key: string): Promise<Return>;
11
12
  /**
12
- * Retrieves a secret by key.
13
+ * Retrieves a secret by key as a string.
13
14
  * @param key - The key of the secret to retrieve.
14
15
  * @returns A promise that resolves to the secret value.
16
+ * @throws If the secret is not found.
15
17
  */
16
18
  getSecret(key: string): Promise<string>;
19
+ /**
20
+ * Checks if a secret exists without throwing.
21
+ * @param key - The key of the secret to check.
22
+ * @returns A promise that resolves to true if the secret exists, false otherwise.
23
+ */
24
+ hasSecret(key: string): Promise<boolean>;
25
+ /**
26
+ * Stores a JSON value as a secret.
27
+ * @param key - The key to store the secret under.
28
+ * @param value - The JSON value to store.
29
+ * @returns A promise that resolves when the secret is stored.
30
+ */
31
+ setSecretJSON(key: string, value: unknown): Promise<void>;
32
+ /**
33
+ * Deletes a secret by key.
34
+ * @param key - The key of the secret to delete.
35
+ * @returns A promise that resolves when the secret is deleted.
36
+ */
37
+ deleteSecret(key: string): Promise<void>;
17
38
  }
@@ -0,0 +1,23 @@
1
+ import { CoreSingletonServices, CreateWireServices, CoreServices, CoreUserSession } from '../types/core.types.js';
2
+ /**
3
+ * Abstract TriggerService interface.
4
+ *
5
+ * Implementations manage trigger subscriptions — listening to external events
6
+ * and dispatching to RPC targets or workflow starts.
7
+ */
8
+ export interface TriggerService {
9
+ /**
10
+ * Set services needed for processing triggers.
11
+ * Called after construction since the trigger service is created before
12
+ * singletonServices are fully assembled.
13
+ */
14
+ setServices(_singletonServices: CoreSingletonServices, _createWireServices?: CreateWireServices<CoreSingletonServices, CoreServices, CoreUserSession>): void;
15
+ /**
16
+ * Start all triggers
17
+ */
18
+ start(): Promise<void>;
19
+ /**
20
+ * Stop all triggers
21
+ */
22
+ stop(): Promise<void>;
23
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ import type { SecretService } from './secret-service.js';
2
+ export interface CredentialStatus {
3
+ secretId: string;
4
+ name: string;
5
+ displayName: string;
6
+ isConfigured: boolean;
7
+ oauth2?: {
8
+ tokenSecretId: string;
9
+ };
10
+ }
11
+ export type CredentialMeta = {
12
+ name: string;
13
+ displayName: string;
14
+ oauth2?: {
15
+ tokenSecretId: string;
16
+ };
17
+ };
18
+ export declare class TypedSecretService<TMap = Record<string, unknown>> implements SecretService {
19
+ private secrets;
20
+ private credentialsMeta;
21
+ constructor(secrets: SecretService, credentialsMeta: Record<string, CredentialMeta>);
22
+ getSecretJSON<K extends keyof TMap & string>(key: K): Promise<TMap[K]>;
23
+ getSecretJSON<T = unknown>(key: string): Promise<T>;
24
+ getSecret(key: string): Promise<string>;
25
+ hasSecret(key: string): Promise<boolean>;
26
+ setSecretJSON<K extends string>(key: K, value: K extends keyof TMap ? TMap[K] : unknown): Promise<void>;
27
+ deleteSecret(key: string): Promise<void>;
28
+ getAllStatus(): Promise<CredentialStatus[]>;
29
+ getMissing(): Promise<CredentialStatus[]>;
30
+ }
@@ -0,0 +1,40 @@
1
+ export class TypedSecretService {
2
+ secrets;
3
+ credentialsMeta;
4
+ constructor(secrets, credentialsMeta) {
5
+ this.secrets = secrets;
6
+ this.credentialsMeta = credentialsMeta;
7
+ }
8
+ async getSecretJSON(key) {
9
+ return this.secrets.getSecretJSON(key);
10
+ }
11
+ async getSecret(key) {
12
+ return this.secrets.getSecret(key);
13
+ }
14
+ async hasSecret(key) {
15
+ return this.secrets.hasSecret(key);
16
+ }
17
+ async setSecretJSON(key, value) {
18
+ return this.secrets.setSecretJSON(key, value);
19
+ }
20
+ async deleteSecret(key) {
21
+ return this.secrets.deleteSecret(key);
22
+ }
23
+ async getAllStatus() {
24
+ const results = [];
25
+ for (const [secretId, meta] of Object.entries(this.credentialsMeta)) {
26
+ results.push({
27
+ secretId,
28
+ name: meta.name,
29
+ displayName: meta.displayName,
30
+ isConfigured: await this.secrets.hasSecret(secretId),
31
+ oauth2: meta.oauth2,
32
+ });
33
+ }
34
+ return results;
35
+ }
36
+ async getMissing() {
37
+ const all = await this.getAllStatus();
38
+ return all.filter((c) => !c.isConfigured);
39
+ }
40
+ }
@@ -0,0 +1,27 @@
1
+ import type { VariablesService } from './variables-service.js';
2
+ export interface VariableStatus {
3
+ variableId: string;
4
+ name: string;
5
+ displayName: string;
6
+ isConfigured: boolean;
7
+ }
8
+ export type VariableMeta = {
9
+ name: string;
10
+ displayName: string;
11
+ };
12
+ export declare class TypedVariablesService<TMap = Record<string, unknown>> implements VariablesService {
13
+ private variables;
14
+ private variablesMeta;
15
+ constructor(variables: VariablesService, variablesMeta: Record<string, VariableMeta>);
16
+ get(name: keyof TMap & string): Promise<string | undefined> | string | undefined;
17
+ get(name: string): Promise<string | undefined> | string | undefined;
18
+ getJSON<K extends keyof TMap & string>(name: K): Promise<TMap[K] | undefined> | TMap[K] | undefined;
19
+ getJSON<T = unknown>(name: string): Promise<T | undefined> | T | undefined;
20
+ getAll(): Promise<Record<string, string | undefined>> | Record<string, string | undefined>;
21
+ set(name: string, value: string): Promise<void> | void;
22
+ setJSON(name: string, value: unknown): Promise<void> | void;
23
+ has(name: string): Promise<boolean> | boolean;
24
+ delete(name: string): Promise<void> | void;
25
+ getAllStatus(): Promise<VariableStatus[]>;
26
+ getMissing(): Promise<VariableStatus[]>;
27
+ }
@@ -0,0 +1,46 @@
1
+ export class TypedVariablesService {
2
+ variables;
3
+ variablesMeta;
4
+ constructor(variables, variablesMeta) {
5
+ this.variables = variables;
6
+ this.variablesMeta = variablesMeta;
7
+ }
8
+ get(name) {
9
+ return this.variables.get(name);
10
+ }
11
+ getJSON(name) {
12
+ return this.variables.getJSON(name);
13
+ }
14
+ getAll() {
15
+ return this.variables.getAll();
16
+ }
17
+ set(name, value) {
18
+ return this.variables.set(name, value);
19
+ }
20
+ setJSON(name, value) {
21
+ return this.variables.setJSON(name, value);
22
+ }
23
+ has(name) {
24
+ return this.variables.has(name);
25
+ }
26
+ delete(name) {
27
+ return this.variables.delete(name);
28
+ }
29
+ async getAllStatus() {
30
+ const results = [];
31
+ const all = await this.variables.getAll();
32
+ for (const [variableId, meta] of Object.entries(this.variablesMeta)) {
33
+ results.push({
34
+ variableId,
35
+ name: meta.name,
36
+ displayName: meta.displayName,
37
+ isConfigured: all[variableId] !== undefined,
38
+ });
39
+ }
40
+ return results;
41
+ }
42
+ async getMissing() {
43
+ const all = await this.getAllStatus();
44
+ return all.filter((v) => !v.isConfigured);
45
+ }
46
+ }
@@ -22,3 +22,16 @@ export declare class PikkuSessionService<UserSession extends CoreUserSession> im
22
22
  clear(): void | Promise<void> | undefined;
23
23
  get(): Promise<UserSession> | UserSession | undefined;
24
24
  }
25
+ export declare function createMiddlewareSessionWireProps<UserSession extends CoreUserSession>(session: SessionService<UserSession>): {
26
+ session: UserSession | Promise<UserSession> | undefined;
27
+ setSession: (s: UserSession) => void;
28
+ getSession: () => UserSession | Promise<UserSession> | undefined;
29
+ hasSessionChanged: () => boolean;
30
+ };
31
+ export declare function createFunctionSessionWireProps<UserSession extends CoreUserSession>(session: SessionService<UserSession>): {
32
+ session: UserSession | undefined;
33
+ setSession: (s: UserSession) => void | Promise<void>;
34
+ clearSession: () => void | Promise<void>;
35
+ getSession: () => UserSession | Promise<UserSession> | undefined;
36
+ hasSessionChanged: () => boolean;
37
+ };
@@ -43,3 +43,20 @@ export class PikkuSessionService {
43
43
  return this.session;
44
44
  }
45
45
  }
46
+ export function createMiddlewareSessionWireProps(session) {
47
+ return {
48
+ session: session.get(),
49
+ setSession: (s) => session.setInitial(s),
50
+ getSession: () => session.get(),
51
+ hasSessionChanged: () => session.sessionChanged,
52
+ };
53
+ }
54
+ export function createFunctionSessionWireProps(session) {
55
+ return {
56
+ session: session.freezeInitial(),
57
+ setSession: (s) => session.set(s),
58
+ clearSession: () => session.clear(),
59
+ getSession: () => session.get(),
60
+ hasSessionChanged: () => session.sessionChanged,
61
+ };
62
+ }
@@ -1,4 +1,9 @@
1
1
  export interface VariablesService {
2
2
  get: (name: string) => Promise<string | undefined> | string | undefined;
3
+ getJSON: <T = unknown>(name: string) => Promise<T | undefined> | T | undefined;
3
4
  getAll: () => Promise<Record<string, string | undefined>> | Record<string, string | undefined>;
5
+ set: (name: string, value: string) => Promise<void> | void;
6
+ setJSON: (name: string, value: unknown) => Promise<void> | void;
7
+ has: (name: string) => Promise<boolean> | boolean;
8
+ delete: (name: string) => Promise<void> | void;
4
9
  }
@@ -0,0 +1,43 @@
1
+ import { SerializedError, CoreSingletonServices, CreateWireServices, CoreConfig } from '../types/core.types.js';
2
+ import { WorkflowRun, WorkflowRunWire, StepState, WorkflowStatus } from '../wirings/workflow/workflow.types.js';
3
+ /**
4
+ * Interface for workflow orchestration
5
+ * Handles workflow execution, replay, orchestration logic, and run-level state
6
+ */
7
+ export interface WorkflowService {
8
+ createRun(workflowName: string, input: any, inline: boolean, graphHash: string, wire: WorkflowRunWire): Promise<string>;
9
+ getRun(id: string): Promise<WorkflowRun | null>;
10
+ getRunHistory(runId: string): Promise<Array<StepState & {
11
+ stepName: string;
12
+ }>>;
13
+ updateRunStatus(id: string, status: WorkflowStatus, output?: any, error?: SerializedError): Promise<void>;
14
+ withRunLock<T>(id: string, fn: () => Promise<T>): Promise<T>;
15
+ close(): Promise<void>;
16
+ resumeWorkflow(runId: string): Promise<void>;
17
+ setServices(singletonServices: CoreSingletonServices, createWireServices: CreateWireServices | undefined, config: CoreConfig): void;
18
+ startWorkflow<I>(name: string, input: I, wire: WorkflowRunWire, rpcService: any, options?: {
19
+ inline?: boolean;
20
+ startNode?: string;
21
+ }): Promise<{
22
+ runId: string;
23
+ }>;
24
+ runWorkflowJob(runId: string, rpcService: any): Promise<void>;
25
+ orchestrateWorkflow(runId: string, rpcService: any): Promise<void>;
26
+ executeWorkflowSleepCompleted(runId: string, stepId: string): Promise<void>;
27
+ insertStepState(runId: string, stepName: string, rpcName: string, data: any, stepOptions?: {
28
+ retries?: number;
29
+ retryDelay?: string | number;
30
+ }): Promise<StepState>;
31
+ getStepState(runId: string, stepName: string): Promise<StepState>;
32
+ setStepRunning(stepId: string): Promise<void>;
33
+ setStepScheduled(stepId: string): Promise<void>;
34
+ setStepResult(stepId: string, result: any): Promise<void>;
35
+ setStepError(stepId: string, error: Error): Promise<void>;
36
+ createRetryAttempt(stepId: string, status: 'pending' | 'running'): Promise<StepState>;
37
+ executeWorkflowStep(runId: string, stepName: string, rpcName: string | null, data: any, rpcService: any): Promise<void>;
38
+ upsertWorkflowVersion(name: string, graphHash: string, graph: any, source: string): Promise<void>;
39
+ getWorkflowVersion(name: string, graphHash: string): Promise<{
40
+ graph: any;
41
+ source: string;
42
+ } | null>;
43
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,22 +1,33 @@
1
1
  import type { Logger, LogLevel } from '../services/logger.js';
2
2
  import { VariablesService } from '../services/variables-service.js';
3
+ import { SecretService } from '../services/secret-service.js';
3
4
  import { SchemaService } from '../services/schema-service.js';
4
5
  import { JWTService } from '../services/jwt-service.js';
5
6
  import { PikkuHTTP } from '../wirings/http/http.types.js';
6
- import { SessionService } from '../services/user-session-service.js';
7
- import { PikkuChannel } from '../wirings/channel/channel.types.js';
7
+ import { PikkuChannel, CorePikkuChannelMiddleware, CorePikkuChannelMiddlewareFactory } from '../wirings/channel/channel.types.js';
8
8
  import { PikkuRPC } from '../wirings/rpc/rpc-types.js';
9
9
  import { PikkuMCP } from '../wirings/mcp/mcp.types.js';
10
10
  import { PikkuScheduledTask } from '../wirings/scheduler/scheduler.types.js';
11
11
  import { PikkuQueue, QueueService } from '../wirings/queue/queue.types.js';
12
12
  import { PikkuCLI } from '../wirings/cli/cli.types.js';
13
13
  import { PikkuWorkflowWire, WorkflowService, WorkflowServiceConfig, WorkflowStepWire } from '../wirings/workflow/workflow.types.js';
14
+ import type { PikkuGraphWire } from '../wirings/workflow/graph/workflow-graph.types.js';
15
+ import { PikkuTrigger } from '../wirings/trigger/trigger.types.js';
14
16
  import { SchedulerService } from '../services/scheduler-service.js';
15
- export type PikkuWiringTypes = 'http' | 'scheduler' | 'channel' | 'rpc' | 'queue' | 'mcp' | 'cli' | 'workflow';
17
+ import { DeploymentService } from '../services/deployment-service.js';
18
+ import { AIStorageService } from '../services/ai-storage-service.js';
19
+ import { AIAgentRunnerService } from '../services/ai-agent-runner-service.js';
20
+ import { AIRunStateService } from '../services/ai-run-state-service.js';
21
+ import type { PikkuAIMiddlewareHooks } from '../wirings/ai-agent/ai-agent.types.js';
22
+ export type PikkuWiringTypes = 'http' | 'scheduler' | 'trigger' | 'channel' | 'rpc' | 'queue' | 'mcp' | 'cli' | 'workflow' | 'agent';
16
23
  export interface FunctionServicesMeta {
17
24
  optimized: boolean;
18
25
  services: string[];
19
26
  }
27
+ export interface FunctionWiresMeta {
28
+ optimized: boolean;
29
+ wires: string[];
30
+ }
20
31
  /**
21
32
  * Metadata for middleware at any level
22
33
  * - type: 'http' = HTTP route middleware group (references httpGroup in pikkuState)
@@ -52,16 +63,23 @@ export type PermissionMetadata = {
52
63
  inline?: boolean;
53
64
  };
54
65
  export type FunctionRuntimeMeta = {
55
- pikkuFuncName: string;
66
+ pikkuFuncId: string;
56
67
  inputSchemaName: string | null;
57
68
  outputSchemaName: string | null;
58
69
  expose?: boolean;
59
- internal?: boolean;
70
+ remote?: boolean;
71
+ mcp?: boolean;
72
+ sessionless?: boolean;
73
+ version?: number;
74
+ requiresApproval?: boolean;
75
+ contractHash?: string;
60
76
  };
61
77
  export type FunctionMeta = FunctionRuntimeMeta & Partial<{
62
78
  name: string;
79
+ functionType: 'user' | 'inline' | 'helper';
80
+ funcWrapper: string;
63
81
  services: FunctionServicesMeta;
64
- usedWires: string[];
82
+ wires: FunctionWiresMeta;
65
83
  inputs: string[] | null;
66
84
  outputs: string[] | null;
67
85
  middleware: MiddlewareMetadata[];
@@ -124,17 +142,29 @@ export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
124
142
  logger: Logger;
125
143
  /** The variable service to be used */
126
144
  variables: VariablesService;
145
+ /** The secrets service to retrieve secrets */
146
+ secrets: SecretService;
127
147
  /** The workflow orchestrator service */
128
148
  workflowService?: WorkflowService;
129
149
  /** The queue service */
130
150
  queueService?: QueueService;
131
151
  /** The scheduler service */
132
152
  schedulerService?: SchedulerService;
153
+ /** The deployment service for service discovery */
154
+ deploymentService?: DeploymentService;
155
+ /** AI agent storage service (threads, messages, working memory) */
156
+ aiStorage?: AIStorageService;
157
+ /** AI agent runner service (model calls + tool loop) */
158
+ aiAgentRunner?: AIAgentRunnerService;
159
+ /** AI run state service (run lifecycle + approval persistence) */
160
+ aiRunState?: AIRunStateService;
133
161
  }
134
162
  /**
135
163
  * Represents different forms of wire within Pikku and the outside world.
136
164
  */
137
- export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boolean = false, UserSession extends CoreUserSession = CoreUserSession, TypedRPC extends PikkuRPC = PikkuRPC, IsChannel extends true | null = null, MCPTools extends string | never = never, TypedWorkflow extends PikkuWorkflowWire | never = PikkuWorkflowWire> = Partial<{
165
+ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boolean = false, UserSession extends CoreUserSession = CoreUserSession, TypedRPC extends PikkuRPC = PikkuRPC, IsChannel extends true | null = null, MCPTools extends string | never = never, TypedWorkflow extends PikkuWorkflowWire | never = PikkuWorkflowWire, TriggerOutput = unknown> = Partial<{
166
+ wireType: PikkuWiringTypes;
167
+ wireId: string;
138
168
  http: PikkuHTTP<In>;
139
169
  mcp: PikkuMCP<MCPTools>;
140
170
  rpc: TypedRPC;
@@ -144,8 +174,17 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
144
174
  cli: PikkuCLI;
145
175
  workflow: TypedWorkflow;
146
176
  workflowStep: WorkflowStepWire;
147
- initialSession: HasInitialSession extends true ? UserSession : UserSession | undefined;
148
- session: SessionService<UserSession>;
177
+ graph: PikkuGraphWire;
178
+ trigger: PikkuTrigger<TriggerOutput>;
179
+ session: HasInitialSession extends true ? UserSession : UserSession | undefined;
180
+ /** Update and persist the current session */
181
+ setSession: (session: CoreUserSession) => Promise<void> | void;
182
+ /** Clear and persist the current session */
183
+ clearSession: () => Promise<void> | void;
184
+ /** Fetch the latest session (may read from backing store) */
185
+ getSession: () => Promise<UserSession> | UserSession | undefined;
186
+ /** Whether the session was modified during this run */
187
+ hasSessionChanged: () => boolean;
149
188
  }>;
150
189
  /**
151
190
  * A function that can wrap an wire and be called before or after
@@ -219,6 +258,10 @@ export declare const pikkuMiddleware: <SingletonServices extends CoreSingletonSe
219
258
  * ```
220
259
  */
221
260
  export declare const pikkuMiddlewareFactory: <In = any>(factory: CorePikkuMiddlewareFactory<In>) => CorePikkuMiddlewareFactory<In>;
261
+ export declare const pikkuChannelMiddleware: <SingletonServices extends CoreSingletonServices = CoreSingletonServices, Event = unknown>(middleware: CorePikkuChannelMiddleware<SingletonServices, Event>) => CorePikkuChannelMiddleware<SingletonServices, Event>;
262
+ export declare const pikkuChannelMiddlewareFactory: <In = any>(factory: CorePikkuChannelMiddlewareFactory<In>) => CorePikkuChannelMiddlewareFactory<In>;
263
+ export type { PikkuAIMiddlewareHooks } from '../wirings/ai-agent/ai-agent.types.js';
264
+ export declare const pikkuAIMiddleware: <State extends Record<string, unknown> = Record<string, unknown>, SingletonServices extends CoreSingletonServices = CoreSingletonServices>(hooks: PikkuAIMiddlewareHooks<State, SingletonServices>) => PikkuAIMiddlewareHooks<State, SingletonServices>;
222
265
  /**
223
266
  * Represents the core services used by Pikku, including singleton services.
224
267
  */
@@ -240,7 +283,8 @@ export type CreateConfig<Config extends CoreConfig, RemainingArgs extends any[]
240
283
  * Represents the documentation for a route, including summary, description, tags, and errors.
241
284
  */
242
285
  export type CommonWireMeta = {
243
- pikkuFuncName: string;
286
+ pikkuFuncId: string;
287
+ title?: string;
244
288
  tags?: string[];
245
289
  summary?: string;
246
290
  description?: string;
@@ -46,3 +46,10 @@ export const pikkuMiddleware = (middleware) => {
46
46
  export const pikkuMiddlewareFactory = (factory) => {
47
47
  return factory;
48
48
  };
49
+ export const pikkuChannelMiddleware = (middleware) => {
50
+ return middleware;
51
+ };
52
+ export const pikkuChannelMiddlewareFactory = (factory) => {
53
+ return factory;
54
+ };
55
+ export const pikkuAIMiddleware = (hooks) => hooks;
@@ -0,0 +1,127 @@
1
+ import { PikkuError, ErrorDetails } from '../errors/error-handler.js';
2
+ import { CorePikkuFunctionConfig, CorePermissionGroup, CorePikkuPermission } from '../function/functions.types.js';
3
+ import { CorePikkuTriggerFunctionConfig } from '../wirings/trigger/trigger.types.js';
4
+ import { CoreChannel, ChannelsMeta } from '../wirings/channel/channel.types.js';
5
+ import { CLIMeta, CLIProgramState } from '../wirings/cli/cli.types.js';
6
+ import { HTTPMethod, CoreHTTPFunctionWiring, HTTPWiringsMeta } from '../wirings/http/http.types.js';
7
+ import { CoreMCPResource, MCPResourceMeta, MCPToolMeta, CoreMCPPrompt, MCPPromptMeta } from '../wirings/mcp/mcp.types.js';
8
+ import { CoreAIAgent, AIAgentMeta } from '../wirings/ai-agent/ai-agent.types.js';
9
+ import { CoreQueueWorker, QueueWorkersMeta } from '../wirings/queue/queue.types.js';
10
+ import { CoreScheduledTask, ScheduledTasksMeta } from '../wirings/scheduler/scheduler.types.js';
11
+ import { CoreWorkflow, WorkflowsRuntimeMeta } from '../wirings/workflow/workflow.types.js';
12
+ import { CoreTrigger, CoreTriggerSource, TriggerMeta, TriggerSourceMeta } from '../wirings/trigger/trigger.types.js';
13
+ import { FunctionsMeta, CorePikkuMiddleware, CorePikkuMiddlewareGroup, CreateConfig, CreateSingletonServices, CreateWireServices, CoreConfig, CoreSingletonServices, CoreServices, CoreUserSession } from './core.types.js';
14
+ import type { CorePikkuChannelMiddleware } from '../wirings/channel/channel.types.js';
15
+ /**
16
+ * State structure for an individual package
17
+ */
18
+ export interface PikkuPackageState {
19
+ function: {
20
+ meta: FunctionsMeta;
21
+ functions: Map<string, CorePikkuFunctionConfig<any, any>>;
22
+ };
23
+ rpc: {
24
+ meta: Record<string, string>;
25
+ files: Map<string, {
26
+ exportedName: string;
27
+ path: string;
28
+ }>;
29
+ /** Maps namespace aliases to package config (e.g., 'ext' -> { package: '@pikku/...', rpcEndpoint: '...' }) */
30
+ externalPackages: Map<string, {
31
+ package: string;
32
+ rpcEndpoint?: string;
33
+ }>;
34
+ };
35
+ http: {
36
+ middleware: Map<string, CorePikkuMiddleware<any, any>[]>;
37
+ permissions: Map<string, CorePermissionGroup | CorePikkuPermission[]>;
38
+ routes: Map<HTTPMethod, Map<string, CoreHTTPFunctionWiring<any, any, any>>>;
39
+ meta: HTTPWiringsMeta;
40
+ };
41
+ channel: {
42
+ channels: Map<string, CoreChannel<any, any>>;
43
+ meta: ChannelsMeta;
44
+ };
45
+ scheduler: {
46
+ tasks: Map<string, CoreScheduledTask>;
47
+ meta: ScheduledTasksMeta;
48
+ };
49
+ queue: {
50
+ registrations: Map<string, CoreQueueWorker>;
51
+ meta: QueueWorkersMeta;
52
+ };
53
+ workflows: {
54
+ registrations: Map<string, CoreWorkflow>;
55
+ meta: WorkflowsRuntimeMeta;
56
+ };
57
+ trigger: {
58
+ functions: Map<string, CorePikkuTriggerFunctionConfig<any, any>>;
59
+ triggers: Map<string, CoreTrigger>;
60
+ triggerSources: Map<string, CoreTriggerSource>;
61
+ meta: TriggerMeta;
62
+ sourceMeta: TriggerSourceMeta;
63
+ };
64
+ mcp: {
65
+ resources: Map<string, CoreMCPResource>;
66
+ resourcesMeta: MCPResourceMeta;
67
+ toolsMeta: MCPToolMeta;
68
+ prompts: Map<string, CoreMCPPrompt>;
69
+ promptsMeta: MCPPromptMeta;
70
+ };
71
+ agent: {
72
+ agents: Map<string, CoreAIAgent>;
73
+ agentsMeta: AIAgentMeta;
74
+ };
75
+ cli: {
76
+ meta: CLIMeta | Record<string, any>;
77
+ programs: Record<string, CLIProgramState>;
78
+ };
79
+ middleware: {
80
+ tagGroup: Record<string, CorePikkuMiddlewareGroup>;
81
+ httpGroup: Record<string, CorePikkuMiddlewareGroup>;
82
+ };
83
+ channelMiddleware: {
84
+ tagGroup: Record<string, CorePikkuChannelMiddleware[]>;
85
+ };
86
+ permissions: {
87
+ tagGroup: Record<string, CorePermissionGroup | CorePikkuPermission[]>;
88
+ httpGroup: Record<string, CorePermissionGroup | CorePikkuPermission[]>;
89
+ };
90
+ misc: {
91
+ errors: Map<PikkuError, ErrorDetails>;
92
+ schemas: Map<string, any>;
93
+ middleware: Record<string, CorePikkuMiddleware[]>;
94
+ channelMiddleware: Record<string, CorePikkuChannelMiddleware[]>;
95
+ permissions: Record<string, CorePermissionGroup | CorePikkuPermission[]>;
96
+ };
97
+ models: {
98
+ config: {
99
+ models?: Record<string, string | {
100
+ model: string;
101
+ temperature?: number;
102
+ maxSteps?: number;
103
+ }>;
104
+ agentDefaults?: {
105
+ temperature?: number;
106
+ maxSteps?: number;
107
+ };
108
+ agentOverrides?: Record<string, {
109
+ model?: string;
110
+ temperature?: number;
111
+ maxSteps?: number;
112
+ }>;
113
+ } | null;
114
+ };
115
+ package: {
116
+ /** Service factory functions for external packages */
117
+ factories: {
118
+ createConfig?: CreateConfig<CoreConfig>;
119
+ createSingletonServices?: CreateSingletonServices<CoreConfig, CoreSingletonServices>;
120
+ createWireServices?: CreateWireServices<CoreSingletonServices, CoreServices, CoreUserSession>;
121
+ } | null;
122
+ /** Cached singleton services for this package */
123
+ singletonServices: CoreSingletonServices | null;
124
+ /** Absolute path to this package's .pikku directory */
125
+ metaDir: string | null;
126
+ };
127
+ }
@@ -0,0 +1 @@
1
+ export {};
package/dist/utils.d.ts CHANGED
@@ -1,5 +1,14 @@
1
1
  import { Logger } from './services/logger.js';
2
- export declare const closeWireServices: (logger: Logger, wireServices: Record<string, any>) => Promise<void>;
2
+ import { CoreSingletonServices, WireServices } from './types/core.types.js';
3
+ export declare const closeWireServices: (logger: Logger, wireServices: WireServices) => Promise<void>;
3
4
  export declare const createWeakUID: () => string;
4
5
  export declare const isSerializable: (data: any) => boolean;
6
+ export declare const getTagGroups: <T>(tagGroups: Record<string, T>, tag: string) => T[];
5
7
  export declare const freezeDedupe: <T>(arr?: readonly T[] | T[] | undefined) => readonly T[];
8
+ /**
9
+ * Stop all singleton services, including external package services.
10
+ * External package services are stopped first, then the parent services.
11
+ *
12
+ * @param singletonServices - The parent singleton services to stop
13
+ */
14
+ export declare const stopSingletonServices: (singletonServices: CoreSingletonServices) => Promise<void>;