@pikku/core 0.12.83 → 0.12.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (661) hide show
  1. package/CHANGELOG.md +492 -0
  2. package/README.md +1 -1
  3. package/dist/bootstrap-compat/root.d.ts +20 -0
  4. package/dist/classification/column-form.d.ts +32 -0
  5. package/dist/classification/column-form.js +42 -0
  6. package/dist/classification/data-classification.d.ts +64 -0
  7. package/dist/classification/index.d.ts +13 -0
  8. package/dist/classification/index.js +2 -0
  9. package/dist/classification/secret-value.d.ts +56 -0
  10. package/dist/classification/secret-value.js +46 -0
  11. package/dist/crypto-utils.d.ts +1 -1
  12. package/dist/ecosystem/agent-scorer.d.ts +12 -0
  13. package/dist/ecosystem/agent-scorer.js +5 -0
  14. package/dist/ecosystem/agent.d.ts +21 -0
  15. package/dist/ecosystem/agent.js +6 -0
  16. package/dist/ecosystem/channel/local.d.ts +3 -0
  17. package/dist/ecosystem/channel/local.js +3 -0
  18. package/dist/ecosystem/channel/serverless.d.ts +9 -0
  19. package/dist/ecosystem/channel/serverless.js +1 -0
  20. package/dist/ecosystem/channel.d.ts +15 -0
  21. package/dist/ecosystem/channel.js +5 -0
  22. package/dist/ecosystem/cli/channel.d.ts +16 -0
  23. package/dist/ecosystem/cli/channel.js +2 -0
  24. package/dist/ecosystem/cli.d.ts +9 -0
  25. package/dist/ecosystem/cli.js +2 -0
  26. package/dist/ecosystem/credential.d.ts +10 -0
  27. package/dist/ecosystem/credential.js +1 -0
  28. package/dist/ecosystem/crypto-utils.d.ts +8 -0
  29. package/dist/ecosystem/crypto-utils.js +1 -0
  30. package/dist/ecosystem/dev.d.ts +9 -0
  31. package/dist/ecosystem/dev.js +2 -0
  32. package/dist/ecosystem/errors.d.ts +8 -0
  33. package/dist/ecosystem/errors.js +2 -0
  34. package/dist/ecosystem/function.d.ts +13 -0
  35. package/dist/ecosystem/function.js +2 -0
  36. package/dist/ecosystem/gateway.d.ts +1 -0
  37. package/dist/ecosystem/hmac.d.ts +1 -0
  38. package/dist/ecosystem/hmac.js +1 -0
  39. package/dist/ecosystem/http.d.ts +13 -0
  40. package/dist/ecosystem/http.js +5 -0
  41. package/dist/ecosystem/mcp.d.ts +3 -0
  42. package/dist/ecosystem/mcp.js +2 -0
  43. package/dist/ecosystem/middleware.d.ts +18 -0
  44. package/dist/ecosystem/middleware.js +7 -0
  45. package/dist/ecosystem/node-host-resolver.d.ts +1 -0
  46. package/dist/ecosystem/node-host-resolver.js +1 -0
  47. package/dist/ecosystem/node.d.ts +1 -0
  48. package/dist/ecosystem/oauth2.d.ts +1 -0
  49. package/dist/ecosystem/oauth2.js +1 -0
  50. package/dist/ecosystem/persona.d.ts +17 -0
  51. package/dist/ecosystem/persona.js +5 -0
  52. package/dist/ecosystem/queue.d.ts +13 -0
  53. package/dist/ecosystem/queue.js +4 -0
  54. package/dist/ecosystem/remote.d.ts +8 -0
  55. package/dist/ecosystem/remote.js +1 -0
  56. package/dist/ecosystem/role.d.ts +4 -0
  57. package/dist/ecosystem/role.js +2 -0
  58. package/dist/ecosystem/rpc.d.ts +6 -0
  59. package/dist/ecosystem/rpc.js +3 -0
  60. package/dist/ecosystem/safe-fetch.d.ts +7 -0
  61. package/dist/ecosystem/safe-fetch.js +1 -0
  62. package/dist/ecosystem/scenario.d.ts +21 -0
  63. package/dist/ecosystem/scenario.js +8 -0
  64. package/dist/ecosystem/scheduler.d.ts +3 -0
  65. package/dist/ecosystem/scheduler.js +2 -0
  66. package/dist/ecosystem/schema.d.ts +2 -0
  67. package/dist/ecosystem/schema.js +1 -0
  68. package/dist/ecosystem/scope.d.ts +5 -0
  69. package/dist/ecosystem/scope.js +3 -0
  70. package/dist/ecosystem/secret.d.ts +11 -0
  71. package/dist/ecosystem/secret.js +2 -0
  72. package/dist/ecosystem/services/istanbul-coverage.d.ts +1 -0
  73. package/dist/ecosystem/services/istanbul-coverage.js +1 -0
  74. package/dist/ecosystem/services/local-content-request-handler.d.ts +9 -0
  75. package/dist/ecosystem/services/local-content-request-handler.js +1 -0
  76. package/dist/ecosystem/services/local-content.d.ts +2 -0
  77. package/dist/ecosystem/services/local-content.js +1 -0
  78. package/dist/ecosystem/services/local-meta.d.ts +1 -0
  79. package/dist/ecosystem/services/local-meta.js +1 -0
  80. package/dist/ecosystem/services/v8-coverage.d.ts +1 -0
  81. package/dist/ecosystem/services/v8-coverage.js +1 -0
  82. package/dist/ecosystem/services.d.ts +36 -0
  83. package/dist/ecosystem/services.js +12 -0
  84. package/dist/ecosystem/testing.d.ts +7 -0
  85. package/dist/ecosystem/testing.js +1 -0
  86. package/dist/ecosystem/trigger.d.ts +2 -0
  87. package/dist/ecosystem/trigger.js +1 -0
  88. package/dist/ecosystem/types.d.ts +12 -0
  89. package/dist/ecosystem/types.js +6 -0
  90. package/dist/ecosystem/variable.d.ts +9 -0
  91. package/dist/ecosystem/variable.js +1 -0
  92. package/dist/ecosystem/virtual-user.d.ts +24 -0
  93. package/dist/ecosystem/virtual-user.js +8 -0
  94. package/dist/ecosystem/workflow.d.ts +20 -0
  95. package/dist/ecosystem/workflow.js +6 -0
  96. package/dist/errors/index.d.ts +8 -0
  97. package/dist/errors/index.js +1 -0
  98. package/dist/errors/serialized-error.d.ts +7 -0
  99. package/dist/errors/serialized-error.js +1 -0
  100. package/dist/function/function-meta.types.d.ts +139 -0
  101. package/dist/function/function-meta.types.js +1 -0
  102. package/dist/function/function-runner.d.ts +3 -2
  103. package/dist/function/function-runner.js +31 -11
  104. package/dist/function/functions.types.d.ts +10 -2
  105. package/dist/function/index.d.ts +8 -2
  106. package/dist/function/index.js +4 -1
  107. package/dist/function/pikku-request.d.ts +8 -0
  108. package/dist/function/pikku-request.js +15 -0
  109. package/dist/index.d.ts +8 -8
  110. package/dist/index.js +3 -3
  111. package/dist/middleware/auth-apikey.d.ts +2 -10
  112. package/dist/middleware/auth-apikey.js +1 -1
  113. package/dist/middleware/auth-bearer.d.ts +2 -10
  114. package/dist/middleware/auth-bearer.js +1 -1
  115. package/dist/middleware/auth-cookie.d.ts +2 -10
  116. package/dist/middleware/auth-cookie.js +1 -1
  117. package/dist/middleware/cors.d.ts +5 -11
  118. package/dist/middleware/cors.js +13 -6
  119. package/dist/middleware/index.d.ts +3 -0
  120. package/dist/middleware/index.js +1 -0
  121. package/dist/middleware/middleware-factories.d.ts +9 -0
  122. package/dist/middleware/middleware-factories.js +19 -0
  123. package/dist/middleware/middleware.types.d.ts +27 -0
  124. package/dist/middleware/middleware.types.js +1 -0
  125. package/dist/middleware/remote-auth.d.ts +1 -1
  126. package/dist/middleware/remote-auth.js +1 -1
  127. package/dist/middleware/telemetry.d.ts +4 -20
  128. package/dist/middleware/telemetry.js +1 -1
  129. package/dist/middleware-runner.d.ts +2 -1
  130. package/dist/pikku-state.d.ts +2 -1
  131. package/dist/services/{ai-run-state-service.d.ts → agent-run-state-service.d.ts} +5 -5
  132. package/dist/services/agent-run-state-service.js +1 -0
  133. package/dist/services/{ai-agent-runner-service.d.ts → agent-runner-service.d.ts} +12 -12
  134. package/dist/services/agent-runner-service.js +1 -0
  135. package/dist/services/{ai-storage-service.d.ts → agent-storage-service.d.ts} +7 -7
  136. package/dist/services/agent-storage-service.js +1 -0
  137. package/dist/services/audit-service.d.ts +1 -1
  138. package/dist/services/credential-wire-service.js +1 -1
  139. package/dist/services/email-service.d.ts +1 -1
  140. package/dist/services/file-scenario-run-store.d.ts +58 -0
  141. package/dist/services/file-scenario-run-store.js +214 -0
  142. package/dist/services/http-personas.d.ts +1 -1
  143. package/dist/services/http-personas.js +3 -3
  144. package/dist/services/{in-memory-ai-run-state-service.d.ts → in-memory-agent-run-state-service.d.ts} +5 -5
  145. package/dist/services/{in-memory-ai-run-state-service.js → in-memory-agent-run-state-service.js} +1 -1
  146. package/dist/services/in-memory-workflow-service.d.ts +1 -1
  147. package/dist/services/index.d.ts +9 -5
  148. package/dist/services/index.js +4 -1
  149. package/dist/services/local-secrets.d.ts +1 -1
  150. package/dist/services/local-secrets.js +1 -1
  151. package/dist/services/logger.d.ts +7 -7
  152. package/dist/services/meta-service.d.ts +5 -4
  153. package/dist/services/scoped-secret-service.d.ts +1 -1
  154. package/dist/services/secret-service.d.ts +1 -1
  155. package/dist/services/typed-secret-service.d.ts +16 -2
  156. package/dist/services/typed-secret-service.js +5 -0
  157. package/dist/services/webhook-service.d.ts +1 -1
  158. package/dist/services/workflow-service.d.ts +2 -1
  159. package/dist/testing/index.d.ts +1 -0
  160. package/dist/testing/index.js +1 -0
  161. package/dist/testing/service-tests/agent-run-service-tests.d.ts +1 -1
  162. package/dist/testing/service-tests/agent-run-service-tests.js +3 -3
  163. package/dist/testing/service-tests/agent-storage-service-tests.d.ts +3 -0
  164. package/dist/testing/service-tests/{ai-storage-service-tests.js → agent-storage-service-tests.js} +4 -4
  165. package/dist/testing/service-tests.d.ts +4 -4
  166. package/dist/testing/service-tests.js +4 -4
  167. package/dist/types/core.types.d.ts +37 -187
  168. package/dist/types/core.types.js +1 -19
  169. package/dist/types/index.d.ts +2 -0
  170. package/dist/types/index.js +1 -0
  171. package/dist/types/state.types.d.ts +8 -6
  172. package/dist/utils.d.ts +13 -0
  173. package/dist/utils.js +2 -0
  174. package/dist/wirings/actor-flow/run-conversation.d.ts +2 -2
  175. package/dist/wirings/addon/addon-runner.d.ts +17 -0
  176. package/dist/wirings/addon/addon-runner.js +150 -0
  177. package/dist/wirings/addon/index.d.ts +6 -0
  178. package/dist/wirings/addon/index.js +3 -0
  179. package/dist/wirings/addon/remote-addon-auth.d.ts +16 -0
  180. package/dist/wirings/addon/remote-addon-auth.js +39 -0
  181. package/dist/wirings/addon/wire-addon.d.ts +80 -0
  182. package/dist/wirings/addon/wire-addon.js +120 -0
  183. package/dist/wirings/addon/wire-remote-addon.d.ts +22 -0
  184. package/dist/wirings/addon/wire-remote-addon.js +11 -0
  185. package/dist/wirings/{ai-agent/ai-agent-agui.d.ts → agent/agent-agui.d.ts} +2 -2
  186. package/dist/wirings/{ai-agent/ai-agent-agui.js → agent/agent-agui.js} +1 -1
  187. package/dist/wirings/{ai-agent/ai-agent-finalize.d.ts → agent/agent-finalize.d.ts} +10 -10
  188. package/dist/wirings/{ai-agent/ai-agent-finalize.js → agent/agent-finalize.js} +7 -7
  189. package/dist/wirings/{ai-agent/ai-agent-helpers.d.ts → agent/agent-helpers.d.ts} +1 -1
  190. package/dist/wirings/{ai-agent/ai-agent-interrupt.d.ts → agent/agent-interrupt.d.ts} +4 -4
  191. package/dist/wirings/{ai-agent/ai-agent-interrupt.js → agent/agent-interrupt.js} +2 -2
  192. package/dist/wirings/{ai-agent/ai-agent-memory.d.ts → agent/agent-memory.d.ts} +14 -14
  193. package/dist/wirings/{ai-agent/ai-agent-memory.js → agent/agent-memory.js} +1 -1
  194. package/dist/wirings/{ai-agent/ai-agent-model-config.js → agent/agent-model-config.js} +1 -1
  195. package/dist/wirings/{ai-agent/ai-agent-prepare.d.ts → agent/agent-prepare.d.ts} +24 -24
  196. package/dist/wirings/{ai-agent/ai-agent-prepare.js → agent/agent-prepare.js} +17 -17
  197. package/dist/wirings/agent/agent-registry.d.ts +16 -0
  198. package/dist/wirings/{ai-agent/ai-agent-registry.js → agent/agent-registry.js} +9 -9
  199. package/dist/wirings/{ai-agent → agent}/agent-rpc.js +8 -8
  200. package/dist/wirings/agent/agent-runner.d.ts +7 -0
  201. package/dist/wirings/{ai-agent/ai-agent-runner.js → agent/agent-runner.js} +49 -50
  202. package/dist/wirings/{ai-agent/ai-agent-stream.d.ts → agent/agent-stream.d.ts} +15 -15
  203. package/dist/wirings/{ai-agent/ai-agent-stream.js → agent/agent-stream.js} +78 -78
  204. package/dist/wirings/{ai-agent/ai-agent-turn.d.ts → agent/agent-turn.d.ts} +5 -5
  205. package/dist/wirings/{ai-agent/ai-agent-turn.js → agent/agent-turn.js} +4 -4
  206. package/dist/wirings/agent/agent-utils.d.ts +14 -0
  207. package/dist/wirings/agent/agent-utils.js +17 -0
  208. package/dist/wirings/{ai-agent/ai-agent.types.d.ts → agent/agent.types.d.ts} +47 -46
  209. package/dist/wirings/agent/agent.types.js +1 -0
  210. package/dist/wirings/agent/index.d.ts +12 -0
  211. package/dist/wirings/agent/index.js +10 -0
  212. package/dist/wirings/{ai-agent → agent}/voice-input.d.ts +1 -1
  213. package/dist/wirings/{ai-agent → agent}/voice-input.js +5 -5
  214. package/dist/wirings/{ai-agent → agent}/voice-output.d.ts +2 -3
  215. package/dist/wirings/{ai-agent → agent}/voice-output.js +8 -8
  216. package/dist/wirings/{ai-scorer/ai-scorer-grade.d.ts → agent-scorer/agent-scorer-grade.d.ts} +3 -3
  217. package/dist/wirings/{ai-scorer/ai-scorer-grade.js → agent-scorer/agent-scorer-grade.js} +6 -6
  218. package/dist/wirings/agent-scorer/agent-scorer-judge.d.ts +30 -0
  219. package/dist/wirings/{ai-scorer/ai-scorer-judge.js → agent-scorer/agent-scorer-judge.js} +57 -5
  220. package/dist/wirings/{ai-scorer/ai-scorer-live.d.ts → agent-scorer/agent-scorer-live.d.ts} +1 -1
  221. package/dist/wirings/{ai-scorer/ai-scorer-live.js → agent-scorer/agent-scorer-live.js} +3 -3
  222. package/dist/wirings/{ai-scorer/ai-scorer-registry.d.ts → agent-scorer/agent-scorer-registry.d.ts} +6 -6
  223. package/dist/wirings/{ai-scorer/ai-scorer-registry.js → agent-scorer/agent-scorer-registry.js} +4 -4
  224. package/dist/wirings/{ai-scorer/ai-scorer-snapshots.d.ts → agent-scorer/agent-scorer-snapshots.d.ts} +1 -1
  225. package/dist/wirings/{ai-scorer/ai-scorer-worker.d.ts → agent-scorer/agent-scorer-worker.d.ts} +3 -3
  226. package/dist/wirings/{ai-scorer/ai-scorer-worker.js → agent-scorer/agent-scorer-worker.js} +9 -7
  227. package/dist/wirings/{ai-scorer/ai-scorer.d.ts → agent-scorer/agent-scorer.d.ts} +12 -6
  228. package/dist/wirings/{ai-scorer/ai-scorer.js → agent-scorer/agent-scorer.js} +4 -3
  229. package/dist/wirings/{ai-scorer/ai-scorer.types.d.ts → agent-scorer/agent-scorer.types.d.ts} +24 -4
  230. package/dist/wirings/agent-scorer/agent-scorer.types.js +4 -0
  231. package/dist/wirings/agent-scorer/index.d.ts +6 -0
  232. package/dist/wirings/agent-scorer/index.js +5 -0
  233. package/dist/wirings/channel/channel-common.d.ts +2 -1
  234. package/dist/wirings/channel/channel-middleware-runner.d.ts +2 -1
  235. package/dist/wirings/channel/channel-rpc.types.d.ts +2 -2
  236. package/dist/wirings/channel/channel.types.d.ts +1 -1
  237. package/dist/wirings/channel/serverless/index.d.ts +1 -0
  238. package/dist/wirings/cli/channel/index.d.ts +1 -1
  239. package/dist/wirings/cli/cli-runner.d.ts +2 -1
  240. package/dist/wirings/cli/cli-runner.js +4 -1
  241. package/dist/wirings/cli/cli.types.d.ts +21 -2
  242. package/dist/wirings/cli/command-parser.js +157 -23
  243. package/dist/wirings/gateway/gateway.types.d.ts +2 -1
  244. package/dist/wirings/http/http-runner.d.ts +1 -1
  245. package/dist/wirings/http/http-runner.js +1 -1
  246. package/dist/wirings/http/http.types.d.ts +2 -2
  247. package/dist/wirings/http/index.d.ts +1 -0
  248. package/dist/wirings/http/index.js +1 -0
  249. package/dist/wirings/http/pikku-fetch-http-request.js +1 -1
  250. package/dist/wirings/http/pikku-fetch-http-response.js +2 -2
  251. package/dist/wirings/mcp/mcp.types.d.ts +1 -1
  252. package/dist/wirings/persona/index.d.ts +1 -1
  253. package/dist/wirings/persona/index.js +1 -1
  254. package/dist/wirings/persona/persona.types.d.ts +14 -0
  255. package/dist/wirings/queue/queue.types.d.ts +1 -1
  256. package/dist/wirings/queue/signed-queue-service.d.ts +1 -1
  257. package/dist/wirings/rpc/index.d.ts +0 -6
  258. package/dist/wirings/rpc/index.js +0 -3
  259. package/dist/wirings/rpc/remote-addon-auth.d.ts +1 -1
  260. package/dist/wirings/rpc/remote-addon-auth.js +1 -1
  261. package/dist/wirings/rpc/rpc-runner.d.ts +1 -1
  262. package/dist/wirings/rpc/rpc-runner.js +4 -4
  263. package/dist/wirings/rpc/rpc-types.d.ts +1 -1
  264. package/dist/wirings/rpc/wire-addon.d.ts +1 -1
  265. package/dist/wirings/scheduler/scheduler.types.d.ts +2 -1
  266. package/dist/wirings/scope/index.d.ts +1 -0
  267. package/dist/wirings/scope/index.js +1 -0
  268. package/dist/wirings/secret/secret.types.d.ts +10 -0
  269. package/dist/wirings/secret/validate-secret-definitions.js +2 -0
  270. package/dist/wirings/variable/validate-variable-definitions.js +2 -0
  271. package/dist/wirings/variable/variable.types.d.ts +9 -0
  272. package/dist/wirings/virtual-user/index.d.ts +1 -1
  273. package/dist/wirings/virtual-user/index.js +1 -1
  274. package/dist/wirings/virtual-user/prepare-virtual-user-run.d.ts +1 -1
  275. package/dist/wirings/virtual-user/prepare-virtual-user-run.js +1 -1
  276. package/dist/wirings/virtual-user/virtual-user-agents.d.ts +1 -1
  277. package/dist/wirings/virtual-user/virtual-user-derive.d.ts +1 -1
  278. package/dist/wirings/workflow/graph/graph-node.d.ts +9 -2
  279. package/dist/wirings/workflow/graph/graph-node.js +2 -0
  280. package/dist/wirings/workflow/graph/graph-runner.d.ts +1 -0
  281. package/dist/wirings/workflow/graph/graph-runner.js +283 -31
  282. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +16 -1
  283. package/dist/wirings/workflow/index.d.ts +2 -0
  284. package/dist/wirings/workflow/index.js +1 -0
  285. package/dist/wirings/workflow/pikku-scenario-service.d.ts +14 -4
  286. package/dist/wirings/workflow/pikku-scenario-service.js +44 -16
  287. package/dist/wirings/workflow/pikku-workflow-service.d.ts +2 -1
  288. package/dist/wirings/workflow/pikku-workflow-service.js +3 -4
  289. package/dist/wirings/workflow/run-timeline.d.ts +2 -3
  290. package/dist/wirings/workflow/scenario-run.types.d.ts +171 -0
  291. package/dist/wirings/workflow/scenario-run.types.js +1 -0
  292. package/dist/wirings/workflow/scenario-step-guards.d.ts +1 -2
  293. package/dist/wirings/workflow/scenario-step-guards.js +0 -8
  294. package/dist/wirings/workflow/scenario-step.types.d.ts +27 -12
  295. package/dist/wirings/workflow/workflow-approval.js +2 -1
  296. package/dist/wirings/workflow/workflow-run-engine.types.d.ts +2 -1
  297. package/dist/wirings/workflow/workflow.types.d.ts +2 -1
  298. package/knowledge/decisions/index.md +2 -0
  299. package/knowledge/decisions/internals/{a-non-streaming-agent-run-registers-with-airunstate-too.md → a-non-streaming-agent-run-registers-with-agentrunstate-too.md} +6 -6
  300. package/knowledge/decisions/internals/a-resumed-agent-turn-is-as-interruptible-as-the-first.md +1 -1
  301. package/knowledge/decisions/internals/a-scenario-step-template-is-offered-unfilled.md +1 -1
  302. package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +1 -1
  303. package/knowledge/decisions/internals/a-virtual-user-run-is-not-a-workflow-and-not-a-queued-job.md +2 -2
  304. package/knowledge/decisions/internals/a-wall-clock-threshold-is-a-load-test-in-disguise.md +6 -6
  305. package/knowledge/decisions/internals/a-workflow-wire-is-built-from-the-run-not-from-the-rpc-service.md +1 -1
  306. package/knowledge/decisions/internals/actor-flow-drives-the-target-through-a-transport-seam.md +1 -1
  307. package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +1 -1
  308. package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +1 -1
  309. package/knowledge/decisions/internals/{ai-agent-agui-bridge-obeys-the-client-ordering-contract.md → agent-agui-bridge-obeys-the-client-ordering-contract.md} +5 -5
  310. package/knowledge/decisions/internals/{ai-agent-audio-chunks-carry-the-format-the-provider-returned.md → agent-audio-chunks-carry-the-format-the-provider-returned.md} +2 -2
  311. package/knowledge/decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md +1 -1
  312. package/knowledge/decisions/internals/{ai-agent-credential-suspensions-hide-the-tool-result.md → agent-credential-suspensions-hide-the-tool-result.md} +2 -2
  313. package/knowledge/decisions/internals/{ai-agent-delegate-and-supervise-hide-different-text.md → agent-delegate-and-supervise-hide-different-text.md} +4 -4
  314. package/knowledge/decisions/internals/{ai-agent-llm-tool-arguments-have-nulls-stripped.md → agent-llm-tool-arguments-have-nulls-stripped.md} +3 -3
  315. package/knowledge/decisions/internals/{ai-agent-model-config-stays-a-single-resolution-seam.md → agent-model-config-stays-a-single-resolution-seam.md} +3 -3
  316. package/knowledge/decisions/internals/{ai-agent-onerror-hooks-cannot-change-the-failure.md → agent-onerror-hooks-cannot-change-the-failure.md} +6 -6
  317. package/knowledge/decisions/internals/{ai-agent-runner-methods-must-keep-their-receiver.md → agent-runner-methods-must-keep-their-receiver.md} +4 -4
  318. package/knowledge/decisions/internals/agent-speech-travels-as-a-custom-agui-event.md +1 -1
  319. package/knowledge/decisions/internals/{ai-agent-stream-persistence-is-best-effort.md → agent-stream-persistence-is-best-effort.md} +4 -4
  320. package/knowledge/decisions/internals/{ai-agent-sub-agents-inherit-the-parent-context-block.md → agent-sub-agents-inherit-the-parent-context-block.md} +3 -3
  321. package/knowledge/decisions/internals/{ai-agent-tool-execute-failures-are-logged-unconditionally.md → agent-tool-execute-failures-are-logged-unconditionally.md} +3 -3
  322. package/knowledge/decisions/internals/{ai-agent-voice-input-transcribes-audio-parts-in-place.md → agent-voice-input-transcribes-audio-parts-in-place.md} +2 -2
  323. package/knowledge/decisions/internals/{ai-agent-working-memory-is-persisted-only-when-valid.md → agent-working-memory-is-persisted-only-when-valid.md} +2 -2
  324. package/knowledge/decisions/internals/an-addon-scope-root-loses-to-a-root-the-host-already-declares.md +1 -1
  325. package/knowledge/decisions/internals/an-agent-interrupt-is-not-a-failure.md +2 -2
  326. package/knowledge/decisions/internals/an-agent-run-owned-by-another-instance-says-so.md +3 -3
  327. package/knowledge/decisions/internals/an-agent-stream-send-must-return-the-inner-sends-promise.md +2 -2
  328. package/knowledge/decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md +1 -1
  329. package/knowledge/decisions/internals/an-empty-transcript-is-not-recorded.md +1 -1
  330. package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +1 -1
  331. package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +1 -1
  332. package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +1 -1
  333. package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +1 -1
  334. package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +1 -1
  335. package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +1 -1
  336. package/knowledge/decisions/internals/core-column-form-is-an-axis-of-its-own.md +4 -4
  337. package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +1 -1
  338. package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +3 -3
  339. package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +2 -2
  340. package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +2 -2
  341. package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +1 -1
  342. package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +1 -1
  343. package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +3 -3
  344. package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +1 -1
  345. package/knowledge/decisions/internals/gateway-listener-middleware-runs-without-an-rpc-on-the-wire.md +4 -4
  346. package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +1 -1
  347. package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +1 -1
  348. package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +1 -1
  349. package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +1 -1
  350. package/knowledge/decisions/internals/index.md +4 -2
  351. package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +1 -1
  352. package/knowledge/decisions/internals/one-project-shape-check-two-validators.md +1 -1
  353. package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +1 -1
  354. package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +1 -1
  355. package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +1 -1
  356. package/knowledge/decisions/internals/scenario-given-and-when-are-sugar-but-then-is-not.md +2 -2
  357. package/knowledge/decisions/internals/scenarios-live-in-files-named-for-them.md +5 -5
  358. package/knowledge/decisions/internals/speech-synthesis-picks-a-voice-per-sentence-and-warns-once.md +1 -1
  359. package/knowledge/decisions/internals/the-actor-prompt-says-json-because-of-json-object-mode.md +1 -1
  360. package/knowledge/decisions/internals/the-agent-done-event-goes-through-the-middleware-and-is-awaited.md +1 -1
  361. package/knowledge/decisions/internals/the-api-report-pins-members-not-just-names.md +1 -1
  362. package/knowledge/decisions/internals/the-ecosystem-entry-point-carries-the-adapter-surface.md +43 -19
  363. package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +1 -1
  364. package/knowledge/decisions/internals/the-per-invocation-rpc-view-is-a-class.md +5 -5
  365. package/knowledge/decisions/internals/the-persona-runtime-is-exported-from-the-persona-entry-point.md +1 -1
  366. package/knowledge/decisions/internals/the-transcript-event-is-sent-ahead-of-the-run.md +2 -2
  367. package/knowledge/decisions/internals/the-worker-disposition-is-the-one-that-is-not-testing.md +1 -1
  368. package/knowledge/decisions/internals/thread-history-records-the-transcript-not-the-audio.md +2 -2
  369. package/knowledge/decisions/internals/validate-runs-checks-by-precondition.md +3 -3
  370. package/knowledge/decisions/internals/virtual-user-step-order-comes-from-insertion-order.md +1 -1
  371. package/knowledge/decisions/internals/voice-output-speaks-unless-voice-input-explicitly-says-otherwise.md +1 -1
  372. package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +1 -1
  373. package/knowledge/decisions/internals/wiring-registries-erase-the-generics-their-wire-functions-capture.md +1 -1
  374. package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +1 -1
  375. package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +1 -1
  376. package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +1 -1
  377. package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +1 -1
  378. package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +1 -1
  379. package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +1 -1
  380. package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +9 -5
  381. package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +1 -1
  382. package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +2 -2
  383. package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +1 -1
  384. package/knowledge/decisions/security/a-function-never-receives-the-secret-service.md +1 -1
  385. package/knowledge/decisions/security/a-step-runs-the-function-the-workflow-dispatched-it-with.md +1 -1
  386. package/knowledge/decisions/security/a-virtual-user-is-never-offered-a-step-that-would-forge-its-own-oracle.md +2 -3
  387. package/knowledge/decisions/security/actor-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +1 -1
  388. package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +1 -1
  389. package/knowledge/decisions/security/{ai-agent-approval-forwarding-requires-a-symbol-brand.md → agent-approval-forwarding-requires-a-symbol-brand.md} +3 -3
  390. package/knowledge/decisions/security/{ai-agent-credential-requests-are-symbol-branded.md → agent-credential-requests-are-symbol-branded.md} +4 -4
  391. package/knowledge/decisions/security/{ai-agent-gate-requires-a-session-only-when-auth-is-true.md → agent-gate-requires-a-session-only-when-auth-is-true.md} +4 -4
  392. package/knowledge/decisions/security/{ai-agent-ownership-failures-never-echo-the-resource.md → agent-ownership-failures-never-echo-the-resource.md} +2 -2
  393. package/knowledge/decisions/security/{ai-agent-resume-re-runs-the-authorization-gate.md → agent-resume-re-runs-the-authorization-gate.md} +4 -4
  394. package/knowledge/decisions/security/{ai-agent-sessionless-deployments-have-no-thread-ownership.md → agent-sessionless-deployments-have-no-thread-ownership.md} +5 -5
  395. package/knowledge/decisions/security/{ai-agent-thread-ownership-composes-the-session-principal.md → agent-thread-ownership-composes-the-session-principal.md} +2 -2
  396. package/knowledge/decisions/security/{ai-agent-tool-filtering-reads-the-live-function-config.md → agent-tool-filtering-reads-the-live-function-config.md} +2 -2
  397. package/knowledge/decisions/security/an-agent-approval-is-claimed-before-the-tool-runs.md +3 -3
  398. package/knowledge/decisions/security/an-approval-answer-outlives-the-run-it-answered.md +3 -3
  399. package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +3 -3
  400. package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +21 -13
  401. package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +1 -1
  402. package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +2 -2
  403. package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +1 -1
  404. package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +2 -2
  405. package/knowledge/decisions/security/index.md +3 -2
  406. package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +1 -1
  407. package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +3 -3
  408. package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +1 -1
  409. package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +2 -2
  410. package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +1 -1
  411. package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +2 -2
  412. package/knowledge/index.md +3 -1
  413. package/knowledge/questions/channel-middleware-accepts-bare-factories-that-nothing-resolves.md +1 -1
  414. package/knowledge/questions/index.md +2 -0
  415. package/package.json +16 -14
  416. package/run-tests.sh +0 -0
  417. package/scripts/generate-api-report.d.mts +1 -1
  418. package/scripts/generate-api-report.mjs +67 -60
  419. package/scripts/generate-api-report.mts +37 -47
  420. package/src/agent-naming.test.ts +68 -0
  421. package/src/api-report.test.ts +70 -1
  422. package/src/app-alias-surface.test.ts +179 -0
  423. package/src/app-leaf-surface.test.ts +217 -0
  424. package/src/bootstrap-compat/root.ts +20 -0
  425. package/src/{column-form.test.ts → classification/column-form.test.ts} +2 -2
  426. package/src/{data-classification.ts → classification/data-classification.ts} +1 -5
  427. package/src/classification/index.ts +38 -0
  428. package/src/{secret-value.test.ts → classification/secret-value.test.ts} +2 -2
  429. package/src/{secret-value.ts → classification/secret-value.ts} +1 -6
  430. package/src/crypto-utils.ts +1 -1
  431. package/src/dev/reload-meta.test.ts +1 -1
  432. package/src/errors/index.ts +9 -0
  433. package/src/errors/serialized-error.ts +9 -0
  434. package/src/factory-functions.test.ts +4 -2
  435. package/src/function/function-meta.types.ts +151 -0
  436. package/src/function/function-runner.test.ts +4 -2
  437. package/src/function/function-runner.ts +47 -14
  438. package/src/function/functions.types.ts +11 -7
  439. package/src/function/index.ts +24 -5
  440. package/src/function/list.types.ts +1 -3
  441. package/src/middleware/auth-apikey.ts +4 -2
  442. package/src/middleware/auth-bearer.test.ts +1 -1
  443. package/src/middleware/auth-bearer.ts +4 -2
  444. package/src/middleware/auth-cookie.ts +4 -1
  445. package/src/middleware/cors.test.ts +126 -5
  446. package/src/middleware/cors.ts +19 -8
  447. package/src/middleware/index.ts +16 -0
  448. package/src/middleware/middleware-factories.ts +62 -0
  449. package/src/middleware/middleware.types.ts +61 -0
  450. package/src/middleware/remote-auth.test.ts +1 -1
  451. package/src/middleware/remote-auth.ts +1 -1
  452. package/src/middleware/telemetry.ts +4 -2
  453. package/src/middleware-runner.test.ts +2 -3
  454. package/src/middleware-runner.ts +2 -2
  455. package/src/no-root-barrel.test.ts +114 -0
  456. package/src/permissions.ts +2 -4
  457. package/src/pikku-state.ts +6 -4
  458. package/src/public-surface.json +90 -170
  459. package/src/public-surface.json.README +20 -2
  460. package/src/public-surface.test.ts +31 -3
  461. package/src/remote.test.ts +1 -1
  462. package/src/removed-legacy-exports.test.ts +5 -1
  463. package/src/services/{ai-run-state-service.ts → agent-run-state-service.ts} +5 -5
  464. package/src/services/{ai-agent-runner-service.ts → agent-runner-service.ts} +18 -18
  465. package/src/services/{ai-storage-service.ts → agent-storage-service.ts} +7 -7
  466. package/src/services/audit-service.ts +1 -1
  467. package/src/services/credential-wire-service.ts +1 -1
  468. package/src/services/email-service.ts +2 -4
  469. package/src/services/file-scenario-run-store.test.ts +349 -0
  470. package/src/services/file-scenario-run-store.ts +282 -0
  471. package/src/services/http-personas-converse.test.ts +3 -3
  472. package/src/services/http-personas.ts +4 -4
  473. package/src/services/{in-memory-ai-run-state-service.ts → in-memory-agent-run-state-service.ts} +7 -7
  474. package/src/services/in-memory-workflow-service.ts +1 -1
  475. package/src/services/index.ts +22 -10
  476. package/src/services/local-content-request-handler.ts +1 -2
  477. package/src/services/local-secrets.ts +1 -1
  478. package/src/services/logger.ts +7 -7
  479. package/src/services/meta-service.ts +5 -5
  480. package/src/services/queue-webhook-service.test.ts +1 -1
  481. package/src/services/scoped-secret-service.ts +1 -1
  482. package/src/services/secret-service.ts +1 -1
  483. package/src/services/typed-secret-service.test.ts +52 -0
  484. package/src/services/typed-secret-service.ts +26 -2
  485. package/src/services/webhook-service.ts +1 -1
  486. package/src/services/workflow-service.ts +2 -1
  487. package/src/template-alias-surface.test.ts +240 -0
  488. package/src/testing/index.ts +1 -0
  489. package/src/testing/service-tests/agent-run-service-tests.ts +4 -4
  490. package/src/testing/service-tests/{ai-storage-service-tests.ts → agent-storage-service-tests.ts} +8 -8
  491. package/src/testing/service-tests.ts +10 -8
  492. package/src/types/core.types.ts +40 -292
  493. package/src/types/index.ts +2 -0
  494. package/src/types/state.types.ts +12 -14
  495. package/src/types/typed-credentials.test.ts +72 -0
  496. package/src/utils.ts +34 -0
  497. package/src/wirings/actor-flow/run-conversation.test.ts +2 -2
  498. package/src/wirings/actor-flow/run-conversation.ts +7 -9
  499. package/src/wirings/{rpc → addon}/addon-scopes.test.ts +1 -1
  500. package/src/wirings/addon/index.ts +12 -0
  501. package/src/wirings/{rpc → addon}/remote-addon-auth.ts +4 -1
  502. package/src/wirings/{rpc → addon}/wire-addon.ts +37 -2
  503. package/src/wirings/{ai-agent/ai-agent-agui.test.ts → agent/agent-agui.test.ts} +126 -105
  504. package/src/wirings/{ai-agent/ai-agent-agui.ts → agent/agent-agui.ts} +7 -7
  505. package/src/wirings/{ai-agent/ai-agent-authorization.test.ts → agent/agent-authorization.test.ts} +6 -6
  506. package/src/wirings/{ai-agent/ai-agent-finalize.test.ts → agent/agent-finalize.test.ts} +17 -16
  507. package/src/wirings/{ai-agent/ai-agent-finalize.ts → agent/agent-finalize.ts} +22 -22
  508. package/src/wirings/{ai-agent/ai-agent-helpers.test.ts → agent/agent-helpers.test.ts} +1 -1
  509. package/src/wirings/{ai-agent/ai-agent-helpers.ts → agent/agent-helpers.ts} +1 -1
  510. package/src/wirings/{ai-agent/ai-agent-interrupt.test.ts → agent/agent-interrupt.test.ts} +67 -77
  511. package/src/wirings/{ai-agent/ai-agent-interrupt.ts → agent/agent-interrupt.ts} +5 -5
  512. package/src/wirings/{ai-agent/ai-agent-memory.test.ts → agent/agent-memory.test.ts} +12 -12
  513. package/src/wirings/{ai-agent/ai-agent-memory.ts → agent/agent-memory.ts} +36 -36
  514. package/src/wirings/{ai-agent/ai-agent-model-config.test.ts → agent/agent-model-config.test.ts} +2 -5
  515. package/src/wirings/{ai-agent/ai-agent-model-config.ts → agent/agent-model-config.ts} +1 -1
  516. package/src/wirings/{ai-agent/ai-agent-prepare.test.ts → agent/agent-prepare.test.ts} +18 -18
  517. package/src/wirings/{ai-agent/ai-agent-prepare.ts → agent/agent-prepare.ts} +60 -56
  518. package/src/wirings/{ai-agent/ai-agent-registry.test.ts → agent/agent-registry.test.ts} +49 -43
  519. package/src/wirings/{ai-agent/ai-agent-registry.ts → agent/agent-registry.ts} +14 -14
  520. package/src/wirings/{ai-agent/ai-agent-resume-authorization.test.ts → agent/agent-resume-authorization.test.ts} +18 -18
  521. package/src/wirings/{ai-agent → agent}/agent-rpc.ts +16 -20
  522. package/src/wirings/{ai-agent/ai-agent-runner.test.ts → agent/agent-runner.test.ts} +105 -106
  523. package/src/wirings/{ai-agent/ai-agent-runner.ts → agent/agent-runner.ts} +91 -82
  524. package/src/wirings/{ai-agent/ai-agent-stream-output-hooks.test.ts → agent/agent-stream-output-hooks.test.ts} +25 -25
  525. package/src/wirings/{ai-agent/ai-agent-stream.test.ts → agent/agent-stream.test.ts} +147 -143
  526. package/src/wirings/{ai-agent/ai-agent-stream.ts → agent/agent-stream.ts} +148 -148
  527. package/src/wirings/{ai-agent/ai-agent-thread-ownership.test.ts → agent/agent-thread-ownership.test.ts} +24 -28
  528. package/src/wirings/{ai-agent/ai-agent-turn.test.ts → agent/agent-turn.test.ts} +3 -5
  529. package/src/wirings/{ai-agent/ai-agent-turn.ts → agent/agent-turn.ts} +7 -7
  530. package/src/wirings/agent/agent-utils.ts +20 -0
  531. package/src/wirings/{ai-agent/ai-agent.types.ts → agent/agent.types.ts} +54 -51
  532. package/src/wirings/agent/index.ts +57 -0
  533. package/src/wirings/{ai-agent → agent}/voice-input.test.ts +15 -15
  534. package/src/wirings/{ai-agent → agent}/voice-input.ts +11 -11
  535. package/src/wirings/{ai-agent → agent}/voice-output.test.ts +25 -27
  536. package/src/wirings/{ai-agent → agent}/voice-output.ts +11 -11
  537. package/src/wirings/{ai-scorer/ai-scorer-grade.test.ts → agent-scorer/agent-scorer-grade.test.ts} +8 -8
  538. package/src/wirings/{ai-scorer/ai-scorer-grade.ts → agent-scorer/agent-scorer-grade.ts} +9 -9
  539. package/src/wirings/agent-scorer/agent-scorer-judge.test.ts +285 -0
  540. package/src/wirings/agent-scorer/agent-scorer-judge.ts +180 -0
  541. package/src/wirings/{ai-scorer/ai-scorer-live.test.ts → agent-scorer/agent-scorer-live.test.ts} +11 -11
  542. package/src/wirings/{ai-scorer/ai-scorer-live.ts → agent-scorer/agent-scorer-live.ts} +3 -3
  543. package/src/wirings/{ai-scorer/ai-scorer-registry.ts → agent-scorer/agent-scorer-registry.ts} +11 -8
  544. package/src/wirings/{ai-scorer/ai-scorer-sampling.test.ts → agent-scorer/agent-scorer-sampling.test.ts} +1 -1
  545. package/src/wirings/{ai-scorer/ai-scorer-snapshots.test.ts → agent-scorer/agent-scorer-snapshots.test.ts} +2 -2
  546. package/src/wirings/{ai-scorer/ai-scorer-snapshots.ts → agent-scorer/agent-scorer-snapshots.ts} +1 -1
  547. package/src/wirings/{ai-scorer/ai-scorer-worker.test.ts → agent-scorer/agent-scorer-worker.test.ts} +15 -15
  548. package/src/wirings/{ai-scorer/ai-scorer-worker.ts → agent-scorer/agent-scorer-worker.ts} +9 -7
  549. package/src/wirings/{ai-scorer/ai-scorer.ts → agent-scorer/agent-scorer.ts} +15 -7
  550. package/src/wirings/{ai-scorer/ai-scorer.types.ts → agent-scorer/agent-scorer.types.ts} +27 -6
  551. package/src/wirings/agent-scorer/index.ts +23 -0
  552. package/src/wirings/channel/channel-common.ts +4 -2
  553. package/src/wirings/channel/channel-handler.ts +2 -5
  554. package/src/wirings/channel/channel-middleware-runner.ts +1 -1
  555. package/src/wirings/channel/channel-rpc.types.ts +3 -7
  556. package/src/wirings/channel/channel.types.ts +1 -2
  557. package/src/wirings/channel/local/local-channel-runner.test.ts +1 -2
  558. package/src/wirings/channel/serverless/index.ts +1 -0
  559. package/src/wirings/cli/channel/cli-raw-channel-runner.ts +2 -2
  560. package/src/wirings/cli/channel/index.ts +1 -3
  561. package/src/wirings/cli/cli-runner.test.ts +1 -1
  562. package/src/wirings/cli/cli-runner.ts +11 -7
  563. package/src/wirings/cli/cli.types.ts +24 -3
  564. package/src/wirings/cli/command-parser.test.ts +388 -1
  565. package/src/wirings/cli/command-parser.ts +189 -29
  566. package/src/wirings/gateway/gateway-runner.test.ts +1 -2
  567. package/src/wirings/gateway/gateway-runner.ts +3 -6
  568. package/src/wirings/gateway/gateway.types.ts +5 -4
  569. package/src/wirings/http/http-routes.test.ts +1 -2
  570. package/src/wirings/http/http-runner-addon-ref.test.ts +238 -0
  571. package/src/wirings/http/http-runner.test.ts +3 -8
  572. package/src/wirings/http/http-runner.ts +9 -3
  573. package/src/wirings/http/http.types.ts +3 -12
  574. package/src/wirings/http/index.ts +1 -0
  575. package/src/wirings/http/pikku-fetch-http-request.ts +1 -1
  576. package/src/wirings/http/pikku-fetch-http-response.ts +3 -2
  577. package/src/wirings/mcp/mcp-runner.test.ts +1 -1
  578. package/src/wirings/mcp/mcp.types.ts +1 -2
  579. package/src/wirings/persona/index.ts +1 -4
  580. package/src/wirings/persona/persona.types.ts +14 -0
  581. package/src/wirings/queue/queue-identity.test.ts +1 -1
  582. package/src/wirings/queue/queue.types.ts +2 -6
  583. package/src/wirings/queue/signed-queue-service.ts +1 -1
  584. package/src/wirings/rpc/index.ts +0 -12
  585. package/src/wirings/rpc/rpc-runner.test.ts +4 -4
  586. package/src/wirings/rpc/rpc-runner.ts +5 -5
  587. package/src/wirings/rpc/rpc-types.ts +1 -1
  588. package/src/wirings/scheduler/scheduler.types.ts +2 -5
  589. package/src/wirings/scope/index.ts +1 -0
  590. package/src/wirings/secret/secret.types.ts +10 -0
  591. package/src/wirings/secret/validate-secret-definitions.test.ts +23 -0
  592. package/src/wirings/secret/validate-secret-definitions.ts +2 -0
  593. package/src/wirings/variable/validate-variable-definitions.test.ts +23 -0
  594. package/src/wirings/variable/validate-variable-definitions.ts +2 -0
  595. package/src/wirings/variable/variable.types.ts +9 -0
  596. package/src/wirings/virtual-user/index.ts +1 -4
  597. package/src/wirings/virtual-user/prepare-virtual-user-run.ts +2 -2
  598. package/src/wirings/virtual-user/run-virtual-user.test.ts +2 -2
  599. package/src/wirings/virtual-user/run-virtual-user.ts +3 -3
  600. package/src/wirings/virtual-user/virtual-user-agents.ts +1 -1
  601. package/src/wirings/virtual-user/virtual-user-derive.test.ts +1 -1
  602. package/src/wirings/virtual-user/virtual-user-derive.ts +1 -1
  603. package/src/wirings/virtual-user/virtual-user.types.ts +1 -5
  604. package/src/wirings/workflow/graph/graph-foreach-queued.test.ts +569 -0
  605. package/src/wirings/workflow/graph/graph-foreach.test.ts +626 -0
  606. package/src/wirings/workflow/graph/graph-node.ts +16 -1
  607. package/src/wirings/workflow/graph/graph-runner.ts +387 -61
  608. package/src/wirings/workflow/graph/workflow-graph.types.ts +28 -3
  609. package/src/wirings/workflow/index.ts +8 -0
  610. package/src/wirings/workflow/pikku-scenario-service.ts +59 -19
  611. package/src/wirings/workflow/pikku-workflow-service.ts +6 -8
  612. package/src/wirings/workflow/run-timeline.ts +2 -2
  613. package/src/wirings/workflow/scenario-expectations.test.ts +28 -13
  614. package/src/wirings/workflow/scenario-run.types.ts +186 -0
  615. package/src/wirings/workflow/scenario-step-guards.ts +1 -14
  616. package/src/wirings/workflow/scenario-step.test.ts +32 -7
  617. package/src/wirings/workflow/scenario-step.types.ts +27 -12
  618. package/src/wirings/workflow/workflow-approval-policy.test.ts +117 -47
  619. package/src/wirings/workflow/workflow-approval.ts +2 -1
  620. package/src/wirings/workflow/workflow-run-engine.types.ts +2 -1
  621. package/src/wirings/workflow/workflow.types.ts +4 -12
  622. package/src/wirings-stay-decoupled.test.ts +7 -4
  623. package/tsconfig.tsbuildinfo +1 -1
  624. package/tsconfig.type-tests.json +3 -2
  625. package/dist/testing/service-tests/ai-storage-service-tests.d.ts +0 -3
  626. package/dist/wirings/ai-agent/ai-agent-registry.d.ts +0 -16
  627. package/dist/wirings/ai-agent/ai-agent-runner.d.ts +0 -7
  628. package/dist/wirings/ai-agent/ai-agent-utils.d.ts +0 -1
  629. package/dist/wirings/ai-agent/ai-agent-utils.js +0 -1
  630. package/dist/wirings/ai-agent/index.d.ts +0 -12
  631. package/dist/wirings/ai-agent/index.js +0 -10
  632. package/dist/wirings/ai-scorer/ai-scorer-judge.d.ts +0 -17
  633. package/dist/wirings/ai-scorer/ai-scorer.types.js +0 -4
  634. package/dist/wirings/ai-scorer/index.d.ts +0 -6
  635. package/dist/wirings/ai-scorer/index.js +0 -5
  636. package/src/ecosystem.ts +0 -40
  637. package/src/index.ts +0 -255
  638. package/src/wirings/ai-agent/ai-agent-utils.ts +0 -1
  639. package/src/wirings/ai-agent/index.ts +0 -65
  640. package/src/wirings/ai-scorer/ai-scorer-judge.test.ts +0 -143
  641. package/src/wirings/ai-scorer/ai-scorer-judge.ts +0 -120
  642. package/src/wirings/ai-scorer/index.ts +0 -24
  643. /package/dist/{services/ai-agent-runner-service.js → bootstrap-compat/root.js} +0 -0
  644. /package/dist/{services/ai-run-state-service.js → classification/data-classification.js} +0 -0
  645. /package/dist/{services/ai-storage-service.js → ecosystem/gateway.js} +0 -0
  646. /package/dist/{wirings/ai-agent/ai-agent.types.js → ecosystem/node.js} +0 -0
  647. /package/dist/wirings/{ai-agent/ai-agent-helpers.js → agent/agent-helpers.js} +0 -0
  648. /package/dist/wirings/{ai-agent/ai-agent-model-config.d.ts → agent/agent-model-config.d.ts} +0 -0
  649. /package/dist/wirings/{ai-agent → agent}/agent-rpc.d.ts +0 -0
  650. /package/dist/wirings/{ai-scorer/ai-scorer-sampling.d.ts → agent-scorer/agent-scorer-sampling.d.ts} +0 -0
  651. /package/dist/wirings/{ai-scorer/ai-scorer-sampling.js → agent-scorer/agent-scorer-sampling.js} +0 -0
  652. /package/dist/wirings/{ai-scorer/ai-scorer-snapshots.js → agent-scorer/agent-scorer-snapshots.js} +0 -0
  653. /package/src/{column-form.ts → classification/column-form.ts} +0 -0
  654. /package/src/{pikku-request.test.ts → function/pikku-request.test.ts} +0 -0
  655. /package/src/{pikku-request.ts → function/pikku-request.ts} +0 -0
  656. /package/src/wirings/{rpc → addon}/addon-auth-tags.test.ts +0 -0
  657. /package/src/wirings/{rpc → addon}/addon-runner.ts +0 -0
  658. /package/src/wirings/{rpc → addon}/addon-secrets.test.ts +0 -0
  659. /package/src/wirings/{rpc → addon}/wire-addon.test.ts +0 -0
  660. /package/src/wirings/{rpc → addon}/wire-remote-addon.ts +0 -0
  661. /package/src/wirings/{ai-scorer/ai-scorer-sampling.ts → agent-scorer/agent-scorer-sampling.ts} +0 -0
