@pikku/core 0.12.71 → 0.12.74

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 (819) hide show
  1. package/CHANGELOG.md +848 -0
  2. package/dist/crypto-utils.d.ts +30 -5
  3. package/dist/crypto-utils.js +146 -41
  4. package/dist/dev/hot-reload.js +11 -30
  5. package/dist/dev/module-runner.d.ts +3 -7
  6. package/dist/dev/module-runner.js +4 -10
  7. package/dist/dev/reload-meta.d.ts +8 -20
  8. package/dist/dev/reload-meta.js +9 -29
  9. package/dist/errors/error-handler.d.ts +5 -30
  10. package/dist/errors/error-handler.js +16 -32
  11. package/dist/errors/errors.d.ts +32 -151
  12. package/dist/errors/errors.js +55 -157
  13. package/dist/function/abort-scope.d.ts +47 -0
  14. package/dist/function/abort-scope.js +63 -0
  15. package/dist/function/function-runner.js +40 -30
  16. package/dist/function/functions.types.d.ts +44 -136
  17. package/dist/function/functions.types.js +0 -58
  18. package/dist/function/list.types.d.ts +12 -62
  19. package/dist/function/list.types.js +4 -25
  20. package/dist/handle-error.d.ts +0 -11
  21. package/dist/handle-error.js +6 -18
  22. package/dist/index.d.ts +5 -2
  23. package/dist/index.js +4 -1
  24. package/dist/middleware/auth-apikey.d.ts +3 -18
  25. package/dist/middleware/auth-apikey.js +0 -17
  26. package/dist/middleware/auth-bearer.d.ts +6 -41
  27. package/dist/middleware/auth-bearer.js +3 -40
  28. package/dist/middleware/auth-cookie.d.ts +5 -27
  29. package/dist/middleware/auth-cookie.js +2 -26
  30. package/dist/middleware/cors.d.ts +7 -34
  31. package/dist/middleware/cors.js +7 -34
  32. package/dist/middleware/remote-auth.d.ts +3 -1
  33. package/dist/middleware/remote-auth.js +3 -2
  34. package/dist/middleware/telemetry.d.ts +8 -33
  35. package/dist/middleware/telemetry.js +2 -31
  36. package/dist/middleware-runner.d.ts +4 -55
  37. package/dist/middleware-runner.js +5 -74
  38. package/dist/permissions.d.ts +3 -44
  39. package/dist/permissions.js +19 -71
  40. package/dist/pikku-request.d.ts +0 -6
  41. package/dist/pikku-request.js +0 -6
  42. package/dist/pikku-state.d.ts +0 -26
  43. package/dist/pikku-state.js +2 -30
  44. package/dist/remote.d.ts +3 -5
  45. package/dist/remote.js +8 -7
  46. package/dist/schema.d.ts +7 -17
  47. package/dist/schema.js +30 -18
  48. package/dist/scopes.d.ts +4 -23
  49. package/dist/scopes.js +7 -48
  50. package/dist/services/ai-agent-runner-service.d.ts +20 -0
  51. package/dist/services/ai-embedding-service.d.ts +2 -25
  52. package/dist/services/audit-service.js +1 -2
  53. package/dist/services/content-service.d.ts +1 -46
  54. package/dist/services/credential-service.d.ts +3 -40
  55. package/dist/services/deployment-service.d.ts +3 -9
  56. package/dist/services/gateway-service.d.ts +0 -15
  57. package/dist/services/http-personas.d.ts +80 -0
  58. package/dist/services/http-personas.js +233 -0
  59. package/dist/services/in-memory-queue-service.d.ts +0 -14
  60. package/dist/services/in-memory-queue-service.js +1 -15
  61. package/dist/services/in-memory-trigger-service.d.ts +0 -18
  62. package/dist/services/in-memory-trigger-service.js +1 -18
  63. package/dist/services/in-memory-workflow-service.d.ts +0 -16
  64. package/dist/services/in-memory-workflow-service.js +4 -33
  65. package/dist/services/index.d.ts +5 -6
  66. package/dist/services/index.js +2 -5
  67. package/dist/services/istanbul-coverage-service.d.ts +1 -5
  68. package/dist/services/istanbul-coverage-service.js +2 -8
  69. package/dist/services/jwt-service.d.ts +1 -16
  70. package/dist/services/local-content.d.ts +13 -2
  71. package/dist/services/local-content.js +40 -13
  72. package/dist/services/local-gateway-service.d.ts +0 -16
  73. package/dist/services/local-gateway-service.js +2 -17
  74. package/dist/services/local-secrets.d.ts +0 -4
  75. package/dist/services/local-secrets.js +0 -4
  76. package/dist/services/logger-console.d.ts +3 -7
  77. package/dist/services/logger-console.js +3 -7
  78. package/dist/services/logger.d.ts +2 -37
  79. package/dist/services/meta-service.d.ts +23 -26
  80. package/dist/services/meta-service.js +22 -36
  81. package/dist/services/personas-service.d.ts +134 -0
  82. package/dist/services/personas-service.js +40 -0
  83. package/dist/services/pikku-user-id.js +0 -4
  84. package/dist/services/queue-webhook-service.d.ts +2 -36
  85. package/dist/services/queue-webhook-service.js +9 -41
  86. package/dist/services/scheduler-service.d.ts +1 -50
  87. package/dist/services/scheduler-service.js +0 -10
  88. package/dist/services/schema-service.d.ts +1 -24
  89. package/dist/services/scope-service.d.ts +49 -34
  90. package/dist/services/scoped-secret-service.d.ts +0 -4
  91. package/dist/services/scoped-secret-service.js +0 -4
  92. package/dist/services/secret-host-binding.d.ts +8 -0
  93. package/dist/services/secret-host-binding.js +36 -0
  94. package/dist/services/secret-service.d.ts +5 -33
  95. package/dist/services/secretless.d.ts +6 -0
  96. package/dist/services/secretless.js +21 -0
  97. package/dist/services/stub-tracker.d.ts +7 -18
  98. package/dist/services/stub-tracker.js +8 -18
  99. package/dist/services/system-role-guard.d.ts +33 -0
  100. package/dist/services/system-role-guard.js +38 -0
  101. package/dist/services/trigger-service.d.ts +0 -12
  102. package/dist/services/typed-secret-service.d.ts +0 -7
  103. package/dist/services/typed-secret-service.js +1 -7
  104. package/dist/services/v8-coverage-service.d.ts +2 -3
  105. package/dist/services/v8-coverage-service.js +1 -2
  106. package/dist/services/variables-service.d.ts +1 -8
  107. package/dist/services/webhook-service.d.ts +19 -63
  108. package/dist/services/webhook-service.js +6 -20
  109. package/dist/services/workflow-service.d.ts +3 -15
  110. package/dist/testing/service-tests.js +0 -17
  111. package/dist/time-utils.d.ts +0 -16
  112. package/dist/time-utils.js +1 -19
  113. package/dist/types/core.types.d.ts +99 -219
  114. package/dist/types/core.types.js +0 -42
  115. package/dist/types/state.types.d.ts +4 -9
  116. package/dist/utils/hmac.d.ts +4 -10
  117. package/dist/utils/hmac.js +4 -10
  118. package/dist/utils/safe-fetch.d.ts +7 -35
  119. package/dist/utils/safe-fetch.js +13 -53
  120. package/dist/utils.d.ts +1 -6
  121. package/dist/utils.js +6 -15
  122. package/dist/wirings/actor-flow/actor-flow.types.d.ts +1 -34
  123. package/dist/wirings/actor-flow/index.d.ts +0 -9
  124. package/dist/wirings/actor-flow/run-conversation.d.ts +5 -5
  125. package/dist/wirings/actor-flow/run-conversation.js +14 -7
  126. package/dist/wirings/ai-agent/ai-agent-agui.d.ts +0 -5
  127. package/dist/wirings/ai-agent/ai-agent-agui.js +34 -12
  128. package/dist/wirings/ai-agent/ai-agent-helpers.d.ts +7 -0
  129. package/dist/wirings/ai-agent/ai-agent-helpers.js +7 -0
  130. package/dist/wirings/ai-agent/ai-agent-interrupt.d.ts +153 -0
  131. package/dist/wirings/ai-agent/ai-agent-interrupt.js +256 -0
  132. package/dist/wirings/ai-agent/ai-agent-memory.js +0 -2
  133. package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +0 -9
  134. package/dist/wirings/ai-agent/ai-agent-model-config.js +1 -9
  135. package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +10 -99
  136. package/dist/wirings/ai-agent/ai-agent-prepare.js +58 -131
  137. package/dist/wirings/ai-agent/ai-agent-registry.d.ts +2 -1
  138. package/dist/wirings/ai-agent/ai-agent-registry.js +5 -1
  139. package/dist/wirings/ai-agent/ai-agent-runner.js +49 -20
  140. package/dist/wirings/ai-agent/ai-agent-stream.d.ts +25 -2
  141. package/dist/wirings/ai-agent/ai-agent-stream.js +153 -63
  142. package/dist/wirings/ai-agent/ai-agent.types.d.ts +84 -4
  143. package/dist/wirings/ai-agent/index.d.ts +6 -4
  144. package/dist/wirings/ai-agent/index.js +5 -4
  145. package/dist/wirings/ai-agent/voice-input.d.ts +39 -1
  146. package/dist/wirings/ai-agent/voice-input.js +46 -3
  147. package/dist/wirings/ai-agent/voice-output.d.ts +54 -1
  148. package/dist/wirings/ai-agent/voice-output.js +153 -50
  149. package/dist/wirings/channel/channel-common.d.ts +7 -20
  150. package/dist/wirings/channel/channel-common.js +7 -21
  151. package/dist/wirings/channel/channel-handler.js +25 -6
  152. package/dist/wirings/channel/channel-host-rpc.d.ts +25 -0
  153. package/dist/wirings/channel/channel-host-rpc.js +38 -0
  154. package/dist/wirings/channel/channel-middleware-runner.d.ts +0 -12
  155. package/dist/wirings/channel/channel-middleware-runner.js +0 -12
  156. package/dist/wirings/channel/channel-rpc-registry.d.ts +31 -0
  157. package/dist/wirings/channel/channel-rpc-registry.js +89 -0
  158. package/dist/wirings/channel/channel-rpc-responder.d.ts +15 -0
  159. package/dist/wirings/channel/channel-rpc-responder.js +71 -0
  160. package/dist/wirings/channel/channel-rpc-service.d.ts +40 -0
  161. package/dist/wirings/channel/channel-rpc-service.js +106 -0
  162. package/dist/wirings/channel/channel-rpc-validators.d.ts +14 -0
  163. package/dist/wirings/channel/channel-rpc-validators.js +30 -0
  164. package/dist/wirings/channel/channel-rpc.d.ts +5 -0
  165. package/dist/wirings/channel/channel-rpc.js +5 -0
  166. package/dist/wirings/channel/channel-rpc.types.d.ts +90 -0
  167. package/dist/wirings/channel/channel-rpc.types.js +50 -0
  168. package/dist/wirings/channel/channel-runner.d.ts +0 -4
  169. package/dist/wirings/channel/channel-runner.js +0 -14
  170. package/dist/wirings/channel/channel-store.d.ts +0 -10
  171. package/dist/wirings/channel/channel.types.d.ts +12 -1
  172. package/dist/wirings/channel/define-channel-routes.d.ts +0 -20
  173. package/dist/wirings/channel/define-channel-routes.js +0 -20
  174. package/dist/wirings/channel/eventhub-service.d.ts +0 -18
  175. package/dist/wirings/channel/index.d.ts +4 -1
  176. package/dist/wirings/channel/index.js +2 -0
  177. package/dist/wirings/channel/local/local-channel-runner.js +3 -1
  178. package/dist/wirings/channel/local/local-eventhub-service.d.ts +0 -33
  179. package/dist/wirings/channel/local/local-eventhub-service.js +2 -36
  180. package/dist/wirings/channel/log-channels.d.ts +0 -4
  181. package/dist/wirings/channel/log-channels.js +0 -4
  182. package/dist/wirings/channel/pikku-abstract-channel-handler.js +6 -0
  183. package/dist/wirings/channel/serverless/serverless-channel-runner.js +2 -5
  184. package/dist/wirings/cli/channel/cli-approval.d.ts +41 -0
  185. package/dist/wirings/cli/channel/cli-approval.js +81 -0
  186. package/dist/wirings/cli/channel/cli-channel-runner.d.ts +0 -4
  187. package/dist/wirings/cli/channel/cli-channel-runner.js +3 -25
  188. package/dist/wirings/cli/channel/cli-raw-channel-runner.d.ts +47 -9
  189. package/dist/wirings/cli/channel/cli-raw-channel-runner.js +24 -16
  190. package/dist/wirings/cli/channel/cli-raw-client-runner.d.ts +20 -0
  191. package/dist/wirings/cli/channel/cli-raw-client-runner.js +121 -0
  192. package/dist/wirings/cli/channel/index.d.ts +4 -0
  193. package/dist/wirings/cli/channel/index.js +2 -0
  194. package/dist/wirings/cli/cli-runner.d.ts +20 -20
  195. package/dist/wirings/cli/cli-runner.js +28 -89
  196. package/dist/wirings/cli/cli.types.d.ts +14 -3
  197. package/dist/wirings/cli/command-parser.d.ts +1 -10
  198. package/dist/wirings/cli/command-parser.js +10 -87
  199. package/dist/wirings/cli/define-cli-commands.d.ts +1 -17
  200. package/dist/wirings/cli/define-cli-commands.js +1 -17
  201. package/dist/wirings/credential/credential.types.d.ts +0 -12
  202. package/dist/wirings/credential/define-credential.d.ts +48 -0
  203. package/dist/wirings/credential/define-credential.js +47 -0
  204. package/dist/wirings/credential/index.d.ts +1 -1
  205. package/dist/wirings/credential/index.js +1 -1
  206. package/dist/wirings/credential/validate-credential-definitions.d.ts +2 -4
  207. package/dist/wirings/gateway/gateway-runner.d.ts +1 -20
  208. package/dist/wirings/gateway/gateway-runner.js +8 -105
  209. package/dist/wirings/gateway/gateway.types.d.ts +7 -80
  210. package/dist/wirings/http/http-routes.d.ts +0 -63
  211. package/dist/wirings/http/http-routes.js +0 -63
  212. package/dist/wirings/http/http-runner.d.ts +1 -100
  213. package/dist/wirings/http/http-runner.js +12 -166
  214. package/dist/wirings/http/http.types.d.ts +16 -55
  215. package/dist/wirings/http/index.d.ts +2 -1
  216. package/dist/wirings/http/index.js +1 -1
  217. package/dist/wirings/http/log-http-routes.d.ts +0 -4
  218. package/dist/wirings/http/log-http-routes.js +0 -4
  219. package/dist/wirings/http/pikku-fetch-http-request.d.ts +6 -36
  220. package/dist/wirings/http/pikku-fetch-http-request.js +56 -50
  221. package/dist/wirings/http/pikku-fetch-http-response.js +0 -3
  222. package/dist/wirings/http/routers/path-to-regex.js +2 -13
  223. package/dist/wirings/http/web-request.d.ts +0 -8
  224. package/dist/wirings/http/web-request.js +25 -17
  225. package/dist/wirings/mcp/mcp-runner.d.ts +2 -0
  226. package/dist/wirings/mcp/mcp-runner.js +6 -16
  227. package/dist/wirings/mcp/mcp.types.d.ts +2 -35
  228. package/dist/wirings/oauth2/oauth2.types.d.ts +0 -28
  229. package/dist/wirings/oauth2/oauth2.types.js +0 -3
  230. package/dist/wirings/persona/define-personas.d.ts +28 -0
  231. package/dist/wirings/persona/define-personas.js +27 -0
  232. package/dist/wirings/persona/index.d.ts +21 -0
  233. package/dist/wirings/persona/index.js +17 -0
  234. package/dist/wirings/persona/persona-email.d.ts +37 -0
  235. package/dist/wirings/persona/persona-email.js +69 -0
  236. package/dist/wirings/persona/persona-environments.d.ts +45 -0
  237. package/dist/wirings/persona/persona-environments.js +81 -0
  238. package/dist/wirings/persona/persona-mailbox.d.ts +101 -0
  239. package/dist/wirings/persona/persona-mailbox.js +53 -0
  240. package/dist/wirings/persona/persona.types.d.ts +125 -0
  241. package/dist/wirings/persona/persona.types.js +1 -0
  242. package/dist/wirings/persona/validate-personas.d.ts +53 -0
  243. package/dist/wirings/persona/validate-personas.js +94 -0
  244. package/dist/wirings/queue/index.d.ts +3 -0
  245. package/dist/wirings/queue/index.js +2 -3
  246. package/dist/wirings/queue/queue-identity.d.ts +28 -0
  247. package/dist/wirings/queue/queue-identity.js +102 -0
  248. package/dist/wirings/queue/queue-runner.d.ts +0 -19
  249. package/dist/wirings/queue/queue-runner.js +9 -30
  250. package/dist/wirings/queue/queue.types.d.ts +18 -89
  251. package/dist/wirings/queue/register-queue-helper.d.ts +0 -12
  252. package/dist/wirings/queue/register-queue-helper.js +0 -11
  253. package/dist/wirings/queue/signed-queue-service.d.ts +16 -0
  254. package/dist/wirings/queue/signed-queue-service.js +42 -0
  255. package/dist/wirings/queue/validate-worker-config.d.ts +2 -23
  256. package/dist/wirings/queue/validate-worker-config.js +0 -14
  257. package/dist/wirings/role/define-system-role.d.ts +32 -0
  258. package/dist/wirings/role/define-system-role.js +31 -0
  259. package/dist/wirings/role/index.d.ts +3 -0
  260. package/dist/wirings/role/index.js +2 -0
  261. package/dist/wirings/role/role.types.d.ts +43 -0
  262. package/dist/wirings/role/role.types.js +1 -0
  263. package/dist/wirings/role/validate-role-definitions.d.ts +21 -0
  264. package/dist/wirings/role/validate-role-definitions.js +71 -0
  265. package/dist/wirings/rpc/addon-runner.d.ts +0 -19
  266. package/dist/wirings/rpc/addon-runner.js +0 -51
  267. package/dist/wirings/rpc/remote-addon-auth.d.ts +1 -12
  268. package/dist/wirings/rpc/remote-addon-auth.js +1 -9
  269. package/dist/wirings/rpc/rpc-runner.d.ts +11 -18
  270. package/dist/wirings/rpc/rpc-runner.js +88 -105
  271. package/dist/wirings/rpc/rpc-types.d.ts +7 -6
  272. package/dist/wirings/rpc/wire-addon.d.ts +25 -0
  273. package/dist/wirings/rpc/wire-addon.js +62 -0
  274. package/dist/wirings/rpc/wire-remote-addon.d.ts +3 -28
  275. package/dist/wirings/rpc/wire-remote-addon.js +0 -8
  276. package/dist/wirings/scheduler/log-schedulers.d.ts +0 -4
  277. package/dist/wirings/scheduler/log-schedulers.js +0 -4
  278. package/dist/wirings/scheduler/scheduler-runner.d.ts +0 -1
  279. package/dist/wirings/scheduler/scheduler-runner.js +0 -1
  280. package/dist/wirings/scheduler/scheduler.types.d.ts +1 -14
  281. package/dist/wirings/scope/define-scope.d.ts +32 -0
  282. package/dist/wirings/scope/define-scope.js +31 -0
  283. package/dist/wirings/scope/index.d.ts +1 -1
  284. package/dist/wirings/scope/index.js +1 -1
  285. package/dist/wirings/scope/scope.types.d.ts +7 -9
  286. package/dist/wirings/scope/validate-scope-definitions.d.ts +2 -21
  287. package/dist/wirings/scope/validate-scope-definitions.js +3 -21
  288. package/dist/wirings/secret/index.d.ts +1 -1
  289. package/dist/wirings/secret/index.js +1 -1
  290. package/dist/wirings/secret/secret.types.d.ts +19 -15
  291. package/dist/wirings/secret/secret.types.js +1 -1
  292. package/dist/wirings/secret/validate-secret-definitions.d.ts +2 -4
  293. package/dist/wirings/trigger/trigger-runner.d.ts +0 -27
  294. package/dist/wirings/trigger/trigger-runner.js +1 -24
  295. package/dist/wirings/trigger/trigger.types.d.ts +1 -82
  296. package/dist/wirings/trigger/trigger.types.js +0 -34
  297. package/dist/wirings/variable/index.d.ts +1 -1
  298. package/dist/wirings/variable/index.js +1 -1
  299. package/dist/wirings/variable/validate-variable-definitions.d.ts +2 -4
  300. package/dist/wirings/variable/variable.types.d.ts +1 -13
  301. package/dist/wirings/variable/variable.types.js +1 -1
  302. package/dist/wirings/virtual-user/index.d.ts +27 -0
  303. package/dist/wirings/virtual-user/index.js +8 -0
  304. package/dist/wirings/virtual-user/run-virtual-user.d.ts +92 -0
  305. package/dist/wirings/virtual-user/run-virtual-user.js +478 -0
  306. package/dist/wirings/virtual-user/virtual-user-agents.d.ts +38 -0
  307. package/dist/wirings/virtual-user/virtual-user-agents.js +24 -0
  308. package/dist/wirings/virtual-user/virtual-user-catalogue.d.ts +92 -0
  309. package/dist/wirings/virtual-user/virtual-user-catalogue.js +134 -0
  310. package/dist/wirings/virtual-user/virtual-user-derive.d.ts +26 -0
  311. package/dist/wirings/virtual-user/virtual-user-derive.js +137 -0
  312. package/dist/wirings/virtual-user/virtual-user-dispositions.d.ts +79 -0
  313. package/dist/wirings/virtual-user/virtual-user-dispositions.js +128 -0
  314. package/dist/wirings/virtual-user/virtual-user-intents.d.ts +78 -0
  315. package/dist/wirings/virtual-user/virtual-user-intents.js +142 -0
  316. package/dist/wirings/virtual-user/virtual-user-rng.d.ts +24 -0
  317. package/dist/wirings/virtual-user/virtual-user-rng.js +44 -0
  318. package/dist/wirings/virtual-user/virtual-user-target.d.ts +21 -0
  319. package/dist/wirings/virtual-user/virtual-user-target.js +34 -0
  320. package/dist/wirings/virtual-user/virtual-user.types.d.ts +199 -0
  321. package/dist/wirings/virtual-user/virtual-user.types.js +8 -0
  322. package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +5 -5
  323. package/dist/wirings/workflow/dsl/workflow-runner.d.ts +0 -4
  324. package/dist/wirings/workflow/dsl/workflow-runner.js +0 -4
  325. package/dist/wirings/workflow/feature.d.ts +0 -19
  326. package/dist/wirings/workflow/feature.js +0 -19
  327. package/dist/wirings/workflow/graph/graph-node.d.ts +0 -98
  328. package/dist/wirings/workflow/graph/graph-node.js +0 -34
  329. package/dist/wirings/workflow/graph/graph-runner.js +6 -41
  330. package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +0 -4
  331. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +0 -58
  332. package/dist/wirings/workflow/graph/workflow-graph.types.js +0 -6
  333. package/dist/wirings/workflow/index.d.ts +5 -7
  334. package/dist/wirings/workflow/index.js +3 -17
  335. package/dist/wirings/workflow/pikku-scenario-service.d.ts +87 -5
  336. package/dist/wirings/workflow/pikku-scenario-service.js +204 -42
  337. package/dist/wirings/workflow/pikku-workflow-service.d.ts +7 -459
  338. package/dist/wirings/workflow/pikku-workflow-service.js +58 -551
  339. package/dist/wirings/workflow/run-timeline.d.ts +0 -47
  340. package/dist/wirings/workflow/run-timeline.js +0 -22
  341. package/dist/wirings/workflow/scenario-cookie-jar.d.ts +0 -23
  342. package/dist/wirings/workflow/scenario-cookie-jar.js +0 -16
  343. package/dist/wirings/workflow/scenario-poll.d.ts +0 -15
  344. package/dist/wirings/workflow/scenario-poll.js +0 -12
  345. package/dist/wirings/workflow/scenario-prose.d.ts +0 -28
  346. package/dist/wirings/workflow/scenario-prose.js +0 -18
  347. package/dist/wirings/workflow/scenario-step-guards.d.ts +0 -13
  348. package/dist/wirings/workflow/scenario-step-guards.js +1 -14
  349. package/dist/wirings/workflow/scenario-step.types.d.ts +72 -6
  350. package/dist/wirings/workflow/scenario-step.types.js +5 -1
  351. package/dist/wirings/workflow/scenario-surface.d.ts +16 -0
  352. package/dist/wirings/workflow/scenario-surface.js +56 -0
  353. package/dist/wirings/workflow/workflow-invocation-id.d.ts +0 -18
  354. package/dist/wirings/workflow/workflow-invocation-id.js +2 -22
  355. package/dist/wirings/workflow/workflow-queue-workers.d.ts +0 -20
  356. package/dist/wirings/workflow/workflow-queue-workers.js +0 -19
  357. package/dist/wirings/workflow/workflow.types.d.ts +0 -197
  358. package/knowledge/decisions/index.md +19 -0
  359. package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +49 -0
  360. package/knowledge/decisions/internals/actor-flow-conversations-seed-a-hidden-kickoff-message.md +23 -0
  361. package/knowledge/decisions/internals/actor-flow-drives-the-target-through-a-transport-seam.md +24 -0
  362. package/knowledge/decisions/internals/actor-flow-verdicts-are-llm-self-evaluations.md +25 -0
  363. package/knowledge/decisions/internals/addon-package-roots-resolve-by-walking-node-module-search-paths.md +26 -0
  364. package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +33 -0
  365. package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +28 -0
  366. package/knowledge/decisions/internals/ai-agent-agui-bridge-obeys-the-client-ordering-contract.md +29 -0
  367. package/knowledge/decisions/internals/ai-agent-audio-chunks-carry-the-format-the-provider-returned.md +20 -0
  368. package/knowledge/decisions/internals/ai-agent-credential-suspensions-hide-the-tool-result.md +26 -0
  369. package/knowledge/decisions/internals/ai-agent-delegate-and-supervise-hide-different-text.md +26 -0
  370. package/knowledge/decisions/internals/ai-agent-llm-tool-arguments-have-nulls-stripped.md +23 -0
  371. package/knowledge/decisions/internals/ai-agent-model-config-stays-a-single-resolution-seam.md +25 -0
  372. package/knowledge/decisions/internals/ai-agent-onerror-hooks-cannot-change-the-failure.md +22 -0
  373. package/knowledge/decisions/internals/ai-agent-runner-methods-must-keep-their-receiver.md +22 -0
  374. package/knowledge/decisions/internals/ai-agent-stream-persistence-is-best-effort.md +27 -0
  375. package/knowledge/decisions/internals/ai-agent-sub-agents-inherit-the-parent-context-block.md +26 -0
  376. package/knowledge/decisions/internals/ai-agent-tool-execute-failures-are-logged-unconditionally.md +25 -0
  377. package/knowledge/decisions/internals/ai-agent-voice-input-transcribes-audio-parts-in-place.md +22 -0
  378. package/knowledge/decisions/internals/ai-agent-working-memory-is-persisted-only-when-valid.md +25 -0
  379. package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +30 -0
  380. package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +31 -0
  381. package/knowledge/decisions/internals/channel-state-is-per-socket-session-state-is-per-user.md +29 -0
  382. package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +28 -0
  383. package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +27 -0
  384. package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +28 -0
  385. package/knowledge/decisions/internals/cli-stdout-is-reserved-for-machine-readable-output.md +34 -0
  386. package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +29 -0
  387. package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +34 -0
  388. package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +44 -0
  389. package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +39 -0
  390. package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +42 -0
  391. package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +39 -0
  392. package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +43 -0
  393. package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +38 -0
  394. package/knowledge/decisions/internals/core-state-is-a-global-map-written-only-at-registration-time.md +44 -0
  395. package/knowledge/decisions/internals/email-meta-is-read-uncached-because-codegen-rewrites-it-mid-session.md +27 -0
  396. package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +32 -0
  397. package/knowledge/decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md +28 -0
  398. package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +31 -0
  399. package/knowledge/decisions/internals/generated-src-paths-in-pikku-meta-are-absolute.md +26 -0
  400. package/knowledge/decisions/internals/http-request-bodies-are-read-once-and-shared.md +32 -0
  401. package/knowledge/decisions/internals/http-route-groups-cascade-config-in-a-fixed-order.md +28 -0
  402. package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +30 -0
  403. package/knowledge/decisions/internals/http-runner-logs-through-a-trace-scoped-logger-functions-do-not.md +26 -0
  404. package/knowledge/decisions/internals/http-set-cookie-headers-are-appended-never-joined.md +28 -0
  405. package/knowledge/decisions/internals/http-sse-streams-flush-headers-only-after-middleware.md +32 -0
  406. package/knowledge/decisions/internals/http-wiring-without-metadata-is-skipped-not-fatal.md +26 -0
  407. package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +25 -0
  408. package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +26 -0
  409. package/knowledge/decisions/internals/index.md +113 -0
  410. package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +25 -0
  411. package/knowledge/decisions/internals/local-trigger-and-gateway-services-assume-a-single-process.md +26 -0
  412. package/knowledge/decisions/internals/node-only-builtins-are-imported-dynamically.md +24 -0
  413. package/knowledge/decisions/internals/queue-group-concurrency-keeps-one-shared-queue-fair.md +28 -0
  414. package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +27 -0
  415. package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +31 -0
  416. package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +32 -0
  417. package/knowledge/decisions/internals/scenario-agent-calls-sign-in-on-401-only.md +27 -0
  418. package/knowledge/decisions/internals/scenario-meta-lives-apart-from-app-meta-but-merges-when-read-off-disk.md +26 -0
  419. package/knowledge/decisions/internals/scenario-steps-return-drained-response-records.md +27 -0
  420. package/knowledge/decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md +30 -0
  421. package/knowledge/decisions/internals/serverless-channel-disconnect-must-tolerate-a-missing-channel.md +28 -0
  422. package/knowledge/decisions/internals/the-dev-queue-copies-prod-timing-and-serialization-semantics.md +30 -0
  423. package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +29 -0
  424. package/knowledge/decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md +27 -0
  425. package/knowledge/decisions/internals/the-kek-salt-is-scoped-to-the-key-version.md +40 -0
  426. package/knowledge/decisions/internals/the-schema-service-is-never-stubbed.md +26 -0
  427. package/knowledge/decisions/internals/trigger-declaration-is-split-from-trigger-source.md +33 -0
  428. package/knowledge/decisions/internals/typed-secret-service-caches-for-the-process-lifetime.md +26 -0
  429. package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +26 -0
  430. package/knowledge/decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md +25 -0
  431. package/knowledge/decisions/internals/whether-a-run-is-inline-is-read-from-the-run-record.md +58 -0
  432. package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +34 -0
  433. package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +42 -0
  434. package/knowledge/decisions/internals/workflow-dsl-meta-separates-runtime-expressions-from-literals.md +38 -0
  435. package/knowledge/decisions/internals/workflow-features-resolve-scenarios-by-object-identity.md +29 -0
  436. package/knowledge/decisions/internals/workflow-graph-inline-and-queued-runs-share-one-planner.md +42 -0
  437. package/knowledge/decisions/internals/workflow-graph-node-notes-are-excluded-from-the-graph-hash.md +25 -0
  438. package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +29 -0
  439. package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +43 -0
  440. package/knowledge/decisions/internals/workflow-queued-step-dispatch-requires-an-explicit-opt-in.md +29 -0
  441. package/knowledge/decisions/internals/workflow-queues-are-per-workflow-by-default.md +42 -0
  442. package/knowledge/decisions/internals/workflow-repeated-step-names-get-an-ordinal-suffix.md +33 -0
  443. package/knowledge/decisions/internals/workflow-replay-reads-its-steps-once-and-caches-only-the-immutable-half.md +32 -0
  444. package/knowledge/decisions/internals/workflow-retries-are-owned-by-the-workflow-not-the-queue.md +31 -0
  445. package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +39 -0
  446. package/knowledge/decisions/internals/workflow-run-mirror-is-never-a-source-of-truth.md +29 -0
  447. package/knowledge/decisions/internals/workflow-run-polling-backs-off-to-the-callers-ceiling.md +33 -0
  448. package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +37 -0
  449. package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +50 -0
  450. package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +43 -0
  451. package/knowledge/decisions/internals/workflow-scenario-prose-is-rendered-from-typed-calls-not-parsed-from-english.md +32 -0
  452. package/knowledge/decisions/internals/workflow-scenario-quarantine-reason-lives-in-code.md +18 -0
  453. package/knowledge/decisions/internals/workflow-scenario-step-targets-are-string-literals-for-the-inspector.md +34 -0
  454. package/knowledge/decisions/internals/workflow-step-compensation-runs-as-its-own-durable-step.md +26 -0
  455. package/knowledge/decisions/internals/workflow-step-dispatch-failure-is-transient-not-a-run-failure.md +33 -0
  456. package/knowledge/decisions/internals/workflow-step-lock-is-held-only-to-claim-the-step.md +27 -0
  457. package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +34 -0
  458. package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +38 -0
  459. package/knowledge/decisions/internals/workflow-suspended-runs-keep-their-in-process-context.md +30 -0
  460. package/knowledge/decisions/security/a-dropped-audit-write-is-always-logged.md +26 -0
  461. package/knowledge/decisions/security/actor-flow-missing-approval-decisions-default-to-denied.md +22 -0
  462. package/knowledge/decisions/security/actor-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +27 -0
  463. package/knowledge/decisions/security/actor-sign-in-only-works-for-actor-flagged-users.md +27 -0
  464. package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +43 -0
  465. package/knowledge/decisions/security/addon-config-gates-apply-only-at-the-namespaced-rpc-boundary.md +52 -0
  466. package/knowledge/decisions/security/addon-scopes-are-resolved-where-the-function-runs.md +46 -0
  467. package/knowledge/decisions/security/ai-agent-approval-forwarding-requires-a-symbol-brand.md +27 -0
  468. package/knowledge/decisions/security/ai-agent-credential-requests-are-symbol-branded.md +37 -0
  469. package/knowledge/decisions/security/ai-agent-gate-requires-a-session-only-when-auth-is-true.md +31 -0
  470. package/knowledge/decisions/security/ai-agent-ownership-failures-never-echo-the-resource.md +23 -0
  471. package/knowledge/decisions/security/ai-agent-resume-re-runs-the-authorization-gate.md +22 -0
  472. package/knowledge/decisions/security/ai-agent-sessionless-deployments-have-no-thread-ownership.md +39 -0
  473. package/knowledge/decisions/security/ai-agent-thread-ownership-composes-the-session-principal.md +30 -0
  474. package/knowledge/decisions/security/ai-agent-tool-filtering-reads-the-live-function-config.md +24 -0
  475. package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +30 -0
  476. package/knowledge/decisions/security/an-exposed-ungated-function-is-a-codegen-warning.md +49 -0
  477. package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +76 -0
  478. package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +39 -0
  479. package/knowledge/decisions/security/core-secrets-use-a-per-secret-dek-wrapped-by-a-kek.md +37 -0
  480. package/knowledge/decisions/security/gateway-handlers-run-through-the-function-runner-gate.md +31 -0
  481. package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +30 -0
  482. package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +40 -0
  483. package/knowledge/decisions/security/http-error-detail-is-withheld-from-clients-in-production.md +33 -0
  484. package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +46 -0
  485. package/knowledge/decisions/security/index.md +55 -0
  486. package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +27 -0
  487. package/knowledge/decisions/security/passphrases-are-stretched-key-material-is-expanded.md +40 -0
  488. package/knowledge/decisions/security/permission-auth-filtering-requires-live-permission-functions.md +31 -0
  489. package/knowledge/decisions/security/pikku-carries-actor-scopes-as-data-and-the-app-grants-them.md +26 -0
  490. package/knowledge/decisions/security/queue-job-identities-are-signed-at-enqueue.md +69 -0
  491. package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +39 -0
  492. package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +34 -0
  493. package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +49 -0
  494. package/knowledge/decisions/security/scenario-step-functions-are-never-externally-invocable.md +30 -0
  495. package/knowledge/decisions/security/scope-resolution-happens-at-the-session-boundary-and-sync-never-deletes.md +28 -0
  496. package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +34 -0
  497. package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +37 -0
  498. package/knowledge/decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md +25 -0
  499. package/knowledge/decisions/security/workflow-actor-steps-always-use-the-real-transport.md +34 -0
  500. package/knowledge/decisions/security/workflow-approval-payloads-are-validated-on-replay-inside-the-workflow.md +40 -0
  501. package/knowledge/decisions/security/workflow-queued-steps-rehydrate-their-session-from-the-run-wire.md +32 -0
  502. package/knowledge/decisions/security/workflow-scenario-sessions-are-isolated-per-actor-and-per-scenario.md +32 -0
  503. package/knowledge/decisions/security/workflow-scenario-steps-are-never-network-invocable.md +31 -0
  504. package/knowledge/index.md +24 -0
  505. package/knowledge/questions/index.md +15 -0
  506. package/package.json +4 -2
  507. package/run-tests.sh +0 -0
  508. package/src/crypto-utils.test.ts +460 -19
  509. package/src/crypto-utils.ts +283 -55
  510. package/src/data-classification.ts +1 -7
  511. package/src/dev/hot-reload.test.ts +0 -4
  512. package/src/dev/hot-reload.ts +11 -30
  513. package/src/dev/module-runner.ts +7 -32
  514. package/src/dev/reload-meta.ts +9 -29
  515. package/src/errors/error-handler.ts +20 -35
  516. package/src/errors/error.test.ts +30 -1
  517. package/src/errors/errors.ts +73 -157
  518. package/src/function/abort-scope.test.ts +97 -0
  519. package/src/function/abort-scope.ts +80 -0
  520. package/src/function/function-runner.test.ts +75 -7
  521. package/src/function/function-runner.ts +73 -30
  522. package/src/function/functions.types.ts +56 -136
  523. package/src/function/list.types.test.ts +3 -25
  524. package/src/function/list.types.ts +12 -62
  525. package/src/gopass-secrets-removed.test.ts +51 -0
  526. package/src/handle-error.test.ts +108 -1
  527. package/src/handle-error.ts +8 -18
  528. package/src/index.ts +60 -1
  529. package/src/middleware/auth-apikey.test.ts +0 -1
  530. package/src/middleware/auth-apikey.ts +0 -17
  531. package/src/middleware/auth-bearer.test.ts +0 -3
  532. package/src/middleware/auth-bearer.ts +3 -40
  533. package/src/middleware/auth-cookie.test.ts +0 -6
  534. package/src/middleware/auth-cookie.ts +2 -26
  535. package/src/middleware/cors.test.ts +34 -0
  536. package/src/middleware/cors.ts +12 -33
  537. package/src/middleware/remote-auth.test.ts +24 -9
  538. package/src/middleware/remote-auth.ts +10 -2
  539. package/src/middleware/telemetry.ts +2 -31
  540. package/src/middleware-runner.test.ts +0 -2
  541. package/src/middleware-runner.ts +5 -74
  542. package/src/permissions.test.ts +30 -0
  543. package/src/permissions.ts +24 -74
  544. package/src/pikku-request.ts +0 -6
  545. package/src/pikku-state.ts +2 -30
  546. package/src/production-barrels-stay-lean.test.ts +110 -0
  547. package/src/remote.test.ts +172 -0
  548. package/src/remote.ts +17 -7
  549. package/src/schema.test.ts +103 -0
  550. package/src/schema.ts +35 -18
  551. package/src/scopes.ts +7 -48
  552. package/src/services/ai-agent-runner-service.ts +20 -0
  553. package/src/services/ai-embedding-service.ts +3 -25
  554. package/src/services/audit-service.ts +1 -2
  555. package/src/services/content-service.ts +1 -46
  556. package/src/services/credential-service.ts +3 -40
  557. package/src/services/credential-wire-service.test.ts +0 -2
  558. package/src/services/deployment-service.ts +3 -9
  559. package/src/services/gateway-service.ts +0 -15
  560. package/src/services/{http-scenario-actors-converse.test.ts → http-personas-converse.test.ts} +38 -9
  561. package/src/services/{http-scenario-actors.test.ts → http-personas.test.ts} +39 -22
  562. package/src/services/{http-scenario-actors.ts → http-personas.ts} +85 -45
  563. package/src/services/in-memory-queue-service.ts +1 -15
  564. package/src/services/in-memory-trigger-service.ts +1 -18
  565. package/src/services/in-memory-workflow-service.test.ts +0 -13
  566. package/src/services/in-memory-workflow-service.ts +4 -38
  567. package/src/services/index.ts +20 -15
  568. package/src/services/istanbul-coverage-service.ts +2 -8
  569. package/src/services/jwt-service.ts +1 -16
  570. package/src/services/local-content.test.ts +159 -27
  571. package/src/services/local-content.ts +55 -23
  572. package/src/services/local-gateway-service.ts +2 -17
  573. package/src/services/local-secrets.ts +0 -4
  574. package/src/services/logger-console.test.ts +0 -1
  575. package/src/services/logger-console.ts +3 -7
  576. package/src/services/logger.ts +2 -37
  577. package/src/services/meta-service.test.ts +1 -5
  578. package/src/services/meta-service.ts +41 -61
  579. package/src/services/{scenario-actors-service.ts → personas-service.ts} +48 -43
  580. package/src/services/pikku-user-id.ts +0 -4
  581. package/src/services/queue-webhook-service.ts +9 -41
  582. package/src/services/scheduler-service.ts +1 -50
  583. package/src/services/schema-service.ts +1 -24
  584. package/src/services/scope-service.ts +50 -34
  585. package/src/services/scoped-secret-service.ts +0 -4
  586. package/src/services/secret-host-binding.test.ts +138 -0
  587. package/src/services/secret-host-binding.ts +51 -0
  588. package/src/services/secret-service.ts +5 -33
  589. package/src/services/secretless.test.ts +54 -0
  590. package/src/services/secretless.ts +29 -0
  591. package/src/services/stub-tracker.ts +8 -18
  592. package/src/services/system-role-guard.test.ts +93 -0
  593. package/src/services/system-role-guard.ts +71 -0
  594. package/src/services/trigger-service.ts +0 -12
  595. package/src/services/typed-secret-service.ts +1 -7
  596. package/src/services/v8-coverage-service.ts +3 -6
  597. package/src/services/variables-service.ts +1 -8
  598. package/src/services/webhook-service.ts +19 -63
  599. package/src/services/workflow-service.ts +3 -20
  600. package/src/testing/service-tests.ts +0 -26
  601. package/src/time-utils.ts +1 -19
  602. package/src/types/core.types.ts +116 -229
  603. package/src/types/state.types.ts +7 -9
  604. package/src/utils/hmac.ts +4 -10
  605. package/src/utils/safe-fetch.ts +13 -54
  606. package/src/utils.test.ts +11 -2
  607. package/src/utils.ts +6 -15
  608. package/src/wirings/actor-flow/actor-flow.types.ts +1 -34
  609. package/src/wirings/actor-flow/index.ts +0 -9
  610. package/src/wirings/actor-flow/run-conversation.test.ts +11 -6
  611. package/src/wirings/actor-flow/run-conversation.ts +19 -12
  612. package/src/wirings/ai-agent/ai-agent-agui.test.ts +75 -10
  613. package/src/wirings/ai-agent/ai-agent-agui.ts +36 -17
  614. package/src/wirings/ai-agent/ai-agent-helpers.ts +20 -0
  615. package/src/wirings/ai-agent/ai-agent-interrupt.test.ts +842 -0
  616. package/src/wirings/ai-agent/ai-agent-interrupt.ts +399 -0
  617. package/src/wirings/ai-agent/ai-agent-memory.ts +0 -2
  618. package/src/wirings/ai-agent/ai-agent-model-config.ts +1 -9
  619. package/src/wirings/ai-agent/ai-agent-prepare.test.ts +202 -31
  620. package/src/wirings/ai-agent/ai-agent-prepare.ts +82 -138
  621. package/src/wirings/ai-agent/ai-agent-registry.test.ts +191 -6
  622. package/src/wirings/ai-agent/ai-agent-registry.ts +18 -1
  623. package/src/wirings/ai-agent/ai-agent-resume-authorization.test.ts +0 -2
  624. package/src/wirings/ai-agent/ai-agent-runner.test.ts +11 -9
  625. package/src/wirings/ai-agent/ai-agent-runner.ts +67 -33
  626. package/src/wirings/ai-agent/ai-agent-stream.test.ts +205 -103
  627. package/src/wirings/ai-agent/ai-agent-stream.ts +192 -75
  628. package/src/wirings/ai-agent/ai-agent-thread-ownership.test.ts +301 -0
  629. package/src/wirings/ai-agent/ai-agent.types.ts +85 -4
  630. package/src/wirings/ai-agent/index.ts +35 -3
  631. package/src/wirings/ai-agent/voice-input.test.ts +72 -7
  632. package/src/wirings/ai-agent/voice-input.ts +48 -3
  633. package/src/wirings/ai-agent/voice-output.test.ts +422 -0
  634. package/src/wirings/ai-agent/voice-output.ts +216 -56
  635. package/src/wirings/channel/channel-common.ts +15 -20
  636. package/src/wirings/channel/channel-handler.test.ts +50 -0
  637. package/src/wirings/channel/channel-handler.ts +32 -11
  638. package/src/wirings/channel/channel-host-rpc.test.ts +150 -0
  639. package/src/wirings/channel/channel-host-rpc.ts +69 -0
  640. package/src/wirings/channel/channel-middleware-runner.test.ts +0 -1
  641. package/src/wirings/channel/channel-middleware-runner.ts +0 -12
  642. package/src/wirings/channel/channel-rpc-registry.ts +116 -0
  643. package/src/wirings/channel/channel-rpc-responder.ts +117 -0
  644. package/src/wirings/channel/channel-rpc-service.ts +146 -0
  645. package/src/wirings/channel/channel-rpc-validators.ts +65 -0
  646. package/src/wirings/channel/channel-rpc.test.ts +820 -0
  647. package/src/wirings/channel/channel-rpc.ts +5 -0
  648. package/src/wirings/channel/channel-rpc.types.ts +150 -0
  649. package/src/wirings/channel/channel-runner.ts +0 -14
  650. package/src/wirings/channel/channel-store.ts +0 -10
  651. package/src/wirings/channel/channel.types.ts +19 -8
  652. package/src/wirings/channel/define-channel-routes.ts +0 -20
  653. package/src/wirings/channel/eventhub-service.ts +0 -18
  654. package/src/wirings/channel/index.ts +35 -0
  655. package/src/wirings/channel/local/local-channel-handler.ts +3 -1
  656. package/src/wirings/channel/local/local-channel-runner.test.ts +0 -10
  657. package/src/wirings/channel/local/local-channel-runner.ts +3 -1
  658. package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -13
  659. package/src/wirings/channel/local/local-eventhub-service.ts +2 -37
  660. package/src/wirings/channel/log-channels.ts +0 -4
  661. package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +83 -2
  662. package/src/wirings/channel/pikku-abstract-channel-handler.ts +7 -0
  663. package/src/wirings/channel/serverless/serverless-channel-runner.ts +2 -5
  664. package/src/wirings/cli/channel/cli-approval.test.ts +177 -0
  665. package/src/wirings/cli/channel/cli-approval.ts +135 -0
  666. package/src/wirings/cli/channel/cli-channel-runner.ts +4 -26
  667. package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +169 -0
  668. package/src/wirings/cli/channel/cli-raw-channel-runner.ts +59 -16
  669. package/src/wirings/cli/channel/cli-raw-client-runner.test.ts +480 -0
  670. package/src/wirings/cli/channel/cli-raw-client-runner.ts +155 -0
  671. package/src/wirings/cli/channel/index.ts +9 -0
  672. package/src/wirings/cli/cli-runner.test.ts +0 -1
  673. package/src/wirings/cli/cli-runner.ts +46 -88
  674. package/src/wirings/cli/cli.types.ts +14 -3
  675. package/src/wirings/cli/command-parser.test.ts +0 -4
  676. package/src/wirings/cli/command-parser.ts +11 -91
  677. package/src/wirings/cli/define-cli-commands.ts +1 -17
  678. package/src/wirings/credential/credential.types.ts +0 -12
  679. package/src/wirings/credential/{wire-credential.ts → define-credential.ts} +7 -7
  680. package/src/wirings/credential/index.ts +1 -1
  681. package/src/wirings/credential/validate-credential-definitions.ts +2 -4
  682. package/src/wirings/gateway/gateway-runner.test.ts +1 -21
  683. package/src/wirings/gateway/gateway-runner.ts +8 -110
  684. package/src/wirings/gateway/gateway.types.ts +7 -80
  685. package/src/wirings/http/http-routes.test.ts +0 -3
  686. package/src/wirings/http/http-routes.ts +0 -86
  687. package/src/wirings/http/http-runner.test.ts +0 -1
  688. package/src/wirings/http/http-runner.ts +12 -168
  689. package/src/wirings/http/http.types.ts +17 -62
  690. package/src/wirings/http/index.ts +5 -1
  691. package/src/wirings/http/log-http-routes.ts +0 -4
  692. package/src/wirings/http/pikku-fetch-http-request.test.ts +88 -7
  693. package/src/wirings/http/pikku-fetch-http-request.ts +74 -50
  694. package/src/wirings/http/pikku-fetch-http-response.test.ts +1 -1
  695. package/src/wirings/http/pikku-fetch-http-response.ts +0 -3
  696. package/src/wirings/http/routers/path-to-regex.test.ts +4 -17
  697. package/src/wirings/http/routers/path-to-regex.ts +2 -13
  698. package/src/wirings/http/web-request.test.ts +33 -2
  699. package/src/wirings/http/web-request.ts +30 -17
  700. package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -1
  701. package/src/wirings/mcp/mcp-runner.test.ts +40 -0
  702. package/src/wirings/mcp/mcp-runner.ts +9 -15
  703. package/src/wirings/mcp/mcp.types.ts +7 -42
  704. package/src/wirings/oauth2/oauth2.types.ts +0 -30
  705. package/src/wirings/persona/define-personas.ts +29 -0
  706. package/src/wirings/persona/index.ts +62 -0
  707. package/src/wirings/persona/persona-email.ts +87 -0
  708. package/src/wirings/persona/persona-environments.test.ts +183 -0
  709. package/src/wirings/persona/persona-environments.ts +138 -0
  710. package/src/wirings/persona/persona-mailbox.ts +156 -0
  711. package/src/wirings/persona/persona.test.ts +220 -0
  712. package/src/wirings/persona/persona.types.ts +131 -0
  713. package/src/wirings/persona/validate-personas.ts +133 -0
  714. package/src/wirings/queue/index.ts +13 -3
  715. package/src/wirings/queue/queue-identity.test.ts +453 -0
  716. package/src/wirings/queue/queue-identity.ts +173 -0
  717. package/src/wirings/queue/queue-runner.ts +12 -31
  718. package/src/wirings/queue/queue.types.ts +19 -89
  719. package/src/wirings/queue/register-queue-helper.ts +0 -14
  720. package/src/wirings/queue/signed-queue-service.ts +59 -0
  721. package/src/wirings/queue/validate-worker-config.ts +2 -28
  722. package/src/wirings/role/define-system-role.ts +33 -0
  723. package/src/wirings/role/index.ts +13 -0
  724. package/src/wirings/role/role.test.ts +104 -0
  725. package/src/wirings/role/role.types.ts +47 -0
  726. package/src/wirings/role/validate-role-definitions.ts +93 -0
  727. package/src/wirings/rpc/addon-auth-tags.test.ts +223 -0
  728. package/src/wirings/rpc/addon-runner.ts +0 -56
  729. package/src/wirings/rpc/addon-scopes.test.ts +225 -0
  730. package/src/wirings/rpc/remote-addon-auth.ts +1 -13
  731. package/src/wirings/rpc/rpc-runner.test.ts +186 -2
  732. package/src/wirings/rpc/rpc-runner.ts +145 -127
  733. package/src/wirings/rpc/rpc-types.ts +11 -6
  734. package/src/wirings/rpc/wire-addon.test.ts +43 -1
  735. package/src/wirings/rpc/wire-addon.ts +99 -0
  736. package/src/wirings/rpc/wire-remote-addon.ts +9 -29
  737. package/src/wirings/scheduler/log-schedulers.ts +0 -4
  738. package/src/wirings/scheduler/scheduler-runner.test.ts +1 -8
  739. package/src/wirings/scheduler/scheduler-runner.ts +0 -2
  740. package/src/wirings/scheduler/scheduler.types.ts +1 -14
  741. package/src/wirings/scope/{wire-scope.ts → define-scope.ts} +5 -6
  742. package/src/wirings/scope/index.ts +1 -1
  743. package/src/wirings/scope/scope.test.ts +1 -2
  744. package/src/wirings/scope/scope.types.ts +7 -9
  745. package/src/wirings/scope/validate-scope-definitions.ts +3 -21
  746. package/src/wirings/secret/index.ts +1 -1
  747. package/src/wirings/secret/secret.types.ts +19 -15
  748. package/src/wirings/secret/validate-secret-definitions.ts +2 -4
  749. package/src/wirings/trigger/trigger-runner.ts +1 -27
  750. package/src/wirings/trigger/trigger.types.ts +1 -82
  751. package/src/wirings/variable/index.ts +1 -1
  752. package/src/wirings/variable/validate-variable-definitions.ts +2 -4
  753. package/src/wirings/variable/variable.types.ts +1 -13
  754. package/src/wirings/virtual-user/index.ts +76 -0
  755. package/src/wirings/virtual-user/run-virtual-user.test.ts +765 -0
  756. package/src/wirings/virtual-user/run-virtual-user.ts +671 -0
  757. package/src/wirings/virtual-user/virtual-user-agents.test.ts +65 -0
  758. package/src/wirings/virtual-user/virtual-user-agents.ts +57 -0
  759. package/src/wirings/virtual-user/virtual-user-catalogue.test.ts +215 -0
  760. package/src/wirings/virtual-user/virtual-user-catalogue.ts +184 -0
  761. package/src/wirings/virtual-user/virtual-user-derive.test.ts +398 -0
  762. package/src/wirings/virtual-user/virtual-user-derive.ts +173 -0
  763. package/src/wirings/virtual-user/virtual-user-dispositions.test.ts +63 -0
  764. package/src/wirings/virtual-user/virtual-user-dispositions.ts +213 -0
  765. package/src/wirings/virtual-user/virtual-user-intents.test.ts +208 -0
  766. package/src/wirings/virtual-user/virtual-user-intents.ts +185 -0
  767. package/src/wirings/virtual-user/virtual-user-rng.test.ts +72 -0
  768. package/src/wirings/virtual-user/virtual-user-rng.ts +50 -0
  769. package/src/wirings/virtual-user/virtual-user-target.ts +47 -0
  770. package/src/wirings/virtual-user/virtual-user.types.ts +219 -0
  771. package/src/wirings/workflow/dsl/workflow-dsl.types.ts +5 -4
  772. package/src/wirings/workflow/dsl/workflow-runner.ts +0 -4
  773. package/src/wirings/workflow/feature.ts +0 -19
  774. package/src/wirings/workflow/graph/graph-node.ts +0 -136
  775. package/src/wirings/workflow/graph/graph-runner.test.ts +20 -19
  776. package/src/wirings/workflow/graph/graph-runner.ts +6 -41
  777. package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -4
  778. package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -58
  779. package/src/wirings/workflow/index.ts +10 -44
  780. package/src/wirings/workflow/pikku-scenario-service.ts +235 -52
  781. package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -39
  782. package/src/wirings/workflow/pikku-workflow-service.ts +77 -674
  783. package/src/wirings/workflow/run-timeline.test.ts +7 -19
  784. package/src/wirings/workflow/run-timeline.ts +0 -56
  785. package/src/wirings/workflow/scenario-cookie-jar.test.ts +0 -1
  786. package/src/wirings/workflow/scenario-cookie-jar.ts +0 -25
  787. package/src/wirings/workflow/scenario-expectations.test.ts +2 -7
  788. package/src/wirings/workflow/scenario-hooks.test.ts +2 -7
  789. package/src/wirings/workflow/scenario-poll.test.ts +0 -2
  790. package/src/wirings/workflow/scenario-poll.ts +0 -15
  791. package/src/wirings/workflow/scenario-prose.ts +0 -28
  792. package/src/wirings/workflow/scenario-service.test.ts +2 -9
  793. package/src/wirings/workflow/scenario-step-guards.ts +1 -14
  794. package/src/wirings/workflow/scenario-step.test.ts +159 -14
  795. package/src/wirings/workflow/scenario-step.types.ts +82 -6
  796. package/src/wirings/workflow/scenario-surface.test.ts +145 -0
  797. package/src/wirings/workflow/scenario-surface.ts +71 -0
  798. package/src/wirings/workflow/workflow-dispatch-durability.test.ts +14 -15
  799. package/src/wirings/workflow/workflow-dispatch-payload.test.ts +0 -4
  800. package/src/wirings/workflow/workflow-inline-authority.test.ts +169 -0
  801. package/src/wirings/workflow/workflow-invocation-id.test.ts +0 -2
  802. package/src/wirings/workflow/workflow-invocation-id.ts +2 -22
  803. package/src/wirings/workflow/workflow-mirror.test.ts +0 -7
  804. package/src/wirings/workflow/workflow-on-error.test.ts +0 -9
  805. package/src/wirings/workflow/workflow-queue-workers.ts +0 -21
  806. package/src/wirings/workflow/workflow-replay-snapshot.test.ts +8 -7
  807. package/src/wirings/workflow/workflow-retry-policy.test.ts +0 -5
  808. package/src/wirings/workflow/workflow-run-context.test.ts +5 -10
  809. package/src/wirings/workflow/workflow-run-polling.test.ts +0 -5
  810. package/src/wirings/workflow/workflow-step-ordinal.test.ts +19 -4
  811. package/src/wirings/workflow/workflow-step-session.test.ts +0 -7
  812. package/src/wirings/workflow/workflow.types.ts +0 -203
  813. package/tsconfig.tsbuildinfo +1 -1
  814. package/src/middleware/timeout.ts +0 -22
  815. package/src/pikku-response.ts +0 -5
  816. package/src/services/gopass-secrets.ts +0 -78
  817. package/src/wirings/mcp/mcp-endpoint-registry.test.d.ts +0 -1
  818. package/src/wirings/workflow/dsl/index.ts +0 -36
  819. package/src/wirings/workflow/graph/index.ts +0 -15
