@pikku/core 0.12.143 → 0.12.144

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 (700) 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/command-parser.d.ts +13 -0
  216. package/dist/wirings/cli/command-parser.js +12 -0
  217. package/dist/wirings/credential/credential-overrides.d.ts +1 -0
  218. package/dist/wirings/credential/credential.types.d.ts +7 -0
  219. package/dist/wirings/credential/validate-credential-definitions.d.ts +7 -0
  220. package/dist/wirings/credential/validate-credential-definitions.js +7 -0
  221. package/dist/wirings/flag/cached-flag-source.d.ts +1 -0
  222. package/dist/wirings/flag/flag.types.d.ts +3 -0
  223. package/dist/wirings/gateway/gateway-runner.d.ts +23 -0
  224. package/dist/wirings/gateway/gateway-runner.js +23 -0
  225. package/dist/wirings/gateway/gateway.types.d.ts +3 -0
  226. package/dist/wirings/gateway/local-gateway-service.d.ts +10 -0
  227. package/dist/{services → wirings/gateway}/local-gateway-service.js +6 -2
  228. package/dist/wirings/http/http-routes.d.ts +21 -0
  229. package/dist/wirings/http/http-routes.js +11 -0
  230. package/dist/wirings/http/http-runner.d.ts +71 -0
  231. package/dist/wirings/http/http-runner.js +73 -5
  232. package/dist/wirings/http/http.types.d.ts +27 -0
  233. package/dist/wirings/http/index.d.ts +1 -0
  234. package/dist/wirings/http/index.js +1 -0
  235. package/dist/wirings/http/log-http-routes.d.ts +1 -0
  236. package/dist/wirings/http/log-http-routes.js +1 -0
  237. package/dist/wirings/http/merge-request-data.d.ts +12 -0
  238. package/dist/wirings/http/merge-request-data.js +42 -0
  239. package/dist/wirings/http/pikku-fetch-http-request.d.ts +1 -0
  240. package/dist/wirings/http/pikku-fetch-http-request.js +3 -32
  241. package/dist/wirings/http/pikku-fetch-http-response.d.ts +1 -0
  242. package/dist/wirings/http/pikku-fetch-http-response.js +1 -0
  243. package/dist/wirings/http/routers/http-router.d.ts +6 -0
  244. package/dist/wirings/http/routers/http-router.js +6 -0
  245. package/dist/wirings/http/web-request.d.ts +17 -0
  246. package/dist/wirings/http/web-request.js +17 -0
  247. package/dist/wirings/mcp/mcp-endpoint-registry.d.ts +7 -0
  248. package/dist/wirings/mcp/mcp-endpoint-registry.js +7 -0
  249. package/dist/wirings/mcp/mcp-runner.d.ts +63 -0
  250. package/dist/wirings/mcp/mcp-runner.js +62 -0
  251. package/dist/wirings/mcp/mcp.types.d.ts +12 -0
  252. package/dist/wirings/node/node.types.d.ts +4 -0
  253. package/dist/wirings/oauth2/oauth2.types.d.ts +2 -0
  254. package/dist/{services → wirings/queue}/in-memory-queue-service.d.ts +9 -1
  255. package/dist/{services → wirings/queue}/in-memory-queue-service.js +9 -1
  256. package/dist/wirings/queue/index.d.ts +1 -0
  257. package/dist/wirings/queue/index.js +1 -0
  258. package/dist/wirings/queue/queue-identity.js +2 -14
  259. package/dist/wirings/queue/queue-runner.d.ts +37 -0
  260. package/dist/wirings/queue/queue-runner.js +37 -0
  261. package/dist/wirings/queue/queue.types.d.ts +35 -0
  262. package/dist/wirings/queue/register-queue-helper.d.ts +12 -0
  263. package/dist/wirings/queue/register-queue-helper.js +11 -0
  264. package/dist/wirings/queue/remote-queue-job.d.ts +11 -0
  265. package/dist/wirings/queue/remote-queue-job.js +41 -0
  266. package/dist/wirings/queue/validate-worker-config.d.ts +1 -0
  267. package/dist/wirings/role/role.types.d.ts +3 -0
  268. package/dist/wirings/rpc/rpc-runner.d.ts +24 -0
  269. package/dist/wirings/rpc/rpc-runner.js +37 -2
  270. package/dist/wirings/rpc/rpc-types.d.ts +2 -0
  271. package/dist/wirings/scheduler/index.d.ts +1 -0
  272. package/dist/wirings/scheduler/index.js +1 -0
  273. package/dist/wirings/scheduler/log-schedulers.d.ts +1 -0
  274. package/dist/wirings/scheduler/log-schedulers.js +1 -0
  275. package/dist/wirings/scheduler/remote-scheduled-job.d.ts +11 -0
  276. package/dist/wirings/scheduler/remote-scheduled-job.js +20 -0
  277. package/dist/wirings/scheduler/scheduler-runner.d.ts +29 -0
  278. package/dist/wirings/scheduler/scheduler-runner.js +28 -0
  279. package/dist/wirings/scheduler/scheduler.types.d.ts +3 -0
  280. package/dist/wirings/scope/scope.types.d.ts +5 -0
  281. package/dist/wirings/secret/index.d.ts +2 -2
  282. package/dist/wirings/secret/index.js +1 -1
  283. package/dist/wirings/secret/secret.types.d.ts +26 -1
  284. package/dist/wirings/secret/secret.types.js +1 -0
  285. package/dist/wirings/secret/validate-secret-definitions.d.ts +8 -0
  286. package/dist/wirings/secret/validate-secret-definitions.js +15 -0
  287. package/dist/wirings/trigger/in-memory-trigger-service.d.ts +11 -0
  288. package/dist/{services → wirings/trigger}/in-memory-trigger-service.js +10 -3
  289. package/dist/wirings/trigger/index.d.ts +1 -1
  290. package/dist/wirings/trigger/pikku-trigger-service.d.ts +8 -3
  291. package/dist/wirings/trigger/pikku-trigger-service.js +14 -3
  292. package/dist/wirings/trigger/trigger-runner.d.ts +27 -2
  293. package/dist/wirings/trigger/trigger-runner.js +35 -2
  294. package/dist/wirings/trigger/trigger.types.d.ts +26 -4
  295. package/dist/wirings/trigger/webhook-source-runner.d.ts +24 -0
  296. package/dist/wirings/trigger/webhook-source-runner.js +19 -0
  297. package/dist/wirings/trigger/webhook-source.types.d.ts +12 -2
  298. package/dist/wirings/trigger/webhook-source.types.js +1 -1
  299. package/dist/wirings/variable/validate-variable-definitions.d.ts +7 -0
  300. package/dist/wirings/variable/validate-variable-definitions.js +7 -0
  301. package/dist/wirings/variable/variable.types.d.ts +7 -0
  302. package/dist/wirings/virtual-user/conversation/conversation.types.d.ts +5 -0
  303. package/dist/wirings/virtual-user/conversation/run-conversation.d.ts +6 -0
  304. package/dist/wirings/virtual-user/conversation/run-conversation.js +1 -1
  305. package/dist/{services → wirings/virtual-user}/http-virtual-users.d.ts +4 -3
  306. package/dist/{services → wirings/virtual-user}/http-virtual-users.js +6 -6
  307. package/dist/wirings/virtual-user/index.d.ts +1 -1
  308. package/dist/wirings/virtual-user/index.js +1 -1
  309. package/dist/wirings/virtual-user/run-virtual-user.d.ts +2 -1
  310. package/dist/wirings/virtual-user/run-virtual-user.js +1 -14
  311. package/dist/wirings/virtual-user/virtual-user-declaration.types.d.ts +4 -0
  312. package/dist/wirings/virtual-user/virtual-user-scaffold.d.ts +10 -1
  313. package/dist/wirings/virtual-user/virtual-user-scaffold.js +5 -0
  314. package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +5 -0
  315. package/dist/wirings/virtual-user/virtual-user-schedule.js +1 -0
  316. package/dist/wirings/virtual-user/virtual-user-target.d.ts +1 -0
  317. package/dist/wirings/webhook/define-outgoing-webhook.d.ts +20 -0
  318. package/dist/wirings/webhook/define-outgoing-webhook.js +9 -0
  319. package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +8 -4
  320. package/dist/wirings/workflow/dsl/workflow-runner.d.ts +7 -0
  321. package/dist/wirings/workflow/dsl/workflow-runner.js +7 -0
  322. package/dist/wirings/workflow/feature.d.ts +12 -0
  323. package/dist/wirings/workflow/feature.js +12 -0
  324. package/dist/wirings/workflow/graph/graph-node.d.ts +5 -0
  325. package/dist/wirings/workflow/graph/graph-node.js +5 -0
  326. package/dist/wirings/workflow/graph/template.d.ts +6 -0
  327. package/dist/wirings/workflow/graph/template.js +5 -0
  328. package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +12 -0
  329. package/dist/wirings/workflow/graph/wire-workflow-graph.js +10 -0
  330. package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +11 -0
  331. package/dist/wirings/workflow/graph/workflow-graph.types.js +1 -0
  332. package/dist/{services → wirings/workflow}/in-memory-workflow-service.d.ts +8 -3
  333. package/dist/{services → wirings/workflow}/in-memory-workflow-service.js +9 -4
  334. package/dist/wirings/workflow/pikku-scenario-service.d.ts +1 -1
  335. package/dist/wirings/workflow/pikku-scenario-service.js +2 -2
  336. package/dist/wirings/workflow/pikku-workflow-service.d.ts +1 -0
  337. package/dist/wirings/workflow/pikku-workflow-service.js +1 -0
  338. package/dist/wirings/workflow/run-timeline.d.ts +21 -0
  339. package/dist/wirings/workflow/run-timeline.js +15 -7
  340. package/dist/wirings/workflow/scenario-coverage.d.ts +1 -0
  341. package/dist/wirings/workflow/scenario-poll.d.ts +1 -0
  342. package/dist/wirings/workflow/scenario-prose.d.ts +6 -0
  343. package/dist/wirings/workflow/scenario-prose.js +6 -0
  344. package/dist/wirings/workflow/scenario-run.types.d.ts +3 -0
  345. package/dist/wirings/workflow/scenario-step.types.d.ts +1 -0
  346. package/dist/wirings/workflow/scenario-step.types.js +1 -0
  347. package/dist/wirings/workflow/scenario-surface.js +1 -13
  348. package/dist/wirings/workflow/scenario.types.d.ts +6 -0
  349. package/dist/wirings/workflow/workflow-approval-policy.d.ts +6 -0
  350. package/dist/wirings/workflow/workflow-approval-policy.js +6 -0
  351. package/dist/wirings/workflow/workflow-constants.d.ts +7 -1
  352. package/dist/wirings/workflow/workflow-constants.js +10 -1
  353. package/dist/wirings/workflow/workflow-errors.d.ts +13 -0
  354. package/dist/wirings/workflow/workflow-errors.js +13 -0
  355. package/dist/wirings/workflow/workflow-invocation-id.d.ts +4 -0
  356. package/dist/wirings/workflow/workflow-invocation-id.js +4 -0
  357. package/dist/wirings/workflow/workflow-queue-workers.d.ts +3 -0
  358. package/dist/wirings/workflow/workflow-run-ownership.d.ts +1 -0
  359. package/dist/wirings/workflow/workflow-run-ownership.js +1 -0
  360. package/dist/wirings/workflow/workflow-status-stream.d.ts +1 -0
  361. package/dist/wirings/workflow/workflow-unwind-plan.js +2 -7
  362. package/dist/wirings/workflow/workflow.types.d.ts +40 -0
  363. package/package.json +26 -9
  364. package/CHANGELOG.md +0 -6978
  365. package/dist/services/in-memory-trigger-service.d.ts +0 -4
  366. package/dist/services/local-gateway-service.d.ts +0 -6
  367. package/dist/utils/hash.d.ts +0 -2
  368. package/dist/utils/hash.js +0 -23
  369. package/knowledge/decisions/index.md +0 -19
  370. package/knowledge/decisions/internals/a-credential-name-declared-twice-must-agree-on-schema-and-type.md +0 -29
  371. package/knowledge/decisions/internals/a-grant-can-name-a-scope-declared-without-its-addon.md +0 -29
  372. package/knowledge/decisions/internals/a-held-run-is-woken-later-not-retried.md +0 -28
  373. package/knowledge/decisions/internals/a-latency-budget-is-asserted-by-its-cause.md +0 -32
  374. package/knowledge/decisions/internals/a-non-streaming-agent-run-registers-with-agentrunstate-too.md +0 -22
  375. package/knowledge/decisions/internals/a-reset-suite-makes-the-dev-seed-the-fixture.md +0 -50
  376. package/knowledge/decisions/internals/a-resumed-agent-turn-is-as-interruptible-as-the-first.md +0 -20
  377. package/knowledge/decisions/internals/a-scenario-step-template-is-offered-unfilled.md +0 -21
  378. package/knowledge/decisions/internals/a-scheduled-task-writes-its-caller-session-before-it-runs.md +0 -22
  379. package/knowledge/decisions/internals/a-secret-set-in-memory-shadows-the-variable-of-the-same-name.md +0 -28
  380. package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +0 -49
  381. package/knowledge/decisions/internals/a-virtual-user-acts-through-invokeraw-so-a-refusal-is-data.md +0 -32
  382. package/knowledge/decisions/internals/a-virtual-user-cadence-is-a-row-not-a-timer.md +0 -66
  383. package/knowledge/decisions/internals/a-virtual-user-converse-signs-in-before-its-first-turn.md +0 -24
  384. package/knowledge/decisions/internals/a-virtual-user-decides-whether-to-trust-memory-once-per-turn.md +0 -21
  385. package/knowledge/decisions/internals/a-virtual-user-email-is-computed-with-the-run-id-as-a-sub-address.md +0 -34
  386. package/knowledge/decisions/internals/a-virtual-user-run-is-not-a-workflow-but-it-needs-a-trigger.md +0 -65
  387. package/knowledge/decisions/internals/a-wall-clock-threshold-is-a-load-test-in-disguise.md +0 -49
  388. package/knowledge/decisions/internals/a-workflow-wire-is-built-from-the-run-not-from-the-rpc-service.md +0 -45
  389. package/knowledge/decisions/internals/addon-package-roots-resolve-by-walking-node-module-search-paths.md +0 -26
  390. package/knowledge/decisions/internals/addon-pikku-meta-ships-at-the-package-root-or-under-dist.md +0 -32
  391. package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +0 -33
  392. package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +0 -28
  393. package/knowledge/decisions/internals/agent-agui-bridge-obeys-the-client-ordering-contract.md +0 -29
  394. package/knowledge/decisions/internals/agent-audio-chunks-carry-the-format-the-provider-returned.md +0 -20
  395. package/knowledge/decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md +0 -21
  396. package/knowledge/decisions/internals/agent-credential-suspensions-hide-the-tool-result.md +0 -26
  397. package/knowledge/decisions/internals/agent-delegate-and-supervise-hide-different-text.md +0 -26
  398. package/knowledge/decisions/internals/agent-llm-tool-arguments-have-nulls-stripped.md +0 -23
  399. package/knowledge/decisions/internals/agent-model-config-stays-a-single-resolution-seam.md +0 -25
  400. package/knowledge/decisions/internals/agent-onerror-hooks-cannot-change-the-failure.md +0 -22
  401. package/knowledge/decisions/internals/agent-runner-methods-must-keep-their-receiver.md +0 -22
  402. package/knowledge/decisions/internals/agent-speech-travels-as-a-custom-agui-event.md +0 -22
  403. package/knowledge/decisions/internals/agent-stream-persistence-is-best-effort.md +0 -27
  404. package/knowledge/decisions/internals/agent-sub-agents-inherit-the-parent-context-block.md +0 -26
  405. package/knowledge/decisions/internals/agent-tool-execute-failures-are-logged-unconditionally.md +0 -25
  406. package/knowledge/decisions/internals/agent-voice-input-transcribes-audio-parts-in-place.md +0 -22
  407. package/knowledge/decisions/internals/agent-working-memory-is-persisted-only-when-valid.md +0 -25
  408. package/knowledge/decisions/internals/an-addon-scope-root-loses-to-a-root-the-host-already-declares.md +0 -39
  409. package/knowledge/decisions/internals/an-agent-interrupt-is-not-a-failure.md +0 -23
  410. package/knowledge/decisions/internals/an-agent-is-offered-under-its-registry-key-and-only-within-the-virtual-users-scopes.md +0 -27
  411. package/knowledge/decisions/internals/an-agent-run-owned-by-another-instance-says-so.md +0 -25
  412. package/knowledge/decisions/internals/an-agent-stream-send-must-return-the-inner-sends-promise.md +0 -22
  413. package/knowledge/decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md +0 -20
  414. package/knowledge/decisions/internals/an-empty-transcript-is-not-recorded.md +0 -22
  415. package/knowledge/decisions/internals/an-oauth2-credential-implies-an-optional-app-secret.md +0 -26
  416. package/knowledge/decisions/internals/an-unref-d-timer-cannot-be-awaited-under-node-test.md +0 -66
  417. package/knowledge/decisions/internals/analytics-identity-resolvers-run-in-declared-order.md +0 -22
  418. package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +0 -30
  419. package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +0 -31
  420. package/knowledge/decisions/internals/channel-state-accessors-are-unsound-generics-that-every-implementation-asserts.md +0 -33
  421. package/knowledge/decisions/internals/channel-state-is-per-socket-session-state-is-per-user.md +0 -29
  422. package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +0 -28
  423. package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +0 -27
  424. package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +0 -28
  425. package/knowledge/decisions/internals/cli-stdout-is-reserved-for-machine-readable-output.md +0 -34
  426. package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +0 -29
  427. package/knowledge/decisions/internals/core-column-form-is-an-axis-of-its-own.md +0 -84
  428. package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +0 -41
  429. package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +0 -44
  430. package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +0 -39
  431. package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +0 -42
  432. package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +0 -39
  433. package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +0 -43
  434. package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +0 -38
  435. package/knowledge/decisions/internals/core-state-is-a-global-map-written-only-at-registration-time.md +0 -44
  436. package/knowledge/decisions/internals/email-meta-is-read-uncached-because-codegen-rewrites-it-mid-session.md +0 -27
  437. package/knowledge/decisions/internals/feature-flag-declarations-refuse-an-empty-anyof-and-conflicting-scopes.md +0 -22
  438. package/knowledge/decisions/internals/feature-flags-fail-open-and-never-enforce-access.md +0 -28
  439. package/knowledge/decisions/internals/flag-sync-rewrites-only-the-declared-text.md +0 -24
  440. package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +0 -32
  441. package/knowledge/decisions/internals/gateway-listener-middleware-runs-without-an-rpc-on-the-wire.md +0 -43
  442. package/knowledge/decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md +0 -28
  443. package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +0 -31
  444. package/knowledge/decisions/internals/generated-src-paths-in-pikku-meta-are-absolute.md +0 -26
  445. package/knowledge/decisions/internals/global-middleware-resolves-from-the-root-namespace-too.md +0 -32
  446. package/knowledge/decisions/internals/hot-reload-reads-the-changed-source-never-a-compiled-copy.md +0 -38
  447. package/knowledge/decisions/internals/hot-reload-writes-into-the-function-map-captured-at-startup.md +0 -26
  448. package/knowledge/decisions/internals/http-request-bodies-are-read-once-and-shared.md +0 -32
  449. package/knowledge/decisions/internals/http-route-groups-cascade-config-in-a-fixed-order.md +0 -28
  450. package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +0 -30
  451. package/knowledge/decisions/internals/http-runner-logs-through-a-trace-scoped-logger-functions-do-not.md +0 -26
  452. package/knowledge/decisions/internals/http-set-cookie-headers-are-appended-never-joined.md +0 -28
  453. package/knowledge/decisions/internals/http-sse-streams-flush-headers-only-after-middleware.md +0 -32
  454. package/knowledge/decisions/internals/http-wiring-without-metadata-is-skipped-not-fatal.md +0 -26
  455. package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +0 -25
  456. package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +0 -26
  457. package/knowledge/decisions/internals/index.md +0 -182
  458. package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +0 -25
  459. package/knowledge/decisions/internals/local-trigger-and-gateway-services-assume-a-single-process.md +0 -26
  460. package/knowledge/decisions/internals/mcp-wire-names-are-assigned-over-the-whole-registry.md +0 -39
  461. package/knowledge/decisions/internals/node-only-builtins-are-imported-dynamically.md +0 -24
  462. package/knowledge/decisions/internals/one-project-shape-check-two-validators.md +0 -53
  463. package/knowledge/decisions/internals/only-exposed-functions-enter-a-virtual-user-catalogue.md +0 -21
  464. package/knowledge/decisions/internals/queue-group-concurrency-keeps-one-shared-queue-fair.md +0 -28
  465. package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +0 -27
  466. package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +0 -31
  467. package/knowledge/decisions/internals/role-names-cannot-contain-the-scope-separator.md +0 -30
  468. package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +0 -32
  469. package/knowledge/decisions/internals/scenario-agent-calls-sign-in-on-401-only.md +0 -31
  470. package/knowledge/decisions/internals/scenario-given-and-when-are-sugar-but-then-is-not.md +0 -24
  471. package/knowledge/decisions/internals/scenario-meta-lives-apart-from-app-meta-but-merges-when-read-off-disk.md +0 -26
  472. package/knowledge/decisions/internals/scenario-steps-return-drained-response-records.md +0 -27
  473. package/knowledge/decisions/internals/scenarios-live-in-files-named-for-them.md +0 -48
  474. package/knowledge/decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md +0 -30
  475. package/knowledge/decisions/internals/serverless-channel-disconnect-must-tolerate-a-missing-channel.md +0 -28
  476. package/knowledge/decisions/internals/side-effects-are-an-allowlist-not-a-boolean.md +0 -34
  477. package/knowledge/decisions/internals/speech-synthesis-picks-a-voice-per-sentence-and-warns-once.md +0 -24
  478. package/knowledge/decisions/internals/the-agent-done-event-goes-through-the-middleware-and-is-awaited.md +0 -26
  479. package/knowledge/decisions/internals/the-api-report-pins-members-not-just-names.md +0 -43
  480. package/knowledge/decisions/internals/the-core-scope-validator-refuses-separator-wildcard-and-empty-segments.md +0 -22
  481. package/knowledge/decisions/internals/the-dev-queue-copies-prod-timing-and-serialization-semantics.md +0 -30
  482. package/knowledge/decisions/internals/the-ecosystem-entry-point-carries-the-adapter-surface.md +0 -83
  483. package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +0 -29
  484. package/knowledge/decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md +0 -27
  485. package/knowledge/decisions/internals/the-kek-salt-is-scoped-to-the-key-version.md +0 -40
  486. package/knowledge/decisions/internals/the-mcp-handshake-is-challenged-only-when-every-target-is-gated.md +0 -29
  487. package/knowledge/decisions/internals/the-middleware-resolution-cache-is-deliberately-unbounded.md +0 -40
  488. package/knowledge/decisions/internals/the-per-invocation-rpc-view-is-a-class.md +0 -40
  489. package/knowledge/decisions/internals/the-pikku-user-id-resolves-in-a-fixed-order.md +0 -24
  490. package/knowledge/decisions/internals/the-runner-resolves-wire-services-itself.md +0 -31
  491. package/knowledge/decisions/internals/the-schema-service-is-never-stubbed.md +0 -26
  492. package/knowledge/decisions/internals/the-transcript-event-is-sent-ahead-of-the-run.md +0 -25
  493. package/knowledge/decisions/internals/the-virtual-user-catalogue-is-the-only-gate-on-what-may-be-called.md +0 -21
  494. package/knowledge/decisions/internals/the-virtual-user-prompt-says-json-because-of-json-object-mode.md +0 -22
  495. package/knowledge/decisions/internals/the-virtual-user-runtime-is-exported-from-the-virtual-user-entry-point.md +0 -28
  496. package/knowledge/decisions/internals/the-worker-disposition-is-the-one-that-is-not-testing.md +0 -22
  497. package/knowledge/decisions/internals/thread-history-records-the-transcript-not-the-audio.md +0 -25
  498. package/knowledge/decisions/internals/trigger-declaration-is-split-from-trigger-source.md +0 -33
  499. package/knowledge/decisions/internals/typed-secret-service-caches-for-the-process-lifetime.md +0 -26
  500. package/knowledge/decisions/internals/validate-checks-virtual-users-through-a-shared-module.md +0 -43
  501. package/knowledge/decisions/internals/validate-runs-checks-by-precondition.md +0 -115
  502. package/knowledge/decisions/internals/virtual-user-conversation-drives-the-target-through-a-transport-seam.md +0 -24
  503. package/knowledge/decisions/internals/virtual-user-conversation-verdicts-are-llm-self-evaluations.md +0 -25
  504. package/knowledge/decisions/internals/virtual-user-conversations-seed-a-hidden-kickoff-message.md +0 -23
  505. package/knowledge/decisions/internals/virtual-user-step-order-comes-from-insertion-order.md +0 -21
  506. package/knowledge/decisions/internals/virtual-users-are-declared-in-one-definevirtualusers-call-per-codebase.md +0 -30
  507. package/knowledge/decisions/internals/voice-output-speaks-unless-voice-input-explicitly-says-otherwise.md +0 -24
  508. package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +0 -26
  509. package/knowledge/decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md +0 -25
  510. package/knowledge/decisions/internals/whether-a-run-is-inline-is-read-from-the-run-record.md +0 -58
  511. package/knowledge/decisions/internals/wiring-registries-erase-the-generics-their-wire-functions-capture.md +0 -35
  512. package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +0 -34
  513. package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +0 -42
  514. package/knowledge/decisions/internals/workflow-dsl-meta-separates-runtime-expressions-from-literals.md +0 -38
  515. package/knowledge/decisions/internals/workflow-features-resolve-scenarios-by-object-identity.md +0 -29
  516. package/knowledge/decisions/internals/workflow-graph-inline-and-queued-runs-share-one-planner.md +0 -42
  517. package/knowledge/decisions/internals/workflow-graph-node-notes-are-excluded-from-the-graph-hash.md +0 -25
  518. package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +0 -29
  519. package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +0 -43
  520. package/knowledge/decisions/internals/workflow-queued-step-dispatch-requires-an-explicit-opt-in.md +0 -29
  521. package/knowledge/decisions/internals/workflow-queues-are-per-workflow-by-default.md +0 -42
  522. package/knowledge/decisions/internals/workflow-repeated-step-names-get-an-ordinal-suffix.md +0 -33
  523. package/knowledge/decisions/internals/workflow-replay-reads-its-steps-once-and-caches-only-the-immutable-half.md +0 -32
  524. package/knowledge/decisions/internals/workflow-retries-are-owned-by-the-workflow-not-the-queue.md +0 -31
  525. package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +0 -39
  526. package/knowledge/decisions/internals/workflow-run-mirror-is-never-a-source-of-truth.md +0 -29
  527. package/knowledge/decisions/internals/workflow-run-polling-backs-off-to-the-callers-ceiling.md +0 -33
  528. package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +0 -37
  529. package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +0 -54
  530. package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +0 -43
  531. package/knowledge/decisions/internals/workflow-scenario-prose-is-rendered-from-typed-calls-not-parsed-from-english.md +0 -32
  532. package/knowledge/decisions/internals/workflow-scenario-quarantine-reason-lives-in-code.md +0 -18
  533. package/knowledge/decisions/internals/workflow-scenario-step-targets-are-string-literals-for-the-inspector.md +0 -34
  534. package/knowledge/decisions/internals/workflow-step-compensation-runs-as-its-own-durable-step.md +0 -29
  535. package/knowledge/decisions/internals/workflow-step-dispatch-failure-is-transient-not-a-run-failure.md +0 -33
  536. package/knowledge/decisions/internals/workflow-step-lock-is-held-only-to-claim-the-step.md +0 -34
  537. package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +0 -34
  538. package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +0 -38
  539. package/knowledge/decisions/internals/workflow-suspended-runs-keep-their-in-process-context.md +0 -30
  540. package/knowledge/decisions/security/a-bearer-token-checked-against-a-secret-reads-it-per-request.md +0 -26
  541. package/knowledge/decisions/security/a-call-without-a-session-raises-missing-session-not-forbidden.md +0 -20
  542. package/knowledge/decisions/security/a-caller-cookie-wins-over-the-jar-for-the-same-name.md +0 -23
  543. package/knowledge/decisions/security/a-channel-lifecycle-acts-as-the-socket-upgrade-session.md +0 -16
  544. package/knowledge/decisions/security/a-channel-requires-a-session-unless-it-says-auth-false.md +0 -26
  545. package/knowledge/decisions/security/a-credential-read-path-follows-its-declared-type-not-absence.md +0 -32
  546. package/knowledge/decisions/security/a-credential-type-is-a-literal-the-inspector-checks-at-declaration.md +0 -27
  547. package/knowledge/decisions/security/a-dropped-audit-write-is-always-logged.md +0 -28
  548. package/knowledge/decisions/security/a-first-party-cookie-is-written-only-after-its-purposes-consent.md +0 -33
  549. package/knowledge/decisions/security/a-function-never-receives-the-secret-service.md +0 -37
  550. package/knowledge/decisions/security/a-graph-run-starts-at-an-entry-node-the-graph-declared.md +0 -33
  551. package/knowledge/decisions/security/a-permission-gets-a-wire-it-cannot-reply-on.md +0 -33
  552. package/knowledge/decisions/security/a-public-function-says-so-with-auth-false.md +0 -34
  553. package/knowledge/decisions/security/a-readonly-session-reaches-only-readonly-functions.md +0 -25
  554. package/knowledge/decisions/security/a-scaffold-flag-says-a-surface-exists-not-who-may-call-it.md +0 -52
  555. package/knowledge/decisions/security/a-scheduled-virtual-user-run-needs-no-admin-at-run-time.md +0 -27
  556. package/knowledge/decisions/security/a-scoped-credential-view-is-limited-to-declared-names.md +0 -26
  557. package/knowledge/decisions/security/a-scoped-secret-view-reads-only-declared-keys-and-never-writes.md +0 -25
  558. package/knowledge/decisions/security/a-secret-is-sent-only-to-the-hosts-it-declares.md +0 -29
  559. package/knowledge/decisions/security/a-step-can-name-an-identity-no-virtual-user-holds-through-per-call-headers.md +0 -25
  560. package/knowledge/decisions/security/a-step-runs-the-function-the-workflow-dispatched-it-with.md +0 -37
  561. package/knowledge/decisions/security/a-stopped-run-by-id-skips-the-ownership-check.md +0 -24
  562. package/knowledge/decisions/security/a-vault-secret-redacts-on-serialization-and-throws-on-coercion.md +0 -29
  563. package/knowledge/decisions/security/a-virtual-user-catalogue-entry-is-filtered-by-scope-and-approval-is-denied-by-default.md +0 -30
  564. package/knowledge/decisions/security/a-virtual-user-environment-fails-closed.md +0 -38
  565. package/knowledge/decisions/security/a-virtual-user-is-never-offered-a-step-that-would-forge-its-own-oracle.md +0 -27
  566. package/knowledge/decisions/security/a-virtual-user-never-runs-against-production.md +0 -23
  567. package/knowledge/decisions/security/a-virtual-user-reads-its-roles-from-the-apps-own-rpc-before-better-auth.md +0 -27
  568. package/knowledge/decisions/security/a-virtual-user-run-treats-an-unresolved-environment-as-production.md +0 -41
  569. package/knowledge/decisions/security/a-virtual-user-scopes-are-expanded-from-its-roles-once-at-run-preparation.md +0 -25
  570. package/knowledge/decisions/security/a-virtual-user-whose-roles-drift-from-the-declaration-refuses-to-run.md +0 -32
  571. package/knowledge/decisions/security/a-workflow-run-is-read-and-approved-by-its-owner.md +0 -50
  572. package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +0 -43
  573. package/knowledge/decisions/security/addon-config-gates-apply-only-at-the-namespaced-rpc-boundary.md +0 -52
  574. package/knowledge/decisions/security/addon-scopes-are-resolved-where-the-function-runs.md +0 -46
  575. package/knowledge/decisions/security/addon-screen-scopes-hide-and-do-not-enforce.md +0 -20
  576. package/knowledge/decisions/security/agent-approval-forwarding-requires-a-symbol-brand.md +0 -27
  577. package/knowledge/decisions/security/agent-credential-requests-are-symbol-branded.md +0 -37
  578. package/knowledge/decisions/security/agent-gate-requires-a-session-only-when-auth-is-true.md +0 -31
  579. package/knowledge/decisions/security/agent-ownership-failures-never-echo-the-resource.md +0 -23
  580. package/knowledge/decisions/security/agent-resume-re-runs-the-authorization-gate.md +0 -22
  581. package/knowledge/decisions/security/agent-sessionless-deployments-have-no-thread-ownership.md +0 -39
  582. package/knowledge/decisions/security/agent-thread-ownership-composes-the-session-principal.md +0 -30
  583. package/knowledge/decisions/security/agent-tool-filtering-reads-the-live-function-config.md +0 -24
  584. package/knowledge/decisions/security/an-addon-header-can-only-narrow-the-session.md +0 -26
  585. package/knowledge/decisions/security/an-addon-instance-reads-only-the-secrets-and-credentials-it-is-named.md +0 -33
  586. package/knowledge/decisions/security/an-addon-may-reach-only-itself-and-the-addons-it-uses.md +0 -16
  587. package/knowledge/decisions/security/an-agent-approval-is-claimed-before-the-tool-runs.md +0 -33
  588. package/knowledge/decisions/security/an-api-key-is-jwt-decoded-into-the-session.md +0 -26
  589. package/knowledge/decisions/security/an-approval-answer-outlives-the-run-it-answered.md +0 -59
  590. package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +0 -30
  591. package/knowledge/decisions/security/an-exposed-ungated-function-is-a-codegen-warning.md +0 -52
  592. package/knowledge/decisions/security/an-external-virtual-user-caller-presents-one-signed-statement.md +0 -38
  593. package/knowledge/decisions/security/an-inbound-webhook-source-dispatches-only-verified-requests.md +0 -31
  594. package/knowledge/decisions/security/an-mcp-call-with-no-http-request-stays-anonymous.md +0 -18
  595. package/knowledge/decisions/security/an-mcp-refusal-is-decided-before-dispatch.md +0 -48
  596. package/knowledge/decisions/security/an-oauth2-credential-is-read-by-its-account-row.md +0 -40
  597. package/knowledge/decisions/security/an-omitted-user-id-addresses-the-platform-credential.md +0 -32
  598. package/knowledge/decisions/security/an-upload-is-counted-as-it-arrives-not-buffered-then-measured.md +0 -24
  599. package/knowledge/decisions/security/analytics-identity-is-stamped-from-the-session-not-the-event.md +0 -24
  600. package/knowledge/decisions/security/app-access-is-a-scope-tree-synthesised-from-virtual-users.md +0 -26
  601. package/knowledge/decisions/security/approval-policy-decides-who-answers-a-tool-call.md +0 -27
  602. package/knowledge/decisions/security/auth-false-on-a-session-function-warns-and-still-requires-one.md +0 -25
  603. package/knowledge/decisions/security/bearer-token-hashes-are-unpeppered-sha256.md +0 -18
  604. package/knowledge/decisions/security/consent-is-read-from-a-cookie-and-a-recognised-denial-counts-as-refusal.md +0 -29
  605. package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +0 -84
  606. package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +0 -39
  607. package/knowledge/decisions/security/core-secrets-use-a-per-secret-dek-wrapped-by-a-kek.md +0 -37
  608. package/knowledge/decisions/security/cors-defaults-to-any-origin-and-refuses-the-wildcard-with-credentials.md +0 -22
  609. package/knowledge/decisions/security/credential-backends-share-one-conformance-suite-for-per-user-isolation.md +0 -29
  610. package/knowledge/decisions/security/each-stage-has-one-virtual-user-key-pair.md +0 -27
  611. package/knowledge/decisions/security/gateway-handlers-run-through-the-function-runner-gate.md +0 -41
  612. package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +0 -30
  613. package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +0 -40
  614. package/knowledge/decisions/security/hmac-verification-fails-closed-on-empty-inputs.md +0 -25
  615. package/knowledge/decisions/security/http-error-detail-is-withheld-from-clients-in-production.md +0 -33
  616. package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +0 -46
  617. package/knowledge/decisions/security/index.md +0 -135
  618. package/knowledge/decisions/security/local-content-refuses-private-buckets-under-the-public-segment.md +0 -21
  619. package/knowledge/decisions/security/mail-is-allowlisted-before-a-virtual-user-run-sees-it.md +0 -38
  620. package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +0 -27
  621. package/knowledge/decisions/security/mcp-resources-tools-and-prompts-take-sessionless-functions.md +0 -18
  622. package/knowledge/decisions/security/origin-locked-routes-match-the-origin-exactly.md +0 -22
  623. package/knowledge/decisions/security/oss-auth-works-without-pikku-studio-cloud.md +0 -26
  624. package/knowledge/decisions/security/outbound-webhooks-use-an-allowlist-when-configured.md +0 -24
  625. package/knowledge/decisions/security/passphrases-are-stretched-key-material-is-expanded.md +0 -40
  626. package/knowledge/decisions/security/permission-auth-filtering-requires-live-permission-functions.md +0 -31
  627. package/knowledge/decisions/security/pikku-carries-virtual-user-scopes-as-data-and-the-app-grants-them.md +0 -35
  628. package/knowledge/decisions/security/queue-job-identities-are-signed-at-enqueue.md +0 -69
  629. package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +0 -39
  630. package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +0 -34
  631. package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +0 -55
  632. package/knowledge/decisions/security/scenario-step-functions-are-never-externally-invocable.md +0 -30
  633. package/knowledge/decisions/security/scope-resolution-happens-at-the-session-boundary-and-sync-never-deletes.md +0 -28
  634. package/knowledge/decisions/security/scoped-content-access-is-a-root-folder-with-longest-prefix-grants.md +0 -31
  635. package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +0 -34
  636. package/knowledge/decisions/security/services-without-secrets-get-a-throwing-secrets-accessor.md +0 -22
  637. package/knowledge/decisions/security/shared-guards-refuse-to-mutate-or-shadow-a-system-role.md +0 -34
  638. package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +0 -37
  639. package/knowledge/decisions/security/signed-uploads-are-verified-by-the-same-check-as-signed-reads.md +0 -26
  640. package/knowledge/decisions/security/system-role-scopes-must-be-declared-with-define-scope.md +0 -24
  641. package/knowledge/decisions/security/system-roles-are-additive-and-immutable.md +0 -16
  642. package/knowledge/decisions/security/the-channel-rpc-does-not-send-the-callers-session.md +0 -21
  643. package/knowledge/decisions/security/the-remote-jobs-inbox-fails-closed-without-a-secret.md +0 -24
  644. package/knowledge/decisions/security/the-remote-rpc-gate-fails-closed-and-binds-the-token-to-its-function.md +0 -34
  645. package/knowledge/decisions/security/the-workflow-status-stream-rechecks-ownership-on-every-poll.md +0 -16
  646. package/knowledge/decisions/security/two-credentials-on-one-key-must-share-a-read-mode.md +0 -29
  647. package/knowledge/decisions/security/verified-bearer-claims-are-pass-through-data-that-core-never-fills.md +0 -23
  648. package/knowledge/decisions/security/virtual-user-catalogue-excludes-the-machinery-that-runs-virtual-users.md +0 -25
  649. package/knowledge/decisions/security/virtual-user-conversation-missing-approval-decisions-default-to-denied.md +0 -22
  650. package/knowledge/decisions/security/virtual-user-run-records-are-gated-behind-a-read-scope.md +0 -18
  651. package/knowledge/decisions/security/virtual-user-sign-in-does-not-exist-in-production.md +0 -25
  652. package/knowledge/decisions/security/virtual-user-sign-in-has-one-door.md +0 -42
  653. package/knowledge/decisions/security/virtual-user-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +0 -29
  654. package/knowledge/decisions/security/virtual-user-sign-in-only-works-for-virtual-user-flagged-users.md +0 -29
  655. package/knowledge/decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md +0 -25
  656. package/knowledge/decisions/security/wire-addon-expose-selects-the-rpc-surface.md +0 -51
  657. package/knowledge/decisions/security/workflow-approval-payloads-are-validated-on-replay-inside-the-workflow.md +0 -40
  658. package/knowledge/decisions/security/workflow-helper-functions-are-sessionless-by-declaration.md +0 -18
  659. package/knowledge/decisions/security/workflow-queued-steps-rehydrate-their-session-from-the-run-wire.md +0 -32
  660. package/knowledge/decisions/security/workflow-scenario-sessions-are-isolated-per-virtual-user-and-per-scenario.md +0 -32
  661. package/knowledge/decisions/security/workflow-scenario-steps-are-never-network-invocable.md +0 -31
  662. package/knowledge/decisions/security/workflow-virtual-user-steps-always-use-the-real-transport.md +0 -34
  663. package/knowledge/decisions/security/writing-a-virtual-user-schedule-is-gated-by-its-own-scope.md +0 -18
  664. package/knowledge/index.md +0 -24
  665. package/knowledge/questions/a-bearer-jwt-with-no-identity-becomes-a-session.md +0 -24
  666. package/knowledge/questions/channel-middleware-accepts-bare-factories-that-nothing-resolves.md +0 -35
  667. package/knowledge/questions/dev-quick-login-as-impersonation.md +0 -25
  668. package/knowledge/questions/does-a-delayed-rpc-run-as-the-session-it-was-scheduled-with.md +0 -26
  669. package/knowledge/questions/does-a-user-id-with-a-colon-read-another-users-credentials.md +0 -27
  670. package/knowledge/questions/does-a-wirecli-command-need-a-session-by-default.md +0 -26
  671. package/knowledge/questions/does-an-adversarial-in-scope-success-count-as-a-finding.md +0 -26
  672. package/knowledge/questions/does-approve-step-need-the-run-owners-session-or-the-gates-approvers.md +0 -34
  673. package/knowledge/questions/does-cors-origin-true-reflect-any-origin-with-credentials.md +0 -20
  674. package/knowledge/questions/does-skip-user-session-do-anything-on-a-channel.md +0 -24
  675. package/knowledge/questions/does-the-store-session-match-the-other-two.md +0 -19
  676. package/knowledge/questions/index.md +0 -41
  677. package/knowledge/questions/is-the-agent-score-worker-reachable-without-a-session.md +0 -21
  678. package/knowledge/questions/live-scheduled-tests-may-write.md +0 -19
  679. package/knowledge/questions/provision-virtual-users-has-no-caller-in-this-repo.md +0 -23
  680. package/knowledge/questions/remote-secret-refuses-requests-without-a-remote-token-on-every-path.md +0 -32
  681. package/knowledge/questions/should-a-middleware-set-session-persist-to-the-store.md +0 -25
  682. package/knowledge/questions/should-a-scoped-secret-view-throw-from-has-secret-for-a-disallowed-key.md +0 -23
  683. package/knowledge/questions/should-a-wrong-bearer-token-be-anonymous-or-refused.md +0 -35
  684. package/knowledge/questions/should-an-empty-webhook-signing-secret-send-unsigned.md +0 -23
  685. package/knowledge/questions/should-http-virtual-user-sessions-reset-between-scenarios-in-one-run.md +0 -27
  686. package/knowledge/questions/should-the-cookie-jar-scope-cookies-to-the-api-origin.md +0 -26
  687. package/knowledge/questions/should-voice-input-fetch-audio-urls-without-a-host-allowlist.md +0 -20
  688. package/knowledge/questions/staging-impersonation-rules.md +0 -27
  689. package/knowledge/questions/unauthorized-channel-replies-escape-the-declared-out-type.md +0 -44
  690. package/knowledge/questions/virtual-user-keys-on-cloud-stages-are-pikku-studios-to-build.md +0 -33
  691. package/knowledge/questions/virtual-user-statement-replay-is-per-process.md +0 -20
  692. package/knowledge/questions/what-an-impersonated-session-carries.md +0 -22
  693. package/run-tests.sh +0 -68
  694. package/scripts/generate-api-report.d.mts +0 -1
  695. package/scripts/generate-api-report.mjs +0 -96
  696. package/scripts/generate-api-report.mts +0 -333
  697. package/src/public-surface.json +0 -637
  698. package/src/public-surface.json.README +0 -43
  699. /package/dist/{function/compensation-name.d.ts → compensation-name.d.ts} +0 -0
  700. /package/dist/{function/compensation-name.js → compensation-name.js} +0 -0
