@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
@@ -6,29 +6,29 @@ import {
6
6
  appendStepMessages,
7
7
  checkForApprovals,
8
8
  checkForCredentialRequests,
9
- resumeAIAgent,
10
- streamAIAgent,
11
- } from './ai-agent-stream.js'
9
+ resumeAgent,
10
+ streamAgent,
11
+ } from './agent-stream.js'
12
12
  import {
13
13
  ToolApprovalRequired,
14
14
  APPROVAL_REQUIRED,
15
15
  CREDENTIAL_REQUIRED,
16
- } from './ai-agent-prepare.js'
16
+ } from './agent-prepare.js'
17
17
  import type {
18
18
  AgentRunState,
19
- CoreAIAgent,
20
- AIStreamEvent,
21
- AIMessage,
22
- PikkuAIMiddlewareHooks,
23
- } from './ai-agent.types.js'
24
- import type { AIAgentStepResult } from '../../services/ai-agent-runner-service.js'
19
+ CoreAgent,
20
+ AgentStreamEvent,
21
+ AgentMessage,
22
+ PikkuAgentMiddlewareHooks,
23
+ } from './agent.types.js'
24
+ import type { AgentStepResult } from '../../services/agent-runner-service.js'
25
25
 
26
26
  beforeEach(() => {
27
27
  resetPikkuState()
28
28
  })
29
29
 
