@pikku/core 0.12.83 → 0.12.86

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 (661) hide show
  1. package/CHANGELOG.md +492 -0
  2. package/README.md +1 -1
  3. package/dist/bootstrap-compat/root.d.ts +20 -0
  4. package/dist/classification/column-form.d.ts +32 -0
  5. package/dist/classification/column-form.js +42 -0
  6. package/dist/classification/data-classification.d.ts +64 -0
  7. package/dist/classification/index.d.ts +13 -0
  8. package/dist/classification/index.js +2 -0
  9. package/dist/classification/secret-value.d.ts +56 -0
  10. package/dist/classification/secret-value.js +46 -0
  11. package/dist/crypto-utils.d.ts +1 -1
  12. package/dist/ecosystem/agent-scorer.d.ts +12 -0
  13. package/dist/ecosystem/agent-scorer.js +5 -0
  14. package/dist/ecosystem/agent.d.ts +21 -0
  15. package/dist/ecosystem/agent.js +6 -0
  16. package/dist/ecosystem/channel/local.d.ts +3 -0
  17. package/dist/ecosystem/channel/local.js +3 -0
  18. package/dist/ecosystem/channel/serverless.d.ts +9 -0
  19. package/dist/ecosystem/channel/serverless.js +1 -0
  20. package/dist/ecosystem/channel.d.ts +15 -0
  21. package/dist/ecosystem/channel.js +5 -0
  22. package/dist/ecosystem/cli/channel.d.ts +16 -0
  23. package/dist/ecosystem/cli/channel.js +2 -0
  24. package/dist/ecosystem/cli.d.ts +9 -0
  25. package/dist/ecosystem/cli.js +2 -0
  26. package/dist/ecosystem/credential.d.ts +10 -0
  27. package/dist/ecosystem/credential.js +1 -0
  28. package/dist/ecosystem/crypto-utils.d.ts +8 -0
  29. package/dist/ecosystem/crypto-utils.js +1 -0
  30. package/dist/ecosystem/dev.d.ts +9 -0
  31. package/dist/ecosystem/dev.js +2 -0
  32. package/dist/ecosystem/errors.d.ts +8 -0
  33. package/dist/ecosystem/errors.js +2 -0
  34. package/dist/ecosystem/function.d.ts +13 -0
  35. package/dist/ecosystem/function.js +2 -0
  36. package/dist/ecosystem/gateway.d.ts +1 -0
  37. package/dist/ecosystem/hmac.d.ts +1 -0
  38. package/dist/ecosystem/hmac.js +1 -0
  39. package/dist/ecosystem/http.d.ts +13 -0
  40. package/dist/ecosystem/http.js +5 -0
  41. package/dist/ecosystem/mcp.d.ts +3 -0
  42. package/dist/ecosystem/mcp.js +2 -0
  43. package/dist/ecosystem/middleware.d.ts +18 -0
  44. package/dist/ecosystem/middleware.js +7 -0
  45. package/dist/ecosystem/node-host-resolver.d.ts +1 -0
  46. package/dist/ecosystem/node-host-resolver.js +1 -0
  47. package/dist/ecosystem/node.d.ts +1 -0
  48. package/dist/ecosystem/oauth2.d.ts +1 -0
  49. package/dist/ecosystem/oauth2.js +1 -0
  50. package/dist/ecosystem/persona.d.ts +17 -0
  51. package/dist/ecosystem/persona.js +5 -0
  52. package/dist/ecosystem/queue.d.ts +13 -0
  53. package/dist/ecosystem/queue.js +4 -0
  54. package/dist/ecosystem/remote.d.ts +8 -0
  55. package/dist/ecosystem/remote.js +1 -0
  56. package/dist/ecosystem/role.d.ts +4 -0
  57. package/dist/ecosystem/role.js +2 -0
  58. package/dist/ecosystem/rpc.d.ts +6 -0
  59. package/dist/ecosystem/rpc.js +3 -0
  60. package/dist/ecosystem/safe-fetch.d.ts +7 -0
  61. package/dist/ecosystem/safe-fetch.js +1 -0
  62. package/dist/ecosystem/scenario.d.ts +21 -0
  63. package/dist/ecosystem/scenario.js +8 -0
  64. package/dist/ecosystem/scheduler.d.ts +3 -0
  65. package/dist/ecosystem/scheduler.js +2 -0
  66. package/dist/ecosystem/schema.d.ts +2 -0
  67. package/dist/ecosystem/schema.js +1 -0
  68. package/dist/ecosystem/scope.d.ts +5 -0
  69. package/dist/ecosystem/scope.js +3 -0
  70. package/dist/ecosystem/secret.d.ts +11 -0
  71. package/dist/ecosystem/secret.js +2 -0
  72. package/dist/ecosystem/services/istanbul-coverage.d.ts +1 -0
  73. package/dist/ecosystem/services/istanbul-coverage.js +1 -0
  74. package/dist/ecosystem/services/local-content-request-handler.d.ts +9 -0
  75. package/dist/ecosystem/services/local-content-request-handler.js +1 -0
  76. package/dist/ecosystem/services/local-content.d.ts +2 -0
  77. package/dist/ecosystem/services/local-content.js +1 -0
  78. package/dist/ecosystem/services/local-meta.d.ts +1 -0
  79. package/dist/ecosystem/services/local-meta.js +1 -0
  80. package/dist/ecosystem/services/v8-coverage.d.ts +1 -0
  81. package/dist/ecosystem/services/v8-coverage.js +1 -0
  82. package/dist/ecosystem/services.d.ts +36 -0
  83. package/dist/ecosystem/services.js +12 -0
  84. package/dist/ecosystem/testing.d.ts +7 -0
  85. package/dist/ecosystem/testing.js +1 -0
  86. package/dist/ecosystem/trigger.d.ts +2 -0
  87. package/dist/ecosystem/trigger.js +1 -0
  88. package/dist/ecosystem/types.d.ts +12 -0
  89. package/dist/ecosystem/types.js +6 -0
  90. package/dist/ecosystem/variable.d.ts +9 -0
  91. package/dist/ecosystem/variable.js +1 -0
  92. package/dist/ecosystem/virtual-user.d.ts +24 -0
  93. package/dist/ecosystem/virtual-user.js +8 -0
  94. package/dist/ecosystem/workflow.d.ts +20 -0
  95. package/dist/ecosystem/workflow.js +6 -0
  96. package/dist/errors/index.d.ts +8 -0
  97. package/dist/errors/index.js +1 -0
  98. package/dist/errors/serialized-error.d.ts +7 -0
  99. package/dist/errors/serialized-error.js +1 -0
  100. package/dist/function/function-meta.types.d.ts +139 -0
  101. package/dist/function/function-meta.types.js +1 -0
  102. package/dist/function/function-runner.d.ts +3 -2
  103. package/dist/function/function-runner.js +31 -11
  104. package/dist/function/functions.types.d.ts +10 -2
  105. package/dist/function/index.d.ts +8 -2
  106. package/dist/function/index.js +4 -1
  107. package/dist/function/pikku-request.d.ts +8 -0
  108. package/dist/function/pikku-request.js +15 -0
  109. package/dist/index.d.ts +8 -8
  110. package/dist/index.js +3 -3
  111. package/dist/middleware/auth-apikey.d.ts +2 -10
  112. package/dist/middleware/auth-apikey.js +1 -1
  113. package/dist/middleware/auth-bearer.d.ts +2 -10
  114. package/dist/middleware/auth-bearer.js +1 -1
  115. package/dist/middleware/auth-cookie.d.ts +2 -10
  116. package/dist/middleware/auth-cookie.js +1 -1
  117. package/dist/middleware/cors.d.ts +5 -11
  118. package/dist/middleware/cors.js +13 -6
  119. package/dist/middleware/index.d.ts +3 -0
  120. package/dist/middleware/index.js +1 -0
  121. package/dist/middleware/middleware-factories.d.ts +9 -0
  122. package/dist/middleware/middleware-factories.js +19 -0
  123. package/dist/middleware/middleware.types.d.ts +27 -0
  124. package/dist/middleware/middleware.types.js +1 -0
  125. package/dist/middleware/remote-auth.d.ts +1 -1
  126. package/dist/middleware/remote-auth.js +1 -1
  127. package/dist/middleware/telemetry.d.ts +4 -20
  128. package/dist/middleware/telemetry.js +1 -1
  129. package/dist/middleware-runner.d.ts +2 -1
  130. package/dist/pikku-state.d.ts +2 -1
  131. package/dist/services/{ai-run-state-service.d.ts → agent-run-state-service.d.ts} +5 -5
  132. package/dist/services/agent-run-state-service.js +1 -0
  133. package/dist/services/{ai-agent-runner-service.d.ts → agent-runner-service.d.ts} +12 -12
  134. package/dist/services/agent-runner-service.js +1 -0
  135. package/dist/services/{ai-storage-service.d.ts → agent-storage-service.d.ts} +7 -7
  136. package/dist/services/agent-storage-service.js +1 -0
  137. package/dist/services/audit-service.d.ts +1 -1
  138. package/dist/services/credential-wire-service.js +1 -1
  139. package/dist/services/email-service.d.ts +1 -1
  140. package/dist/services/file-scenario-run-store.d.ts +58 -0
  141. package/dist/services/file-scenario-run-store.js +214 -0
  142. package/dist/services/http-personas.d.ts +1 -1
  143. package/dist/services/http-personas.js +3 -3
  144. package/dist/services/{in-memory-ai-run-state-service.d.ts → in-memory-agent-run-state-service.d.ts} +5 -5
  145. package/dist/services/{in-memory-ai-run-state-service.js → in-memory-agent-run-state-service.js} +1 -1
  146. package/dist/services/in-memory-workflow-service.d.ts +1 -1
  147. package/dist/services/index.d.ts +9 -5
  148. package/dist/services/index.js +4 -1
  149. package/dist/services/local-secrets.d.ts +1 -1
  150. package/dist/services/local-secrets.js +1 -1
  151. package/dist/services/logger.d.ts +7 -7
  152. package/dist/services/meta-service.d.ts +5 -4
  153. package/dist/services/scoped-secret-service.d.ts +1 -1
  154. package/dist/services/secret-service.d.ts +1 -1
  155. package/dist/services/typed-secret-service.d.ts +16 -2
  156. package/dist/services/typed-secret-service.js +5 -0
  157. package/dist/services/webhook-service.d.ts +1 -1
  158. package/dist/services/workflow-service.d.ts +2 -1
  159. package/dist/testing/index.d.ts +1 -0
  160. package/dist/testing/index.js +1 -0
  161. package/dist/testing/service-tests/agent-run-service-tests.d.ts +1 -1
  162. package/dist/testing/service-tests/agent-run-service-tests.js +3 -3
  163. package/dist/testing/service-tests/agent-storage-service-tests.d.ts +3 -0
  164. package/dist/testing/service-tests/{ai-storage-service-tests.js → agent-storage-service-tests.js} +4 -4
  165. package/dist/testing/service-tests.d.ts +4 -4
  166. package/dist/testing/service-tests.js +4 -4
  167. package/dist/types/core.types.d.ts +37 -187
  168. package/dist/types/core.types.js +1 -19
  169. package/dist/types/index.d.ts +2 -0
  170. package/dist/types/index.js +1 -0
  171. package/dist/types/state.types.d.ts +8 -6
  172. package/dist/utils.d.ts +13 -0
  173. package/dist/utils.js +2 -0
  174. package/dist/wirings/actor-flow/run-conversation.d.ts +2 -2
  175. package/dist/wirings/addon/addon-runner.d.ts +17 -0
  176. package/dist/wirings/addon/addon-runner.js +150 -0
  177. package/dist/wirings/addon/index.d.ts +6 -0
  178. package/dist/wirings/addon/index.js +3 -0
  179. package/dist/wirings/addon/remote-addon-auth.d.ts +16 -0
  180. package/dist/wirings/addon/remote-addon-auth.js +39 -0
  181. package/dist/wirings/addon/wire-addon.d.ts +80 -0
  182. package/dist/wirings/addon/wire-addon.js +120 -0
  183. package/dist/wirings/addon/wire-remote-addon.d.ts +22 -0
  184. package/dist/wirings/addon/wire-remote-addon.js +11 -0
  185. package/dist/wirings/{ai-agent/ai-agent-agui.d.ts → agent/agent-agui.d.ts} +2 -2
  186. package/dist/wirings/{ai-agent/ai-agent-agui.js → agent/agent-agui.js} +1 -1
  187. package/dist/wirings/{ai-agent/ai-agent-finalize.d.ts → agent/agent-finalize.d.ts} +10 -10
  188. package/dist/wirings/{ai-agent/ai-agent-finalize.js → agent/agent-finalize.js} +7 -7
  189. package/dist/wirings/{ai-agent/ai-agent-helpers.d.ts → agent/agent-helpers.d.ts} +1 -1
  190. package/dist/wirings/{ai-agent/ai-agent-interrupt.d.ts → agent/agent-interrupt.d.ts} +4 -4
  191. package/dist/wirings/{ai-agent/ai-agent-interrupt.js → agent/agent-interrupt.js} +2 -2
  192. package/dist/wirings/{ai-agent/ai-agent-memory.d.ts → agent/agent-memory.d.ts} +14 -14
  193. package/dist/wirings/{ai-agent/ai-agent-memory.js → agent/agent-memory.js} +1 -1
  194. package/dist/wirings/{ai-agent/ai-agent-model-config.js → agent/agent-model-config.js} +1 -1
  195. package/dist/wirings/{ai-agent/ai-agent-prepare.d.ts → agent/agent-prepare.d.ts} +24 -24
  196. package/dist/wirings/{ai-agent/ai-agent-prepare.js → agent/agent-prepare.js} +17 -17
  197. package/dist/wirings/agent/agent-registry.d.ts +16 -0
  198. package/dist/wirings/{ai-agent/ai-agent-registry.js → agent/agent-registry.js} +9 -9
  199. package/dist/wirings/{ai-agent → agent}/agent-rpc.js +8 -8
  200. package/dist/wirings/agent/agent-runner.d.ts +7 -0
  201. package/dist/wirings/{ai-agent/ai-agent-runner.js → agent/agent-runner.js} +49 -50
  202. package/dist/wirings/{ai-agent/ai-agent-stream.d.ts → agent/agent-stream.d.ts} +15 -15
  203. package/dist/wirings/{ai-agent/ai-agent-stream.js → agent/agent-stream.js} +78 -78
  204. package/dist/wirings/{ai-agent/ai-agent-turn.d.ts → agent/agent-turn.d.ts} +5 -5
  205. package/dist/wirings/{ai-agent/ai-agent-turn.js → agent/agent-turn.js} +4 -4
  206. package/dist/wirings/agent/agent-utils.d.ts +14 -0
  207. package/dist/wirings/agent/agent-utils.js +17 -0
  208. package/dist/wirings/{ai-agent/ai-agent.types.d.ts → agent/agent.types.d.ts} +47 -46
  209. package/dist/wirings/agent/agent.types.js +1 -0
  210. package/dist/wirings/agent/index.d.ts +12 -0
  211. package/dist/wirings/agent/index.js +10 -0
  212. package/dist/wirings/{ai-agent → agent}/voice-input.d.ts +1 -1
  213. package/dist/wirings/{ai-agent → agent}/voice-input.js +5 -5
  214. package/dist/wirings/{ai-agent → agent}/voice-output.d.ts +2 -3
  215. package/dist/wirings/{ai-agent → agent}/voice-output.js +8 -8
  216. package/dist/wirings/{ai-scorer/ai-scorer-grade.d.ts → agent-scorer/agent-scorer-grade.d.ts} +3 -3
  217. package/dist/wirings/{ai-scorer/ai-scorer-grade.js → agent-scorer/agent-scorer-grade.js} +6 -6
  218. package/dist/wirings/agent-scorer/agent-scorer-judge.d.ts +30 -0
  219. package/dist/wirings/{ai-scorer/ai-scorer-judge.js → agent-scorer/agent-scorer-judge.js} +57 -5
  220. package/dist/wirings/{ai-scorer/ai-scorer-live.d.ts → agent-scorer/agent-scorer-live.d.ts} +1 -1
  221. package/dist/wirings/{ai-scorer/ai-scorer-live.js → agent-scorer/agent-scorer-live.js} +3 -3
  222. package/dist/wirings/{ai-scorer/ai-scorer-registry.d.ts → agent-scorer/agent-scorer-registry.d.ts} +6 -6
  223. package/dist/wirings/{ai-scorer/ai-scorer-registry.js → agent-scorer/agent-scorer-registry.js} +4 -4
  224. package/dist/wirings/{ai-scorer/ai-scorer-snapshots.d.ts → agent-scorer/agent-scorer-snapshots.d.ts} +1 -1
  225. package/dist/wirings/{ai-scorer/ai-scorer-worker.d.ts → agent-scorer/agent-scorer-worker.d.ts} +3 -3
  226. package/dist/wirings/{ai-scorer/ai-scorer-worker.js → agent-scorer/agent-scorer-worker.js} +9 -7
  227. package/dist/wirings/{ai-scorer/ai-scorer.d.ts → agent-scorer/agent-scorer.d.ts} +12 -6
  228. package/dist/wirings/{ai-scorer/ai-scorer.js → agent-scorer/agent-scorer.js} +4 -3
  229. package/dist/wirings/{ai-scorer/ai-scorer.types.d.ts → agent-scorer/agent-scorer.types.d.ts} +24 -4
  230. package/dist/wirings/agent-scorer/agent-scorer.types.js +4 -0
  231. package/dist/wirings/agent-scorer/index.d.ts +6 -0
  232. package/dist/wirings/agent-scorer/index.js +5 -0
  233. package/dist/wirings/channel/channel-common.d.ts +2 -1
  234. package/dist/wirings/channel/channel-middleware-runner.d.ts +2 -1
  235. package/dist/wirings/channel/channel-rpc.types.d.ts +2 -2
  236. package/dist/wirings/channel/channel.types.d.ts +1 -1
  237. package/dist/wirings/channel/serverless/index.d.ts +1 -0
  238. package/dist/wirings/cli/channel/index.d.ts +1 -1
  239. package/dist/wirings/cli/cli-runner.d.ts +2 -1
  240. package/dist/wirings/cli/cli-runner.js +4 -1
  241. package/dist/wirings/cli/cli.types.d.ts +21 -2
  242. package/dist/wirings/cli/command-parser.js +157 -23
  243. package/dist/wirings/gateway/gateway.types.d.ts +2 -1
  244. package/dist/wirings/http/http-runner.d.ts +1 -1
  245. package/dist/wirings/http/http-runner.js +1 -1
  246. package/dist/wirings/http/http.types.d.ts +2 -2
  247. package/dist/wirings/http/index.d.ts +1 -0
  248. package/dist/wirings/http/index.js +1 -0
  249. package/dist/wirings/http/pikku-fetch-http-request.js +1 -1
  250. package/dist/wirings/http/pikku-fetch-http-response.js +2 -2
  251. package/dist/wirings/mcp/mcp.types.d.ts +1 -1
  252. package/dist/wirings/persona/index.d.ts +1 -1
  253. package/dist/wirings/persona/index.js +1 -1
  254. package/dist/wirings/persona/persona.types.d.ts +14 -0
  255. package/dist/wirings/queue/queue.types.d.ts +1 -1
  256. package/dist/wirings/queue/signed-queue-service.d.ts +1 -1
  257. package/dist/wirings/rpc/index.d.ts +0 -6
  258. package/dist/wirings/rpc/index.js +0 -3
  259. package/dist/wirings/rpc/remote-addon-auth.d.ts +1 -1
  260. package/dist/wirings/rpc/remote-addon-auth.js +1 -1
  261. package/dist/wirings/rpc/rpc-runner.d.ts +1 -1
  262. package/dist/wirings/rpc/rpc-runner.js +4 -4
  263. package/dist/wirings/rpc/rpc-types.d.ts +1 -1
  264. package/dist/wirings/rpc/wire-addon.d.ts +1 -1
  265. package/dist/wirings/scheduler/scheduler.types.d.ts +2 -1
  266. package/dist/wirings/scope/index.d.ts +1 -0
  267. package/dist/wirings/scope/index.js +1 -0
  268. package/dist/wirings/secret/secret.types.d.ts +10 -0
  269. package/dist/wirings/secret/validate-secret-definitions.js +2 -0
  270. package/dist/wirings/variable/validate-variable-definitions.js +2 -0
  271. package/dist/wirings/variable/variable.types.d.ts +9 -0
  272. package/dist/wirings/virtual-user/index.d.ts +1 -1
  273. package/dist/wirings/virtual-user/index.js +1 -1
  274. package/dist/wirings/virtual-user/prepare-virtual-user-run.d.ts +1 -1
  275. package/dist/wirings/virtual-user/prepare-virtual-user-run.js +1 -1
  276. package/dist/wirings/virtual-user/virtual-user-agents.d.ts +1 -1
  277. package/dist/wirings/virtual-user/virtual-user-derive.d.ts +1 -1
  278. package/dist/wirings/workflow/graph/graph-node.d.ts +9 -2
  279. package/dist/wirings/workflow/graph/graph-node.js +2 -0
  280. package/dist/wirings/workflow/graph/graph-runner.d.ts +1 -0
  281. package/dist/wirings/workflow/graph/graph-runner.js +283 -31
  282. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +16 -1
  283. package/dist/wirings/workflow/index.d.ts +2 -0
  284. package/dist/wirings/workflow/index.js +1 -0
  285. package/dist/wirings/workflow/pikku-scenario-service.d.ts +14 -4
  286. package/dist/wirings/workflow/pikku-scenario-service.js +44 -16
  287. package/dist/wirings/workflow/pikku-workflow-service.d.ts +2 -1
  288. package/dist/wirings/workflow/pikku-workflow-service.js +3 -4
  289. package/dist/wirings/workflow/run-timeline.d.ts +2 -3
  290. package/dist/wirings/workflow/scenario-run.types.d.ts +171 -0
  291. package/dist/wirings/workflow/scenario-run.types.js +1 -0
  292. package/dist/wirings/workflow/scenario-step-guards.d.ts +1 -2
  293. package/dist/wirings/workflow/scenario-step-guards.js +0 -8
  294. package/dist/wirings/workflow/scenario-step.types.d.ts +27 -12
  295. package/dist/wirings/workflow/workflow-approval.js +2 -1
  296. package/dist/wirings/workflow/workflow-run-engine.types.d.ts +2 -1
  297. package/dist/wirings/workflow/workflow.types.d.ts +2 -1
  298. package/knowledge/decisions/index.md +2 -0
  299. package/knowledge/decisions/internals/{a-non-streaming-agent-run-registers-with-airunstate-too.md → a-non-streaming-agent-run-registers-with-agentrunstate-too.md} +6 -6
  300. package/knowledge/decisions/internals/a-resumed-agent-turn-is-as-interruptible-as-the-first.md +1 -1
  301. package/knowledge/decisions/internals/a-scenario-step-template-is-offered-unfilled.md +1 -1
  302. package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +1 -1
  303. package/knowledge/decisions/internals/a-virtual-user-run-is-not-a-workflow-and-not-a-queued-job.md +2 -2
  304. package/knowledge/decisions/internals/a-wall-clock-threshold-is-a-load-test-in-disguise.md +6 -6
  305. package/knowledge/decisions/internals/a-workflow-wire-is-built-from-the-run-not-from-the-rpc-service.md +1 -1
  306. package/knowledge/decisions/internals/actor-flow-drives-the-target-through-a-transport-seam.md +1 -1
  307. package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +1 -1
  308. package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +1 -1
  309. package/knowledge/decisions/internals/{ai-agent-agui-bridge-obeys-the-client-ordering-contract.md → agent-agui-bridge-obeys-the-client-ordering-contract.md} +5 -5
  310. package/knowledge/decisions/internals/{ai-agent-audio-chunks-carry-the-format-the-provider-returned.md → agent-audio-chunks-carry-the-format-the-provider-returned.md} +2 -2
  311. package/knowledge/decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md +1 -1
  312. package/knowledge/decisions/internals/{ai-agent-credential-suspensions-hide-the-tool-result.md → agent-credential-suspensions-hide-the-tool-result.md} +2 -2
  313. package/knowledge/decisions/internals/{ai-agent-delegate-and-supervise-hide-different-text.md → agent-delegate-and-supervise-hide-different-text.md} +4 -4
  314. package/knowledge/decisions/internals/{ai-agent-llm-tool-arguments-have-nulls-stripped.md → agent-llm-tool-arguments-have-nulls-stripped.md} +3 -3
  315. package/knowledge/decisions/internals/{ai-agent-model-config-stays-a-single-resolution-seam.md → agent-model-config-stays-a-single-resolution-seam.md} +3 -3
  316. package/knowledge/decisions/internals/{ai-agent-onerror-hooks-cannot-change-the-failure.md → agent-onerror-hooks-cannot-change-the-failure.md} +6 -6
  317. package/knowledge/decisions/internals/{ai-agent-runner-methods-must-keep-their-receiver.md → agent-runner-methods-must-keep-their-receiver.md} +4 -4
  318. package/knowledge/decisions/internals/agent-speech-travels-as-a-custom-agui-event.md +1 -1
  319. package/knowledge/decisions/internals/{ai-agent-stream-persistence-is-best-effort.md → agent-stream-persistence-is-best-effort.md} +4 -4
  320. package/knowledge/decisions/internals/{ai-agent-sub-agents-inherit-the-parent-context-block.md → agent-sub-agents-inherit-the-parent-context-block.md} +3 -3
  321. package/knowledge/decisions/internals/{ai-agent-tool-execute-failures-are-logged-unconditionally.md → agent-tool-execute-failures-are-logged-unconditionally.md} +3 -3
  322. package/knowledge/decisions/internals/{ai-agent-voice-input-transcribes-audio-parts-in-place.md → agent-voice-input-transcribes-audio-parts-in-place.md} +2 -2
  323. package/knowledge/decisions/internals/{ai-agent-working-memory-is-persisted-only-when-valid.md → agent-working-memory-is-persisted-only-when-valid.md} +2 -2
  324. package/knowledge/decisions/internals/an-addon-scope-root-loses-to-a-root-the-host-already-declares.md +1 -1
  325. package/knowledge/decisions/internals/an-agent-interrupt-is-not-a-failure.md +2 -2
  326. package/knowledge/decisions/internals/an-agent-run-owned-by-another-instance-says-so.md +3 -3
  327. package/knowledge/decisions/internals/an-agent-stream-send-must-return-the-inner-sends-promise.md +2 -2
  328. package/knowledge/decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md +1 -1
  329. package/knowledge/decisions/internals/an-empty-transcript-is-not-recorded.md +1 -1
  330. package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +1 -1
  331. package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +1 -1
  332. package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +1 -1
  333. package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +1 -1
  334. package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +1 -1
  335. package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +1 -1
  336. package/knowledge/decisions/internals/core-column-form-is-an-axis-of-its-own.md +4 -4
  337. package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +1 -1
  338. package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +3 -3
  339. package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +2 -2
  340. package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +2 -2
  341. package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +1 -1
  342. package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +1 -1
  343. package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +3 -3
  344. package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +1 -1
  345. package/knowledge/decisions/internals/gateway-listener-middleware-runs-without-an-rpc-on-the-wire.md +4 -4
  346. package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +1 -1
  347. package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +1 -1
  348. package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +1 -1
  349. package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +1 -1
  350. package/knowledge/decisions/internals/index.md +4 -2
  351. package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +1 -1
  352. package/knowledge/decisions/internals/one-project-shape-check-two-validators.md +1 -1
  353. package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +1 -1
  354. package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +1 -1
  355. package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +1 -1
  356. package/knowledge/decisions/internals/scenario-given-and-when-are-sugar-but-then-is-not.md +2 -2
  357. package/knowledge/decisions/internals/scenarios-live-in-files-named-for-them.md +5 -5
  358. package/knowledge/decisions/internals/speech-synthesis-picks-a-voice-per-sentence-and-warns-once.md +1 -1
  359. package/knowledge/decisions/internals/the-actor-prompt-says-json-because-of-json-object-mode.md +1 -1
  360. package/knowledge/decisions/internals/the-agent-done-event-goes-through-the-middleware-and-is-awaited.md +1 -1
  361. package/knowledge/decisions/internals/the-api-report-pins-members-not-just-names.md +1 -1
  362. package/knowledge/decisions/internals/the-ecosystem-entry-point-carries-the-adapter-surface.md +43 -19
  363. package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +1 -1
  364. package/knowledge/decisions/internals/the-per-invocation-rpc-view-is-a-class.md +5 -5
  365. package/knowledge/decisions/internals/the-persona-runtime-is-exported-from-the-persona-entry-point.md +1 -1
  366. package/knowledge/decisions/internals/the-transcript-event-is-sent-ahead-of-the-run.md +2 -2
  367. package/knowledge/decisions/internals/the-worker-disposition-is-the-one-that-is-not-testing.md +1 -1
  368. package/knowledge/decisions/internals/thread-history-records-the-transcript-not-the-audio.md +2 -2
  369. package/knowledge/decisions/internals/validate-runs-checks-by-precondition.md +3 -3
  370. package/knowledge/decisions/internals/virtual-user-step-order-comes-from-insertion-order.md +1 -1
  371. package/knowledge/decisions/internals/voice-output-speaks-unless-voice-input-explicitly-says-otherwise.md +1 -1
  372. package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +1 -1
  373. package/knowledge/decisions/internals/wiring-registries-erase-the-generics-their-wire-functions-capture.md +1 -1
  374. package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +1 -1
  375. package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +1 -1
  376. package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +1 -1
  377. package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +1 -1
  378. package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +1 -1
  379. package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +1 -1
  380. package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +9 -5
  381. package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +1 -1
  382. package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +2 -2
  383. package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +1 -1
  384. package/knowledge/decisions/security/a-function-never-receives-the-secret-service.md +1 -1
  385. package/knowledge/decisions/security/a-step-runs-the-function-the-workflow-dispatched-it-with.md +1 -1
  386. package/knowledge/decisions/security/a-virtual-user-is-never-offered-a-step-that-would-forge-its-own-oracle.md +2 -3
  387. package/knowledge/decisions/security/actor-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +1 -1
  388. package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +1 -1
  389. package/knowledge/decisions/security/{ai-agent-approval-forwarding-requires-a-symbol-brand.md → agent-approval-forwarding-requires-a-symbol-brand.md} +3 -3
  390. package/knowledge/decisions/security/{ai-agent-credential-requests-are-symbol-branded.md → agent-credential-requests-are-symbol-branded.md} +4 -4
  391. package/knowledge/decisions/security/{ai-agent-gate-requires-a-session-only-when-auth-is-true.md → agent-gate-requires-a-session-only-when-auth-is-true.md} +4 -4
  392. package/knowledge/decisions/security/{ai-agent-ownership-failures-never-echo-the-resource.md → agent-ownership-failures-never-echo-the-resource.md} +2 -2
  393. package/knowledge/decisions/security/{ai-agent-resume-re-runs-the-authorization-gate.md → agent-resume-re-runs-the-authorization-gate.md} +4 -4
  394. package/knowledge/decisions/security/{ai-agent-sessionless-deployments-have-no-thread-ownership.md → agent-sessionless-deployments-have-no-thread-ownership.md} +5 -5
  395. package/knowledge/decisions/security/{ai-agent-thread-ownership-composes-the-session-principal.md → agent-thread-ownership-composes-the-session-principal.md} +2 -2
  396. package/knowledge/decisions/security/{ai-agent-tool-filtering-reads-the-live-function-config.md → agent-tool-filtering-reads-the-live-function-config.md} +2 -2
  397. package/knowledge/decisions/security/an-agent-approval-is-claimed-before-the-tool-runs.md +3 -3
  398. package/knowledge/decisions/security/an-approval-answer-outlives-the-run-it-answered.md +3 -3
  399. package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +3 -3
  400. package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +21 -13
  401. package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +1 -1
  402. package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +2 -2
  403. package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +1 -1
  404. package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +2 -2
  405. package/knowledge/decisions/security/index.md +3 -2
  406. package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +1 -1
  407. package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +3 -3
  408. package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +1 -1
  409. package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +2 -2
  410. package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +1 -1
  411. package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +2 -2
  412. package/knowledge/index.md +3 -1
  413. package/knowledge/questions/channel-middleware-accepts-bare-factories-that-nothing-resolves.md +1 -1
  414. package/knowledge/questions/index.md +2 -0
  415. package/package.json +16 -14
  416. package/run-tests.sh +0 -0
  417. package/scripts/generate-api-report.d.mts +1 -1
  418. package/scripts/generate-api-report.mjs +67 -60
  419. package/scripts/generate-api-report.mts +37 -47
  420. package/src/agent-naming.test.ts +68 -0
  421. package/src/api-report.test.ts +70 -1
  422. package/src/app-alias-surface.test.ts +179 -0
  423. package/src/app-leaf-surface.test.ts +217 -0
  424. package/src/bootstrap-compat/root.ts +20 -0
  425. package/src/{column-form.test.ts → classification/column-form.test.ts} +2 -2
  426. package/src/{data-classification.ts → classification/data-classification.ts} +1 -5
  427. package/src/classification/index.ts +38 -0
  428. package/src/{secret-value.test.ts → classification/secret-value.test.ts} +2 -2
  429. package/src/{secret-value.ts → classification/secret-value.ts} +1 -6
  430. package/src/crypto-utils.ts +1 -1
  431. package/src/dev/reload-meta.test.ts +1 -1
  432. package/src/errors/index.ts +9 -0
  433. package/src/errors/serialized-error.ts +9 -0
  434. package/src/factory-functions.test.ts +4 -2
  435. package/src/function/function-meta.types.ts +151 -0
  436. package/src/function/function-runner.test.ts +4 -2
  437. package/src/function/function-runner.ts +47 -14
  438. package/src/function/functions.types.ts +11 -7
  439. package/src/function/index.ts +24 -5
  440. package/src/function/list.types.ts +1 -3
  441. package/src/middleware/auth-apikey.ts +4 -2
  442. package/src/middleware/auth-bearer.test.ts +1 -1
  443. package/src/middleware/auth-bearer.ts +4 -2
  444. package/src/middleware/auth-cookie.ts +4 -1
  445. package/src/middleware/cors.test.ts +126 -5
  446. package/src/middleware/cors.ts +19 -8
  447. package/src/middleware/index.ts +16 -0
  448. package/src/middleware/middleware-factories.ts +62 -0
  449. package/src/middleware/middleware.types.ts +61 -0
  450. package/src/middleware/remote-auth.test.ts +1 -1
  451. package/src/middleware/remote-auth.ts +1 -1
  452. package/src/middleware/telemetry.ts +4 -2
  453. package/src/middleware-runner.test.ts +2 -3
  454. package/src/middleware-runner.ts +2 -2
  455. package/src/no-root-barrel.test.ts +114 -0
  456. package/src/permissions.ts +2 -4
  457. package/src/pikku-state.ts +6 -4
  458. package/src/public-surface.json +90 -170
  459. package/src/public-surface.json.README +20 -2
  460. package/src/public-surface.test.ts +31 -3
  461. package/src/remote.test.ts +1 -1
  462. package/src/removed-legacy-exports.test.ts +5 -1
  463. package/src/services/{ai-run-state-service.ts → agent-run-state-service.ts} +5 -5
  464. package/src/services/{ai-agent-runner-service.ts → agent-runner-service.ts} +18 -18
  465. package/src/services/{ai-storage-service.ts → agent-storage-service.ts} +7 -7
  466. package/src/services/audit-service.ts +1 -1
  467. package/src/services/credential-wire-service.ts +1 -1
  468. package/src/services/email-service.ts +2 -4
  469. package/src/services/file-scenario-run-store.test.ts +349 -0
  470. package/src/services/file-scenario-run-store.ts +282 -0
  471. package/src/services/http-personas-converse.test.ts +3 -3
  472. package/src/services/http-personas.ts +4 -4
  473. package/src/services/{in-memory-ai-run-state-service.ts → in-memory-agent-run-state-service.ts} +7 -7
  474. package/src/services/in-memory-workflow-service.ts +1 -1
  475. package/src/services/index.ts +22 -10
  476. package/src/services/local-content-request-handler.ts +1 -2
  477. package/src/services/local-secrets.ts +1 -1
  478. package/src/services/logger.ts +7 -7
  479. package/src/services/meta-service.ts +5 -5
  480. package/src/services/queue-webhook-service.test.ts +1 -1
  481. package/src/services/scoped-secret-service.ts +1 -1
  482. package/src/services/secret-service.ts +1 -1
  483. package/src/services/typed-secret-service.test.ts +52 -0
  484. package/src/services/typed-secret-service.ts +26 -2
  485. package/src/services/webhook-service.ts +1 -1
  486. package/src/services/workflow-service.ts +2 -1
  487. package/src/template-alias-surface.test.ts +240 -0
  488. package/src/testing/index.ts +1 -0
  489. package/src/testing/service-tests/agent-run-service-tests.ts +4 -4
  490. package/src/testing/service-tests/{ai-storage-service-tests.ts → agent-storage-service-tests.ts} +8 -8
  491. package/src/testing/service-tests.ts +10 -8
  492. package/src/types/core.types.ts +40 -292
  493. package/src/types/index.ts +2 -0
  494. package/src/types/state.types.ts +12 -14
  495. package/src/types/typed-credentials.test.ts +72 -0
  496. package/src/utils.ts +34 -0
  497. package/src/wirings/actor-flow/run-conversation.test.ts +2 -2
  498. package/src/wirings/actor-flow/run-conversation.ts +7 -9
  499. package/src/wirings/{rpc → addon}/addon-scopes.test.ts +1 -1
  500. package/src/wirings/addon/index.ts +12 -0
  501. package/src/wirings/{rpc → addon}/remote-addon-auth.ts +4 -1
  502. package/src/wirings/{rpc → addon}/wire-addon.ts +37 -2
  503. package/src/wirings/{ai-agent/ai-agent-agui.test.ts → agent/agent-agui.test.ts} +126 -105
  504. package/src/wirings/{ai-agent/ai-agent-agui.ts → agent/agent-agui.ts} +7 -7
  505. package/src/wirings/{ai-agent/ai-agent-authorization.test.ts → agent/agent-authorization.test.ts} +6 -6
  506. package/src/wirings/{ai-agent/ai-agent-finalize.test.ts → agent/agent-finalize.test.ts} +17 -16
  507. package/src/wirings/{ai-agent/ai-agent-finalize.ts → agent/agent-finalize.ts} +22 -22
  508. package/src/wirings/{ai-agent/ai-agent-helpers.test.ts → agent/agent-helpers.test.ts} +1 -1
  509. package/src/wirings/{ai-agent/ai-agent-helpers.ts → agent/agent-helpers.ts} +1 -1
  510. package/src/wirings/{ai-agent/ai-agent-interrupt.test.ts → agent/agent-interrupt.test.ts} +67 -77
  511. package/src/wirings/{ai-agent/ai-agent-interrupt.ts → agent/agent-interrupt.ts} +5 -5
  512. package/src/wirings/{ai-agent/ai-agent-memory.test.ts → agent/agent-memory.test.ts} +12 -12
  513. package/src/wirings/{ai-agent/ai-agent-memory.ts → agent/agent-memory.ts} +36 -36
  514. package/src/wirings/{ai-agent/ai-agent-model-config.test.ts → agent/agent-model-config.test.ts} +2 -5
  515. package/src/wirings/{ai-agent/ai-agent-model-config.ts → agent/agent-model-config.ts} +1 -1
  516. package/src/wirings/{ai-agent/ai-agent-prepare.test.ts → agent/agent-prepare.test.ts} +18 -18
  517. package/src/wirings/{ai-agent/ai-agent-prepare.ts → agent/agent-prepare.ts} +60 -56
  518. package/src/wirings/{ai-agent/ai-agent-registry.test.ts → agent/agent-registry.test.ts} +49 -43
  519. package/src/wirings/{ai-agent/ai-agent-registry.ts → agent/agent-registry.ts} +14 -14
  520. package/src/wirings/{ai-agent/ai-agent-resume-authorization.test.ts → agent/agent-resume-authorization.test.ts} +18 -18
  521. package/src/wirings/{ai-agent → agent}/agent-rpc.ts +16 -20
  522. package/src/wirings/{ai-agent/ai-agent-runner.test.ts → agent/agent-runner.test.ts} +105 -106
  523. package/src/wirings/{ai-agent/ai-agent-runner.ts → agent/agent-runner.ts} +91 -82
  524. package/src/wirings/{ai-agent/ai-agent-stream-output-hooks.test.ts → agent/agent-stream-output-hooks.test.ts} +25 -25
  525. package/src/wirings/{ai-agent/ai-agent-stream.test.ts → agent/agent-stream.test.ts} +147 -143
  526. package/src/wirings/{ai-agent/ai-agent-stream.ts → agent/agent-stream.ts} +148 -148
  527. package/src/wirings/{ai-agent/ai-agent-thread-ownership.test.ts → agent/agent-thread-ownership.test.ts} +24 -28
  528. package/src/wirings/{ai-agent/ai-agent-turn.test.ts → agent/agent-turn.test.ts} +3 -5
  529. package/src/wirings/{ai-agent/ai-agent-turn.ts → agent/agent-turn.ts} +7 -7
  530. package/src/wirings/agent/agent-utils.ts +20 -0
  531. package/src/wirings/{ai-agent/ai-agent.types.ts → agent/agent.types.ts} +54 -51
  532. package/src/wirings/agent/index.ts +57 -0
  533. package/src/wirings/{ai-agent → agent}/voice-input.test.ts +15 -15
  534. package/src/wirings/{ai-agent → agent}/voice-input.ts +11 -11
  535. package/src/wirings/{ai-agent → agent}/voice-output.test.ts +25 -27
  536. package/src/wirings/{ai-agent → agent}/voice-output.ts +11 -11
  537. package/src/wirings/{ai-scorer/ai-scorer-grade.test.ts → agent-scorer/agent-scorer-grade.test.ts} +8 -8
  538. package/src/wirings/{ai-scorer/ai-scorer-grade.ts → agent-scorer/agent-scorer-grade.ts} +9 -9
  539. package/src/wirings/agent-scorer/agent-scorer-judge.test.ts +285 -0
  540. package/src/wirings/agent-scorer/agent-scorer-judge.ts +180 -0
  541. package/src/wirings/{ai-scorer/ai-scorer-live.test.ts → agent-scorer/agent-scorer-live.test.ts} +11 -11
  542. package/src/wirings/{ai-scorer/ai-scorer-live.ts → agent-scorer/agent-scorer-live.ts} +3 -3
  543. package/src/wirings/{ai-scorer/ai-scorer-registry.ts → agent-scorer/agent-scorer-registry.ts} +11 -8
  544. package/src/wirings/{ai-scorer/ai-scorer-sampling.test.ts → agent-scorer/agent-scorer-sampling.test.ts} +1 -1
  545. package/src/wirings/{ai-scorer/ai-scorer-snapshots.test.ts → agent-scorer/agent-scorer-snapshots.test.ts} +2 -2
  546. package/src/wirings/{ai-scorer/ai-scorer-snapshots.ts → agent-scorer/agent-scorer-snapshots.ts} +1 -1
  547. package/src/wirings/{ai-scorer/ai-scorer-worker.test.ts → agent-scorer/agent-scorer-worker.test.ts} +15 -15
  548. package/src/wirings/{ai-scorer/ai-scorer-worker.ts → agent-scorer/agent-scorer-worker.ts} +9 -7
  549. package/src/wirings/{ai-scorer/ai-scorer.ts → agent-scorer/agent-scorer.ts} +15 -7
  550. package/src/wirings/{ai-scorer/ai-scorer.types.ts → agent-scorer/agent-scorer.types.ts} +27 -6
  551. package/src/wirings/agent-scorer/index.ts +23 -0
  552. package/src/wirings/channel/channel-common.ts +4 -2
  553. package/src/wirings/channel/channel-handler.ts +2 -5
  554. package/src/wirings/channel/channel-middleware-runner.ts +1 -1
  555. package/src/wirings/channel/channel-rpc.types.ts +3 -7
  556. package/src/wirings/channel/channel.types.ts +1 -2
  557. package/src/wirings/channel/local/local-channel-runner.test.ts +1 -2
  558. package/src/wirings/channel/serverless/index.ts +1 -0
  559. package/src/wirings/cli/channel/cli-raw-channel-runner.ts +2 -2
  560. package/src/wirings/cli/channel/index.ts +1 -3
  561. package/src/wirings/cli/cli-runner.test.ts +1 -1
  562. package/src/wirings/cli/cli-runner.ts +11 -7
  563. package/src/wirings/cli/cli.types.ts +24 -3
  564. package/src/wirings/cli/command-parser.test.ts +388 -1
  565. package/src/wirings/cli/command-parser.ts +189 -29
  566. package/src/wirings/gateway/gateway-runner.test.ts +1 -2
  567. package/src/wirings/gateway/gateway-runner.ts +3 -6
  568. package/src/wirings/gateway/gateway.types.ts +5 -4
  569. package/src/wirings/http/http-routes.test.ts +1 -2
  570. package/src/wirings/http/http-runner-addon-ref.test.ts +238 -0
  571. package/src/wirings/http/http-runner.test.ts +3 -8
  572. package/src/wirings/http/http-runner.ts +9 -3
  573. package/src/wirings/http/http.types.ts +3 -12
  574. package/src/wirings/http/index.ts +1 -0
  575. package/src/wirings/http/pikku-fetch-http-request.ts +1 -1
  576. package/src/wirings/http/pikku-fetch-http-response.ts +3 -2
  577. package/src/wirings/mcp/mcp-runner.test.ts +1 -1
  578. package/src/wirings/mcp/mcp.types.ts +1 -2
  579. package/src/wirings/persona/index.ts +1 -4
  580. package/src/wirings/persona/persona.types.ts +14 -0
  581. package/src/wirings/queue/queue-identity.test.ts +1 -1
  582. package/src/wirings/queue/queue.types.ts +2 -6
  583. package/src/wirings/queue/signed-queue-service.ts +1 -1
  584. package/src/wirings/rpc/index.ts +0 -12
  585. package/src/wirings/rpc/rpc-runner.test.ts +4 -4
  586. package/src/wirings/rpc/rpc-runner.ts +5 -5
  587. package/src/wirings/rpc/rpc-types.ts +1 -1
  588. package/src/wirings/scheduler/scheduler.types.ts +2 -5
  589. package/src/wirings/scope/index.ts +1 -0
  590. package/src/wirings/secret/secret.types.ts +10 -0
  591. package/src/wirings/secret/validate-secret-definitions.test.ts +23 -0
  592. package/src/wirings/secret/validate-secret-definitions.ts +2 -0
  593. package/src/wirings/variable/validate-variable-definitions.test.ts +23 -0
  594. package/src/wirings/variable/validate-variable-definitions.ts +2 -0
  595. package/src/wirings/variable/variable.types.ts +9 -0
  596. package/src/wirings/virtual-user/index.ts +1 -4
  597. package/src/wirings/virtual-user/prepare-virtual-user-run.ts +2 -2
  598. package/src/wirings/virtual-user/run-virtual-user.test.ts +2 -2
  599. package/src/wirings/virtual-user/run-virtual-user.ts +3 -3
  600. package/src/wirings/virtual-user/virtual-user-agents.ts +1 -1
  601. package/src/wirings/virtual-user/virtual-user-derive.test.ts +1 -1
  602. package/src/wirings/virtual-user/virtual-user-derive.ts +1 -1
  603. package/src/wirings/virtual-user/virtual-user.types.ts +1 -5
  604. package/src/wirings/workflow/graph/graph-foreach-queued.test.ts +569 -0
  605. package/src/wirings/workflow/graph/graph-foreach.test.ts +626 -0
  606. package/src/wirings/workflow/graph/graph-node.ts +16 -1
  607. package/src/wirings/workflow/graph/graph-runner.ts +387 -61
  608. package/src/wirings/workflow/graph/workflow-graph.types.ts +28 -3
  609. package/src/wirings/workflow/index.ts +8 -0
  610. package/src/wirings/workflow/pikku-scenario-service.ts +59 -19
  611. package/src/wirings/workflow/pikku-workflow-service.ts +6 -8
  612. package/src/wirings/workflow/run-timeline.ts +2 -2
  613. package/src/wirings/workflow/scenario-expectations.test.ts +28 -13
  614. package/src/wirings/workflow/scenario-run.types.ts +186 -0
  615. package/src/wirings/workflow/scenario-step-guards.ts +1 -14
  616. package/src/wirings/workflow/scenario-step.test.ts +32 -7
  617. package/src/wirings/workflow/scenario-step.types.ts +27 -12
  618. package/src/wirings/workflow/workflow-approval-policy.test.ts +117 -47
  619. package/src/wirings/workflow/workflow-approval.ts +2 -1
  620. package/src/wirings/workflow/workflow-run-engine.types.ts +2 -1
  621. package/src/wirings/workflow/workflow.types.ts +4 -12
  622. package/src/wirings-stay-decoupled.test.ts +7 -4
  623. package/tsconfig.tsbuildinfo +1 -1
  624. package/tsconfig.type-tests.json +3 -2
  625. package/dist/testing/service-tests/ai-storage-service-tests.d.ts +0 -3
  626. package/dist/wirings/ai-agent/ai-agent-registry.d.ts +0 -16
  627. package/dist/wirings/ai-agent/ai-agent-runner.d.ts +0 -7
  628. package/dist/wirings/ai-agent/ai-agent-utils.d.ts +0 -1
  629. package/dist/wirings/ai-agent/ai-agent-utils.js +0 -1
  630. package/dist/wirings/ai-agent/index.d.ts +0 -12
  631. package/dist/wirings/ai-agent/index.js +0 -10
  632. package/dist/wirings/ai-scorer/ai-scorer-judge.d.ts +0 -17
  633. package/dist/wirings/ai-scorer/ai-scorer.types.js +0 -4
  634. package/dist/wirings/ai-scorer/index.d.ts +0 -6
  635. package/dist/wirings/ai-scorer/index.js +0 -5
  636. package/src/ecosystem.ts +0 -40
  637. package/src/index.ts +0 -255
  638. package/src/wirings/ai-agent/ai-agent-utils.ts +0 -1
  639. package/src/wirings/ai-agent/index.ts +0 -65
  640. package/src/wirings/ai-scorer/ai-scorer-judge.test.ts +0 -143
  641. package/src/wirings/ai-scorer/ai-scorer-judge.ts +0 -120
  642. package/src/wirings/ai-scorer/index.ts +0 -24
  643. /package/dist/{services/ai-agent-runner-service.js → bootstrap-compat/root.js} +0 -0
  644. /package/dist/{services/ai-run-state-service.js → classification/data-classification.js} +0 -0
  645. /package/dist/{services/ai-storage-service.js → ecosystem/gateway.js} +0 -0
  646. /package/dist/{wirings/ai-agent/ai-agent.types.js → ecosystem/node.js} +0 -0
  647. /package/dist/wirings/{ai-agent/ai-agent-helpers.js → agent/agent-helpers.js} +0 -0
  648. /package/dist/wirings/{ai-agent/ai-agent-model-config.d.ts → agent/agent-model-config.d.ts} +0 -0
  649. /package/dist/wirings/{ai-agent → agent}/agent-rpc.d.ts +0 -0
  650. /package/dist/wirings/{ai-scorer/ai-scorer-sampling.d.ts → agent-scorer/agent-scorer-sampling.d.ts} +0 -0
  651. /package/dist/wirings/{ai-scorer/ai-scorer-sampling.js → agent-scorer/agent-scorer-sampling.js} +0 -0
  652. /package/dist/wirings/{ai-scorer/ai-scorer-snapshots.js → agent-scorer/agent-scorer-snapshots.js} +0 -0
  653. /package/src/{column-form.ts → classification/column-form.ts} +0 -0
  654. /package/src/{pikku-request.test.ts → function/pikku-request.test.ts} +0 -0
  655. /package/src/{pikku-request.ts → function/pikku-request.ts} +0 -0
  656. /package/src/wirings/{rpc → addon}/addon-auth-tags.test.ts +0 -0
  657. /package/src/wirings/{rpc → addon}/addon-runner.ts +0 -0
  658. /package/src/wirings/{rpc → addon}/addon-secrets.test.ts +0 -0
  659. /package/src/wirings/{rpc → addon}/wire-addon.test.ts +0 -0
  660. /package/src/wirings/{rpc → addon}/wire-remote-addon.ts +0 -0
  661. /package/src/wirings/{ai-scorer/ai-scorer-sampling.ts → agent-scorer/agent-scorer-sampling.ts} +0 -0