@@ -12,7 +12,7 @@ import type { PikkuScheduledTask } from '../wirings/scheduler/scheduler.types.js
12
12
  import type { PikkuQueue, QueueService } from '../wirings/queue/queue.types.js';
13
13
  import type { PikkuCLI } from '../wirings/cli/cli.types.js';
14
14
  import type { PikkuWorkflowWire, PikkuScenarioWire, WorkflowService, WorkflowServiceConfig, WorkflowStepWire } from '../wirings/workflow/workflow.types.js';
15
- import type { PikkuBrowserWire, PikkuScenarioStepWire } from '../wirings/workflow/scenario-step.types.js';
15
+ import type { PikkuBrowserWire, PikkuScenarioStepWire, ScenarioStepKind, ScenarioSurface } from '../wirings/workflow/scenario-step.types.js';
16
16
  import type { PikkuGraphWire } from '../wirings/workflow/graph/workflow-graph.types.js';
17
17
  import type { PikkuTrigger } from '../wirings/trigger/trigger.types.js';
18
18
  import type { PikkuGateway } from '../wirings/gateway/gateway.types.js';
@@ -20,7 +20,7 @@ import type { SchedulerService } from '../services/scheduler-service.js';
20
20
  import type { DeploymentService } from '../services/deployment-service.js';
