@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
@@ -2,13 +2,13 @@ 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 { runAIAgent, resumeAIAgentSync } from './ai-agent-runner.js'
5
+ import { runAgent, resumeAgentSync } from './agent-runner.js'
6
6
  import type {
7
7
  AgentRunState,
8
- CoreAIAgent,
9
- PikkuAIMiddlewareHooks,
10
- } from './ai-agent.types.js'
11
- import type { AIAgentStepResult } from '../../services/ai-agent-runner-service.js'
8
+ CoreAgent,
9
+ PikkuAgentMiddlewareHooks,
10
+ } from './agent.types.js'
11
+ import type { AgentStepResult } from '../../services/agent-runner-service.js'
12
12
  import {
13
13
  AIProviderNotConfiguredError,
14
14
  ForbiddenError,
@@ -19,7 +19,7 @@ beforeEach(() => {
19
19
  })
20
20
 
21
21
  const addTestAgent = (agentName: string) => {
22
- const agent: CoreAIAgent = {
22
+ const agent: CoreAgent = {
23
23
  name: agentName,
24
24
  description: 'test agent',
25
25
  instructions: 'be helpful',
@@ -36,8 +36,8 @@ const addTestAgent = (agentName: string) => {
36
36
  }
37
37
 
38
38
  const makeStepResult = (
39
- overrides?: Partial<AIAgentStepResult>
40
- ): AIAgentStepResult => ({
39
+ overrides?: Partial<AgentStepResult>
40
+ ): AgentStepResult => ({
41
41
  text: '',
42
42
  toolCalls: [],
43
43
  toolResults: [],
@@ -50,8 +50,8 @@ const asOwner = (resourceId: string) => ({
50
50
  sessionService: { get: () => ({ userId: resourceId }) } as never,
51
51
  })
52
52
 
53
- describe('runAIAgent', () => {
54
- test('throws when aiRunState service is missing', async () => {
53
+ describe('runAgent', () => {
54
+ test('throws when agentRunState service is missing', async () => {
55
55
  addTestAgent('missing-run-state-agent')
56
56
 
57
57
  pikkuState(null, 'package', 'singletonServices', {
@@ -61,25 +61,25 @@ describe('runAIAgent', () => {
61
61
  error: () => {},
62
62
  debug: () => {},
63
63
  },
64
- aiAgentRunner: {
64
+ agentRunner: {
65
65
  run: async () => makeStepResult({ text: 'unused' }),
66
66
  },
67
67
  } as any)
68
68
 
69
69
  await assert.rejects(
70
70
  () =>
71
- runAIAgent(
71
+ runAgent(
72
72
  'missing-run-state-agent',
73
73
  { message: 'hello', threadId: 't', resourceId: 'r' },
74
74
  {}
75
75
  ),
76
76
  {
77
- message: 'AIRunStateService not available in singletonServices',
77
+ message: 'AgentRunStateService not available in singletonServices',
78
78
  }
79
79
  )
80
80
  })
81
81
 
82
- test('throws AIProviderNotConfiguredError when aiAgentRunner is missing', async () => {
82
+ test('throws AIProviderNotConfiguredError when agentRunner is missing', async () => {
83
83
  addTestAgent('no-provider-agent')
84
84
 
85
85
  const mockServices = {
@@ -89,7 +89,7 @@ describe('runAIAgent', () => {
89
89
  error: () => {},
90
90
  debug: () => {},
91
91
  },
92
- aiRunState: {
92
+ agentRunState: {
93
93
  createRun: async () => 'run-no-provider',
94
94
  updateRun: async () => {},
95
95
  },
@@ -99,7 +99,7 @@ describe('runAIAgent', () => {
99
99
 
100
100
  await assert.rejects(
101
101
  () =>
102
- runAIAgent(
102
+ runAgent(
103
103
  'no-provider-agent',
104
104
  { message: 'hello', threadId: 't', resourceId: 'r' },
105
105
  {}
@@ -125,12 +125,12 @@ describe('runAIAgent', () => {
125
125
  error: () => {},
126
126
  debug: () => {},
127
127
  },
128
- aiAgentRunner: {
128
+ agentRunner: {
129
129
  run: async () => {
130
130
  throw expectedError
131
131
  },
132
132
  },
133
- aiRunState: {
133
+ agentRunState: {
134
134
  createRun: async () => 'run-1',
135
135
  updateRun: async (_runId: string, patch: unknown) => {
136
136
  updates.push(patch)
@@ -142,7 +142,7 @@ describe('runAIAgent', () => {
142
142
 
143
143
  await assert.rejects(
144
144
  () =>
145
- runAIAgent(
145
+ runAgent(
146
146
  'failing-agent',
147
147
  {
148
148
  message: 'hello',
@@ -170,8 +170,8 @@ describe('runAIAgent', () => {
170
170
  error: () => {},
171
171
  debug: () => {},
172
172
  },
173
- aiAgentRunner: {
174
- run: async (): Promise<AIAgentStepResult> => {
173
+ agentRunner: {
174
+ run: async (): Promise<AgentStepResult> => {
175
175
  callCount++
176
176
  if (callCount === 1) {
177
177
  return makeStepResult({
@@ -197,7 +197,7 @@ describe('runAIAgent', () => {
197
197
  })
198
198
  },
199
199
  },
200
- aiRunState: {
200
+ agentRunState: {
201
201
  createRun: async () => 'run-multi',
202
202
  updateRun: async () => {},
203
203
  },
@@ -205,7 +205,7 @@ describe('runAIAgent', () => {
205
205
 
206
206
  pikkuState(null, 'package', 'singletonServices', mockServices)
207
207
 
208
- const result = await runAIAgent(
208
+ const result = await runAgent(
209
209
  'multi-step-agent',
210
210
  {
211
211
  message: 'hello',
@@ -226,13 +226,13 @@ describe('runAIAgent', () => {
226
226
  addTestAgent('afterstep-agent')
227
227
 
228
228
  const afterStepCalls: unknown[] = []
229
- const middleware: PikkuAIMiddlewareHooks = {
229
+ const middleware: PikkuAgentMiddlewareHooks = {
230
230
  afterStep: async (_services, ctx) => {
231
231
  afterStepCalls.push(ctx)
232
232
  },
233
233
  }
234
234
  const agent = pikkuState(null, 'agent', 'agents').get('afterstep-agent')!
235
- agent.aiMiddleware = [middleware] as any
235
+ agent.agentMiddleware = [middleware] as any
236
236
  pikkuState(null, 'agent', 'agents').set('afterstep-agent', agent)
237
237
 
238
238
  let callCount = 0
@@ -243,8 +243,8 @@ describe('runAIAgent', () => {
243
243
  error: () => {},
244
244
  debug: () => {},
245
245
  },
246
- aiAgentRunner: {
247
- run: async (): Promise<AIAgentStepResult> => {
246
+ agentRunner: {
247
+ run: async (): Promise<AgentStepResult> => {
248
248
  callCount++
249
249
  if (callCount === 1) {
250
250
  return makeStepResult({
@@ -266,7 +266,7 @@ describe('runAIAgent', () => {
266
266
  })
267
267
  },
268
268
  },
269
- aiRunState: {
269
+ agentRunState: {
270
270
  createRun: async () => 'run-afterstep',
271
271
  updateRun: async () => {},
272
272
  },
@@ -274,7 +274,7 @@ describe('runAIAgent', () => {
274
274
 
275
275
  pikkuState(null, 'package', 'singletonServices', mockServices)
276
276
 
277
- await runAIAgent(
277
+ await runAgent(
278
278
  'afterstep-agent',
279
279
  { message: 'hi', threadId: 't1', resourceId: 'r1' },
280
280
  {}
@@ -295,13 +295,13 @@ describe('runAIAgent', () => {
295
295
  addTestAgent('onerror-agent')
296
296
 
297
297
  const onErrorCalls: unknown[] = []
298
- const middleware: PikkuAIMiddlewareHooks = {
298
+ const middleware: PikkuAgentMiddlewareHooks = {
299
299
  onError: async (_services, ctx) => {
300
300
  onErrorCalls.push(ctx)
301
301
  },
302
302
  }
303
303
  const agent = pikkuState(null, 'agent', 'agents').get('onerror-agent')!
304
- agent.aiMiddleware = [middleware] as any
304
+ agent.agentMiddleware = [middleware] as any
305
305
  pikkuState(null, 'agent', 'agents').set('onerror-agent', agent)
306
306
 
307
307
  const expectedError = new Error('boom')
@@ -312,12 +312,12 @@ describe('runAIAgent', () => {
312
312
  error: () => {},
313
313
  debug: () => {},
314
314
  },
315
- aiAgentRunner: {
315
+ agentRunner: {
316
316
  run: async () => {
317
317
  throw expectedError
318
318
  },
319
319
  },
320
- aiRunState: {
320
+ agentRunState: {
321
321
  createRun: async () => 'run-err',
322
322
  updateRun: async () => {},
323
323
  },
@@ -327,7 +327,7 @@ describe('runAIAgent', () => {
327
327
 
328
328
  await assert.rejects(
329
329
  () =>
330
- runAIAgent(
330
+ runAgent(
331
331
  'onerror-agent',
332
332
  { message: 'hi', threadId: 't2', resourceId: 'r2' },
333
333
  {}
@@ -344,7 +344,7 @@ describe('runAIAgent', () => {
344
344
  test('onError hook failure does not suppress original error', async () => {
345
345
  addTestAgent('onerror-throws-agent')
346
346
 
347
- const middleware: PikkuAIMiddlewareHooks = {
347
+ const middleware: PikkuAgentMiddlewareHooks = {
348
348
  onError: async () => {
349
349
  throw new Error('hook error')
350
350
  },
@@ -352,7 +352,7 @@ describe('runAIAgent', () => {
352
352
  const agent = pikkuState(null, 'agent', 'agents').get(
353
353
  'onerror-throws-agent'
354
354
  )!
355
- agent.aiMiddleware = [middleware] as any
355
+ agent.agentMiddleware = [middleware] as any
356
356
  pikkuState(null, 'agent', 'agents').set('onerror-throws-agent', agent)
357
357
 
358
358
  const expectedError = new Error('original error')
@@ -363,12 +363,12 @@ describe('runAIAgent', () => {
363
363
  error: () => {},
364
364
  debug: () => {},
365
365
  },
366
- aiAgentRunner: {
366
+ agentRunner: {
367
367
  run: async () => {
368
368
  throw expectedError
369
369
  },
370
370
  },
371
- aiRunState: {
371
+ agentRunState: {
372
372
  createRun: async () => 'run-safe',
373
373
  updateRun: async () => {},
374
374
  },
@@ -378,7 +378,7 @@ describe('runAIAgent', () => {
378
378
 
379
379
  await assert.rejects(
380
380
  () =>
381
- runAIAgent(
381
+ runAgent(
382
382
  'onerror-throws-agent',
383
383
  { message: 'hi', threadId: 't3', resourceId: 'r3' },
384
384
  {}
@@ -401,12 +401,12 @@ describe('runAIAgent', () => {
401
401
  error: () => {},
402
402
  debug: () => {},
403
403
  },
404
- aiAgentRunner: {
404
+ agentRunner: {
405
405
  run: async () => {
406
406
  throw new Error('should not run')
407
407
  },
408
408
  },
409
- aiRunState: {
409
+ agentRunState: {
410
410
  createRun: async (run: any) => {
411
411
  createdRuns.push(run)
412
412
  return 'run-missing-rpc'
@@ -417,7 +417,7 @@ describe('runAIAgent', () => {
417
417
 
418
418
  pikkuState(null, 'package', 'singletonServices', mockServices)
419
419
 
420
- const result = await runAIAgent(
420
+ const result = await runAgent(
421
421
  'missing-rpc-agent',
422
422
  { message: 'deploy', threadId: 'thread-1', resourceId: 'resource-1' },
423
423
  asOwner('resource-1')
@@ -449,7 +449,7 @@ describe('runAIAgent', () => {
449
449
  const inputMessages = [
450
450
  { id: 'extra', role: 'system', content: 'extra', createdAt: new Date() },
451
451
  ] as any
452
- const middleware: PikkuAIMiddlewareHooks = {
452
+ const middleware: PikkuAgentMiddlewareHooks = {
453
453
  modifyInput: async (_services, ctx) => ({
454
454
  instructions: `${ctx.instructions}\n\nextra rules`,
455
455
  messages: [...ctx.messages, ...inputMessages],
@@ -460,7 +460,7 @@ describe('runAIAgent', () => {
460
460
  }),
461
461
  }
462
462
  const agent = pikkuState(null, 'agent', 'agents').get('middleware-agent')!
463
- agent.aiMiddleware = [middleware] as any
463
+ agent.agentMiddleware = [middleware] as any
464
464
  pikkuState(null, 'agent', 'agents').set('middleware-agent', agent)
465
465
 
466
466
  const mockServices = {
@@ -470,8 +470,8 @@ describe('runAIAgent', () => {
470
470
  error: () => {},
471
471
  debug: () => {},
472
472
  },
473
- aiAgentRunner: {
474
- run: async (params: any): Promise<AIAgentStepResult> => {
473
+ agentRunner: {
474
+ run: async (params: any): Promise<AgentStepResult> => {
475
475
  seenRunnerParams.push({
476
476
  instructions: params.instructions,
477
477
  messages: params.messages,
@@ -483,7 +483,7 @@ describe('runAIAgent', () => {
483
483
  } as any)
484
484
  },
485
485
  },
486
- aiRunState: {
486
+ agentRunState: {
487
487
  createRun: async () => 'run-middleware',
488
488
  updateRun: async () => {},
489
489
  },
@@ -491,7 +491,7 @@ describe('runAIAgent', () => {
491
491
 
492
492
  pikkuState(null, 'package', 'singletonServices', mockServices)
493
493
 
494
- const result = await runAIAgent(
494
+ const result = await runAgent(
495
495
  'middleware-agent',
496
496
  { message: 'hello', threadId: 'thread-mw', resourceId: 'resource-mw' },
497
497
  {}
@@ -522,13 +522,13 @@ describe('runAIAgent', () => {
522
522
  error: () => {},
523
523
  debug: () => {},
524
524
  },
525
- aiAgentRunner: {
526
- run: async (): Promise<AIAgentStepResult> => {
525
+ agentRunner: {
526
+ run: async (): Promise<AgentStepResult> => {
527
527
  runnerCalls++
528
528
  return makeStepResult({ text: 'should not happen' })
529
529
  },
530
530
  },
531
- aiRunState: {
531
+ agentRunState: {
532
532
  createRun: async () => 'run-stop',
533
533
  updateRun: async (_runId: string, patch: any) => {
534
534
  updates.push(patch)
@@ -538,7 +538,7 @@ describe('runAIAgent', () => {
538
538
 
539
539
  pikkuState(null, 'package', 'singletonServices', mockServices)
540
540
 
541
- const result = await runAIAgent(
541
+ const result = await runAgent(
542
542
  'prepare-stop-agent',
543
543
  {
544
544
  message: 'hello',
@@ -588,8 +588,8 @@ describe('runAIAgent', () => {
588
588
  error: () => {},
589
589
  debug: () => {},
590
590
  },
591
- aiAgentRunner: {
592
- run: async (): Promise<AIAgentStepResult> =>
591
+ agentRunner: {
592
+ run: async (): Promise<AgentStepResult> =>
593
593
  makeStepResult({
594
594
  text: 'Need approval',
595
595
  toolCalls: [
@@ -603,13 +603,13 @@ describe('runAIAgent', () => {
603
603
  finishReason: 'tool-calls',
604
604
  }),
605
605
  },
606
- aiRunState: {
606
+ agentRunState: {
607
607
  createRun: async () => 'run-approval',
608
608
  updateRun: async (_runId: string, patch: any) => {
609
609
  updates.push(patch)
610
610
  },
611
611
  },
612
- aiStorage: {
612
+ agentStorage: {
613
613
  createThread: async () => {},
614
614
  getMessages: async () => [],
615
615
  saveMessages: async (_threadId: string, messages: any[]) => {
@@ -620,7 +620,7 @@ describe('runAIAgent', () => {
620
620
 
621
621
  pikkuState(null, 'package', 'singletonServices', mockServices)
622
622
 
623
- const result = await runAIAgent(
623
+ const result = await runAgent(
624
624
  'approval-agent',
625
625
  { message: 'deploy', threadId: 'thread-a', resourceId: 'resource-a' },
626
626
  {}
@@ -659,25 +659,25 @@ describe('runAIAgent', () => {
659
659
  })
660
660
  })
661
661
 
662
- describe('resumeAIAgentSync', () => {
662
+ describe('resumeAgentSync', () => {
663
663
  test('throws for missing services, missing runs, wrong status, and missing runner', async () => {
664
664
  pikkuState(null, 'package', 'singletonServices', {} as any)
665
- await assert.rejects(() => resumeAIAgentSync('run-x', [], {}), {
666
- message: 'AIRunStateService not available in singletonServices',
665
+ await assert.rejects(() => resumeAgentSync('run-x', [], {}), {
666
+ message: 'AgentRunStateService not available in singletonServices',
667
667
  })
668
668
 
669
669
  pikkuState(null, 'package', 'singletonServices', {
670
- aiRunState: {
670
+ agentRunState: {
671
671
  getRun: async () => null,
672
672
  },
673
673
  } as any)
674
- await assert.rejects(() => resumeAIAgentSync('run-x', [], {}), {
674
+ await assert.rejects(() => resumeAgentSync('run-x', [], {}), {
675
675
  message: 'No run found for runId run-x',
676
676
  })
677
677
 
678
678
  addTestAgent('resume-guard-agent')
679
679
  pikkuState(null, 'package', 'singletonServices', {
680
- aiRunState: {
680
+ agentRunState: {
681
681
  getRun: async () => ({
682
682
  runId: 'run-y',
683
683
  agentName: 'resume-guard-agent',
@@ -690,12 +690,12 @@ describe('resumeAIAgentSync', () => {
690
690
  }),
691
691
  },
692
692
  } as any)
693
- await assert.rejects(() => resumeAIAgentSync('run-y', [], asOwner('r')), {
693
+ await assert.rejects(() => resumeAgentSync('run-y', [], asOwner('r')), {
694
694
  message: 'Run run-y is not suspended (status: completed)',
695
695
  })
696
696
 
697
697
  pikkuState(null, 'package', 'singletonServices', {
698
- aiRunState: {
698
+ agentRunState: {
699
699
  getRun: async () => ({
700
700
  runId: 'run-z',
701
701
  agentName: 'resume-guard-agent',
@@ -712,7 +712,7 @@ describe('resumeAIAgentSync', () => {
712
712
  },
713
713
  } as any)
714
714
  await assert.rejects(
715
- () => resumeAIAgentSync('run-z', [], asOwner('r')),
715
+ () => resumeAgentSync('run-z', [], asOwner('r')),
716
716
  (error: unknown) => error instanceof AIProviderNotConfiguredError
717
717
  )
718
718
  })
@@ -769,14 +769,14 @@ describe('resumeAIAgentSync', () => {
769
769
  error: () => {},
770
770
  debug: () => {},
771
771
  },
772
- aiAgentRunner: {
773
- run: async (): Promise<AIAgentStepResult> =>
772
+ agentRunner: {
773
+ run: async (): Promise<AgentStepResult> =>
774
774
  makeStepResult({
775
775
  text: 'Resumed answer',
776
776
  usage: { inputTokens: 5, outputTokens: 3 },
777
777
  }),
778
778
  },
779
- aiRunState: {
779
+ agentRunState: {
780
780
  getRun: async () => run,
781
781
  createRun: async () => 'unused',
782
782
  updateRun: async (_runId: string, patch: any) => {
@@ -787,7 +787,7 @@ describe('resumeAIAgentSync', () => {
787
787
  return true
788
788
  },
789
789
  },
790
- aiStorage: {
790
+ agentStorage: {
791
791
  saveMessages: async (threadId: string, messages: any[]) => {
792
792
  savedMessages.push({ threadId, messages })
793
793
  },
@@ -797,7 +797,7 @@ describe('resumeAIAgentSync', () => {
797
797
 
798
798
  pikkuState(null, 'package', 'singletonServices', mockServices)
799
799
 
800
- const result = await resumeAIAgentSync(
800
+ const result = await resumeAgentSync(
801
801
  'run-resume',
802
802
  [{ toolCallId: 'tc-1', approved: true }],
803
803
  asOwner('resource-resume')
@@ -864,32 +864,31 @@ describe('resumeAIAgentSync', () => {
864
864
  error: () => {},
865
865
  debug: () => {},
866
866
  },
867
- aiAgentRunner: {
868
- run: async (): Promise<AIAgentStepResult> =>
867
+ agentRunner: {
868
+ run: async (): Promise<AgentStepResult> =>
869
869
  makeStepResult({
870
870
  text: 'Refunded',
871
871
  usage: { inputTokens: 1, outputTokens: 1 },
872
872
  }),
873
873
  },
874
- aiRunState: {
874
+ agentRunState: {
875
875
  getRun: async () => run,
876
876
  createRun: async () => 'unused',
877
877
  updateRun: async () => {},
878
878
  resolveApproval: async () => claimsLeft-- > 0,
879
879
  },
880
- aiStorage: {
880
+ agentStorage: {
881
881
  saveMessages: async () => {},
882
882
  getMessages: async () => [],
883
883
  },
884
884
  } as any)
885
885
 
886
886
  const approvals = [{ toolCallId: 'tc-claim', approved: true }]
887
- await resumeAIAgentSync('run-claim', approvals, asOwner('resource-claim'))
887
+ await resumeAgentSync('run-claim', approvals, asOwner('resource-claim'))
888
888
  assert.equal(executions, 1, 'the winner ran the tool once')
889
889
 
890
890
  await assert.rejects(
891
- () =>
892
- resumeAIAgentSync('run-claim', approvals, asOwner('resource-claim')),
891
+ () => resumeAgentSync('run-claim', approvals, asOwner('resource-claim')),
893
892
  /already resolved by another caller/
894
893
  )
895
894
  assert.equal(executions, 1, 'the loser did not run it a second time')
@@ -927,14 +926,14 @@ describe('resumeAIAgentSync', () => {
927
926
  error: () => {},
928
927
  debug: () => {},
929
928
  },
930
- aiAgentRunner: {
931
- run: async (): Promise<AIAgentStepResult> =>
929
+ agentRunner: {
930
+ run: async (): Promise<AgentStepResult> =>
932
931
  makeStepResult({
933
932
  text: 'Declined',
934
933
  usage: { inputTokens: 1, outputTokens: 1 },
935
934
  }),
936
935
  },
937
- aiRunState: {
936
+ agentRunState: {
938
937
  getRun: async () => baseRun,
939
938
  createRun: async () => 'unused',
940
939
  updateRun: async () => {},
@@ -943,7 +942,7 @@ describe('resumeAIAgentSync', () => {
943
942
  return true
944
943
  },
945
944
  },
946
- aiStorage: {
945
+ agentStorage: {
947
946
  saveMessages: async (_threadId: string, messages: any[]) => {
948
947
  savedMessages.push(messages)
949
948
  },
@@ -953,7 +952,7 @@ describe('resumeAIAgentSync', () => {
953
952
 
954
953
  pikkuState(null, 'package', 'singletonServices', mockServices)
955
954
 
956
- const denied = await resumeAIAgentSync(
955
+ const denied = await resumeAgentSync(
957
956
  'run-deny',
958
957
  [{ toolCallId: 'tc-2', approved: false }],
959
958
  asOwner('resource-deny')
@@ -968,7 +967,7 @@ describe('resumeAIAgentSync', () => {
968
967
 
969
968
  await assert.rejects(
970
969
  () =>
971
- resumeAIAgentSync(
970
+ resumeAgentSync(
972
971
  'run-deny',
973
972
  [{ toolCallId: 'tc-2', approved: false }],
974
973
  asOwner('resource-deny'),
@@ -1030,19 +1029,19 @@ describe('resumeAIAgentSync', () => {
1030
1029
  error: () => {},
1031
1030
  debug: () => {},
1032
1031
  },
1033
- aiAgentRunner: {
1034
- run: async (): Promise<AIAgentStepResult> =>
1032
+ agentRunner: {
1033
+ run: async (): Promise<AgentStepResult> =>
1035
1034
  makeStepResult({
1036
1035
  text: 'Recovered',
1037
1036
  usage: { inputTokens: 1, outputTokens: 1 },
1038
1037
  }),
1039
1038
  },
1040
- aiRunState: {
1039
+ agentRunState: {
1041
1040
  getRun: async () => run,
1042
1041
  resolveApproval: async () => true,
1043
1042
  updateRun: async () => {},
1044
1043
  },
1045
- aiStorage: {
1044
+ agentStorage: {
1046
1045
  saveMessages: async (_threadId: string, messages: any[]) => {
1047
1046
  savedMessages.push(messages)
1048
1047
  },
@@ -1050,7 +1049,7 @@ describe('resumeAIAgentSync', () => {
1050
1049
  },
1051
1050
  } as any)
1052
1051
 
1053
- const result = await resumeAIAgentSync(
1052
+ const result = await resumeAgentSync(
1054
1053
  'run-error',
1055
1054
  [{ toolCallId: 'tc-error', approved: true }],
1056
1055
  asOwner('resource-error')
@@ -1069,7 +1068,7 @@ describe('getCredential API key override', () => {
1069
1068
  const overrideRunCalls: string[] = []
1070
1069
 
1071
1070
  const overrideRunner = {
1072
- run: async (): Promise<AIAgentStepResult> => {
1071
+ run: async (): Promise<AgentStepResult> => {
1073
1072
  overrideRunCalls.push('override')
1074
1073
  return makeStepResult({ text: 'from-override', finishReason: 'stop' })
1075
1074
  },
@@ -1082,14 +1081,14 @@ describe('getCredential API key override', () => {
1082
1081
  error: () => {},
1083
1082
  debug: () => {},
1084
1083
  },
1085
- aiAgentRunner: {
1086
- run: async (): Promise<AIAgentStepResult> => {
1084
+ agentRunner: {
1085
+ run: async (): Promise<AgentStepResult> => {
1087
1086
  originalRunCalls.push('original')
1088
1087
  return makeStepResult({ text: 'from-original', finishReason: 'stop' })
1089
1088
  },
1090
1089
  withApiKey: (_key: string) => overrideRunner,
1091
1090
  },
1092
- aiRunState: {
1091
+ agentRunState: {
1093
1092
  createRun: async () => 'run-key-override',
1094
1093
  updateRun: async () => {},
1095
1094
  },
@@ -1097,7 +1096,7 @@ describe('getCredential API key override', () => {
1097
1096
 
1098
1097
  pikkuState(null, 'package', 'singletonServices', mockServices)
1099
1098
 
1100
- const result = await runAIAgent(
1099
+ const result = await runAgent(
1101
1100
  'api-key-agent',
1102
1101
  { message: 'hi', threadId: 't-key', resourceId: 'r-key' },
1103
1102
  { getCredential: async () => ({ apiKey: 'my-secret-key' }) }
@@ -1120,8 +1119,8 @@ describe('getCredential API key override', () => {
1120
1119
  error: () => {},
1121
1120
  debug: () => {},
1122
1121
  },
1123
- aiAgentRunner: {
1124
- run: async (): Promise<AIAgentStepResult> => {
1122
+ agentRunner: {
1123
+ run: async (): Promise<AgentStepResult> => {
1125
1124
  originalRunCalls.push('original')
1126
1125
  return makeStepResult({ text: 'from-original', finishReason: 'stop' })
1127
1126
  },
@@ -1133,7 +1132,7 @@ describe('getCredential API key override', () => {
1133
1132
  }),
1134
1133
  }),
1135
1134
  },
1136
- aiRunState: {
1135
+ agentRunState: {
1137
1136
  createRun: async () => 'run-no-cred',
1138
1137
  updateRun: async () => {},
1139
1138
  },
@@ -1141,7 +1140,7 @@ describe('getCredential API key override', () => {
1141
1140
 
1142
1141
  pikkuState(null, 'package', 'singletonServices', mockServices)
1143
1142
 
1144
- const result = await runAIAgent(
1143
+ const result = await runAgent(
1145
1144
  'no-cred-agent',
1146
1145
  { message: 'hi', threadId: 't-no-cred', resourceId: 'r-no-cred' },
1147
1146
  { getCredential: async () => null }
@@ -1163,13 +1162,13 @@ describe('getCredential API key override', () => {
1163
1162
  error: () => {},
1164
1163
  debug: () => {},
1165
1164
  },
1166
- aiAgentRunner: {
1167
- run: async (): Promise<AIAgentStepResult> => {
1165
+ agentRunner: {
1166
+ run: async (): Promise<AgentStepResult> => {
1168
1167
  originalRunCalls.push('original')
1169
1168
  return makeStepResult({ text: 'from-original', finishReason: 'stop' })
1170
1169
  },
1171
1170
  },
1172
- aiRunState: {
1171
+ agentRunState: {
1173
1172
  createRun: async () => 'run-no-withkey',
1174
1173
  updateRun: async () => {},
1175
1174
  },
@@ -1177,7 +1176,7 @@ describe('getCredential API key override', () => {
1177
1176
 
1178
1177
  pikkuState(null, 'package', 'singletonServices', mockServices)
1179
1178
 
1180
- await runAIAgent(
1179
+ await runAgent(
1181
1180
  'no-withkey-agent',
1182
1181
  { message: 'hi', threadId: 't-no-withkey', resourceId: 'r-no-withkey' },
1183
1182
  { getCredential: async () => ({ apiKey: 'ignored-key' }) }
@@ -1207,11 +1206,11 @@ describe('C2 resume run ownership', () => {
1207
1206
  test('rejects resuming a run owned by another user', async () => {
1208
1207
  addTestAgent('resume-owner-agent')
1209
1208
  pikkuState(null, 'package', 'singletonServices', {
1210
- aiRunState: { getRun: async () => suspendedRun('user-a') },
1209
+ agentRunState: { getRun: async () => suspendedRun('user-a') },
1211
1210
  } as any)
1212
1211
 
1213
1212
  await assert.rejects(
1214
- () => resumeAIAgentSync('run-owned', [], withSession('user-b')),
1213
+ () => resumeAgentSync('run-owned', [], withSession('user-b')),
1215
1214
  (e: unknown) => e instanceof ForbiddenError
1216
1215
  )
1217
1216
  })
@@ -1219,11 +1218,11 @@ describe('C2 resume run ownership', () => {
1219
1218
  test('allows the owning user past the ownership gate', async () => {
1220
1219
  addTestAgent('resume-owner-agent')
1221
1220
  pikkuState(null, 'package', 'singletonServices', {
1222
- aiRunState: { getRun: async () => suspendedRun('user-a') },
1221
+ agentRunState: { getRun: async () => suspendedRun('user-a') },
1223
1222
  } as any)
1224
1223
 
1225
1224
  await assert.rejects(
1226
- () => resumeAIAgentSync('run-owned', [], withSession('user-a')),
1225
+ () => resumeAgentSync('run-owned', [], withSession('user-a')),
1227
1226
  (e: unknown) => e instanceof AIProviderNotConfiguredError
1228
1227
  )
1229
1228
  })