@@ -29,7 +29,15 @@ export const signedContentPath = (urlOrPath) => {
29
29
  return pathname;
30
30
  }
31
31
  };
32
+ /**
33
+ * The leading URL segment that marks public content. A private bucket cannot
34
+ * use this name.
35
+ */
32
36
  export const PUBLIC_URL_SEGMENT = '_public';
37
+ /**
38
+ * Every {@link ContentVisibility}, also the names of the two directories under
39
+ * the content root.
40
+ */
33
41
  export const CONTENT_VISIBILITIES = [
34
42
  'private',
35
43
  'public',
@@ -101,11 +109,20 @@ export const resolveContentRequestTarget = async (basePath, key, mode) => {
101
109
  };
102
110
  /** How long a presigned upload URL stays valid. Short, like an S3 PUT URL. */
103
111
  const UPLOAD_URL_TTL_MS = 15 * 60 * 1000;
112
+ /**
113
+ * Thrown by {@link streamUploadToFile} when an upload passes its byte limit.
114
+ */
104
115
  export class UploadTooLargeError extends Error {
105
116
  constructor() {
106
117
  super('content_too_large');
107
118
  }
108
119
  }
120
+ /**
121
+ * Parses a size such as `512kb` or `10mb` (binary units; no unit means bytes)
122
+ * into bytes.
123
+ *
124
+ * @throws Error when the string is not a size
125
+ */
109
126
  export const parseContentSizeLimit = (sizeLimit) => {
110
127
  const match = /^(\d+(?:\.\d+)?)(b|kb|mb|gb)?$/i.exec(sizeLimit.trim());
111
128
  if (!match) {
@@ -121,6 +138,14 @@ export const parseContentSizeLimit = (sizeLimit) => {
121
138
  : 1;
122
139
  return Number(match[1]) * multiplier;
123
140
  };
141
+ /**
142
+ * Streams an upload to `targetPath`, writing to a temporary file that is
143
+ * renamed into place only once the whole body arrived, so a failed or oversized
144
+ * upload never leaves a partial file behind.
145
+ *
146
+ * @returns the number of bytes written
147
+ * @throws UploadTooLargeError when the body passes `maxBytes`
148
+ */
124
149
  export const streamUploadToFile = async (source, targetPath, maxBytes) => {
125
150
  await mkdir(resolve(targetPath, '..'), { recursive: true });
126
151
  const partial = `${targetPath}.${process.pid}.${Date.now()}.${randomUUID()}.part`;
@@ -145,6 +170,16 @@ export const streamUploadToFile = async (source, targetPath, maxBytes) => {
145
170
  throw error;
146
171
  }
147
172
  };
173
+ /**
174
+ * A {@link ContentService} that stores files on local disk, for development and
175
+ * single-server deployments. Private and public files live in separate
176
+ * directories; URLs for private files are signed with the given `JWTService`
177
+ * and checked by {@link createLocalContentRequestHandler}, and upload URLs
178
+ * expire after 15 minutes. Keys that would escape the content root are
179
+ * rejected.
180
+ *
181
+ * @throws Error from the constructor when no `JWTService` is given
182
+ */
148
183
  export class LocalContent {
149
184
  config;
150
185
  logger;
@@ -1,4 +1,9 @@
1
1
  import type { CredentialService } from './credential-service.js';
2
+ /**
3
+ * A `CredentialService` held in process memory, for development and tests.
4
+ * Values are stored unencrypted and lost on restart; do not use it in
5
+ * production.
6
+ */
2
7
  export declare class LocalCredentialService implements CredentialService {
3
8
  private store;
4
9
  private makeKey;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * A `CredentialService` held in process memory, for development and tests.
3
+ * Values are stored unencrypted and lost on restart; do not use it in
4
+ * production.
5
+ */
1
6
  export class LocalCredentialService {
2
7
  store = new Map();
3
8
  makeKey(name, userId) {
@@ -1,4 +1,11 @@
1
1
  import type { EmailService, SendEmailInput, SendEmailResult } from './email-service.js';
2
+ /**
3
+ * An {@link EmailService} for development that sends nothing. It logs the
4
+ * recipients and subject to the console, with the body and attachments reduced
5
+ * to their lengths.
6
+ *
7
+ * @example snippet: shopServices
8
+ */
2
9
  export declare class LocalEmailService implements EmailService {
3
10
  send(input: SendEmailInput): Promise<SendEmailResult>;
4
11
  }
@@ -1,3 +1,10 @@
1
+ /**
2
+ * An {@link EmailService} for development that sends nothing. It logs the
3
+ * recipients and subject to the console, with the body and attachments reduced
4
+ * to their lengths.
5
+ *
6
+ * @example snippet: shopServices
7
+ */
1
8
  export class LocalEmailService {
2
9
  async send(input) {
3
10
  const payload = {
@@ -1,6 +1,14 @@
1
1
  import { type SecretValue } from '../classification/secret-value.js';
2
2
  import type { SecretService, SecretValues } from './secret-service.js';
3
3
  import type { VariablesService } from './variables-service.js';
4
+ /**
5
+ * A {@link SecretService} for development that reads secrets from a
6
+ * `VariablesService` (by default `process.env`), with values set at runtime
7
+ * kept in memory. Values that parse as JSON are returned parsed. Use a
8
+ * vault-backed implementation in production.
9
+ *
10
+ * @example snippet: shopServices
11
+ */
4
12
  export declare class LocalSecretService implements SecretService {
5
13
  private variables;
6
14
  private localSecrets;
@@ -1,5 +1,13 @@
1
1
  import { createSecretValue, isSecretValue, } from '../classification/secret-value.js';
2
2
  import { LocalVariablesService } from './local-variables.js';
3
+ /**
4
+ * A {@link SecretService} for development that reads secrets from a
5
+ * `VariablesService` (by default `process.env`), with values set at runtime
6
+ * kept in memory. Values that parse as JSON are returned parsed. Use a
7
+ * vault-backed implementation in production.
8
+ *
9
+ * @example snippet: shopServices
10
+ */
3
11
  export class LocalSecretService {
4
12
  variables;
5
13
  localSecrets = new Map();
@@ -1,4 +1,10 @@
1
1
  import type { VariablesService } from './variables-service.js';
2
+ /**
3
+ * A {@link VariablesService} backed by a plain object, `process.env` by
4
+ * default. Values that parse as JSON are returned parsed.
5
+ *
6
+ * @example snippet: shopServices
7
+ */
2
8
  export declare class LocalVariablesService implements VariablesService {
3
9
  private variables;
4
10
  /**
@@ -1,3 +1,9 @@
1
+ /**
2
+ * A {@link VariablesService} backed by a plain object, `process.env` by
3
+ * default. Values that parse as JSON are returned parsed.
4
+ *
5
+ * @example snippet: shopServices
6
+ */
1
7
  export class LocalVariablesService {
2
8
  variables;
3
9
  /**
@@ -1,4 +1,8 @@
1
1
  import type { Safe } from '../classification/secret-value.js';
2
+ /**
3
+ * Log levels in increasing severity. A logger set to one level drops the levels
4
+ * below it.
5
+ */
2
6
  export declare enum LogLevel {
3
7
  trace = 0,
4
8
  debug = 1,
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Log levels in increasing severity. A logger set to one level drops the levels
3
+ * below it.
4
+ */
1
5
  export var LogLevel;
2
6
  (function (LogLevel) {
3
7
  LogLevel[LogLevel["trace"] = 0] = "trace";
@@ -24,13 +24,22 @@ import type { AgentsMeta } from '../wirings/agent/agent.types.js';
24
24
  import type { GatewaysMeta } from '../wirings/gateway/gateway.types.js';
25
25
  export type { FunctionMeta, FunctionsMeta, MiddlewareMetadata as MiddlewareMeta, PermissionMetadata as PermissionMeta, };
26
26
  export type { AgentsMeta };
27
+ /** Generated metadata for one agent. */
27
28
  export type AgentMeta = AgentsMeta[string];
29
+ /**
30
+ * Generated metadata for the MCP tools, resources and prompts the app exposes.
31
+ */
28
32
  export interface MCPMeta {
29
33
  resources: MCPResourceMeta;
30
34
  tools: MCPToolMeta;
31
35
  prompts: MCPPromptMeta;
32
36
  }
37
+ /** Generated map from each RPC name to the function it invokes. */
33
38
  export type RPCMetaRecord = Record<string, string>;
39
+ /**
40
+ * Generated description of one service: its package, interface and expanded
41
+ * properties.
42
+ */
34
43
  export interface ServiceMeta {
35
44
  name: string;
36
45
  summary: string;
@@ -41,7 +50,9 @@ export interface ServiceMeta {
41
50
  interface: string;
42
51
  expandedProperties: Record<string, string>;
43
52
  }
53
+ /** Generated {@link ServiceMeta}, keyed by service name. */
44
54
  export type ServicesMetaRecord = Record<string, ServiceMeta>;
55
+ /** Where a middleware is defined and which services it uses. */
45
56
  export interface MiddlewareDefinitionMeta {
46
57
  services: {
47
58
  optimized: boolean;
@@ -55,12 +66,16 @@ export interface MiddlewareDefinitionMeta {
55
66
  description?: string;
56
67
  package?: string;
57
68
  }
69
+ /** One place a middleware definition is used. */
58
70
  export interface MiddlewareInstanceMeta {
59
71
  definitionId: string;
60
72
  sourceFile: string;
61
73
  position: number;
62
74
  isFactoryCall: boolean;
63
75
  }
76
+ /**
77
+ * Middleware or permissions applied together to an HTTP route pattern or a tag.
78
+ */
64
79
  export interface GroupMeta {
65
80
  exportName: string | null;
66
81
  sourceFile: string;
@@ -73,12 +88,14 @@ export interface GroupMeta {
73
88
  instanceIds: string[];
74
89
  isFactory: boolean;
75
90
  }
91
+ /** Generated metadata for every middleware definition, use and group. */
76
92
  export interface MiddlewareGroupsMeta {
77
93
  definitions: Record<string, MiddlewareDefinitionMeta>;
78
94
  instances: Record<string, MiddlewareInstanceMeta>;
79
95
  httpGroups: Record<string, GroupMeta>;
80
96
  tagGroups: Record<string, GroupMeta>;
81
97
  }
98
+ /** Where a permission is defined and which services it uses. */
82
99
  export interface PermissionDefinitionMeta {
83
100
  services: {
84
101
  optimized: boolean;
@@ -91,15 +108,24 @@ export interface PermissionDefinitionMeta {
91
108
  name?: string;
92
109
  description?: string;
93
110
  }
111
+ /** Generated metadata for every permission definition. */
94
112
  export interface PermissionsGroupsMeta {
95
113
  definitions: Record<string, PermissionDefinitionMeta>;
96
114
  }
115
+ /**
116
+ * Content hashes of one email template in one locale, used to tell when a
117
+ * template changed.
118
+ */
97
119
  export interface EmailTemplateLocaleMeta {
98
120
  contentHash: string;
99
121
  htmlHash: string;
100
122
  subjectHash: string;
101
123
  textHash: string;
102
124
  }
125
+ /**
126
+ * Generated metadata for one email template: the variables it reads, which
127
+ * parts it has, and its locales.
128
+ */
103
129
  export interface EmailTemplateMeta {
104
130
  variables: string[];
105
131
  hasHtml: boolean;
@@ -107,11 +133,17 @@ export interface EmailTemplateMeta {
107
133
  hasText: boolean;
108
134
  locales: Record<string, EmailTemplateLocaleMeta>;
109
135
  }
136
+ /** Generated metadata for every email template. */
110
137
  export interface EmailsMeta {
111
138
  src: string;
112
139
  themeHash: string;
113
140
  templates: Record<string, EmailTemplateMeta>;
114
141
  }
142
+ /**
143
+ * The raw sources of one email template in one locale, as read from disk for
144
+ * previewing. `missing` names the required parts (`theme`, `locale`, `html`,
145
+ * `subject`, `text`) that were not found.
146
+ */
115
147
  export interface EmailTemplateAssets {
116
148
  theme: Record<string, unknown>;
117
149
  strings: Record<string, unknown>;
@@ -194,6 +226,12 @@ export interface MetaService {
194
226
  getSchemas(schemaNames: string[]): Promise<Record<string, JSONSchema7 | null>>;
195
227
  clearCache(): void;
196
228
  }
229
+ /**
230
+ * A {@link MetaService} that reads the generated metadata from a `.pikku`
231
+ * directory on local disk and caches each file after its first read. Missing
232
+ * files are returned as empty metadata rather than errors. Used by the console
233
+ * and dev tooling.
234
+ */
197
235
  export declare class LocalMetaService implements MetaService {
198
236
  readonly basePath: string;
199
237
  private httpMetaCache;
@@ -2,6 +2,12 @@ import { readFile, readdir } from 'node:fs/promises';
2
2
  import { existsSync } from 'node:fs';
3
3
  import { createRequire } from 'node:module';
4
4
  import { join } from 'node:path';
5
+ /**
6
+ * A {@link MetaService} that reads the generated metadata from a `.pikku`
7
+ * directory on local disk and caches each file after its first read. Missing
8
+ * files are returned as empty metadata rather than errors. Used by the console
9
+ * and dev tooling.
10
+ */
5
11
  export class LocalMetaService {
6
12
  basePath;
7
13
  httpMetaCache = null;
@@ -1,6 +1,16 @@
1
1
  import type { JobOptions, QueueService } from '../wirings/queue/queue.types.js';
2
2
  import type { Logger } from './logger.js';
3
3
  import { type SendWebhookInput, type SendWebhookResult, type WebhookJobData, WebhookService } from './webhook-service.js';
4
+ /**
5
+ * A {@link WebhookService} that delivers through the `pikku-outgoing-webhooks`
6
+ * queue, so a slow or failing receiver is retried by the queue rather than
7
+ * holding up the caller.
8
+ *
9
+ * The body is signed before it is enqueued, with `input.secret` or else the
10
+ * secret named by `config.webhook.secret`; if that secret resolves to nothing
11
+ * the webhook is sent unsigned and an error is logged. Retries default to
12
+ * `config.webhook.retries`, then {@link DEFAULT_WEBHOOK_RETRIES}.
13
+ */
4
14
  export declare class QueueWebhookService extends WebhookService {
5
15
  protected queueService: QueueService;
6
16
  constructor(queueService: QueueService);
@@ -15,6 +25,15 @@ export declare class QueueWebhookService extends WebhookService {
15
25
  }>;
16
26
  private resolveJobOptions;
17
27
  }
28
+ /**
29
+ * The queue worker that delivers one outgoing webhook. It POSTs through
30
+ * `safeFetch`, so private and internal hosts are refused unless listed in
31
+ * `config.webhook.allowedHosts`, and times out after 30 seconds. Each attempt
32
+ * is recorded when the service keeps delivery history.
33
+ *
34
+ * @throws Error when the receiver does not answer with a 2xx status, so the
35
+ * queue retries the job
36
+ */
18
37
  export declare function pikkuWebhookWorkerFunc(services: {
19
38
  logger: Logger;
20
39
  webhookService?: WebhookService;
@@ -4,6 +4,16 @@ import { safeFetch } from '../utils/safe-fetch.js';
4
4
  import { DEFAULT_WEBHOOK_RETRIES, DEFAULT_WEBHOOK_SIGNATURE_HEADER, PIKKU_OUTGOING_WEBHOOK_QUEUE_NAME, WebhookService, } from './webhook-service.js';
5
5
  const MAX_CAPTURED_RESPONSE_BODY = 2_000;
6
6
  // knowledge: decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md
7
+ /**
8
+ * A {@link WebhookService} that delivers through the `pikku-outgoing-webhooks`
9
+ * queue, so a slow or failing receiver is retried by the queue rather than
10
+ * holding up the caller.
11
+ *
12
+ * The body is signed before it is enqueued, with `input.secret` or else the
13
+ * secret named by `config.webhook.secret`; if that secret resolves to nothing
14
+ * the webhook is sent unsigned and an error is logged. Retries default to
15
+ * `config.webhook.retries`, then {@link DEFAULT_WEBHOOK_RETRIES}.
16
+ */
7
17
  export class QueueWebhookService extends WebhookService {
8
18
  queueService;
9
19
  // knowledge: decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md
@@ -63,6 +73,15 @@ export class QueueWebhookService extends WebhookService {
63
73
  }
64
74
  }
65
75
  // knowledge: decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md
76
+ /**
77
+ * The queue worker that delivers one outgoing webhook. It POSTs through
78
+ * `safeFetch`, so private and internal hosts are refused unless listed in
79
+ * `config.webhook.allowedHosts`, and times out after 30 seconds. Each attempt
80
+ * is recorded when the service keeps delivery history.
81
+ *
82
+ * @throws Error when the receiver does not answer with a 2xx status, so the
83
+ * queue retries the job
84
+ */
66
85
  export async function pikkuWebhookWorkerFunc(services, { url, body, headers, deliveryId }) {
67
86
  let statusCode;
68
87
  let responseBody;
@@ -1,27 +1,22 @@
1
- import type { Logger } from './logger.js';
2
1
  /** The variable holding the shared secret every remote job must present. */
3
2
  export declare const REMOTE_JOBS_SECRET_VARIABLE = "PIKKU_DISPATCH_SECRET";
3
+ /** The header a remote job request carries the dispatch secret in. */
4
4
  export declare const REMOTE_JOBS_SECRET_HEADER = "x-pikku-dispatch";
5
+ /** The HTTP path a deployment receives remote queue jobs on. */
5
6
  export declare const REMOTE_QUEUE_JOB_PATH = "/__pikku/queue-job";
7
+ /** The HTTP path a deployment receives remote scheduled tasks on. */
6
8
  export declare const REMOTE_SCHEDULER_JOB_PATH = "/__pikku/scheduler-job";
9
+ /** A queue job delivered over HTTP to {@link REMOTE_QUEUE_JOB_PATH}. */
7
10
  export interface RemoteQueueJobData {
8
11
  queueName: string;
9
12
  data?: unknown;
10
13
  jobId?: string;
11
14
  traceId?: string;
12
15
  }
16
+ /**
17
+ * A scheduled task run delivered over HTTP to {@link
18
+ * REMOTE_SCHEDULER_JOB_PATH}.
19
+ */
13
20
  export interface RemoteScheduledJobData {
14
21
  taskName: string;
15
22
  }
16
- /**
17
- * A dispatched job is delivered, not owned: the sender retries, so a permanent
18
- * failure has to read differently from a transient one. An unknown worker or a
19
- * discarded job answers 4xx so the sender stops; anything else propagates and
20
- * is delivered again.
21
- */
22
- export declare function pikkuRemoteQueueJobFunc({ logger }: {
23
- logger: Logger;
24
- }, { queueName, data, jobId, traceId }: RemoteQueueJobData): Promise<void>;
25
- export declare function pikkuRemoteScheduledJobFunc({ logger }: {
26
- logger: Logger;
27
- }, { taskName }: RemoteScheduledJobData): Promise<void>;
@@ -1,59 +1,8 @@
1
- import { BadRequestError, PikkuMissingMetaError } from '../errors/errors.js';
2
- import { QueueJobDiscardedError, runQueueJob } from '../wirings/queue/queue-runner.js';
3
- import { ScheduledTaskNotFoundError, runScheduledTask, } from '../wirings/scheduler/scheduler-runner.js';
4
1
  /** The variable holding the shared secret every remote job must present. */
5
2
  export const REMOTE_JOBS_SECRET_VARIABLE = 'PIKKU_DISPATCH_SECRET';
3
+ /** The header a remote job request carries the dispatch secret in. */
6
4
  export const REMOTE_JOBS_SECRET_HEADER = 'x-pikku-dispatch';
5
+ /** The HTTP path a deployment receives remote queue jobs on. */
7
6
  export const REMOTE_QUEUE_JOB_PATH = '/__pikku/queue-job';
7
+ /** The HTTP path a deployment receives remote scheduled tasks on. */
8
8
  export const REMOTE_SCHEDULER_JOB_PATH = '/__pikku/scheduler-job';
9
- /**
10
- * A dispatched job is delivered, not owned: the sender retries, so a permanent
11
- * failure has to read differently from a transient one. An unknown worker or a
12
- * discarded job answers 4xx so the sender stops; anything else propagates and
13
- * is delivered again.
14
- */
15
- export async function pikkuRemoteQueueJobFunc({ logger }, { queueName, data, jobId, traceId }) {
16
- const job = {
17
- queueName,
18
- data,
19
- id: jobId ?? traceId ?? `remote-${Date.now()}`,
20
- status: async () => 'active',
21
- metadata: () => ({
22
- processedAt: new Date(),
23
- attemptsMade: 0,
24
- maxAttempts: undefined,
25
- result: undefined,
26
- progress: 0,
27
- createdAt: new Date(),
28
- completedAt: undefined,
29
- failedAt: undefined,
30
- error: undefined,
31
- }),
32
- waitForCompletion: async () => {
33
- throw new Error('remote jobs do not support waitForCompletion');
34
- },
35
- };
36
- try {
37
- await runQueueJob({ job, traceId });
38
- }
39
- catch (error) {
40
- if (error instanceof PikkuMissingMetaError ||
41
- error instanceof QueueJobDiscardedError) {
42
- throw new BadRequestError(error.message);
43
- }
44
- logger.error(`remote-jobs: queue '${queueName}' failed: ${error instanceof Error ? error.message : String(error)}`);
45
- throw error;
46
- }
47
- }
48
- export async function pikkuRemoteScheduledJobFunc({ logger }, { taskName }) {
49
- try {
50
- await runScheduledTask({ name: taskName, traceId: `cron-${taskName}` });
51
- }
52
- catch (error) {
53
- if (error instanceof ScheduledTaskNotFoundError) {
54
- throw new BadRequestError(error.message);
55
- }
56
- logger.error(`remote-jobs: task '${taskName}' failed: ${error instanceof Error ? error.message : String(error)}`);
57
- throw error;
58
- }
59
- }
@@ -1,3 +1,7 @@
1
+ /**
2
+ * A cookie store shared by the steps of one scenario run; see {@link
3
+ * createCookieJar}.
4
+ */
1
5
  export interface ScenarioCookieJar {
2
6
  fetch: typeof fetch;
3
7
  clear(): void;
@@ -1,15 +1,28 @@
1
1
  import type { CoreUserSession } from '../types/core.types.js';
2
2
  import type { ScheduledTaskRuns } from '../wirings/scheduler/scheduler.types.js';
3
+ /**
4
+ * A task scheduled with {@link SchedulerService.scheduleRPC}: which RPC it runs
5
+ * and when.
6
+ */
3
7
  export interface ScheduledTaskSummary {
4
8
  taskId: string;
5
9
  rpcName: string;
6
10
  scheduledFor: Date;
7
11
  }
12
+ /** A scheduled task with the data and session it will run with. */
8
13
  export interface ScheduledTaskInfo extends ScheduledTaskSummary {
9
14
  data?: any;
10
15
  session?: CoreUserSession;
11
16
  status?: 'scheduled' | 'active' | 'completed' | 'failed';
12
17
  }
18
+ /**
19
+ * Runs RPCs later, provided as the `schedulerService` singleton service
20
+ * (implementations ship in the queue and database packages). A task runs the
21
+ * named RPC with the given data, under the session it was scheduled with.
22
+ *
23
+ * This is for one-off delayed work; recurring cron tasks are declared with
24
+ * `wireScheduler`.
25
+ */
13
26
  export declare abstract class SchedulerService {
14
27
  abstract init(): Promise<void>;
15
28
  /** `delay` is milliseconds as a number, or a duration string such as `"5h"` / `"30m"`. */
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Runs RPCs later, provided as the `schedulerService` singleton service
3
+ * (implementations ship in the queue and database packages). A task runs the
4
+ * named RPC with the given data, under the session it was scheduled with.
5
+ *
6
+ * This is for one-off delayed work; recurring cron tasks are declared with
7
+ * `wireScheduler`.
8
+ */
1
9
  export class SchedulerService {
2
10
  /** Per wired cron task. Empty when this scheduler keeps no run history. */
3
11
  async getTaskRuns() {
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Validates function input against the JSON schemas generated from your types,
3
+ * provided as the `schema` singleton service (for example `@pikku/schema-ajv`
4
+ * or `@pikku/schema-cfworker`).
5
+ *
6
+ * `validateSchema` must throw when the data does not match; the implementations
7
+ * throw `UnprocessableContentError` (422). When no schema service is
8
+ * configured, input is not validated.
9
+ */
1
10
  export interface SchemaService {
2
11
  compileSchema: (name: string, value: any) => Promise<void> | void;
3
12
  validateSchema: (schema: string, data: any) => Promise<void> | void;
@@ -1,5 +1,6 @@
1
1
  import type { FlatScope } from '../wirings/scope/scope.types.js';
2
2
  import type { SystemRole } from '../wirings/role/role.types.js';
3
+ /** A named set of scopes that can be granted to a user. */
3
4
  export interface Role {
4
5
  name: string;
5
6
  description?: string;
@@ -17,6 +18,15 @@ export interface Role {
17
18
  */
18
19
  declared?: boolean;
19
20
  }
21
+ /**
22
+ * Stores the scopes and roles declared in code and who holds them, and resolves
23
+ * a user's effective scopes. Sessions call {@link ScopeService.resolveScopes}
24
+ * so `scopes` checks on functions see role grants as well as direct ones.
25
+ *
26
+ * Syncing from code is additive: a scope or system role removed from code is
27
+ * marked `declared: false` rather than deleted, so a deploy never revokes
28
+ * grants on its own; `pikku scopes prune` and `pikku roles prune` remove them.
29
+ */
20
30
  export interface ScopeService {
21
31
  syncScopes(scopes: FlatScope[]): Promise<void>;
22
32
  /** The union of role-derived scopes and scopes granted directly. */
@@ -1,5 +1,10 @@
1
1
  import type { SecretValue } from '../classification/secret-value.js';
2
2
  import type { SecretService, SecretValues } from './secret-service.js';
3
+ /**
4
+ * A read-only view of a {@link SecretService} limited to an allow-list of keys,
5
+ * for handing to code that should see only the secrets it declared. Reading a
6
+ * key outside the list throws, and every write method throws.
7
+ */
3
8
  export declare class ScopedSecretService implements SecretService {
4
9
  private secrets;
5
10
  private allowedKeys;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * A read-only view of a {@link SecretService} limited to an allow-list of keys,
3
+ * for handing to code that should see only the secrets it declared. Reading a
4
+ * key outside the list throws, and every write method throws.
5
+ */
1
6
  export class ScopedSecretService {
2
7
  secrets;
3
8
  allowedKeys;
@@ -1,4 +1,9 @@
1
1
  import type { SecretDefinitionsMeta } from '../wirings/secret/secret.types.js';
2
+ /**
3
+ * Thrown when a secret would be sent to a host its `defineSecret` declaration
4
+ * does not list in `allowedHosts`, or, when the project requires
5
+ * `allowedHosts`, when it lists none.
6
+ */
2
7
  export declare class SecretHostNotAllowedError extends Error {
3
8
  readonly secretId: string;
4
9
  readonly host: string;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Thrown when a secret would be sent to a host its `defineSecret` declaration
3
+ * does not list in `allowedHosts`, or, when the project requires
4
+ * `allowedHosts`, when it lists none.
5
+ */
1
6
  export class SecretHostNotAllowedError extends Error {
2
7
  secretId;
3
8
  host;
@@ -3,6 +3,19 @@ import type { SecretValue } from '../classification/secret-value.js';
3
3
  export type SecretValues<T> = {
4
4
  [K in keyof T]: SecretValue<T[K]>;
5
5
  };
6
+ /**
7
+ * Reads and writes secrets, provided as the `secrets` singleton service (for
8
+ * example a cloud secret manager, or {@link LocalSecretService} in
9
+ * development).
10
+ *
11
+ * Values come back wrapped in a `SecretValue`, which logs and serializes as
12
+ * `[secret]` until `.reveal()` is called, and the logger, audit log and email
13
+ * service refuse a `SecretValue` at compile time. Function bodies and
14
+ * permissions cannot reach this service at all; read secrets in your service
15
+ * factories and pass the values to the services that need them.
16
+ *
17
+ * @example snippet: shopServices
18
+ */
6
19
  export interface SecretService {
7
20
  /**
8
21
  * Throws if the secret is not found, unless `defineSecret` declared it
@@ -10,7 +23,12 @@ export interface SecretService {
10
23
  * `.reveal()`.
11
24
  */
12
25
  getSecret<T = string>(key: string): Promise<SecretValue<T>>;
13
- /** Answers for any key, including a disallowed one — it must not throw. */
26
+ /**
27
+ * Resolves `false` for a key that is absent or not allowed, rather than
28
+ * throwing. A backend failure (the store is unreachable, access is denied)
29
+ * must throw instead, so callers relying on the check fail closed rather
30
+ * than treating an outage as "no such secret".
31
+ */
14
32
  hasSecret(key: string): Promise<boolean>;
15
33
  setSecret(key: string, value: unknown): Promise<void>;
16
34
  /**
@@ -1,4 +1,10 @@
1
1
  import type { SecretlessServices } from '../types/core.types.js';
2
+ /**
3
+ * Thrown when code that may not read secrets (a function body, a permission)
4
+ * touches `services.secrets`. Secrets are read only in service factories and
5
+ * middleware; give the service that needs a secret the value when you construct
6
+ * it.
7
+ */
2
8
  export declare class SecretAccessDeniedError extends Error {
3
9
  constructor(context: string);
4
10
  }