@@ -0,0 +1,21 @@
1
+ export type { PikkuScenarioWire, ScenarioStepMeta, } from '../wirings/workflow/dsl/workflow-dsl.types.js';
2
+ export { FileScenarioRunStore } from '../services/file-scenario-run-store.js';
3
+ export type { FileScenarioRunStoreOptions } from '../services/file-scenario-run-store.js';
4
+ export { addFeature, resolveFeatureScenarios, } from '../wirings/workflow/feature.js';
5
+ export { PikkuScenarioService, createScenarioRunner, } from '../wirings/workflow/pikku-scenario-service.js';
6
+ export { createCookieJar } from '../wirings/workflow/scenario-cookie-jar.js';
7
+ export { pollUntil } from '../wirings/workflow/scenario-poll.js';
8
+ export { composeStepProse } from '../wirings/workflow/scenario-prose.js';
9
+ export { requireActor, requireScenarioEnv, } from '../wirings/workflow/scenario-step-guards.js';
10
+ export { SCENARIO_SURFACES } from '../wirings/workflow/scenario-step.types.js';
11
+ export type { PikkuBrowserWire, ScenarioBrowserFailure, ScenarioBrowserProvider, ScenarioStepKind, ScenarioStepOptions, ScenarioStepPhase, TestIdSelector, } from '../wirings/workflow/scenario-step.types.js';
12
+ export type { CoreFeature, FeaturesMeta, } from '../wirings/workflow/scenario.types.js';
13
+ export type { ScenarioArtifact, ScenarioArtifactKind, ScenarioFailureDetail, ScenarioResult, ScenarioRunRecord, ScenarioRunReport, ScenarioRunStatus, ScenarioRunStore, ScenarioRunSummary, ScenarioSkip, ScenarioStepRow, } from '../wirings/workflow/scenario-run.types.js';
14
+ /**
15
+ * Types the exports above mention but do not themselves export. Without
16
+ * them a consumer's declaration emit has no name for the type it infers,
17
+ * and fails with TS2883 rather than reaching for the original entry point.
18
+ */
19
+ export type { ScenarioSurface } from '../wirings/workflow/scenario-step.types.js';
20
+ export type { FeaturePlanEntry } from '../wirings/workflow/scenario.types.js';
21
+ export type { CoreWorkflow } from '../wirings/workflow/workflow.types.js';
@@ -0,0 +1,8 @@
1
+ export { FileScenarioRunStore } from '../services/file-scenario-run-store.js';
2
+ export { addFeature, resolveFeatureScenarios, } from '../wirings/workflow/feature.js';
3
+ export { PikkuScenarioService, createScenarioRunner, } from '../wirings/workflow/pikku-scenario-service.js';
4
+ export { createCookieJar } from '../wirings/workflow/scenario-cookie-jar.js';
5
+ export { pollUntil } from '../wirings/workflow/scenario-poll.js';
6
+ export { composeStepProse } from '../wirings/workflow/scenario-prose.js';
7
+ export { requireActor, requireScenarioEnv, } from '../wirings/workflow/scenario-step-guards.js';
8
+ export { SCENARIO_SURFACES } from '../wirings/workflow/scenario-step.types.js';
@@ -0,0 +1,3 @@
1
+ export { SchedulerService } from '../services/scheduler-service.js';
2
+ export { getScheduledTasks, runScheduledTask, } from '../wirings/scheduler/scheduler-runner.js';
3
+ export type { CoreScheduledTask, ScheduledTasksMeta, } from '../wirings/scheduler/scheduler.types.js';
@@ -0,0 +1,2 @@
1
+ export { SchedulerService } from '../services/scheduler-service.js';
2
+ export { getScheduledTasks, runScheduledTask, } from '../wirings/scheduler/scheduler-runner.js';
@@ -0,0 +1,2 @@
1
+ export { addSchema, compileAllSchemas, getSchema } from '../schema.js';
2
+ export type { SchemaService } from '../services/schema-service.js';
@@ -0,0 +1 @@
1
+ export { addSchema, compileAllSchemas, getSchema } from '../schema.js';
@@ -0,0 +1,5 @@
1
+ export { hasScopes, verifyScopes } from '../scopes.js';
2
+ export type { ScopeService } from '../services/scope-service.js';
3
+ export { defineScope } from '../wirings/scope/define-scope.js';
4
+ export type { CoreScopeNode, CoreScopes, FlatScope, ScopeDefinitionMeta, ScopeDefinitions, ScopeDefinitionsMeta, ScopeNodeMeta, } from '../wirings/scope/scope.types.js';
5
+ export { flattenScopeDefinitions, validateAndBuildScopeDefinitionsMeta, } from '../wirings/scope/validate-scope-definitions.js';
@@ -0,0 +1,3 @@
1
+ export { hasScopes, verifyScopes } from '../scopes.js';
2
+ export { defineScope } from '../wirings/scope/define-scope.js';
3
+ export { flattenScopeDefinitions, validateAndBuildScopeDefinitionsMeta, } from '../wirings/scope/validate-scope-definitions.js';
@@ -0,0 +1,11 @@
1
+ export { assertSecretAllowedForHost } from '../services/secret-host-binding.js';
2
+ export type { SecretService, SecretValues } from '../services/secret-service.js';
3
+ export type { CoreSecret, OAuth2CredentialConfig, SecretDefinitionMeta, SecretDefinitions, } from '../wirings/secret/secret.types.js';
4
+ export { validateAndBuildSecretDefinitionsMeta } from '../wirings/secret/validate-secret-definitions.js';
5
+ /**
6
+ * Types the exports above mention but do not themselves export. Without
7
+ * them a consumer's declaration emit has no name for the type it infers,
8
+ * and fails with TS2883 rather than reaching for the original entry point.
9
+ */
10
+ export type { SchemaRefLike } from '../types/core.types.js';
11
+ export type { SecretDefinitionsMeta } from '../wirings/secret/secret.types.js';
@@ -0,0 +1,2 @@
1
+ export { assertSecretAllowedForHost } from '../services/secret-host-binding.js';
2
+ export { validateAndBuildSecretDefinitionsMeta } from '../wirings/secret/validate-secret-definitions.js';
@@ -0,0 +1 @@
1
+ export { IstanbulCoverageService } from '../../services/istanbul-coverage-service.js';
@@ -0,0 +1 @@
1
+ export { IstanbulCoverageService } from '../../services/istanbul-coverage-service.js';
@@ -0,0 +1,9 @@
1
+ export { createLocalContentRequestHandler, verifySignedContentRequest, } from '../../services/local-content-request-handler.js';
2
+ export type { LocalContentRequestHandler } from '../../services/local-content-request-handler.js';
3
+ /**
4
+ * Types the exports above mention but do not themselves export. Without
5
+ * them a consumer's declaration emit has no name for the type it infers,
6
+ * and fails with TS2883 rather than reaching for the original entry point.
7
+ */
8
+ export type { JWTService } from '../../services/jwt-service.js';
9
+ export type { LocalContentRequestHandlerOptions, SignedContentVerification, } from '../../services/local-content-request-handler.js';
@@ -0,0 +1 @@
1
+ export { createLocalContentRequestHandler, verifySignedContentRequest, } from '../../services/local-content-request-handler.js';
@@ -0,0 +1,2 @@
1
+ export { LocalContent, signedContentPath, } from '../../services/local-content.js';
2
+ export type { LocalContentConfig } from '../../services/local-content.js';
@@ -0,0 +1 @@
1
+ export { LocalContent, signedContentPath, } from '../../services/local-content.js';
@@ -0,0 +1 @@
1
+ export { LocalMetaService } from '../../services/meta-service.js';
@@ -0,0 +1 @@
1
+ export { LocalMetaService } from '../../services/meta-service.js';
@@ -0,0 +1 @@
1
+ export { V8CoverageService } from '../../services/v8-coverage-service.js';
@@ -0,0 +1 @@
1
+ export { V8CoverageService } from '../../services/v8-coverage-service.js';
@@ -0,0 +1,36 @@
1
+ export { NoopAuditService } from '../services/audit-service.js';
2
+ export type { AuditDurability, AuditEvent, AuditEventBatch, AuditLog, AuditService, } from '../services/audit-service.js';
3
+ export type { BucketKeyArgs, ContentService, CopyFileArgs, GetUploadURLArgs, SignContentKeyArgs, SignURLArgs, UploadURLResult, WriteFileArgs, } from '../services/content-service.js';
4
+ export type { DeploymentConfig, DeploymentService, DeploymentServiceConfig, } from '../services/deployment-service.js';
5
+ export { InMemoryAgentRunStateService } from '../services/in-memory-agent-run-state-service.js';
6
+ export type { JWTService } from '../services/jwt-service.js';
7
+ export { LocalEmailService } from '../services/local-email-service.js';
8
+ export { LocalSecretService } from '../services/local-secrets.js';
9
+ export { LocalVariablesService } from '../services/local-variables.js';
10
+ export { ConsoleLogger } from '../services/logger-console.js';
11
+ export { LogLevel } from '../services/logger.js';
12
+ export type { AgentMeta, AgentsMeta, EmailTemplateMeta, EmailsMeta, GroupMeta, MCPMeta, MetaService, MiddlewareDefinitionMeta, MiddlewareGroupsMeta, MiddlewareInstanceMeta, PermissionDefinitionMeta, PermissionsGroupsMeta, RPCMetaRecord, ServiceMeta, ServicesMetaRecord, } from '../services/meta-service.js';
13
+ export type { ResolvedPersona, ScenarioPersonas, } from '../services/personas-service.js';
14
+ export { pikkuWebhookWorkerFunc } from '../services/queue-webhook-service.js';
15
+ export type { ScheduledTaskInfo, ScheduledTaskSummary, } from '../services/scheduler-service.js';
16
+ export type { SessionStore } from '../services/session-store.js';
17
+ export { getStubTracker, isTestRun, spy } from '../services/stub-tracker.js';
18
+ export type { CredentialMetaInfo } from '../services/typed-credential-service.js';
19
+ export type { CredentialMeta } from '../services/typed-secret-service.js';
20
+ export { TypedVariablesService } from '../services/typed-variables-service.js';
21
+ export type { VariableMeta } from '../services/typed-variables-service.js';
22
+ export { PikkuSessionService, createMiddlewareSessionWireProps, } from '../services/user-session-service.js';
23
+ export type { CoverageFunctionMeta, CoverageService, FunctionCoverageEntry, FunctionCoverageReport, ScriptCoverage, } from '../services/v8-coverage-service.js';
24
+ export { PIKKU_OUTGOING_WEBHOOK_QUEUE_NAME } from '../services/webhook-service.js';
25
+ export type { SendWebhookInput, SendWebhookResult, WebhookAttemptResult, WebhookDeliveryRecord, WebhookDeliveryWithAttempts, } from '../services/webhook-service.js';
26
+ export type { FunctionMeta, FunctionsMeta, MiddlewareMetadata as MiddlewareMeta, PermissionMetadata as PermissionMeta, } from '../types/core.types.js';
27
+ /**
28
+ * Types the exports above mention but do not themselves export. Without
29
+ * them a consumer's declaration emit has no name for the type it infers,
30
+ * and fails with TS2883 rather than reaching for the original entry point.
31
+ */
32
+ export type { Logger } from '../services/logger.js';
33
+ export type { StubTracker } from '../services/stub-tracker.js';
34
+ export type { SessionService } from '../services/user-session-service.js';
35
+ export type { WebhookJobData, WebhookService, } from '../services/webhook-service.js';
36
+ export type { CoreUserSession } from '../types/core.types.js';
@@ -0,0 +1,12 @@
1
+ export { NoopAuditService } from '../services/audit-service.js';
2
+ export { InMemoryAgentRunStateService } from '../services/in-memory-agent-run-state-service.js';
3
+ export { LocalEmailService } from '../services/local-email-service.js';
4
+ export { LocalSecretService } from '../services/local-secrets.js';
5
+ export { LocalVariablesService } from '../services/local-variables.js';
6
+ export { ConsoleLogger } from '../services/logger-console.js';
7
+ export { LogLevel } from '../services/logger.js';
8
+ export { pikkuWebhookWorkerFunc } from '../services/queue-webhook-service.js';
9
+ export { getStubTracker, isTestRun, spy } from '../services/stub-tracker.js';
10
+ export { TypedVariablesService } from '../services/typed-variables-service.js';
11
+ export { PikkuSessionService, createMiddlewareSessionWireProps, } from '../services/user-session-service.js';
12
+ export { PIKKU_OUTGOING_WEBHOOK_QUEUE_NAME } from '../services/webhook-service.js';
@@ -0,0 +1,7 @@
1
+ export { defineServiceTests } from '../testing/service-tests.js';
2
+ /**
3
+ * Types the exports above mention but do not themselves export. Without
4
+ * them a consumer's declaration emit has no name for the type it infers,
5
+ * and fails with TS2883 rather than reaching for the original entry point.
6
+ */
7
+ export type { ServiceTestConfig } from '../testing/service-tests.js';
@@ -0,0 +1 @@
1
+ export { defineServiceTests } from '../testing/service-tests.js';
@@ -0,0 +1,2 @@
1
+ export { InMemoryTriggerService } from '../services/in-memory-trigger-service.js';
2
+ export type { CorePikkuTriggerFunction, CorePikkuTriggerFunctionConfig, CoreTrigger, TriggerMeta, TriggerSourceMeta, } from '../wirings/trigger/trigger.types.js';
@@ -0,0 +1 @@
1
+ export { InMemoryTriggerService } from '../services/in-memory-trigger-service.js';
@@ -0,0 +1,12 @@
1
+ export type { ClassificationManifest } from '../data-classification.js';
2
+ export { isExpectedError } from '../errors/error-handler.js';
3
+ export type { CorePermissionGroup } from '../function/functions.types.js';
4
+ export { PikkuRequest } from '../pikku-request.js';
5
+ export { SecretValue, createSecretValue, isSecretValue, } from '../secret-value.js';
6
+ export type { Safe } from '../secret-value.js';
7
+ export type { AuditFacets, AuditQuery, AuditQueryResult, } from '../services/audit-service.js';
8
+ export { getRelativeTimeOffsetFromNow, parseDurationString, } from '../time-utils.js';
9
+ export type { RelativeTimeInput } from '../time-utils.js';
10
+ export type { AuthInstance, CoreConfig, CorePikkuMiddleware, CoreServices, CoreSingletonServices, CoreUserSession, CreateConfig, FunctionServicesMeta, FunctionWiresMeta, JSONValue, MiddlewareMetadata, PermissionMetadata, PikkuWire, PikkuWiringTypes, PostgresConfig, SecretlessServices, SecurityAuditIssue, SecurityAuditReport, SecurityAuditUpdate, SecuritySeverity, SecurityUpdateLevel, SerializedError, } from '../types/core.types.js';
11
+ export { isSerializable, stopSingletonServices } from '../utils.js';
12
+ export { formatVersionedId, isVersionedId, parseVersionedId, } from '../version.js';
@@ -0,0 +1,6 @@
1
+ export { isExpectedError } from '../errors/error-handler.js';
2
+ export { PikkuRequest } from '../pikku-request.js';
3
+ export { SecretValue, createSecretValue, isSecretValue, } from '../secret-value.js';
4
+ export { getRelativeTimeOffsetFromNow, parseDurationString, } from '../time-utils.js';
5
+ export { isSerializable, stopSingletonServices } from '../utils.js';
6
+ export { formatVersionedId, isVersionedId, parseVersionedId, } from '../version.js';
@@ -0,0 +1,9 @@
1
+ export type { VariablesService } from '../services/variables-service.js';
2
+ export { validateAndBuildVariableDefinitionsMeta } from '../wirings/variable/validate-variable-definitions.js';
3
+ export type { CoreVariable, VariableDefinitionMeta, VariableDefinitions, VariableDefinitionsMeta, } from '../wirings/variable/variable.types.js';
4
+ /**
5
+ * Types the exports above mention but do not themselves export. Without
6
+ * them a consumer's declaration emit has no name for the type it infers,
7
+ * and fails with TS2883 rather than reaching for the original entry point.
8
+ */
9
+ export type { SchemaRefLike } from '../types/core.types.js';
@@ -0,0 +1 @@
1
+ export { validateAndBuildVariableDefinitionsMeta } from '../wirings/variable/validate-variable-definitions.js';
@@ -0,0 +1,24 @@
1
+ export { personaScopes, prepareVirtualUserRun, } from '../wirings/virtual-user/prepare-virtual-user-run.js';
2
+ export { runVirtualUser } from '../wirings/virtual-user/run-virtual-user.js';
3
+ export { catalogueClassification, isReadOnly, reachableCatalogue, unreachableCatalogue, } from '../wirings/virtual-user/virtual-user-catalogue.js';
4
+ export { deriveCatalogue, deriveIntents, } from '../wirings/virtual-user/virtual-user-derive.js';
5
+ export { DISPOSITIONS, dispositionProfile, } from '../wirings/virtual-user/virtual-user-dispositions.js';
6
+ export type { DispositionProfile } from '../wirings/virtual-user/virtual-user-dispositions.js';
7
+ export { intentsForPersona } from '../wirings/virtual-user/virtual-user-intents.js';
8
+ export type { VirtualUserRunOutcome, VirtualUserRunRecord, VirtualUserRunStart, VirtualUserRunStore, } from '../wirings/virtual-user/virtual-user-run-store.js';
9
+ export { personaVirtualUserTarget } from '../wirings/virtual-user/virtual-user-target.js';
10
+ export { PRODUCTION_DISPOSITION } from '../wirings/virtual-user/virtual-user.types.js';
11
+ export type { IntentSource, VirtualUserFinding, VirtualUserRunResult, } from '../wirings/virtual-user/virtual-user.types.js';
12
+ /**
13
+ * Types the exports above mention but do not themselves export. Without
14
+ * them a consumer's declaration emit has no name for the type it infers,
15
+ * and fails with TS2883 rather than reaching for the original entry point.
16
+ */
17
+ export type { FunctionsMeta } from '../types/core.types.js';
18
+ export type { SystemRoleDefinitions, SystemRoleDefinitionsMeta, } from '../wirings/role/role.types.js';
19
+ export type { VirtualUserPreparation } from '../wirings/virtual-user/prepare-virtual-user-run.js';
20
+ export type { AgentReachability } from '../wirings/virtual-user/virtual-user-agents.js';
21
+ export type { SchemaMap } from '../wirings/virtual-user/virtual-user-derive.js';
22
+ export type { VirtualUserTuning } from '../wirings/virtual-user/virtual-user-dispositions.js';
23
+ export type { ApiCatalogueEntry, VirtualUserDisposition, } from '../wirings/virtual-user/virtual-user.types.js';
24
+ export type { WorkflowsMeta } from '../wirings/workflow/workflow.types.js';
@@ -0,0 +1,8 @@
1
+ export { personaScopes, prepareVirtualUserRun, } from '../wirings/virtual-user/prepare-virtual-user-run.js';
2
+ export { runVirtualUser } from '../wirings/virtual-user/run-virtual-user.js';
3
+ export { catalogueClassification, isReadOnly, reachableCatalogue, unreachableCatalogue, } from '../wirings/virtual-user/virtual-user-catalogue.js';
4
+ export { deriveCatalogue, deriveIntents, } from '../wirings/virtual-user/virtual-user-derive.js';
5
+ export { DISPOSITIONS, dispositionProfile, } from '../wirings/virtual-user/virtual-user-dispositions.js';
6
+ export { intentsForPersona } from '../wirings/virtual-user/virtual-user-intents.js';
7
+ export { personaVirtualUserTarget } from '../wirings/virtual-user/virtual-user-target.js';
8
+ export { PRODUCTION_DISPOSITION } from '../wirings/virtual-user/virtual-user.types.js';
@@ -0,0 +1,20 @@
1
+ export { InMemoryWorkflowService } from '../services/in-memory-workflow-service.js';
2
+ export type { WorkflowService } from '../services/workflow-service.js';
3
+ export type { ApprovalStepMeta, ArrayPredicateStepMeta, BranchStepMeta, CancelStepMeta, Condition, FanoutStepMeta, FilterStepMeta, InlineStepMeta, InputSource, OutputBinding, ParallelGroupStepMeta, PikkuWorkflowWire, RpcStepMeta, SetStepMeta, SleepStepMeta, SuspendStepMeta, SwitchCaseMeta, SwitchStepMeta, WorkflowStepMeta, WorkflowStepOptions, WorkflowWireDoRPC, } from '../wirings/workflow/dsl/workflow-dsl.types.js';
4
+ export { template } from '../wirings/workflow/graph/template.js';
5
+ export type { PikkuWorkflowGraphConfig, PikkuWorkflowGraphResult, } from '../wirings/workflow/graph/wire-workflow-graph.js';
6
+ export { isRef } from '../wirings/workflow/graph/workflow-graph.types.js';
7
+ export { PikkuWorkflowService } from '../wirings/workflow/pikku-workflow-service.js';
8
+ export { buildRunTimeline, reconstructFinalState, reconstructStateAt, } from '../wirings/workflow/run-timeline.js';
9
+ export type { ReconstructedRunState, RunTimeline, } from '../wirings/workflow/run-timeline.js';
10
+ export { assertWorkflowRunOwner } from '../wirings/workflow/workflow-run-ownership.js';
11
+ export type { ContextVariable, CoreWorkflow, StepState, StepStatus, WorkflowContext, WorkflowPlannedStep, WorkflowQueueOptions, WorkflowRun, WorkflowRunMirror, WorkflowRunService, WorkflowRunStatus, WorkflowRunWire, WorkflowStatus, WorkflowVersionStatus, WorkflowsMeta, WorkflowsRuntimeMeta, } from '../wirings/workflow/workflow.types.js';
12
+ /**
13
+ * Types the exports above mention but do not themselves export. Without
14
+ * them a consumer's declaration emit has no name for the type it infers,
15
+ * and fails with TS2883 rather than reaching for the original entry point.
16
+ */
17
+ export type { CoreUserSession } from '../types/core.types.js';
18
+ export type { TemplateString } from '../wirings/workflow/graph/template.js';
19
+ export type { RefValue } from '../wirings/workflow/graph/workflow-graph.types.js';
20
+ export type { HistoryEntry } from '../wirings/workflow/run-timeline.js';
@@ -0,0 +1,6 @@
1
+ export { InMemoryWorkflowService } from '../services/in-memory-workflow-service.js';
2
+ export { template } from '../wirings/workflow/graph/template.js';
3
+ export { isRef } from '../wirings/workflow/graph/workflow-graph.types.js';
4
+ export { PikkuWorkflowService } from '../wirings/workflow/pikku-workflow-service.js';
5
+ export { buildRunTimeline, reconstructFinalState, reconstructStateAt, } from '../wirings/workflow/run-timeline.js';
6
+ export { assertWorkflowRunOwner } from '../wirings/workflow/workflow-run-ownership.js';
@@ -1,2 +1,10 @@
1
1
  export * from './errors.js';
