@pikku/core 0.12.83 → 0.12.84

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 (343) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +1 -1
  3. package/dist/ecosystem/agent-scorer.d.ts +12 -0
  4. package/dist/ecosystem/agent-scorer.js +5 -0
  5. package/dist/ecosystem/agent.d.ts +18 -0
  6. package/dist/ecosystem/agent.js +6 -0
  7. package/dist/ecosystem/ai-agent.d.ts +18 -0
  8. package/dist/ecosystem/ai-agent.js +6 -0
  9. package/dist/ecosystem/ai-scorer.d.ts +12 -0
  10. package/dist/ecosystem/ai-scorer.js +5 -0
  11. package/dist/ecosystem/channel/local.d.ts +1 -0
  12. package/dist/ecosystem/channel/local.js +1 -0
  13. package/dist/ecosystem/channel.d.ts +12 -0
  14. package/dist/ecosystem/channel.js +4 -0
  15. package/dist/ecosystem/cli/channel.d.ts +16 -0
  16. package/dist/ecosystem/cli/channel.js +2 -0
  17. package/dist/ecosystem/cli.d.ts +9 -0
  18. package/dist/ecosystem/cli.js +2 -0
  19. package/dist/ecosystem/credential.d.ts +9 -0
  20. package/dist/ecosystem/credential.js +1 -0
  21. package/dist/ecosystem/dev.d.ts +8 -0
  22. package/dist/ecosystem/dev.js +1 -0
  23. package/dist/ecosystem/function.d.ts +13 -0
  24. package/dist/ecosystem/function.js +2 -0
  25. package/dist/ecosystem/gateway.d.ts +1 -0
  26. package/dist/ecosystem/gateway.js +1 -0
  27. package/dist/ecosystem/hmac.d.ts +1 -0
  28. package/dist/ecosystem/hmac.js +1 -0
  29. package/dist/ecosystem/http.d.ts +11 -0
  30. package/dist/ecosystem/http.js +3 -0
  31. package/dist/ecosystem/mcp.d.ts +3 -0
  32. package/dist/ecosystem/mcp.js +2 -0
  33. package/dist/ecosystem/middleware.d.ts +17 -0
  34. package/dist/ecosystem/middleware.js +6 -0
  35. package/dist/ecosystem/node-host-resolver.d.ts +1 -0
  36. package/dist/ecosystem/node-host-resolver.js +1 -0
  37. package/dist/ecosystem/node.d.ts +1 -0
  38. package/dist/ecosystem/node.js +1 -0
  39. package/dist/ecosystem/oauth2.d.ts +1 -0
  40. package/dist/ecosystem/oauth2.js +1 -0
  41. package/dist/ecosystem/persona.d.ts +15 -0
  42. package/dist/ecosystem/persona.js +4 -0
  43. package/dist/ecosystem/queue.d.ts +11 -0
  44. package/dist/ecosystem/queue.js +2 -0
  45. package/dist/ecosystem/remote.d.ts +8 -0
  46. package/dist/ecosystem/remote.js +1 -0
  47. package/dist/ecosystem/role.d.ts +3 -0
  48. package/dist/ecosystem/role.js +2 -0
  49. package/dist/ecosystem/rpc.d.ts +4 -0
  50. package/dist/ecosystem/rpc.js +2 -0
  51. package/dist/ecosystem/safe-fetch.d.ts +7 -0
  52. package/dist/ecosystem/safe-fetch.js +1 -0
  53. package/dist/ecosystem/scenario.d.ts +15 -0
  54. package/dist/ecosystem/scenario.js +4 -0
  55. package/dist/ecosystem/scheduler.d.ts +2 -0
  56. package/dist/ecosystem/scheduler.js +1 -0
  57. package/dist/ecosystem/schema.d.ts +1 -0
  58. package/dist/ecosystem/schema.js +1 -0
  59. package/dist/ecosystem/scope.d.ts +3 -0
  60. package/dist/ecosystem/scope.js +2 -0
  61. package/dist/ecosystem/secret.d.ts +9 -0
  62. package/dist/ecosystem/secret.js +1 -0
  63. package/dist/ecosystem/services/istanbul-coverage.d.ts +1 -0
  64. package/dist/ecosystem/services/istanbul-coverage.js +1 -0
  65. package/dist/ecosystem/services/local-content-request-handler.d.ts +9 -0
  66. package/dist/ecosystem/services/local-content-request-handler.js +1 -0
  67. package/dist/ecosystem/services/local-content.d.ts +1 -0
  68. package/dist/ecosystem/services/local-content.js +1 -0
  69. package/dist/ecosystem/services/v8-coverage.d.ts +1 -0
  70. package/dist/ecosystem/services/v8-coverage.js +1 -0
  71. package/dist/ecosystem/services.d.ts +28 -0
  72. package/dist/ecosystem/services.js +6 -0
  73. package/dist/ecosystem/testing.d.ts +7 -0
  74. package/dist/ecosystem/testing.js +1 -0
  75. package/dist/ecosystem/trigger.d.ts +1 -0
  76. package/dist/ecosystem/trigger.js +1 -0
  77. package/dist/ecosystem/types.d.ts +9 -0
  78. package/dist/ecosystem/types.js +5 -0
  79. package/dist/ecosystem/variable.d.ts +8 -0
  80. package/dist/ecosystem/variable.js +1 -0
  81. package/dist/ecosystem/virtual-user.d.ts +21 -0
  82. package/dist/ecosystem/virtual-user.js +5 -0
  83. package/dist/ecosystem/workflow.d.ts +18 -0
  84. package/dist/ecosystem/workflow.js +4 -0
  85. package/dist/index.d.ts +8 -8
  86. package/dist/index.js +3 -3
  87. package/dist/middleware/auth-apikey.d.ts +1 -1
  88. package/dist/middleware/auth-bearer.d.ts +1 -1
  89. package/dist/middleware/auth-cookie.d.ts +1 -1
  90. package/dist/middleware/cors.d.ts +1 -1
  91. package/dist/middleware/remote-auth.d.ts +1 -1
  92. package/dist/middleware/telemetry.d.ts +2 -2
  93. package/dist/services/agent-run-state-service.d.ts +29 -0
  94. package/dist/services/agent-run-state-service.js +1 -0
  95. package/dist/services/agent-runner-service.d.ts +220 -0
  96. package/dist/services/agent-runner-service.js +1 -0
  97. package/dist/services/agent-storage-service.d.ts +18 -0
  98. package/dist/services/agent-storage-service.js +1 -0
  99. package/dist/services/http-personas.d.ts +1 -1
  100. package/dist/services/http-personas.js +3 -3
  101. package/dist/services/in-memory-agent-run-state-service.d.ts +19 -0
  102. package/dist/services/in-memory-agent-run-state-service.js +54 -0
  103. package/dist/services/index.d.ts +4 -4
  104. package/dist/services/index.js +1 -1
  105. package/dist/services/meta-service.d.ts +3 -3
  106. package/dist/testing/service-tests/agent-run-service-tests.d.ts +1 -1
  107. package/dist/testing/service-tests/agent-run-service-tests.js +3 -3
  108. package/dist/testing/service-tests/agent-storage-service-tests.d.ts +3 -0
  109. package/dist/testing/service-tests/agent-storage-service-tests.js +302 -0
  110. package/dist/testing/service-tests.d.ts +4 -4
  111. package/dist/testing/service-tests.js +4 -4
  112. package/dist/types/core.types.d.ts +10 -10
  113. package/dist/types/core.types.js +1 -1
  114. package/dist/types/state.types.d.ts +5 -5
  115. package/dist/wirings/actor-flow/run-conversation.d.ts +2 -2
  116. package/dist/wirings/agent/agent-agui.d.ts +79 -0
  117. package/dist/wirings/agent/agent-agui.js +327 -0
  118. package/dist/wirings/agent/agent-finalize.d.ts +58 -0
  119. package/dist/wirings/agent/agent-finalize.js +138 -0
  120. package/dist/wirings/agent/agent-helpers.d.ts +35 -0
  121. package/dist/wirings/agent/agent-helpers.js +47 -0
  122. package/dist/wirings/agent/agent-interrupt.d.ts +153 -0
  123. package/dist/wirings/agent/agent-interrupt.js +257 -0
  124. package/dist/wirings/agent/agent-memory.d.ts +42 -0
  125. package/dist/wirings/agent/agent-memory.js +333 -0
  126. package/dist/wirings/agent/agent-model-config.d.ts +16 -0
  127. package/dist/wirings/agent/agent-model-config.js +51 -0
  128. package/dist/wirings/agent/agent-prepare.d.ts +117 -0
  129. package/dist/wirings/agent/agent-prepare.js +728 -0
  130. package/dist/wirings/agent/agent-registry.d.ts +16 -0
  131. package/dist/wirings/agent/agent-registry.js +51 -0
  132. package/dist/wirings/agent/agent-rpc.d.ts +15 -0
  133. package/dist/wirings/agent/agent-rpc.js +53 -0
  134. package/dist/wirings/agent/agent-runner.d.ts +7 -0
  135. package/dist/wirings/agent/agent-runner.js +580 -0
  136. package/dist/wirings/agent/agent-stream.d.ts +41 -0
  137. package/dist/wirings/agent/agent-stream.js +1029 -0
  138. package/dist/wirings/agent/agent-turn.d.ts +57 -0
  139. package/dist/wirings/agent/agent-turn.js +82 -0
  140. package/dist/wirings/agent/agent-utils.d.ts +1 -0
  141. package/dist/wirings/agent/agent-utils.js +1 -0
  142. package/dist/wirings/agent/agent.types.d.ts +625 -0
  143. package/dist/wirings/agent/agent.types.js +1 -0
  144. package/dist/wirings/agent/index.d.ts +12 -0
  145. package/dist/wirings/agent/index.js +10 -0
  146. package/dist/wirings/agent/voice-input.d.ts +69 -0
  147. package/dist/wirings/agent/voice-input.js +150 -0
  148. package/dist/wirings/agent/voice-output.d.ts +85 -0
  149. package/dist/wirings/agent/voice-output.js +196 -0
  150. package/dist/wirings/agent-scorer/agent-scorer-grade.d.ts +26 -0
  151. package/dist/wirings/agent-scorer/agent-scorer-grade.js +33 -0
  152. package/dist/wirings/agent-scorer/agent-scorer-judge.d.ts +17 -0
  153. package/dist/wirings/agent-scorer/agent-scorer-judge.js +92 -0
  154. package/dist/wirings/agent-scorer/agent-scorer-live.d.ts +15 -0
  155. package/dist/wirings/agent-scorer/agent-scorer-live.js +38 -0
  156. package/dist/wirings/agent-scorer/agent-scorer-registry.d.ts +18 -0
  157. package/dist/wirings/agent-scorer/agent-scorer-registry.js +46 -0
  158. package/dist/wirings/agent-scorer/agent-scorer-sampling.d.ts +8 -0
  159. package/dist/wirings/agent-scorer/agent-scorer-sampling.js +31 -0
  160. package/dist/wirings/agent-scorer/agent-scorer-snapshots.d.ts +10 -0
  161. package/dist/wirings/agent-scorer/agent-scorer-snapshots.js +40 -0
  162. package/dist/wirings/agent-scorer/agent-scorer-worker.d.ts +15 -0
  163. package/dist/wirings/agent-scorer/agent-scorer-worker.js +60 -0
  164. package/dist/wirings/agent-scorer/agent-scorer.d.ts +39 -0
  165. package/dist/wirings/agent-scorer/agent-scorer.js +40 -0
  166. package/dist/wirings/agent-scorer/agent-scorer.types.d.ts +90 -0
  167. package/dist/wirings/agent-scorer/agent-scorer.types.js +4 -0
  168. package/dist/wirings/agent-scorer/index.d.ts +6 -0
  169. package/dist/wirings/agent-scorer/index.js +5 -0
  170. package/dist/wirings/ai-agent/voice-output.d.ts +1 -2
  171. package/dist/wirings/channel/channel-rpc.types.d.ts +2 -2
  172. package/dist/wirings/rpc/rpc-runner.d.ts +1 -1
  173. package/dist/wirings/rpc/rpc-runner.js +2 -2
  174. package/dist/wirings/rpc/rpc-types.d.ts +1 -1
  175. package/dist/wirings/virtual-user/prepare-virtual-user-run.js +1 -1
  176. package/dist/wirings/virtual-user/virtual-user-agents.d.ts +1 -1
  177. package/dist/wirings/workflow/run-timeline.d.ts +1 -2
  178. 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
  179. package/knowledge/decisions/internals/a-resumed-agent-turn-is-as-interruptible-as-the-first.md +1 -1
  180. package/knowledge/decisions/internals/actor-flow-drives-the-target-through-a-transport-seam.md +1 -1
  181. 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
  182. 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
  183. package/knowledge/decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md +1 -1
  184. package/knowledge/decisions/internals/{ai-agent-credential-suspensions-hide-the-tool-result.md → agent-credential-suspensions-hide-the-tool-result.md} +2 -2
  185. package/knowledge/decisions/internals/{ai-agent-delegate-and-supervise-hide-different-text.md → agent-delegate-and-supervise-hide-different-text.md} +4 -4
  186. package/knowledge/decisions/internals/{ai-agent-llm-tool-arguments-have-nulls-stripped.md → agent-llm-tool-arguments-have-nulls-stripped.md} +3 -3
  187. 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
  188. package/knowledge/decisions/internals/{ai-agent-onerror-hooks-cannot-change-the-failure.md → agent-onerror-hooks-cannot-change-the-failure.md} +6 -6
  189. package/knowledge/decisions/internals/{ai-agent-runner-methods-must-keep-their-receiver.md → agent-runner-methods-must-keep-their-receiver.md} +4 -4
  190. package/knowledge/decisions/internals/agent-speech-travels-as-a-custom-agui-event.md +1 -1
  191. package/knowledge/decisions/internals/{ai-agent-stream-persistence-is-best-effort.md → agent-stream-persistence-is-best-effort.md} +4 -4
  192. 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
  193. package/knowledge/decisions/internals/{ai-agent-tool-execute-failures-are-logged-unconditionally.md → agent-tool-execute-failures-are-logged-unconditionally.md} +3 -3
  194. 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
  195. 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
  196. package/knowledge/decisions/internals/an-agent-interrupt-is-not-a-failure.md +2 -2
  197. package/knowledge/decisions/internals/an-agent-run-owned-by-another-instance-says-so.md +3 -3
  198. package/knowledge/decisions/internals/an-agent-stream-send-must-return-the-inner-sends-promise.md +2 -2
  199. package/knowledge/decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md +1 -1
  200. package/knowledge/decisions/internals/an-empty-transcript-is-not-recorded.md +1 -1
  201. package/knowledge/decisions/internals/speech-synthesis-picks-a-voice-per-sentence-and-warns-once.md +1 -1
  202. package/knowledge/decisions/internals/the-agent-done-event-goes-through-the-middleware-and-is-awaited.md +1 -1
  203. package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +1 -1
  204. package/knowledge/decisions/internals/the-per-invocation-rpc-view-is-a-class.md +5 -5
  205. package/knowledge/decisions/internals/the-transcript-event-is-sent-ahead-of-the-run.md +2 -2
  206. package/knowledge/decisions/internals/thread-history-records-the-transcript-not-the-audio.md +2 -2
  207. package/knowledge/decisions/internals/voice-output-speaks-unless-voice-input-explicitly-says-otherwise.md +1 -1
  208. package/knowledge/decisions/security/{ai-agent-approval-forwarding-requires-a-symbol-brand.md → agent-approval-forwarding-requires-a-symbol-brand.md} +3 -3
  209. package/knowledge/decisions/security/{ai-agent-credential-requests-are-symbol-branded.md → agent-credential-requests-are-symbol-branded.md} +4 -4
  210. 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} +3 -3
  211. package/knowledge/decisions/security/{ai-agent-ownership-failures-never-echo-the-resource.md → agent-ownership-failures-never-echo-the-resource.md} +2 -2
  212. package/knowledge/decisions/security/{ai-agent-resume-re-runs-the-authorization-gate.md → agent-resume-re-runs-the-authorization-gate.md} +4 -4
  213. package/knowledge/decisions/security/{ai-agent-sessionless-deployments-have-no-thread-ownership.md → agent-sessionless-deployments-have-no-thread-ownership.md} +5 -5
  214. package/knowledge/decisions/security/{ai-agent-thread-ownership-composes-the-session-principal.md → agent-thread-ownership-composes-the-session-principal.md} +2 -2
  215. 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
  216. package/knowledge/decisions/security/an-agent-approval-is-claimed-before-the-tool-runs.md +3 -3
  217. package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +3 -3
  218. package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +20 -13
  219. package/knowledge/decisions/security/index.md +1 -2
  220. package/package.json +4 -3
  221. package/scripts/generate-api-report.mts +32 -8
  222. package/src/agent-naming.test.ts +68 -0
  223. package/src/ecosystem/agent-scorer.ts +24 -0
  224. package/src/ecosystem/agent.ts +42 -0
  225. package/src/ecosystem/channel/local.ts +1 -0
  226. package/src/ecosystem/channel.ts +22 -0
  227. package/src/ecosystem/cli/channel.ts +25 -0
  228. package/src/ecosystem/cli.ts +21 -0
  229. package/src/ecosystem/credential.ts +10 -0
  230. package/src/ecosystem/dev.ts +12 -0
  231. package/src/ecosystem/function.ts +28 -0
  232. package/src/ecosystem/gateway.ts +4 -0
  233. package/src/ecosystem/hmac.ts +1 -0
  234. package/src/ecosystem/http.ts +22 -0
  235. package/src/ecosystem/mcp.ts +17 -0
  236. package/src/ecosystem/middleware.ts +27 -0
  237. package/src/ecosystem/node-host-resolver.ts +1 -0
  238. package/src/ecosystem/node.ts +5 -0
  239. package/src/ecosystem/oauth2.ts +4 -0
  240. package/src/ecosystem/persona.ts +30 -0
  241. package/src/ecosystem/queue.ts +23 -0
  242. package/src/ecosystem/remote.ts +9 -0
  243. package/src/ecosystem/role.ts +13 -0
  244. package/src/ecosystem/rpc.ts +7 -0
  245. package/src/ecosystem/safe-fetch.ts +8 -0
  246. package/src/ecosystem/scenario.ts +32 -0
  247. package/src/ecosystem/scheduler.ts +5 -0
  248. package/src/ecosystem/schema.ts +1 -0
  249. package/src/ecosystem/scope.ts +14 -0
  250. package/src/ecosystem/secret.ts +15 -0
  251. package/src/ecosystem/services/istanbul-coverage.ts +1 -0
  252. package/src/ecosystem/services/local-content-request-handler.ts +16 -0
  253. package/src/ecosystem/services/local-content.ts +1 -0
  254. package/src/ecosystem/services/v8-coverage.ts +1 -0
  255. package/src/ecosystem/services.ts +82 -0
  256. package/src/ecosystem/testing.ts +8 -0
  257. package/src/ecosystem/trigger.ts +7 -0
  258. package/src/ecosystem/types.ts +34 -0
  259. package/src/ecosystem/variable.ts +14 -0
  260. package/src/ecosystem/virtual-user.ts +48 -0
  261. package/src/ecosystem/workflow.ts +68 -0
  262. package/src/index.ts +8 -19
  263. package/src/pikku-state.ts +3 -3
  264. package/src/public-surface.json +173 -68
  265. package/src/public-surface.json.README +20 -2
  266. package/src/public-surface.test.ts +31 -3
  267. package/src/services/{ai-run-state-service.ts → agent-run-state-service.ts} +5 -5
  268. package/src/services/{ai-agent-runner-service.ts → agent-runner-service.ts} +18 -18
  269. package/src/services/{ai-storage-service.ts → agent-storage-service.ts} +7 -7
  270. package/src/services/http-personas-converse.test.ts +3 -3
  271. package/src/services/http-personas.ts +4 -4
  272. package/src/services/{in-memory-ai-run-state-service.ts → in-memory-agent-run-state-service.ts} +7 -7
  273. package/src/services/index.ts +9 -9
  274. package/src/services/meta-service.ts +3 -3
  275. package/src/testing/service-tests/agent-run-service-tests.ts +4 -4
  276. package/src/testing/service-tests/{ai-storage-service-tests.ts → agent-storage-service-tests.ts} +8 -8
  277. package/src/testing/service-tests.ts +10 -8
  278. package/src/types/core.types.ts +12 -12
  279. package/src/types/state.types.ts +6 -9
  280. package/src/wirings/actor-flow/run-conversation.test.ts +2 -2
  281. package/src/wirings/actor-flow/run-conversation.ts +7 -9
  282. package/src/wirings/{ai-agent/ai-agent-agui.test.ts → agent/agent-agui.test.ts} +126 -105
  283. package/src/wirings/{ai-agent/ai-agent-agui.ts → agent/agent-agui.ts} +7 -7
  284. package/src/wirings/{ai-agent/ai-agent-authorization.test.ts → agent/agent-authorization.test.ts} +6 -6
  285. package/src/wirings/{ai-agent/ai-agent-finalize.test.ts → agent/agent-finalize.test.ts} +17 -16
  286. package/src/wirings/{ai-agent/ai-agent-finalize.ts → agent/agent-finalize.ts} +22 -22
  287. package/src/wirings/{ai-agent/ai-agent-helpers.test.ts → agent/agent-helpers.test.ts} +1 -1
  288. package/src/wirings/{ai-agent/ai-agent-helpers.ts → agent/agent-helpers.ts} +1 -1
  289. package/src/wirings/{ai-agent/ai-agent-interrupt.test.ts → agent/agent-interrupt.test.ts} +67 -77
  290. package/src/wirings/{ai-agent/ai-agent-interrupt.ts → agent/agent-interrupt.ts} +5 -5
  291. package/src/wirings/{ai-agent/ai-agent-memory.test.ts → agent/agent-memory.test.ts} +12 -12
  292. package/src/wirings/{ai-agent/ai-agent-memory.ts → agent/agent-memory.ts} +36 -36
  293. package/src/wirings/{ai-agent/ai-agent-model-config.test.ts → agent/agent-model-config.test.ts} +2 -5
  294. package/src/wirings/{ai-agent/ai-agent-model-config.ts → agent/agent-model-config.ts} +1 -1
  295. package/src/wirings/{ai-agent/ai-agent-prepare.test.ts → agent/agent-prepare.test.ts} +18 -18
  296. package/src/wirings/{ai-agent/ai-agent-prepare.ts → agent/agent-prepare.ts} +52 -51
  297. package/src/wirings/{ai-agent/ai-agent-registry.test.ts → agent/agent-registry.test.ts} +49 -43
  298. package/src/wirings/{ai-agent/ai-agent-registry.ts → agent/agent-registry.ts} +14 -14
  299. package/src/wirings/{ai-agent/ai-agent-resume-authorization.test.ts → agent/agent-resume-authorization.test.ts} +18 -18
  300. package/src/wirings/{ai-agent → agent}/agent-rpc.ts +16 -20
  301. package/src/wirings/{ai-agent/ai-agent-runner.test.ts → agent/agent-runner.test.ts} +105 -106
  302. package/src/wirings/{ai-agent/ai-agent-runner.ts → agent/agent-runner.ts} +90 -80
  303. package/src/wirings/{ai-agent/ai-agent-stream-output-hooks.test.ts → agent/agent-stream-output-hooks.test.ts} +25 -25
  304. package/src/wirings/{ai-agent/ai-agent-stream.test.ts → agent/agent-stream.test.ts} +147 -143
  305. package/src/wirings/{ai-agent/ai-agent-stream.ts → agent/agent-stream.ts} +147 -146
  306. package/src/wirings/{ai-agent/ai-agent-thread-ownership.test.ts → agent/agent-thread-ownership.test.ts} +24 -28
  307. package/src/wirings/{ai-agent/ai-agent-turn.test.ts → agent/agent-turn.test.ts} +3 -5
  308. package/src/wirings/{ai-agent/ai-agent-turn.ts → agent/agent-turn.ts} +7 -7
  309. package/src/wirings/{ai-agent/ai-agent.types.ts → agent/agent.types.ts} +51 -48
  310. package/src/wirings/agent/index.ts +56 -0
  311. package/src/wirings/{ai-agent → agent}/voice-input.test.ts +15 -15
  312. package/src/wirings/{ai-agent → agent}/voice-input.ts +11 -11
  313. package/src/wirings/{ai-agent → agent}/voice-output.test.ts +23 -23
  314. package/src/wirings/{ai-agent → agent}/voice-output.ts +11 -11
  315. package/src/wirings/{ai-scorer/ai-scorer-grade.test.ts → agent-scorer/agent-scorer-grade.test.ts} +8 -8
  316. package/src/wirings/{ai-scorer/ai-scorer-grade.ts → agent-scorer/agent-scorer-grade.ts} +9 -9
  317. package/src/wirings/{ai-scorer/ai-scorer-judge.test.ts → agent-scorer/agent-scorer-judge.test.ts} +11 -14
  318. package/src/wirings/{ai-scorer/ai-scorer-judge.ts → agent-scorer/agent-scorer-judge.ts} +11 -11
  319. package/src/wirings/{ai-scorer/ai-scorer-live.test.ts → agent-scorer/agent-scorer-live.test.ts} +11 -11
  320. package/src/wirings/{ai-scorer/ai-scorer-live.ts → agent-scorer/agent-scorer-live.ts} +3 -3
  321. package/src/wirings/{ai-scorer/ai-scorer-registry.ts → agent-scorer/agent-scorer-registry.ts} +11 -8
  322. package/src/wirings/{ai-scorer/ai-scorer-sampling.test.ts → agent-scorer/agent-scorer-sampling.test.ts} +1 -1
  323. package/src/wirings/{ai-scorer/ai-scorer-snapshots.test.ts → agent-scorer/agent-scorer-snapshots.test.ts} +2 -2
  324. package/src/wirings/{ai-scorer/ai-scorer-snapshots.ts → agent-scorer/agent-scorer-snapshots.ts} +1 -1
  325. package/src/wirings/{ai-scorer/ai-scorer-worker.test.ts → agent-scorer/agent-scorer-worker.test.ts} +15 -15
  326. package/src/wirings/{ai-scorer/ai-scorer-worker.ts → agent-scorer/agent-scorer-worker.ts} +9 -7
  327. package/src/wirings/{ai-scorer/ai-scorer.ts → agent-scorer/agent-scorer.ts} +7 -7
  328. package/src/wirings/{ai-scorer/ai-scorer.types.ts → agent-scorer/agent-scorer.types.ts} +6 -6
  329. package/src/wirings/agent-scorer/index.ts +22 -0
  330. package/src/wirings/channel/channel-rpc.types.ts +2 -2
  331. package/src/wirings/rpc/rpc-runner.ts +2 -2
  332. package/src/wirings/rpc/rpc-types.ts +1 -1
  333. package/src/wirings/virtual-user/prepare-virtual-user-run.ts +1 -1
  334. package/src/wirings/virtual-user/run-virtual-user.test.ts +2 -2
  335. package/src/wirings/virtual-user/run-virtual-user.ts +3 -3
  336. package/src/wirings/virtual-user/virtual-user-agents.ts +1 -1
  337. package/src/wirings/workflow/run-timeline.ts +1 -1
  338. package/src/wirings-stay-decoupled.test.ts +3 -3
  339. package/tsconfig.tsbuildinfo +1 -1
  340. package/src/wirings/ai-agent/index.ts +0 -65
  341. package/src/wirings/ai-scorer/index.ts +0 -24
  342. /package/src/wirings/{ai-agent/ai-agent-utils.ts → agent/agent-utils.ts} +0 -0
  343. /package/src/wirings/{ai-scorer/ai-scorer-sampling.ts → agent-scorer/agent-scorer-sampling.ts} +0 -0
