@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
@@ -1,19 +1,19 @@
1
1
  import type {
2
- AIAgentInput,
3
- AIAgentOutput,
4
- AIAgentStep,
5
- AIAgentMemoryConfig,
6
- CoreAIAgent,
7
- PikkuAIMiddlewareHooks,
2
+ AgentInput,
3
+ AgentOutput,
4
+ AgentStep,
5
+ AgentMemoryConfig,
6
+ CoreAgent,
7
+ PikkuAgentMiddlewareHooks,
8
8
  AgentRunState,
9
- } from './ai-agent.types.js'
9
+ } from './agent.types.js'
10
10
  import type {
11
- AIAgentStepResult,
12
- AIAgentRunnerParams,
13
- AIAgentRunnerService,
14
- } from '../../services/ai-agent-runner-service.js'
15
- import type { AIStorageService } from '../../services/ai-storage-service.js'
16
- import type { AIRunStateService } from '../../services/ai-run-state-service.js'
11
+ AgentStepResult,
12
+ AgentRunnerParams,
13
+ AgentRunnerService,
14
+ } from '../../services/agent-runner-service.js'
15
+ import type { AgentStorageService } from '../../services/agent-storage-service.js'
16
+ import type { AgentRunStateService } from '../../services/agent-run-state-service.js'
17
17
 
18
18
  import {
19
19
  saveMessages,
@@ -21,7 +21,7 @@ import {
21
21
  loadContextMessages,
22
22
  trimMessages,
23
23
  getWorkingMemoryMiddleware,
24
- } from './ai-agent-memory.js'
24
+ } from './agent-memory.js'
25
25
  import {
26
26
  prepareAgentRun,
27
27
  resolveAgent,
@@ -31,9 +31,9 @@ import {
31
31
  agentSessionScope,
32
32
  assertResourcePrincipalOwner,
33
33
  assertAgentAuthorized,
34
- type RunAIAgentParams,
35
- } from './ai-agent-prepare.js'
36
- import { checkForApprovals, appendStepMessages } from './ai-agent-stream.js'
34
+ type RunAgentParams,
35
+ } from './agent-prepare.js'
36
+ import { checkForApprovals, appendStepMessages } from './agent-stream.js'
37
37
  import {
38
38
  AgentInterruptedError,
39
39
  isAbortError,
@@ -41,22 +41,22 @@ import {
41
41
  registerInterruptibleRun,
42
42
  trackInterruptNote,
43
43
  trackToolExecution,
44
- } from './ai-agent-interrupt.js'
44
+ } from './agent-interrupt.js'
45
45
  import { pikkuState, getSingletonServices } from '../../pikku-state.js'
46
46
  import {
47
47
  applyInputMiddleware,
48
48
  describeApprovals,
49
49
  notifyAfterStep,
50
50
  toAccumulatedStep,
51
- } from './ai-agent-turn.js'
51
+ } from './agent-turn.js'
52
52
  import {
53
53
  applyOutputMiddleware,
54
54
  finalizeAgentRun,
55
55
  lastUserMessageText,
56
- } from './ai-agent-finalize.js'
57
- import { resolveModelConfig } from './ai-agent-model-config.js'
56
+ } from './agent-finalize.js'
57
+ import { resolveModelConfig } from './agent-model-config.js'
58
58
  import { AIProviderNotConfiguredError } from '../../errors/errors.js'
59
- import { randomUUID } from './ai-agent-utils.js'
59
+ import { deniedToolResult, randomUUID } from './agent-utils.js'
60
60
 
61
61
  function stripNulls(obj: unknown): unknown {
62
62
  if (obj === null) return undefined
@@ -86,12 +86,12 @@ function extractStructuredAssistantOutput(object: unknown): {
86
86
  }
87
87
  }
88
88
 