@@ -1,22 +1,22 @@
1
1
  import { randomUUID } from 'crypto'
2
2
  import type { CoreSingletonServices } from '../../types/core.types.js'
3
3
  import type {
4
- CoreAIAgent,
5
- AIAgentMemoryConfig,
6
- AIAgentInput,
7
- AIAgentStep,
8
- AIMessage,
9
- } from './ai-agent.types.js'
10
- import type { AIStorageService } from '../../services/ai-storage-service.js'
4
+ CoreAgent,
5
+ AgentMemoryConfig,
6
+ AgentInput,
7
+ AgentStep,
8
+ AgentMessage,
9
+ } from './agent.types.js'
10
+ import type { AgentStorageService } from '../../services/agent-storage-service.js'
11
11
  import type { Logger } from '../../services/logger.js'
12
12
  import type { SchemaService } from '../../services/schema-service.js'
13
- import type { PikkuAIMiddlewareHooks } from './ai-agent.types.js'
13
+ import type { PikkuAgentMiddlewareHooks } from './agent.types.js'
14
14
 
15
15
  export function resolveMemoryServices(
16
- agent: CoreAIAgent,
16
+ agent: CoreAgent,
17
17
  singletonServices: CoreSingletonServices
18
18
  ): {
19
- storage: AIStorageService | undefined
19
+ storage: AgentStorageService | undefined
20
20
  } {
21
21
  const memoryConfig = agent.memory
22
22
  const storage = memoryConfig?.storage
@@ -25,16 +25,16 @@ export function resolveMemoryServices(
25
25
  (
26
26
  singletonServices as unknown as Record<
27
27
  string,
28
- AIStorageService | undefined
28
+ AgentStorageService | undefined
29
29
  >
30
30
  )[memoryConfig.storage]
31
- : singletonServices.aiStorage
31
+ : singletonServices.agentStorage
32
32
  return { storage }
33
33
  }
34
34
 
35
35
  export function isWorkingMemoryEnabled(
36
- memoryConfig: AIAgentMemoryConfig | undefined,
37
- storage: AIStorageService | undefined
36
+ memoryConfig: AgentMemoryConfig | undefined,
37
+ storage: AgentStorageService | undefined
38
38
  ): boolean {
39
39
  return !!memoryConfig?.workingMemory && !!storage
40
40
  }
@@ -107,12 +107,12 @@ export function buildWorkingMemoryPrompt(
107
107
  }
108
108
 
109
109
  export async function loadContextMessages(
110
- memoryConfig: AIAgentMemoryConfig | undefined,
111
- storage: AIStorageService | undefined,
112
- input: AIAgentInput,
110
+ memoryConfig: AgentMemoryConfig | undefined,
111
+ storage: AgentStorageService | undefined,
112
+ input: AgentInput,
113
113
  workingMemoryJsonSchema?: Record<string, unknown>
114
- ): Promise<AIMessage[]> {
115
- const contextMessages: AIMessage[] = []
114
+ ): Promise<AgentMessage[]> {
115
+ const contextMessages: AgentMessage[] = []
116
116
 
117
117
  const workingMemoryStorage = isWorkingMemoryEnabled(memoryConfig, storage)
118
118
  ? storage
@@ -136,15 +136,15 @@ export async function loadContextMessages(
136
136
  }
137
137
 
138
138
  export async function saveMessages(
139
- storage: AIStorageService | undefined,
139
+ storage: AgentStorageService | undefined,
140
140
  threadId: string,
141
141
  resourceId: string,
142
- memoryConfig: AIAgentMemoryConfig | undefined,
143
- userMessage: AIMessage | null | undefined,
142
+ memoryConfig: AgentMemoryConfig | undefined,
143
+ userMessage: AgentMessage | null | undefined,
144
144
  result: {
145
145
  text: string
146
146
  uiSpec?: unknown
147
- steps: Pick<AIAgentStep, 'toolCalls'>[]
147
+ steps: Pick<AgentStep, 'toolCalls'>[]
148
148
  }
149
149
  ): Promise<string> {
150
150
  const responseText = memoryConfig?.workingMemory
@@ -152,7 +152,7 @@ export async function saveMessages(
152
152
  : result.text
153
153
 
154
154
  if (storage) {
155
- const newMessages: AIMessage[] = userMessage ? [userMessage] : []
155
+ const newMessages: AgentMessage[] = userMessage ? [userMessage] : []
156
156
 
157
157
  for (const step of result.steps) {
158
158
  if (step.toolCalls?.length) {
@@ -205,13 +205,13 @@ export async function saveMessages(
205
205
  }
206
206
 
207
207
  export function trimMessages(
208
- messages: AIMessage[],
208
+ messages: AgentMessage[],
209
209
  maxTokenBudget: number = 100000
210
- ): AIMessage[] {
210
+ ): AgentMessage[] {
211
211
  const sanitized = sanitizeToolMessages(messages)
212
212
 
213
213
  let estimatedTokens = 0
214
- const result: AIMessage[] = []
214
+ const result: AgentMessage[] = []
215
215
 
216
216
  for (let i = sanitized.length - 1; i >= 0; i--) {
217
217
  const msg = sanitized[i]
@@ -239,8 +239,8 @@ export function trimMessages(
239
239
  return result
240
240
  }
241
241
 
242
- function sanitizeToolMessages(messages: AIMessage[]): AIMessage[] {
243
- const result: AIMessage[] = []
242
+ function sanitizeToolMessages(messages: AgentMessage[]): AgentMessage[] {
243
+ const result: AgentMessage[] = []
244
244
 
245
245
  for (let i = 0; i < messages.length; i++) {
246
246
  const msg = messages[i]
@@ -281,7 +281,7 @@ function sanitizeToolMessages(messages: AIMessage[]): AIMessage[] {
281
281
  )
282
282
  }
283
283
 
284
- function estimateTokens(msg: AIMessage): number {
284
+ function estimateTokens(msg: AgentMessage): number {
285
285
  let chars = 0
286
286
  if (msg.content) {
287
287
  if (typeof msg.content === 'string') {
@@ -368,7 +368,7 @@ export function stripWorkingMemoryForStreaming(text: string): string {
368
368
 
369
369
  async function persistWorkingMemory(
370
370
  options: {
371
- storage?: AIStorageService
371
+ storage?: AgentStorageService
372
372
  threadId: string
373
373
  workingMemorySchemaName?: string | null
374
374
  logger?: Logger
@@ -400,12 +400,12 @@ async function persistWorkingMemory(
400
400
  }
401
401
 
402
402
  export function createWorkingMemoryMiddleware(options: {
403
- storage?: AIStorageService
403
+ storage?: AgentStorageService
404
404
  threadId: string
405
405
  workingMemorySchemaName?: string | null
406
406
  logger?: Logger
407
407
  schemaService?: SchemaService
408
- }): PikkuAIMiddlewareHooks<{
408
+ }): PikkuAgentMiddlewareHooks<{
409
409
  rawText?: string
410
410
  emittedVisibleText?: string
411
411
  }> {
@@ -459,15 +459,15 @@ export function createWorkingMemoryMiddleware(options: {
459
459
  }
460
460
 
461
461
  export function getWorkingMemoryMiddleware(
462
- memoryConfig: AIAgentMemoryConfig | undefined,
463
- storage: AIStorageService | undefined,
462
+ memoryConfig: AgentMemoryConfig | undefined,
463
+ storage: AgentStorageService | undefined,
464
464
  options: {
465
465
  threadId: string
466
466
  workingMemorySchemaName?: string | null
467
467
  logger?: Logger
468
468
  schemaService?: SchemaService
469
469
  }
470
- ): PikkuAIMiddlewareHooks[] {
470
+ ): PikkuAgentMiddlewareHooks[] {
471
471
  if (!isWorkingMemoryEnabled(memoryConfig, storage)) return []
472
472
 
473
473
  return [
@@ -1,9 +1,6 @@
1
1
  import { describe, test, beforeEach, afterEach } from 'node:test'
2
2
  import assert from 'node:assert'
3
- import {
4
- resolveModelAlias,
5
- resolveModelConfig,
6
- } from './ai-agent-model-config.js'
3
+ import { resolveModelAlias, resolveModelConfig } from './agent-model-config.js'
7
4
  import { pikkuState, resetPikkuState } from '../../pikku-state.js'
8
5
 
9
6
  const setAliases = (aliases: Record<string, string>) =>
@@ -81,7 +78,7 @@ describe('resolveModelAlias', () => {
81
78
  test('an env override splits on the first colon only', () => {
82
79
  // A model id may itself contain a colon — `ollama/qwen2.5:7b` is the shape
83
80
  // the runner's own error message cites. It stays provider-qualified so the
84
- // resolved value is one `VercelAIAgentRunner.parseModel` would accept; a
81
+ // resolved value is one `VercelAgentRunner.parseModel` would accept; a
85
82
  // bare `bedrock:nova-lite:1` would pass here and fail the moment anything
86
83
  // tried to use it.
87
84
  process.env.PIKKU_MODEL_ALIASES = 'cheap:ollama/qwen2.5:7b'
@@ -1,4 +1,4 @@
1
- // knowledge: decisions/internals/ai-agent-model-config-stays-a-single-resolution-seam.md
1
+ // knowledge: decisions/internals/agent-model-config-stays-a-single-resolution-seam.md
2
2
  import { pikkuState } from '../../pikku-state.js'
3
3
 
4
4
  const isProviderQualified = (model: string) => model.includes('/')
@@ -18,22 +18,22 @@ import {
18
18
  resolveOwnerResourceId,
19
19
  sessionPrincipals,
20
20
  threadOwnerConstraint,
21
- } from './ai-agent-prepare.js'
21
+ } from './agent-prepare.js'
22
22
  import { ForbiddenError, MissingCredentialError } from '../../errors/errors.js'
23
23
  import { pikkuAuth } from '../../function/functions.types.js'
24
24
  import type {
25
- AIStreamChannel,
26
- AIStreamEvent,
27
- CoreAIAgent,
28
- PikkuAIMiddlewareHooks,
29
- } from './ai-agent.types.js'
25
+ AgentStreamChannel,
26
+ AgentStreamEvent,
27
+ CoreAgent,
28
+ PikkuAgentMiddlewareHooks,
29
+ } from './agent.types.js'
30
30
 
31
31
  beforeEach(() => {
32
32
  resetPikkuState()
33
33
  })
34
34
 
35
- const addAgent = (agentName: string, overrides: Partial<CoreAIAgent> = {}) => {
36
- const agent: CoreAIAgent = {
35
+ const addAgent = (agentName: string, overrides: Partial<CoreAgent> = {}) => {
36
+ const agent: CoreAgent = {
37
37
  name: agentName,
38
38
  description: `${agentName} description`,
39
39
  goal: `${agentName} goal`,
@@ -51,7 +51,7 @@ const addAgent = (agentName: string, overrides: Partial<CoreAIAgent> = {}) => {
51
51
  } as any
52
52
  }
53
53
 
54
- describe('ai-agent-prepare', () => {
54
+ describe('agent-prepare', () => {
55
55
  test('getAddonCredentialRequirements returns deduplicated wire oauth credentials', () => {
56
56
  pikkuState(null, 'addons', 'packages').set('github', {
57
57
  package: '@test/github-addon',
@@ -88,7 +88,7 @@ describe('ai-agent-prepare', () => {
88
88
  test('resolveAgent resolves root and addon agents and rejects missing names', () => {
89
89
  addAgent('root-agent')
90
90
 
91
- const addonAgent: CoreAIAgent = {
91
+ const addonAgent: CoreAgent = {
92
92
  name: 'addon-agent',
93
93
  description: 'addon',
94
94
  goal: 'addon goal',
@@ -164,13 +164,13 @@ describe('ai-agent-prepare', () => {
164
164
  })
165
165
 
166
166
  test('createScopedChannel forwards stream events, captures approvals, and suppresses done', () => {
167
- const events: AIStreamEvent[] = []
167
+ const events: AgentStreamEvent[] = []
168
168
  const channel = createScopedChannel(
169
169
  {
170
170
  channelId: 'root',
171
171
  openingData: undefined,
172
172
  state: 'open',
173
- send: (event: AIStreamEvent) => {
173
+ send: (event: AgentStreamEvent) => {
174
174
  events.push(event)
175
175
  },
176
176
  sendBinary: () => {},
@@ -178,12 +178,12 @@ describe('ai-agent-prepare', () => {
178
178
  setState: () => {},
179
179
  getState: () => 'open',
180
180
  clearState: () => {},
181
- } as AIStreamChannel,
181
+ } as AgentStreamChannel,
182
182
  'sub-agent',
183
183
  'session-1'
184
184
  )
185
185
 
186
- channel.send({ type: 'text-delta', text: 'hello' } as AIStreamEvent)
186
+ channel.send({ type: 'text-delta', text: 'hello' } as AgentStreamEvent)
187
187
  channel.send({
188
188
  type: 'approval-request',
189
189
  toolCallId: 'tc-1',
@@ -191,8 +191,8 @@ describe('ai-agent-prepare', () => {
191
191
  args: { x: 1 },
192
192
  reason: 'Delete todo "x"',
193
193
  runId: 'run-1',
194
- } as AIStreamEvent)
195
- channel.send({ type: 'done' } as AIStreamEvent)
194
+ } as AgentStreamEvent)
195
+ channel.send({ type: 'done' } as AgentStreamEvent)
196
196
 
197
197
  assert.equal(events.length, 1)
198
198
  assert.equal(events[0].type, 'text-delta')
@@ -232,7 +232,7 @@ describe('ai-agent-prepare', () => {
232
232
 
233
233
  const beforeCalls: unknown[] = []
234
234
  const afterCalls: unknown[] = []
235
- const middlewares: PikkuAIMiddlewareHooks[] = [
235
+ const middlewares: PikkuAgentMiddlewareHooks[] = [
236
236
  {
237
237
  beforeToolCall: async (_services, ctx) => {
238
238
  beforeCalls.push(ctx)
@@ -333,7 +333,7 @@ describe('ai-agent-prepare', () => {
333
333
  )
334
334
  })
335
335
 
336
- test('buildToolDefs logs a tool execute() failure even without aiMiddleware hooks, then rethrows', async () => {
336
+ test('buildToolDefs logs a tool execute() failure even without agentMiddleware hooks, then rethrows', async () => {
337
337
  addAgent('ops-agent')
338
338
  pikkuState(null, 'agent', 'agentsMeta')['ops-agent'] = {
339
339
  ...pikkuState(null, 'agent', 'agentsMeta')['ops-agent'],
@@ -1,16 +1,20 @@
1
- import type { PikkuRawWire, CoreUserSession } from '../../types/core.types.js'
2
1
  import type {
3
- CoreAIAgent,
4
- AIAgentInput,
5
- AIAgentToolDef,
6
- AIContentPart,
7
- AIMessage,
8
- AIStreamChannel,
9
- AIStreamEvent,
10
- PikkuAIMiddlewareHooks,
2
+ PikkuRawWire,
3
+ CoreUserSession,
4
+ GetCredential,
5
+ } from '../../types/core.types.js'
6
+ import type {
7
+ CoreAgent,
8
+ AgentInput,
9
+ AgentToolDef,
10
+ AgentContentPart,
11
+ AgentMessage,
12
+ AgentStreamChannel,
13
+ AgentStreamEvent,
14
+ PikkuAgentMiddlewareHooks,
11
15
  SessionScope,
12
- } from './ai-agent.types.js'
13
- import type { AIAgentRunnerParams } from '../../services/ai-agent-runner-service.js'
16
+ } from './agent.types.js'
17
+ import type { AgentRunnerParams } from '../../services/agent-runner-service.js'
14
18
  import { PikkuError } from '../../errors/error-handler.js'
15
19
  import {
16
20
  checkAuthPermissions,
@@ -23,32 +27,32 @@ import { verifyScopes } from '../../scopes.js'
23
27
  import { pikkuState, getSingletonServices } from '../../pikku-state.js'
24
28
  import { createMiddlewareSessionWireProps } from '../../services/user-session-service.js'
25
29
  import type { SessionService } from '../../services/user-session-service.js'
26
- import { randomUUID } from './ai-agent-utils.js'
27
- import { awaitPendingInterruptNote } from './ai-agent-interrupt.js'
28
- import { streamAIAgent } from './ai-agent-stream.js'
29
- import { runAIAgent } from './ai-agent-runner.js'
30
+ import { randomUUID } from './agent-utils.js'
31
+ import { awaitPendingInterruptNote } from './agent-interrupt.js'
32
+ import { streamAgent } from './agent-stream.js'
33
+ import { runAgent } from './agent-runner.js'
30
34
  import {
31
35
  resolveNamespace,
32
36
  ContextAwareRPCService,
33
37
  } from '../../wirings/rpc/rpc-runner.js'
34
- import { getOrCreatePackageSingletonServices } from '../../wirings/rpc/addon-runner.js'
38
+ import { getOrCreatePackageSingletonServices } from '../../wirings/addon/addon-runner.js'
35
39
  import {
36
40
  resolveMemoryServices,
37
41
  loadContextMessages,
38
42
  trimMessages,
39
- } from './ai-agent-memory.js'
40
- import { resolveModelConfig } from './ai-agent-model-config.js'
43
+ } from './agent-memory.js'
44
+ import { resolveModelConfig } from './agent-model-config.js'
41
45
 
42
- export type RunAIAgentParams = {
46
+ export type RunAgentParams = {
43
47
  sessionService?: SessionService<CoreUserSession>
44
48
  /** Credential accessor for the current request — used to read per-user overrides (e.g. AI_API_KEY). */
45
- getCredential?: <T = unknown>(name: string) => T | null | Promise<T | null>
49
+ getCredential?: GetCredential
46
50
  /** Ephemeral owner identity minted for a sessionless request; never client-supplied, never reused across requests. */
47
51
  anonymousOwnerResourceId?: string
48
52
  }
49
53
 
50
54
  export function resolveSessionPrincipal(
51
- params: RunAIAgentParams,
55
+ params: RunAgentParams,
52
56
  sessionScope: SessionScope | undefined
53
57
  ): string | undefined {
54
58
  const session = params.sessionService?.get()
@@ -64,7 +68,7 @@ export function resolveSessionPrincipal(
64
68
  }
65
69
 
66
70
  export function resolveOwnerResourceId(
67
- params: RunAIAgentParams,
71
+ params: RunAgentParams,
68
72
  sessionScope: SessionScope | undefined,
69
73
  requestedResourceId: string
70
74
  ): string {
@@ -85,7 +89,7 @@ export function resolveOwnerResourceId(
85
89
  }
86
90
 
87
91
  export function assertResourcePrincipalOwner(
88
- params: RunAIAgentParams,
92
+ params: RunAgentParams,
89
93
  sessionScope: SessionScope | undefined,
90
94
  storedResourceId: string,
91
95
  kind: 'thread' | 'run'
@@ -145,7 +149,7 @@ export function canAccessThread(
145
149
  )
146
150
  }
147
151
 
148
- export type StreamAIAgentOptions = {
152
+ export type StreamAgentOptions = {
149
153
  requiresToolApproval?: 'all' | 'explicit' | false
150
154
  onRunCreated?: (runId: string) => void
151
155
  }
@@ -258,14 +262,14 @@ export function getAddonCredentialRequirements(
258
262
  }
259
263
 
260
264
  export type StreamContext = {
261
- channel: AIStreamChannel
262
- options?: StreamAIAgentOptions
265
+ channel: AgentStreamChannel
266
+ options?: StreamAgentOptions
263
267
  delegateState?: { delegated: boolean }
264
268
  }
265
269
 
266
270
  export const resolveAgent = (
267
271
  agentName: string
268
- ): { agent: CoreAIAgent; packageName: string | null; resolvedName: string } => {
272
+ ): { agent: CoreAgent; packageName: string | null; resolvedName: string } => {
269
273
  if (!agentName) {
270
274
  console.error(
271
275
  '[resolveAgent] agentName is undefined/null! Stack:',
@@ -302,8 +306,8 @@ export const resolveAgent = (
302
306
  }
303
307
 
304
308
  export async function assertAgentAuthorized(
305
- agent: CoreAIAgent,
306
- params: RunAIAgentParams,
309
+ agent: CoreAgent,
310
+ params: RunAgentParams,
307
311
  packageName: string | null
308
312
  ): Promise<void> {
309
313
  const session = params.sessionService
@@ -363,7 +367,7 @@ export async function buildInstructions(
363
367
  return instructions
364
368
  }
365
369
 
366
- export type ScopedChannel = AIStreamChannel & {
370
+ export type ScopedChannel = AgentStreamChannel & {
367
371
  approvals: Array<{
368
372
  toolCallId: string
369
373
  toolName: string
@@ -374,7 +378,7 @@ export type ScopedChannel = AIStreamChannel & {
374
378
  }
375
379
 
376
380
  export function createScopedChannel(
377
- parent: AIStreamChannel,
381
+ parent: AgentStreamChannel,
378
382
  agentName: string,
379
383
  session: string
380
384
  ): ScopedChannel {
@@ -391,7 +395,7 @@ export function createScopedChannel(
391
395
  },
392
396
  close: () => {},
393
397
  sendBinary: (data) => parent.sendBinary(data),
394
- send: (event: AIStreamEvent) => {
398
+ send: (event: AgentStreamEvent) => {
395
399
  if (event.type === 'done') return
396
400
  if (event.type === 'approval-request') {
397
401
  capturedApprovals.push({
@@ -412,7 +416,7 @@ export function createScopedChannel(
412
416
  event.type === 'usage' ||
413
417
  event.type === 'error'
414
418
  ) {
415
- parent.send({ ...event, agent: agentName, session } as AIStreamEvent)
419
+ parent.send({ ...event, agent: agentName, session } as AgentStreamEvent)
416
420
  } else {
417
421
  parent.send(event)
418
422
  }
@@ -434,18 +438,18 @@ export function buildSubAgentRunInput(
434
438
  }
435
439
 
436
440
  export async function buildToolDefs(
437
- params: RunAIAgentParams,
441
+ params: RunAgentParams,
438
442
  agentSessionMap: Map<string, string>,
439
443
  resourceId: string,
440
444
  agentName: string,
441
445
  packageName: string | null,
442
446
  streamContext?: StreamContext,
443
- aiMiddlewares?: PikkuAIMiddlewareHooks[],
447
+ agentMiddlewares?: PikkuAgentMiddlewareHooks[],
444
448
  agentMode?: 'delegate' | 'supervise',
445
449
  parentContext?: string
446
- ): Promise<{ tools: AIAgentToolDef[]; missingRpcs: string[] }> {
450
+ ): Promise<{ tools: AgentToolDef[]; missingRpcs: string[] }> {
447
451
  const singletonServices = getSingletonServices()
448
- const tools: AIAgentToolDef[] = []
452
+ const tools: AgentToolDef[] = []
449
453
  const missingRpcs: string[] = []
450
454
  const approvalPolicy =
451
455
  streamContext?.options?.requiresToolApproval ?? 'explicit'
@@ -542,8 +546,7 @@ export async function buildToolDefs(
542
546
  (approvalPolicy === 'explicit' && fnMeta?.approvalRequired)
543
547
 
544
548
  let approvalDescriptionFn:
545
- | ((input: unknown) => Promise<string>)
546
- | undefined
549
+ ((input: unknown) => Promise<string>) | undefined
547
550
  if (needsApproval && pikkuFuncId) {
548
551
  const funcConfig = pikkuState(resolvedPkg, 'function', 'functions').get(
549
552
  pikkuFuncId
@@ -678,7 +681,7 @@ export async function buildToolDefs(
678
681
  ? subChannel
679
682
  : {
680
683
  ...subChannel,
681
- send: (event: AIStreamEvent) => {
684
+ send: (event: AgentStreamEvent) => {
682
685
  if (
683
686
  event.type === 'text-delta' ||
684
687
  event.type === 'reasoning-delta'
@@ -687,7 +690,7 @@ export async function buildToolDefs(
687
690
  subChannel.send(event)
688
691
  },
689
692
  }
690
- const resultText = await streamAIAgent(
693
+ const resultText = await streamAgent(
691
694
  subAgentName,
692
695
  buildSubAgentRunInput(
693
696
  message,
@@ -719,7 +722,7 @@ export async function buildToolDefs(
719
722
  return resultText
720
723
  }
721
724
 
722
- const result = await runAIAgent(
725
+ const result = await runAgent(
723
726
  subAgentName,
724
727
  buildSubAgentRunInput(message, threadId, resourceId, parentContext),
725
728
  params,
@@ -830,7 +833,7 @@ export async function buildToolDefs(
830
833
  }
831
834
  }
832
835
 
833
- const hasToolHooks = aiMiddlewares?.some(
836
+ const hasToolHooks = agentMiddlewares?.some(
834
837
  (mw) => mw.beforeToolCall || mw.afterToolCall
835
838
  )
836
839
  if (hasToolHooks) {
@@ -840,7 +843,7 @@ export async function buildToolDefs(
840
843
  const toolCallId = randomUUID()
841
844
  let args = (toolInput ?? {}) as Record<string, unknown>
842
845
 
843
- for (const mw of aiMiddlewares!) {
846
+ for (const mw of agentMiddlewares!) {
844
847
  if (mw.beforeToolCall) {
845
848
  const beforeResult = await mw.beforeToolCall(singletonServices, {
846
849
  toolName: tool.name,
@@ -865,8 +868,8 @@ export async function buildToolDefs(
865
868
  }
866
869
  const durationMs = Date.now() - startTime
867
870
 
868
- for (let i = aiMiddlewares!.length - 1; i >= 0; i--) {
869
- const mw = aiMiddlewares![i]
871
+ for (let i = agentMiddlewares!.length - 1; i >= 0; i--) {
872
+ const mw = agentMiddlewares![i]
870
873
  if (mw.afterToolCall) {
871
874
  const afterResult = await mw.afterToolCall(singletonServices, {
872
875
  toolName: tool.name,
@@ -892,8 +895,8 @@ export async function buildToolDefs(
892
895
 
893
896
  export async function prepareAgentRun(
894
897
  agentName: string,
895
- input: AIAgentInput,
896
- params: RunAIAgentParams,
898
+ input: AgentInput,
899
+ params: RunAgentParams,
897
900
  agentSessionMap: Map<string, string>,
898
901
  streamContext?: StreamContext
899
902
  ) {
@@ -902,7 +905,7 @@ export async function prepareAgentRun(
902
905
 
903
906
  await assertAgentAuthorized(agent, params, packageName)
904
907
 
905
- let agentRunner = singletonServices.aiAgentRunner
908
+ let agentRunner = singletonServices.agentRunner
906
909
  if (!agentRunner) {
907
910
  throw new AIProviderNotConfiguredError()
908
911
  }
@@ -946,7 +949,7 @@ export async function prepareAgentRun(
946
949
  }
947
950
  }
948
951
 
949
- let messages: AIMessage[] = []
952
+ let messages: AgentMessage[] = []
950
953
  if (storage) {
951
954
  // knowledge: decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md
952
955
  await awaitPendingInterruptNote(threadId)
@@ -962,7 +965,7 @@ export async function prepareAgentRun(
962
965
  workingMemoryJsonSchema
963
966
  )
964
967
 
965
- const userContent: AIMessage['content'] = input.attachments?.length
968
+ const userContent: AgentMessage['content'] = input.attachments?.length
966
969
  ? [
967
970
  // knowledge: decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md
968
971
  ...(input.message
@@ -976,12 +979,12 @@ export async function prepareAgentRun(
976
979
  url: a.url,
977
980
  mediaType: a.mediaType,
978
981
  ...(a.filename ? { filename: a.filename } : {}),
979
- }) as AIContentPart
982
+ }) as AgentContentPart
980
983
  ),
981
984
  ]
982
985
  : input.message
983
986
 
984
- const userMessage: AIMessage = {
987
+ const userMessage: AgentMessage = {
985
988
  id: randomUUID(),
986
989
  role: 'user',
987
990
  content: userContent,
@@ -991,7 +994,8 @@ export async function prepareAgentRun(
991
994
  const allMessages = [...contextMessages, ...messages, userMessage]
992
995
  const trimmedMessages = trimMessages(allMessages)
993
996
 
994
- const aiMiddlewares: PikkuAIMiddlewareHooks[] = agent.aiMiddleware ?? []
997
+ const agentMiddlewares: PikkuAgentMiddlewareHooks[] =
998
+ agent.agentMiddleware ?? []
995
999
 
996
1000
  const { tools, missingRpcs } = await buildToolDefs(
997
1001
  params,
@@ -1000,7 +1004,7 @@ export async function prepareAgentRun(
1000
1004
  resolvedName,
1001
1005
  packageName,
1002
1006
  streamContext,
1003
- aiMiddlewares,
1007
+ agentMiddlewares,
1004
1008
  agent.agentMode,
1005
1009
  input.context
1006
1010
  )
@@ -1024,7 +1028,7 @@ export async function prepareAgentRun(
1024
1028
 
1025
1029
  const maxSteps = resolved.maxSteps ?? 10
1026
1030
 
1027
- const runnerParams: AIAgentRunnerParams = {
1031
+ const runnerParams: AgentRunnerParams = {
1028
1032
  model: resolved.model,
1029
1033
  temperature: resolved.temperature,
1030
1034
  instructions,