@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
@@ -1,2 +1,2 @@
1
- export { wireScope } from './wire-scope.js';
1
+ export { defineScope } from './define-scope.js';
2
2
  export { flattenScopeDefinitions, validateAndBuildScopeDefinitionsMeta, } from './validate-scope-definitions.js';
@@ -1,20 +1,19 @@
1
1
  /**
2
- * A node within a scope tree. Every node is itself a grantable scope given
3
- * `admin` containing `invoices` containing `create`, all three of `admin`,
4
- * `admin:invoices` and `admin:invoices:create` are valid scope ids.
2
+ * Every node is itself a grantable scope: `admin` containing `invoices`
3
+ * containing `create` yields all three of `admin`, `admin:invoices` and
4
+ * `admin:invoices:create`.
5
5
  */
6
6
  export type CoreScopeNode = {
7
- /** Short human-readable name, e.g. "Administration". */
8
7
  displayName?: string;
9
- /** Longer-form description, surfaced in the console when granting. */
8
+ /** Surfaced in the console when granting. */
10
9
  description?: string;
11
10
  /** Nested scopes, keyed by their segment. */
12
11
  scopes?: Record<string, CoreScopeNode>;
13
12
  };
14
13
  /**
15
- * Scope trees to declare, keyed by their root segment. A root is just a node
16
- * it is named by its key, exactly like every node beneath it. A key must not
17
- * contain `:` or be `*`.
14
+ * Scope trees keyed by their root segment a root is named by its key exactly
15
+ * like every node beneath it. A key must not contain `:` or be `*`; nothing
16
+ * enforces that at runtime, only the build.
18
17
  */
19
18
  export type CoreScopes = Record<string, CoreScopeNode>;
