@pikku/core 0.12.143 → 0.12.145

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 (701) hide show
  1. package/dist/analytics/analytics.d.ts +14 -0
  2. package/dist/analytics/analytics.js +14 -0
  3. package/dist/analytics/analytics.types.d.ts +1 -0
  4. package/dist/analytics/anonymous-analytics-identity.d.ts +1 -0
  5. package/dist/analytics/cookie-analytics-identity.d.ts +1 -0
  6. package/dist/analytics/mint-cookie.d.ts +1 -0
  7. package/dist/{wirings/channel/channel-middleware-runner.d.ts → channel-middleware-runner.d.ts} +17 -3
  8. package/dist/{wirings/channel/channel-middleware-runner.js → channel-middleware-runner.js} +24 -8
  9. package/dist/classification/data-classification.d.ts +13 -0
  10. package/dist/classification/secret-value.d.ts +7 -0
  11. package/dist/classification/secret-value.js +7 -0
  12. package/dist/crypto-utils.d.ts +93 -0
  13. package/dist/crypto-utils.js +92 -0
  14. package/dist/dev/hot-reload.d.ts +16 -0
  15. package/dist/dev/hot-reload.js +16 -1
  16. package/dist/dev/module-runner.js +7 -3
  17. package/dist/dev/reload-meta.js +1 -1
  18. package/dist/errors/error-handler.d.ts +9 -0
  19. package/dist/errors/error-handler.js +8 -0
  20. package/dist/errors/errors.d.ts +219 -0
  21. package/dist/errors/errors.js +227 -0
  22. package/dist/errors/serialized-error.d.ts +4 -0
  23. package/dist/function/abort-scope.d.ts +5 -0
  24. package/dist/function/function-meta.types.d.ts +20 -0
  25. package/dist/function/function-runner.d.ts +41 -0
  26. package/dist/function/function-runner.js +57 -11
  27. package/dist/function/functions.types.d.ts +59 -0
  28. package/dist/function/functions.types.js +23 -0
  29. package/dist/function/list.types.d.ts +4 -0
  30. package/dist/lifecycle.d.ts +12 -1
  31. package/dist/lifecycle.js +12 -1
  32. package/dist/middleware/addon-scope-cap.d.ts +4 -0
  33. package/dist/middleware/addon-scope-cap.js +7 -3
  34. package/dist/middleware/auth-apikey.js +3 -3
  35. package/dist/middleware/auth-bearer.js +5 -13
  36. package/dist/middleware/auth-cookie.js +3 -3
  37. package/dist/middleware/middleware-factories.d.ts +17 -0
  38. package/dist/middleware/middleware-factories.js +17 -0
  39. package/dist/middleware/middleware.types.d.ts +23 -0
  40. package/dist/middleware/remote-auth.d.ts +15 -0
  41. package/dist/middleware/remote-auth.js +18 -3
  42. package/dist/middleware/remote-jobs-secret.js +2 -10
  43. package/dist/middleware-runner.d.ts +7 -0
  44. package/dist/middleware-runner.js +23 -7
  45. package/dist/permissions.d.ts +13 -0
  46. package/dist/permissions.js +13 -0
  47. package/dist/pikku-state.d.ts +49 -0
  48. package/dist/pikku-state.js +49 -0
  49. package/dist/remote.js +20 -5
  50. package/dist/schema.d.ts +36 -0
  51. package/dist/schema.js +36 -0
  52. package/dist/services/agent-run-state-service.d.ts +8 -0
  53. package/dist/services/agent-runner-service.d.ts +24 -0
  54. package/dist/services/agent-storage-service.d.ts +8 -0
  55. package/dist/services/ai-embedding-service.d.ts +4 -0
  56. package/dist/services/audit-service.d.ts +48 -0
  57. package/dist/services/audit-service.js +22 -0
  58. package/dist/services/content-service.d.ts +34 -0
  59. package/dist/services/credential-wire-service.d.ts +9 -0
  60. package/dist/services/credential-wire-service.js +9 -0
  61. package/dist/services/deployment-service.d.ts +14 -0
  62. package/dist/services/email-service.d.ts +20 -0
  63. package/dist/services/email-template.d.ts +24 -0
  64. package/dist/services/email-template.js +12 -0
  65. package/dist/services/file-scenario-run-store.d.ts +5 -0
  66. package/dist/services/file-scenario-run-store.js +4 -0
  67. package/dist/services/gateway-service.d.ts +5 -0
  68. package/dist/services/in-memory-agent-run-state-service.d.ts +5 -0
  69. package/dist/services/in-memory-agent-run-state-service.js +5 -0
  70. package/dist/services/in-memory-lease-service.d.ts +5 -0
  71. package/dist/services/in-memory-lease-service.js +5 -0
  72. package/dist/services/in-memory-session-store.d.ts +4 -0
  73. package/dist/services/in-memory-session-store.js +4 -0
  74. package/dist/services/incoming-webhook-queue.d.ts +2 -0
  75. package/dist/services/incoming-webhook-queue.js +2 -0
  76. package/dist/services/incoming-webhook-service.d.ts +9 -1
  77. package/dist/services/incoming-webhook-service.js +1 -1
  78. package/dist/services/index.d.ts +1 -5
  79. package/dist/services/index.js +1 -5
  80. package/dist/services/jwt-service.d.ts +8 -0
  81. package/dist/services/lease-service.d.ts +5 -0
  82. package/dist/services/lease-service.js +1 -0
  83. package/dist/services/local-content-request-handler.d.ts +20 -0
  84. package/dist/services/local-content-request-handler.js +11 -0
  85. package/dist/services/local-content.d.ts +45 -0
  86. package/dist/services/local-content.js +35 -0
  87. package/dist/services/local-credential-service.d.ts +5 -0
  88. package/dist/services/local-credential-service.js +5 -0
  89. package/dist/services/local-email-service.d.ts +7 -0
  90. package/dist/services/local-email-service.js +7 -0
  91. package/dist/services/local-secrets.d.ts +8 -0
  92. package/dist/services/local-secrets.js +8 -0
  93. package/dist/services/local-variables.d.ts +6 -0
  94. package/dist/services/local-variables.js +6 -0
  95. package/dist/services/logger.d.ts +4 -0
  96. package/dist/services/logger.js +4 -0
  97. package/dist/services/meta-service.d.ts +38 -0
  98. package/dist/services/meta-service.js +6 -0
  99. package/dist/services/queue-webhook-service.d.ts +19 -0
  100. package/dist/services/queue-webhook-service.js +19 -0
  101. package/dist/services/remote-jobs.d.ts +8 -13
  102. package/dist/services/remote-jobs.js +3 -54
  103. package/dist/services/scenario-cookie-jar.d.ts +4 -0
  104. package/dist/services/scheduler-service.d.ts +13 -0
  105. package/dist/services/scheduler-service.js +8 -0
  106. package/dist/services/schema-service.d.ts +9 -0
  107. package/dist/services/scope-service.d.ts +10 -0
  108. package/dist/services/scoped-secret-service.d.ts +5 -0
  109. package/dist/services/scoped-secret-service.js +5 -0
  110. package/dist/services/secret-host-binding.d.ts +5 -0
  111. package/dist/services/secret-host-binding.js +5 -0
  112. package/dist/services/secret-service.d.ts +19 -1
  113. package/dist/services/secretless.d.ts +6 -0
  114. package/dist/services/secretless.js +6 -0
  115. package/dist/services/session-store.d.ts +5 -0
  116. package/dist/services/stub-tracker.d.ts +1 -0
  117. package/dist/services/temporary-file-service.d.ts +9 -0
  118. package/dist/services/temporary-file-service.js +9 -0
  119. package/dist/services/trigger-service.d.ts +4 -0
  120. package/dist/services/trigger-source-store.d.ts +13 -0
  121. package/dist/services/trigger-source-store.js +7 -0
  122. package/dist/services/typed-credential-service.d.ts +6 -0
  123. package/dist/services/typed-credential-service.js +5 -0
  124. package/dist/services/typed-secret-service.d.ts +12 -0
  125. package/dist/services/typed-secret-service.js +11 -0
  126. package/dist/services/typed-variables-service.d.ts +1 -0
  127. package/dist/services/user-session-service.d.ts +31 -1
  128. package/dist/services/user-session-service.js +29 -3
  129. package/dist/services/v8-coverage-service.d.ts +27 -0
  130. package/dist/services/v8-coverage-service.js +5 -0
  131. package/dist/services/variables-service.d.ts +8 -0
  132. package/dist/services/virtual-user-sign-in.d.ts +1 -0
  133. package/dist/services/virtual-user-statement.d.ts +8 -0
  134. package/dist/services/virtual-user-statement.js +4 -0
  135. package/dist/services/webhook-service.d.ts +25 -0
  136. package/dist/services/webhook-service.js +15 -0
  137. package/dist/services/workflow-service.d.ts +6 -0
  138. package/dist/test-utils.js +1 -1
  139. package/dist/testing/service-tests.d.ts +4 -0
  140. package/dist/time-utils.d.ts +15 -0
  141. package/dist/time-utils.js +14 -0
  142. package/dist/types/core.types.d.ts +80 -0
  143. package/dist/types/state.types.d.ts +4 -0
  144. package/dist/utils/hmac.d.ts +3 -0
  145. package/dist/utils/safe-fetch.d.ts +14 -0
  146. package/dist/utils/safe-fetch.js +13 -0
  147. package/dist/utils/stable-stringify.d.ts +11 -0
  148. package/dist/utils/stable-stringify.js +33 -0
  149. package/dist/utils.d.ts +28 -0
  150. package/dist/utils.js +22 -0
  151. package/dist/version.d.ts +7 -0
  152. package/dist/version.js +7 -0
  153. package/dist/wirings/addon/define-screens.d.ts +2 -0
  154. package/dist/wirings/addon/remote-addon-auth.d.ts +9 -0
  155. package/dist/wirings/addon/remote-addon-auth.js +5 -0
  156. package/dist/wirings/addon/wire-addon.d.ts +4 -0
  157. package/dist/wirings/addon/wire-remote-addon.d.ts +1 -0
  158. package/dist/wirings/agent/agent-agui.d.ts +14 -5
  159. package/dist/wirings/agent/agent-agui.js +17 -6
  160. package/dist/wirings/agent/agent-helpers.d.ts +61 -1
  161. package/dist/wirings/agent/agent-helpers.js +62 -2
  162. package/dist/wirings/agent/agent-interrupt.d.ts +5 -0
  163. package/dist/wirings/agent/agent-output.d.ts +20 -0
  164. package/dist/wirings/agent/agent-output.js +69 -0
  165. package/dist/wirings/agent/agent-prepare.d.ts +41 -0
  166. package/dist/wirings/agent/agent-prepare.js +38 -2
  167. package/dist/wirings/agent/agent-registry.d.ts +8 -0
  168. package/dist/wirings/agent/agent-registry.js +10 -4
  169. package/dist/wirings/agent/agent-runner.d.ts +33 -0
  170. package/dist/wirings/agent/agent-runner.js +40 -7
  171. package/dist/wirings/agent/agent-stream.d.ts +30 -0
  172. package/dist/wirings/agent/agent-stream.js +33 -11
  173. package/dist/wirings/agent/agent.types.d.ts +43 -0
  174. package/dist/wirings/agent/voice-input.d.ts +12 -0
  175. package/dist/wirings/agent/voice-input.js +12 -0
  176. package/dist/wirings/agent/voice-output.d.ts +14 -0
  177. package/dist/wirings/agent/voice-output.js +10 -0
  178. package/dist/wirings/agent-scorer/agent-scorer-judge.js +1 -2
  179. package/dist/wirings/agent-scorer/agent-scorer-registry.d.ts +10 -0
  180. package/dist/wirings/agent-scorer/agent-scorer-registry.js +10 -0
  181. package/dist/wirings/agent-scorer/agent-scorer-snapshots.d.ts +1 -0
  182. package/dist/wirings/agent-scorer/agent-scorer-snapshots.js +1 -0
  183. package/dist/wirings/agent-scorer/agent-scorer.types.d.ts +7 -0
  184. package/dist/wirings/channel/channel-common.js +1 -1
  185. package/dist/wirings/channel/channel-rpc.types.d.ts +5 -0
  186. package/dist/wirings/channel/channel-runner.d.ts +22 -0
  187. package/dist/wirings/channel/channel-runner.js +22 -0
  188. package/dist/wirings/channel/channel-store.d.ts +8 -0
  189. package/dist/wirings/channel/channel-store.js +7 -0
  190. package/dist/wirings/channel/channel.types.d.ts +18 -0
  191. package/dist/wirings/channel/define-channel-routes.d.ts +5 -0
  192. package/dist/wirings/channel/define-channel-routes.js +5 -0
  193. package/dist/wirings/channel/eventhub-service.d.ts +9 -0
  194. package/dist/wirings/channel/eventhub-store.d.ts +1 -0
  195. package/dist/wirings/channel/eventhub-store.js +1 -0
  196. package/dist/wirings/channel/index.d.ts +1 -1
  197. package/dist/wirings/channel/index.js +1 -1
  198. package/dist/wirings/channel/local/local-channel-handler.d.ts +1 -0
  199. package/dist/wirings/channel/local/local-channel-handler.js +1 -0
  200. package/dist/wirings/channel/local/local-channel-runner.d.ts +13 -0
  201. package/dist/wirings/channel/local/local-channel-runner.js +13 -0
  202. package/dist/wirings/channel/local/local-eventhub-service.d.ts +1 -0
  203. package/dist/wirings/channel/local/local-eventhub-service.js +1 -0
  204. package/dist/wirings/channel/log-channels.d.ts +1 -0
  205. package/dist/wirings/channel/log-channels.js +1 -0
  206. package/dist/wirings/channel/pikku-abstract-channel-handler.d.ts +5 -0
  207. package/dist/wirings/channel/pikku-abstract-channel-handler.js +5 -0
  208. package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +32 -0
  209. package/dist/wirings/channel/serverless/serverless-channel-runner.js +31 -0
  210. package/dist/wirings/cli/channel/cli-channel-runner.d.ts +8 -0
  211. package/dist/wirings/cli/channel/cli-channel-runner.js +8 -0
  212. package/dist/wirings/cli/channel/cli-raw-channel-runner.d.ts +1 -0
  213. package/dist/wirings/cli/cli-runner.d.ts +43 -0
  214. package/dist/wirings/cli/cli-runner.js +43 -0
  215. package/dist/wirings/cli/cli.types.d.ts +4 -0
  216. package/dist/wirings/cli/command-parser.d.ts +13 -0
  217. package/dist/wirings/cli/command-parser.js +16 -0
  218. package/dist/wirings/credential/credential-overrides.d.ts +1 -0
  219. package/dist/wirings/credential/credential.types.d.ts +7 -0
  220. package/dist/wirings/credential/validate-credential-definitions.d.ts +7 -0
  221. package/dist/wirings/credential/validate-credential-definitions.js +7 -0
  222. package/dist/wirings/flag/cached-flag-source.d.ts +1 -0
  223. package/dist/wirings/flag/flag.types.d.ts +3 -0
  224. package/dist/wirings/gateway/gateway-runner.d.ts +23 -0
  225. package/dist/wirings/gateway/gateway-runner.js +23 -0
  226. package/dist/wirings/gateway/gateway.types.d.ts +3 -0
  227. package/dist/wirings/gateway/local-gateway-service.d.ts +10 -0
  228. package/dist/{services → wirings/gateway}/local-gateway-service.js +6 -2
  229. package/dist/wirings/http/http-routes.d.ts +21 -0
  230. package/dist/wirings/http/http-routes.js +11 -0
  231. package/dist/wirings/http/http-runner.d.ts +71 -0
  232. package/dist/wirings/http/http-runner.js +73 -5
  233. package/dist/wirings/http/http.types.d.ts +27 -0
  234. package/dist/wirings/http/index.d.ts +1 -0
  235. package/dist/wirings/http/index.js +1 -0
  236. package/dist/wirings/http/log-http-routes.d.ts +1 -0
  237. package/dist/wirings/http/log-http-routes.js +1 -0
  238. package/dist/wirings/http/merge-request-data.d.ts +12 -0
  239. package/dist/wirings/http/merge-request-data.js +42 -0
  240. package/dist/wirings/http/pikku-fetch-http-request.d.ts +1 -0
  241. package/dist/wirings/http/pikku-fetch-http-request.js +3 -32
  242. package/dist/wirings/http/pikku-fetch-http-response.d.ts +1 -0
  243. package/dist/wirings/http/pikku-fetch-http-response.js +1 -0
  244. package/dist/wirings/http/routers/http-router.d.ts +6 -0
  245. package/dist/wirings/http/routers/http-router.js +6 -0
  246. package/dist/wirings/http/web-request.d.ts +17 -0
  247. package/dist/wirings/http/web-request.js +17 -0
  248. package/dist/wirings/mcp/mcp-endpoint-registry.d.ts +7 -0
  249. package/dist/wirings/mcp/mcp-endpoint-registry.js +7 -0
  250. package/dist/wirings/mcp/mcp-runner.d.ts +63 -0
  251. package/dist/wirings/mcp/mcp-runner.js +62 -0
  252. package/dist/wirings/mcp/mcp.types.d.ts +12 -0
  253. package/dist/wirings/node/node.types.d.ts +4 -0
  254. package/dist/wirings/oauth2/oauth2.types.d.ts +2 -0
  255. package/dist/{services → wirings/queue}/in-memory-queue-service.d.ts +9 -1
  256. package/dist/{services → wirings/queue}/in-memory-queue-service.js +9 -1
  257. package/dist/wirings/queue/index.d.ts +1 -0
  258. package/dist/wirings/queue/index.js +1 -0
  259. package/dist/wirings/queue/queue-identity.js +2 -14
  260. package/dist/wirings/queue/queue-runner.d.ts +37 -0
  261. package/dist/wirings/queue/queue-runner.js +37 -0
  262. package/dist/wirings/queue/queue.types.d.ts +35 -0
  263. package/dist/wirings/queue/register-queue-helper.d.ts +12 -0
  264. package/dist/wirings/queue/register-queue-helper.js +11 -0
  265. package/dist/wirings/queue/remote-queue-job.d.ts +11 -0
  266. package/dist/wirings/queue/remote-queue-job.js +41 -0
  267. package/dist/wirings/queue/validate-worker-config.d.ts +1 -0
  268. package/dist/wirings/role/role.types.d.ts +3 -0
  269. package/dist/wirings/rpc/rpc-runner.d.ts +24 -0
  270. package/dist/wirings/rpc/rpc-runner.js +37 -2
  271. package/dist/wirings/rpc/rpc-types.d.ts +2 -0
  272. package/dist/wirings/scheduler/index.d.ts +1 -0
  273. package/dist/wirings/scheduler/index.js +1 -0
  274. package/dist/wirings/scheduler/log-schedulers.d.ts +1 -0
  275. package/dist/wirings/scheduler/log-schedulers.js +1 -0
  276. package/dist/wirings/scheduler/remote-scheduled-job.d.ts +11 -0
  277. package/dist/wirings/scheduler/remote-scheduled-job.js +20 -0
  278. package/dist/wirings/scheduler/scheduler-runner.d.ts +29 -0
  279. package/dist/wirings/scheduler/scheduler-runner.js +28 -0
  280. package/dist/wirings/scheduler/scheduler.types.d.ts +3 -0
  281. package/dist/wirings/scope/scope.types.d.ts +5 -0
  282. package/dist/wirings/secret/index.d.ts +2 -2
  283. package/dist/wirings/secret/index.js +1 -1
  284. package/dist/wirings/secret/secret.types.d.ts +26 -1
  285. package/dist/wirings/secret/secret.types.js +1 -0
  286. package/dist/wirings/secret/validate-secret-definitions.d.ts +8 -0
  287. package/dist/wirings/secret/validate-secret-definitions.js +15 -0
  288. package/dist/wirings/trigger/in-memory-trigger-service.d.ts +11 -0
  289. package/dist/{services → wirings/trigger}/in-memory-trigger-service.js +10 -3
  290. package/dist/wirings/trigger/index.d.ts +1 -1
  291. package/dist/wirings/trigger/pikku-trigger-service.d.ts +8 -3
  292. package/dist/wirings/trigger/pikku-trigger-service.js +14 -3
  293. package/dist/wirings/trigger/trigger-runner.d.ts +27 -2
  294. package/dist/wirings/trigger/trigger-runner.js +35 -2
  295. package/dist/wirings/trigger/trigger.types.d.ts +26 -4
  296. package/dist/wirings/trigger/webhook-source-runner.d.ts +24 -0
  297. package/dist/wirings/trigger/webhook-source-runner.js +19 -0
  298. package/dist/wirings/trigger/webhook-source.types.d.ts +12 -2
  299. package/dist/wirings/trigger/webhook-source.types.js +1 -1
  300. package/dist/wirings/variable/validate-variable-definitions.d.ts +7 -0
  301. package/dist/wirings/variable/validate-variable-definitions.js +7 -0
  302. package/dist/wirings/variable/variable.types.d.ts +7 -0
  303. package/dist/wirings/virtual-user/conversation/conversation.types.d.ts +5 -0
  304. package/dist/wirings/virtual-user/conversation/run-conversation.d.ts +6 -0
  305. package/dist/wirings/virtual-user/conversation/run-conversation.js +1 -1
  306. package/dist/{services → wirings/virtual-user}/http-virtual-users.d.ts +4 -3
  307. package/dist/{services → wirings/virtual-user}/http-virtual-users.js +6 -6
  308. package/dist/wirings/virtual-user/index.d.ts +1 -1
  309. package/dist/wirings/virtual-user/index.js +1 -1
  310. package/dist/wirings/virtual-user/run-virtual-user.d.ts +2 -1
  311. package/dist/wirings/virtual-user/run-virtual-user.js +1 -14
  312. package/dist/wirings/virtual-user/virtual-user-declaration.types.d.ts +4 -0
  313. package/dist/wirings/virtual-user/virtual-user-scaffold.d.ts +10 -1
  314. package/dist/wirings/virtual-user/virtual-user-scaffold.js +5 -0
  315. package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +5 -0
  316. package/dist/wirings/virtual-user/virtual-user-schedule.js +1 -0
  317. package/dist/wirings/virtual-user/virtual-user-target.d.ts +1 -0
  318. package/dist/wirings/webhook/define-outgoing-webhook.d.ts +20 -0
  319. package/dist/wirings/webhook/define-outgoing-webhook.js +9 -0
  320. package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +8 -4
  321. package/dist/wirings/workflow/dsl/workflow-runner.d.ts +7 -0
  322. package/dist/wirings/workflow/dsl/workflow-runner.js +7 -0
  323. package/dist/wirings/workflow/feature.d.ts +12 -0
  324. package/dist/wirings/workflow/feature.js +12 -0
  325. package/dist/wirings/workflow/graph/graph-node.d.ts +5 -0
  326. package/dist/wirings/workflow/graph/graph-node.js +5 -0
  327. package/dist/wirings/workflow/graph/template.d.ts +6 -0
  328. package/dist/wirings/workflow/graph/template.js +5 -0
  329. package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +12 -0
  330. package/dist/wirings/workflow/graph/wire-workflow-graph.js +10 -0
  331. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +11 -0
  332. package/dist/wirings/workflow/graph/workflow-graph.types.js +1 -0
  333. package/dist/{services → wirings/workflow}/in-memory-workflow-service.d.ts +8 -3
  334. package/dist/{services → wirings/workflow}/in-memory-workflow-service.js +9 -4
  335. package/dist/wirings/workflow/pikku-scenario-service.d.ts +1 -1
  336. package/dist/wirings/workflow/pikku-scenario-service.js +2 -2
  337. package/dist/wirings/workflow/pikku-workflow-service.d.ts +1 -0
  338. package/dist/wirings/workflow/pikku-workflow-service.js +1 -0
  339. package/dist/wirings/workflow/run-timeline.d.ts +21 -0
  340. package/dist/wirings/workflow/run-timeline.js +15 -7
  341. package/dist/wirings/workflow/scenario-coverage.d.ts +1 -0
  342. package/dist/wirings/workflow/scenario-poll.d.ts +1 -0
  343. package/dist/wirings/workflow/scenario-prose.d.ts +6 -0
  344. package/dist/wirings/workflow/scenario-prose.js +6 -0
  345. package/dist/wirings/workflow/scenario-run.types.d.ts +3 -0
  346. package/dist/wirings/workflow/scenario-step.types.d.ts +1 -0
  347. package/dist/wirings/workflow/scenario-step.types.js +1 -0
  348. package/dist/wirings/workflow/scenario-surface.js +1 -13
  349. package/dist/wirings/workflow/scenario.types.d.ts +6 -0
  350. package/dist/wirings/workflow/workflow-approval-policy.d.ts +6 -0
  351. package/dist/wirings/workflow/workflow-approval-policy.js +6 -0
  352. package/dist/wirings/workflow/workflow-constants.d.ts +7 -1
  353. package/dist/wirings/workflow/workflow-constants.js +10 -1
  354. package/dist/wirings/workflow/workflow-errors.d.ts +13 -0
  355. package/dist/wirings/workflow/workflow-errors.js +13 -0
  356. package/dist/wirings/workflow/workflow-invocation-id.d.ts +4 -0
  357. package/dist/wirings/workflow/workflow-invocation-id.js +4 -0
  358. package/dist/wirings/workflow/workflow-queue-workers.d.ts +3 -0
  359. package/dist/wirings/workflow/workflow-run-ownership.d.ts +1 -0
  360. package/dist/wirings/workflow/workflow-run-ownership.js +1 -0
  361. package/dist/wirings/workflow/workflow-status-stream.d.ts +1 -0
  362. package/dist/wirings/workflow/workflow-unwind-plan.js +2 -7
  363. package/dist/wirings/workflow/workflow.types.d.ts +40 -0
  364. package/package.json +26 -9
  365. package/CHANGELOG.md +0 -6978
  366. package/dist/services/in-memory-trigger-service.d.ts +0 -4
  367. package/dist/services/local-gateway-service.d.ts +0 -6
  368. package/dist/utils/hash.d.ts +0 -2
  369. package/dist/utils/hash.js +0 -23
  370. package/knowledge/decisions/index.md +0 -19
  371. package/knowledge/decisions/internals/a-credential-name-declared-twice-must-agree-on-schema-and-type.md +0 -29
  372. package/knowledge/decisions/internals/a-grant-can-name-a-scope-declared-without-its-addon.md +0 -29
  373. package/knowledge/decisions/internals/a-held-run-is-woken-later-not-retried.md +0 -28
  374. package/knowledge/decisions/internals/a-latency-budget-is-asserted-by-its-cause.md +0 -32
  375. package/knowledge/decisions/internals/a-non-streaming-agent-run-registers-with-agentrunstate-too.md +0 -22
  376. package/knowledge/decisions/internals/a-reset-suite-makes-the-dev-seed-the-fixture.md +0 -50
  377. package/knowledge/decisions/internals/a-resumed-agent-turn-is-as-interruptible-as-the-first.md +0 -20
  378. package/knowledge/decisions/internals/a-scenario-step-template-is-offered-unfilled.md +0 -21
  379. package/knowledge/decisions/internals/a-scheduled-task-writes-its-caller-session-before-it-runs.md +0 -22
  380. package/knowledge/decisions/internals/a-secret-set-in-memory-shadows-the-variable-of-the-same-name.md +0 -28
  381. package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +0 -49
  382. package/knowledge/decisions/internals/a-virtual-user-acts-through-invokeraw-so-a-refusal-is-data.md +0 -32
  383. package/knowledge/decisions/internals/a-virtual-user-cadence-is-a-row-not-a-timer.md +0 -66
  384. package/knowledge/decisions/internals/a-virtual-user-converse-signs-in-before-its-first-turn.md +0 -24
  385. package/knowledge/decisions/internals/a-virtual-user-decides-whether-to-trust-memory-once-per-turn.md +0 -21
  386. package/knowledge/decisions/internals/a-virtual-user-email-is-computed-with-the-run-id-as-a-sub-address.md +0 -34
  387. package/knowledge/decisions/internals/a-virtual-user-run-is-not-a-workflow-but-it-needs-a-trigger.md +0 -65
  388. package/knowledge/decisions/internals/a-wall-clock-threshold-is-a-load-test-in-disguise.md +0 -49
  389. package/knowledge/decisions/internals/a-workflow-wire-is-built-from-the-run-not-from-the-rpc-service.md +0 -45
  390. package/knowledge/decisions/internals/addon-package-roots-resolve-by-walking-node-module-search-paths.md +0 -26
  391. package/knowledge/decisions/internals/addon-pikku-meta-ships-at-the-package-root-or-under-dist.md +0 -32
  392. package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +0 -33
  393. package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +0 -28
  394. package/knowledge/decisions/internals/agent-agui-bridge-obeys-the-client-ordering-contract.md +0 -29
  395. package/knowledge/decisions/internals/agent-audio-chunks-carry-the-format-the-provider-returned.md +0 -20
  396. package/knowledge/decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md +0 -21
  397. package/knowledge/decisions/internals/agent-credential-suspensions-hide-the-tool-result.md +0 -26
  398. package/knowledge/decisions/internals/agent-delegate-and-supervise-hide-different-text.md +0 -26
  399. package/knowledge/decisions/internals/agent-llm-tool-arguments-have-nulls-stripped.md +0 -23
  400. package/knowledge/decisions/internals/agent-model-config-stays-a-single-resolution-seam.md +0 -25
  401. package/knowledge/decisions/internals/agent-onerror-hooks-cannot-change-the-failure.md +0 -22
  402. package/knowledge/decisions/internals/agent-runner-methods-must-keep-their-receiver.md +0 -22
  403. package/knowledge/decisions/internals/agent-speech-travels-as-a-custom-agui-event.md +0 -22
  404. package/knowledge/decisions/internals/agent-stream-persistence-is-best-effort.md +0 -27
  405. package/knowledge/decisions/internals/agent-sub-agents-inherit-the-parent-context-block.md +0 -26
  406. package/knowledge/decisions/internals/agent-tool-execute-failures-are-logged-unconditionally.md +0 -25
  407. package/knowledge/decisions/internals/agent-voice-input-transcribes-audio-parts-in-place.md +0 -22
  408. package/knowledge/decisions/internals/agent-working-memory-is-persisted-only-when-valid.md +0 -25
  409. package/knowledge/decisions/internals/an-addon-scope-root-loses-to-a-root-the-host-already-declares.md +0 -39
  410. package/knowledge/decisions/internals/an-agent-interrupt-is-not-a-failure.md +0 -23
  411. package/knowledge/decisions/internals/an-agent-is-offered-under-its-registry-key-and-only-within-the-virtual-users-scopes.md +0 -27
  412. package/knowledge/decisions/internals/an-agent-run-owned-by-another-instance-says-so.md +0 -25
  413. package/knowledge/decisions/internals/an-agent-stream-send-must-return-the-inner-sends-promise.md +0 -22
  414. package/knowledge/decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md +0 -20
  415. package/knowledge/decisions/internals/an-empty-transcript-is-not-recorded.md +0 -22
  416. package/knowledge/decisions/internals/an-oauth2-credential-implies-an-optional-app-secret.md +0 -26
  417. package/knowledge/decisions/internals/an-unref-d-timer-cannot-be-awaited-under-node-test.md +0 -66
  418. package/knowledge/decisions/internals/analytics-identity-resolvers-run-in-declared-order.md +0 -22
  419. package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +0 -30
  420. package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +0 -31
  421. package/knowledge/decisions/internals/channel-state-accessors-are-unsound-generics-that-every-implementation-asserts.md +0 -33
  422. package/knowledge/decisions/internals/channel-state-is-per-socket-session-state-is-per-user.md +0 -29
  423. package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +0 -28
  424. package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +0 -27
  425. package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +0 -28
  426. package/knowledge/decisions/internals/cli-stdout-is-reserved-for-machine-readable-output.md +0 -34
  427. package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +0 -29
  428. package/knowledge/decisions/internals/core-column-form-is-an-axis-of-its-own.md +0 -84
  429. package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +0 -41
  430. package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +0 -44
  431. package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +0 -39
  432. package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +0 -42
  433. package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +0 -39
  434. package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +0 -43
  435. package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +0 -38
  436. package/knowledge/decisions/internals/core-state-is-a-global-map-written-only-at-registration-time.md +0 -44
  437. package/knowledge/decisions/internals/email-meta-is-read-uncached-because-codegen-rewrites-it-mid-session.md +0 -27
  438. package/knowledge/decisions/internals/feature-flag-declarations-refuse-an-empty-anyof-and-conflicting-scopes.md +0 -22
  439. package/knowledge/decisions/internals/feature-flags-fail-open-and-never-enforce-access.md +0 -28
  440. package/knowledge/decisions/internals/flag-sync-rewrites-only-the-declared-text.md +0 -24
  441. package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +0 -32
  442. package/knowledge/decisions/internals/gateway-listener-middleware-runs-without-an-rpc-on-the-wire.md +0 -43
  443. package/knowledge/decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md +0 -28
  444. package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +0 -31
  445. package/knowledge/decisions/internals/generated-src-paths-in-pikku-meta-are-absolute.md +0 -26
  446. package/knowledge/decisions/internals/global-middleware-resolves-from-the-root-namespace-too.md +0 -32
  447. package/knowledge/decisions/internals/hot-reload-reads-the-changed-source-never-a-compiled-copy.md +0 -38
  448. package/knowledge/decisions/internals/hot-reload-writes-into-the-function-map-captured-at-startup.md +0 -26
  449. package/knowledge/decisions/internals/http-request-bodies-are-read-once-and-shared.md +0 -32
  450. package/knowledge/decisions/internals/http-route-groups-cascade-config-in-a-fixed-order.md +0 -28
  451. package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +0 -30
  452. package/knowledge/decisions/internals/http-runner-logs-through-a-trace-scoped-logger-functions-do-not.md +0 -26
  453. package/knowledge/decisions/internals/http-set-cookie-headers-are-appended-never-joined.md +0 -28
  454. package/knowledge/decisions/internals/http-sse-streams-flush-headers-only-after-middleware.md +0 -32
  455. package/knowledge/decisions/internals/http-wiring-without-metadata-is-skipped-not-fatal.md +0 -26
  456. package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +0 -25
  457. package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +0 -26
  458. package/knowledge/decisions/internals/index.md +0 -182
  459. package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +0 -25
  460. package/knowledge/decisions/internals/local-trigger-and-gateway-services-assume-a-single-process.md +0 -26
  461. package/knowledge/decisions/internals/mcp-wire-names-are-assigned-over-the-whole-registry.md +0 -39
  462. package/knowledge/decisions/internals/node-only-builtins-are-imported-dynamically.md +0 -24
  463. package/knowledge/decisions/internals/one-project-shape-check-two-validators.md +0 -53
  464. package/knowledge/decisions/internals/only-exposed-functions-enter-a-virtual-user-catalogue.md +0 -21
  465. package/knowledge/decisions/internals/queue-group-concurrency-keeps-one-shared-queue-fair.md +0 -28
  466. package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +0 -27
  467. package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +0 -31
  468. package/knowledge/decisions/internals/role-names-cannot-contain-the-scope-separator.md +0 -30
  469. package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +0 -32
  470. package/knowledge/decisions/internals/scenario-agent-calls-sign-in-on-401-only.md +0 -31
  471. package/knowledge/decisions/internals/scenario-given-and-when-are-sugar-but-then-is-not.md +0 -24
  472. package/knowledge/decisions/internals/scenario-meta-lives-apart-from-app-meta-but-merges-when-read-off-disk.md +0 -26
  473. package/knowledge/decisions/internals/scenario-steps-return-drained-response-records.md +0 -27
  474. package/knowledge/decisions/internals/scenarios-live-in-files-named-for-them.md +0 -48
  475. package/knowledge/decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md +0 -30
  476. package/knowledge/decisions/internals/serverless-channel-disconnect-must-tolerate-a-missing-channel.md +0 -28
  477. package/knowledge/decisions/internals/side-effects-are-an-allowlist-not-a-boolean.md +0 -34
  478. package/knowledge/decisions/internals/speech-synthesis-picks-a-voice-per-sentence-and-warns-once.md +0 -24
  479. package/knowledge/decisions/internals/the-agent-done-event-goes-through-the-middleware-and-is-awaited.md +0 -26
  480. package/knowledge/decisions/internals/the-api-report-pins-members-not-just-names.md +0 -43
  481. package/knowledge/decisions/internals/the-core-scope-validator-refuses-separator-wildcard-and-empty-segments.md +0 -22
  482. package/knowledge/decisions/internals/the-dev-queue-copies-prod-timing-and-serialization-semantics.md +0 -30
  483. package/knowledge/decisions/internals/the-ecosystem-entry-point-carries-the-adapter-surface.md +0 -83
  484. package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +0 -29
  485. package/knowledge/decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md +0 -27
  486. package/knowledge/decisions/internals/the-kek-salt-is-scoped-to-the-key-version.md +0 -40
  487. package/knowledge/decisions/internals/the-mcp-handshake-is-challenged-only-when-every-target-is-gated.md +0 -29
  488. package/knowledge/decisions/internals/the-middleware-resolution-cache-is-deliberately-unbounded.md +0 -40
  489. package/knowledge/decisions/internals/the-per-invocation-rpc-view-is-a-class.md +0 -40
  490. package/knowledge/decisions/internals/the-pikku-user-id-resolves-in-a-fixed-order.md +0 -24
  491. package/knowledge/decisions/internals/the-runner-resolves-wire-services-itself.md +0 -31
  492. package/knowledge/decisions/internals/the-schema-service-is-never-stubbed.md +0 -26
  493. package/knowledge/decisions/internals/the-transcript-event-is-sent-ahead-of-the-run.md +0 -25
  494. package/knowledge/decisions/internals/the-virtual-user-catalogue-is-the-only-gate-on-what-may-be-called.md +0 -21
  495. package/knowledge/decisions/internals/the-virtual-user-prompt-says-json-because-of-json-object-mode.md +0 -22
  496. package/knowledge/decisions/internals/the-virtual-user-runtime-is-exported-from-the-virtual-user-entry-point.md +0 -28
  497. package/knowledge/decisions/internals/the-worker-disposition-is-the-one-that-is-not-testing.md +0 -22
  498. package/knowledge/decisions/internals/thread-history-records-the-transcript-not-the-audio.md +0 -25
  499. package/knowledge/decisions/internals/trigger-declaration-is-split-from-trigger-source.md +0 -33
  500. package/knowledge/decisions/internals/typed-secret-service-caches-for-the-process-lifetime.md +0 -26
  501. package/knowledge/decisions/internals/validate-checks-virtual-users-through-a-shared-module.md +0 -43
  502. package/knowledge/decisions/internals/validate-runs-checks-by-precondition.md +0 -115
  503. package/knowledge/decisions/internals/virtual-user-conversation-drives-the-target-through-a-transport-seam.md +0 -24
  504. package/knowledge/decisions/internals/virtual-user-conversation-verdicts-are-llm-self-evaluations.md +0 -25
  505. package/knowledge/decisions/internals/virtual-user-conversations-seed-a-hidden-kickoff-message.md +0 -23
  506. package/knowledge/decisions/internals/virtual-user-step-order-comes-from-insertion-order.md +0 -21
  507. package/knowledge/decisions/internals/virtual-users-are-declared-in-one-definevirtualusers-call-per-codebase.md +0 -30
  508. package/knowledge/decisions/internals/voice-output-speaks-unless-voice-input-explicitly-says-otherwise.md +0 -24
  509. package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +0 -26
  510. package/knowledge/decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md +0 -25
  511. package/knowledge/decisions/internals/whether-a-run-is-inline-is-read-from-the-run-record.md +0 -58
  512. package/knowledge/decisions/internals/wiring-registries-erase-the-generics-their-wire-functions-capture.md +0 -35
  513. package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +0 -34
  514. package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +0 -42
  515. package/knowledge/decisions/internals/workflow-dsl-meta-separates-runtime-expressions-from-literals.md +0 -38
  516. package/knowledge/decisions/internals/workflow-features-resolve-scenarios-by-object-identity.md +0 -29
  517. package/knowledge/decisions/internals/workflow-graph-inline-and-queued-runs-share-one-planner.md +0 -42
  518. package/knowledge/decisions/internals/workflow-graph-node-notes-are-excluded-from-the-graph-hash.md +0 -25
  519. package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +0 -29
  520. package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +0 -43
  521. package/knowledge/decisions/internals/workflow-queued-step-dispatch-requires-an-explicit-opt-in.md +0 -29
  522. package/knowledge/decisions/internals/workflow-queues-are-per-workflow-by-default.md +0 -42
  523. package/knowledge/decisions/internals/workflow-repeated-step-names-get-an-ordinal-suffix.md +0 -33
  524. package/knowledge/decisions/internals/workflow-replay-reads-its-steps-once-and-caches-only-the-immutable-half.md +0 -32
  525. package/knowledge/decisions/internals/workflow-retries-are-owned-by-the-workflow-not-the-queue.md +0 -31
  526. package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +0 -39
  527. package/knowledge/decisions/internals/workflow-run-mirror-is-never-a-source-of-truth.md +0 -29
  528. package/knowledge/decisions/internals/workflow-run-polling-backs-off-to-the-callers-ceiling.md +0 -33
  529. package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +0 -37
  530. package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +0 -54
  531. package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +0 -43
  532. package/knowledge/decisions/internals/workflow-scenario-prose-is-rendered-from-typed-calls-not-parsed-from-english.md +0 -32
  533. package/knowledge/decisions/internals/workflow-scenario-quarantine-reason-lives-in-code.md +0 -18
  534. package/knowledge/decisions/internals/workflow-scenario-step-targets-are-string-literals-for-the-inspector.md +0 -34
  535. package/knowledge/decisions/internals/workflow-step-compensation-runs-as-its-own-durable-step.md +0 -29
  536. package/knowledge/decisions/internals/workflow-step-dispatch-failure-is-transient-not-a-run-failure.md +0 -33
  537. package/knowledge/decisions/internals/workflow-step-lock-is-held-only-to-claim-the-step.md +0 -34
  538. package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +0 -34
  539. package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +0 -38
  540. package/knowledge/decisions/internals/workflow-suspended-runs-keep-their-in-process-context.md +0 -30
  541. package/knowledge/decisions/security/a-bearer-token-checked-against-a-secret-reads-it-per-request.md +0 -26
  542. package/knowledge/decisions/security/a-call-without-a-session-raises-missing-session-not-forbidden.md +0 -20
  543. package/knowledge/decisions/security/a-caller-cookie-wins-over-the-jar-for-the-same-name.md +0 -23
  544. package/knowledge/decisions/security/a-channel-lifecycle-acts-as-the-socket-upgrade-session.md +0 -16
  545. package/knowledge/decisions/security/a-channel-requires-a-session-unless-it-says-auth-false.md +0 -26
  546. package/knowledge/decisions/security/a-credential-read-path-follows-its-declared-type-not-absence.md +0 -32
  547. package/knowledge/decisions/security/a-credential-type-is-a-literal-the-inspector-checks-at-declaration.md +0 -27
  548. package/knowledge/decisions/security/a-dropped-audit-write-is-always-logged.md +0 -28
  549. package/knowledge/decisions/security/a-first-party-cookie-is-written-only-after-its-purposes-consent.md +0 -33
  550. package/knowledge/decisions/security/a-function-never-receives-the-secret-service.md +0 -37
  551. package/knowledge/decisions/security/a-graph-run-starts-at-an-entry-node-the-graph-declared.md +0 -33
  552. package/knowledge/decisions/security/a-permission-gets-a-wire-it-cannot-reply-on.md +0 -33
  553. package/knowledge/decisions/security/a-public-function-says-so-with-auth-false.md +0 -34
  554. package/knowledge/decisions/security/a-readonly-session-reaches-only-readonly-functions.md +0 -25
  555. package/knowledge/decisions/security/a-scaffold-flag-says-a-surface-exists-not-who-may-call-it.md +0 -52
  556. package/knowledge/decisions/security/a-scheduled-virtual-user-run-needs-no-admin-at-run-time.md +0 -27
  557. package/knowledge/decisions/security/a-scoped-credential-view-is-limited-to-declared-names.md +0 -26
  558. package/knowledge/decisions/security/a-scoped-secret-view-reads-only-declared-keys-and-never-writes.md +0 -25
  559. package/knowledge/decisions/security/a-secret-is-sent-only-to-the-hosts-it-declares.md +0 -29
  560. package/knowledge/decisions/security/a-step-can-name-an-identity-no-virtual-user-holds-through-per-call-headers.md +0 -25
  561. package/knowledge/decisions/security/a-step-runs-the-function-the-workflow-dispatched-it-with.md +0 -37
  562. package/knowledge/decisions/security/a-stopped-run-by-id-skips-the-ownership-check.md +0 -24
  563. package/knowledge/decisions/security/a-vault-secret-redacts-on-serialization-and-throws-on-coercion.md +0 -29
  564. package/knowledge/decisions/security/a-virtual-user-catalogue-entry-is-filtered-by-scope-and-approval-is-denied-by-default.md +0 -30
  565. package/knowledge/decisions/security/a-virtual-user-environment-fails-closed.md +0 -38
  566. package/knowledge/decisions/security/a-virtual-user-is-never-offered-a-step-that-would-forge-its-own-oracle.md +0 -27
  567. package/knowledge/decisions/security/a-virtual-user-never-runs-against-production.md +0 -23
  568. package/knowledge/decisions/security/a-virtual-user-reads-its-roles-from-the-apps-own-rpc-before-better-auth.md +0 -27
  569. package/knowledge/decisions/security/a-virtual-user-run-treats-an-unresolved-environment-as-production.md +0 -41
  570. package/knowledge/decisions/security/a-virtual-user-scopes-are-expanded-from-its-roles-once-at-run-preparation.md +0 -25
  571. package/knowledge/decisions/security/a-virtual-user-whose-roles-drift-from-the-declaration-refuses-to-run.md +0 -32
  572. package/knowledge/decisions/security/a-workflow-run-is-read-and-approved-by-its-owner.md +0 -50
  573. package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +0 -43
  574. package/knowledge/decisions/security/addon-config-gates-apply-only-at-the-namespaced-rpc-boundary.md +0 -52
  575. package/knowledge/decisions/security/addon-scopes-are-resolved-where-the-function-runs.md +0 -46
  576. package/knowledge/decisions/security/addon-screen-scopes-hide-and-do-not-enforce.md +0 -20
  577. package/knowledge/decisions/security/agent-approval-forwarding-requires-a-symbol-brand.md +0 -27
  578. package/knowledge/decisions/security/agent-credential-requests-are-symbol-branded.md +0 -37
  579. package/knowledge/decisions/security/agent-gate-requires-a-session-only-when-auth-is-true.md +0 -31
  580. package/knowledge/decisions/security/agent-ownership-failures-never-echo-the-resource.md +0 -23
  581. package/knowledge/decisions/security/agent-resume-re-runs-the-authorization-gate.md +0 -22
  582. package/knowledge/decisions/security/agent-sessionless-deployments-have-no-thread-ownership.md +0 -39
  583. package/knowledge/decisions/security/agent-thread-ownership-composes-the-session-principal.md +0 -30
  584. package/knowledge/decisions/security/agent-tool-filtering-reads-the-live-function-config.md +0 -24
  585. package/knowledge/decisions/security/an-addon-header-can-only-narrow-the-session.md +0 -26
  586. package/knowledge/decisions/security/an-addon-instance-reads-only-the-secrets-and-credentials-it-is-named.md +0 -33
  587. package/knowledge/decisions/security/an-addon-may-reach-only-itself-and-the-addons-it-uses.md +0 -16
  588. package/knowledge/decisions/security/an-agent-approval-is-claimed-before-the-tool-runs.md +0 -33
  589. package/knowledge/decisions/security/an-api-key-is-jwt-decoded-into-the-session.md +0 -26
  590. package/knowledge/decisions/security/an-approval-answer-outlives-the-run-it-answered.md +0 -59
  591. package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +0 -30
  592. package/knowledge/decisions/security/an-exposed-ungated-function-is-a-codegen-warning.md +0 -52
  593. package/knowledge/decisions/security/an-external-virtual-user-caller-presents-one-signed-statement.md +0 -38
  594. package/knowledge/decisions/security/an-inbound-webhook-source-dispatches-only-verified-requests.md +0 -31
  595. package/knowledge/decisions/security/an-mcp-call-with-no-http-request-stays-anonymous.md +0 -18
  596. package/knowledge/decisions/security/an-mcp-refusal-is-decided-before-dispatch.md +0 -48
  597. package/knowledge/decisions/security/an-oauth2-credential-is-read-by-its-account-row.md +0 -40
  598. package/knowledge/decisions/security/an-omitted-user-id-addresses-the-platform-credential.md +0 -32
  599. package/knowledge/decisions/security/an-upload-is-counted-as-it-arrives-not-buffered-then-measured.md +0 -24
  600. package/knowledge/decisions/security/analytics-identity-is-stamped-from-the-session-not-the-event.md +0 -24
  601. package/knowledge/decisions/security/app-access-is-a-scope-tree-synthesised-from-virtual-users.md +0 -26
  602. package/knowledge/decisions/security/approval-policy-decides-who-answers-a-tool-call.md +0 -27
  603. package/knowledge/decisions/security/auth-false-on-a-session-function-warns-and-still-requires-one.md +0 -25
  604. package/knowledge/decisions/security/bearer-token-hashes-are-unpeppered-sha256.md +0 -18
  605. package/knowledge/decisions/security/consent-is-read-from-a-cookie-and-a-recognised-denial-counts-as-refusal.md +0 -29
  606. package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +0 -84
  607. package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +0 -39
  608. package/knowledge/decisions/security/core-secrets-use-a-per-secret-dek-wrapped-by-a-kek.md +0 -37
  609. package/knowledge/decisions/security/cors-defaults-to-any-origin-and-refuses-the-wildcard-with-credentials.md +0 -22
  610. package/knowledge/decisions/security/credential-backends-share-one-conformance-suite-for-per-user-isolation.md +0 -29
  611. package/knowledge/decisions/security/each-stage-has-one-virtual-user-key-pair.md +0 -27
  612. package/knowledge/decisions/security/gateway-handlers-run-through-the-function-runner-gate.md +0 -41
  613. package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +0 -30
  614. package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +0 -40
  615. package/knowledge/decisions/security/hmac-verification-fails-closed-on-empty-inputs.md +0 -25
  616. package/knowledge/decisions/security/http-error-detail-is-withheld-from-clients-in-production.md +0 -33
  617. package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +0 -46
  618. package/knowledge/decisions/security/index.md +0 -135
  619. package/knowledge/decisions/security/local-content-refuses-private-buckets-under-the-public-segment.md +0 -21
  620. package/knowledge/decisions/security/mail-is-allowlisted-before-a-virtual-user-run-sees-it.md +0 -38
  621. package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +0 -27
  622. package/knowledge/decisions/security/mcp-resources-tools-and-prompts-take-sessionless-functions.md +0 -18
  623. package/knowledge/decisions/security/origin-locked-routes-match-the-origin-exactly.md +0 -22
  624. package/knowledge/decisions/security/oss-auth-works-without-pikku-studio-cloud.md +0 -26
  625. package/knowledge/decisions/security/outbound-webhooks-use-an-allowlist-when-configured.md +0 -24
  626. package/knowledge/decisions/security/passphrases-are-stretched-key-material-is-expanded.md +0 -40
  627. package/knowledge/decisions/security/permission-auth-filtering-requires-live-permission-functions.md +0 -31
  628. package/knowledge/decisions/security/pikku-carries-virtual-user-scopes-as-data-and-the-app-grants-them.md +0 -35
  629. package/knowledge/decisions/security/queue-job-identities-are-signed-at-enqueue.md +0 -69
  630. package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +0 -39
  631. package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +0 -34
  632. package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +0 -55
  633. package/knowledge/decisions/security/scenario-step-functions-are-never-externally-invocable.md +0 -30
  634. package/knowledge/decisions/security/scope-resolution-happens-at-the-session-boundary-and-sync-never-deletes.md +0 -28
  635. package/knowledge/decisions/security/scoped-content-access-is-a-root-folder-with-longest-prefix-grants.md +0 -31
  636. package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +0 -34
  637. package/knowledge/decisions/security/services-without-secrets-get-a-throwing-secrets-accessor.md +0 -22
  638. package/knowledge/decisions/security/shared-guards-refuse-to-mutate-or-shadow-a-system-role.md +0 -34
  639. package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +0 -37
  640. package/knowledge/decisions/security/signed-uploads-are-verified-by-the-same-check-as-signed-reads.md +0 -26
  641. package/knowledge/decisions/security/system-role-scopes-must-be-declared-with-define-scope.md +0 -24
  642. package/knowledge/decisions/security/system-roles-are-additive-and-immutable.md +0 -16
  643. package/knowledge/decisions/security/the-channel-rpc-does-not-send-the-callers-session.md +0 -21
  644. package/knowledge/decisions/security/the-remote-jobs-inbox-fails-closed-without-a-secret.md +0 -24
  645. package/knowledge/decisions/security/the-remote-rpc-gate-fails-closed-and-binds-the-token-to-its-function.md +0 -34
  646. package/knowledge/decisions/security/the-workflow-status-stream-rechecks-ownership-on-every-poll.md +0 -16
  647. package/knowledge/decisions/security/two-credentials-on-one-key-must-share-a-read-mode.md +0 -29
  648. package/knowledge/decisions/security/verified-bearer-claims-are-pass-through-data-that-core-never-fills.md +0 -23
  649. package/knowledge/decisions/security/virtual-user-catalogue-excludes-the-machinery-that-runs-virtual-users.md +0 -25
  650. package/knowledge/decisions/security/virtual-user-conversation-missing-approval-decisions-default-to-denied.md +0 -22
  651. package/knowledge/decisions/security/virtual-user-run-records-are-gated-behind-a-read-scope.md +0 -18
  652. package/knowledge/decisions/security/virtual-user-sign-in-does-not-exist-in-production.md +0 -25
  653. package/knowledge/decisions/security/virtual-user-sign-in-has-one-door.md +0 -42
  654. package/knowledge/decisions/security/virtual-user-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +0 -29
  655. package/knowledge/decisions/security/virtual-user-sign-in-only-works-for-virtual-user-flagged-users.md +0 -29
  656. package/knowledge/decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md +0 -25
  657. package/knowledge/decisions/security/wire-addon-expose-selects-the-rpc-surface.md +0 -51
  658. package/knowledge/decisions/security/workflow-approval-payloads-are-validated-on-replay-inside-the-workflow.md +0 -40
  659. package/knowledge/decisions/security/workflow-helper-functions-are-sessionless-by-declaration.md +0 -18
  660. package/knowledge/decisions/security/workflow-queued-steps-rehydrate-their-session-from-the-run-wire.md +0 -32
  661. package/knowledge/decisions/security/workflow-scenario-sessions-are-isolated-per-virtual-user-and-per-scenario.md +0 -32
  662. package/knowledge/decisions/security/workflow-scenario-steps-are-never-network-invocable.md +0 -31
  663. package/knowledge/decisions/security/workflow-virtual-user-steps-always-use-the-real-transport.md +0 -34
  664. package/knowledge/decisions/security/writing-a-virtual-user-schedule-is-gated-by-its-own-scope.md +0 -18
  665. package/knowledge/index.md +0 -24
  666. package/knowledge/questions/a-bearer-jwt-with-no-identity-becomes-a-session.md +0 -24
  667. package/knowledge/questions/channel-middleware-accepts-bare-factories-that-nothing-resolves.md +0 -35
  668. package/knowledge/questions/dev-quick-login-as-impersonation.md +0 -25
  669. package/knowledge/questions/does-a-delayed-rpc-run-as-the-session-it-was-scheduled-with.md +0 -26
  670. package/knowledge/questions/does-a-user-id-with-a-colon-read-another-users-credentials.md +0 -27
  671. package/knowledge/questions/does-a-wirecli-command-need-a-session-by-default.md +0 -26
  672. package/knowledge/questions/does-an-adversarial-in-scope-success-count-as-a-finding.md +0 -26
  673. package/knowledge/questions/does-approve-step-need-the-run-owners-session-or-the-gates-approvers.md +0 -34
  674. package/knowledge/questions/does-cors-origin-true-reflect-any-origin-with-credentials.md +0 -20
  675. package/knowledge/questions/does-skip-user-session-do-anything-on-a-channel.md +0 -24
  676. package/knowledge/questions/does-the-store-session-match-the-other-two.md +0 -19
  677. package/knowledge/questions/index.md +0 -41
  678. package/knowledge/questions/is-the-agent-score-worker-reachable-without-a-session.md +0 -21
  679. package/knowledge/questions/live-scheduled-tests-may-write.md +0 -19
  680. package/knowledge/questions/provision-virtual-users-has-no-caller-in-this-repo.md +0 -23
  681. package/knowledge/questions/remote-secret-refuses-requests-without-a-remote-token-on-every-path.md +0 -32
  682. package/knowledge/questions/should-a-middleware-set-session-persist-to-the-store.md +0 -25
  683. package/knowledge/questions/should-a-scoped-secret-view-throw-from-has-secret-for-a-disallowed-key.md +0 -23
  684. package/knowledge/questions/should-a-wrong-bearer-token-be-anonymous-or-refused.md +0 -35
  685. package/knowledge/questions/should-an-empty-webhook-signing-secret-send-unsigned.md +0 -23
  686. package/knowledge/questions/should-http-virtual-user-sessions-reset-between-scenarios-in-one-run.md +0 -27
  687. package/knowledge/questions/should-the-cookie-jar-scope-cookies-to-the-api-origin.md +0 -26
  688. package/knowledge/questions/should-voice-input-fetch-audio-urls-without-a-host-allowlist.md +0 -20
  689. package/knowledge/questions/staging-impersonation-rules.md +0 -27
  690. package/knowledge/questions/unauthorized-channel-replies-escape-the-declared-out-type.md +0 -44
  691. package/knowledge/questions/virtual-user-keys-on-cloud-stages-are-pikku-studios-to-build.md +0 -33
  692. package/knowledge/questions/virtual-user-statement-replay-is-per-process.md +0 -20
  693. package/knowledge/questions/what-an-impersonated-session-carries.md +0 -22
  694. package/run-tests.sh +0 -68
  695. package/scripts/generate-api-report.d.mts +0 -1
  696. package/scripts/generate-api-report.mjs +0 -96
  697. package/scripts/generate-api-report.mts +0 -333
  698. package/src/public-surface.json +0 -637
  699. package/src/public-surface.json.README +0 -43
  700. /package/dist/{function/compensation-name.d.ts → compensation-name.d.ts} +0 -0
  701. /package/dist/{function/compensation-name.js → compensation-name.js} +0 -0