@@ -7,14 +7,14 @@ import {
7
7
  setSingletonServices,
8
8
  } from '../../pikku-state.js'
9
9
  import {
10
- addAIAgent,
11
- approveAIAgent,
12
- getAIAgents,
13
- getAIAgentsMeta,
14
- } from './ai-agent-registry.js'
10
+ addAgent,
11
+ approveAgent,
12
+ getAgents,
13
+ getAgentsMeta,
14
+ } from './agent-registry.js'
15
15
  import { clearPermissionsCache } from '../../permissions.js'
16
16
  import { ForbiddenError, MissingScopeError } from '../../errors/errors.js'
17
- import type { CoreAIAgent } from './ai-agent.types.js'
17
+ import type { CoreAgent } from './agent.types.js'
18
18
  import type { CoreUserSession } from '../../types/core.types.js'
19
19
 
20
20
  const logger = {
@@ -26,7 +26,7 @@ const logger = {
26
26
 
27
27
  const registerAgent = (
28
28
  agentName: string,
29
- overrides: Partial<CoreAIAgent> = {}
29
+ overrides: Partial<CoreAgent> = {}
30
30
  ) => {
31
31
  const agent = {
32
32
  name: agentName,
@@ -34,7 +34,7 @@ const registerAgent = (
34
34
  goal: `${agentName} goal`,
35
35
  model: 'test/test-model',
36
36
  ...overrides,
37
- } as CoreAIAgent
37
+ } as CoreAgent
38
38
  pikkuState(null, 'agent', 'agents').set(agentName, agent)
39
39
  pikkuState(null, 'agent', 'agentsMeta')[agentName] = { ...agent } as any
40
40
  return agent
@@ -53,7 +53,7 @@ beforeEach(() => {
53
53
  setSingletonServices({ logger } as any)
54
54
  })
55
55
 
56
- describe('addAIAgent', () => {
56
+ describe('addAgent', () => {
57
57
  test('skips registration when metadata is missing and warns', () => {
58
58
  const warnings: string[] = []
59
59
  const originalWarn = console.warn
@@ -62,7 +62,7 @@ describe('addAIAgent', () => {
62
62
  }
63
63
 
64
64
  try {
65
- addAIAgent('missing-agent', {
65
+ addAgent('missing-agent', {
66
66
  name: 'missing-agent',
67
67
  description: 'desc',
68
68
  goal: 'goal',
@@ -73,7 +73,7 @@ describe('addAIAgent', () => {
73
73
  console.warn = originalWarn
74
74
  }
75
75
 
76
- assert.equal(getAIAgents().has('missing-agent'), false)
76
+ assert.equal(getAgents().has('missing-agent'), false)
77
77
  assert.match(warnings[0], /Skipping AI agent 'missing-agent'/)
78
78
  })
79
79
 
@@ -84,7 +84,7 @@ describe('addAIAgent', () => {
84
84
  goal: 'goal',
85
85
  } as any
86
86
 
87
- addAIAgent('assistant', {
87
+ addAgent('assistant', {
88
88
  name: 'assistant',
89
89
  description: 'desc',
90
90
  goal: 'goal',
@@ -92,10 +92,10 @@ describe('addAIAgent', () => {
92
92
  model: 'model',
93
93
  } as any)
94
94
 
95
- assert.equal(getAIAgents().get('assistant')?.name, 'assistant')
95
+ assert.equal(getAgents().get('assistant')?.name, 'assistant')
96
96
  assert.throws(
97
97
  () =>
98
- addAIAgent('assistant', {
98
+ addAgent('assistant', {
99
99
  name: 'assistant',
100
100
  description: 'desc',
101
101
  goal: 'goal',
@@ -109,7 +109,7 @@ describe('addAIAgent', () => {
109
109
  })
110
110
  })
111
111
 
112
- describe('approveAIAgent', () => {
112
+ describe('approveAgent', () => {
113
113
  const ownerParams = {
114
114
  sessionService: sessionService({ userId: 'resource-1' } as CoreUserSession),
115
115
  } as any
@@ -117,13 +117,13 @@ describe('approveAIAgent', () => {
117
117
  test('throws when run state service is missing, run is missing, or run is not suspended', async () => {
118
118
  registerAgent('agent')
119
119
 
120
- await assert.rejects(() => approveAIAgent(null as any, 'run-1', []), {
121
- message: 'AIRunStateService not available',
120
+ await assert.rejects(() => approveAgent(null as any, 'run-1', []), {
121
+ message: 'AgentRunStateService not available',
122
122
  })
123
123
 
124
124
  await assert.rejects(
125
125
  () =>
126
- approveAIAgent(
126
+ approveAgent(
127
127
  {
128
128
  getRun: async () => null,
129
129
  updateRun: async () => {},
@@ -140,7 +140,7 @@ describe('approveAIAgent', () => {
140
140
 
141
141
  await assert.rejects(
142
142
  () =>
143
- approveAIAgent(
143
+ approveAgent(
144
144
  {
145
145
  getRun: async () => ({
146
146
  runId: 'run-1',
@@ -171,7 +171,7 @@ describe('approveAIAgent', () => {
171
171
 
172
172
  test('rejects approval when run agent does not match expected agent', async () => {
173
173
  registerAgent('internal-agent')
174
- const aiRunState = {
174
+ const agentRunState = {
175
175
  getRun: async () => ({
176
176
  runId: 'run-1',
177
177
  agentName: 'internal-agent',
@@ -188,8 +188,8 @@ describe('approveAIAgent', () => {
188
188
 
189
189
  await assert.rejects(
190
190
  () =>
191
- approveAIAgent(
192
- aiRunState,
191
+ approveAgent(
192
+ agentRunState,
193
193
  'run-1',
194
194
  [{ toolCallId: 'call-1', approved: true }],
195
195
  'public-agent',
@@ -205,7 +205,7 @@ describe('approveAIAgent', () => {
205
205
  test('marks run resumed when at least one approval is granted', async () => {
206
206
  registerAgent('assistant')
207
207
  const updates: any[] = []
208
- const result = await approveAIAgent(
208
+ const result = await approveAgent(
209
209
  {
210
210
  getRun: async () => ({
211
211
  runId: 'run-2',
@@ -264,7 +264,7 @@ describe('approveAIAgent', () => {
264
264
  test('keeps run suspended when nothing is approved', async () => {
265
265
  registerAgent('assistant')
266
266
  const updates: any[] = []
267
- const result = await approveAIAgent(
267
+ const result = await approveAgent(
268
268
  {
269
269
  getRun: async () => ({
270
270
  runId: 'run-3',
@@ -310,7 +310,7 @@ describe('approveAIAgent', () => {
310
310
  })
311
311
  })
312
312
 
313
- describe('approveAIAgent authorization', () => {
313
+ describe('approveAgent authorization', () => {
314
314
  const suspendedRun = (agentName: string, resourceId: string) => ({
315
315
  runId: 'run-auth',
316
316
  agentName,
@@ -329,7 +329,7 @@ describe('approveAIAgent authorization', () => {
329
329
  const updates: any[] = []
330
330
  return {
331
331
  updates,
332
- aiRunState: {
332
+ agentRunState: {
333
333
  getRun: async () => suspendedRun(agentName, resourceId),
334
334
  updateRun: async (_runId: string, patch: any) => {
335
335
  updates.push(patch)
@@ -340,12 +340,15 @@ describe('approveAIAgent authorization', () => {
340
340
 
341
341
  test('rejects when the run belongs to another session principal', async () => {
342
342
  registerAgent('owned-agent')
343
- const { updates, aiRunState } = runStateFor('owned-agent', 'user-a:default')
343
+ const { updates, agentRunState } = runStateFor(
344
+ 'owned-agent',
345
+ 'user-a:default'
346
+ )
344
347
 
345
348
  await assert.rejects(
346
349
  () =>
347
- approveAIAgent(
348
- aiRunState,
350
+ approveAgent(
351
+ agentRunState,
349
352
  'run-auth',
350
353
  [{ toolCallId: 'call-1', approved: true }],
351
354
  undefined,
@@ -359,13 +362,13 @@ describe('approveAIAgent authorization', () => {
359
362
  test('rejects when the agent permissions deny', async () => {
360
363
  registerAgent('denied-agent', {
361
364
  permissions: { denied: async () => false },
362
- } as Partial<CoreAIAgent>)
363
- const { updates, aiRunState } = runStateFor('denied-agent', 'u1')
365
+ } as Partial<CoreAgent>)
366
+ const { updates, agentRunState } = runStateFor('denied-agent', 'u1')
364
367
 
365
368
  await assert.rejects(
366
369
  () =>
367
- approveAIAgent(
368
- aiRunState,
370
+ approveAgent(
371
+ agentRunState,
369
372
  'run-auth',
370
373
  [{ toolCallId: 'call-1', approved: true }],
371
374
  undefined,
@@ -378,12 +381,12 @@ describe('approveAIAgent authorization', () => {
378
381
 
379
382
  test('rejects when a required scope is no longer held', async () => {
380
383
  registerAgent('scoped-agent', { scopes: ['admin:refund'] })
381
- const { updates, aiRunState } = runStateFor('scoped-agent', 'u1')
384
+ const { updates, agentRunState } = runStateFor('scoped-agent', 'u1')
382
385
 
383
386
  await assert.rejects(
384
387
  () =>
385
- approveAIAgent(
386
- aiRunState,
388
+ approveAgent(
389
+ agentRunState,
387
390
  'run-auth',
388
391
  [{ toolCallId: 'call-1', approved: true }],
389
392
  undefined,
@@ -401,11 +404,11 @@ describe('approveAIAgent authorization', () => {
401
404
 
402
405
  test('rejects when auth is required and the session is gone', async () => {
403
406
  registerAgent('auth-agent', { auth: true })
404
- const { updates, aiRunState } = runStateFor('auth-agent', 'resource-1')
407
+ const { updates, agentRunState } = runStateFor('auth-agent', 'resource-1')
405
408
 
406
409
  await assert.rejects(
407
410
  () =>
408
- approveAIAgent(aiRunState, 'run-auth', [
411
+ approveAgent(agentRunState, 'run-auth', [
409
412
  { toolCallId: 'call-1', approved: true },
410
413
  ]),
411
414
  ForbiddenError
@@ -415,10 +418,13 @@ describe('approveAIAgent authorization', () => {
415
418
 
416
419
  test('allows the owning session through the gate', async () => {
417
420
  registerAgent('owned-agent', { scopes: ['admin:refund'] })
418
- const { updates, aiRunState } = runStateFor('owned-agent', 'user-a:default')
421
+ const { updates, agentRunState } = runStateFor(
422
+ 'owned-agent',
423
+ 'user-a:default'
424
+ )
419
425
 
420
- const result = await approveAIAgent(
421
- aiRunState,
426
+ const result = await approveAgent(
427
+ agentRunState,
422
428
  'run-auth',
423
429
  [{ toolCallId: 'call-1', approved: true }],
424
430
  undefined,
@@ -437,9 +443,9 @@ describe('approveAIAgent authorization', () => {
437
443
  })
438
444
  })
439
445
 
440
- describe('getAIAgentsMeta', () => {
446
+ describe('getAgentsMeta', () => {
441
447
  test('returns the shared metadata registry', () => {
442
- const meta = getAIAgentsMeta()
448
+ const meta = getAgentsMeta()
443
449
  meta.assistant = { name: 'assistant' } as any
444
450
  assert.equal(
445
451
  pikkuState(null, 'agent', 'agentsMeta').assistant.name,
@@ -1,17 +1,17 @@
1
- import type { CoreAIAgent, AgentRunState } from './ai-agent.types.js'
1
+ import type { CoreAgent, AgentRunState } from './agent.types.js'
2
2
  import { pikkuState } from '../../pikku-state.js'
3
- import type { AIRunStateService } from '../../services/ai-run-state-service.js'
3
+ import type { AgentRunStateService } from '../../services/agent-run-state-service.js'
4
4
  import {
5
5
  agentSessionScope,
6
6
  assertAgentAuthorized,
7
7
  assertResourcePrincipalOwner,
8
8
  resolveAgent,
9
- type RunAIAgentParams,
10
- } from './ai-agent-prepare.js'
9
+ type RunAgentParams,
10
+ } from './agent-prepare.js'
11
11
 
12
- export const addAIAgent = (
12
+ export const addAgent = (
13
13
  agentName: string,
14
- agent: CoreAIAgent<any, any>,
14
+ agent: CoreAgent<any, any>,
15
15
  packageName: string | null = null
16
16
  ) => {
17
17
  const agentsMeta = pikkuState(packageName, 'agent', 'agentsMeta')
@@ -29,12 +29,12 @@ export const addAIAgent = (
29
29
  agents.set(agentName, agent)
30
30
  }
31
31
 
32
- export async function approveAIAgent(
33
- aiRunState: AIRunStateService,
32
+ export async function approveAgent(
33
+ agentRunState: AgentRunStateService,
34
34
  runId: string,
35
35
  approvals: { toolCallId: string; approved: boolean }[],
36
36
  expectedAgentName?: string,
37
- params: RunAIAgentParams = {}
37
+ params: RunAgentParams = {}
38
38
  ): Promise<{
39
39
  status: 'resumed' | 'suspended'
40
40
  runId: string
@@ -42,9 +42,9 @@ export async function approveAIAgent(
42
42
  rejected: string[]
43
43
  remainingApprovals: number
44
44
  }> {
45
- if (!aiRunState) throw new Error('AIRunStateService not available')
45
+ if (!agentRunState) throw new Error('AgentRunStateService not available')
46
46
 
47
- const run = await aiRunState.getRun(runId)
47
+ const run = await agentRunState.getRun(runId)
48
48
  if (!run) throw new Error('Run not found: ' + runId)
49
49
  assertResourcePrincipalOwner(
50
50
  params,
@@ -76,7 +76,7 @@ export async function approveAIAgent(
76
76
  )
77
77
 
78
78
  const hasApproved = approvedIds.size > 0
79
- await aiRunState.updateRun(runId, {
79
+ await agentRunState.updateRun(runId, {
80
80
  status: hasApproved ? 'running' : 'suspended',
81
81
  pendingApprovals: remaining.length > 0 ? remaining : undefined,
82
82
  })
@@ -90,10 +90,10 @@ export async function approveAIAgent(
90
90
  }
91
91
  }
92
92
 
93
- export const getAIAgents = () => {
93
+ export const getAgents = () => {
94
94
  return pikkuState(null, 'agent', 'agents')
95
95
  }
96
96
 
97
- export const getAIAgentsMeta = () => {
97
+ export const getAgentsMeta = () => {
98
98
  return pikkuState(null, 'agent', 'agentsMeta')
99
99
  }
@@ -6,11 +6,11 @@ import {
6
6
  pikkuState,
7
7
  setSingletonServices,
8
8
  } from '../../pikku-state.js'
9
- import { resumeAIAgentSync } from './ai-agent-runner.js'
10
- import { resumeAIAgent } from './ai-agent-stream.js'
9
+ import { resumeAgentSync } from './agent-runner.js'
10
+ import { resumeAgent } from './agent-stream.js'
11
11
  import { clearPermissionsCache } from '../../permissions.js'
12
12
  import { ForbiddenError, MissingScopeError } from '../../errors/errors.js'
13
- import type { CoreAIAgent } from './ai-agent.types.js'
13
+ import type { CoreAgent } from './agent.types.js'
14
14
  import type { CoreUserSession } from '../../types/core.types.js'
15
15
 
16
16
  const logger = {
@@ -39,7 +39,7 @@ const setup = (agentName: string, resourceId = 'u1') => {
39
39
  const resolved: string[] = []
40
40
  setSingletonServices({
41
41
  logger,
42
- aiRunState: {
42
+ agentRunState: {
43
43
  getRun: async () => suspendedRun(agentName, resourceId),
44
44
  resolveApproval: async (toolCallId: string) => {
45
45
  resolved.push(toolCallId)
@@ -52,15 +52,15 @@ const setup = (agentName: string, resourceId = 'u1') => {
52
52
 
53
53
  const addAgent = (
54
54
  agentName: string,
55
- overrides: Partial<CoreAIAgent> = {}
56
- ): CoreAIAgent => {
57
- const agent: CoreAIAgent = {
55
+ overrides: Partial<CoreAgent> = {}
56
+ ): CoreAgent => {
57
+ const agent: CoreAgent = {
58
58
  name: agentName,
59
59
  description: `${agentName} description`,
60
60
  goal: `${agentName} goal`,
61
61
  model: 'test/test-model',
62
62
  ...overrides,
63
- } as CoreAIAgent
63
+ } as CoreAgent
64
64
 
65
65
  pikkuState(null, 'agent', 'agents').set(agentName, agent)
66
66
  return agent
@@ -78,16 +78,16 @@ beforeEach(() => {
78
78
  clearPermissionsCache()
79
79
  })
80
80
 
81
- describe('resumeAIAgentSync authorization', () => {
81
+ describe('resumeAgentSync authorization', () => {
82
82
  test('rejects when the agent permissions deny', async () => {
83
83
  const resolved = setup('denied-agent')
84
84
  addAgent('denied-agent', {
85
85
  permissions: { denied: async () => false },
86
- } as Partial<CoreAIAgent>)
86
+ } as Partial<CoreAgent>)
87
87
 
88
88
  await assert.rejects(
89
89
  () =>
90
- resumeAIAgentSync(
90
+ resumeAgentSync(
91
91
  RUN_ID,
92
92
  [{ toolCallId: TOOL_CALL_ID, approved: true }],
93
93
  { sessionService: sessionService({ userId: 'u1' }) } as any
@@ -107,7 +107,7 @@ describe('resumeAIAgentSync authorization', () => {
107
107
 
108
108
  await assert.rejects(
109
109
  () =>
110
- resumeAIAgentSync(
110
+ resumeAgentSync(
111
111
  RUN_ID,
112
112
  [{ toolCallId: TOOL_CALL_ID, approved: true }],
113
113
  {
@@ -128,7 +128,7 @@ describe('resumeAIAgentSync authorization', () => {
128
128
 
129
129
  await assert.rejects(
130
130
  () =>
131
- resumeAIAgentSync(
131
+ resumeAgentSync(
132
132
  RUN_ID,
133
133
  [{ toolCallId: TOOL_CALL_ID, approved: true }],
134
134
  {
@@ -150,7 +150,7 @@ describe('resumeAIAgentSync authorization', () => {
150
150
 
151
151
  await assert.rejects(
152
152
  () =>
153
- resumeAIAgentSync(
153
+ resumeAgentSync(
154
154
  RUN_ID,
155
155
  [{ toolCallId: TOOL_CALL_ID, approved: true }],
156
156
  { sessionService: sessionService(undefined) } as any
@@ -160,7 +160,7 @@ describe('resumeAIAgentSync authorization', () => {
160
160
  })
161
161
  })
162
162
 
163
- describe('resumeAIAgent (streaming) authorization', () => {
163
+ describe('resumeAgent (streaming) authorization', () => {
164
164
  const channel = {
165
165
  send: async () => {},
166
166
  close: async () => {},
@@ -170,11 +170,11 @@ describe('resumeAIAgent (streaming) authorization', () => {
170
170
  const resolved = setup('stream-denied')
171
171
  addAgent('stream-denied', {
172
172
  permissions: { denied: async () => false },
173
- } as Partial<CoreAIAgent>)
173
+ } as Partial<CoreAgent>)
174
174
 
175
175
  await assert.rejects(
176
176
  () =>
177
- resumeAIAgent(
177
+ resumeAgent(
178
178
  { runId: RUN_ID, toolCallId: TOOL_CALL_ID, approved: true },
179
179
  channel,
180
180
  { sessionService: sessionService({ userId: 'u1' }) } as any
@@ -190,7 +190,7 @@ describe('resumeAIAgent (streaming) authorization', () => {
190
190
 
191
191
  await assert.rejects(
192
192
  () =>
193
- resumeAIAgent(
193
+ resumeAgent(
194
194
  { runId: RUN_ID, toolCallId: TOOL_CALL_ID, approved: true },
195
195
  channel,
196
196
  {
@@ -2,15 +2,11 @@ import type { PikkuRawWire } from '../../types/core.types.js'
2
2
  import type { SessionService } from '../../services/user-session-service.js'
3
3
  import type { CoreUserSession } from '../../types/core.types.js'
4
4
  import type { PikkuRPC } from '../rpc/rpc-types.js'
5
- import type { AIAgentInput, AIStreamChannel } from './ai-agent.types.js'
6
- import type { StreamAIAgentOptions } from './ai-agent-prepare.js'
7
- import { runAIAgent, resumeAIAgentSync } from './ai-agent-runner.js'
8
- import {
9
- streamAIAgent,
10
- resumeAIAgent,
11
- interruptAIAgent,
12
- } from './ai-agent-stream.js'
13
- import { wrapChannelWithAGUI } from './ai-agent-agui.js'
5
+ import type { AgentInput, AgentStreamChannel } from './agent.types.js'
6
+ import type { StreamAgentOptions } from './agent-prepare.js'
7
+ import { runAgent, resumeAgentSync } from './agent-runner.js'
8
+ import { streamAgent, resumeAgent, interruptAgent } from './agent-stream.js'
9
+ import { wrapChannelWithAGUI } from './agent-agui.js'
14
10
 
15
11
  export type AgentRPCOptions = {
16
12
  sessionService?: SessionService<CoreUserSession>
@@ -32,14 +28,14 @@ export const createAgentRPC = (
32
28
  getCredential: wire.getCredential?.bind(wire),
33
29
  })
34
30
 
35
- const streamingChannel = (): AIStreamChannel => {
36
- const channel = wire.channel as unknown as AIStreamChannel | undefined
31
+ const streamingChannel = (): AgentStreamChannel => {
32
+ const channel = wire.channel as unknown as AgentStreamChannel | undefined
37
33
  if (!channel) throw new Error('No channel available for streaming')
38
34
  return channel
39
35
  }
40
36
 
41
37
  /** `run` and `approve` return the same shape; only the call differs. */
42
- const asRunResult = (result: Awaited<ReturnType<typeof runAIAgent>>) => ({
38
+ const asRunResult = (result: Awaited<ReturnType<typeof runAgent>>) => ({
43
39
  runId: result.runId,
44
40
  result: result.object ?? result.text,
45
41
  usage: result.usage,
@@ -50,8 +46,8 @@ export const createAgentRPC = (
50
46
  })
51
47
 
52
48
  return {
53
- run: async (agentName: string, input: AIAgentInput) =>
54
- asRunResult(await runAIAgent(agentName, input, params())),
49
+ run: async (agentName: string, input: AgentInput) =>
50
+ asRunResult(await runAgent(agentName, input, params())),
55
51
 
56
52
  stream: async (
57
53
  agentName: string,
@@ -62,10 +58,10 @@ export const createAgentRPC = (
62
58
  model?: string
63
59
  temperature?: number
64
60
  },
65
- streamOptions?: StreamAIAgentOptions
61
+ streamOptions?: StreamAgentOptions
66
62
  ) => {
67
63
  let currentRunId: string | undefined
68
- await streamAIAgent(
64
+ await streamAgent(
69
65
  agentName,
70
66
  input,
71
67
  wrapChannelWithAGUI(streamingChannel(), {
@@ -87,9 +83,9 @@ export const createAgentRPC = (
87
83
  resume: async (
88
84
  runId: string,
89
85
  input: { toolCallId: string; approved: boolean },
90
- streamOptions?: StreamAIAgentOptions
86
+ streamOptions?: StreamAgentOptions
91
87
  ) => {
92
- await resumeAIAgent(
88
+ await resumeAgent(
93
89
  { runId, ...input },
94
90
  wrapChannelWithAGUI(streamingChannel(), { runId }),
95
91
  params(),
@@ -98,7 +94,7 @@ export const createAgentRPC = (
98
94
  },
99
95
 
100
96
  interrupt: async (runId: string, reason?: 'speech' | 'user' | 'timeout') =>
101
- interruptAIAgent(
97
+ interruptAgent(
102
98
  { runId, ...(reason ? { reason } : {}) },
103
99
  { sessionService: options.sessionService }
104
100
  ),
@@ -109,7 +105,7 @@ export const createAgentRPC = (
109
105
  expectedAgentName?: string
110
106
  ) =>
111
107
  asRunResult(
112
- await resumeAIAgentSync(
108
+ await resumeAgentSync(
113
109
  runId,
114
110
  approvals,
115
111
  { sessionService: options.sessionService },