@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,80 @@
1
+ import type { CorePikkuMiddleware } from '../../middleware/middleware.types.js';
2
+ export type WireAddonConfig = {
3
+ name: string;
4
+ package: string;
5
+ rpcEndpoint?: string;
6
+ auth?: boolean;
7
+ mcp?: boolean;
8
+ tags?: string[];
9
+ /** Required of every function in the addon, on top of the function's own. */
10
+ scopes?: string[];
11
+ secretOverrides?: Record<string, string>;
12
+ variableOverrides?: Record<string, string>;
13
+ credentialOverrides?: Record<string, string>;
14
+ /**
15
+ * Secrets this instance may read on top of the ones it declared, named as the
16
+ * addon reads them — the scope check runs before `secretOverrides` renames
17
+ * them, so an overridden secret is named here by its addon-side key. Listing
18
+ * one in `secretOverrides` grants it too.
19
+ *
20
+ * For an addon whose secret names come off its input rather than its own
21
+ * source, this is how the host lends names the addon could not declare.
22
+ */
23
+ secretGrants?: string[];
24
+ /** Credentials this instance may read on top of the ones it declared. */
25
+ credentialGrants?: string[];
26
+ /**
27
+ * Hands this instance the whole `SecretService` instead of one scoped to the
28
+ * secrets it declared. The value is the reason, recorded in the deploy
29
+ * manifest — an addon that names secrets at runtime cannot be scoped, and
30
+ * only the consuming app, never the addon, can grant it.
31
+ */
32
+ globalSecrets?: string;
33
+ /**
34
+ * Hands this instance the whole `CredentialService` instead of one narrowed
35
+ * to the credentials it declared. The value is the reason, recorded in the
36
+ * deploy manifest, and only the consuming app can grant it.
37
+ */
38
+ globalCredentials?: string;
39
+ };
40
+ export declare const wireAddon: (config: WireAddonConfig) => void;
41
+ /**
42
+ * knowledge: decisions/security/addon-scopes-are-resolved-where-the-function-runs.md
43
+ */
44
+ export declare const resolveAddonScopes: (packageName: string | null, namespace?: string) => string[];
45
+ /**
46
+ * knowledge: decisions/security/addon-auth-and-tags-only-tighten.md
47
+ */
48
+ export declare const resolveAddonTags: (packageName: string | null, namespace?: string) => string[];
49
+ /**
50
+ * True when any governing instance requires a session. `auth: false` is not
51
+ * honoured here — on a direct wiring it would weaken the wiring's own gate.
52
+ *
53
+ * knowledge: decisions/security/addon-auth-and-tags-only-tighten.md
54
+ */
55
+ export declare const resolveAddonAuth: (packageName: string | null, namespace?: string) => boolean;
56
+ /**
57
+ * The package a namespaced function id belongs to, and the name that package
58
+ * publishes it under.
59
+ *
60
+ * A wiring that points at an addon function through `ref('ns:fn')` records
61
+ * `ns:fn` as its own function id — the same id every other wire type records —
62
+ * but the addon publishes its metadata under the bare `fn`, in its own package
63
+ * state. Without this the wire finds the function it registered and no metadata
64
+ * to run it by.
65
+ *
66
+ * The wiring itself stays the consuming app's, so `packageName` is the package
67
+ * the *wire* runs in, not the target's: it is null for a `ref()` the app wired,
68
+ * and only narrows the lookup when a wire really does run inside the addon.
69
+ */
70
+ export declare const resolveAddonFunctionTarget: (funcName: string, packageName: string | null) => {
71
+ packageName: string;
72
+ localName: string;
73
+ } | null;
74
+ /**
75
+ * Addon tags name middleware the *consuming app* registered, so they resolve
76
+ * against the root tag groups rather than the addon package's own.
77
+ *
78
+ * knowledge: decisions/security/addon-auth-and-tags-only-tighten.md
79
+ */
80
+ export declare const resolveAddonTagMiddleware: (packageName: string | null, namespace?: string) => CorePikkuMiddleware[];
@@ -0,0 +1,120 @@
1
+ import { pikkuState } from '../../pikku-state.js';
2
+ import { getTagGroups } from '../../utils.js';
3
+ export const wireAddon = (config) => {
4
+ pikkuState(null, 'addons', 'packages').set(config.name, {
5
+ package: config.package,
6
+ rpcEndpoint: config.rpcEndpoint,
7
+ auth: config.auth,
8
+ tags: config.tags,
9
+ ...(config.scopes ? { scopes: config.scopes } : {}),
10
+ ...(config.secretOverrides
11
+ ? { secretOverrides: config.secretOverrides }
12
+ : {}),
13
+ ...(config.variableOverrides
14
+ ? { variableOverrides: config.variableOverrides }
15
+ : {}),
16
+ ...(config.credentialOverrides
17
+ ? { credentialOverrides: config.credentialOverrides }
18
+ : {}),
19
+ ...(config.secretGrants ? { secretGrants: config.secretGrants } : {}),
20
+ ...(config.credentialGrants
21
+ ? { credentialGrants: config.credentialGrants }
22
+ : {}),
23
+ ...(config.globalSecrets ? { globalSecrets: config.globalSecrets } : {}),
24
+ ...(config.globalCredentials
25
+ ? { globalCredentials: config.globalCredentials }
26
+ : {}),
27
+ });
28
+ };
29
+ /**
30
+ * The addon configs a running function is governed by: the named instance when
31
+ * the caller resolved one, every instance of the package otherwise.
32
+ *
33
+ * knowledge: decisions/security/addon-scopes-are-resolved-where-the-function-runs.md
34
+ */
35
+ const governingAddonConfigs = (packageName, namespace) => {
36
+ if (!packageName) {
37
+ return [];
38
+ }
39
+ const addons = pikkuState(null, 'addons', 'packages');
40
+ if (!addons) {
41
+ return [];
42
+ }
43
+ if (namespace) {
44
+ const config = addons.get(namespace);
45
+ if (config?.package === packageName) {
46
+ return [config];
47
+ }
48
+ }
49
+ return [...addons.values()].filter((config) => config?.package === packageName);
50
+ };
51
+ const unionOf = (packageName, namespace, field) => {
52
+ const values = new Set();
53
+ for (const config of governingAddonConfigs(packageName, namespace)) {
54
+ for (const value of config[field] ?? []) {
55
+ values.add(value);
56
+ }
57
+ }
58
+ return [...values];
59
+ };
60
+ /**
61
+ * knowledge: decisions/security/addon-scopes-are-resolved-where-the-function-runs.md
62
+ */
63
+ export const resolveAddonScopes = (packageName, namespace) => unionOf(packageName, namespace, 'scopes');
64
+ /**
65
+ * knowledge: decisions/security/addon-auth-and-tags-only-tighten.md
66
+ */
67
+ export const resolveAddonTags = (packageName, namespace) => unionOf(packageName, namespace, 'tags');
68
+ /**
69
+ * True when any governing instance requires a session. `auth: false` is not
70
+ * honoured here — on a direct wiring it would weaken the wiring's own gate.
71
+ *
72
+ * knowledge: decisions/security/addon-auth-and-tags-only-tighten.md
73
+ */
74
+ export const resolveAddonAuth = (packageName, namespace) => governingAddonConfigs(packageName, namespace).some((config) => config.auth === true);
75
+ /**
76
+ * The package a namespaced function id belongs to, and the name that package
77
+ * publishes it under.
78
+ *
79
+ * A wiring that points at an addon function through `ref('ns:fn')` records
80
+ * `ns:fn` as its own function id — the same id every other wire type records —
81
+ * but the addon publishes its metadata under the bare `fn`, in its own package
82
+ * state. Without this the wire finds the function it registered and no metadata
83
+ * to run it by.
84
+ *
85
+ * The wiring itself stays the consuming app's, so `packageName` is the package
86
+ * the *wire* runs in, not the target's: it is null for a `ref()` the app wired,
87
+ * and only narrows the lookup when a wire really does run inside the addon.
88
+ */
89
+ export const resolveAddonFunctionTarget = (funcName, packageName) => {
90
+ const separator = funcName.indexOf(':');
91
+ if (separator === -1) {
92
+ return null;
93
+ }
94
+ const namespace = funcName.slice(0, separator);
95
+ const config = pikkuState(null, 'addons', 'packages').get(namespace);
96
+ if (!config) {
97
+ return null;
98
+ }
99
+ if (packageName && config.package !== packageName) {
100
+ return null;
101
+ }
102
+ return {
103
+ packageName: config.package,
104
+ localName: funcName.slice(separator + 1),
105
+ };
106
+ };
107
+ /**
108
+ * Addon tags name middleware the *consuming app* registered, so they resolve
109
+ * against the root tag groups rather than the addon package's own.
110
+ *
111
+ * knowledge: decisions/security/addon-auth-and-tags-only-tighten.md
112
+ */
113
+ export const resolveAddonTagMiddleware = (packageName, namespace) => {
114
+ const tags = resolveAddonTags(packageName, namespace);
115
+ if (tags.length === 0) {
116
+ return [];
117
+ }
118
+ const tagGroups = pikkuState(null, 'middleware', 'tagGroup');
119
+ return tags.flatMap((tag) => getTagGroups(tagGroups, tag).flat());
120
+ };
@@ -0,0 +1,22 @@
1
+ import type { CoreServices, PikkuWire } from '../../types/core.types.js';
2
+ /** Sent as `Authorization: Bearer <token>`; a non-default header is declared by the addon. */
3
+ export type RemoteAddonAuth = {
4
+ credentialId: string;
5
+ } | {
6
+ secretId: string;
7
+ } | {
8
+ resolve: (services: CoreServices, wire: PikkuWire) => string | Promise<string>;
9
+ };
10
+ export type WireRemoteAddonConfig = {
11
+ /** Consumer-facing namespace, e.g. `registry` → `rpc('registry:getOpenApi')` */
12
+ name: string;
13
+ /** Must be installed as a devDependency — `pikku verify` enforces this. */
14
+ package: string;
15
+ serverUrl: string | ((services: CoreServices) => string | Promise<string>);
16
+ /** Omit when the addon declares its remote surface public. */
17
+ auth?: RemoteAddonAuth;
18
+ /** Map a consumer-facing fn name → the remote fn name, when they differ (rare). */
19
+ remoteName?: (fn: string) => string;
20
+ tags?: string[];
21
+ };
22
+ export declare const wireRemoteAddon: (config: WireRemoteAddonConfig) => void;
@@ -0,0 +1,11 @@
1
+ import { pikkuState } from '../../pikku-state.js';
2
+ export const wireRemoteAddon = (config) => {
3
+ pikkuState(null, 'addons', 'packages').set(config.name, {
4
+ package: config.package,
5
+ tags: config.tags,
6
+ remote: true,
7
+ serverUrl: config.serverUrl,
8
+ ...(config.auth ? { remoteAuth: config.auth } : {}),
9
+ ...(config.remoteName ? { remoteName: config.remoteName } : {}),
10
+ });
11
+ };
@@ -1,4 +1,4 @@
1
- import type { AIStreamChannel } from './ai-agent.types.js';
1
+ import type { AgentStreamChannel } from './agent.types.js';
2
2
  type AGUIEvent = {
3
3
  type: 'TEXT_MESSAGE_START';
4
4
  messageId: string;
@@ -76,4 +76,4 @@ export type AGUIChannelOptions = {
76
76
  runId?: string;
77
77
  getRunId?: () => string | undefined;
78
78
  };
79
- export declare function wrapChannelWithAGUI(inner: AIStreamChannel, options?: AGUIChannelOptions): AIStreamChannel;
79
+ export declare function wrapChannelWithAGUI(inner: AgentStreamChannel, options?: AGUIChannelOptions): AgentStreamChannel;
@@ -1,4 +1,4 @@
1
- import { randomUUID } from './ai-agent-utils.js';
1
+ import { randomUUID } from './agent-utils.js';
2
2
  function resultToString(result) {
3
3
  if (typeof result === 'string')
4
4
  return result;
@@ -1,5 +1,5 @@
1
- import type { AIAgentStep, AIMessage, PikkuAIMiddlewareHooks } from './ai-agent.types.js';
2
- import type { AIRunStateService } from '../../services/ai-run-state-service.js';
1
+ import type { AgentStep, AgentMessage, PikkuAgentMiddlewareHooks } from './agent.types.js';
2
+ import type { AgentRunStateService } from '../../services/agent-run-state-service.js';
3
3
  export type RunUsage = {
4
4
  inputTokens: number;
5
5
  outputTokens: number;
@@ -19,32 +19,32 @@ export type FinalizedRun = {
19
19
  /** The prompt the run answered — what a scorer grades the answer against. */
20
20
  input: string;
21
21
  text: string;
22
- steps: AIAgentStep[];
22
+ steps: AgentStep[];
23
23
  usage: RunUsage;
24
24
  };
25
25
  /**
26
26
  * The prompt a run answered: the most recent user turn, which is what the model
27
27
  * was last asked. On a resumed run the earlier turns are context, not the ask.
28
28
  */
29
- export declare const lastUserMessageText: (messages: AIMessage[]) => string;
29
+ export declare const lastUserMessageText: (messages: AgentMessage[]) => string;
30
30
  /**
31
31
  * Run the `modifyOutput` chain over a finished non-streaming run.
32
32
  *
33
33
  * Reverse order, matching the input chain: the middleware registered first
34
34
  * wraps the others, so it sees the output last.
35
35
  */
36
- export declare const applyOutputMiddleware: (aiMiddlewares: PikkuAIMiddlewareHooks[], singletonServices: any, input: {
36
+ export declare const applyOutputMiddleware: (agentMiddlewares: PikkuAgentMiddlewareHooks[], singletonServices: any, input: {
37
37
  text: string;
38
- messages: AIMessage[];
39
- steps: AIAgentStep[];
38
+ messages: AgentMessage[];
39
+ steps: AgentStep[];
40
40
  usage: {
41
41
  inputTokens: number;
42
42
  outputTokens: number;
43
43
  };
44
44
  }) => Promise<{
45
45
  text: string;
46
- messages: AIMessage[];
47
- steps: AIAgentStep[];
46
+ messages: AgentMessage[];
47
+ steps: AgentStep[];
48
48
  }>;
49
49
  /**
50
50
  * The one place a run ends successfully.
@@ -55,4 +55,4 @@ export declare const applyOutputMiddleware: (aiMiddlewares: PikkuAIMiddlewareHoo
55
55
  * may rewrite the run: by this point the output middleware has resolved and, on
56
56
  * the streaming path, the client already has the reply.
57
57
  */
58
- export declare const finalizeAgentRun: (aiRunState: AIRunStateService, run: FinalizedRun) => Promise<void>;
58
+ export declare const finalizeAgentRun: (agentRunState: AgentRunStateService, run: FinalizedRun) => Promise<void>;
@@ -1,6 +1,6 @@
1
1
  import { pikkuState } from '../../pikku-state.js';
2
- import { scoreFinishedRun } from '../ai-scorer/ai-scorer-live.js';
3
- import { recordScoreSnapshot } from '../ai-scorer/ai-scorer-snapshots.js';
2
+ import { scoreFinishedRun } from '../agent-scorer/agent-scorer-live.js';
3
+ import { recordScoreSnapshot } from '../agent-scorer/agent-scorer-snapshots.js';
4
4
  /**
5
5
  * The prompt a run answered: the most recent user turn, which is what the model
6
6
  * was last asked. On a resumed run the earlier turns are context, not the ask.
@@ -50,13 +50,13 @@ const distributeToolCalls = (steps, toolCalls) => {
50
50
  * Reverse order, matching the input chain: the middleware registered first
51
51
  * wraps the others, so it sees the output last.
52
52
  */
53
- export const applyOutputMiddleware = async (aiMiddlewares, singletonServices, input) => {
53
+ export const applyOutputMiddleware = async (agentMiddlewares, singletonServices, input) => {
54
54
  let text = input.text;
55
55
  let messages = input.messages;
56
56
  let steps = input.steps;
57
57
  let toolCalls = flattenToolCalls(steps);
58
- for (let i = aiMiddlewares.length - 1; i >= 0; i--) {
59
- const mw = aiMiddlewares[i];
58
+ for (let i = agentMiddlewares.length - 1; i >= 0; i--) {
59
+ const mw = agentMiddlewares[i];
60
60
  if (!mw.modifyOutput)
61
61
  continue;
62
62
  const result = await mw.modifyOutput(singletonServices, {
@@ -86,8 +86,8 @@ export const applyOutputMiddleware = async (aiMiddlewares, singletonServices, in
86
86
  * may rewrite the run: by this point the output middleware has resolved and, on
87
87
  * the streaming path, the client already has the reply.
88
88
  */
89
- export const finalizeAgentRun = async (aiRunState, run) => {
90
- await aiRunState.updateRun(run.runId, {
89
+ export const finalizeAgentRun = async (agentRunState, run) => {
90
+ await agentRunState.updateRun(run.runId, {
91
91
  status: 'completed',
92
92
  ...(run.usage.model
93
93
  ? {
@@ -1,4 +1,4 @@
1
- import type { AgentInterruptResult } from './ai-agent-interrupt.js';
1
+ import type { AgentInterruptResult } from './agent-interrupt.js';
2
2
  export declare function agent<TAgentMap extends Record<string, {
3
3
  output: any;
4
4
  }>>(agentName: string & keyof TAgentMap): {
@@ -1,11 +1,11 @@
1
- import type { AIStorageService } from '../../services/ai-storage-service.js';
1
+ import type { AgentStorageService } from '../../services/agent-storage-service.js';
2
2
  /**
3
3
  * Why an in-flight agent run was cut short.
4
4
  *
5
5
  * Deliberately carries no interjection text. A voice interruption is not a
6
6
  * cancel button — it is the user starting to talk — but what they said arrives
7
7
  * a second later as an ordinary next turn on the same thread, and that turn
8
- * already has a working path through `streamAIAgent`. The model then sees its
8
+ * already has a working path through `streamAgent`. The model then sees its
9
9
  * own truncated message (marked `interrupted`) followed by the interjection and
10
10
  * decides for itself whether to resume, correct itself or drop the thread.
11
11
  * Nothing here classifies the interjection; a second delivery path for the same
@@ -95,7 +95,7 @@ export declare const registerInterruptibleRun: (runId: string) => InterruptibleR
95
95
  * Stop a run that is generating right now.
96
96
  *
97
97
  * Plumbing: this performs NO authorization, so anyone holding a runId can stop
98
- * it. Reach for {@link interruptAIAgent} instead unless the caller has already
98
+ * it. Reach for {@link interruptAgent} instead unless the caller has already
99
99
  * established that the run belongs to the session — which in practice means
100
100
  * only the runner itself and code already inside an authorized run.
101
101
  *
@@ -143,7 +143,7 @@ export declare const awaitPendingInterruptNote: (threadId: string) => Promise<vo
143
143
  * it: an interrupt has to end the reply immediately, and a slow tool must not
144
144
  * hold that up.
145
145
  */
146
- export declare const persistOrphanedToolResults: (handle: InterruptibleRunHandle, storage: AIStorageService, threadId: string) => Promise<void>;
146
+ export declare const persistOrphanedToolResults: (handle: InterruptibleRunHandle, storage: AgentStorageService, threadId: string) => Promise<void>;
147
147
  /**
148
148
  * Whether a thrown value is an abort rather than a failure. The AI SDK
149
149
  * surfaces cancellation as a DOMException/Error named `AbortError`, so the
@@ -1,4 +1,4 @@
1
- import { randomUUID } from './ai-agent-utils.js';
1
+ import { randomUUID } from './agent-utils.js';
2
2
  import { AbandonedError, runInAbortScope, } from '../../function/abort-scope.js';
3
3
  /**
4
4
  * Thrown out of the step loop when a run is interrupted, so an interruption is
@@ -110,7 +110,7 @@ export const registerInterruptibleRun = (runId) => {
110
110
  * Stop a run that is generating right now.
111
111
  *
112
112
  * Plumbing: this performs NO authorization, so anyone holding a runId can stop
113
- * it. Reach for {@link interruptAIAgent} instead unless the caller has already
113
+ * it. Reach for {@link interruptAgent} instead unless the caller has already
114
114
  * established that the run belongs to the session — which in practice means
115
115
  * only the runner itself and code already inside an authorized run.
116
116
  *
@@ -1,22 +1,22 @@
1
1
  import type { CoreSingletonServices } from '../../types/core.types.js';
2
- import type { CoreAIAgent, AIAgentMemoryConfig, AIAgentInput, AIAgentStep, AIMessage } from './ai-agent.types.js';
3
- import type { AIStorageService } from '../../services/ai-storage-service.js';
2
+ import type { CoreAgent, AgentMemoryConfig, AgentInput, AgentStep, AgentMessage } from './agent.types.js';
3
+ import type { AgentStorageService } from '../../services/agent-storage-service.js';
4
4
  import type { Logger } from '../../services/logger.js';
5
5
  import type { SchemaService } from '../../services/schema-service.js';
6
- import type { PikkuAIMiddlewareHooks } from './ai-agent.types.js';
7
- export declare function resolveMemoryServices(agent: CoreAIAgent, singletonServices: CoreSingletonServices): {
8
- storage: AIStorageService | undefined;
6
+ import type { PikkuAgentMiddlewareHooks } from './agent.types.js';
7
+ export declare function resolveMemoryServices(agent: CoreAgent, singletonServices: CoreSingletonServices): {
8
+ storage: AgentStorageService | undefined;
9
9
  };
10
- export declare function isWorkingMemoryEnabled(memoryConfig: AIAgentMemoryConfig | undefined, storage: AIStorageService | undefined): boolean;
10
+ export declare function isWorkingMemoryEnabled(memoryConfig: AgentMemoryConfig | undefined, storage: AgentStorageService | undefined): boolean;
11
11
  export declare function deepMergeWorkingMemory(existing: Record<string, unknown>, updates: Record<string, unknown>): Record<string, unknown>;
12
12
  export declare function buildWorkingMemoryPrompt(currentState: Record<string, unknown> | null, jsonSchema?: Record<string, unknown>): string;
13
- export declare function loadContextMessages(memoryConfig: AIAgentMemoryConfig | undefined, storage: AIStorageService | undefined, input: AIAgentInput, workingMemoryJsonSchema?: Record<string, unknown>): Promise<AIMessage[]>;
14
- export declare function saveMessages(storage: AIStorageService | undefined, threadId: string, resourceId: string, memoryConfig: AIAgentMemoryConfig | undefined, userMessage: AIMessage | null | undefined, result: {
13
+ export declare function loadContextMessages(memoryConfig: AgentMemoryConfig | undefined, storage: AgentStorageService | undefined, input: AgentInput, workingMemoryJsonSchema?: Record<string, unknown>): Promise<AgentMessage[]>;
14
+ export declare function saveMessages(storage: AgentStorageService | undefined, threadId: string, resourceId: string, memoryConfig: AgentMemoryConfig | undefined, userMessage: AgentMessage | null | undefined, result: {
15
15
  text: string;
16
16
  uiSpec?: unknown;
17
- steps: Pick<AIAgentStep, 'toolCalls'>[];
17
+ steps: Pick<AgentStep, 'toolCalls'>[];
18
18
  }): Promise<string>;
19
- export declare function trimMessages(messages: AIMessage[], maxTokenBudget?: number): AIMessage[];
19
+ export declare function trimMessages(messages: AgentMessage[], maxTokenBudget?: number): AgentMessage[];
20
20
  export declare function parseWorkingMemory(text: string): Record<string, unknown> | null;
21
21
  export declare function stripWorkingMemoryTags(text: string): string;
22
22
  export declare function extractWorkingMemory(text: string): {
@@ -25,18 +25,18 @@ export declare function extractWorkingMemory(text: string): {
25
25
  };
26
26
  export declare function stripWorkingMemoryForStreaming(text: string): string;
27
27
  export declare function createWorkingMemoryMiddleware(options: {
28
- storage?: AIStorageService;
28
+ storage?: AgentStorageService;
29
29
  threadId: string;
30
30
  workingMemorySchemaName?: string | null;
31
31
  logger?: Logger;
32
32
  schemaService?: SchemaService;
33
- }): PikkuAIMiddlewareHooks<{
33
+ }): PikkuAgentMiddlewareHooks<{
34
34
  rawText?: string;
35
35
  emittedVisibleText?: string;
36
36
  }>;
37
- export declare function getWorkingMemoryMiddleware(memoryConfig: AIAgentMemoryConfig | undefined, storage: AIStorageService | undefined, options: {
37
+ export declare function getWorkingMemoryMiddleware(memoryConfig: AgentMemoryConfig | undefined, storage: AgentStorageService | undefined, options: {
38
38
  threadId: string;
39
39
  workingMemorySchemaName?: string | null;
40
40
  logger?: Logger;
41
41
  schemaService?: SchemaService;
42
- }): PikkuAIMiddlewareHooks[];
42
+ }): PikkuAgentMiddlewareHooks[];
@@ -5,7 +5,7 @@ export function resolveMemoryServices(agent, singletonServices) {
5
5
  ? // The service is named by string in agent config, so the lookup cannot be
6
6
  // checked — only the shape it is required to have.
7
7
  singletonServices[memoryConfig.storage]
8
- : singletonServices.aiStorage;
8
+ : singletonServices.agentStorage;
9
9
  return { storage };
10
10
  }
11
11
  export function isWorkingMemoryEnabled(memoryConfig, storage) {
@@ -1,4 +1,4 @@
1
- // knowledge: decisions/internals/ai-agent-model-config-stays-a-single-resolution-seam.md
1
+ // knowledge: decisions/internals/agent-model-config-stays-a-single-resolution-seam.md
2
2
  import { pikkuState } from '../../pikku-state.js';
3
3
  const isProviderQualified = (model) => model.includes('/');
4
4
  /** `PIKKU_MODEL_ALIASES=cheap:openai/gpt-5-mini,tool:anthropic/claude-sonnet-5` */
@@ -1,18 +1,18 @@
1
- import type { CoreUserSession } from '../../types/core.types.js';
2
- import type { CoreAIAgent, AIAgentInput, AIAgentToolDef, AIMessage, AIStreamChannel, PikkuAIMiddlewareHooks, SessionScope } from './ai-agent.types.js';
3
- import type { AIAgentRunnerParams } from '../../services/ai-agent-runner-service.js';
1
+ import type { CoreUserSession, GetCredential } from '../../types/core.types.js';
2
+ import type { CoreAgent, AgentInput, AgentToolDef, AgentMessage, AgentStreamChannel, PikkuAgentMiddlewareHooks, SessionScope } from './agent.types.js';
3
+ import type { AgentRunnerParams } from '../../services/agent-runner-service.js';
4
4
  import { PikkuError } from '../../errors/error-handler.js';
5
5
  import type { SessionService } from '../../services/user-session-service.js';
6
- export type RunAIAgentParams = {
6
+ export type RunAgentParams = {
7
7
  sessionService?: SessionService<CoreUserSession>;
8
8
  /** Credential accessor for the current request — used to read per-user overrides (e.g. AI_API_KEY). */
9
- getCredential?: <T = unknown>(name: string) => T | null | Promise<T | null>;
9
+ getCredential?: GetCredential;
10
10
  /** Ephemeral owner identity minted for a sessionless request; never client-supplied, never reused across requests. */
11
11
  anonymousOwnerResourceId?: string;
12
12
  };
13
- export declare function resolveSessionPrincipal(params: RunAIAgentParams, sessionScope: SessionScope | undefined): string | undefined;
14
- export declare function resolveOwnerResourceId(params: RunAIAgentParams, sessionScope: SessionScope | undefined, requestedResourceId: string): string;
15
- export declare function assertResourcePrincipalOwner(params: RunAIAgentParams, sessionScope: SessionScope | undefined, storedResourceId: string, kind: 'thread' | 'run'): void;
13
+ export declare function resolveSessionPrincipal(params: RunAgentParams, sessionScope: SessionScope | undefined): string | undefined;
14
+ export declare function resolveOwnerResourceId(params: RunAgentParams, sessionScope: SessionScope | undefined, requestedResourceId: string): string;
15
+ export declare function assertResourcePrincipalOwner(params: RunAgentParams, sessionScope: SessionScope | undefined, storedResourceId: string, kind: 'thread' | 'run'): void;
16
16
  export declare function agentSessionScope(agentName: string): SessionScope;
17
17
  export declare function assertResourceOwner(ownerResourceId: string, storedResourceId: string, kind: 'thread' | 'run'): void;
18
18
  export declare function sessionPrincipals(session: {
@@ -28,7 +28,7 @@ export declare function canAccessThread(storedResourceId: string, session: {
28
28
  userId?: string;
29
29
  orgId?: string;
30
30
  } | undefined): boolean;
31
- export type StreamAIAgentOptions = {
31
+ export type StreamAgentOptions = {
32
32
  requiresToolApproval?: 'all' | 'explicit' | false;
33
33
  onRunCreated?: (runId: string) => void;
34
34
  };
@@ -67,20 +67,20 @@ export interface AddonCredentialRequirement {
67
67
  }
68
68
  export declare function getAddonCredentialRequirements(toolNames: string[]): AddonCredentialRequirement[];
69
69
  export type StreamContext = {
70
- channel: AIStreamChannel;
71
- options?: StreamAIAgentOptions;
70
+ channel: AgentStreamChannel;
71
+ options?: StreamAgentOptions;
72
72
  delegateState?: {
73
73
  delegated: boolean;
74
74
  };
75
75
  };
76
76
  export declare const resolveAgent: (agentName: string) => {
77
- agent: CoreAIAgent;
77
+ agent: CoreAgent;
78
78
  packageName: string | null;
79
79
  resolvedName: string;
80
80
  };
81
- export declare function assertAgentAuthorized(agent: CoreAIAgent, params: RunAIAgentParams, packageName: string | null): Promise<void>;
81
+ export declare function assertAgentAuthorized(agent: CoreAgent, params: RunAgentParams, packageName: string | null): Promise<void>;
82
82
  export declare function buildInstructions(agentName: string, packageName: string | null): Promise<string>;
83
- export type ScopedChannel = AIStreamChannel & {
83
+ export type ScopedChannel = AgentStreamChannel & {
84
84
  approvals: Array<{
85
85
  toolCallId: string;
86
86
  toolName: string;
@@ -89,27 +89,27 @@ export type ScopedChannel = AIStreamChannel & {
89
89
  runId: string;
90
90
  }>;
91
91
  };
92
- export declare function createScopedChannel(parent: AIStreamChannel, agentName: string, session: string): ScopedChannel;
92
+ export declare function createScopedChannel(parent: AgentStreamChannel, agentName: string, session: string): ScopedChannel;
93
93
  export declare function buildSubAgentRunInput(message: string, threadId: string, resourceId: string, parentContext?: string): {
94
94
  message: string;
95
95
  threadId: string;
96
96
  resourceId: string;
97
97
  context?: string;
98
98
  };
99
- export declare function buildToolDefs(params: RunAIAgentParams, agentSessionMap: Map<string, string>, resourceId: string, agentName: string, packageName: string | null, streamContext?: StreamContext, aiMiddlewares?: PikkuAIMiddlewareHooks[], agentMode?: 'delegate' | 'supervise', parentContext?: string): Promise<{
100
- tools: AIAgentToolDef[];
99
+ export declare function buildToolDefs(params: RunAgentParams, agentSessionMap: Map<string, string>, resourceId: string, agentName: string, packageName: string | null, streamContext?: StreamContext, agentMiddlewares?: PikkuAgentMiddlewareHooks[], agentMode?: 'delegate' | 'supervise', parentContext?: string): Promise<{
100
+ tools: AgentToolDef[];
101
101
  missingRpcs: string[];
102
102
  }>;
103
- export declare function prepareAgentRun(agentName: string, input: AIAgentInput, params: RunAIAgentParams, agentSessionMap: Map<string, string>, streamContext?: StreamContext): Promise<{
104
- agent: CoreAIAgent;
103
+ export declare function prepareAgentRun(agentName: string, input: AgentInput, params: RunAgentParams, agentSessionMap: Map<string, string>, streamContext?: StreamContext): Promise<{
104
+ agent: CoreAgent;
105
105
  packageName: string | null;
106
106
  resolvedName: string;
107
- agentRunner: import("../../services/ai-agent-runner-service.js").AIAgentRunnerService;
108
- storage: import("../../index.js").AIStorageService | undefined;
109
- memoryConfig: import("./ai-agent.types.js").AIAgentMemoryConfig | undefined;
107
+ agentRunner: import("../../services/agent-runner-service.js").AgentRunnerService;
108
+ storage: import("../../services/agent-storage-service.js").AgentStorageService | undefined;
109
+ memoryConfig: import("./agent.types.js").AgentMemoryConfig | undefined;
110
110
  threadId: string;
111
- userMessage: AIMessage;
112
- runnerParams: AIAgentRunnerParams;
111
+ userMessage: AgentMessage;
112
+ runnerParams: AgentRunnerParams;
113
113
  maxSteps: number;
114
114
  missingRpcs: string[];
115
115
  workingMemoryJsonSchema: any;