89
- export async function runAIAgent(
89
+ export async function runAgent(
90
90
  agentName: string,
91
- input: AIAgentInput,
92
- params: RunAIAgentParams,
91
+ input: AgentInput,
92
+ params: RunAgentParams,
93
93
  agentSessionMap?: Map<string, string>
94
- ): Promise<AIAgentOutput> {
94
+ ): Promise<AgentOutput> {
95
95
  const sessionMap = agentSessionMap ?? new Map<string, string>()
96
96
 
97
97
  input = {
@@ -119,13 +119,13 @@ export async function runAIAgent(
119
119
  runnerParams.agentId = agentName
120
120
 
121
121
  const singletonServices = getSingletonServices()
122
- const { aiRunState } = singletonServices
123
- if (!aiRunState) {
124
- throw new Error('AIRunStateService not available in singletonServices')
122
+ const { agentRunState } = singletonServices
123
+ if (!agentRunState) {
124
+ throw new Error('AgentRunStateService not available in singletonServices')
125
125
  }
126
126
 
127
127
  if (missingRpcs.length > 0) {
128
- const runId = await aiRunState.createRun({
128
+ const runId = await agentRunState.createRun({
129
129
  agentName,
130
130
  threadId,
131
131
  resourceId: input.resourceId,
@@ -145,22 +145,22 @@ export async function runAIAgent(
145
145
  }
146
146
  }
147
147
 
148
- const aiMiddlewares: PikkuAIMiddlewareHooks[] = [
148
+ const agentMiddlewares: PikkuAgentMiddlewareHooks[] = [
149
149
  ...getWorkingMemoryMiddleware(memoryConfig, storage, {
150
150
  threadId,
151
151
  workingMemorySchemaName,
152
152
  logger: singletonServices.logger,
153
153
  schemaService: singletonServices.schema,
154
154
  }),
155
- ...(agent.aiMiddleware ?? []),
155
+ ...(agent.agentMiddleware ?? []),
156
156
  ]
157
157
 
158
- // One bag per run, shared by every middleware — see PikkuAIMiddlewareHooks.
158
+ // One bag per run, shared by every middleware — see PikkuAgentMiddlewareHooks.
159
159
  const sharedNotes: Record<string, unknown> = {}
160
160
 
161
161
  const { messages: modifiedMessages, instructions: modifiedInstructions } =
162
162
  await applyInputMiddleware(
163
- aiMiddlewares,
163
+ agentMiddlewares,
164
164
  singletonServices,
165
165
  {
166
166
  messages: runnerParams.messages,
@@ -176,7 +176,7 @@ export async function runAIAgent(
176
176
  const persistedUserMessage =
177
177
  lastModified?.id === userMessage.id ? lastModified : userMessage
178
178
 
179
- const runId = await aiRunState.createRun({
179
+ const runId = await agentRunState.createRun({
180
180
  agentName,
181
181
  threadId,
182
182
  resourceId: input.resourceId,
@@ -192,9 +192,9 @@ export async function runAIAgent(
192
192
  runnerParams.tools = trackToolExecution(runnerParams.tools, interruptHandle)
193
193
 
194
194
  try {
195
- const accumulatedSteps: AIAgentStep[] = []
195
+ const accumulatedSteps: AgentStep[] = []
196
196
  const totalUsage = { inputTokens: 0, outputTokens: 0 }
197
- let lastStepResult: AIAgentStepResult | null = null
197
+ let lastStepResult: AgentStepResult | null = null
198
198
 
199
199
  for (let step = 0; step < maxSteps; step++) {
200
200
  if (agent.prepareStep) {
@@ -218,7 +218,12 @@ export async function runAIAgent(
218
218
  totalUsage.inputTokens += stepResult.usage.inputTokens
219
219
  totalUsage.outputTokens += stepResult.usage.outputTokens
220
220
 
221
- await notifyAfterStep(aiMiddlewares, singletonServices, step, stepResult)
221
+ await notifyAfterStep(
222
+ agentMiddlewares,
223
+ singletonServices,
224
+ step,
225
+ stepResult
226
+ )
222
227
 
223
228
  accumulatedSteps.push(toAccumulatedStep(stepResult))
224
229
 
@@ -271,7 +276,7 @@ export async function runAIAgent(
271
276
  ])
272
277
  }
273
278
 
274
- await aiRunState.updateRun(runId, {
279
+ await agentRunState.updateRun(runId, {
275
280
  status: 'suspended',
276
281
  suspendReason: 'approval',
277
282
  pendingApprovals,
@@ -309,7 +314,7 @@ export async function runAIAgent(
309
314
  }
310
315
 
311
316
  const { text: outputText, steps: outputSteps } =
312
- await applyOutputMiddleware(aiMiddlewares, singletonServices, {
317
+ await applyOutputMiddleware(agentMiddlewares, singletonServices, {
313
318
  text: finalText,
314
319
  messages: runnerParams.messages,
315
320
  steps: result.steps,
@@ -329,7 +334,7 @@ export async function runAIAgent(
329
334
  }
330
335
  )
331
336
 
332
- await finalizeAgentRun(aiRunState, {
337
+ await finalizeAgentRun(agentRunState, {
333
338
  runId,
334
339
  agentName,
335
340
  threadId,
@@ -352,7 +357,7 @@ export async function runAIAgent(
352
357
  // knowledge: decisions/internals/an-agent-interrupt-is-not-a-failure.md
353
358
  const interruption = interruptHandle.interruption
354
359
  if (interruption || isAbortError(error)) {
355
- await aiRunState.updateRun(runId, { status: 'interrupted' })
360
+ await agentRunState.updateRun(runId, { status: 'interrupted' })
356
361
  if (storage) {
357
362
  trackInterruptNote(
358
363
  threadId,
@@ -361,7 +366,7 @@ export async function runAIAgent(
361
366
  }
362
367
  throw new AgentInterruptedError(runId, interruption ?? { reason: 'user' })
363
368
  }
364
- for (const mw of aiMiddlewares) {
369
+ for (const mw of agentMiddlewares) {
365
370
  if (mw.onError) {
366
371
  try {
367
372
  await mw.onError(singletonServices, {
@@ -372,7 +377,7 @@ export async function runAIAgent(
372
377
  } catch {}
373
378
  }
374
379
  }
375
- await aiRunState.updateRun(runId, {
380
+ await agentRunState.updateRun(runId, {
376
381
  status: 'failed',
377
382
  errorMessage: error instanceof Error ? error.message : String(error),
378
383
  })
@@ -382,19 +387,19 @@ export async function runAIAgent(
382
387
  }
383
388
  }
384
389
 
385
- export async function resumeAIAgentSync(
390
+ export async function resumeAgentSync(
386
391
  runId: string,
387
392
  approvals: { toolCallId: string; approved: boolean }[],
388
- params: RunAIAgentParams,
393
+ params: RunAgentParams,
389
394
  expectedAgentName?: string
390
- ): Promise<AIAgentOutput> {
395
+ ): Promise<AgentOutput> {
391
396
  const singletonServices = getSingletonServices()
392
- const { aiRunState } = singletonServices
393
- if (!aiRunState) {
394
- throw new Error('AIRunStateService not available in singletonServices')
397
+ const { agentRunState } = singletonServices
398
+ if (!agentRunState) {
399
+ throw new Error('AgentRunStateService not available in singletonServices')
395
400
  }
396
401
 
397
- const run = await aiRunState.getRun(runId)
402
+ const run = await agentRunState.getRun(runId)
398
403
  if (!run) throw new Error(`No run found for runId ${runId}`)
399
404
  assertResourcePrincipalOwner(
400
405
  params,
@@ -417,7 +422,7 @@ export async function resumeAIAgentSync(
417
422
 
418
423
  const { storage } = resolveMemoryServices(agent, singletonServices)
419
424
  const memoryConfig = agent.memory
420
- const agentRunner = singletonServices.aiAgentRunner
425
+ const agentRunner = singletonServices.agentRunner
421
426
  if (!agentRunner) {
422
427
  throw new AIProviderNotConfiguredError()
423
428
  }
@@ -436,7 +441,7 @@ export async function resumeAIAgentSync(
436
441
  // for may run the tool.
437
442
  const claimedIds = new Set<string>()
438
443
  for (const { toolCallId, approved } of approvals) {
439
- const claimed = await aiRunState.resolveApproval(
444
+ const claimed = await agentRunState.resolveApproval(
440
445
  toolCallId,
441
446
  approved ? 'approved' : 'denied'
442
447
  )
@@ -458,7 +463,7 @@ export async function resumeAIAgentSync(
458
463
  resolvedName,
459
464
  packageName,
460
465
  undefined,
461
- agent.aiMiddleware ?? []
466
+ agent.agentMiddleware ?? []
462
467
  )
463
468
 
464
469
  const toolCallMessages: {
@@ -479,8 +484,7 @@ export async function resumeAIAgentSync(
479
484
  let toolError: string | undefined
480
485
 
481
486
  if (rejectedIds.has(toolCallId)) {
482
- resultStr =
483
- 'The user explicitly declined this action. Inform them that it was declined and do not retry.'
487
+ resultStr = deniedToolResult()
484
488
  } else if (approvedIds.has(toolCallId)) {
485
489
  const matchingTool = tools.find((t) => t.name === pending.toolName)
486
490
  if (!matchingTool) {
@@ -538,7 +542,7 @@ export async function resumeAIAgentSync(
538
542
  ])
539
543
  }
540
544
 
541
- await aiRunState.updateRun(runId, { status: 'running' })
545
+ await agentRunState.updateRun(runId, { status: 'running' })
542
546
 
543
547
  return continueAfterToolResultSync(
544
548
  run,
@@ -549,7 +553,7 @@ export async function resumeAIAgentSync(
549
553
  memoryConfig,
550
554
  agentRunner,
551
555
  params,
552
- aiRunState,
556
+ agentRunState,
553
557
  // The approved tools were executed here, before the model was re-entered,
554
558
  // so they belong to the run's step record — otherwise a tool that failed
555
559
  // after approval leaves no trace on the run at all.
@@ -569,16 +573,16 @@ export async function resumeAIAgentSync(
569
573
 
570
574
  async function continueAfterToolResultSync(
571
575
  run: AgentRunState,
572
- agent: CoreAIAgent,
576
+ agent: CoreAgent,
573
577
  packageName: string | null,
574
578
  resolvedName: string,
575
- storage: AIStorageService | undefined,
576
- memoryConfig: AIAgentMemoryConfig | undefined,
577
- agentRunner: AIAgentRunnerService,
578
- params: RunAIAgentParams,
579
- aiRunState: AIRunStateService,
580
- resumedToolStep?: AIAgentStep
581
- ): Promise<AIAgentOutput> {
579
+ storage: AgentStorageService | undefined,
580
+ memoryConfig: AgentMemoryConfig | undefined,
581
+ agentRunner: AgentRunnerService,
582
+ params: RunAgentParams,
583
+ agentRunState: AgentRunStateService,
584
+ resumedToolStep?: AgentStep
585
+ ): Promise<AgentOutput> {
582
586
  const singletonServices = getSingletonServices()
583
587
  const agentsMeta = pikkuState(packageName, 'agent', 'agentsMeta')
584
588
  const meta = agentsMeta[resolvedName]
@@ -606,21 +610,21 @@ async function continueAfterToolResultSync(
606
610
 
607
611
  const instructions = await buildInstructions(resolvedName, packageName)
608
612
 
609
- const aiMiddlewares: PikkuAIMiddlewareHooks[] = [
613
+ const agentMiddlewares: PikkuAgentMiddlewareHooks[] = [
610
614
  ...getWorkingMemoryMiddleware(memoryConfig, storage, {
611
615
  threadId: run.threadId,
612
616
  workingMemorySchemaName,
613
617
  logger: singletonServices.logger,
614
618
  schemaService: singletonServices.schema,
615
619
  }),
616
- ...(agent.aiMiddleware ?? []),
620
+ ...(agent.agentMiddleware ?? []),
617
621
  ]
618
- // One bag per run, shared by every middleware — see PikkuAIMiddlewareHooks.
622
+ // One bag per run, shared by every middleware — see PikkuAgentMiddlewareHooks.
619
623
  const sharedNotes: Record<string, unknown> = {}
620
624
 
621
625
  const { messages: modifiedMessages, instructions: modifiedInstructions } =
622
626
  await applyInputMiddleware(
623
- aiMiddlewares,
627
+ agentMiddlewares,
624
628
  singletonServices,
625
629
  { messages: trimmedMessages, instructions: instructions },
626
630
  sharedNotes
@@ -633,13 +637,13 @@ async function continueAfterToolResultSync(
633
637
  resolvedName,
634
638
  packageName,
635
639
  undefined,
636
- aiMiddlewares
640
+ agentMiddlewares
637
641
  )
638
642
 
639
643
  const resolved = resolveModelConfig(resolvedName, agent)
640
644
  const maxSteps = resolved.maxSteps ?? 10
641
645
 
642
- const runnerParams: AIAgentRunnerParams = {
646
+ const runnerParams: AgentRunnerParams = {
643
647
  model: resolved.model,
644
648
  temperature: resolved.temperature,
645
649
  instructions: modifiedInstructions,
@@ -666,12 +670,12 @@ async function continueAfterToolResultSync(
666
670
  // `saveMessages`, and the approved tool's messages were already written to
667
671
  // the thread before the model was re-entered. It belongs to the run's step
668
672
  // record, not to persistence.
669
- const withResumedStep = (steps: AIAgentStep[]): AIAgentStep[] =>
673
+ const withResumedStep = (steps: AgentStep[]): AgentStep[] =>
670
674
  resumedToolStep ? [resumedToolStep, ...steps] : steps
671
675
 
672
- const accumulatedSteps: AIAgentStep[] = []
676
+ const accumulatedSteps: AgentStep[] = []
673
677
  const totalUsage = { inputTokens: 0, outputTokens: 0 }
674
- let lastStepResult: AIAgentStepResult | null = null
678
+ let lastStepResult: AgentStepResult | null = null
675
679
 
676
680
  for (let step = 0; step < maxSteps; step++) {
677
681
  const stepResult = await agentRunner.run(runnerParams)
@@ -680,7 +684,12 @@ async function continueAfterToolResultSync(
680
684
  totalUsage.inputTokens += stepResult.usage.inputTokens
681
685
  totalUsage.outputTokens += stepResult.usage.outputTokens
682
686
 
683
- await notifyAfterStep(aiMiddlewares, singletonServices, step, stepResult)
687
+ await notifyAfterStep(
688
+ agentMiddlewares,
689
+ singletonServices,
690
+ step,
691
+ stepResult
692
+ )
684
693
 
685
694
  accumulatedSteps.push(toAccumulatedStep(stepResult))
686
695
 
@@ -735,7 +744,7 @@ async function continueAfterToolResultSync(
735
744
  ])
736
745
  }
737
746
 
738
- await aiRunState.updateRun(run.runId, {
747
+ await agentRunState.updateRun(run.runId, {
739
748
  status: 'suspended',
740
749
  suspendReason: 'approval',
741
750
  pendingApprovals,
@@ -772,7 +781,7 @@ async function continueAfterToolResultSync(
772
781
  }
773
782
 
774
783
  const { text: outputText, steps: outputSteps } =
775
- await applyOutputMiddleware(aiMiddlewares, singletonServices, {
784
+ await applyOutputMiddleware(agentMiddlewares, singletonServices, {
776
785
  text: finalText,
777
786
  messages: runnerParams.messages,
778
787
  steps: withResumedStep(result.steps),
@@ -793,7 +802,7 @@ async function continueAfterToolResultSync(
793
802
  }
794
803
  )
795
804
 
796
- await finalizeAgentRun(aiRunState, {
805
+ await finalizeAgentRun(agentRunState, {
797
806
  runId: run.runId,
798
807
  agentName: resolvedName,
799
808
  threadId: run.threadId,
@@ -815,7 +824,7 @@ async function continueAfterToolResultSync(
815
824
  } catch (error) {
816
825
  const interruption = interruptHandle.interruption
817
826
  if (interruption || isAbortError(error)) {
818
- await aiRunState.updateRun(run.runId, { status: 'interrupted' })
827
+ await agentRunState.updateRun(run.runId, { status: 'interrupted' })
819
828
  if (storage) {
820
829
  trackInterruptNote(
821
830
  run.threadId,
@@ -827,7 +836,7 @@ async function continueAfterToolResultSync(
827
836
  interruption ?? { reason: 'user' }
828
837
  )
829
838
  }
830
- for (const mw of aiMiddlewares) {
839
+ for (const mw of agentMiddlewares) {
831
840
  if (mw.onError) {
832
841
  try {
833
842
  await mw.onError(singletonServices, {
@@ -838,7 +847,7 @@ async function continueAfterToolResultSync(
838
847
  } catch {}
839
848
  }
840
849
  }
841
- await aiRunState.updateRun(run.runId, {
850
+ await agentRunState.updateRun(run.runId, {
842
851
  status: 'failed',
843
852
  errorMessage: error instanceof Error ? error.message : String(error),
844
853
  })
@@ -2,16 +2,16 @@ import { beforeEach, describe, test } from 'node:test'
2
2
  import assert from 'node:assert/strict'
3
3
 
4
4
  import { resetPikkuState, pikkuState } from '../../pikku-state.js'
5
- import { streamAIAgent } from './ai-agent-stream.js'
6
- import type { CoreAIAgent, PikkuAIMiddlewareHooks } from './ai-agent.types.js'
7
- import type { AIAgentStepResult } from '../../services/ai-agent-runner-service.js'
5
+ import { streamAgent } from './agent-stream.js'
6
+ import type { CoreAgent, PikkuAgentMiddlewareHooks } from './agent.types.js'
7
+ import type { AgentStepResult } from '../../services/agent-runner-service.js'
8
8
 
9
9
  beforeEach(() => {
10
10
  resetPikkuState()
11
11
  })
12
12
 
13
13
  const addTestAgent = (agentName: string) => {
14
- const agent: CoreAIAgent = {
14
+ const agent: CoreAgent = {
15
15
  name: agentName,
16
16
  description: 'test agent',
17
17
  instructions: 'be helpful',
@@ -28,8 +28,8 @@ const addTestAgent = (agentName: string) => {
28
28
  }
29
29
 
30
30
  const makeStepResult = (
31
- overrides?: Partial<AIAgentStepResult>
32
- ): AIAgentStepResult => ({
31
+ overrides?: Partial<AgentStepResult>
32
+ ): AgentStepResult => ({
33
33
  text: '',
34
34
  toolCalls: [],
35
35
  toolResults: [],
@@ -38,7 +38,7 @@ const makeStepResult = (
38
38
  ...overrides,
39
39
  })
40
40
 
41
- describe('streamAIAgent output hooks', () => {
41
+ describe('streamAgent output hooks', () => {
42
42
  test('does not run modifyOutput on a streamed run, and warns the hook it is inert there', async () => {
43
43
  addTestAgent('stream-modify-output-agent')
44
44
 
@@ -46,7 +46,7 @@ describe('streamAIAgent output hooks', () => {
46
46
  const modifyOutputCalls: unknown[] = []
47
47
  const sideEffects: string[] = []
48
48
 
49
- const middleware: PikkuAIMiddlewareHooks = {
49
+ const middleware: PikkuAgentMiddlewareHooks = {
50
50
  modifyOutput: async (_services, ctx) => {
51
51
  modifyOutputCalls.push(ctx)
52
52
  sideEffects.push(ctx.text)
@@ -56,7 +56,7 @@ describe('streamAIAgent output hooks', () => {
56
56
  const agent = pikkuState(null, 'agent', 'agents').get(
57
57
  'stream-modify-output-agent'
58
58
  )!
59
- agent.aiMiddleware = [middleware] as any
59
+ agent.agentMiddleware = [middleware] as any
60
60
  pikkuState(null, 'agent', 'agents').set('stream-modify-output-agent', agent)
61
61
 
62
62
  const mockServices = {
@@ -66,13 +66,13 @@ describe('streamAIAgent output hooks', () => {
66
66
  error: () => {},
67
67
  debug: () => {},
68
68
  },
69
- aiAgentRunner: {
69
+ agentRunner: {
70
70
  stream: async (_params: any, channel: any) => {
71
71
  channel.send({ type: 'text-delta', text: 'Hello' })
72
72
  return makeStepResult({ text: 'Hello', finishReason: 'stop' })
73
73
  },
74
74
  },
75
- aiRunState: {
75
+ agentRunState: {
76
76
  createRun: async () => 'run-modify-output',
77
77
  updateRun: async () => {},
78
78
  },
@@ -80,7 +80,7 @@ describe('streamAIAgent output hooks', () => {
80
80
 
81
81
  pikkuState(null, 'package', 'singletonServices', mockServices)
82
82
 
83
- const result = await streamAIAgent(
83
+ const result = await streamAgent(
84
84
  'stream-modify-output-agent',
85
85
  {
86
86
  message: 'hello',
@@ -139,7 +139,7 @@ describe('streamAIAgent output hooks', () => {
139
139
  error: () => {},
140
140
  debug: () => {},
141
141
  },
142
- aiAgentRunner: {
142
+ agentRunner: {
143
143
  stream: async (_params: any, channel: any) => {
144
144
  channel.send({
145
145
  type: 'text-delta',
@@ -148,11 +148,11 @@ describe('streamAIAgent output hooks', () => {
148
148
  return makeStepResult({ text: 'Noted', finishReason: 'stop' })
149
149
  },
150
150
  },
151
- aiRunState: {
151
+ agentRunState: {
152
152
  createRun: async () => 'run-working-memory',
153
153
  updateRun: async () => {},
154
154
  },
155
- aiStorage: {
155
+ agentStorage: {
156
156
  createThread: async () => {},
157
157
  getMessages: async () => [],
158
158
  saveMessages: async () => {},
@@ -169,7 +169,7 @@ describe('streamAIAgent output hooks', () => {
169
169
 
170
170
  pikkuState(null, 'package', 'singletonServices', mockServices)
171
171
 
172
- await streamAIAgent(
172
+ await streamAgent(
173
173
  'stream-working-memory-agent',
174
174
  {
175
175
  message: 'remember I live in Berlin',
@@ -210,7 +210,7 @@ describe('streamAIAgent output hooks', () => {
210
210
  error: () => {},
211
211
  debug: () => {},
212
212
  },
213
- aiAgentRunner: {
213
+ agentRunner: {
214
214
  stream: async (_params: any, channel: any) => {
215
215
  channel.send({
216
216
  type: 'tool-call',
@@ -240,11 +240,11 @@ describe('streamAIAgent output hooks', () => {
240
240
  return makeStepResult({ text: 'done', finishReason: 'stop' })
241
241
  },
242
242
  },
243
- aiRunState: {
243
+ agentRunState: {
244
244
  createRun: async () => 'run-tool-error',
245
245
  updateRun: async () => {},
246
246
  },
247
- aiStorage: {
247
+ agentStorage: {
248
248
  createThread: async () => {},
249
249
  getMessages: async () => [],
250
250
  saveMessages: async (_threadId: string, messages: any[]) => {
@@ -255,7 +255,7 @@ describe('streamAIAgent output hooks', () => {
255
255
 
256
256
  pikkuState(null, 'package', 'singletonServices', mockServices)
257
257
 
258
- await streamAIAgent(
258
+ await streamAgent(
259
259
  'stream-tool-error-agent',
260
260
  {
261
261
  message: 'look it up',
@@ -290,7 +290,7 @@ describe('streamAIAgent output hooks', () => {
290
290
 
291
291
  const warnings: unknown[][] = []
292
292
 
293
- const middleware: PikkuAIMiddlewareHooks = {
293
+ const middleware: PikkuAgentMiddlewareHooks = {
294
294
  modifyOutput: async (_services, ctx) => ({
295
295
  text: ctx.text,
296
296
  messages: ctx.messages,
@@ -300,7 +300,7 @@ describe('streamAIAgent output hooks', () => {
300
300
  const agent = pikkuState(null, 'agent', 'agents').get(
301
301
  'stream-both-hooks-agent'
302
302
  )!
303
- agent.aiMiddleware = [middleware] as any
303
+ agent.agentMiddleware = [middleware] as any
304
304
  pikkuState(null, 'agent', 'agents').set('stream-both-hooks-agent', agent)
305
305
 
306
306
  const mockServices = {
@@ -310,13 +310,13 @@ describe('streamAIAgent output hooks', () => {
310
310
  error: () => {},
311
311
  debug: () => {},
312
312
  },
313
- aiAgentRunner: {
313
+ agentRunner: {
314
314
  stream: async (_params: any, channel: any) => {
315
315
  channel.send({ type: 'text-delta', text: 'Hi' })
316
316
  return makeStepResult({ text: 'Hi', finishReason: 'stop' })
317
317
  },
318
318
  },
319
- aiRunState: {
319
+ agentRunState: {
320
320
  createRun: async () => 'run-both-hooks',
321
321
  updateRun: async () => {},
322
322
  },
@@ -324,7 +324,7 @@ describe('streamAIAgent output hooks', () => {
324
324
 
325
325
  pikkuState(null, 'package', 'singletonServices', mockServices)
326
326
 
327
- await streamAIAgent(
327
+ await streamAgent(
328
328
  'stream-both-hooks-agent',
329
329
  {
330
330
  message: 'hello',