20
19
  export type ScopeNodeMeta = {
@@ -31,7 +30,6 @@ export type ScopeDefinitionMeta = {
31
30
  };
32
31
  export type ScopeDefinitions = ScopeDefinitionMeta[];
33
32
  export type ScopeDefinitionsMeta = Record<string, ScopeDefinitionMeta>;
34
- /** A single scope, flattened out of the declared tree. */
35
33
  export type FlatScope = {
36
34
  /** Colon-delimited id, e.g. `admin:invoices:create`. */
37
35
  id: string;
@@ -1,24 +1,5 @@
1
1
  import type { FlatScope, ScopeDefinitions, ScopeDefinitionsMeta } from './scope.types.js';
2
- /**
3
- * Flattens declared scope trees into the full list of grantable scope ids,
4
- * depth-first. Every node is emitted, including intermediate ones.
5
- *
6
- * Ids are unique. A root may legitimately be declared more than once — an addon
7
- * and its host app both contributing the same `admin` tree, say — and
8
- * {@link validateAndBuildScopeDefinitionsMeta} already guarantees those
9
- * declarations are identical, so the second one is redundant rather than
10
- * conflicting. Collapsing it here keeps every consumer honest: codegen emits an
11
- * object literal keyed by id (duplicates are a TypeScript error), and a
12
- * ScopeService syncs one row per scope instead of re-writing the same one.
13
- *
14
- * Used by codegen to build the `ScopeId` union, and by a ScopeService to sync
15
- * the declared set into its store.
16
- */
2
+ /** Every node is emitted, intermediate ones included, depth-first. Ids are unique. */
17
3
  export declare const flattenScopeDefinitions: (definitions: ScopeDefinitions) => FlatScope[];
18
- /**
19
- * Validates declared scopes and keys them by name.
20
- *
21
- * Definitions sharing a name must be identical; a conflicting redeclaration is
22
- * a hard error naming both source files.
23
- */
4
+ /** Definitions sharing a name must be identical; a conflicting one is a hard error. */
24
5
  export declare function validateAndBuildScopeDefinitionsMeta(definitions: ScopeDefinitions): ScopeDefinitionsMeta;
@@ -26,21 +26,8 @@ const flattenNodes = (nodes, prefix, out) => {
26
26
  flattenNodes(node.scopes, id, out);
27
27
  }
28
28
  };
29
- /**
30
- * Flattens declared scope trees into the full list of grantable scope ids,
31
- * depth-first. Every node is emitted, including intermediate ones.
32
- *
33
- * Ids are unique. A root may legitimately be declared more than once — an addon
34
- * and its host app both contributing the same `admin` tree, say — and
35
- * {@link validateAndBuildScopeDefinitionsMeta} already guarantees those
36
- * declarations are identical, so the second one is redundant rather than
37
- * conflicting. Collapsing it here keeps every consumer honest: codegen emits an
38
- * object literal keyed by id (duplicates are a TypeScript error), and a
39
- * ScopeService syncs one row per scope instead of re-writing the same one.
40
- *
41
- * Used by codegen to build the `ScopeId` union, and by a ScopeService to sync
42
- * the declared set into its store.
43
- */
29
+ /** Every node is emitted, intermediate ones included, depth-first. Ids are unique. */
30
+ // knowledge: decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md
44
31
  export const flattenScopeDefinitions = (definitions) => {
45
32
  const out = [];
46
33
  for (const def of definitions) {
@@ -56,12 +43,7 @@ export const flattenScopeDefinitions = (definitions) => {
56
43
  return true;
57
44
  });
58
45
  };
59
- /**
60
- * Validates declared scopes and keys them by name.
61
- *
62
- * Definitions sharing a name must be identical; a conflicting redeclaration is
63
- * a hard error naming both source files.
64
- */
46
+ /** Definitions sharing a name must be identical; a conflicting one is a hard error. */
65
47
  export function validateAndBuildScopeDefinitionsMeta(definitions) {
66
48
  const meta = {};
67
49
  for (const def of definitions) {
@@ -1,3 +1,3 @@
1
- export { wireSecret } from './secret.types.js';
1
+ export { defineSecret } from './secret.types.js';
2
2
  export type { CoreSecret, OAuth2CredentialConfig, SecretDefinitionMeta, SecretDefinitionsMeta, SecretDefinitions, } from './secret.types.js';
3
3
  export { validateAndBuildSecretDefinitionsMeta } from './validate-secret-definitions.js';
@@ -1,2 +1,2 @@
1
- export { wireSecret } from './secret.types.js';
1
+ export { defineSecret } from './secret.types.js';
2
2
  export { validateAndBuildSecretDefinitionsMeta } from './validate-secret-definitions.js';
@@ -5,25 +5,29 @@ export type CoreSecret<T = unknown> = {
5
5
  secretId: string;
6
6
  schema: T;
7
7
  /**
8
- * Link to documentation explaining how to obtain this value — a provider's
9
- * API-key page, a setup guide, an internal runbook. Surfaced by consoles and
10
- * deploy UIs so a user facing a missing value has somewhere to go instead of
11
- * an opaque identifier.
8
+ * Where a user goes to obtain this value — a provider's API-key page, a setup
9
+ * guide, an internal runbook. Consoles and deploy UIs surface it beside a
10
+ * missing value. The same field on every credential/variable definition means
11
+ * the same thing.
12
12
  */
13
13
  docsUrl?: string;
14
+ /** Rotation cadence as a duration string, e.g. `'1d'`, `'30day'`, `'1w'`. */
15
+ rotationPeriod?: string;
14
16
  /**
15
- * Optional rotation cadence for this secret, e.g. '1d', '30day', '1w'.
16
- * Stored in the generated secrets metadata so consumers can tell when a
17
- * secret was last updated and whether it is due for rotation.
17
+ * Hosts this secret may be sent to, e.g. `['api.notion.com']` or
18
+ * `'*.notion.com'`. Omitted means unrestricted unless
19
+ * `config.secrets.requireAllowedHosts` is set.
18
20
  */
19
- rotationPeriod?: string;
21
+ allowedHosts?: string[];
20
22
  };
21
23
  export type OAuth2CredentialConfig = {
24
+ /** Where access/refresh tokens are stored */
22
25
  tokenSecretId: string;
23
26
  authorizationUrl: string;
24
27
  tokenUrl: string;
25
28
  scopes: string[];
26
29
  pkce?: boolean;
30
+ /** Appended to the authorization URL's query string. */
27
31
  additionalParams?: Record<string, string>;
28
32
  };
29
33
  export type SecretDefinitionMeta = {
@@ -32,17 +36,17 @@ export type SecretDefinitionMeta = {
32
36
  description?: string;
33
37
  secretId: string;
34
38
  schema?: Record<string, unknown> | string;
35
- /**
36
- * Link to documentation explaining how to obtain this value — a provider's
37
- * API-key page, a setup guide, an internal runbook. Surfaced by consoles and
38
- * deploy UIs so a user facing a missing value has somewhere to go instead of
39
- * an opaque identifier.
40
- */
41
39
  docsUrl?: string;
42
40
  oauth2?: OAuth2CredentialConfig;
43
41
  rotationPeriod?: string;
42
+ /**
43
+ * Hosts this secret may be sent to, e.g. `['api.notion.com']` or
44
+ * `'*.notion.com'`. Omitted means unrestricted unless
45
+ * `config.secrets.requireAllowedHosts` is set.
46
+ */
47
+ allowedHosts?: string[];
44
48
  sourceFile?: string;
45
49
  };
46
50
  export type SecretDefinitionsMeta = Record<string, SecretDefinitionMeta>;
47
51
  export type SecretDefinitions = SecretDefinitionMeta[];
48
- export declare const wireSecret: <T>(_config: CoreSecret<T>) => void;
52
+ export declare const defineSecret: <T>(_config: CoreSecret<T>) => void;
@@ -1 +1 @@
1
- export const wireSecret = (_config) => { };
1
+ export const defineSecret = (_config) => { };
@@ -1,6 +1,4 @@
1
1
  import type { SecretDefinitions, SecretDefinitionsMeta } from './secret.types.js';
2
- export interface SchemaRefLike {
3
- variableName: string;
4
- sourceFile: string;
5
- }
2
+ import type { SchemaRefLike } from '../../types/core.types.js';
3
+ export type { SchemaRefLike };
6
4
  export declare function validateAndBuildSecretDefinitionsMeta(definitions: SecretDefinitions, schemaLookup: Map<string, SchemaRefLike>): SecretDefinitionsMeta;
@@ -1,38 +1,11 @@
1
1
  import type { CoreTrigger, CoreTriggerSource, TriggerInstance } from './trigger.types.js';
2
- /**
3
- * Registers a trigger with the Pikku framework.
4
- * Declares a trigger name and its target pikku function.
5
- * Runs everywhere. Inspector extracts at build time.
6
- */
7
2
  export declare const wireTrigger: (trigger: CoreTrigger) => void;
8
- /**
9
- * Registers a trigger source with the Pikku framework.
10
- * Provides the actual subscription function and input data.
11
- * Only imported in the trigger worker process.
12
- */
13
3
  export declare const wireTriggerSource: <TInput = unknown, TOutput = unknown>(source: CoreTriggerSource<TInput, TOutput>) => void;
14
- /**
15
- * Parameters for setting up a trigger
16
- */
17
4
  export type SetupTriggerParams<TInput = unknown, TOutput = unknown> = {
18
5
  name: string;
19
6
  input?: TInput;
20
7
  onTrigger: (data: TOutput) => void | Promise<void>;
21
8
  };
22
- /**
23
- * Sets up a registered trigger and starts listening for events.
24
- * Returns a TriggerInstance with a teardown function.
25
- *
26
- * @param name - The trigger name (must be registered via wireTrigger)
27
- * @param input - The input to pass to the trigger function
28
- * @param onTrigger - Callback invoked when the trigger fires
29
- */
30
9
  export declare function setupTrigger<TInput = unknown, TOutput = unknown>({ name, input, onTrigger, }: SetupTriggerParams<TInput, TOutput>): Promise<TriggerInstance>;
31
- /**
32
- * Gets all registered triggers
33
- */
34
10
  export declare const getRegisteredTriggers: () => Map<string, CoreTrigger<any>>;
35
- /**
36
- * Gets trigger metadata
37
- */
38
11
  export declare const getTriggerMeta: () => import("./trigger.types.js").TriggerMeta;
@@ -1,11 +1,6 @@
1
1
  import { pikkuState, getSingletonServices, getCreateWireServices, } from '../../pikku-state.js';
2
2
  import { addFunction, runPikkuFunc } from '../../function/function-runner.js';
3
3
  import { PikkuMissingMetaError } from '../../errors/errors.js';
4
- /**
5
- * Registers a trigger with the Pikku framework.
6
- * Declares a trigger name and its target pikku function.
7
- * Runs everywhere. Inspector extracts at build time.
8
- */
9
4
  export const wireTrigger = (trigger) => {
10
5
  const meta = pikkuState(null, 'trigger', 'meta');
11
6
  const triggerMeta = meta[trigger.name];
@@ -17,11 +12,7 @@ export const wireTrigger = (trigger) => {
17
12
  const triggers = pikkuState(null, 'trigger', 'triggers');
18
13
  triggers.set(trigger.name, trigger);
19
14
  };
20
- /**
21
- * Registers a trigger source with the Pikku framework.
22
- * Provides the actual subscription function and input data.
23
- * Only imported in the trigger worker process.
24
- */
15
+ // knowledge: decisions/internals/trigger-declaration-is-split-from-trigger-source.md
25
16
  export const wireTriggerSource = (source) => {
26
17
  const sourceMeta = pikkuState(null, 'trigger', 'sourceMeta');
27
18
  const triggerSourceMeta = sourceMeta[source.name];
@@ -36,14 +27,6 @@ export const wireTriggerSource = (source) => {
36
27
  triggerSources.set(source.name, source);
37
28
  addFunction(triggerSourceMeta.pikkuFuncId, source.func, triggerSourceMeta.packageName);
38
29
  };
39
- /**
40
- * Sets up a registered trigger and starts listening for events.
41
- * Returns a TriggerInstance with a teardown function.
42
- *
43
- * @param name - The trigger name (must be registered via wireTrigger)
44
- * @param input - The input to pass to the trigger function
45
- * @param onTrigger - Callback invoked when the trigger fires
46
- */
47
30
  export async function setupTrigger({ name, input, onTrigger, }) {
48
31
  const singletonServices = getSingletonServices();
49
32
  const createWireServices = getCreateWireServices();
@@ -74,15 +57,9 @@ export async function setupTrigger({ name, input, onTrigger, }) {
74
57
  });
75
58
  return { name, teardown };
76
59
  }
77
- /**
78
- * Gets all registered triggers
79
- */
80
60
  export const getRegisteredTriggers = () => {
81
61
  return pikkuState(null, 'trigger', 'triggers');
82
62
  };
83
- /**
84
- * Gets trigger metadata
85
- */
86
63
  export const getTriggerMeta = () => {
87
64
  return pikkuState(null, 'trigger', 'meta');
88
65
  };
@@ -1,16 +1,9 @@
1
1
  import type { CommonWireMeta, CoreSingletonServices } from '../../types/core.types.js';
2
2
  import type { StandardSchemaV1 } from '@standard-schema/spec';
3
3
  import type { CoreNodeConfig } from '../node/node.types.js';
4
- /**
5
- * The trigger interaction object passed to trigger functions via the wire.
6
- * Call trigger() to fire the trigger and start a new workflow/execution.
7
- */
8
4
  export interface PikkuTrigger<TOutput = unknown> {
9
5
  invoke: (data: TOutput) => void;
10
6
  }
11
- /**
12
- * Metadata for registered triggers stored in state.
13
- */
14
7
  export type TriggerMeta = Record<string, CommonWireMeta & {
15
8
  name: string;
16
9
  }>;
@@ -19,109 +12,35 @@ export type TriggerSourceMeta = Record<string, {
19
12
  pikkuFuncId: string;
20
13
  packageName?: string;
21
14
  }>;
22
- /**
23
- * A trigger function that sets up a subscription and returns a teardown function.
24
- * The trigger is fired via wire.trigger.invoke(data).
25
- *
26
- * @template TInput - Input type (configuration passed when wired)
27
- * @template TOutput - Output type produced when trigger fires
28
- * @template Services - Services available to the trigger
29
- */
30
15
  export type CorePikkuTriggerFunction<TInput = unknown, TOutput = unknown, Services extends CoreSingletonServices = CoreSingletonServices> = (services: Services, input: TInput, wire: {
31
16
  trigger: {
32
17
  invoke: (data: TOutput) => void;
33
18
  };
34
19
  }) => Promise<() => void | Promise<void>>;
35
- /**
36
- * Configuration object for creating a trigger function with metadata
37
- */
38
20
  export type CorePikkuTriggerFunctionConfig<TInput = unknown, TOutput = unknown, Services extends CoreSingletonServices = CoreSingletonServices, InputSchema extends StandardSchemaV1 | undefined = undefined, OutputSchema extends StandardSchemaV1 | undefined = undefined> = {
39
- /** Optional human-readable title for the trigger */
40
21
  title?: string;
41
- /** Optional description of what the trigger does */
42
22
  description?: string;
43
- /** Optional tags for categorization */
44
23
  tags?: string[];
45
- /** The trigger function */
46
24
  func: CorePikkuTriggerFunction<TInput, TOutput, Services>;
47
- /** Optional Zod schema for input validation */
48
25
  input?: InputSchema;
49
- /** Optional Zod schema for output validation */
50
26
  output?: OutputSchema;
51
- /** Optional node configuration */
52
27
  node?: CoreNodeConfig;
53
28
  };
54
- /**
55
- * Factory function for creating trigger functions
56
- * Supports both direct function and configuration object syntax
57
- *
58
- * @example
59
- * ```typescript
60
- * // Direct function syntax
61
- * export const redisSubscribeTrigger = pikkuTriggerFunc<
62
- * { channel: string },
63
- * { message: string }
64
- * >(async ({ redis }, { channel }, { trigger }) => {
65
- * const subscriber = redis.duplicate()
66
- * await subscriber.subscribe(channel, (msg) => {
67
- * trigger.invoke({ message: msg })
68
- * })
69
- * return () => subscriber.unsubscribe()
70
- * })
71
- *
72
- * // Configuration object syntax with metadata
73
- * export const redisSubscribeTrigger = pikkuTriggerFunc({
74
- * title: 'Redis Subscribe Trigger',
75
- * description: 'Listens to Redis pub/sub channel',
76
- * input: z.object({ channel: z.string() }),
77
- * output: z.object({ message: z.string() }),
78
- * func: async ({ redis }, { channel }, { trigger }) => {
79
- * const subscriber = redis.duplicate()
80
- * await subscriber.subscribe(channel, (msg) => {
81
- * trigger.invoke({ message: msg })
82
- * })
83
- * return () => subscriber.unsubscribe()
84
- * }
85
- * })
86
- * ```
87
- */
88
29
  export declare const pikkuTriggerFunc: <TInput = unknown, TOutput = unknown, Services extends CoreSingletonServices = CoreSingletonServices, InputSchema extends StandardSchemaV1 | undefined = undefined, OutputSchema extends StandardSchemaV1 | undefined = undefined>(triggerOrConfig: CorePikkuTriggerFunction<TInput, TOutput, Services> | CorePikkuTriggerFunctionConfig<TInput, TOutput, Services, InputSchema, OutputSchema>) => CorePikkuTriggerFunctionConfig<TInput, TOutput, Services, InputSchema, OutputSchema>;
89
- /**
90
- * Core trigger definition for registration.
91
- *
92
- * @template TInput - Input type (configuration passed when wired)
93
- * @template TOutput - Output type
94
- */
95
30
  export interface CoreTrigger<PikkuFunctionConfig = any> {
96
- /** Unique name for this trigger */
97
31
  name: string;
98
- /** The target RPC function to invoke when the trigger fires */
99
32
  func: PikkuFunctionConfig;
100
- /** Optional description */
101
33
  description?: string;
102
- /** Optional tags for categorization */
103
34
  tags?: string[];
104
- /** Whether this trigger is used by a graph workflow */
105
35
  graph?: true;
106
36
  }
107
- /**
108
- * Represents a trigger instance with teardown capability
109
- */
110
37
  export interface TriggerInstance {
111
38
  name: string;
112
39
  teardown: () => void | Promise<void>;
113
40
  }
114
- /**
115
- * A trigger source that provides the subscription function.
116
- * Only imported in the trigger worker process.
117
- *
118
- * @template TInput - Input type passed to the trigger function
119
- * @template TOutput - Output type produced when trigger fires
120
- */
121
41
  export type CoreTriggerSource<TInput = unknown, TOutput = unknown> = {
122
- /** Must match a wireTrigger name */
42
+ /** Must match the name of a `wireTrigger` registration. */
123
43
  name: string;
124
- /** The trigger function config that sets up the subscription */
125
44
  func: CorePikkuTriggerFunctionConfig<TInput, TOutput, CoreSingletonServices, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined>;
126
45
  } & (unknown extends TInput ? {
127
46
  input?: TInput;
@@ -1,37 +1,3 @@
1
- /**
2
- * Factory function for creating trigger functions
3
- * Supports both direct function and configuration object syntax
4
- *
5
- * @example
6
- * ```typescript
7
- * // Direct function syntax
8
- * export const redisSubscribeTrigger = pikkuTriggerFunc<
9
- * { channel: string },
10
- * { message: string }
11
- * >(async ({ redis }, { channel }, { trigger }) => {
12
- * const subscriber = redis.duplicate()
13
- * await subscriber.subscribe(channel, (msg) => {
14
- * trigger.invoke({ message: msg })
15
- * })
16
- * return () => subscriber.unsubscribe()
17
- * })
18
- *
19
- * // Configuration object syntax with metadata
20
- * export const redisSubscribeTrigger = pikkuTriggerFunc({
21
- * title: 'Redis Subscribe Trigger',
22
- * description: 'Listens to Redis pub/sub channel',
23
- * input: z.object({ channel: z.string() }),
24
- * output: z.object({ message: z.string() }),
25
- * func: async ({ redis }, { channel }, { trigger }) => {
26
- * const subscriber = redis.duplicate()
27
- * await subscriber.subscribe(channel, (msg) => {
28
- * trigger.invoke({ message: msg })
29
- * })
30
- * return () => subscriber.unsubscribe()
31
- * }
32
- * })
33
- * ```
34
- */
35
1
  export const pikkuTriggerFunc = (triggerOrConfig) => {
36
2
  if (typeof triggerOrConfig === 'function') {
37
3
  return { func: triggerOrConfig };
@@ -1,3 +1,3 @@
1
- export { wireVariable } from './variable.types.js';
1
+ export { defineVariable } from './variable.types.js';
2
2
  export type { CoreVariable, VariableDefinitionMeta, VariableDefinitionsMeta, VariableDefinitions, } from './variable.types.js';
3
3
  export { validateAndBuildVariableDefinitionsMeta } from './validate-variable-definitions.js';
@@ -1,2 +1,2 @@
1
- export { wireVariable } from './variable.types.js';
1
+ export { defineVariable } from './variable.types.js';
2
2
  export { validateAndBuildVariableDefinitionsMeta } from './validate-variable-definitions.js';
@@ -1,6 +1,4 @@
1
1
  import type { VariableDefinitions, VariableDefinitionsMeta } from './variable.types.js';
2
- export interface SchemaRefLike {
3
- variableName: string;
4
- sourceFile: string;
5
- }
2
+ import type { SchemaRefLike } from '../../types/core.types.js';
3
+ export type { SchemaRefLike };
6
4
  export declare function validateAndBuildVariableDefinitionsMeta(definitions: VariableDefinitions, schemaLookup: Map<string, SchemaRefLike>): VariableDefinitionsMeta;
@@ -4,12 +4,6 @@ export type CoreVariable<T = unknown> = {
4
4
  description?: string;
5
5
  variableId: string;
6
6
  schema: T;
7
- /**
8
- * Link to documentation explaining how to obtain this value — a provider's
9
- * API-key page, a setup guide, an internal runbook. Surfaced by consoles and
10
- * deploy UIs so a user facing a missing value has somewhere to go instead of
11
- * an opaque identifier.
12
- */
13
7
  docsUrl?: string;
14
8
  };
15
9
  export type VariableDefinitionMeta = {
@@ -18,15 +12,9 @@ export type VariableDefinitionMeta = {
18
12
  description?: string;
19
13
  variableId: string;
20
14
  schema?: Record<string, unknown> | string;
21
- /**
22
- * Link to documentation explaining how to obtain this value — a provider's
23
- * API-key page, a setup guide, an internal runbook. Surfaced by consoles and
24
- * deploy UIs so a user facing a missing value has somewhere to go instead of
25
- * an opaque identifier.
26
- */
27
15
  docsUrl?: string;
28
16
  sourceFile?: string;
29
17
  };
30
18
  export type VariableDefinitionsMeta = Record<string, VariableDefinitionMeta>;
31
19
  export type VariableDefinitions = VariableDefinitionMeta[];
32
- export declare const wireVariable: <T>(_config: CoreVariable<T>) => void;
20
+ export declare const defineVariable: <T>(_config: CoreVariable<T>) => void;
@@ -1 +1 @@
1
- export const wireVariable = (_config) => { };
1
+ export const defineVariable = (_config) => { };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Virtual user module exports.
3
+ *
4
+ * A virtual user is an LLM playing a persona that signs into a *running* stage
5
+ * and works its API in character — non-deterministically, with a budget, and
6
+ * with oracles watching what comes back. It is not a test runner: nothing here
7
+ * asserts an expected outcome, because the point is the outcomes nobody thought
8
+ * to expect.
9
+ *
10
+ * Everything it needs is derived from what a pikku project already generates —
11
+ * the function meta becomes the catalogue, the scenario meta becomes the
12
+ * intents, the declared personas become the identities — so adopting it is
13
+ * configuration rather than authoring.
14
+ *
15
+ * The engine is transport-agnostic: the virtual user drives an
16
+ * {@link VirtualUserTarget}, which in production is an `HttpPersona`
17
+ * signed in as a real user against staging or production.
18
+ */
19
+ export type { ApiCatalogueEntry, IntentRecord, IntentSource, IntentStatus, StepRecord, VirtualUserAction, VirtualUserBudget, VirtualUserDisposition, VirtualUserFinding, VirtualUserFindingKind, VirtualUserRunResult, VirtualUserTally, VirtualUserTarget, } from './virtual-user.types.js';
20
+ export { runVirtualUser, rememberIds, type RunVirtualUserParams, type VirtualUserCallContext, } from './run-virtual-user.js';
21
+ export { DISPOSITIONS, dispositionProfile, type DispositionProfile, type VirtualUserTuning, } from './virtual-user-dispositions.js';
22
+ export { catalogueClassification, catalogueIndex, catalogueLookup, describeEntry, isReadOnly, reachableCatalogue, renderCatalogue, unreachableCatalogue, } from './virtual-user-catalogue.js';
23
+ export { reachableAgents, type AgentReachability, type ReachableAgent, } from './virtual-user-agents.js';
24
+ export { IntentStack, intentsForPersona, type IntentMove, type ScheduledTick, } from './virtual-user-intents.js';
25
+ export { createRng, type VirtualUserRng } from './virtual-user-rng.js';
26
+ export { deriveCatalogue, deriveIntents, type SchemaMap, } from './virtual-user-derive.js';
27
+ export { personaVirtualUserTarget, type PersonaTargetOptions, } from './virtual-user-target.js';
@@ -0,0 +1,8 @@
1
+ export { runVirtualUser, rememberIds, } from './run-virtual-user.js';
2
+ export { DISPOSITIONS, dispositionProfile, } from './virtual-user-dispositions.js';
3
+ export { catalogueClassification, catalogueIndex, catalogueLookup, describeEntry, isReadOnly, reachableCatalogue, renderCatalogue, unreachableCatalogue, } from './virtual-user-catalogue.js';
4
+ export { reachableAgents, } from './virtual-user-agents.js';
5
+ export { IntentStack, intentsForPersona, } from './virtual-user-intents.js';
6
+ export { createRng } from './virtual-user-rng.js';
7
+ export { deriveCatalogue, deriveIntents, } from './virtual-user-derive.js';
8
+ export { personaVirtualUserTarget, } from './virtual-user-target.js';
@@ -0,0 +1,92 @@
1
+ import type { ResolvedPersona } from '../../services/personas-service.js';
2
+ import type { ActorLLM } from '../actor-flow/run-conversation.js';
3
+ import { type VirtualUserTuning } from './virtual-user-dispositions.js';
4
+ import type { ApiCatalogueEntry, IntentSource, VirtualUserBudget, VirtualUserDisposition, VirtualUserFinding, VirtualUserRunResult, VirtualUserTally, VirtualUserTarget } from './virtual-user.types.js';
5
+ /** What an app-specific oracle is shown about one call. */
6
+ export interface VirtualUserCallContext {
7
+ rpcName: string;
8
+ args: unknown;
9
+ status: number;
10
+ ok: boolean;
11
+ body: unknown;
12
+ intentId?: string;
13
+ step: number;
14
+ disposition: VirtualUserDisposition;
15
+ }
16
+ export interface RunVirtualUserParams {
17
+ /** The person being run — name, job title, personality, goals. */
18
+ persona: ResolvedPersona;
19
+ /** The id they were declared under, as the intent sources refer to them. */
20
+ personaId: string;
21
+ /** How it behaves. Default `realistic`. */
22
+ disposition?: VirtualUserDisposition;
23
+ /** Per-user overrides for that disposition's dials. */
24
+ tuning?: VirtualUserTuning;
25
+ /** Every RPC the app exposes. Narrowed internally; nothing is hidden by default. */
26
+ catalogue: readonly ApiCatalogueEntry[];
27
+ /** Features and scenarios in the app's own words — never their step graphs. */
28
+ intents: readonly IntentSource[];
29
+ /** Extra goals in the user's own words, run alongside the derived intents. */
30
+ goals?: readonly string[];
31
+ /** The transport it acts through. */
32
+ target: VirtualUserTarget;
33
+ /** The user's own LLM. */
34
+ llm: ActorLLM;
35
+ model: string;
36
+ budget?: VirtualUserBudget;
37
+ /**
38
+ * The app's own stopping rule, given the running tally. Pikku counts steps,
39
+ * calls, mutations and tokens because only the engine sees them; what they
40
+ * cost is the app's to decide, which is why no price appears in core.
41
+ */
42
+ stop?: (tally: VirtualUserTally) => boolean | Promise<boolean>;
43
+ /** Fixed seed, so a run replays into the same finding. */
44
+ seed?: number;
45
+ /**
46
+ * Check a response against the RPC's own output schema. Supplied by the CLI
47
+ * from generated schemas; a mismatch means the contract and the implementation
48
+ * disagree, which nothing else in a normal test suite looks for.
49
+ */
50
+ validateOutput?: (rpcName: string, body: unknown) => string | null;
51
+ /** App-specific oracle — ownership, invariants, anything core cannot know. */
52
+ classify?: (context: VirtualUserCallContext) => VirtualUserFinding[] | null | undefined;
53
+ /** Files this user may upload. */
54
+ fixtures?: readonly string[];
55
+ /** Agents it may talk to. */
56
+ agents?: readonly {
57
+ name: string;
58
+ description?: string;
59
+ }[];
60
+ /** Ids and slugs remembered from an earlier run, for a `stale` user. */
61
+ memory?: Record<string, string>;
62
+ /**
63
+ * The scopes this persona actually holds, resolved from its roles at sign-in.
64
+ *
65
+ * Used two ways: to narrow a large catalogue to what it is entitled to reach,
66
+ * and as an oracle — a call whose scopes it does not hold that nonetheless
67
+ * succeeds is authorization drift.
68
+ */
69
+ scopes?: readonly string[];
70
+ /**
71
+ * Offer the endpoints the app marked as needing a human's approval. Off by
72
+ * default: those are the ones that spend money and move real traffic.
73
+ */
74
+ allowApprovalRequired?: boolean;
75
+ maxStepsPerIntent?: number;
76
+ }
77
+ /**
78
+ * Pull identifiers out of a response so later intents can refer to them.
79
+ *
80
+ * This is what makes a run cohesive without ever handing the user a dataflow
81
+ * map: it discovers that a project has an id by looking at one, the same way a
82
+ * person reads it off the screen.
83
+ */
84
+ export declare const rememberIds: (body: unknown, into: Record<string, string>, depth?: number) => Record<string, string>;
85
+ /**
86
+ * Run one virtual user against a live target until its budget runs out.
87
+ *
88
+ * The engine schedules which intent is live and the model decides what to do
89
+ * within it — that split is what lets a run be replayed from its seed while the
90
+ * work inside it stays genuinely open-ended.
91
+ */
92
+ export declare const runVirtualUser: (params: RunVirtualUserParams) => Promise<VirtualUserRunResult>;