@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
@@ -2,10 +2,10 @@ import { beforeEach, describe, test } from 'node:test'
2
2
  import assert from 'node:assert/strict'
3
3
 
4
4
  import { resetPikkuState, pikkuState } from '../../pikku-state.js'
5
- import { runAIAgent, resumeAIAgentSync } from './ai-agent-runner.js'
5
+ import { runAgent, resumeAgentSync } from './agent-runner.js'
6
6
  import { ForbiddenError } from '../../errors/errors.js'
7
- import type { AIMessage, CoreAIAgent } from './ai-agent.types.js'
8
- import type { AIAgentRunnerParams } from '../../services/ai-agent-runner-service.js'
7
+ import type { AgentMessage, CoreAgent } from './agent.types.js'
8
+ import type { AgentRunnerParams } from '../../services/agent-runner-service.js'
9
9
 
10
10
  const logger = {
11
11
  debug: () => {},
@@ -18,12 +18,12 @@ const sessionService = (session?: Record<string, unknown>) =>
18
18
  ({ get: () => session, setInitial: () => {}, sessionChanged: false }) as any
19
19
 
20
20
  const addTestAgent = (agentName: string) => {
21
- const agent: CoreAIAgent = {
21
+ const agent: CoreAgent = {
22
22
  name: agentName,
23
23
  description: 'test agent',
24
24
  instructions: 'be helpful',
25
25
  model: 'test/test-model',
26
- } as CoreAIAgent
26
+ } as CoreAgent
27
27
 
28
28
  pikkuState(null, 'agent', 'agentsMeta')[agentName] = {
29
29
  ...agent,
@@ -36,9 +36,9 @@ const addTestAgent = (agentName: string) => {
36
36
 
37
37
  type Harness = {
38
38
  threads: Map<string, { id: string; resourceId: string }>
39
- messages: Map<string, AIMessage[]>
39
+ messages: Map<string, AgentMessage[]>
40
40
  created: Array<{ threadId: string; resourceId: string }>
41
- modelSawMessages: AIMessage[][]
41
+ modelSawMessages: AgentMessage[][]
42
42
  }
43
43
 
44
44
  const createHarness = (
@@ -48,7 +48,7 @@ const createHarness = (
48
48
  const threads = new Map(
49
49
  seedThreads.map((t) => [t.threadId, { id: t.threadId, ...t }])
50
50
  )
51
- const messages = new Map<string, AIMessage[]>(
51
+ const messages = new Map<string, AgentMessage[]>(
52
52
  Object.entries(seedMessages).map(([threadId, texts]) => [
53
53
  threadId,
54
54
  texts.map((text, index) => ({
@@ -60,7 +60,7 @@ const createHarness = (
60
60
  ])
61
61
  )
62
62
  const created: Harness['created'] = []
63
- const modelSawMessages: AIMessage[][] = []
63
+ const modelSawMessages: AgentMessage[][] = []
64
64
 
65
65
  const storage = {
66
66
  getThread: async (threadId: string) => {
@@ -75,7 +75,7 @@ const createHarness = (
75
75
  return thread
76
76
  },
77
77
  getMessages: async (threadId: string) => messages.get(threadId) ?? [],
78
- saveMessages: async (threadId: string, newMessages: AIMessage[]) => {
78
+ saveMessages: async (threadId: string, newMessages: AgentMessage[]) => {
79
79
  messages.set(threadId, [
80
80
  ...(messages.get(threadId) ?? []),
81
81
  ...newMessages,
@@ -87,9 +87,9 @@ const createHarness = (
87
87
 
88
88
  pikkuState(null, 'package', 'singletonServices', {
89
89
  logger,
90
- aiStorage: storage,
91
- aiAgentRunner: {
92
- run: async (params: AIAgentRunnerParams) => {
90
+ agentStorage: storage,
91
+ agentRunner: {
92
+ run: async (params: AgentRunnerParams) => {
93
93
  modelSawMessages.push(params.messages)
94
94
  return {
95
95
  text: 'ok',
@@ -100,7 +100,7 @@ const createHarness = (
100
100
  }
101
101
  },
102
102
  },
103
- aiRunState: {
103
+ agentRunState: {
104
104
  createRun: async () => 'run-1',
105
105
  updateRun: async () => {},
106
106
  getRun: async () => ({
@@ -135,7 +135,7 @@ describe('AI agent thread ownership without a session', () => {
135
135
 
136
136
  await assert.rejects(
137
137
  () =>
138
- runAIAgent(
138
+ runAgent(
139
139
  'ownership-agent',
140
140
  {
141
141
  message: 'what did we discuss?',
@@ -160,11 +160,7 @@ describe('AI agent thread ownership without a session', () => {
160
160
 
161
161
  await assert.rejects(
162
162
  () =>
163
- resumeAIAgentSync(
164
- 'run-1',
165
- [{ toolCallId: 'tc-1', approved: true }],
166
- {}
167
- ),
163
+ resumeAgentSync('run-1', [{ toolCallId: 'tc-1', approved: true }], {}),
168
164
  (error: unknown) => error instanceof ForbiddenError
169
165
  )
170
166
  })
@@ -173,7 +169,7 @@ describe('AI agent thread ownership without a session', () => {
173
169
  addTestAgent('ownership-agent')
174
170
  const harness = createHarness()
175
171
 
176
- const result = await runAIAgent(
172
+ const result = await runAgent(
177
173
  'ownership-agent',
178
174
  { message: 'hello', threadId: 'thread-new', resourceId: 'whatever' },
179
175
  {}
@@ -198,12 +194,12 @@ describe('AI agent thread ownership without a session', () => {
198
194
  const harness = createHarness()
199
195
  const requestParams = {}
200
196
 
201
- await runAIAgent(
197
+ await runAgent(
202
198
  'ownership-agent',
203
199
  { message: 'first', threadId: 'thread-sub', resourceId: 'ignored' },
204
200
  requestParams
205
201
  )
206
- await runAIAgent(
202
+ await runAgent(
207
203
  'ownership-agent',
208
204
  { message: 'second', threadId: 'thread-sub', resourceId: 'ignored' },
209
205
  requestParams
@@ -217,12 +213,12 @@ describe('AI agent thread ownership without a session', () => {
217
213
  addTestAgent('ownership-agent')
218
214
  const harness = createHarness()
219
215
 
220
- await runAIAgent(
216
+ await runAgent(
221
217
  'ownership-agent',
222
218
  { message: 'hello', threadId: 'thread-a', resourceId: 'shared' },
223
219
  {}
224
220
  )
225
- await runAIAgent(
221
+ await runAgent(
226
222
  'ownership-agent',
227
223
  { message: 'hello', threadId: 'thread-b', resourceId: 'shared' },
228
224
  {}
@@ -243,7 +239,7 @@ describe('AI agent thread ownership with a session', () => {
243
239
  { 'thread-alice': ['earlier alice turn'] }
244
240
  )
245
241
 
246
- const result = await runAIAgent(
242
+ const result = await runAgent(
247
243
  'ownership-agent',
248
244
  {
249
245
  message: 'and then?',
@@ -265,7 +261,7 @@ describe('AI agent thread ownership with a session', () => {
265
261
  addTestAgent('ownership-agent')
266
262
  const harness = createHarness()
267
263
 
268
- await runAIAgent(
264
+ await runAgent(
269
265
  'ownership-agent',
270
266
  { message: 'hello', threadId: 'thread-new', resourceId: 'project-1' },
271
267
  { sessionService: sessionService({ userId: 'alice' }) }
@@ -285,7 +281,7 @@ describe('AI agent thread ownership with a session', () => {
285
281
 
286
282
  await assert.rejects(
287
283
  () =>
288
- runAIAgent(
284
+ runAgent(
289
285
  'ownership-agent',
290
286
  {
291
287
  message: 'what did we discuss?',
@@ -1,12 +1,10 @@
1
1
  import { describe, test } from 'node:test'
2
2
  import assert from 'node:assert/strict'
3
3
 
4
- import { toAccumulatedStep } from './ai-agent-turn.js'
5
- import type { AIAgentStepResult } from '../../services/ai-agent-runner-service.js'
4
+ import { toAccumulatedStep } from './agent-turn.js'
5
+ import type { AgentStepResult } from '../../services/agent-runner-service.js'
6
6
 
7
- const stepResult = (
8
- overrides?: Partial<AIAgentStepResult>
9
- ): AIAgentStepResult => ({
7
+ const stepResult = (overrides?: Partial<AgentStepResult>): AgentStepResult => ({
10
8
  text: '',
11
9
  toolCalls: [],
12
10
  toolResults: [],
@@ -1,9 +1,9 @@
1
1
  import type { CoreSingletonServices } from '../../types/core.types.js'
2
- import type { PikkuAIMiddlewareHooks } from './ai-agent.types.js'
2
+ import type { PikkuAgentMiddlewareHooks } from './agent.types.js'
3
3
 
4
4
  /** Exactly what `modifyInput` accepts and returns, taken from the hook itself. */
5
5
  type TurnInput = Pick<
6
- Parameters<NonNullable<PikkuAIMiddlewareHooks['modifyInput']>>[1],
6
+ Parameters<NonNullable<PikkuAgentMiddlewareHooks['modifyInput']>>[1],
7
7
  'messages' | 'instructions'
8
8
  >
9
9
 
@@ -16,13 +16,13 @@ type TurnInput = Pick<
16
16
  * leaves the transcript there for `voiceOutput`).
17
17
  */
18
18
  export const applyInputMiddleware = async (
19
- aiMiddlewares: PikkuAIMiddlewareHooks[],
19
+ agentMiddlewares: PikkuAgentMiddlewareHooks[],
20
20
  singletonServices: CoreSingletonServices,
21
21
  input: TurnInput,
22
22
  sharedNotes: Record<string, unknown>
23
23
  ): Promise<TurnInput> => {
24
24
  let { messages, instructions } = input
25
- for (const mw of aiMiddlewares) {
25
+ for (const mw of agentMiddlewares) {
26
26
  if (!mw.modifyInput) continue
27
27
  const result = await mw.modifyInput(singletonServices, {
28
28
  messages,
@@ -37,7 +37,7 @@ export const applyInputMiddleware = async (
37
37
 
38
38
  /** The step fields both agent paths hand to `afterStep`, taken from the hook. */
39
39
  type StepResult = Omit<
40
- Parameters<NonNullable<PikkuAIMiddlewareHooks['afterStep']>>[1],
40
+ Parameters<NonNullable<PikkuAgentMiddlewareHooks['afterStep']>>[1],
41
41
  'stepNumber'
42
42
  >
43
43
 
@@ -46,12 +46,12 @@ type StepResult = Omit<
46
46
  * ordinal — a hook that wants the run's totals accumulates them itself.
47
47
  */
48
48
  export const notifyAfterStep = async (
49
- aiMiddlewares: PikkuAIMiddlewareHooks[],
49
+ agentMiddlewares: PikkuAgentMiddlewareHooks[],
50
50
  singletonServices: CoreSingletonServices,
51
51
  stepNumber: number,
52
52
  stepResult: StepResult
53
53
  ): Promise<void> => {
54
- for (const mw of aiMiddlewares) {
54
+ for (const mw of agentMiddlewares) {
55
55
  if (!mw.afterStep) continue
56
56
  await mw.afterStep(singletonServices, {
57
57
  stepNumber,
@@ -7,12 +7,12 @@ import type {
7
7
  MiddlewareMetadata,
8
8
  PermissionMetadata,
9
9
  } from '../../types/core.types.js'
10
- import type { AIProviderOptions } from '../../services/ai-agent-runner-service.js'
10
+ import type { AIProviderOptions } from '../../services/agent-runner-service.js'
11
11
  import type { PikkuChannel } from '../channel/channel.types.js'
12
12
  import type { CorePikkuChannelMiddleware } from '../channel/channel.types.js'
13
13
  import type { ApprovalPolicy } from '../channel/channel-rpc.js'
14
14
 
15
- export interface AIThread {
15
+ export interface AgentThread {
16
16
  id: string
17
17
  resourceId: string
18
18
  title?: string
@@ -21,7 +21,7 @@ export interface AIThread {
21
21
  updatedAt: Date
22
22
  }
23
23
 
24
- export type AIContentPart =
24
+ export type AgentContentPart =
25
25
  | { type: 'text'; text: string }
26
26
  | { type: 'image'; data?: string; url?: string; mediaType?: string }
27
27
  | {
@@ -41,13 +41,13 @@ export type AIContentPart =
41
41
  spec: unknown
42
42
  }
43
43
 
44
- export interface AIToolCall {
44
+ export interface AgentToolCall {
45
45
  id: string
46
46
  name: string
47
47
  args: Record<string, unknown>
48
48
  }
49
49
 
50
- export interface AIToolResult {
50
+ export interface AgentToolResult {
51
51
  id: string
52
52
  name: string
53
53
  result: string
@@ -60,12 +60,12 @@ export interface AIToolResult {
60
60
  error?: string
61
61
  }
62
62
 
63
- export interface AIMessage {
63
+ export interface AgentMessage {
64
64
  id: string
65
65
  role: 'system' | 'user' | 'assistant' | 'tool'
66
- content?: string | AIContentPart[]
67
- toolCalls?: AIToolCall[]
68
- toolResults?: AIToolResult[]
66
+ content?: string | AgentContentPart[]
67
+ toolCalls?: AgentToolCall[]
68
+ toolResults?: AgentToolResult[]
69
69
  reasoningContent?: string
70
70
  /**
71
71
  * Set on an assistant message whose generation was cut short by
@@ -87,7 +87,7 @@ export interface AIMessage {
87
87
  createdAt: Date
88
88
  }
89
89
 
90
- export interface AIAgentStep {
90
+ export interface AgentStep {
91
91
  usage: { inputTokens: number; outputTokens: number }
92
92
  toolCalls?: {
93
93
  name: string
@@ -98,7 +98,7 @@ export interface AIAgentStep {
98
98
  }[]
99
99
  }
100
100
 
101
- export interface AIAgentInputAttachment {
101
+ export interface AgentInputAttachment {
102
102
  type: 'image' | 'file'
103
103
  data?: string
104
104
  url?: string
@@ -106,11 +106,11 @@ export interface AIAgentInputAttachment {
106
106
  filename?: string
107
107
  }
108
108
 
109
- export interface AIAgentInput {
109
+ export interface AgentInput {
110
110
  message: string
111
111
  threadId: string
112
112
  resourceId: string
113
- attachments?: AIAgentInputAttachment[]
113
+ attachments?: AgentInputAttachment[]
114
114
  model?: string
115
115
  temperature?: number
116
116
  /** Structured context injected into the system instructions for this request.
@@ -119,12 +119,12 @@ export interface AIAgentInput {
119
119
  context?: string
120
120
  }
121
121
 
122
- export interface AIAgentOutput {
122
+ export interface AgentOutput {
123
123
  runId: string
124
124
  text: string
125
125
  object?: unknown
126
126
  threadId: string
127
- steps: AIAgentStep[]
127
+ steps: AgentStep[]
128
128
  usage: { inputTokens: number; outputTokens: number }
129
129
  status?: 'completed' | 'suspended'
130
130
  pendingApprovals?: Array<{
@@ -156,7 +156,7 @@ export type SessionScope = 'user' | 'org'
156
156
  * written by whoever runs the server it executes on. A capability runs on
157
157
  * someone else's machine, so it requires the field instead.
158
158
  */
159
- export interface AIAgentToolDef extends Partial<ApprovalPolicy> {
159
+ export interface AgentToolDef extends Partial<ApprovalPolicy> {
160
160
  name: string
161
161
  description: string
162
162
  inputSchema: Record<string, unknown>
@@ -178,14 +178,14 @@ export interface AIAgentToolDef extends Partial<ApprovalPolicy> {
178
178
  forwardsApproval?: boolean
179
179
  }
180
180
 
181
- export interface PikkuAIMiddlewareHooks<
181
+ export interface PikkuAgentMiddlewareHooks<
182
182
  State extends Record<string, unknown> = Record<string, unknown>,
183
183
  Services = any,
184
184
  > {
185
185
  modifyInput?: (
186
186
  services: Services,
187
187
  ctx: {
188
- messages: AIMessage[]
188
+ messages: AgentMessage[]
189
189
  instructions: string
190
190
  /**
191
191
  * Notes about this run that every middleware can read and write, as
@@ -206,14 +206,14 @@ export interface PikkuAIMiddlewareHooks<
206
206
  shared: Record<string, unknown>
207
207
  }
208
208
  ) =>
209
- | Promise<{ messages: AIMessage[]; instructions: string }>
210
- | { messages: AIMessage[]; instructions: string }
209
+ | Promise<{ messages: AgentMessage[]; instructions: string }>
210
+ | { messages: AgentMessage[]; instructions: string }
211
211
 
212
212
  modifyOutputStream?: (
213
213
  services: Services,
214
214
  ctx: {
215
- event: AIStreamEvent
216
- allEvents: readonly AIStreamEvent[]
215
+ event: AgentStreamEvent
216
+ allEvents: readonly AgentStreamEvent[]
217
217
  /** Private to this middleware, for this run. Cross-middleware facts go in `shared`. */
218
218
  state: State
219
219
  /** Per-run notes shared with every middleware — see {@link modifyInput}. */
@@ -232,7 +232,7 @@ export interface PikkuAIMiddlewareHooks<
232
232
  * it matters — and a hook that emits must make sure anything still
233
233
  * outstanding has landed before it lets `done` through.
234
234
  */
235
- emit: (event: AIStreamEvent) => Promise<void>
235
+ emit: (event: AgentStreamEvent) => Promise<void>
236
236
  /**
237
237
  * Aborts when the run is interrupted. Pass it to any provider call the
238
238
  * hook makes: work started for a reply the user has already talked over
@@ -241,9 +241,9 @@ export interface PikkuAIMiddlewareHooks<
241
241
  signal?: AbortSignal
242
242
  }
243
243
  ) =>
244
- | Promise<AIStreamEvent | AIStreamEvent[] | null>
245
- | AIStreamEvent
246
- | AIStreamEvent[]
244
+ | Promise<AgentStreamEvent | AgentStreamEvent[] | null>
245
+ | AgentStreamEvent
246
+ | AgentStreamEvent[]
247
247
  | null
248
248
 
249
249
  /**
@@ -265,20 +265,20 @@ export interface PikkuAIMiddlewareHooks<
265
265
  services: Services,
266
266
  ctx: {
267
267
  text: string
268
- messages: AIMessage[]
268
+ messages: AgentMessage[]
269
269
  usage: { inputTokens: number; outputTokens: number }
270
- toolCalls: NonNullable<AIAgentStep['toolCalls']>
270
+ toolCalls: NonNullable<AgentStep['toolCalls']>
271
271
  }
272
272
  ) =>
273
273
  | Promise<{
274
274
  text: string
275
- messages: AIMessage[]
276
- toolCalls?: NonNullable<AIAgentStep['toolCalls']>
275
+ messages: AgentMessage[]
276
+ toolCalls?: NonNullable<AgentStep['toolCalls']>
277
277
  }>
278
278
  | {
279
279
  text: string
280
- messages: AIMessage[]
281
- toolCalls?: NonNullable<AIAgentStep['toolCalls']>
280
+ messages: AgentMessage[]
281
+ toolCalls?: NonNullable<AgentStep['toolCalls']>
282
282
  }
283
283
 
284
284
  beforeToolCall?: (
@@ -327,12 +327,12 @@ export interface PikkuAIMiddlewareHooks<
327
327
  ctx: {
328
328
  error: Error
329
329
  stepNumber: number
330
- messages: AIMessage[]
330
+ messages: AgentMessage[]
331
331
  }
332
332
  ) => Promise<void> | void
333
333
  }
334
334
 
335
- export type AIAgentMemoryConfig = {
335
+ export type AgentMemoryConfig = {
336
336
  storage?: string
337
337
  vector?: string
338
338
  embedder?: string
@@ -340,7 +340,7 @@ export type AIAgentMemoryConfig = {
340
340
  workingMemory?: unknown
341
341
  }
342
342
 
343
- export type CoreAIAgent<
343
+ export type CoreAgent<
344
344
  PikkuPermission = CorePikkuPermission<any, any>,
345
345
  PikkuMiddleware = CorePikkuMiddleware<any>,
346
346
  Scope extends string = string,
@@ -382,7 +382,7 @@ export type CoreAIAgent<
382
382
  */
383
383
  scorers?: Scorer[]
384
384
  agentMode?: 'delegate' | 'supervise'
385
- memory?: AIAgentMemoryConfig
385
+ memory?: AgentMemoryConfig
386
386
  maxSteps?: number
387
387
  toolChoice?: 'auto' | 'required' | 'none'
388
388
  /**
@@ -400,15 +400,15 @@ export type CoreAIAgent<
400
400
  tags?: string[]
401
401
  prepareStep?: (ctx: {
402
402
  stepNumber: number
403
- messages: AIMessage[]
404
- tools: AIAgentToolDef[]
403
+ messages: AgentMessage[]
404
+ tools: AgentToolDef[]
405
405
  toolChoice: 'auto' | 'required' | 'none'
406
406
  model: string
407
407
  stop: () => void
408
408
  }) => void | Promise<void>
409
409
  middleware?: PikkuMiddleware[]
410
410
  channelMiddleware?: CorePikkuChannelMiddleware<any, any>[]
411
- aiMiddleware?: PikkuAIMiddlewareHooks<any, any>[]
411
+ agentMiddleware?: PikkuAgentMiddlewareHooks<any, any>[]
412
412
  /**
413
413
  * Whether a session is required to run this agent. Defaults to `false`, since
414
414
  * agents are commonly invoked from an already-authenticated `pikkuFunc` or
@@ -429,7 +429,7 @@ export type CoreAIAgent<
429
429
  permissions?: CorePermissionGroup<PikkuPermission>
430
430
  }
431
431
 
432
- export type AIStreamEvent =
432
+ export type AgentStreamEvent =
433
433
  | { type: 'step-start'; stepNumber: number; agent?: string; session?: string }
434
434
  | { type: 'text-delta'; text: string; agent?: string; session?: string }
435
435
  | { type: 'reasoning-delta'; text: string; agent?: string; session?: string }
@@ -555,7 +555,10 @@ export type AIStreamEvent =
555
555
  }
556
556
  | { type: 'done' }
557
557
 
558
- export interface AIStreamChannel extends PikkuChannel<unknown, AIStreamEvent> {}
558
+ export interface AgentStreamChannel extends PikkuChannel<
559
+ unknown,
560
+ AgentStreamEvent
561
+ > {}
559
562
 
560
563
  export type PendingApproval =
561
564
  | {
@@ -630,18 +633,18 @@ export interface AgentRunService {
630
633
  owners?: string[]
631
634
  limit?: number
632
635
  offset?: number
633
- }): Promise<AIThread[]>
634
- getThread(threadId: string): Promise<AIThread | null>
635
- getThreadMessages(threadId: string): Promise<AIMessage[]>
636
+ }): Promise<AgentThread[]>
637
+ getThread(threadId: string): Promise<AgentThread | null>
638
+ getThreadMessages(threadId: string): Promise<AgentMessage[]>
636
639
  getThreadRuns(threadId: string): Promise<AgentRunRow[]>
637
640
  deleteThread(threadId: string): Promise<boolean>
638
641
  getDistinctAgentNames(): Promise<string[]>
639
642
  }
640
643
 
641
- export type AIAgentMeta = Record<
644
+ export type AgentsMeta = Record<
642
645
  string,
643
646
  Omit<
644
- CoreAIAgent,
647
+ CoreAgent,
645
648
  | 'input'
646
649
  | 'output'
647
650
  | 'tools'
@@ -649,7 +652,7 @@ export type AIAgentMeta = Record<
649
652
  | 'workflows'
650
653
  | 'middleware'
651
654
  | 'channelMiddleware'
652
- | 'aiMiddleware'
655
+ | 'agentMiddleware'
653
656
  | 'permissions'
654
657
  > & {
655
658
  tools?: string[]
@@ -660,7 +663,7 @@ export type AIAgentMeta = Record<
660
663
  workingMemorySchema: string | null
661
664
  middleware?: MiddlewareMetadata[]
662
665
  channelMiddleware?: MiddlewareMetadata[]
663
- aiMiddleware?: MiddlewareMetadata[]
666
+ agentMiddleware?: MiddlewareMetadata[]
664
667
  permissions?: PermissionMetadata[]
665
668
  sourceFile?: string
666
669
  exportedName?: string
@@ -0,0 +1,56 @@
1
+ export {
2
+ agent,
3
+ agentStream,
4
+ agentResume,
5
+ agentApprove,
6
+ agentInterrupt,
7
+ } from './agent-helpers.js'
8
+ export { wrapChannelWithAGUI } from './agent-agui.js'
9
+ export { runAgent, resumeAgentSync } from './agent-runner.js'
10
+ export { resolveModelAlias } from './agent-model-config.js'
11
+ export { streamAgent, resumeAgent, interruptAgent } from './agent-stream.js'
12
+ export {
13
+ voiceInput,
14
+ NoSpeechDetectedError,
15
+ SPOKEN_TURN,
16
+ SPOKEN_TRANSCRIPT,
17
+ } from './voice-input.js'
18
+ export {
19
+ voiceOutput,
20
+ unspeakableScripts,
21
+ voiceForText,
22
+ type SpeakableScripts,
23
+ } from './voice-output.js'
24
+ export { AgentInterruptedError, signalRunInterrupt } from './agent-interrupt.js'
25
+ export type {
26
+ AgentInterruption,
27
+ AgentInterruptResult,
28
+ InterruptibleRunHandle,
29
+ } from './agent-interrupt.js'
30
+ export {
31
+ type RunAgentParams,
32
+ type StreamAgentOptions,
33
+ ToolApprovalRequired,
34
+ ToolCredentialRequired,
35
+ canAccessThread,
36
+ isOwnedByPrincipal,
37
+ threadOwnerConstraint,
38
+ } from './agent-prepare.js'
39
+ export { addAgent } from './agent-registry.js'
40
+ export type {
41
+ AgentInput,
42
+ AgentsMeta,
43
+ AgentMemoryConfig,
44
+ AgentStep,
45
+ AgentContentPart,
46
+ AgentRunRow,
47
+ AgentRunService,
48
+ AgentRunState,
49
+ AgentMessage,
50
+ AgentStreamChannel,
51
+ AgentStreamEvent,
52
+ AgentThread,
53
+ CoreAgent,
54
+ PendingApproval,
55
+ PikkuAgentMiddlewareHooks,
56
+ } from './agent.types.js'