@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
@@ -25,6 +25,8 @@ import type {
25
25
  import type {
26
26
  PikkuBrowserWire,
27
27
  PikkuScenarioStepWire,
28
+ ScenarioStepKind,
29
+ ScenarioSurface,
28
30
  } from '../wirings/workflow/scenario-step.types.js'
29
31
  import type { PikkuGraphWire } from '../wirings/workflow/graph/workflow-graph.types.js'
30
32
  import type { PikkuTrigger } from '../wirings/trigger/trigger.types.js'
@@ -35,9 +37,9 @@ import type { AIStorageService } from '../services/ai-storage-service.js'
35
37
 
36
38
  import type { ContentService } from '../services/content-service.js'
37
39
  import type {
38
- ScenarioActorOf,
39
- ScenarioActors,
40
- } from '../services/scenario-actors-service.js'
40
+ ScenarioPersonaOf,
41
+ ScenarioPersonas,
42
+ } from '../services/personas-service.js'
41
43
  import type { AIAgentRunnerService } from '../services/ai-agent-runner-service.js'
42
44
  import type { AIEmbeddingService } from '../services/ai-embedding-service.js'
43
45
  import type { AIRunStateService } from '../services/ai-run-state-service.js'
@@ -83,12 +85,6 @@ export interface FunctionWiresMeta {
83
85
  wires: string[]
84
86
  }
85
87
 
86
- /**
87
- * Metadata for middleware at any level
88
- * - type: 'http' = HTTP route middleware group (references httpGroup in pikkuState)
89
- * - type: 'tag' = Tag-based middleware group (references tagGroup in pikkuState)
90
- * - type: 'wire' = Wire-level individual middleware
91
- */
92
88
  export type MiddlewareMetadata =
93
89
  | {
94
90
  type: 'http'
@@ -96,30 +92,22 @@ export type MiddlewareMetadata =
96
92
  }
97
93
  | {
98
94
  type: 'tag'
99
- tag: string // Tag name
95
+ tag: string
100
96
  }
101
97
  | {
102
98
  type: 'wire'
103
99
  name: string
104
- inline?: boolean // true if inline middleware
100
+ inline?: boolean
105
101
  }
106
102
 
107
103
  /**
108
- * Metadata for permissions at any level
109
- * - type: 'http' = HTTP route permission group (references httpGroup in pikkuState)
110
- * - type: 'tag' = Tag-based permission group (references tagGroup in pikkuState)
111
- * - type: 'wire' = Wire-level individual permission
112
- */
113
- /**
114
- * A reference to a permission function a function declares, resolved by name.
115
- * Used at filter time (e.g. listing agent tools) to run the session-only
116
- * (pikkuAuth) predicates without request data. Permissions are function-scoped
117
- * only — there are no wire- or tag-level permission references.
104
+ * A reference to a permission function, resolved by name. Function-scoped
105
+ * only: there are no wire- or tag-level permission references.
118
106
  */
119
107
  export type PermissionMetadata = {
120
108
  type: 'wire'
121
109
  name: string
122
- inline?: boolean // true if inline permission
110
+ inline?: boolean
123
111
  }
124
112
 