@@ -1,9 +1,13 @@
1
1
  import type { HTTPFunctionMetaInputTypes, PikkuHTTPRequest, PikkuHTTPResponse } from '../http/http.types.js';
2
2
  import type { CorePikkuMiddleware, MiddlewareMetadata } from '../../middleware/middleware.types.js';
3
+ /** A binary channel frame. */
3
4
  export type BinaryData = ArrayBuffer | Uint8Array;
5
+ /** Middleware that runs around each channel message. Call `next` with the event to pass it on, with several events to fan it out, or with `null` to drop it. */
4
6
  export type CorePikkuChannelMiddleware<Services = any, Event = unknown> = (services: Services, event: Event, next: (event: Event | Event[] | null) => Promise<void> | void) => Promise<void> | void;
7
+ /** Builds a {@link CorePikkuChannelMiddleware} from configuration, so the same middleware can be reused with different settings. */
5
8
  export type CorePikkuChannelMiddlewareFactory<In = any, Services = any, Event = unknown> = (input: In) => CorePikkuChannelMiddleware<Services, Event>;
6
9
  import type { CorePikkuFunction, CorePikkuFunctionConfig, CorePikkuFunctionSessionless, CorePikkuPermission } from '../../function/functions.types.js';
10
+ /** Options for running a channel connection. They mean the same as the matching {@link RunHTTPWiringOptions}. */
7
11
  export type RunChannelOptions = Partial<{
8
12
  skipUserSession: boolean;
9
13
  respondWith404: boolean;
@@ -11,11 +15,13 @@ export type RunChannelOptions = Partial<{
11
15
  logWarningsForStatusCodes: number[];
12
16
  bubbleErrors: boolean;
13
17
  }>;
18
+ /** The connection a channel runner is handed: its id and, when it came over HTTP, the upgrade request and response. */
14
19
  export type RunChannelParams<ChannelData> = {
15
20
  channelId: string;
16
21
  request?: PikkuHTTPRequest<ChannelData>;
17
22
  response?: PikkuHTTPResponse;
18
23
  };
24
+ /** Generated metadata for one channel handler: the function it runs and its resolved middleware. */
19
25
  export interface ChannelMessageMeta {
20
26
  pikkuFuncId: string;
21
27
  packageName?: string;
@@ -25,6 +31,7 @@ export interface ChannelMessageMeta {
25
31
  tags?: string[];
26
32
  middleware?: MiddlewareMetadata[];
27
33
  }
34
+ /** Generated metadata for one wired channel: its route, input schema, handlers and message routing. */
28
35
  export interface ChannelMeta {
29
36
  name: string;
30
37
  route: string;
@@ -57,7 +64,9 @@ export interface ChannelMeta {
57
64
  middleware?: MiddlewareMetadata[];
58
65
  channelMiddleware?: MiddlewareMetadata[];
59
66
  }
67
+ /** Generated metadata for every wired channel, keyed by name. */
60
68
  export type ChannelsMeta = Record<string, ChannelMeta>;
69
+ /** The configuration {@link wireChannel} takes. An app's generated `wireChannel` narrows the function, permission and middleware types to its own. */
61
70
  export type CoreChannel<ChannelData, Channel extends string, ChannelConnect = CorePikkuFunctionConfig<CorePikkuFunction<void, unknown> | CorePikkuFunctionSessionless<void, unknown>, CorePikkuPermission<void>, CorePikkuMiddleware>, ChannelDisconnect = CorePikkuFunctionConfig<CorePikkuFunction<void, void> | CorePikkuFunctionSessionless<void, void>, CorePikkuPermission<void>, CorePikkuMiddleware>, ChannelFunctionMessage = CorePikkuFunctionConfig<CorePikkuFunction<unknown, unknown> | CorePikkuFunctionSessionless<unknown, unknown>, CorePikkuPermission<unknown>, CorePikkuMiddleware>, PikkuPermission = CorePikkuPermission<ChannelData>, PikkuMiddleware = CorePikkuMiddleware> = {
62
71
  /** Unique across the project. It is how the channel is addressed in `pikku meta` and by the generated client. */
63
72
  name: string;
@@ -99,6 +108,13 @@ export type CoreChannel<ChannelData, Channel extends string, ChannelConnect = Co
99
108
  * own functions. Loose on purpose: core cannot know the names.
100
109
  */
101
110
  export type ChannelRemote = (funcName: string, data?: any) => Promise<any>;
111
+ /**
112
+ * The `channel` part of a function's wire when it runs on a channel: the connection's id and opening data, ways to send to and close it, per-connection state, and `remote` to call the peer.
113
+ *
114
+ * In serverless runtimes `setState`/`getState` go through the {@link ChannelStore},
115
+ * so state survives between invocations; elsewhere it lives in memory for the
116
+ * connection's lifetime.
117
+ */
102
118
  export interface PikkuChannel<OpeningData, out Out, Remote extends (...args: any[]) => any = ChannelRemote> {
103
119
  channelId: string;
104
120
  openingData: OpeningData;
@@ -116,9 +132,11 @@ export interface PikkuChannel<OpeningData, out Out, Remote extends (...args: any
116
132
  */
117
133
  remote: Remote;
118
134
  }
135
+ /** The runtime side of one connection: how a channel's sends reach the actual socket. */
119
136
  export interface PikkuChannelHandler<OpeningData = unknown, Out = unknown> {
120
137
  send(message: Out, isBinary?: boolean): Promise<void> | void;
121
138
  sendBinary(data: BinaryData): Promise<void> | void;
122
139
  getChannel(): PikkuChannel<OpeningData, Out>;
123
140
  }
141
+ /** Creates the {@link PikkuChannelHandler} for a connection. Serverless runtimes pass one so the channel can send back through the platform's API. */
124
142
  export type PikkuChannelHandlerFactory<OpeningData = unknown, Out = unknown> = (channelId: string, channelName: string, openingData: OpeningData) => PikkuChannelHandler<OpeningData, Out>;
@@ -1 +1,6 @@
1
+ /**
2
+ * Declares a set of message handlers for one `onMessageWiring` key, so they can be defined apart from the channel and keep their types. Returns the routes unchanged.
3
+ *
4
+ * @example snippet: channelRoutes
5
+ */
1
6
  export declare function defineChannelRoutes<T extends Record<string, any>>(routes: T): T;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Declares a set of message handlers for one `onMessageWiring` key, so they can be defined apart from the channel and keep their types. Returns the routes unchanged.
3
+ *
4
+ * @example snippet: channelRoutes
5
+ */
1
6
  export function defineChannelRoutes(routes) {
2
7
  return routes;
3
8
  }
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Pub/sub between channels, available as `eventHub` on singleton services.
3
+ *
4
+ * Channels `subscribe` to topics, and `publish` sends to every subscriber of a
5
+ * topic. Passing the publishing channel's id as `channelId` excludes it from
6
+ * delivery; `null` sends to all.
7
+ *
8
+ * @example snippet: channelPubSub
9
+ */
1
10
  export interface EventHubService<Topics extends Record<string, any>> {
2
11
  subscribe<T extends keyof Topics>(topic: T, channelId: string): Promise<void> | void;
3
12
  unsubscribe<T extends keyof Topics>(topic: T, channelId: string): Promise<void> | void;
@@ -1,3 +1,4 @@
1
+ /** Persists topic subscriptions for serverless runtimes, where the subscribing and publishing invocations do not share memory. */
1
2
  export declare abstract class EventHubStore<EventTopics extends Record<string, any> = {}> {
2
3
  abstract getChannelIdsForTopic(topic: string): Promise<string[]>;
3
4
  abstract subscribe<T extends keyof EventTopics>(topic: T, channelId: string): Promise<boolean>;
@@ -1,2 +1,3 @@
1
+ /** Persists topic subscriptions for serverless runtimes, where the subscribing and publishing invocations do not share memory. */
1
2
  export class EventHubStore {
2
3
  }
@@ -1,5 +1,5 @@
1
1
  export { wireChannel } from './channel-runner.js';
2
- export { addChannelMiddleware, combineChannelMiddleware, } from './channel-middleware-runner.js';
2
+ export { addChannelMiddleware, combineChannelMiddleware, } from '../../channel-middleware-runner.js';
3
3
  export { logChannels } from './log-channels.js';
4
4
  export { PikkuAbstractChannelHandler } from './pikku-abstract-channel-handler.js';
5
5
  export type { EventHubService } from './eventhub-service.js';
@@ -1,5 +1,5 @@
1
1
  export { wireChannel } from './channel-runner.js';
2
- export { addChannelMiddleware, combineChannelMiddleware, } from './channel-middleware-runner.js';
2
+ export { addChannelMiddleware, combineChannelMiddleware, } from '../../channel-middleware-runner.js';
3
3
  export { logChannels } from './log-channels.js';
4
4
  export { PikkuAbstractChannelHandler } from './pikku-abstract-channel-handler.js';
5
5
  export { ChannelStore } from './channel-store.js';
@@ -1,6 +1,7 @@
1
1
  import type { Logger } from '../../../services/logger.js';
2
2
  import type { BinaryData } from '../channel.types.js';
3
3
  import { PikkuAbstractChannelHandler } from '../pikku-abstract-channel-handler.js';
4
+ /** The {@link PikkuChannelHandler} for runtimes that hold the socket in-process (Node WebSocket servers, uWS, Bun). The runtime registers callbacks for sending, opening, messages and closing. */
4
5
  export declare class PikkuLocalChannelHandler<OpeningData = unknown, Out = unknown> extends PikkuAbstractChannelHandler<OpeningData, Out> {
5
6
  private onMessageCallback?;
6
7
  private onBinaryMessageCallback?;
@@ -1,4 +1,5 @@
1
1
  import { PikkuAbstractChannelHandler } from '../pikku-abstract-channel-handler.js';
2
+ /** The {@link PikkuChannelHandler} for runtimes that hold the socket in-process (Node WebSocket servers, uWS, Bun). The runtime registers callbacks for sending, opening, messages and closing. */
2
3
  export class PikkuLocalChannelHandler extends PikkuAbstractChannelHandler {
3
4
  onMessageCallback;
4
5
  onBinaryMessageCallback;
@@ -1,6 +1,19 @@
1
1
  import type { CoreChannel, RunChannelOptions } from '../channel.types.js';
2
2
  import { PikkuLocalChannelHandler } from './local-channel-handler.js';
3
3
  import type { PikkuHTTPRequest, PikkuHTTPResponse } from '../../http/http.types.js';
4
+ /**
5
+ * Opens a channel connection in-process and returns the handler the runtime drives the socket through.
6
+ *
7
+ * For an HTTP upgrade, the HTTP middleware registered for `'*'` and the
8
+ * channel's upgrade middleware run first, then the opening data is validated.
9
+ * Lookup and validation failures are written to `response` as an HTTP error
10
+ * rather than thrown, and resolve `undefined`.
11
+ *
12
+ * @param params.channelId - A unique id for the connection.
13
+ * @param params.request - The upgrade request; its path selects the channel.
14
+ * @param params.route - The path to match when there is no request.
15
+ * @returns The handler, or `undefined` when the channel could not be opened.
16
+ */
4
17
  export declare const runLocalChannel: ({ channelId, request, response, route, skipUserSession, respondWith404, coerceDataFromSchema, logWarningsForStatusCodes, bubbleErrors, }: Partial<Pick<CoreChannel<unknown, any>, 'route'>> & RunChannelOptions & {
5
18
  channelId: string;
6
19
  request?: PikkuHTTPRequest;
@@ -27,6 +27,19 @@ const runUpgradeMiddleware = async (singletonServices, request, response, userSe
27
27
  }
28
28
  return http;
29
29
  };
30
+ /**
31
+ * Opens a channel connection in-process and returns the handler the runtime drives the socket through.
32
+ *
33
+ * For an HTTP upgrade, the HTTP middleware registered for `'*'` and the
34
+ * channel's upgrade middleware run first, then the opening data is validated.
35
+ * Lookup and validation failures are written to `response` as an HTTP error
36
+ * rather than thrown, and resolve `undefined`.
37
+ *
38
+ * @param params.channelId - A unique id for the connection.
39
+ * @param params.request - The upgrade request; its path selects the channel.
40
+ * @param params.route - The path to match when there is no request.
41
+ * @returns The handler, or `undefined` when the channel could not be opened.
42
+ */
30
43
  export const runLocalChannel = async ({ channelId, request, response, route, skipUserSession = false, respondWith404 = true, coerceDataFromSchema = true, logWarningsForStatusCodes = [], bubbleErrors = false, }) => {
31
44
  const singletonServices = getSingletonServices();
32
45
  const createWireServices = getCreateWireServices();
@@ -1,5 +1,6 @@
1
1
  import type { PikkuChannelHandler } from '../channel.types.js';
2
2
  import type { EventHubService } from '../eventhub-service.js';
3
+ /** An {@link EventHubService} that keeps subscriptions in memory, for a single process. A channel that fails to receive is dropped from all its topics. */
3
4
  export declare class LocalEventHubService<Data extends Record<string, any> = {}> implements EventHubService<Data> {
4
5
  private channels;
5
6
  private subscriptions;
@@ -1,3 +1,4 @@
1
+ /** An {@link EventHubService} that keeps subscriptions in memory, for a single process. A channel that fails to receive is dropped from all its topics. */
1
2
  export class LocalEventHubService {
2
3
  channels = new Map();
3
4
  subscriptions = new Map();
@@ -1,2 +1,3 @@
1
1
  import type { Logger } from '../../services/index.js';
2
+ /** Logs every wired channel and its route at info level, typically once at startup. */
2
3
  export declare const logChannels: (logger: Logger) => void;
@@ -1,4 +1,5 @@
1
1
  import { pikkuState } from '../../pikku-state.js';
2
+ /** Logs every wired channel and its route at info level, typically once at startup. */
2
3
  export const logChannels = (logger) => {
3
4
  const channels = pikkuState(null, 'channel', 'channels');
4
5
  if (channels.size === 0) {
@@ -1,4 +1,9 @@
1
1
  import type { BinaryData, PikkuChannel, PikkuChannelHandler } from './channel.types.js';
2
+ /**
3
+ * Base class for a runtime's {@link PikkuChannelHandler}. A runtime implements `send` and `sendBinary`; this builds the {@link PikkuChannel} on top, with in-memory state and `remote`.
4
+ *
5
+ * Closing the channel fails any `remote` calls still waiting on the peer.
6
+ */
2
7
  export declare abstract class PikkuAbstractChannelHandler<OpeningData = unknown, Out = unknown> implements PikkuChannelHandler<OpeningData, Out> {
3
8
  channelId: string;
4
9
  channelName: string;
@@ -1,4 +1,9 @@
1
1
  import { channelRemote, releaseChannelHostRPC } from './channel-host-rpc.js';
2
+ /**
3
+ * Base class for a runtime's {@link PikkuChannelHandler}. A runtime implements `send` and `sendBinary`; this builds the {@link PikkuChannel} on top, with in-memory state and `remote`.
4
+ *
5
+ * Closing the channel fails any `remote` calls still waiting on the peer.
6
+ */
2
7
  export class PikkuAbstractChannelHandler {
3
8
  channelId;
4
9
  channelName;
@@ -1,10 +1,42 @@
1
1
  import type { CoreChannel, RunChannelOptions, RunChannelParams, PikkuChannelHandlerFactory } from '../channel.types.js';
2
2
  import type { ChannelStore } from '../channel-store.js';
3
+ /** Parameters for the serverless channel runners: the connection, the {@link ChannelStore} that persists it, and the factory that builds a handler able to send through the platform. */
3
4
  export interface RunServerlessChannelParams<ChannelData> extends RunChannelParams<ChannelData> {
4
5
  channelStore: ChannelStore;
5
6
  channelHandlerFactory: PikkuChannelHandlerFactory;
6
7
  channelObject?: unknown;
7
8
  }
9
+ /**
10
+ * Handles a serverless connect event: opens the channel, stores it, and runs `onConnect`.
11
+ *
12
+ * The opening data is validated against the channel's input schema. If
13
+ * `onConnect` (or its middleware) established a session, its `pikkuUserId` is
14
+ * stored with the channel, and later messages and the disconnect reload the
15
+ * session from `sessionStore` by that id. On success the response status is 101.
16
+ *
17
+ * Errors from `onConnect` are written to `response` as an HTTP error unless
18
+ * `bubbleErrors` is set.
19
+ *
20
+ * @throws {NotFoundError} When no channel is wired at `route`.
21
+ * @throws When the opening data fails validation.
22
+ */
8
23
  export declare const runChannelConnect: ({ channelId, channelObject, request, response, route, channelStore, channelHandlerFactory, coerceDataFromSchema, logWarningsForStatusCodes, respondWith404, bubbleErrors, }: Pick<CoreChannel<unknown, any>, 'route'> & RunChannelOptions & RunServerlessChannelParams<unknown>) => Promise<void>;
24
+ /**
25
+ * Handles a serverless disconnect event: runs `onDisconnect` with the stored session, then removes the channel from the store.
26
+ *
27
+ * A channel already missing from the store is logged and ignored, and an error
28
+ * from `onDisconnect` is logged rather than thrown, so the channel is always
29
+ * removed.
30
+ */
9
31
  export declare const runChannelDisconnect: ({ channelId, channelStore, channelHandlerFactory, }: RunServerlessChannelParams<unknown>) => Promise<void>;
32
+ /**
33
+ * Handles one message on a serverless channel, with the session reloaded from `sessionStore` by the `pikkuUserId` stored on connect.
34
+ *
35
+ * @param params - The connection and its store.
36
+ * @param data - The message as received.
37
+ * @returns The handler's reply. When the handler throws, the error is logged and
38
+ * `{ error, errorName }` is returned with the error's message, so the runtime
39
+ * can send it to the client. Throw errors whose messages are safe to show.
40
+ * @throws Whatever the store throws for a channel it does not hold.
41
+ */
10
42
  export declare const runChannelMessage: ({ channelId, channelStore, channelHandlerFactory, }: RunServerlessChannelParams<unknown>, data: unknown) => Promise<unknown>;
@@ -26,6 +26,20 @@ const getVariablesForChannel = ({ channelId, channelName, channelHandlerFactory,
26
26
  meta,
27
27
  };
28
28
  };
29
+ /**
30
+ * Handles a serverless connect event: opens the channel, stores it, and runs `onConnect`.
31
+ *
32
+ * The opening data is validated against the channel's input schema. If
33
+ * `onConnect` (or its middleware) established a session, its `pikkuUserId` is
34
+ * stored with the channel, and later messages and the disconnect reload the
35
+ * session from `sessionStore` by that id. On success the response status is 101.
36
+ *
37
+ * Errors from `onConnect` are written to `response` as an HTTP error unless
38
+ * `bubbleErrors` is set.
39
+ *
40
+ * @throws {NotFoundError} When no channel is wired at `route`.
41
+ * @throws When the opening data fails validation.
42
+ */
29
43
  export const runChannelConnect = async ({ channelId, channelObject, request, response, route, channelStore, channelHandlerFactory, coerceDataFromSchema = true, logWarningsForStatusCodes = [], respondWith404 = true, bubbleErrors = false, }) => {
30
44
  const singletonServices = getSingletonServices();
31
45
  const createWireServices = getCreateWireServices();
@@ -98,6 +112,13 @@ export const runChannelConnect = async ({ channelId, channelObject, request, res
98
112
  }
99
113
  }
100
114
  };
115
+ /**
116
+ * Handles a serverless disconnect event: runs `onDisconnect` with the stored session, then removes the channel from the store.
117
+ *
118
+ * A channel already missing from the store is logged and ignored, and an error
119
+ * from `onDisconnect` is logged rather than thrown, so the channel is always
120
+ * removed.
121
+ */
101
122
  export const runChannelDisconnect = async ({ channelId, channelStore, channelHandlerFactory, }) => {
102
123
  const singletonServices = getSingletonServices();
103
124
  const createWireServices = getCreateWireServices();
@@ -163,6 +184,16 @@ export const runChannelDisconnect = async ({ channelId, channelStore, channelHan
163
184
  await closeWireServices(singletonServices.logger, wireServices);
164
185
  }
165
186
  };
187
+ /**
188
+ * Handles one message on a serverless channel, with the session reloaded from `sessionStore` by the `pikkuUserId` stored on connect.
189
+ *
190
+ * @param params - The connection and its store.
191
+ * @param data - The message as received.
192
+ * @returns The handler's reply. When the handler throws, the error is logged and
193
+ * `{ error, errorName }` is returned with the error's message, so the runtime
194
+ * can send it to the client. Throw errors whose messages are safe to show.
195
+ * @throws Whatever the store throws for a channel it does not hold.
196
+ */
166
197
  export const runChannelMessage = async ({ channelId, channelStore, channelHandlerFactory, }, data) => {
167
198
  const singletonServices = getSingletonServices();
168
199
  const createWireServices = getCreateWireServices();
@@ -1,4 +1,12 @@
1
1
  import type { CorePikkuCLIRender } from '../cli.types.js';
2
+ /**
3
+ * Runs a CLI program whose commands execute on a server, sending each parsed command over a pikku WebSocket and rendering the result locally.
4
+ *
5
+ * Parsing and help happen on the client. Exits the process with status 1 when
6
+ * the program does not exist or the arguments do not parse; resolves when the
7
+ * server reports the command complete or the socket closes, and rejects on a
8
+ * socket or renderer error.
9
+ */
2
10
  export declare function executeCLIViaChannel({ programName, pikkuWS, args, renderers, defaultRenderer, }: {
3
11
  programName: string;
4
12
  pikkuWS: any;
@@ -4,6 +4,14 @@ import { generateCommandHelp, parseCLIArguments } from '../command-parser.js';
4
4
  const defaultJSONRenderer = (_services, data) => {
5
5
  console.log(JSON.stringify(data));
6
6
  };
7
+ /**
8
+ * Runs a CLI program whose commands execute on a server, sending each parsed command over a pikku WebSocket and rendering the result locally.
9
+ *
10
+ * Parsing and help happen on the client. Exits the process with status 1 when
11
+ * the program does not exist or the arguments do not parse; resolves when the
12
+ * server reports the command complete or the socket closes, and rejects on a
13
+ * socket or renderer error.
14
+ */
7
15
  export async function executeCLIViaChannel({ programName, pikkuWS, args = process.argv.slice(2), renderers = {}, defaultRenderer, }) {
8
16
  const cliMeta = pikkuState(null, 'cli', 'meta');
9
17
  if (!cliMeta || !('programs' in cliMeta)) {
@@ -24,6 +24,7 @@ export type RawCLIFrame = {
24
24
  event: 'complete';
25
25
  exitCode: number;
26
26
  };
27
+ /** What the server produces for one raw CLI invocation: help text, a result, or an error, plus the exit code the client should exit with. */
27
28
  export interface RawCLIResult {
28
29
  help?: string;
29
30
  result?: unknown;
@@ -8,7 +8,32 @@ export declare class CLIError extends Error {
8
8
  exitCode: number;
9
9
  constructor(message: string, exitCode?: number);
10
10
  }
11
+ /**
12
+ * Wires a command-line program: its commands, nested subcommands, options, renderers and middleware.
13
+ *
14
+ * Each command runs a pikku function with its positionals and options as input.
15
+ * The result is printed by the command's renderer, the program's `render`, or
16
+ * as JSON (also forced by `--json`). Run the program locally with
17
+ * {@link executeCLI}, or remotely over a channel.
18
+ *
19
+ * Registration needs the metadata `pikku` generates for the program. When none
20
+ * is found the wiring is skipped with a warning rather than throwing.
21
+ *
22
+ * @param cli - The program name, its commands, global options, renderer and middleware.
23
+ *
24
+ * @example snippet: wireCli
25
+ */
11
26
  export declare const wireCLI: <Commands extends Record<string, CoreCLICommandConfig<any, any, any>>, GlobalOptions, PikkuMiddleware extends CorePikkuMiddleware, GlobalOutput>(cli: CoreCLI<Commands, GlobalOptions, PikkuMiddleware, GlobalOutput>) => void;
27
+ /**
28
+ * Runs one already-parsed CLI command. {@link executeCLI} calls this locally; the CLI channel runners call it for remote clients.
29
+ *
30
+ * Program middleware runs first, then the middleware of each command along the
31
+ * path. A local run has no session; over a channel, pass the session the
32
+ * connection authenticated as.
33
+ *
34
+ * @returns The command's result. It is also rendered, unless `onOutput` is set.
35
+ * @throws {NotFoundError} When the program or command path does not exist.
36
+ */
12
37
  export declare function runCLICommand({ program, commandPath, data, singletonServices, createWireServices, onOutput, session, transport, }: {
13
38
  program: string;
14
39
  commandPath: string[];
@@ -33,7 +58,25 @@ export declare function runCLICommand({ program, commandPath, data, singletonSer
33
58
  */
34
59
  transport?: PikkuChannel<unknown, any, any>;
35
60
  }): Promise<any>;
61
+ /**
62
+ * Declares a renderer that prints a CLI command's result, typed against the command's output. Returns the renderer unchanged.
63
+ *
64
+ * Write to stdout only what the user should see; stdout is reserved for the
65
+ * command's output.
66
+ *
67
+ * @example snippet: cliRenderer
68
+ */
36
69
  export declare const pikkuCLIRender: <Data, Services extends CoreSingletonServices = CoreServices, Session extends CoreUserSession = CoreUserSession>(renderer: (services: Services, data: Data, session?: Session) => void | Promise<void>) => CorePikkuCLIRender<Data, Services, Session>;
70
+ /**
71
+ * Runs a wired CLI program in this process: parses `args`, prints help when asked, builds config and singleton services, and runs the command.
72
+ *
73
+ * Config and services are created only after parsing succeeds, so `--help` and
74
+ * argument errors never touch the project. Parse warnings go to stderr.
75
+ *
76
+ * @param params.programName - The program passed to {@link wireCLI}.
77
+ * @param params.args - The arguments after the program name, usually `process.argv.slice(2)`.
78
+ * @throws {CLIError} On an unknown program or command, invalid arguments, or a failed command. The caller should exit with its `exitCode`.
79
+ */
37
80
  export declare function executeCLI({ programName, args, createConfig, createSingletonServices, createWireServices, }: {
38
81
  programName: string;
39
82
  args?: string[];
@@ -19,6 +19,21 @@ export class CLIError extends Error {
19
19
  const defaultJSONRenderer = (_services, data) => {
20
20
  console.log(JSON.stringify(data));
21
21
  };
22
+ /**
23
+ * Wires a command-line program: its commands, nested subcommands, options, renderers and middleware.
24
+ *
25
+ * Each command runs a pikku function with its positionals and options as input.
26
+ * The result is printed by the command's renderer, the program's `render`, or
27
+ * as JSON (also forced by `--json`). Run the program locally with
28
+ * {@link executeCLI}, or remotely over a channel.
29
+ *
30
+ * Registration needs the metadata `pikku` generates for the program. When none
31
+ * is found the wiring is skipped with a warning rather than throwing.
32
+ *
33
+ * @param cli - The program name, its commands, global options, renderer and middleware.
34
+ *
35
+ * @example snippet: wireCli
36
+ */
22
37
  export const wireCLI = (cli) => {
23
38
  const cliMeta = pikkuState(null, 'cli', 'meta') || {};
24
39
  if (!cliMeta.programs?.[cli.program]) {
@@ -153,6 +168,16 @@ function pluckCLIData(mergedData, funcName, availableOptions, packageName) {
153
168
  return { ...mergedData };
154
169
  }
155
170
  }
171
+ /**
172
+ * Runs one already-parsed CLI command. {@link executeCLI} calls this locally; the CLI channel runners call it for remote clients.
173
+ *
174
+ * Program middleware runs first, then the middleware of each command along the
175
+ * path. A local run has no session; over a channel, pass the session the
176
+ * connection authenticated as.
177
+ *
178
+ * @returns The command's result. It is also rendered, unless `onOutput` is set.
179
+ * @throws {NotFoundError} When the program or command path does not exist.
180
+ */
156
181
  export async function runCLICommand({ program, commandPath, data, singletonServices, createWireServices, onOutput, session, transport, }) {
157
182
  const cliMeta = pikkuState(null, 'cli', 'meta');
158
183
  const programMeta = cliMeta.programs?.[program];
@@ -273,9 +298,27 @@ export async function runCLICommand({ program, commandPath, data, singletonServi
273
298
  await channel.close();
274
299
  }
275
300
  }
301
+ /**
302
+ * Declares a renderer that prints a CLI command's result, typed against the command's output. Returns the renderer unchanged.
303
+ *
304
+ * Write to stdout only what the user should see; stdout is reserved for the
305
+ * command's output.
306
+ *
307
+ * @example snippet: cliRenderer
308
+ */
276
309
  export const pikkuCLIRender = (renderer) => {
277
310
  return renderer;
278
311
  };
312
+ /**
313
+ * Runs a wired CLI program in this process: parses `args`, prints help when asked, builds config and singleton services, and runs the command.
314
+ *
315
+ * Config and services are created only after parsing succeeds, so `--help` and
316
+ * argument errors never touch the project. Parse warnings go to stderr.
317
+ *
318
+ * @param params.programName - The program passed to {@link wireCLI}.
319
+ * @param params.args - The arguments after the program name, usually `process.argv.slice(2)`.
320
+ * @throws {CLIError} On an unknown program or command, invalid arguments, or a failed command. The caller should exit with its `exitCode`.
321
+ */
279
322
  export async function executeCLI({ programName, args, createConfig, createSingletonServices, createWireServices, }) {
280
323
  if (!args) {
281
324
  throw new Error('CLI arguments are required, this is to satisfy release diffs');
@@ -75,6 +75,7 @@ export interface CLICommandMeta {
75
75
  subcommands?: Record<string, CLICommandMeta>;
76
76
  middleware?: MiddlewareMetadata[];
77
77
  isDefault?: boolean;
78
+ hidden?: boolean;
78
79
  }
79
80
  /**
80
81
  * CLI metadata collection (per program)
@@ -209,6 +210,8 @@ export type CoreCLICommandConfig<FuncConfig, PikkuMiddleware extends CorePikkuMi
209
210
  permissions?: any[];
210
211
  /** Runs when the parent is invoked with no subcommand named. */
211
212
  isDefault?: boolean;
213
+ /** Still runs, but is left out of `--help`: for commands a program invokes, not a person. */
214
+ hidden?: boolean;
212
215
  };
213
216
  /**
214
217
  * CLI command definition
@@ -227,6 +230,7 @@ export interface CoreCLICommand<In, Out, PikkuFunctionConfig extends CorePikkuFu
227
230
  tags?: string[];
228
231
  subcommands?: Subcommands;
229
232
  isDefault?: boolean;
233
+ hidden?: boolean;
230
234
  }
231
235
  /**
232
236
  * Shorthand command definition (just a function)
@@ -1,4 +1,5 @@
1
1
  import type { CLIMeta } from './cli.types.js';
2
+ /** The result of {@link parseCLIArguments}: which command was named, its positionals and options, and any errors that stop it running. */
2
3
  export interface ParsedCommand {
3
4
  program: string;
4
5
  commandPath: string[];
@@ -8,5 +9,17 @@ export interface ParsedCommand {
8
9
  /** Non-fatal: the command still runs. */
9
10
  warnings: string[];
10
11
  }
12
+ /**
13
+ * Parses argv against a program's generated CLI metadata.
14
+ *
15
+ * Never throws on bad input: unknown commands and invalid values are returned in
16
+ * `errors`, unknown options in `warnings`. Safe to run on argv from a remote
17
+ * client, since the work done is bounded by the input's length.
18
+ *
19
+ * @param args - The arguments after the program name.
20
+ * @param programName - The program to parse for.
21
+ * @param allMeta - Generated CLI metadata.
22
+ */
11
23
  export declare function parseCLIArguments(args: string[], programName: string, allMeta: CLIMeta): ParsedCommand;
24
+ /** Builds the help text for a program, or for the command at `commandPath`, from its generated metadata. */
12
25
  export declare function generateCommandHelp(programName: string, allMeta: CLIMeta, commandPath?: string[]): string;
@@ -166,6 +166,17 @@ function assignOptionValue(optionArgs, key, value) {
166
166
  optionArgs[key] = value;
167
167
  }
168
168
  }
169
+ /**
170
+ * Parses argv against a program's generated CLI metadata.
171
+ *
172
+ * Never throws on bad input: unknown commands and invalid values are returned in
173
+ * `errors`, unknown options in `warnings`. Safe to run on argv from a remote
174
+ * client, since the work done is bounded by the input's length.
175
+ *
176
+ * @param args - The arguments after the program name.
177
+ * @param programName - The program to parse for.
178
+ * @param allMeta - Generated CLI metadata.
179
+ */
169
180
  export function parseCLIArguments(args, programName, allMeta) {
170
181
  const result = {
171
182
  program: programName,
@@ -471,6 +482,7 @@ function applyOptionDefaults(optionDefs, options, result) {
471
482
  }
472
483
  }
473
484
  }
485
+ /** Builds the help text for a program, or for the command at `commandPath`, from its generated metadata. */
474
486
  export function generateCommandHelp(programName, allMeta, commandPath = []) {
475
487
  const lines = [];
476
488
  const meta = allMeta.programs[programName];
@@ -482,6 +494,8 @@ export function generateCommandHelp(programName, allMeta, commandPath = []) {
482
494
  lines.push('');
483
495
  lines.push('Commands:');
484
496
  for (const [name, cmd] of Object.entries(meta.commands)) {
497
+ if (cmd.hidden)
498
+ continue;
485
499
  const desc = cmd.description || '';
486
500
  const defaultMarker = cmd.isDefault ? ' (default)' : '';
487
501
  lines.push(` ${name.padEnd(20)} ${desc}${defaultMarker}`);
@@ -520,6 +534,8 @@ export function generateCommandHelp(programName, allMeta, commandPath = []) {
520
534
  lines.push('');
521
535
  lines.push('Subcommands:');
522
536
  for (const [name, sub] of Object.entries(commandMeta.subcommands)) {
537
+ if (sub.hidden)
538
+ continue;
523
539
  const desc = sub.description || '';
524
540
  lines.push(` ${name.padEnd(20)} ${desc}`);
525
541
  }
@@ -11,6 +11,7 @@ export type CredentialOverride = string | {
11
11
  /** `wire` is per user, `singleton` is one value for the deployment. */
12
12
  mode?: 'singleton' | 'wire';
13
13
  };
14
+ /** Per-credential overrides for a wired package, keyed by the name the package declared. */
14
15
  export type CredentialOverrides = Record<string, CredentialOverride>;
15
16
  /** The rename half, in the `Record<string, string>` shape the alias path wants. */
16
17
  export declare const credentialOverrideAliases: (overrides: CredentialOverrides | undefined) => Record<string, string>;
@@ -1,4 +1,9 @@
1
1
  import type { OAuth2CredentialConfig } from '../secret/secret.types.js';
2
+ /**
3
+ * The declaration {@link defineCredential} takes: a credential a user or the
4
+ * deployment has to supply, such as an API key or an OAuth connection. Values are
5
+ * stored by the `CredentialService`, never in code or generated meta.
6
+ */
2
7
  export type CoreCredential<T = unknown> = {
3
8
  /** How the credential is asked for in code. Generated into `CredentialsMap`, so it is what `credentials.get` autocompletes. */
4
9
  name: string;
@@ -29,5 +34,7 @@ export type CredentialDefinitionMeta = {
29
34
  };
30
35
  sourceFile?: string;
31
36
  };
37
+ /** Credential declarations collected by the CLI, keyed by name. */
32
38
  export type CredentialDefinitionsMeta = Record<string, CredentialDefinitionMeta>;
39
+ /** Credential declarations as the inspector found them, before de-duplication. */
33
40
  export type CredentialDefinitions = CredentialDefinitionMeta[];
@@ -1,4 +1,11 @@
1
1
  import type { CredentialDefinitions, CredentialDefinitionsMeta } from './credential.types.js';
2
2
  import type { SchemaRefLike } from '../../types/core.types.js';
3
3
  export type { SchemaRefLike };
4
+ /**
5
+ * Merges the credential declarations the inspector found into meta keyed by name.
6
+ * A name declared more than once must agree on type and schema.
7
+ *
8
+ * @throws Error when two declarations of one name disagree on `type` or schema.
9
+ * @internal Called by the CLI when generating meta.
10
+ */
4
11
  export declare function validateAndBuildCredentialDefinitionsMeta(definitions: CredentialDefinitions, schemaLookup: Map<string, SchemaRefLike>): CredentialDefinitionsMeta;