30
30
  const addTestAgent = (agentName: string) => {
31
- const agent: CoreAIAgent = {
31
+ const agent: CoreAgent = {
32
32
  name: agentName,
33
33
  description: 'test agent',
34
34
  instructions: 'be helpful',
@@ -45,8 +45,8 @@ const addTestAgent = (agentName: string) => {
45
45
  }
46
46
 
47
47
  const makeStepResult = (
48
- overrides?: Partial<AIAgentStepResult>
49
- ): AIAgentStepResult => ({
48
+ overrides?: Partial<AgentStepResult>
49
+ ): AgentStepResult => ({
50
50
  text: '',
51
51
  toolCalls: [],
52
52
  toolResults: [],
@@ -55,12 +55,12 @@ const makeStepResult = (
55
55
  ...overrides,
56
56
  })
57
57
 
58
- describe('streamAIAgent', () => {
58
+ describe('streamAgent', () => {
59
59
  test('marks run as failed and emits error/done when stream runner throws', async () => {
60
60
  addTestAgent('failing-stream-agent')
61
61
 
62
62
  const updates: Array<{ runId: string; patch: unknown }> = []
63
- const events: AIStreamEvent[] = []
63
+ const events: AgentStreamEvent[] = []
64
64
 
65
65
  const mockServices = {
66
66
  logger: {
@@ -69,12 +69,12 @@ describe('streamAIAgent', () => {
69
69
  error: () => {},
70
70
  debug: () => {},
71
71
  },
72
- aiAgentRunner: {
72
+ agentRunner: {
73
73
  stream: async () => {
74
74
  throw new Error('stream failed')
75
75
  },
76
76
  },
77
- aiRunState: {
77
+ agentRunState: {
78
78
  createRun: async () => 'run-1',
79
79
  updateRun: async (runId: string, patch: unknown) => {
80
80
  updates.push({ runId, patch })
@@ -84,7 +84,7 @@ describe('streamAIAgent', () => {
84
84
 
85
85
  pikkuState(null, 'package', 'singletonServices', mockServices)
86
86
 
87
- await streamAIAgent(
87
+ await streamAgent(
88
88
  'failing-stream-agent',
89
89
  {
90
90
  message: 'hello',
@@ -95,7 +95,7 @@ describe('streamAIAgent', () => {
95
95
  channelId: 'channel-1',
96
96
  openingData: undefined,
97
97
  state: 'open',
98
- send: (event: AIStreamEvent) => {
98
+ send: (event: AgentStreamEvent) => {
99
99
  events.push(event)
100
100
  },
101
101
  close: () => {},
@@ -119,7 +119,7 @@ describe('streamAIAgent', () => {
119
119
  addTestAgent('simple-stream-agent')
120
120
 
121
121
  const updates: Array<{ runId: string; patch: unknown }> = []
122
- const events: AIStreamEvent[] = []
122
+ const events: AgentStreamEvent[] = []
123
123
 
124
124
  const mockServices = {
125
125
  logger: {
@@ -128,12 +128,12 @@ describe('streamAIAgent', () => {
128
128
  error: () => {},
129
129
  debug: () => {},
130
130
  },
131
- aiAgentRunner: {
132
- stream: async (): Promise<AIAgentStepResult> => {
131
+ agentRunner: {
132
+ stream: async (): Promise<AgentStepResult> => {
133
133
  return makeStepResult({ text: 'Hello world' })
134
134
  },
135
135
  },
136
- aiRunState: {
136
+ agentRunState: {
137
137
  createRun: async () => 'run-simple',
138
138
  updateRun: async (runId: string, patch: unknown) => {
139
139
  updates.push({ runId, patch })
@@ -143,7 +143,7 @@ describe('streamAIAgent', () => {
143
143
 
144
144
  pikkuState(null, 'package', 'singletonServices', mockServices)
145
145
 
146
- await streamAIAgent(
146
+ await streamAgent(
147
147
  'simple-stream-agent',
148
148
  {
149
149
  message: 'hello',
@@ -154,7 +154,7 @@ describe('streamAIAgent', () => {
154
154
  channelId: 'channel-simple',
155
155
  openingData: undefined,
156
156
  state: 'open',
157
- send: (event: AIStreamEvent) => {
157
+ send: (event: AgentStreamEvent) => {
158
158
  events.push(event)
159
159
  },
160
160
  close: () => {},
@@ -175,10 +175,10 @@ describe('streamAIAgent', () => {
175
175
  description: 'test agent',
176
176
  instructions: 'be helpful',
177
177
  model: 'test/test-model',
178
- } as CoreAIAgent)
178
+ } as CoreAgent)
179
179
 
180
180
  const updates: Array<{ runId: string; patch: unknown }> = []
181
- const events: AIStreamEvent[] = []
181
+ const events: AgentStreamEvent[] = []
182
182
 
183
183
  const mockServices = {
184
184
  logger: {
@@ -187,11 +187,11 @@ describe('streamAIAgent', () => {
187
187
  error: () => {},
188
188
  debug: () => {},
189
189
  },
190
- aiAgentRunner: {
191
- stream: async (): Promise<AIAgentStepResult> =>
190
+ agentRunner: {
191
+ stream: async (): Promise<AgentStepResult> =>
192
192
  makeStepResult({ text: 'Hello world' }),
193
193
  },
194
- aiRunState: {
194
+ agentRunState: {
195
195
  createRun: async () => 'run-no-meta',
196
196
  updateRun: async (runId: string, patch: unknown) => {
197
197
  updates.push({ runId, patch })
@@ -201,7 +201,7 @@ describe('streamAIAgent', () => {
201
201
 
202
202
  pikkuState(null, 'package', 'singletonServices', mockServices)
203
203
 
204
- await streamAIAgent(
204
+ await streamAgent(
205
205
  agentName,
206
206
  {
207
207
  message: 'hello',
@@ -212,7 +212,7 @@ describe('streamAIAgent', () => {
212
212
  channelId: 'channel-no-meta',
213
213
  openingData: undefined,
214
214
  state: 'open',
215
- send: (event: AIStreamEvent) => {
215
+ send: (event: AgentStreamEvent) => {
216
216
  events.push(event)
217
217
  },
218
218
  close: () => {},
@@ -234,7 +234,7 @@ describe('streamAIAgent', () => {
234
234
  addTestAgent('approval-stream-agent')
235
235
 
236
236
  const updates: Array<{ runId: string; patch: unknown }> = []
237
- const events: AIStreamEvent[] = []
237
+ const events: AgentStreamEvent[] = []
238
238
 
239
239
  const mockServices = {
240
240
  logger: {
@@ -243,8 +243,8 @@ describe('streamAIAgent', () => {
243
243
  error: () => {},
244
244
  debug: () => {},
245
245
  },
246
- aiAgentRunner: {
247
- stream: async (): Promise<AIAgentStepResult> => {
246
+ agentRunner: {
247
+ stream: async (): Promise<AgentStepResult> => {
248
248
  return makeStepResult({
249
249
  toolCalls: [
250
250
  {
@@ -256,7 +256,7 @@ describe('streamAIAgent', () => {
256
256
  })
257
257
  },
258
258
  },
259
- aiRunState: {
259
+ agentRunState: {
260
260
  createRun: async () => 'run-2',
261
261
  updateRun: async (runId: string, patch: unknown) => {
262
262
  updates.push({ runId, patch })
@@ -281,7 +281,7 @@ describe('streamAIAgent', () => {
281
281
  properties: { id: { type: 'number' } },
282
282
  })
283
283
 
284
- await streamAIAgent(
284
+ await streamAgent(
285
285
  agentName,
286
286
  {
287
287
  message: 'hello',
@@ -292,7 +292,7 @@ describe('streamAIAgent', () => {
292
292
  channelId: 'channel-2',
293
293
  openingData: undefined,
294
294
  state: 'open',
295
- send: (event: AIStreamEvent) => {
295
+ send: (event: AgentStreamEvent) => {
296
296
  events.push(event)
297
297
  },
298
298
  close: () => {},
@@ -340,7 +340,7 @@ describe('streamAIAgent', () => {
340
340
  addTestAgent('multi-approval-agent')
341
341
 
342
342
  const updates: Array<{ runId: string; patch: unknown }> = []
343
- const events: AIStreamEvent[] = []
343
+ const events: AgentStreamEvent[] = []
344
344
 
345
345
  const mockServices = {
346
346
  logger: {
@@ -349,8 +349,8 @@ describe('streamAIAgent', () => {
349
349
  error: () => {},
350
350
  debug: () => {},
351
351
  },
352
- aiAgentRunner: {
353
- stream: async (): Promise<AIAgentStepResult> => {
352
+ agentRunner: {
353
+ stream: async (): Promise<AgentStepResult> => {
354
354
  return makeStepResult({
355
355
  toolCalls: [
356
356
  {
@@ -372,7 +372,7 @@ describe('streamAIAgent', () => {
372
372
  })
373
373
  },
374
374
  },
375
- aiRunState: {
375
+ agentRunState: {
376
376
  createRun: async () => 'run-multi-approval',
377
377
  updateRun: async (runId: string, patch: unknown) => {
378
378
  updates.push({ runId, patch })
@@ -398,7 +398,7 @@ describe('streamAIAgent', () => {
398
398
  properties: { title: { type: 'string' } },
399
399
  })
400
400
 
401
- await streamAIAgent(
401
+ await streamAgent(
402
402
  agentName,
403
403
  {
404
404
  message: 'create 3 todos',
@@ -409,7 +409,7 @@ describe('streamAIAgent', () => {
409
409
  channelId: 'channel-multi-approval',
410
410
  openingData: undefined,
411
411
  state: 'open',
412
- send: (event: AIStreamEvent) => {
412
+ send: (event: AgentStreamEvent) => {
413
413
  events.push(event)
414
414
  },
415
415
  close: () => {},
@@ -436,7 +436,7 @@ describe('streamAIAgent', () => {
436
436
  addTestAgent('addon-approval-agent')
437
437
 
438
438
  const updates: Array<{ runId: string; patch: unknown }> = []
439
- const events: AIStreamEvent[] = []
439
+ const events: AgentStreamEvent[] = []
440
440
 
441
441
  const mockServices = {
442
442
  logger: {
@@ -445,8 +445,8 @@ describe('streamAIAgent', () => {
445
445
  error: () => {},
446
446
  debug: () => {},
447
447
  },
448
- aiAgentRunner: {
449
- stream: async (params: any): Promise<AIAgentStepResult> => {
448
+ agentRunner: {
449
+ stream: async (params: any): Promise<AgentStepResult> => {
450
450
  const addTodoTool = params.tools.find(
451
451
  (t: any) => t.name === 'todos__addTodo'
452
452
  )
@@ -468,7 +468,7 @@ describe('streamAIAgent', () => {
468
468
  })
469
469
  },
470
470
  },
471
- aiRunState: {
471
+ agentRunState: {
472
472
  createRun: async () => 'run-addon-approval',
473
473
  updateRun: async (runId: string, patch: unknown) => {
474
474
  updates.push({ runId, patch })
@@ -496,7 +496,7 @@ describe('streamAIAgent', () => {
496
496
  const agentName = 'addon-approval-agent'
497
497
  pikkuState(null, 'agent', 'agentsMeta')[agentName].tools = ['todos:addTodo']
498
498
 
499
- await streamAIAgent(
499
+ await streamAgent(
500
500
  agentName,
501
501
  {
502
502
  message: 'add a todo',
@@ -507,7 +507,7 @@ describe('streamAIAgent', () => {
507
507
  channelId: 'channel-addon-approval',
508
508
  openingData: undefined,
509
509
  state: 'open',
510
- send: (event: AIStreamEvent) => {
510
+ send: (event: AgentStreamEvent) => {
511
511
  events.push(event)
512
512
  },
513
513
  close: () => {},
@@ -536,7 +536,7 @@ describe('streamAIAgent', () => {
536
536
  ]
537
537
 
538
538
  const updates: Array<{ runId: string; patch: unknown }> = []
539
- const events: AIStreamEvent[] = []
539
+ const events: AgentStreamEvent[] = []
540
540
 
541
541
  const mockServices = {
542
542
  logger: {
@@ -545,8 +545,8 @@ describe('streamAIAgent', () => {
545
545
  error: () => {},
546
546
  debug: () => {},
547
547
  },
548
- aiAgentRunner: {
549
- stream: async (): Promise<AIAgentStepResult> => {
548
+ agentRunner: {
549
+ stream: async (): Promise<AgentStepResult> => {
550
550
  return makeStepResult({
551
551
  toolCalls: [
552
552
  {
@@ -573,7 +573,7 @@ describe('streamAIAgent', () => {
573
573
  })
574
574
  },
575
575
  },
576
- aiRunState: {
576
+ agentRunState: {
577
577
  createRun: async () => 'run-3',
578
578
  updateRun: async (runId: string, patch: unknown) => {
579
579
  updates.push({ runId, patch })
@@ -583,7 +583,7 @@ describe('streamAIAgent', () => {
583
583
 
584
584
  pikkuState(null, 'package', 'singletonServices', mockServices)
585
585
 
586
- await streamAIAgent(
586
+ await streamAgent(
587
587
  'parent-agent',
588
588
  {
589
589
  message: 'hello',
@@ -594,7 +594,7 @@ describe('streamAIAgent', () => {
594
594
  channelId: 'channel-3',
595
595
  openingData: undefined,
596
596
  state: 'open',
597
- send: (event: AIStreamEvent) => {
597
+ send: (event: AgentStreamEvent) => {
598
598
  events.push(event)
599
599
  },
600
600
  close: () => {},
@@ -635,7 +635,7 @@ describe('streamAIAgent', () => {
635
635
  addTestAgent('multi-step-agent')
636
636
 
637
637
  const updates: Array<{ runId: string; patch: unknown }> = []
638
- const events: AIStreamEvent[] = []
638
+ const events: AgentStreamEvent[] = []
639
639
  let callCount = 0
640
640
 
641
641
  const mockServices = {
@@ -645,8 +645,8 @@ describe('streamAIAgent', () => {
645
645
  error: () => {},
646
646
  debug: () => {},
647
647
  },
648
- aiAgentRunner: {
649
- stream: async (): Promise<AIAgentStepResult> => {
648
+ agentRunner: {
649
+ stream: async (): Promise<AgentStepResult> => {
650
650
  callCount++
651
651
  if (callCount === 1) {
652
652
  return makeStepResult({
@@ -667,7 +667,7 @@ describe('streamAIAgent', () => {
667
667
  return makeStepResult({ text: 'Final answer', finishReason: 'stop' })
668
668
  },
669
669
  },
670
- aiRunState: {
670
+ agentRunState: {
671
671
  createRun: async () => 'run-multi',
672
672
  updateRun: async (runId: string, patch: unknown) => {
673
673
  updates.push({ runId, patch })
@@ -677,7 +677,7 @@ describe('streamAIAgent', () => {
677
677
 
678
678
  pikkuState(null, 'package', 'singletonServices', mockServices)
679
679
 
680
- await streamAIAgent(
680
+ await streamAgent(
681
681
  'multi-step-agent',
682
682
  {
683
683
  message: 'hello',
@@ -688,7 +688,7 @@ describe('streamAIAgent', () => {
688
688
  channelId: 'channel-multi',
689
689
  openingData: undefined,
690
690
  state: 'open',
691
- send: (event: AIStreamEvent) => {
691
+ send: (event: AgentStreamEvent) => {
692
692
  events.push(event)
693
693
  },
694
694
  close: () => {},
@@ -707,7 +707,7 @@ describe('streamAIAgent', () => {
707
707
  addTestAgent('afterstep-stream-agent')
708
708
 
709
709
  const afterStepCalls: unknown[] = []
710
- const middleware: PikkuAIMiddlewareHooks = {
710
+ const middleware: PikkuAgentMiddlewareHooks = {
711
711
  afterStep: async (_services, ctx) => {
712
712
  afterStepCalls.push(ctx)
713
713
  },
@@ -715,11 +715,11 @@ describe('streamAIAgent', () => {
715
715
  const agent = pikkuState(null, 'agent', 'agents').get(
716
716
  'afterstep-stream-agent'
717
717
  )!
718
- agent.aiMiddleware = [middleware] as any
718
+ agent.agentMiddleware = [middleware] as any
719
719
  pikkuState(null, 'agent', 'agents').set('afterstep-stream-agent', agent)
720
720
 
721
721
  let callCount = 0
722
- const events: AIStreamEvent[] = []
722
+ const events: AgentStreamEvent[] = []
723
723
 
724
724
  const mockServices = {
725
725
  logger: {
@@ -728,8 +728,8 @@ describe('streamAIAgent', () => {
728
728
  error: () => {},
729
729
  debug: () => {},
730
730
  },
731
- aiAgentRunner: {
732
- stream: async (): Promise<AIAgentStepResult> => {
731
+ agentRunner: {
732
+ stream: async (): Promise<AgentStepResult> => {
733
733
  callCount++
734
734
  if (callCount === 1) {
735
735
  return makeStepResult({
@@ -750,7 +750,7 @@ describe('streamAIAgent', () => {
750
750
  })
751
751
  },
752
752
  },
753
- aiRunState: {
753
+ agentRunState: {
754
754
  createRun: async () => 'run-as',
755
755
  updateRun: async () => {},
756
756
  },
@@ -758,14 +758,14 @@ describe('streamAIAgent', () => {
758
758
 
759
759
  pikkuState(null, 'package', 'singletonServices', mockServices)
760
760
 
761
- await streamAIAgent(
761
+ await streamAgent(
762
762
  'afterstep-stream-agent',
763
763
  { message: 'hi', threadId: 't-as', resourceId: 'r-as' },
764
764
  {
765
765
  channelId: 'c-as',
766
766
  openingData: undefined,
767
767
  state: 'open',
768
- send: (event: AIStreamEvent) => events.push(event),
768
+ send: (event: AgentStreamEvent) => events.push(event),
769
769
  close: () => {},
770
770
  },
771
771
  {}
@@ -782,7 +782,7 @@ describe('streamAIAgent', () => {
782
782
  addTestAgent('onerror-stream-agent')
783
783
 
784
784
  const onErrorCalls: unknown[] = []
785
- const middleware: PikkuAIMiddlewareHooks = {
785
+ const middleware: PikkuAgentMiddlewareHooks = {
786
786
  onError: async (_services, ctx) => {
787
787
  onErrorCalls.push(ctx)
788
788
  },
@@ -790,10 +790,10 @@ describe('streamAIAgent', () => {
790
790
  const agent = pikkuState(null, 'agent', 'agents').get(
791
791
  'onerror-stream-agent'
792
792
  )!
793
- agent.aiMiddleware = [middleware] as any
793
+ agent.agentMiddleware = [middleware] as any
794
794
  pikkuState(null, 'agent', 'agents').set('onerror-stream-agent', agent)
795
795
 
796
- const events: AIStreamEvent[] = []
796
+ const events: AgentStreamEvent[] = []
797
797
  const mockServices = {
798
798
  logger: {
799
799
  info: () => {},
@@ -801,12 +801,12 @@ describe('streamAIAgent', () => {
801
801
  error: () => {},
802
802
  debug: () => {},
803
803
  },
804
- aiAgentRunner: {
804
+ agentRunner: {
805
805
  stream: async () => {
806
806
  throw new Error('stream boom')
807
807
  },
808
808
  },
809
- aiRunState: {
809
+ agentRunState: {
810
810
  createRun: async () => 'run-oe',
811
811
  updateRun: async () => {},
812
812
  },
@@ -814,14 +814,14 @@ describe('streamAIAgent', () => {
814
814
 
815
815
  pikkuState(null, 'package', 'singletonServices', mockServices)
816
816
 
817
- await streamAIAgent(
817
+ await streamAgent(
818
818
  'onerror-stream-agent',
819
819
  { message: 'hi', threadId: 't-oe', resourceId: 'r-oe' },
820
820
  {
821
821
  channelId: 'c-oe',
822
822
  openingData: undefined,
823
823
  state: 'open',
824
- send: (event: AIStreamEvent) => events.push(event),
824
+ send: (event: AgentStreamEvent) => events.push(event),
825
825
  close: () => {},
826
826
  },
827
827
  {}
@@ -837,7 +837,7 @@ describe('streamAIAgent', () => {
837
837
  addTestAgent('toolhooks-stream-agent')
838
838
 
839
839
  const hookCalls: { hook: string; ctx: any }[] = []
840
- const middleware: PikkuAIMiddlewareHooks = {
840
+ const middleware: PikkuAgentMiddlewareHooks = {
841
841
  beforeToolCall: async (_services, ctx) => {
842
842
  hookCalls.push({ hook: 'before', ctx })
843
843
  return { args: { ...ctx.args, injected: true } }
@@ -849,7 +849,7 @@ describe('streamAIAgent', () => {
849
849
  }
850
850
  const agentName = 'toolhooks-stream-agent'
851
851
  const agent = pikkuState(null, 'agent', 'agents').get(agentName)!
852
- agent.aiMiddleware = [middleware] as any
852
+ agent.agentMiddleware = [middleware] as any
853
853
  agent.tools = ['myTool']
854
854
  pikkuState(null, 'agent', 'agents').set(agentName, agent)
855
855
  pikkuState(null, 'agent', 'agentsMeta')[agentName].tools = ['myTool']
@@ -858,7 +858,7 @@ describe('streamAIAgent', () => {
858
858
  description: 'test tool',
859
859
  }
860
860
 
861
- const events: AIStreamEvent[] = []
861
+ const events: AgentStreamEvent[] = []
862
862
  let callCount = 0
863
863
 
864
864
  const mockServices = {
@@ -868,11 +868,11 @@ describe('streamAIAgent', () => {
868
868
  error: () => {},
869
869
  debug: () => {},
870
870
  },
871
- aiAgentRunner: {
871
+ agentRunner: {
872
872
  stream: async (
873
873
  params: any,
874
874
  _channel: any
875
- ): Promise<AIAgentStepResult> => {
875
+ ): Promise<AgentStepResult> => {
876
876
  callCount++
877
877
  if (callCount === 1) {
878
878
  const tool = params.tools.find((t: any) => t.name === 'myTool')
@@ -889,7 +889,7 @@ describe('streamAIAgent', () => {
889
889
  return makeStepResult({ text: 'done', finishReason: 'stop' })
890
890
  },
891
891
  },
892
- aiRunState: {
892
+ agentRunState: {
893
893
  createRun: async () => 'run-th',
894
894
  updateRun: async () => {},
895
895
  },
@@ -898,14 +898,14 @@ describe('streamAIAgent', () => {
898
898
  pikkuState(null, 'package', 'singletonServices', mockServices)
899
899
  pikkuState(null, 'package', 'createWireServices', () => ({}))
900
900
 
901
- await streamAIAgent(
901
+ await streamAgent(
902
902
  agentName,
903
903
  { message: 'hi', threadId: 't-th', resourceId: 'r-th' },
904
904
  {
905
905
  channelId: 'c-th',
906
906
  openingData: undefined,
907
907
  state: 'open',
908
- send: (event: AIStreamEvent) => events.push(event),
908
+ send: (event: AgentStreamEvent) => events.push(event),
909
909
  close: () => {},
910
910
  },
911
911
  {}
@@ -925,7 +925,7 @@ describe('streamAIAgent', () => {
925
925
  addTestAgent('credential-stream-agent')
926
926
 
927
927
  const updates: Array<{ runId: string; patch: unknown }> = []
928
- const events: AIStreamEvent[] = []
928
+ const events: AgentStreamEvent[] = []
929
929
 
930
930
  const mockServices = {
931
931
  logger: {
@@ -934,11 +934,11 @@ describe('streamAIAgent', () => {
934
934
  error: () => {},
935
935
  debug: () => {},
936
936
  },
937
- aiAgentRunner: {
937
+ agentRunner: {
938
938
  stream: async (
939
939
  _params: unknown,
940
- streamChannel: AIStreamChannel | null
941
- ): Promise<AIAgentStepResult> => {
940
+ streamChannel: AgentStreamChannel | null
941
+ ): Promise<AgentStepResult> => {
942
942
  const credentialResult = {
943
943
  [CREDENTIAL_REQUIRED]: true,
944
944
  __credentialRequired: true,
@@ -966,7 +966,7 @@ describe('streamAIAgent', () => {
966
966
  })
967
967
  },
968
968
  },
969
- aiRunState: {
969
+ agentRunState: {
970
970
  createRun: async () => 'run-cred',
971
971
  updateRun: async (runId: string, patch: unknown) => {
972
972
  updates.push({ runId, patch })
@@ -976,7 +976,7 @@ describe('streamAIAgent', () => {
976
976
 
977
977
  pikkuState(null, 'package', 'singletonServices', mockServices)
978
978
 
979
- await streamAIAgent(
979
+ await streamAgent(
980
980
  'credential-stream-agent',
981
981
  {
982
982
  message: 'connect',
@@ -987,7 +987,7 @@ describe('streamAIAgent', () => {
987
987
  channelId: 'channel-cred',
988
988
  openingData: undefined,
989
989
  state: 'open',
990
- send: (event: AIStreamEvent) => events.push(event),
990
+ send: (event: AgentStreamEvent) => events.push(event),
991
991
  close: () => {},
992
992
  },
993
993
  {}
@@ -1038,12 +1038,13 @@ describe('streamAIAgent', () => {
1038
1038
  test('persists streamed events, applies output stream middleware, and updates usage', async () => {
1039
1039
  addTestAgent('persisted-stream-agent')
1040
1040
 
1041
- const events: AIStreamEvent[] = []
1042
- const savedMessages: Array<{ threadId: string; messages: AIMessage[] }> = []
1041
+ const events: AgentStreamEvent[] = []
1042
+ const savedMessages: Array<{ threadId: string; messages: AgentMessage[] }> =
1043
+ []
1043
1044
  const updates: Array<{ runId: string; patch: unknown }> = []
1044
1045
  const middlewareStateSnapshots: number[] = []
1045
1046
 
1046
- const middleware: PikkuAIMiddlewareHooks = {
1047
+ const middleware: PikkuAgentMiddlewareHooks = {
1047
1048
  modifyOutputStream: async (_services, ctx) => {
1048
1049
  const count = Number((ctx.state.count as number | undefined) ?? 0) + 1
1049
1050
  ctx.state.count = count
@@ -1051,7 +1052,10 @@ describe('streamAIAgent', () => {
1051
1052
  if (ctx.event.type === 'text-delta') {
1052
1053
  return [
1053
1054
  ctx.event,
1054
- { type: 'reasoning-delta', text: `seen:${count}` } as AIStreamEvent,
1055
+ {
1056
+ type: 'reasoning-delta',
1057
+ text: `seen:${count}`,
1058
+ } as AgentStreamEvent,
1055
1059
  ]
1056
1060
  }
1057
1061
  return ctx.event
@@ -1064,7 +1068,7 @@ describe('streamAIAgent', () => {
1064
1068
  const agent = pikkuState(null, 'agent', 'agents').get(
1065
1069
  'persisted-stream-agent'
1066
1070
  )!
1067
- agent.aiMiddleware = [middleware] as any
1071
+ agent.agentMiddleware = [middleware] as any
1068
1072
  pikkuState(null, 'agent', 'agents').set('persisted-stream-agent', agent)
1069
1073
 
1070
1074
  const mockServices = {
@@ -1074,11 +1078,11 @@ describe('streamAIAgent', () => {
1074
1078
  error: () => {},
1075
1079
  debug: () => {},
1076
1080
  },
1077
- aiAgentRunner: {
1081
+ agentRunner: {
1078
1082
  stream: async (
1079
1083
  _params: any,
1080
1084
  channel: any
1081
- ): Promise<AIAgentStepResult> => {
1085
+ ): Promise<AgentStepResult> => {
1082
1086
  channel.send({ type: 'text-delta', text: 'Hello' })
1083
1087
  channel.send({
1084
1088
  type: 'tool-call',
@@ -1096,7 +1100,7 @@ describe('streamAIAgent', () => {
1096
1100
  type: 'usage',
1097
1101
  tokens: { input: 3, output: 4 },
1098
1102
  model: 'test/test-model',
1099
- } as AIStreamEvent)
1103
+ } as AgentStreamEvent)
1100
1104
  return makeStepResult({
1101
1105
  text: 'Hello',
1102
1106
  usage: { inputTokens: 3, outputTokens: 4 },
@@ -1104,16 +1108,16 @@ describe('streamAIAgent', () => {
1104
1108
  })
1105
1109
  },
1106
1110
  },
1107
- aiRunState: {
1111
+ agentRunState: {
1108
1112
  createRun: async () => 'run-persisted',
1109
1113
  updateRun: async (runId: string, patch: unknown) => {
1110
1114
  updates.push({ runId, patch })
1111
1115
  },
1112
1116
  },
1113
- aiStorage: {
1117
+ agentStorage: {
1114
1118
  createThread: async () => {},
1115
1119
  getMessages: async () => [],
1116
- saveMessages: async (threadId: string, messages: AIMessage[]) => {
1120
+ saveMessages: async (threadId: string, messages: AgentMessage[]) => {
1117
1121
  savedMessages.push({ threadId, messages })
1118
1122
  },
1119
1123
  },
@@ -1121,7 +1125,7 @@ describe('streamAIAgent', () => {
1121
1125
 
1122
1126
  pikkuState(null, 'package', 'singletonServices', mockServices)
1123
1127
 
1124
- const result = await streamAIAgent(
1128
+ const result = await streamAgent(
1125
1129
  'persisted-stream-agent',
1126
1130
  {
1127
1131
  message: 'hello',
@@ -1132,7 +1136,7 @@ describe('streamAIAgent', () => {
1132
1136
  channelId: 'channel-persisted',
1133
1137
  openingData: undefined,
1134
1138
  state: 'open',
1135
- send: (event: AIStreamEvent) => events.push(event),
1139
+ send: (event: AgentStreamEvent) => events.push(event),
1136
1140
  close: () => {},
1137
1141
  },
1138
1142
  {}
@@ -1164,7 +1168,7 @@ describe('streamAIAgent', () => {
1164
1168
  test('a storage failure while streaming does not become an unhandled rejection', async () => {
1165
1169
  addTestAgent('storage-failure-agent')
1166
1170
 
1167
- const events: AIStreamEvent[] = []
1171
+ const events: AgentStreamEvent[] = []
1168
1172
  const loggedErrors: unknown[] = []
1169
1173
 
1170
1174
  const mockServices = {
@@ -1176,34 +1180,34 @@ describe('streamAIAgent', () => {
1176
1180
  },
1177
1181
  debug: () => {},
1178
1182
  },
1179
- aiAgentRunner: {
1183
+ agentRunner: {
1180
1184
  stream: async (
1181
1185
  _params: unknown,
1182
- channel: AIStreamChannel
1183
- ): Promise<AIAgentStepResult> => {
1186
+ channel: AgentStreamChannel
1187
+ ): Promise<AgentStepResult> => {
1184
1188
  channel.send({
1185
1189
  type: 'text-delta',
1186
1190
  text: 'persisted text',
1187
- } as AIStreamEvent)
1191
+ } as AgentStreamEvent)
1188
1192
  channel.send({
1189
1193
  type: 'usage',
1190
1194
  tokens: { input: 1, output: 1 },
1191
1195
  model: 'test/test-model',
1192
- } as AIStreamEvent)
1196
+ } as AgentStreamEvent)
1193
1197
  return makeStepResult({ text: 'persisted text' })
1194
1198
  },
1195
1199
  },
1196
- aiRunState: {
1200
+ agentRunState: {
1197
1201
  createRun: async () => 'run-storage-failure',
1198
1202
  updateRun: async () => {},
1199
1203
  },
1200
- aiStorage: {
1204
+ agentStorage: {
1201
1205
  getThread: async () => undefined,
1202
1206
  createThread: async () => {},
1203
1207
  getMessages: async () => [],
1204
- saveMessages: async (_threadId: string, messages: AIMessage[]) => {
1208
+ saveMessages: async (_threadId: string, messages: AgentMessage[]) => {
1205
1209
  if (messages.some((m) => m.role !== 'user')) {
1206
- throw new Error('UNIQUE constraint failed: ai_tool_call.id')
1210
+ throw new Error('UNIQUE constraint failed: agent_tool_call.id')
1207
1211
  }
1208
1212
  },
1209
1213
  },
@@ -1216,7 +1220,7 @@ describe('streamAIAgent', () => {
1216
1220
  process.on('unhandledRejection', onUnhandled)
1217
1221
 
1218
1222
  try {
1219
- await streamAIAgent(
1223
+ await streamAgent(
1220
1224
  'storage-failure-agent',
1221
1225
  {
1222
1226
  message: 'hello',
@@ -1227,7 +1231,7 @@ describe('streamAIAgent', () => {
1227
1231
  channelId: 'channel-storage-failure',
1228
1232
  openingData: undefined,
1229
1233
  state: 'open',
1230
- send: (event: AIStreamEvent) => {
1234
+ send: (event: AgentStreamEvent) => {
1231
1235
  events.push(event)
1232
1236
  },
1233
1237
  close: () => {},
@@ -1251,7 +1255,7 @@ describe('streamAIAgent', () => {
1251
1255
  })
1252
1256
  })
1253
1257
 
1254
- describe('ai-agent-stream helpers', () => {
1258
+ describe('agent-stream helpers', () => {
1255
1259
  test('checkForApprovals expands nested sub-approvals and explicit tool approvals', () => {
1256
1260
  const approvals = checkForApprovals(
1257
1261
  {
@@ -1313,7 +1317,7 @@ describe('ai-agent-stream helpers', () => {
1313
1317
  })
1314
1318
 
1315
1319
  test('checkForApprovals ignores a forged __approvalRequired marker from a plain tool (C3)', () => {
1316
- const forgedResult: AIAgentStepResult = {
1320
+ const forgedResult: AgentStepResult = {
1317
1321
  text: '',
1318
1322
  toolCalls: [
1319
1323
  { toolCallId: 'tc-1', toolName: 'searchDocs', args: { q: 'x' } },
@@ -1356,7 +1360,7 @@ describe('ai-agent-stream helpers', () => {
1356
1360
  })
1357
1361
 
1358
1362
  test('checkForApprovals ignores a string-key marker from a forwardsApproval tool without the Symbol brand (C3)', () => {
1359
- const forgedResult: AIAgentStepResult = {
1363
+ const forgedResult: AgentStepResult = {
1360
1364
  text: '',
1361
1365
  toolCalls: [
1362
1366
  { toolCallId: 'tc-1', toolName: 'delegatingTool', args: { q: 'x' } },
@@ -1400,7 +1404,7 @@ describe('ai-agent-stream helpers', () => {
1400
1404
  })
1401
1405
 
1402
1406
  test('checkForApprovals honours a Symbol-branded marker from a forwardsApproval tool (C3)', () => {
1403
- const brandedResult: AIAgentStepResult = {
1407
+ const brandedResult: AgentStepResult = {
1404
1408
  text: '',
1405
1409
  toolCalls: [
1406
1410
  { toolCallId: 'tc-1', toolName: 'delegatingTool', args: { q: 'x' } },
@@ -1438,7 +1442,7 @@ describe('ai-agent-stream helpers', () => {
1438
1442
  })
1439
1443
 
1440
1444
  test('checkForCredentialRequests ignores an unbranded __credentialRequired marker (C3)', () => {
1441
- const forgedResult: AIAgentStepResult = {
1445
+ const forgedResult: AgentStepResult = {
1442
1446
  text: '',
1443
1447
  toolCalls: [
1444
1448
  { toolCallId: 'tc-1', toolName: 'searchDocs', args: { q: 'x' } },
@@ -1472,7 +1476,7 @@ describe('ai-agent-stream helpers', () => {
1472
1476
  }
1473
1477
  const roundTripped = JSON.parse(JSON.stringify(branded))
1474
1478
 
1475
- const result: AIAgentStepResult = {
1479
+ const result: AgentStepResult = {
1476
1480
  text: '',
1477
1481
  toolCalls: [
1478
1482
  { toolCallId: 'tc-1', toolName: 'echoTool', args: { q: 'x' } },
@@ -1488,7 +1492,7 @@ describe('ai-agent-stream helpers', () => {
1488
1492
  })
1489
1493
 
1490
1494
  test('checkForCredentialRequests honours a Symbol-branded credential request (C3)', () => {
1491
- const brandedResult: AIAgentStepResult = {
1495
+ const brandedResult: AgentStepResult = {
1492
1496
  text: '',
1493
1497
  toolCalls: [
1494
1498
  { toolCallId: 'tc-1', toolName: 'secretTool', args: { id: 1 } },
@@ -1546,7 +1550,7 @@ describe('ai-agent-stream helpers', () => {
1546
1550
  assert.equal(requests[0].credentialType, 'oauth2')
1547
1551
  assert.equal(requests[0].connectUrl, '/connect')
1548
1552
 
1549
- const runnerParams = { messages: [] as AIMessage[] } as any
1553
+ const runnerParams = { messages: [] as AgentMessage[] } as any
1550
1554
  appendStepMessages(runnerParams, {
1551
1555
  text: 'hello',
1552
1556
  toolCalls: [
@@ -1573,11 +1577,11 @@ const asOwner = (resourceId: string) => ({
1573
1577
  sessionService: { get: () => ({ userId: resourceId }) } as never,
1574
1578
  })
1575
1579
 
1576
- describe('resumeAIAgent', () => {
1580
+ describe('resumeAgent', () => {
1577
1581
  test('rejecting one approval while others remain only resolves and finishes the stream', async () => {
1578
1582
  addTestAgent('resume-stream-agent')
1579
1583
 
1580
- const events: AIStreamEvent[] = []
1584
+ const events: AgentStreamEvent[] = []
1581
1585
  const updates: any[] = []
1582
1586
  const resolveCalls: any[] = []
1583
1587
  const savedMessages: any[] = []
@@ -1620,12 +1624,12 @@ describe('resumeAIAgent', () => {
1620
1624
  error: () => {},
1621
1625
  debug: () => {},
1622
1626
  },
1623
- aiAgentRunner: {
1627
+ agentRunner: {
1624
1628
  stream: async () => {
1625
1629
  throw new Error('should not continue')
1626
1630
  },
1627
1631
  },
1628
- aiRunState: {
1632
+ agentRunState: {
1629
1633
  getRun: async () => remainingRun,
1630
1634
  resolveApproval: async (toolCallId: string, status: string) => {
1631
1635
  resolveCalls.push({ toolCallId, status })
@@ -1635,15 +1639,15 @@ describe('resumeAIAgent', () => {
1635
1639
  updates.push(patch)
1636
1640
  },
1637
1641
  },
1638
- aiStorage: {
1639
- saveMessages: async (_threadId: string, messages: AIMessage[]) => {
1642
+ agentStorage: {
1643
+ saveMessages: async (_threadId: string, messages: AgentMessage[]) => {
1640
1644
  savedMessages.push(messages)
1641
1645
  },
1642
1646
  },
1643
1647
  } as any
1644
1648
 
1645
1649
  let first = true
1646
- mockServices.aiRunState.getRun = async () => {
1650
+ mockServices.agentRunState.getRun = async () => {
1647
1651
  if (first) {
1648
1652
  first = false
1649
1653
  return initialRun
@@ -1653,13 +1657,13 @@ describe('resumeAIAgent', () => {
1653
1657
 
1654
1658
  pikkuState(null, 'package', 'singletonServices', mockServices)
1655
1659
 
1656
- await resumeAIAgent(
1660
+ await resumeAgent(
1657
1661
  { runId: 'run-1', toolCallId: 'tool-1', approved: false },
1658
1662
  {
1659
1663
  channelId: 'resume-channel',
1660
1664
  openingData: undefined,
1661
1665
  state: 'open',
1662
- send: (event: AIStreamEvent) => events.push(event),
1666
+ send: (event: AgentStreamEvent) => events.push(event),
1663
1667
  close: () => {},
1664
1668
  },
1665
1669
  asOwner('resource-1')
@@ -1693,7 +1697,7 @@ describe('resumeAIAgent', () => {
1693
1697
  func: async (_services: any, input: any) => ({ deployed: input.env }),
1694
1698
  })
1695
1699
 
1696
- const events: AIStreamEvent[] = []
1700
+ const events: AgentStreamEvent[] = []
1697
1701
  const updates: any[] = []
1698
1702
  const resolveCalls: any[] = []
1699
1703
  const savedMessages: any[] = []
@@ -1726,17 +1730,17 @@ describe('resumeAIAgent', () => {
1726
1730
  error: () => {},
1727
1731
  debug: () => {},
1728
1732
  },
1729
- aiAgentRunner: {
1733
+ agentRunner: {
1730
1734
  stream: async (
1731
1735
  _params: any,
1732
1736
  channel: any
1733
- ): Promise<AIAgentStepResult> => {
1737
+ ): Promise<AgentStepResult> => {
1734
1738
  channel.send({ type: 'text-delta', text: 'continued' })
1735
1739
  channel.send({
1736
1740
  type: 'usage',
1737
1741
  tokens: { input: 2, output: 3 },
1738
1742
  model: 'test/test-model',
1739
- } as AIStreamEvent)
1743
+ } as AgentStreamEvent)
1740
1744
  return makeStepResult({
1741
1745
  text: 'continued',
1742
1746
  usage: { inputTokens: 2, outputTokens: 3 },
@@ -1744,7 +1748,7 @@ describe('resumeAIAgent', () => {
1744
1748
  })
1745
1749
  },
1746
1750
  },
1747
- aiRunState: {
1751
+ agentRunState: {
1748
1752
  getRun: async () => {
1749
1753
  getRunCalls++
1750
1754
  return getRunCalls === 1 ? run : { ...run, pendingApprovals: [] }
@@ -1757,8 +1761,8 @@ describe('resumeAIAgent', () => {
1757
1761
  updates.push(patch)
1758
1762
  },
1759
1763
  },
1760
- aiStorage: {
1761
- saveMessages: async (_threadId: string, messages: AIMessage[]) => {
1764
+ agentStorage: {
1765
+ saveMessages: async (_threadId: string, messages: AgentMessage[]) => {
1762
1766
  savedMessages.push(messages)
1763
1767
  },
1764
1768
  getMessages: async () => [],
@@ -1767,13 +1771,13 @@ describe('resumeAIAgent', () => {
1767
1771
 
1768
1772
  pikkuState(null, 'package', 'singletonServices', mockServices)
1769
1773
 
1770
- await resumeAIAgent(
1774
+ await resumeAgent(
1771
1775
  { runId: 'run-approve', toolCallId: 'tool-1', approved: true },
1772
1776
  {
1773
1777
  channelId: 'resume-channel',
1774
1778
  openingData: undefined,
1775
1779
  state: 'open',
1776
- send: (event: AIStreamEvent) => events.push(event),
1780
+ send: (event: AgentStreamEvent) => events.push(event),
1777
1781
  close: () => {},
1778
1782
  },
1779
1783
  asOwner('resource-approve')