125
113
  export type FunctionRuntimeMeta = {
@@ -129,21 +117,28 @@ export type FunctionRuntimeMeta = {
129
117
  /** Scopes the session must hold to run this function. All are required (AND). */
130
118
  scopes?: string[]
131
119
  expose?: boolean
120
+ /**
121
+ * A sessionless function's own `auth: true`. `sessionless` carries the
122
+ * baseline — a `pikkuFunc` always requires a session — and this carries the
123
+ * tightening a `pikkuSessionlessFunc` applies to itself. Both are needed to
124
+ * know whether a function is gated without running it.
125
+ */
126
+ auth?: boolean
127
+ /**
128
+ * The author's declaration that this function authorizes callers in its own
129
+ * body. Carries no runtime effect — it records a gate codegen cannot see, so
130
+ * an audit is not left to guess whether a sessionless function is open.
131
+ */
132
+ selfAuthenticated?: boolean
132
133
  remote?: boolean
133
134
  /**
134
- * A step RPC: a name dispatched by a scenario run and refused everywhere
135
- * else. It sits alongside `expose` (public) and `remote` as a kind of RPC
136
- * rather than a separate concept — a step is invoked by name exactly as an
137
- * RPC is, which is why a run records the step function in its `rpcName`.
138
- * What makes it its own kind is that it is never network-callable: a step
139
- * may drive a browser or assert against fixtures.
135
+ * A step RPC: invoked by name only from a scenario run and refused
136
+ * everywhere else, so it is never network-callable.
140
137
  */
141
138
  scenarioStep?: boolean
142
139
  /**
143
- * The function behind a `pikkuScenario(...)` a scenario's own body, as
144
- * opposed to the steps it calls. Marked for the same reason as
145
- * `scenarioStep`: a scenario is only ever run by `pikku scenario run`, so it
146
- * has to be held back from the app bootstrap and from every deployed unit.
140
+ * The body of a `pikkuScenario(...)`. Only ever run by `pikku scenario run`,
141
+ * so it is held back from the app bootstrap and from every deployed unit.
147
142
  */
148
143
  scenario?: boolean
149
144
  mcp?: boolean
@@ -156,10 +151,30 @@ export type FunctionRuntimeMeta = {
156
151
  workflowRetries?: number
157
152
  /** Timeout when this function is used as a workflow step (e.g. '30s', '5m'). */
158
153
  workflowTimeout?: string
159
- /** Scenario steps only: this step drives a browser, so the runner must provision one and an actor is mandatory. */
160
- scenarioStepBrowser?: boolean
154
+ /**
155
+ * Scenario steps only: which surfaces this step declares a binding for.
156
+ *
157
+ * The reporter derives coverage from this — a `then` with no binding for the
158
+ * surface the run targeted was never actually witnessed there, which is a gap
159
+ * worth counting rather than excusing.
160
+ */
161
+ scenarioStepSurfaces?: ScenarioSurface[]
162
+ /**
163
+ * Scenario steps only: who acts. Absent means `persona` — the ordinary step,
164
+ * and the only kind that existed before the other two.
165
+ *
166
+ * A `platform` or `addon` step is the app or a third-party system acting, and
167
+ * it must never reach a virtual user's catalogue. That is not tidiness: a
168
+ * virtual user that can invoke "Stripe's webhook arrives" can forge its own
169
+ * payment success, and every finding downstream of that is worthless.
170
+ */
171
+ scenarioStepKind?: ScenarioStepKind
172
+ /** Addon steps only: the addon whose system acts — `wireAddon`'s `name`. */
173
+ scenarioStepAddon?: string
161
174
  /** Scenario steps only: the prose a reporter renders, with `{placeholders}` filled from the step's recorded input. */
162
175
  scenarioStepTemplate?: string
176
+ /** Keeps the full `SecretService`. Set by the inspector, read by the runner. */
177
+ secretBroker?: boolean
163
178
  version?: number
164
179
  approvalRequired?: boolean
165
180
  approvalDescription?: string
@@ -173,7 +188,8 @@ export type FunctionMeta = FunctionRuntimeMeta &
173
188
  Partial<
174
189
  {
175
190
  name: string
176
- functionType: 'user' | 'inline' | 'helper'
191
+ /** `remote`: a contract with no local body, answered by a connected client. */
192
+ functionType: 'user' | 'inline' | 'helper' | 'remote'
177
193
  funcWrapper: string
178
194
  services: FunctionServicesMeta
179
195
  wires: FunctionWiresMeta
@@ -196,19 +212,11 @@ export type FunctionMeta = FunctionRuntimeMeta &
196
212
  export type FunctionsRuntimeMeta = Record<string, FunctionRuntimeMeta>
197
213
  export type FunctionsMeta = Record<string, FunctionMeta>
198
214
 
199
- // Optimized runtime metadata with only essential fields
200
-
201
215
  export type MakeRequired<T, K extends keyof T> = Omit<T, K> &
202
216
  Required<Pick<T, K>>
203
217
 
204
- /**
205
- * Represents a JSON primitive type which can be a string, number, boolean, null, or undefined.
206
- */
207
218
  export type JSONPrimitive = string | number | boolean | null | undefined
208
219
 
209
- /**
210
- * Represents a JSON value which can be a primitive, an array, or an object.
211
- */
212
220
  export type JSONValue =
213
221
  | JSONPrimitive
214
222
  | JSONValue[]
@@ -216,28 +224,17 @@ export type JSONValue =
216
224
  [key: string]: JSONValue
217
225
  }
218
226
 
219
- /**
220
- * Utility type for making certain keys required and leaving the rest as optional.
221
- */
222
227
  export type PickRequired<T, K extends keyof T> = T & Required<Pick<T, K>>
223
228
 
224
- /**
225
- * Utility type for making certain keys optional while keeping the rest required.
226
- */
227
229
  export type PickOptional<T, K extends keyof T> = Partial<T> & Pick<T, K>
228
230
 
229
- /**
230
- * Utility type that ensures at least one key in the given type `T` is required.
231
- */
232
231
  export type RequireAtLeastOne<T> = {
233
232
  [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
234
233
  }[keyof T]
235
234
 
236
235
  /**
237
- * Runtime options for the Postgres adapter (@pikku/kysely-postgres).
238
- * The connection string itself stays the flat `postgresUrl` config field (the
239
- * contract the CLI's db commands read); this block is purely runtime pool
240
- * tuning that the CLI never touches.
236
+ * Runtime pool tuning for the Postgres adapter. The connection string stays
237
+ * the flat `postgresUrl` config field the contract the CLI's db commands read.
241
238
  */
242
239
  export interface PostgresConfig {
243
240
  /** Max connections in the postgres.js pool. Defaults to postgres.js's 10. */
@@ -264,25 +261,18 @@ export interface PostgresConfig {
264
261
  prepare?: boolean
265
262
  }
266
263
 
267
- /**
268
- * Interface for the core configuration settings of Pikku.
269
- */
270
264
  export type CoreConfig<Config extends Record<string, unknown> = {}> = {
271
- /** The log level for the application. */
272
265
  logLevel?: LogLevel
273
- /** Secrets used by the application (optional). */
274
- secrets?: {}
266
+ secrets?: {
267
+ /** Refuse a secret that declares no `allowedHosts` rather than treating it as unrestricted. */
268
+ requireAllowedHosts?: boolean
269
+ }
275
270
 
276
271
  workflow?: WorkflowServiceConfig
277
- /** Default retry and signing settings for outgoing webhooks. */
278
272
  webhook?: WebhookServiceConfig
279
- /** Runtime Postgres adapter options (pool sizing). */
280
273
  postgres?: PostgresConfig
281
274
  } & Config
282
275
 
283
- /**
284
- * Represents a core user session, which can be extended for more specific session information.
285
- */
286
276
  export interface CoreUserSession {
287
277
  userId?: string
288
278
  orgId?: string
@@ -290,112 +280,73 @@ export interface CoreUserSession {
290
280
  actor?: boolean
291
281
  /**
292
282
  * Scopes granted to this session, checked against a function's `scopes`.
293
- * Populated by whoever builds the session (e.g. better-auth's `mapSession`
294
- * resolving them via a ScopeService) — core reads them and never fetches.
283
+ * Populated by whoever builds the session core reads them, never fetches.
295
284
  */
296
285
  scopes?: string[]
297
286
  }
298
287
 
299
288
  /**
300
- * The shape pikku needs from whatever auth library a project wires: something
301
- * that can answer an HTTP request and expose its own endpoints as callable
302
- * methods. Kept structural so core stays independent of any one auth package —
303
- * `@pikku/better-auth`'s `BetterAuthInstance` is this type.
289
+ * Kept structural so core stays independent of any one auth package
290
+ * `@pikku/better-auth`'s `BetterAuthInstance` satisfies it.
304
291
  */
305
292
  export interface AuthInstance {
306
293
  handler: (request: Request) => Promise<Response>
307
294
  api: Record<string, any>
308
- /**
309
- * The auth library's resolved context. Optional because a hand-built instance
310
- * may omit it.
311
- */
312
295
  $context?: Promise<any>
313
296
  }
314
297
 
315
- /**
316
- * Interface for core singleton services provided by Pikku.
317
- */
318
298
  export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
319
- /** The schema library used to validate data */
320
299
  schema?: SchemaService
321
- /** The JWT service used to encode and decode tokens */
322
300
  jwt?: JWTService
323
- /** The core configuration for the application. */
324
301
  config: Config
325
- /** The logger used by the application. */
326
302
  logger: Logger
327
- /** The variable service to be used */
328
303
  variables: VariablesService
329
- /** The secrets service to retrieve secrets */
330
304
  secrets: SecretService
331
- /** The workflow orchestrator service */
332
305
  workflowService?: WorkflowService
333
- /** The queue service */
334
306
  queueService?: QueueService
335
- /** Event hub for realtime pub/sub across channels */
336
307
  eventHub?: EventHubService<Record<string, any>>
337
- /** The scheduler service */
338
308
  schedulerService?: SchedulerService
339
- /** The deployment service for service discovery */
340
309
  deploymentService?: DeploymentService
341
- /** AI agent storage service (threads, messages, working memory) */
342
310
  aiStorage?: AIStorageService
343
311
 
344
- /** Content service for file storage and retrieval */
345
312
  content?: ContentService
346
- /** AI agent runner service (model calls + tool loop) */
347
313
  aiAgentRunner?: AIAgentRunnerService
348
- /** Dedicated embedding service (vector stores use it at index & query time) */
349
314
  aiEmbedding?: AIEmbeddingService
350
- /** AI run state service (run lifecycle + approval persistence) */
351
315
  aiRunState?: AIRunStateService
352
- /** Agent run service (listing threads, runs, steps) */
353
316
  agentRunService?: AgentRunService
354
- /** Workflow run service (listing workflow runs) */
355
317
  workflowRunService?: WorkflowRunService
356
- /** Credential service for dynamic/managed credentials (OAuth tokens, per-user API keys) */
357
318
  credentialService?: CredentialService
358
- /** Email service for outbound messages and template-backed delivery */
359
319
  emailService?: EmailService
360
320
  /**
361
- * Webhook service for outgoing webhook delivery via a queue. A store-backed
362
- * implementation (e.g. `KyselyWebhookService`) additionally records delivery
363
- * history; the queue-only default throws on the delivery-read methods.
321
+ * Queue-backed outgoing webhook delivery. The queue-only default throws on
322
+ * the delivery-read methods; a store-backed implementation records history.
364
323
  */
365
324
  webhookService?: WebhookService
366
- /** Meta service for reading .pikku metadata files (filesystem on Node, R2/KV on CF) */
367
325
  metaService?: MetaService
368
326
  /** V8 precise-coverage collector (`pikku dev --coverage` only) */
369
327
  coverageService?: CoverageService
370
- /** Audit service for durable or staged audit event capture */
371
328
  audit?: AuditService
372
329
  /**
373
- * Per-invocation audit log. Typically created in `createWireServices` via
374
- * `createInvocationAudit(audit, wire)` and returned as a wire service so the
375
- * runner flushes its buffer (via `close()`) when the invocation ends. Distinct
376
- * from `audit` (the durable sink): this is the request-scoped buffer that
377
- * writes into it.
330
+ * Request-scoped audit buffer that writes into `audit` (the durable sink).
331
+ * Returned as a wire service so the runner flushes it via `close()` when the
332
+ * invocation ends.
378
333
  */
379
334
  auditLog?: AuditLog
380
335
  /** Session store for persisting user sessions keyed by pikkuUserId */
381
336
  sessionStore?: SessionStore
382
337
  /**
383
- * Resolves and administers user scopes. Called when building a session (e.g.
384
- * better-auth's `mapSession`), never by the function runner.
338
+ * Resolves and administers user scopes. Called when building a session,
339
+ * never by the function runner.
385
340
  */
386
341
  scopeService?: ScopeService
387
342
  /**
388
- * The project's resolved auth instance, built once by the factory an auth
389
- * package registers (e.g. `pikkuBetterAuth`) and injected by the generated
390
- * `pikkuServices` wrapper which is why service factories are forbidden from
391
- * returning it themselves. Absent when the project wires no auth.
343
+ * Built once by the factory an auth package registers and injected by the
344
+ * generated `pikkuServices` wrapper service factories must not return it
345
+ * themselves. Absent when the project wires no auth.
392
346
  */
393
347
  auth?: () => Promise<AuthInstance>
394
348
  }
395
349
 
396
- /**
397
- * Represents different forms of wire within Pikku and the outside world.
398
- */
399
350
  export type PikkuWire<
400
351
  In = unknown,
401
352
  Out = unknown,
@@ -407,7 +358,7 @@ export type PikkuWire<
407
358
  TypedWorkflow extends PikkuWorkflowWire | never = PikkuWorkflowWire,
408
359
  TriggerOutput = unknown,
409
360
  TypedScenario extends PikkuScenarioWire | never = PikkuScenarioWire,
410
- TypedActors extends ScenarioActors = ScenarioActors,
361
+ TypedActors extends ScenarioPersonas = ScenarioPersonas,
411
362
  > = {
412
363
  /** Always present — lazily initialised on first access for every function invocation */
413
364
  rpc: TypedRPC
@@ -416,23 +367,24 @@ export type PikkuWire<
416
367
  wireId: string
417
368
  /** Trace ID for distributed tracing — propagated across remote RPC calls via x-trace-id header */
418
369
  traceId: string
419
- /** Function id for the current invocation */
420
370
  functionId: string
421
- /** The addon instance namespace (wireAddon name) currently executing, if any */
422
371
  addonNamespace: string
423
372
  http: PikkuHTTP<In>
424
373
  mcp: PikkuMCP<MCPTools>
374
+ // `channel.remote` is typed off the same generated map as `rpc.remote`, so
375
+ // calling back into the connected peer is checked against the app's own
376
+ // function contracts rather than being a string and an `any`.
425
377
  channel: [IsChannel] extends [null]
426
- ? PikkuChannel<unknown, Out>
427
- : PikkuChannel<unknown, Out> | undefined
378
+ ? PikkuChannel<unknown, Out, TypedRPC['remote']>
379
+ : PikkuChannel<unknown, Out, TypedRPC['remote']> | undefined
428
380
  scheduledTask: PikkuScheduledTask
429
381
  queue: PikkuQueue
430
- cli: PikkuCLI
382
+ cli: PikkuCLI<TypedRPC['remote']>
431
383
  workflow: TypedWorkflow
432
384
  scenario: TypedScenario
433
385
  actors: TypedActors
434
386
  /** Present on every scenario step invocation */
435
- scenarioStep: PikkuScenarioStepWire<ScenarioActorOf<TypedActors>>
387
+ scenarioStep: PikkuScenarioStepWire<ScenarioPersonaOf<TypedActors>>
436
388
  /** Present only when the runner provisioned a browser for this step */
437
389
  browser: PikkuBrowserWire
438
390
  workflowStep: WorkflowStepWire
@@ -442,15 +394,11 @@ export type PikkuWire<
442
394
  session: HasInitialSession extends true
443
395
  ? UserSession
444
396
  : UserSession | undefined
445
- /** Update and persist the current session */
446
397
  setSession: (session: UserSession) => Promise<void> | void
447
- /** Clear and persist the current session */
448
398
  clearSession: () => Promise<void> | void
449
399
  /** Fetch the latest session (may read from backing store) */
450
400
  getSession: () => Promise<UserSession> | UserSession | undefined
451
- /** Whether the session was modified during this run */
452
401
  hasSessionChanged: () => boolean
453
- /** The resolved user identity for credential lookups */
454
402
  pikkuUserId: string
455
403
  /** Set a credential value (available in middleware) */
456
404
  setCredential: (name: string, value: unknown) => void
@@ -460,20 +408,28 @@ export type PikkuWire<
460
408
  getCredentials: () =>
461
409
  | Record<string, unknown>
462
410
  | Promise<Record<string, unknown>>
463
- /** Resolved function audit metadata for this invocation, if enabled */
464
411
  audit: {
465
412
  durability: AuditDurability
466
413
  }
414
+ /**
415
+ * Declare that everything after this line changes something.
416
+ *
417
+ * Present only on functions that are not `readonly` — a read has nothing to
418
+ * declare. Throws `AbandonedError` if whatever asked for this work has
419
+ * already gone away (an interrupted agent run, a disconnected client), so the
420
+ * mutation never runs and the abort is clean. Otherwise it marks the call as
421
+ * mutating, so an interrupt landing after this point is reported rather than
422
+ * silently discarded.
423
+ *
424
+ * Cooperative: a function that never calls it is assumed to have changed
425
+ * something, which is the safe default.
426
+ */
427
+ beginChanges: () => Promise<void>
467
428
  }>
468
429
 
469
- /**
470
- * Wire object as constructed by runners, before rpc is lazily added by the function runner.
471
- */
430
+ /** Wire as constructed by runners, before the function runner lazily adds `rpc`. */
472
431
  export type PikkuRawWire = Omit<PikkuWire, 'rpc'>
473
432
 
474
- /**
475
- * A function that can wrap an wire and be called before or after
476
- */
477
433
  export type CorePikkuMiddleware<
478
434
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
479
435
  UserSession extends CoreUserSession = CoreUserSession,
@@ -484,14 +440,8 @@ export type CorePikkuMiddleware<
484
440
  ) => Promise<void>
485
441
 
486
442
  /**
487
- * Priority levels for middleware execution order.
488
- * Lower priority runs first (outermost in the onion model).
489
- *
490
- * - `highest` — Runs first (outermost). Use for telemetry, request tracing.
491
- * - `high` — Runs early. Use for CORS, rate limiting.
492
- * - `medium` — Default. Use for auth, most user middleware.
493
- * - `low` — Runs late. Use for post-auth processing.
494
- * - `lowest` — Runs last (innermost, closest to function). Use for inner telemetry.
443
+ * Execution order: `highest` runs first (outermost in the onion), `lowest`
444
+ * runs last, closest to the function.
495
445
  */
496
446
  export type MiddlewarePriority =
497
447
  | 'highest'
@@ -500,40 +450,23 @@ export type MiddlewarePriority =
500
450
  | 'low'
501
451
  | 'lowest'
502
452
 
503
- /**
504
- * Configuration object for creating middleware with metadata
505
- *
506
- * @template SingletonServices - The singleton services type
507
- * @template UserSession - The user session type
508
- */
509
453
  export type CorePikkuMiddlewareConfig<
510
454
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
511
455
  UserSession extends CoreUserSession = CoreUserSession,
512
456
  > = {
513
- /** The middleware function */
514
457
  func: CorePikkuMiddleware<SingletonServices, UserSession>
515
- /** Optional human-readable name for the middleware */
516
458
  name?: string
517
- /** Optional description of what the middleware does */
518
459
  description?: string
519
460
  /** Execution priority. Lower runs first (outermost). Defaults to 'medium'. */
520
461
  priority?: MiddlewarePriority
521
462
  }
522
463
 
523
- /**
524
- * A factory function that takes input and returns middleware
525
- * Used when middleware needs configuration/input parameters
526
- */
527
464
  export type CorePikkuMiddlewareFactory<
528
465
  In = any,
529
466
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
530
467
  UserSession extends CoreUserSession = CoreUserSession,
531
468
  > = (input: In) => CorePikkuMiddleware<SingletonServices, UserSession>
532
469
 
533
- /**
534
- * A group of middleware (combination of regular middleware and factories)
535
- * Used with addMiddleware() and addHTTPMiddleware() to group related middleware together
536
- */
537
470
  export type CorePikkuMiddlewareGroup<
538
471
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
539
472
  UserSession extends CoreUserSession = CoreUserSession,
@@ -542,31 +475,6 @@ export type CorePikkuMiddlewareGroup<
542
475
  | CorePikkuMiddlewareFactory<any, SingletonServices, UserSession>
543
476
  >
544
477
 
545
- /**
546
- * Factory function for creating middleware with tree-shaking support
547
- * Supports both direct function and configuration object syntax
548
- *
549
- * @example
550
- * ```typescript
551
- * // Direct function syntax
552
- * export const logMiddleware = pikkuMiddleware(
553
- * async ({ logger }, next) => {
554
- * logger.info('Request started')
555
- * await next()
556
- * }
557
- * )
558
- *
559
- * // Configuration object syntax with metadata
560
- * export const logMiddleware = pikkuMiddleware({
561
- * name: 'Request Logger',
562
- * description: 'Logs request information',
563
- * func: async ({ logger }, next) => {
564
- * logger.info('Request started')
565
- * await next()
566
- * }
567
- * })
568
- * ```
569
- */
570
478
  export const pikkuMiddleware = <
571
479
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
572
480
  UserSession extends CoreUserSession = CoreUserSession,
@@ -586,23 +494,6 @@ export const pikkuMiddleware = <
586
494
  return func
587
495
  }
588
496
 
589
- /**
590
- * Factory function for creating middleware factories
591
- * Use this when your middleware needs configuration/input parameters
592
- *
593
- * @example
594
- * ```typescript
595
- * export const logMiddleware = pikkuMiddlewareFactory<LogOptions>(({
596
- * message,
597
- * level = 'info'
598
- * }) => {
599
- * return pikkuMiddleware(async ({ logger }, next) => {
600
- * logger[level](message)
601
- * await next()
602
- * })
603
- * })
604
- * ```
605
- */
606
497
  export const pikkuMiddlewareFactory = <In = any>(
607
498
  factory: CorePikkuMiddlewareFactory<In>
608
499
  ): CorePikkuMiddlewareFactory<In> => {
@@ -633,20 +524,22 @@ export const pikkuAIMiddleware = <
633
524
  hooks: PikkuAIMiddlewareHooks<State, SingletonServices>
634
525
  ): PikkuAIMiddlewareHooks<State, SingletonServices> => hooks
635
526
 
636
- /**
637
- * Represents the core services used by Pikku, including singleton services.
638
- */
639
527
  export type CoreServices<SingletonServices = CoreSingletonServices> =
640
528
  SingletonServices
641
529
 
530
+ /** Strips `secrets` from a services type. */
531
+ export type SecretlessServices<Services> = Omit<Services, 'secrets'>
532
+
533
+ /** The constraint every function-, permission- and auth-facing type is bounded by. */
534
+ export type CoreSecretlessSingletonServices<
535
+ Config extends CoreConfig = CoreConfig,
536
+ > = SecretlessServices<CoreSingletonServices<Config>>
537
+
642
538
  export type WireServices<
643
539
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
644
540
  Services = CoreServices<SingletonServices>,
645
541
  > = Omit<Services, keyof SingletonServices | 'session'>
646
542
 
647
- /**
648
- * Defines a function type for creating singleton services from the given configuration.
649
- */
650
543
  export type CreateSingletonServices<
651
544
  Config extends CoreConfig,
652
545
  SingletonServices extends CoreSingletonServices,
@@ -655,9 +548,6 @@ export type CreateSingletonServices<
655
548
  existingServices?: Partial<SingletonServices>
656
549
  ) => Promise<SingletonServices>
657
550
 
658
- /**
659
- * Defines a function type for creating session-specific services.
660
- */
661
551
  export type CreateWireServices<
662
552
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
663
553
  Services extends CoreServices<SingletonServices> =
@@ -668,15 +558,11 @@ export type CreateWireServices<
668
558
  wire: PikkuRawWire
669
559
  ) => Promise<WireServices<Services, SingletonServices>>
670
560
 
671
- /**
672
- * Defines a function type for creating config.
673
- */
674
561
  export type CreateConfig<
675
562
  Config extends CoreConfig,
676
563
  RemainingArgs extends any[] = unknown[],
677
564
  > = (variables?: VariablesService, ...args: RemainingArgs) => Promise<Config>
678
565
 
679
- /** Server lifecycle hooks for startup and shutdown phases. */
680
566
  export type ServerLifecycle<
681
567
  SingletonServices extends CoreSingletonServices = CoreSingletonServices,
682
568
  > = {
@@ -686,9 +572,6 @@ export type ServerLifecycle<
686
572
  afterStop?: (services: SingletonServices) => void | Promise<void>
687
573
  }
688
574
 
689
- /**
690
- * Represents the documentation for a route, including summary, description, tags, and errors.
691
- */
692
575
  export type CommonWireMeta = {
693
576
  pikkuFuncId: string
694
577
  packageName?: string
@@ -704,9 +587,8 @@ export type CommonWireMeta = {
704
587
  }
705
588
 
706
589
  /**
707
- * Dependency security audit artifact — the shape of `.pikku/audit.json` written
708
- * by `pikku audit`. Canonical home for the type shared by the CLI (writer), the
709
- * console addon (reader), and the console UI (renderer).
590
+ * The shape of `.pikku/audit.json`. Shared by the CLI (writer), the console
591
+ * addon (reader) and the console UI (renderer).
710
592
  */
711
593
  export type SecuritySeverity = 'critical' | 'high' | 'moderate' | 'low' | 'info'
712
594
  export type SecurityUpdateLevel = 'major' | 'minor' | 'patch' | 'unknown'
@@ -752,16 +634,21 @@ export interface SecurityAuditReport {
752
634
  summary: SecurityAuditSummary
753
635
  }
754
636
 
755
- /**
756
- * Serialized error for storage
757
- */
758
637
  export interface SerializedError {
759
638
  message: string
760
639
  stack?: string
761
640
  code?: string
762
- // True when the original error was a deliberate, expected failure (a
763
- // PikkuError). Survives the step-boundary rehydration so the workflow runner
764
- // can log the message alone instead of a stack trace. See isExpectedError.
641
+ // Set for a deliberate PikkuError; survives step-boundary rehydration so
642
+ // the workflow runner logs the message alone rather than a stack trace.
765
643
  expected?: boolean
766
644
  [key: string]: any
767
645
  }
646
+
647
+ /**
648
+ * A generated schema's declaration site, used by the credential/secret/variable
649
+ * definition validators to point conflicting definitions at their source.
650
+ */
651
+ export interface SchemaRefLike {
652
+ variableName: string
653
+ sourceFile: string
654
+ }