21
21
  import type { AIStorageService } from '../services/ai-storage-service.js';
22
22
  import type { ContentService } from '../services/content-service.js';
23
- import type { ScenarioActorOf, ScenarioActors } from '../services/scenario-actors-service.js';
23
+ import type { ScenarioPersonaOf, ScenarioPersonas } from '../services/personas-service.js';
24
24
  import type { AIAgentRunnerService } from '../services/ai-agent-runner-service.js';
25
25
  import type { AIEmbeddingService } from '../services/ai-embedding-service.js';
26
26
  import type { AIRunStateService } from '../services/ai-run-state-service.js';
@@ -44,12 +44,6 @@ export interface FunctionWiresMeta {
44
44
  optimized: boolean;
45
45
  wires: string[];
46
46
  }
47
- /**
48
- * Metadata for middleware at any level
49
- * - type: 'http' = HTTP route middleware group (references httpGroup in pikkuState)
50
- * - type: 'tag' = Tag-based middleware group (references tagGroup in pikkuState)
51
- * - type: 'wire' = Wire-level individual middleware
52
- */
53
47
  export type MiddlewareMetadata = {
54
48
  type: 'http';
55
49
  route: string;
@@ -62,16 +56,8 @@ export type MiddlewareMetadata = {
62
56
  inline?: boolean;
63
57
  };
64
58
  /**
65
- * Metadata for permissions at any level
66
- * - type: 'http' = HTTP route permission group (references httpGroup in pikkuState)
67
- * - type: 'tag' = Tag-based permission group (references tagGroup in pikkuState)
68
- * - type: 'wire' = Wire-level individual permission
69
- */
70
- /**
71
- * A reference to a permission function a function declares, resolved by name.
72
- * Used at filter time (e.g. listing agent tools) to run the session-only
73
- * (pikkuAuth) predicates without request data. Permissions are function-scoped
74
- * only — there are no wire- or tag-level permission references.
59
+ * A reference to a permission function, resolved by name. Function-scoped
60
+ * only: there are no wire- or tag-level permission references.
75
61
  */
76
62
  export type PermissionMetadata = {
77
63
  type: 'wire';
@@ -85,21 +71,28 @@ export type FunctionRuntimeMeta = {
85
71
  /** Scopes the session must hold to run this function. All are required (AND). */
86
72
  scopes?: string[];
87
73
  expose?: boolean;
74
+ /**
75
+ * A sessionless function's own `auth: true`. `sessionless` carries the
76
+ * baseline — a `pikkuFunc` always requires a session — and this carries the
77
+ * tightening a `pikkuSessionlessFunc` applies to itself. Both are needed to
78
+ * know whether a function is gated without running it.
79
+ */
80
+ auth?: boolean;
81
+ /**
82
+ * The author's declaration that this function authorizes callers in its own
83
+ * body. Carries no runtime effect — it records a gate codegen cannot see, so
84
+ * an audit is not left to guess whether a sessionless function is open.
85
+ */
86
+ selfAuthenticated?: boolean;
88
87
  remote?: boolean;
89
88
  /**
90
- * A step RPC: a name dispatched by a scenario run and refused everywhere
91
- * else. It sits alongside `expose` (public) and `remote` as a kind of RPC
92
- * rather than a separate concept — a step is invoked by name exactly as an
93
- * RPC is, which is why a run records the step function in its `rpcName`.
94
- * What makes it its own kind is that it is never network-callable: a step
95
- * may drive a browser or assert against fixtures.
89
+ * A step RPC: invoked by name only from a scenario run and refused
90
+ * everywhere else, so it is never network-callable.
96
91
  */
97
92
  scenarioStep?: boolean;
98
93
  /**
99
- * The function behind a `pikkuScenario(...)` a scenario's own body, as
100
- * opposed to the steps it calls. Marked for the same reason as
101
- * `scenarioStep`: a scenario is only ever run by `pikku scenario run`, so it
102
- * has to be held back from the app bootstrap and from every deployed unit.
94
+ * The body of a `pikkuScenario(...)`. Only ever run by `pikku scenario run`,
95
+ * so it is held back from the app bootstrap and from every deployed unit.
103
96
  */
104
97
  scenario?: boolean;
105
98
  mcp?: boolean;
@@ -112,10 +105,30 @@ export type FunctionRuntimeMeta = {
112
105
  workflowRetries?: number;
113
106
  /** Timeout when this function is used as a workflow step (e.g. '30s', '5m'). */
114
107
  workflowTimeout?: string;
115
- /** Scenario steps only: this step drives a browser, so the runner must provision one and an actor is mandatory. */
116
- scenarioStepBrowser?: boolean;
108
+ /**
109
+ * Scenario steps only: which surfaces this step declares a binding for.
110
+ *
111
+ * The reporter derives coverage from this — a `then` with no binding for the
112
+ * surface the run targeted was never actually witnessed there, which is a gap
113
+ * worth counting rather than excusing.
114
+ */
115
+ scenarioStepSurfaces?: ScenarioSurface[];
116
+ /**
117
+ * Scenario steps only: who acts. Absent means `persona` — the ordinary step,
118
+ * and the only kind that existed before the other two.
119
+ *
120
+ * A `platform` or `addon` step is the app or a third-party system acting, and
121
+ * it must never reach a virtual user's catalogue. That is not tidiness: a
122
+ * virtual user that can invoke "Stripe's webhook arrives" can forge its own
123
+ * payment success, and every finding downstream of that is worthless.
124
+ */
125
+ scenarioStepKind?: ScenarioStepKind;
126
+ /** Addon steps only: the addon whose system acts — `wireAddon`'s `name`. */
127
+ scenarioStepAddon?: string;
117
128
  /** Scenario steps only: the prose a reporter renders, with `{placeholders}` filled from the step's recorded input. */
118
129
  scenarioStepTemplate?: string;
130
+ /** Keeps the full `SecretService`. Set by the inspector, read by the runner. */
131
+ secretBroker?: boolean;
119
132
  version?: number;
120
133
  approvalRequired?: boolean;
121
134
  approvalDescription?: string;
@@ -126,7 +139,8 @@ export type FunctionRuntimeMeta = {
126
139
  };
127
140
  export type FunctionMeta = FunctionRuntimeMeta & Partial<{
128
141
  name: string;
129
- functionType: 'user' | 'inline' | 'helper';
142
+ /** `remote`: a contract with no local body, answered by a connected client. */
143
+ functionType: 'user' | 'inline' | 'helper' | 'remote';
130
144
  funcWrapper: string;
131
145
  services: FunctionServicesMeta;
132
146
  wires: FunctionWiresMeta;
@@ -147,35 +161,18 @@ export type FunctionMeta = FunctionRuntimeMeta & Partial<{
147
161
  export type FunctionsRuntimeMeta = Record<string, FunctionRuntimeMeta>;
148
162
  export type FunctionsMeta = Record<string, FunctionMeta>;
149
163
  export type MakeRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
150
- /**
151
- * Represents a JSON primitive type which can be a string, number, boolean, null, or undefined.
152
- */
153
164
  export type JSONPrimitive = string | number | boolean | null | undefined;
154
- /**
155
- * Represents a JSON value which can be a primitive, an array, or an object.
156
- */
157
165
  export type JSONValue = JSONPrimitive | JSONValue[] | {
158
166
  [key: string]: JSONValue;
159
167
  };
160
- /**
161
- * Utility type for making certain keys required and leaving the rest as optional.
162
- */
163
168
  export type PickRequired<T, K extends keyof T> = T & Required<Pick<T, K>>;
164
- /**
165
- * Utility type for making certain keys optional while keeping the rest required.
166
- */
167
169
  export type PickOptional<T, K extends keyof T> = Partial<T> & Pick<T, K>;
168
- /**
169
- * Utility type that ensures at least one key in the given type `T` is required.
170
- */
171
170
  export type RequireAtLeastOne<T> = {
172
171
  [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>;
173
172
  }[keyof T];
174
173
  /**
175
- * Runtime options for the Postgres adapter (@pikku/kysely-postgres).
176
- * The connection string itself stays the flat `postgresUrl` config field (the
177
- * contract the CLI's db commands read); this block is purely runtime pool
178
- * tuning that the CLI never touches.
174
+ * Runtime pool tuning for the Postgres adapter. The connection string stays
175
+ * the flat `postgresUrl` config field the contract the CLI's db commands read.
179
176
  */
180
177
  export interface PostgresConfig {
181
178
  /** Max connections in the postgres.js pool. Defaults to postgres.js's 10. */
@@ -201,23 +198,16 @@ export interface PostgresConfig {
201
198
  */
202
199
  prepare?: boolean;
203
200
  }
204
- /**
205
- * Interface for the core configuration settings of Pikku.
206
- */
207
201
  export type CoreConfig<Config extends Record<string, unknown> = {}> = {
208
- /** The log level for the application. */
209
202
  logLevel?: LogLevel;
210
- /** Secrets used by the application (optional). */
211
- secrets?: {};
203
+ secrets?: {
204
+ /** Refuse a secret that declares no `allowedHosts` rather than treating it as unrestricted. */
205
+ requireAllowedHosts?: boolean;
206
+ };
212
207
  workflow?: WorkflowServiceConfig;
213
- /** Default retry and signing settings for outgoing webhooks. */
214
208
  webhook?: WebhookServiceConfig;
215
- /** Runtime Postgres adapter options (pool sizing). */
216
209
  postgres?: PostgresConfig;
217
210
  } & Config;
218
- /**
219
- * Represents a core user session, which can be extended for more specific session information.
220
- */
221
211
  export interface CoreUserSession {
222
212
  userId?: string;
223
213
  orgId?: string;
@@ -225,109 +215,70 @@ export interface CoreUserSession {
225
215
  actor?: boolean;
226
216
  /**
227
217
  * Scopes granted to this session, checked against a function's `scopes`.
228
- * Populated by whoever builds the session (e.g. better-auth's `mapSession`
229
- * resolving them via a ScopeService) — core reads them and never fetches.
218
+ * Populated by whoever builds the session core reads them, never fetches.
230
219
  */
231
220
  scopes?: string[];
232
221
  }
233
222
  /**
234
- * The shape pikku needs from whatever auth library a project wires: something
235
- * that can answer an HTTP request and expose its own endpoints as callable
236
- * methods. Kept structural so core stays independent of any one auth package —
237
- * `@pikku/better-auth`'s `BetterAuthInstance` is this type.
223
+ * Kept structural so core stays independent of any one auth package
224
+ * `@pikku/better-auth`'s `BetterAuthInstance` satisfies it.
238
225
  */
239
226
  export interface AuthInstance {
240
227
  handler: (request: Request) => Promise<Response>;
241
228
  api: Record<string, any>;
242
- /**
243
- * The auth library's resolved context. Optional because a hand-built instance
244
- * may omit it.
245
- */
246
229
  $context?: Promise<any>;
247
230
  }
248
- /**
249
- * Interface for core singleton services provided by Pikku.
250
- */
251
231
  export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
252
- /** The schema library used to validate data */
253
232
  schema?: SchemaService;
254
- /** The JWT service used to encode and decode tokens */
255
233
  jwt?: JWTService;
256
- /** The core configuration for the application. */
257
234
  config: Config;
258
- /** The logger used by the application. */
259
235
  logger: Logger;
260
- /** The variable service to be used */
261
236
  variables: VariablesService;
262
- /** The secrets service to retrieve secrets */
263
237
  secrets: SecretService;
264
- /** The workflow orchestrator service */
265
238
  workflowService?: WorkflowService;
266
- /** The queue service */
267
239
  queueService?: QueueService;
268
- /** Event hub for realtime pub/sub across channels */
269
240
  eventHub?: EventHubService<Record<string, any>>;
270
- /** The scheduler service */
271
241
  schedulerService?: SchedulerService;
272
- /** The deployment service for service discovery */
273
242
  deploymentService?: DeploymentService;
274
- /** AI agent storage service (threads, messages, working memory) */
275
243
  aiStorage?: AIStorageService;
276
- /** Content service for file storage and retrieval */
277
244
  content?: ContentService;
278
- /** AI agent runner service (model calls + tool loop) */
279
245
  aiAgentRunner?: AIAgentRunnerService;
280
- /** Dedicated embedding service (vector stores use it at index & query time) */
281
246
  aiEmbedding?: AIEmbeddingService;
282
- /** AI run state service (run lifecycle + approval persistence) */
283
247
  aiRunState?: AIRunStateService;
284
- /** Agent run service (listing threads, runs, steps) */
285
248
  agentRunService?: AgentRunService;
286
- /** Workflow run service (listing workflow runs) */
287
249
  workflowRunService?: WorkflowRunService;
288
- /** Credential service for dynamic/managed credentials (OAuth tokens, per-user API keys) */
289
250
  credentialService?: CredentialService;
290
- /** Email service for outbound messages and template-backed delivery */
291
251
  emailService?: EmailService;
292
252
  /**
293
- * Webhook service for outgoing webhook delivery via a queue. A store-backed
294
- * implementation (e.g. `KyselyWebhookService`) additionally records delivery
295
- * history; the queue-only default throws on the delivery-read methods.
253
+ * Queue-backed outgoing webhook delivery. The queue-only default throws on
254
+ * the delivery-read methods; a store-backed implementation records history.
296
255
  */
297
256
  webhookService?: WebhookService;
298
- /** Meta service for reading .pikku metadata files (filesystem on Node, R2/KV on CF) */
299
257
  metaService?: MetaService;
300
258
  /** V8 precise-coverage collector (`pikku dev --coverage` only) */
301
259
  coverageService?: CoverageService;
302
- /** Audit service for durable or staged audit event capture */
303
260
  audit?: AuditService;
304
261
  /**
305
- * Per-invocation audit log. Typically created in `createWireServices` via
306
- * `createInvocationAudit(audit, wire)` and returned as a wire service so the
307
- * runner flushes its buffer (via `close()`) when the invocation ends. Distinct
308
- * from `audit` (the durable sink): this is the request-scoped buffer that
309
- * writes into it.
262
+ * Request-scoped audit buffer that writes into `audit` (the durable sink).
263
+ * Returned as a wire service so the runner flushes it via `close()` when the
264
+ * invocation ends.
310
265
  */
311
266
  auditLog?: AuditLog;
312
267
  /** Session store for persisting user sessions keyed by pikkuUserId */
313
268
  sessionStore?: SessionStore;
314
269
  /**
315
- * Resolves and administers user scopes. Called when building a session (e.g.
316
- * better-auth's `mapSession`), never by the function runner.
270
+ * Resolves and administers user scopes. Called when building a session,
271
+ * never by the function runner.
317
272
  */
318
273
  scopeService?: ScopeService;
319
274
  /**
320
- * The project's resolved auth instance, built once by the factory an auth
321
- * package registers (e.g. `pikkuBetterAuth`) and injected by the generated
322
- * `pikkuServices` wrapper which is why service factories are forbidden from
323
- * returning it themselves. Absent when the project wires no auth.
275
+ * Built once by the factory an auth package registers and injected by the
276
+ * generated `pikkuServices` wrapper service factories must not return it
277
+ * themselves. Absent when the project wires no auth.
324
278
  */
325
279
  auth?: () => Promise<AuthInstance>;
326
280
  }
327
- /**
328
- * Represents different forms of wire within Pikku and the outside world.
329
- */
330
- 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, TypedScenario extends PikkuScenarioWire | never = PikkuScenarioWire, TypedActors extends ScenarioActors = ScenarioActors> = {
281
+ 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, TypedScenario extends PikkuScenarioWire | never = PikkuScenarioWire, TypedActors extends ScenarioPersonas = ScenarioPersonas> = {
331
282
  /** Always present — lazily initialised on first access for every function invocation */
332
283
  rpc: TypedRPC;
333
284
  } & Partial<{
@@ -335,21 +286,19 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
335
286
  wireId: string;
336
287
  /** Trace ID for distributed tracing — propagated across remote RPC calls via x-trace-id header */
337
288
  traceId: string;
338
- /** Function id for the current invocation */
339
289
  functionId: string;
340
- /** The addon instance namespace (wireAddon name) currently executing, if any */
341
290
  addonNamespace: string;
342
291
  http: PikkuHTTP<In>;
343
292
  mcp: PikkuMCP<MCPTools>;
344
- channel: [IsChannel] extends [null] ? PikkuChannel<unknown, Out> : PikkuChannel<unknown, Out> | undefined;
293
+ channel: [IsChannel] extends [null] ? PikkuChannel<unknown, Out, TypedRPC['remote']> : PikkuChannel<unknown, Out, TypedRPC['remote']> | undefined;
345
294
  scheduledTask: PikkuScheduledTask;
346
295
  queue: PikkuQueue;
347
- cli: PikkuCLI;
296
+ cli: PikkuCLI<TypedRPC['remote']>;
348
297
  workflow: TypedWorkflow;
349
298
  scenario: TypedScenario;
350
299
  actors: TypedActors;
351
300
  /** Present on every scenario step invocation */
352
- scenarioStep: PikkuScenarioStepWire<ScenarioActorOf<TypedActors>>;
301
+ scenarioStep: PikkuScenarioStepWire<ScenarioPersonaOf<TypedActors>>;
353
302
  /** Present only when the runner provisioned a browser for this step */
354
303
  browser: PikkuBrowserWire;
355
304
  workflowStep: WorkflowStepWire;
@@ -357,15 +306,11 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
357
306
  trigger: PikkuTrigger<TriggerOutput>;
358
307
  gateway: PikkuGateway;
359
308
  session: HasInitialSession extends true ? UserSession : UserSession | undefined;
360
- /** Update and persist the current session */
361
309
  setSession: (session: UserSession) => Promise<void> | void;
362
- /** Clear and persist the current session */
363
310
  clearSession: () => Promise<void> | void;
364
311
  /** Fetch the latest session (may read from backing store) */
365
312
  getSession: () => Promise<UserSession> | UserSession | undefined;
366
- /** Whether the session was modified during this run */
367
313
  hasSessionChanged: () => boolean;
368
- /** The resolved user identity for credential lookups */
369
314
  pikkuUserId: string;
370
315
  /** Set a credential value (available in middleware) */
371
316
  setCredential: (name: string, value: unknown) => void;
@@ -373,131 +318,62 @@ export type PikkuWire<In = unknown, Out = unknown, HasInitialSession extends boo
373
318
  getCredential: <T = unknown>(name: string) => T | null | Promise<T | null>;
374
319
  /** Get all resolved credentials — lazy-loads from CredentialService on first call, sync thereafter */
375
320
  getCredentials: () => Record<string, unknown> | Promise<Record<string, unknown>>;
376
- /** Resolved function audit metadata for this invocation, if enabled */
377
321
  audit: {
378
322
  durability: AuditDurability;
379
323
  };
324
+ /**
325
+ * Declare that everything after this line changes something.
326
+ *
327
+ * Present only on functions that are not `readonly` — a read has nothing to
328
+ * declare. Throws `AbandonedError` if whatever asked for this work has
329
+ * already gone away (an interrupted agent run, a disconnected client), so the
330
+ * mutation never runs and the abort is clean. Otherwise it marks the call as
331
+ * mutating, so an interrupt landing after this point is reported rather than
332
+ * silently discarded.
333
+ *
334
+ * Cooperative: a function that never calls it is assumed to have changed
335
+ * something, which is the safe default.
336
+ */
337
+ beginChanges: () => Promise<void>;
380
338
  }>;
381
- /**
382
- * Wire object as constructed by runners, before rpc is lazily added by the function runner.
383
- */
339
+ /** Wire as constructed by runners, before the function runner lazily adds `rpc`. */
384
340
  export type PikkuRawWire = Omit<PikkuWire, 'rpc'>;
385
- /**
386
- * A function that can wrap an wire and be called before or after
387
- */
388
341
  export type CorePikkuMiddleware<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = (services: SingletonServices, wires: PikkuWire, next: () => Promise<void>) => Promise<void>;
389
342
  /**
390
- * Priority levels for middleware execution order.
391
- * Lower priority runs first (outermost in the onion model).
392
- *
393
- * - `highest` — Runs first (outermost). Use for telemetry, request tracing.
394
- * - `high` — Runs early. Use for CORS, rate limiting.
395
- * - `medium` — Default. Use for auth, most user middleware.
396
- * - `low` — Runs late. Use for post-auth processing.
397
- * - `lowest` — Runs last (innermost, closest to function). Use for inner telemetry.
343
+ * Execution order: `highest` runs first (outermost in the onion), `lowest`
344
+ * runs last, closest to the function.
398
345
  */
399
346
  export type MiddlewarePriority = 'highest' | 'high' | 'medium' | 'low' | 'lowest';
400
- /**
401
- * Configuration object for creating middleware with metadata
402
- *
403
- * @template SingletonServices - The singleton services type
404
- * @template UserSession - The user session type
405
- */
406
347
  export type CorePikkuMiddlewareConfig<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = {
407
- /** The middleware function */
408
348
  func: CorePikkuMiddleware<SingletonServices, UserSession>;
409
- /** Optional human-readable name for the middleware */
410
349
  name?: string;
411
- /** Optional description of what the middleware does */
412
350
  description?: string;
413
351
  /** Execution priority. Lower runs first (outermost). Defaults to 'medium'. */
414
352
  priority?: MiddlewarePriority;
415
353
  };
416
- /**
417
- * A factory function that takes input and returns middleware
418
- * Used when middleware needs configuration/input parameters
419
- */
420
354
  export type CorePikkuMiddlewareFactory<In = any, SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = (input: In) => CorePikkuMiddleware<SingletonServices, UserSession>;
421
- /**
422
- * A group of middleware (combination of regular middleware and factories)
423
- * Used with addMiddleware() and addHTTPMiddleware() to group related middleware together
424
- */
425
355
  export type CorePikkuMiddlewareGroup<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = Array<CorePikkuMiddleware<SingletonServices, UserSession> | CorePikkuMiddlewareFactory<any, SingletonServices, UserSession>>;
426
- /**
427
- * Factory function for creating middleware with tree-shaking support
428
- * Supports both direct function and configuration object syntax
429
- *
430
- * @example
431
- * ```typescript
432
- * // Direct function syntax
433
- * export const logMiddleware = pikkuMiddleware(
434
- * async ({ logger }, next) => {
435
- * logger.info('Request started')
436
- * await next()
437
- * }
438
- * )
439
- *
440
- * // Configuration object syntax with metadata
441
- * export const logMiddleware = pikkuMiddleware({
442
- * name: 'Request Logger',
443
- * description: 'Logs request information',
444
- * func: async ({ logger }, next) => {
445
- * logger.info('Request started')
446
- * await next()
447
- * }
448
- * })
449
- * ```
450
- */
451
356
  export declare const pikkuMiddleware: <SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession>(middleware: CorePikkuMiddleware<SingletonServices, UserSession> | CorePikkuMiddlewareConfig<SingletonServices, UserSession>) => CorePikkuMiddleware<SingletonServices, UserSession>;
452
- /**
453
- * Factory function for creating middleware factories
454
- * Use this when your middleware needs configuration/input parameters
455
- *
456
- * @example
457
- * ```typescript
458
- * export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
459
- * message,
460
- * level = 'info'
461
- * }) => {
462
- * return pikkuMiddleware(async ({ logger }, next) => {
463
- * logger[level](message)
464
- * await next()
465
- * })
466
- * })
467
- * ```
468
- */
469
357
  export declare const pikkuMiddlewareFactory: <In = any>(factory: CorePikkuMiddlewareFactory<In>) => CorePikkuMiddlewareFactory<In>;
470
358
  export declare const pikkuChannelMiddleware: <SingletonServices extends CoreSingletonServices = CoreSingletonServices, Event = unknown>(middleware: CorePikkuChannelMiddleware<SingletonServices, Event>) => CorePikkuChannelMiddleware<SingletonServices, Event>;
471
359
  export declare const pikkuChannelMiddlewareFactory: <In = any>(factory: CorePikkuChannelMiddlewareFactory<In>) => CorePikkuChannelMiddlewareFactory<In>;
472
360
  export type { PikkuAIMiddlewareHooks } from '../wirings/ai-agent/ai-agent.types.js';
473
361
  export declare const pikkuAIMiddleware: <State extends Record<string, unknown> = Record<string, unknown>, SingletonServices extends CoreSingletonServices = CoreSingletonServices>(hooks: PikkuAIMiddlewareHooks<State, SingletonServices>) => PikkuAIMiddlewareHooks<State, SingletonServices>;
474
- /**
475
- * Represents the core services used by Pikku, including singleton services.
476
- */
477
362
  export type CoreServices<SingletonServices = CoreSingletonServices> = SingletonServices;
363
+ /** Strips `secrets` from a services type. */
364
+ export type SecretlessServices<Services> = Omit<Services, 'secrets'>;
365
+ /** The constraint every function-, permission- and auth-facing type is bounded by. */
366
+ export type CoreSecretlessSingletonServices<Config extends CoreConfig = CoreConfig> = SecretlessServices<CoreSingletonServices<Config>>;
478
367
  export type WireServices<SingletonServices extends CoreSingletonServices = CoreSingletonServices, Services = CoreServices<SingletonServices>> = Omit<Services, keyof SingletonServices | 'session'>;
479
- /**
480
- * Defines a function type for creating singleton services from the given configuration.
481
- */
482
368
  export type CreateSingletonServices<Config extends CoreConfig, SingletonServices extends CoreSingletonServices> = (config: Config, existingServices?: Partial<SingletonServices>) => Promise<SingletonServices>;
483
- /**
484
- * Defines a function type for creating session-specific services.
485
- */
486
369
  export type CreateWireServices<SingletonServices extends CoreSingletonServices = CoreSingletonServices, Services extends CoreServices<SingletonServices> = CoreServices<SingletonServices>, UserSession extends CoreUserSession = CoreUserSession> = (services: SingletonServices, wire: PikkuRawWire) => Promise<WireServices<Services, SingletonServices>>;
487
- /**
488
- * Defines a function type for creating config.
489
- */
490
370
  export type CreateConfig<Config extends CoreConfig, RemainingArgs extends any[] = unknown[]> = (variables?: VariablesService, ...args: RemainingArgs) => Promise<Config>;
491
- /** Server lifecycle hooks for startup and shutdown phases. */
492
371
  export type ServerLifecycle<SingletonServices extends CoreSingletonServices = CoreSingletonServices> = {
493
372
  beforeStart?: (services: SingletonServices) => void | Promise<void>;
494
373
  afterStart?: (services: SingletonServices) => void | Promise<void>;
495
374
  beforeStop?: (services: SingletonServices) => void | Promise<void>;
496
375
  afterStop?: (services: SingletonServices) => void | Promise<void>;
497
376
  };
498
- /**
499
- * Represents the documentation for a route, including summary, description, tags, and errors.
500
- */
501
377
  export type CommonWireMeta = {
502
378
  pikkuFuncId: string;
503
379
  packageName?: string;
@@ -510,9 +386,8 @@ export type CommonWireMeta = {
510
386
  permissions?: PermissionMetadata[];
511
387
  };
512
388
  /**
513
- * Dependency security audit artifact — the shape of `.pikku/audit.json` written
514
- * by `pikku audit`. Canonical home for the type shared by the CLI (writer), the
515
- * console addon (reader), and the console UI (renderer).
389
+ * The shape of `.pikku/audit.json`. Shared by the CLI (writer), the console
390
+ * addon (reader) and the console UI (renderer).
516
391
  */
517
392
  export type SecuritySeverity = 'critical' | 'high' | 'moderate' | 'low' | 'info';
518
393
  export type SecurityUpdateLevel = 'major' | 'minor' | 'patch' | 'unknown';
@@ -553,9 +428,6 @@ export interface SecurityAuditReport {
553
428
  updates: SecurityAuditUpdate[];
554
429
  summary: SecurityAuditSummary;
555
430
  }
556
- /**
557
- * Serialized error for storage
558
- */
559
431
  export interface SerializedError {
560
432
  message: string;
561
433
  stack?: string;
@@ -563,3 +435,11 @@ export interface SerializedError {
563
435
  expected?: boolean;
564
436
  [key: string]: any;
565
437
  }
438
+ /**
439
+ * A generated schema's declaration site, used by the credential/secret/variable
440
+ * definition validators to point conflicting definitions at their source.
441
+ */
442
+ export interface SchemaRefLike {
443
+ variableName: string;
444
+ sourceFile: string;
445
+ }
@@ -1,28 +1,3 @@
1
- /**
2
- * Factory function for creating middleware with tree-shaking support
3
- * Supports both direct function and configuration object syntax
4
- *
5
- * @example
6
- * ```typescript
7
- * // Direct function syntax
8
- * export const logMiddleware = pikkuMiddleware(
9
- * async ({ logger }, next) => {
10
- * logger.info('Request started')
11
- * await next()
12
- * }
13
- * )
14
- *
15
- * // Configuration object syntax with metadata
16
- * export const logMiddleware = pikkuMiddleware({
17
- * name: 'Request Logger',
18
- * description: 'Logs request information',
19
- * func: async ({ logger }, next) => {
20
- * logger.info('Request started')
21
- * await next()
22
- * }
23
- * })
24
- * ```
25
- */
26
1
  export const pikkuMiddleware = (middleware) => {
27
2
  if (typeof middleware === 'function')
28
3
  return middleware;
@@ -32,23 +7,6 @@ export const pikkuMiddleware = (middleware) => {
32
7
  }
33
8
  return func;
34
9
  };
35
- /**
36
- * Factory function for creating middleware factories
37
- * Use this when your middleware needs configuration/input parameters
38
- *
39
- * @example
40
- * ```typescript
41
- * export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
42
- * message,
43
- * level = 'info'
44
- * }) => {
45
- * return pikkuMiddleware(async ({ logger }, next) => {
46
- * logger[level](message)
47
- * await next()
48
- * })
49
- * })
50
- * ```
51
- */
52
10
  export const pikkuMiddlewareFactory = (factory) => {
53
11
  return factory;
54
12
  };
@@ -1,4 +1,4 @@
1
- import type { PikkuError, ErrorDetails } from '../errors/error-handler.js';
1
+ import type { PikkuErrorConstructor, ErrorDetails } from '../errors/error-handler.js';
2
2
  import type { CorePikkuFunctionConfig, CorePermissionGroup, CorePikkuPermission } from '../function/functions.types.js';
3
3
  import type { CorePikkuTriggerFunctionConfig } from '../wirings/trigger/trigger.types.js';
4
4
  import type { CoreChannel, ChannelsMeta } from '../wirings/channel/channel.types.js';
@@ -13,9 +13,6 @@ import type { CoreWorkflow, CoreFeature, WorkflowsRuntimeMeta } from '../wirings
13
13
  import type { CoreTrigger, CoreTriggerSource, TriggerMeta, TriggerSourceMeta } from '../wirings/trigger/trigger.types.js';
14
14
  import type { FunctionsMeta, CorePikkuMiddleware, CorePikkuMiddlewareGroup, CreateConfig, CreateSingletonServices, CreateWireServices, CoreConfig, CoreSingletonServices, CoreServices, CoreUserSession } from './core.types.js';
15
15
  import type { CorePikkuChannelMiddleware } from '../wirings/channel/channel.types.js';
16
- /**
17
- * State structure for an individual package
18
- */
19
16
  export interface PikkuPackageState {
20
17
  function: {
21
18
  meta: FunctionsMeta;
@@ -35,6 +32,8 @@ export interface PikkuPackageState {
35
32
  rpcEndpoint?: string;
36
33
  auth?: boolean;
37
34
  tags?: string[];
35
+ /** Required of every function in this package, on top of the function's own */
36
+ scopes?: string[];
38
37
  /** Per-instance name-aliases: logical name the addon reads -> actual project secret name */
39
38
  secretOverrides?: Record<string, string>;
40
39
  /** Per-instance name-aliases: logical name the addon reads -> actual project variable name */
@@ -119,32 +118,28 @@ export interface PikkuPackageState {
119
118
  global: (CorePermissionGroup | CorePikkuPermission)[];
120
119
  };
121
120
  misc: {
122
- errors: Map<PikkuError, ErrorDetails>;
121
+ errors: Map<PikkuErrorConstructor, ErrorDetails>;
123
122
  schemas: Map<string, any>;
124
123
  middleware: Record<string, CorePikkuMiddleware[]>;
125
124
  channelMiddleware: Record<string, CorePikkuChannelMiddleware[]>;
126
125
  permissions: Record<string, CorePermissionGroup | CorePikkuPermission[]>;
127
126
  };
128
127
  package: {
129
- /** Service factory functions for addon packages */
130
128
  factories: {
131
129
  createConfig?: CreateConfig<CoreConfig>;
132
130
  createSingletonServices?: CreateSingletonServices<CoreConfig, CoreSingletonServices>;
133
131
  createWireServices?: CreateWireServices<CoreSingletonServices, CoreServices, CoreUserSession>;
134
132
  } | null;
135
- /** Cached singleton services for this package */
136
133
  singletonServices: CoreSingletonServices | null;
137
134
  /** The pikkuBetterAuth factory, self-registered when auth.ts is evaluated.
138
135
  * pikkuServices reads it to build and inject the `auth` singleton. */
139
136
  authFactory: ((services: CoreSingletonServices) => unknown | Promise<unknown>) | null;
140
- /** Credential metadata for this addon package */
141
137
  credentialsMeta: Record<string, {
142
138
  name: string;
143
139
  displayName: string;
144
140
  type: string;
145
141
  oauth2?: boolean;
146
142
  }> | null;
147
- /** Services this addon needs from the parent project */
148
143
  requiredParentServices: string[] | null;
149
144
  };
150
145
  }