2
2
  export { PikkuError, addError } from './error-handler.js';
3
+ /**
4
+ * Types the exports above mention but do not themselves export. Without
5
+ * them a consumer's declaration emit has no name for the type it infers,
6
+ * and fails with TS2883 rather than reaching for the original entry point.
7
+ */
8
+ export type { ErrorDetails } from './error-handler.js';
9
+ export { isExpectedError } from './error-handler.js';
10
+ export type { SerializedError } from './serialized-error.js';
@@ -1,2 +1,3 @@
1
1
  export * from './errors.js';
2
2
  export { PikkuError, addError } from './error-handler.js';
3
+ export { isExpectedError } from './error-handler.js';
@@ -0,0 +1,7 @@
1
+ export interface SerializedError {
2
+ message: string;
3
+ stack?: string;
4
+ code?: string;
5
+ expected?: boolean;
6
+ [key: string]: any;
7
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,139 @@
1
+ import type { MiddlewareMetadata } from '../middleware/middleware.types.js';
2
+ import type { AuditDurability } from '../services/audit-service.js';
3
+ import type { ScenarioStepKind, ScenarioSurface } from '../wirings/workflow/scenario-step.types.js';
4
+ import type { CommonWireMeta } from '../types/core.types.js';
5
+ export interface FunctionServicesMeta {
6
+ optimized: boolean;
7
+ services: string[];
8
+ }
9
+ export interface FunctionWiresMeta {
10
+ optimized: boolean;
11
+ wires: string[];
12
+ }
13
+ /**
14
+ * A reference to a permission function, resolved by name. Function-scoped
15
+ * only: there are no wire- or tag-level permission references.
16
+ */
17
+ export type PermissionMetadata = {
18
+ type: 'wire';
19
+ name: string;
20
+ inline?: boolean;
21
+ };
22
+ export type FunctionRuntimeMeta = {
23
+ pikkuFuncId: string;
24
+ inputSchemaName: string | null;
25
+ outputSchemaName: string | null;
26
+ /** Scopes the session must hold to run this function. All are required (AND). */
27
+ scopes?: string[];
28
+ expose?: boolean;
29
+ /**
30
+ * A sessionless function's own `auth: true`. `sessionless` carries the
31
+ * baseline — a `pikkuFunc` always requires a session — and this carries the
32
+ * tightening a `pikkuSessionlessFunc` applies to itself. Both are needed to
33
+ * know whether a function is gated without running it.
34
+ */
35
+ auth?: boolean;
36
+ /**
37
+ * The author's declaration that this function's permission check lives in its
38
+ * own body. Carries no runtime effect — it records a gate codegen cannot see,
39
+ * so an audit is not left to guess whether a sessionless function is open.
40
+ * Refused unless `allow.permissionsInBody` is set in `pikku.config.json`.
41
+ */
42
+ permissionsInBody?: boolean;
43
+ remote?: boolean;
44
+ /**
45
+ * A step RPC: invoked by name only from a scenario run and refused
46
+ * everywhere else, so it is never network-callable.
47
+ */
48
+ scenarioStep?: boolean;
49
+ /**
50
+ * The body of a `pikkuScenario(...)`. Only ever run by `pikku scenario run`,
51
+ * so it is held back from the app bootstrap and from every deployed unit.
52
+ */
53
+ scenario?: boolean;
54
+ mcp?: boolean;
55
+ readonly?: boolean;
56
+ deploy?: 'serverless' | 'server' | 'auto';
57
+ sessionless?: boolean;
58
+ /** When true, workflow steps calling this function are dispatched via the queue. No queue service configured is a hard error. */
59
+ workflowQueued?: boolean;
60
+ /** Retry count when this function is used as a workflow step. */
61
+ workflowRetries?: number;
62
+ /** Timeout when this function is used as a workflow step (e.g. '30s', '5m'). */
63
+ workflowTimeout?: string;
64
+ /**
65
+ * Scenario steps only: which surfaces this step declares a binding for.
66
+ *
67
+ * The reporter derives coverage from this — a `then` with no binding for the
68
+ * surface the run targeted was never actually witnessed there, which is a gap
69
+ * worth counting rather than excusing.
70
+ */
71
+ scenarioStepSurfaces?: ScenarioSurface[];
72
+ /**
73
+ * Scenario steps only: this step runs as a persona, so every call site must
74
+ * pass one and the runner injects it as `wire.actor`.
75
+ *
76
+ * Declared by `actor: true`, or implied by a `browser` binding — a window is
77
+ * opened as somebody. Absent on a step with nobody to be: an assertion over
78
+ * what an earlier step returned, or one posting credentials precisely because
79
+ * it must not reuse an actor's session.
80
+ */
81
+ scenarioStepRequiresActor?: boolean;
82
+ /**
83
+ * Scenario steps only: who acts. Absent means `persona` — the ordinary step,
84
+ * and the only kind that existed before the other two.
85
+ *
86
+ * A `platform` or `addon` step is the app or a third-party system acting, and
87
+ * it must never reach a virtual user's catalogue. That is not tidiness: a
88
+ * virtual user that can invoke "Stripe's webhook arrives" can forge its own
89
+ * payment success, and every finding downstream of that is worthless.
90
+ */
91
+ scenarioStepKind?: ScenarioStepKind;
92
+ /** Addon steps only: the addon whose system acts — `wireAddon`'s `name`. */
93
+ scenarioStepAddon?: string;
94
+ /** Scenario steps only: the prose a reporter renders, with `{placeholders}` filled from the step's recorded input. */
95
+ scenarioStepTemplate?: string;
96
+ /**
97
+ * The function's `audit` config, resolved — `audit: true` reads as
98
+ * `{ durability: 'best-effort' }`. Absent means the function records nothing:
99
+ * `auditLog.write()` from an unmarked function is dropped with a warning, so
100
+ * this is the only place a reader can see which functions have a trail at all
101
+ * without running them.
102
+ *
103
+ * Informational. The runner resolves audit from the live function config, not
104
+ * from here, so meta and runtime cannot disagree about whether audit is on.
105
+ */
106
+ audit?: {
107
+ durability: AuditDurability;
108
+ };
109
+ version?: number;
110
+ approvalRequired?: boolean;
111
+ approvalDescription?: string;
112
+ implementationHash?: string;
113
+ contractHash?: string;
114
+ inputHash?: string;
115
+ outputHash?: string;
116
+ };
117
+ export type FunctionMeta = FunctionRuntimeMeta & Partial<{
118
+ name: string;
119
+ /** `remote`: a contract with no local body, answered by a connected client. */
120
+ functionType: 'user' | 'inline' | 'helper' | 'remote';
121
+ funcWrapper: string;
122
+ services: FunctionServicesMeta;
123
+ wires: FunctionWiresMeta;
124
+ inputs: string[] | null;
125
+ outputs: string[] | null;
126
+ middleware: MiddlewareMetadata[];
127
+ permissions: PermissionMetadata[];
128
+ isDirectFunction: boolean;
129
+ sourceFile: string;
130
+ exportedName: string;
131
+ /** File containing the handler body when it differs from sourceFile (imported handlers) */
132
+ bodySourceFile?: string;
133
+ /** 1-indexed first line of the handler body (verbose meta; coverage mapping) */
134
+ bodyStart: number;
135
+ /** 1-indexed last line of the handler body (verbose meta; coverage mapping) */
136
+ bodyEnd: number;
137
+ } & CommonWireMeta>;
138
+ export type FunctionsRuntimeMeta = Record<string, FunctionRuntimeMeta>;
139
+ export type FunctionsMeta = Record<string, FunctionMeta>;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,9 +1,10 @@
1
- import type { CoreUserSession, CorePikkuMiddleware, PikkuWiringTypes, PikkuRawWire, MiddlewareMetadata, CoreSingletonServices, CreateWireServices } from '../types/core.types.js';
1
+ import type { CoreUserSession, PikkuWiringTypes, PikkuRawWire, CoreSingletonServices, CreateWireServices } from '../types/core.types.js';
2
+ import type { CorePikkuMiddleware, MiddlewareMetadata } from '../middleware/middleware.types.js';
2
3
  import type { CorePikkuChannelMiddleware } from '../wirings/channel/channel.types.js';
3
4
  import type { CorePikkuFunctionConfig } from './functions.types.js';
4
5
  import type { SessionService } from '../services/user-session-service.js';
5
6
  import { PikkuCredentialWireService } from '../services/credential-wire-service.js';
6
- import type { AddonInstance } from '../wirings/rpc/addon-runner.js';
7
+ import type { AddonInstance } from '../wirings/addon/addon-runner.js';
7
8
  export declare const addFunction: (funcName: string, funcConfig: CorePikkuFunctionConfig<any, any>, packageName?: string | null) => void;
8
9
  export declare const getFunctionNames: (packageName?: string | null) => string[];
9
10
  export declare const getAllFunctionNames: () => string[];
@@ -13,8 +13,8 @@ import { PikkuCredentialWireService, createWireServicesCredentialWireProps, } fr
13
13
  import { defaultPikkuUserIdResolver } from '../services/pikku-user-id.js';
14
14
  import { createInvocationAudit, resolveAuditConfig, } from '../services/audit-service.js';
15
15
  import { rpcService } from '../wirings/rpc/rpc-runner.js';
16
- import { getOrCreatePackageSingletonServices } from '../wirings/rpc/addon-runner.js';
17
- import { resolveAddonAuth, resolveAddonScopes, resolveAddonTagMiddleware, } from '../wirings/rpc/wire-addon.js';
16
+ import { getOrCreatePackageSingletonServices } from '../wirings/addon/addon-runner.js';
17
+ import { resolveAddonAuth, resolveAddonFunctionTarget, resolveAddonScopes, resolveAddonTagMiddleware, } from '../wirings/addon/wire-addon.js';
18
18
  import { closeWireServices } from '../utils.js';
19
19
  async function resolveSession(wire, singletonServices, sessionService) {
20
20
  const pikkuUserId = defaultPikkuUserIdResolver(wire);
@@ -77,6 +77,26 @@ export const runPikkuFunc = async (wireType, wireId, funcName, { singletonServic
77
77
  }
78
78
  }
79
79
  }
80
+ /**
81
+ * The package the *function* belongs to, which is the wire's own until a
82
+ * `ref()` resolves the target into an addon. The wiring stays the consuming
83
+ * app's — that is what keeps the app's middleware running rather than the
84
+ * addon's — but everything the function is declared with lives in the addon's
85
+ * package state, so its schemas, services and permissions are read from here.
86
+ */
87
+ let funcPackageName = packageName;
88
+ if (!funcMeta) {
89
+ const addonTarget = resolveAddonFunctionTarget(funcName, packageName);
90
+ if (addonTarget) {
91
+ funcConfig =
92
+ funcConfig ||
93
+ pikkuState(addonTarget.packageName, 'function', 'functions').get(addonTarget.localName);
94
+ funcMeta = pikkuState(addonTarget.packageName, 'function', 'meta')[addonTarget.localName];
95
+ if (funcMeta) {
96
+ funcPackageName = addonTarget.packageName;
97
+ }
98
+ }
99
+ }
80
100
  if (!funcConfig) {
81
101
  throw new Error(`Function not found: ${funcName}`);
82
102
  }
@@ -84,12 +104,12 @@ export const runPikkuFunc = async (wireType, wireId, funcName, { singletonServic
84
104
  throw new Error(`Function meta not found: ${funcName}`);
85
105
  }
86
106
  const resolvedFunctionId = funcMeta.pikkuFuncId ?? funcName;
87
- const resolvedSingletonServices = packageName
88
- ? await getOrCreatePackageSingletonServices(packageName, singletonServices, addonInstance)
107
+ const resolvedSingletonServices = funcPackageName
108
+ ? await getOrCreatePackageSingletonServices(funcPackageName, singletonServices, addonInstance)
89
109
  : singletonServices;
90
110
  let resolvedCreateWireServices = createWireServices;
91
- if (packageName) {
92
- const factories = pikkuState(packageName, 'package', 'factories');
111
+ if (funcPackageName) {
112
+ const factories = pikkuState(funcPackageName, 'package', 'factories');
93
113
  if (factories?.createWireServices) {
94
114
  resolvedCreateWireServices = factories.createWireServices;
95
115
  }
@@ -192,11 +212,11 @@ export const runPikkuFunc = async (wireType, wireId, funcName, { singletonServic
192
212
  let actualData = await data();
193
213
  const inputSchemaName = funcMeta.inputSchemaName;
194
214
  if (inputSchemaName) {
195
- actualData = applyDefaultsFromSchema(inputSchemaName, actualData, packageName);
215
+ actualData = applyDefaultsFromSchema(inputSchemaName, actualData, funcPackageName);
196
216
  if (coerceDataFromSchema) {
197
- coerceTopLevelDataFromSchema(inputSchemaName, actualData, packageName);
217
+ coerceTopLevelDataFromSchema(inputSchemaName, actualData, funcPackageName);
198
218
  }
199
- await validateSchema(resolvedSingletonServices.logger, resolvedSingletonServices.schema, inputSchemaName, actualData, packageName);
219
+ await validateSchema(resolvedSingletonServices.logger, resolvedSingletonServices.schema, inputSchemaName, actualData, funcPackageName);
200
220
  }
201
221
  await runPermissions({
202
222
  funcPermissions: funcConfig.permissions,
@@ -204,7 +224,7 @@ export const runPikkuFunc = async (wireType, wireId, funcName, { singletonServic
204
224
  // knowledge: decisions/security/a-permission-gets-a-wire-it-cannot-reply-on.md
205
225
  wire: invocationWire,
206
226
  data: actualData,
207
- packageName,
227
+ packageName: funcPackageName,
208
228
  });
209
229
  let wireServices;
210
230
  let invocationAuditLog;
@@ -220,7 +240,7 @@ export const runPikkuFunc = async (wireType, wireId, funcName, { singletonServic
220
240
  invocationAuditLog = createInvocationAudit(resolvedSingletonServices.audit, invocationWire, resolvedSingletonServices.logger);
221
241
  services = { ...services, auditLog: invocationAuditLog };
222
242
  }
223
- const callerPackageName = packageName;
243
+ const callerPackageName = funcPackageName;
224
244
  Object.defineProperty(invocationWire, 'rpc', {
225
245
  get() {
226
246
  const rpc = rpcService.getContextRPCService(services, invocationWire, { sessionService }, 0, callerPackageName);
@@ -1,10 +1,12 @@
1
- import type { CoreServices, CoreSecretlessSingletonServices, CoreUserSession, CorePikkuMiddleware, PikkuWire, PickRequired, SecretlessServices } from '../types/core.types.js';
1
+ import type { CoreServices, CoreSecretlessSingletonServices, CoreUserSession, PikkuWire, SecretlessServices } from '../types/core.types.js';
2
+ import type { CorePikkuMiddleware } from '../middleware/middleware.types.js';
3
+ import type { PickRequired } from '../utils.js';
2
4
  import type { PikkuRPC } from '../wirings/rpc/rpc-types.js';
3
5
  import type { StandardSchemaV1 } from '@standard-schema/spec';
4
6
  import type { PikkuError } from '../errors/error-handler.js';
5
7
  import type { CoreNodeConfig } from '../wirings/node/node.types.js';
6
8
  import type { ScenarioSurface } from '../wirings/workflow/scenario-step.types.js';
7
- import type { Safe } from '../secret-value.js';
9
+ import type { Safe } from '../classification/secret-value.js';
8
10
  export type CorePikkuFunction<In, Out, Services extends CoreSecretlessSingletonServices = SecretlessServices<CoreServices>, Session extends CoreUserSession = CoreUserSession, Wire extends PikkuWire<In, Out, true, Session, PikkuRPC, null, string> = PikkuWire<In, Out, true, Session>> = (services: Services, data: In, wire: Wire) => Wire['channel'] extends null ? Promise<Safe<Out>> : Promise<Safe<Out>> | Promise<void>;
9
11
  export type CorePikkuFunctionSessionless<In, Out, Services extends CoreSecretlessSingletonServices = SecretlessServices<CoreServices>, Session extends CoreUserSession = CoreUserSession, Wire extends PikkuWire<In, Out, false, Session, PikkuRPC, null, string> = PikkuWire<In, Out, false, Session>> = (services: Services, data: In, wire: Wire) => Wire['channel'] extends null ? Promise<Safe<Out>> : Promise<Safe<Out>> | Promise<void>;
10
12
  export type CorePikkuPermission<In = any, Services extends CoreSecretlessSingletonServices = SecretlessServices<CoreServices>, Wire extends PikkuWire<In, never, false, any, PikkuRPC, never, never> = PikkuWire<In, never, false, any, PikkuRPC, never, never>> = (services: Services, data: In, wire: Wire) => Promise<boolean>;
@@ -83,6 +85,12 @@ export type CorePikkuFunctionConfig<PikkuFunction extends CorePikkuFunction<any,
83
85
  * and report how much of the flow each surface actually covers.
84
86
  */
85
87
  surfaces?: ScenarioSurface[];
88
+ /**
89
+ * Scenario steps only: this step is driven by a persona, so the runner injects
90
+ * `wire.actor` and refuses to dispatch it without one. Set by the definer from
91
+ * a `browser` binding or an explicit `actor: true`, never written by hand.
92
+ */
93
+ requiresActor?: boolean;
86
94
  audit?: boolean | {
87
95
  durability?: 'best-effort' | 'transactional';
88
96
  };