@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,6 +1,7 @@
1
- import type { ScenarioVirtualUser, ResolvedVirtualUser, ScenarioVirtualUsers, ScenarioInvokeOptions, ScenarioHttpResponse } from './virtual-users-service.js';
2
- import type { ConverseOptions, ConversationVerdict } from '../wirings/virtual-user/conversation/conversation.types.js';
3
- import { type VirtualUserSignIn } from './virtual-user-sign-in.js';
1
+ import type { ScenarioVirtualUser, ResolvedVirtualUser, ScenarioVirtualUsers, ScenarioInvokeOptions, ScenarioHttpResponse } from '../../services/virtual-users-service.js';
2
+ import type { ConverseOptions, ConversationVerdict } from './conversation/conversation.types.js';
3
+ import { type VirtualUserSignIn } from '../../services/virtual-user-sign-in.js';
4
+ /** How `createHttpVirtualUsers` reaches the target app and signs each virtual user in. */
4
5
  export interface HttpVirtualUsersConfig {
5
6
  /**
6
7
  * Base API URL of the target app, INCLUDING the HTTP prefix — e.g.
@@ -1,9 +1,9 @@
1
- import { readScenarioHttpResponse } from './virtual-users-service.js';
2
- import { runConversation } from '../wirings/virtual-user/conversation/run-conversation.js';
3
- import { createCookieJar, } from './scenario-cookie-jar.js';
4
- import { authMount } from './virtual-user-sign-in.js';
5
- import { getSingletonServices } from '../pikku-state.js';
6
- import { AIProviderNotConfiguredError } from '../errors/errors.js';
1
+ import { readScenarioHttpResponse } from '../../services/virtual-users-service.js';
2
+ import { runConversation } from './conversation/run-conversation.js';
3
+ import { createCookieJar, } from '../../services/scenario-cookie-jar.js';
4
+ import { authMount, } from '../../services/virtual-user-sign-in.js';
5
+ import { getSingletonServices } from '../../pikku-state.js';
6
+ import { AIProviderNotConfiguredError } from '../../errors/errors.js';
7
7
  /**
8
8
  * Default HTTP-backed virtual user. Signs in lazily on first invoke, holds the
9
9
  * session cookies for its lifetime, and re-logs-in once on a 401 mid-run (long
@@ -49,7 +49,7 @@ export type { CoreVirtualUser, CoreVirtualUsers, VirtualUserAccountMeta, Virtual
49
49
  * imports services, which only a bundler could remove and an unbundled Node or
50
50
  * Lambda deploy would load outright.
51
51
  */
52
- export { HttpVirtualUser, createHttpVirtualUsers, type HttpVirtualUsersConfig, } from '../../services/http-virtual-users.js';
52
+ export { HttpVirtualUser, createHttpVirtualUsers, type HttpVirtualUsersConfig, } from './http-virtual-users.js';
53
53
  export { statementSignIn, inProcessSignIn, authMount, type VirtualUserSignIn, type VirtualUserStatementMint, type StatementSignInOptions, type InProcessAuth, } from '../../services/virtual-user-sign-in.js';
54
54
  export { createCookieJar, type ScenarioCookieJar, } from '../../services/scenario-cookie-jar.js';
55
55
  export { postScenarioJson, readScenarioHttpResponse, } from '../../services/virtual-users-service.js';
@@ -23,7 +23,7 @@ export { APP_SCOPE_ROOT, appScopeId, buildAppScopeDefinition, } from './virtual-
23
23
  * imports services, which only a bundler could remove and an unbundled Node or
24
24
  * Lambda deploy would load outright.
25
25
  */
26
- export { HttpVirtualUser, createHttpVirtualUsers, } from '../../services/http-virtual-users.js';
26
+ export { HttpVirtualUser, createHttpVirtualUsers, } from './http-virtual-users.js';
27
27
  export { statementSignIn, inProcessSignIn, authMount, } from '../../services/virtual-user-sign-in.js';
28
28
  export { createCookieJar, } from '../../services/scenario-cookie-jar.js';
29
29
  export { postScenarioJson, readScenarioHttpResponse, } from '../../services/virtual-users-service.js';
@@ -1,5 +1,5 @@
1
1
  import type { ResolvedVirtualUser } from '../../services/virtual-users-service.js';
2
- import type { VirtualUserLLM } from './conversation/run-conversation.js';
2
+ import { type VirtualUserLLM } from './conversation/run-conversation.js';
3
3
  import { type VirtualUserTuning } from './virtual-user-dispositions.js';
4
4
  import type { ApiCatalogueEntry, IntentSource, VirtualUserBudget, VirtualUserDisposition, VirtualUserFinding, VirtualUserRunResult, VirtualUserTally, VirtualUserTarget } from './virtual-user.types.js';
5
5
  /** What an app-specific oracle is shown about one call. */
@@ -13,6 +13,7 @@ export interface VirtualUserCallContext {
13
13
  step: number;
14
14
  disposition: VirtualUserDisposition;
15
15
  }
16
+ /** Everything one autonomous virtual-user run is given. */
16
17
  export interface RunVirtualUserParams {
17
18
  /** The person being run — name, job title, personality, goals. */
18
19
  virtualUser: ResolvedVirtualUser;
@@ -1,3 +1,4 @@
1
+ import { readObject, } from './conversation/run-conversation.js';
1
2
  import { getDurationInMilliseconds } from '../../time-utils.js';
2
3
  import { catalogueIndex, catalogueLookup, describeEntry, isReadOnly, reachableCatalogue, renderCatalogue, } from './virtual-user-catalogue.js';
3
4
  import { dispositionProfile, } from './virtual-user-dispositions.js';
@@ -39,20 +40,6 @@ const msg = (role, content) => ({
39
40
  content,
40
41
  createdAt: new Date(),
41
42
  });
42
- /** Read a structured result, falling back to parsing JSON out of the text. */
43
- const readObject = (result) => {
44
- if (result.object && typeof result.object === 'object')
45
- return result.object;
46
- if (result.text) {
47
- try {
48
- return JSON.parse(result.text);
49
- }
50
- catch {
51
- return null;
52
- }
53
- }
54
- return null;
55
- };
56
43
  /**
57
44
  * The arguments for a call, however the model chose to spell them.
58
45
  *
@@ -120,9 +120,11 @@ export type CoreVirtualUser = {
120
120
  };
121
121
  /** Virtual users to declare, keyed by id. */
122
122
  export type CoreVirtualUsers = Record<string, CoreVirtualUser>;
123
+ /** Generated metadata for the account a virtual user signs in with. */
123
124
  export type VirtualUserAccountMeta = {
124
125
  provider?: string;
125
126
  };
127
+ /** Generated metadata for one declared virtual user. */
126
128
  export type VirtualUserMeta = {
127
129
  /** The key it was declared under. */
128
130
  id: string;
@@ -146,5 +148,7 @@ export type VirtualUserMeta = {
146
148
  app?: string;
147
149
  sourceFile?: string;
148
150
  };
151
+ /** Every declared virtual user, in declaration order. */
149
152
  export type VirtualUserDefinitions = VirtualUserMeta[];
153
+ /** Generated metadata for every declared virtual user, keyed by id. */
150
154
  export type VirtualUsersMeta = Record<string, VirtualUserMeta>;
@@ -3,7 +3,7 @@ import type { Logger } from '../../services/logger.js';
3
3
  import type { MetaService } from '../../services/meta-service.js';
4
4
  import type { VariablesService } from '../../services/variables-service.js';
5
5
  import type { AgentRunnerService } from '../../services/agent-runner-service.js';
6
- import type { HttpVirtualUsersConfig } from '../../services/http-virtual-users.js';
6
+ import type { HttpVirtualUsersConfig } from './http-virtual-users.js';
7
7
  import type { ResolvedVirtualUser, ScenarioVirtualUsers } from '../../services/virtual-users-service.js';
8
8
  import type { VirtualUserEnvironment } from '../virtual-user/virtual-user-environments.js';
9
9
  import type { StepRecord, VirtualUserDisposition } from './virtual-user.types.js';
@@ -56,6 +56,11 @@ export declare const VIRTUAL_USER_VARIABLES: {
56
56
  export declare const runnableVirtualUser: (virtualUsers: ScaffoldVirtualUsers, virtualUserId: string) => ResolvedVirtualUser;
57
57
  /** The store, or the error naming the one to wire. */
58
58
  export declare const requireVirtualUserRunStore: (store: VirtualUserRunStore | undefined, reading?: boolean) => VirtualUserRunStore;
59
+ /**
60
+ * The schedule store, or an error naming the one to wire.
61
+ *
62
+ * @throws Error when no `virtualUserScheduleStore` is wired.
63
+ */
59
64
  export declare const requireVirtualUserScheduleStore: (store: VirtualUserScheduleStore | undefined) => VirtualUserScheduleStore;
60
65
  /** What a caller asked for, before the declaration fills in what it left out. */
61
66
  export interface StartVirtualUserRunParams {
@@ -175,6 +180,9 @@ export declare const serializeVirtualUserSchedule: (schedule: VirtualUserSchedul
175
180
  goals: string[];
176
181
  };
177
182
  };
183
+ /**
184
+ * What a request to create or change a virtual user's schedule carries. Omitted fields keep their current value.
185
+ */
178
186
  export interface WriteVirtualUserScheduleParams {
179
187
  store: VirtualUserScheduleStore | undefined;
180
188
  virtualUsers: ScaffoldVirtualUsers;
@@ -228,6 +236,7 @@ export declare const virtualUserScheduleRunInput: (schedule: VirtualUserSchedule
228
236
  * otherwise the only trace that a virtual user is still out there working.
229
237
  */
230
238
  export declare const logVirtualUserTick: (logger: Logger, result: VirtualUserTickResult) => void;
239
+ /** What the scaffolded run worker needs to execute one recorded virtual-user run. */
231
240
  export interface ExecuteVirtualUserRunParams {
232
241
  runStore: VirtualUserRunStore | undefined;
233
242
  metaService: MetaService | undefined;
@@ -53,6 +53,11 @@ export const requireVirtualUserRunStore = (store, reading = false) => {
53
53
  }
54
54
  return store;
55
55
  };
56
+ /**
57
+ * The schedule store, or an error naming the one to wire.
58
+ *
59
+ * @throws Error when no `virtualUserScheduleStore` is wired.
60
+ */
56
61
  export const requireVirtualUserScheduleStore = (store) => {
57
62
  if (!store) {
58
63
  throw new Error(MISSING_SCHEDULE_STORE);
@@ -21,6 +21,7 @@ export declare const STALE_RUN_AFTER_MS: number;
21
21
  * not the one that finds the most.
22
22
  */
23
23
  export declare const DEFAULT_MIN_INTERVAL_MS: number;
24
+ /** The upper bound of the default cadence; see {@link DEFAULT_MIN_INTERVAL_MS}. */
24
25
  export declare const DEFAULT_MAX_INTERVAL_MS: number;
25
26
  /** Whether a row is the tick's business, for stores that cannot ask in a query. */
26
27
  export declare const isDue: (schedule: VirtualUserScheduleRecord, now: Date) => boolean;
@@ -33,6 +34,9 @@ export declare const isDue: (schedule: VirtualUserScheduleRecord, now: Date) =>
33
34
  */
34
35
  export declare const nextRunAt: (schedule: Pick<VirtualUserScheduleRecord, 'minIntervalMs' | 'maxIntervalMs'>, now: Date, random: () => number) => Date;
35
36
  export type VirtualUserSkipReason = 'in-flight' | 'dispatch-failed' | 'claimed-elsewhere';
37
+ /**
38
+ * What one scheduling tick did: runs started, virtual users skipped and why, and stranded runs reaped.
39
+ */
36
40
  export interface VirtualUserTickResult {
37
41
  dispatched: {
38
42
  virtualUserId: string;
@@ -45,6 +49,7 @@ export interface VirtualUserTickResult {
45
49
  /** Runs found stranded at `running` and marked failed. */
46
50
  reaped: string[];
47
51
  }
52
+ /** The stores a scheduling tick reads and the callback that starts a run. */
48
53
  export interface VirtualUserTickParams {
49
54
  schedules: VirtualUserScheduleStore;
50
55
  runs: VirtualUserRunStore;
@@ -19,6 +19,7 @@ export const STALE_RUN_AFTER_MS = 2 * 60 * 60 * 1000;
19
19
  * not the one that finds the most.
20
20
  */
21
21
  export const DEFAULT_MIN_INTERVAL_MS = 6 * 60 * 60 * 1000;
22
+ /** The upper bound of the default cadence; see {@link DEFAULT_MIN_INTERVAL_MS}. */
22
23
  export const DEFAULT_MAX_INTERVAL_MS = 24 * 60 * 60 * 1000;
23
24
  /** Whether a row is the tick's business, for stores that cannot ask in a query. */
24
25
  export const isDue = (schedule, now) => schedule.enabled && schedule.nextRunAt.getTime() <= now.getTime();
@@ -1,5 +1,6 @@
1
1
  import type { ScenarioVirtualUser } from '../../services/virtual-users-service.js';
2
2
  import type { VirtualUserTarget } from './virtual-user.types.js';
3
+ /** Options for `virtualUserTarget`. */
3
4
  export interface VirtualUserTargetOptions {
4
5
  /** Model the virtual user uses for its side of a conversation with an agent. */
5
6
  model?: string;
@@ -1,12 +1,14 @@
1
1
  import type { StandardSchemaV1 } from '@standard-schema/spec';
2
2
  import type { Safe } from '../../classification/secret-value.js';
3
3
  import type { SendWebhookInput, SendWebhookResult, WebhookService } from '../../services/webhook-service.js';
4
+ /** An outgoing webhook event your app sends: its event name, a title and description for docs, and the schema its payload must satisfy. */
4
5
  export type CoreOutgoingWebhook<Event extends string = string, Payload extends StandardSchemaV1 = StandardSchemaV1> = {
5
6
  event: Event;
6
7
  title: string;
7
8
  description?: string;
8
9
  payload: Payload;
9
10
  };
11
+ /** Generated metadata for one outgoing webhook event. */
10
12
  export type OutgoingWebhookMeta = {
11
13
  event: string;
12
14
  title: string;
@@ -15,14 +17,32 @@ export type OutgoingWebhookMeta = {
15
17
  exportedName?: string;
16
18
  sourceFile?: string;
17
19
  };
20
+ /** Generated metadata for every outgoing webhook event, keyed by event name. */
18
21
  export type OutgoingWebhooksMeta = Record<string, OutgoingWebhookMeta>;
22
+ /** The payload type of an outgoing webhook, inferred from its schema's input type. */
19
23
  export type OutgoingWebhookPayloadOf<W> = W extends CoreOutgoingWebhook<string, infer S> ? StandardSchemaV1.InferInput<S> : never;
24
+ /** Resolves the `data` a {@link TypedWebhookService.send} call must carry for its `event`: the event's payload when it is a known event, unconstrained otherwise. */
20
25
  export type OutgoingWebhookDataFor<TMap, Input> = Input extends {
21
26
  event: infer Event;
22
27
  } ? Event extends keyof TMap ? {
23
28
  data: Safe<TMap[Event]>;
24
29
  } : unknown : unknown;
30
+ /**
31
+ * A `WebhookService` whose `send` checks `data` against the payload of the named event. An app's generated types supply the event-to-payload map.
32
+ *
33
+ * `data` must be {@link Safe}: a payload with a `SecretValue` anywhere in it
34
+ * fails to compile rather than being sent to a third party.
35
+ */
25
36
  export interface TypedWebhookService<TMap = Record<string, unknown>> extends Omit<WebhookService, 'send'> {
26
37
  send<const T extends SendWebhookInput>(input: Safe<T> & OutgoingWebhookDataFor<TMap, T>): Promise<SendWebhookResult>;
27
38
  }
39
+ /**
40
+ * Declares an outgoing webhook event and its payload schema. Returns the definition unchanged.
41
+ *
42
+ * `pikku` collects these into the generated event-to-payload map, which is what
43
+ * makes `webhookService.send({ event, data })` type-check `data` against the
44
+ * schema. Defining an event does not send anything or register a URL.
45
+ *
46
+ * @param webhook - The event name, title, optional description, and payload schema.
47
+ */
28
48
  export declare const defineOutgoingWebhook: <const Event extends string, Payload extends StandardSchemaV1>(webhook: CoreOutgoingWebhook<Event, Payload>) => CoreOutgoingWebhook<Event, Payload>;
@@ -1 +1,10 @@
1
+ /**
2
+ * Declares an outgoing webhook event and its payload schema. Returns the definition unchanged.
3
+ *
4
+ * `pikku` collects these into the generated event-to-payload map, which is what
5
+ * makes `webhookService.send({ event, data })` type-check `data` against the
6
+ * schema. Defining an event does not send anything or register a URL.
7
+ *
8
+ * @param webhook - The event name, title, optional description, and payload schema.
9
+ */
1
10
  export const defineOutgoingWebhook = (webhook) => webhook;
@@ -528,10 +528,7 @@ export interface WorkflowStepWire {
528
528
  */
529
529
  fromInvocationId?: string;
530
530
  }
531
- /**
532
- * Workflow wire object for DSL workflows
533
- * Provides workflow-specific capabilities to function execution
534
- */
531
+ /** The outcome of the forward call a `compensate` function is undoing. */
535
532
  export type CompensatingFor<Out = unknown> = {
536
533
  ok: true;
537
534
  output: Out;
@@ -542,6 +539,10 @@ export type CompensatingFor<Out = unknown> = {
542
539
  error: SerializedError;
543
540
  stepName?: string;
544
541
  };
542
+ /**
543
+ * Workflow wire object for DSL workflows
544
+ * Provides workflow-specific capabilities to function execution
545
+ */
545
546
  export interface PikkuWorkflowWire {
546
547
  /**
547
548
  * Set only while a function's `compensate` is running: the outcome of the
@@ -583,6 +584,9 @@ export interface PikkuWorkflowWire {
583
584
  * context would reject every wire whose scenario output differs from it.
584
585
  */
585
586
  export type ScenarioContext<Out = unknown> = 0 extends 1 & Out ? any : Out extends object ? Partial<Out> : Record<string, unknown>;
587
+ /**
588
+ * The workflow wire a scenario body receives: every workflow step, plus the expectation steps and the shared `context`.
589
+ */
586
590
  export interface PikkuScenarioWire<Out = unknown> extends PikkuWorkflowWire {
587
591
  /**
588
592
  * Scratch the body writes and the `before`/`after` hooks read. A hook is a
@@ -1 +1,8 @@
1
+ /**
2
+ * Registers a workflow under its generated name. Called by generated code; an
3
+ * app declares workflows with `pikkuWorkflowFunc` and its relatives instead.
4
+ * Skipped with a warning when no metadata was generated for the name.
5
+ *
6
+ * @internal
7
+ */
1
8
  export declare const addWorkflow: (workflowName: string, workflowFunc: any, packageName?: string | null) => void;
@@ -1,5 +1,12 @@
1
1
  import { pikkuState } from '../../../pikku-state.js';
2
2
  import { addFunction } from '../../../function/function-runner.js';
3
+ /**
4
+ * Registers a workflow under its generated name. Called by generated code; an
5
+ * app declares workflows with `pikkuWorkflowFunc` and its relatives instead.
6
+ * Skipped with a warning when no metadata was generated for the name.
7
+ *
8
+ * @internal
9
+ */
3
10
  export const addWorkflow = (workflowName, workflowFunc, packageName = null) => {
4
11
  const meta = pikkuState(packageName, 'workflows', 'meta');
5
12
  const workflowMeta = meta[workflowName];
@@ -1,6 +1,18 @@
1
1
  import type { CoreWorkflow } from './workflow.types.js';
2
2
  import type { CoreFeature, FeaturePlanEntry } from './scenario.types.js';
3
+ /**
4
+ * Registers a scenario feature. Called by generated code for each `pikkuFeature`.
5
+ *
6
+ * @internal
7
+ */
3
8
  export declare const addFeature: (featureId: string, feature: CoreFeature, packageName?: string | null) => void;
9
+ /**
10
+ * Matches each feature's scenarios to the workflow names they are registered
11
+ * under, merging feature and scenario tags. Entries that name a scenario no
12
+ * workflow registration holds come back in `unresolved`.
13
+ *
14
+ * @internal
15
+ */
4
16
  export declare const resolveFeatureScenarios: (features: Map<string, CoreFeature>, registrations: Map<string, CoreWorkflow>) => {
5
17
  entries: FeaturePlanEntry[];
6
18
  unresolved: Array<{
@@ -1,7 +1,19 @@
1
1
  import { pikkuState } from '../../pikku-state.js';
2
+ /**
3
+ * Registers a scenario feature. Called by generated code for each `pikkuFeature`.
4
+ *
5
+ * @internal
6
+ */
2
7
  export const addFeature = (featureId, feature, packageName = null) => {
3
8
  pikkuState(packageName, 'workflows', 'features').set(featureId, feature);
4
9
  };
10
+ /**
11
+ * Matches each feature's scenarios to the workflow names they are registered
12
+ * under, merging feature and scenario tags. Entries that name a scenario no
13
+ * workflow registration holds come back in `unresolved`.
14
+ *
15
+ * @internal
16
+ */
5
17
  export const resolveFeatureScenarios = (features, registrations) => {
6
18
  const nameByConfig = new Map();
7
19
  for (const [name, registration] of registrations) {
@@ -15,6 +15,11 @@ export type TypedRef<T> = RefValue & {
15
15
  type InputWithRefs<T> = {
16
16
  [K in keyof T]: T[K] | TypedRef<T[K]>;
17
17
  };
18
+ /**
19
+ * Builds a typed graph-node map for a set of RPCs: given a node-id → RPC-name
20
+ * map and per-node settings, returns the {@link GraphNodeConfig} for every node,
21
+ * with refs typed against each RPC's input and output.
22
+ */
18
23
  export declare function createGraph<RPCMap extends Record<string, RPCHandler>>(): <const FuncMap extends Record<string, keyof RPCMap & string>>(funcMap: FuncMap, nodesOrBuilder?: GraphNodeConfigMap<FuncMap, RPCMap> | ((nodes: FuncMap) => GraphNodeConfigMap<FuncMap, RPCMap>)) => Record<Extract<keyof FuncMap, string>, GraphNodeConfig<Extract<keyof FuncMap, string>>>;
19
24
  type GraphNodeConfigMap<FuncMap extends Record<string, string>, RPCMap extends Record<string, RPCHandler>> = {
20
25
  [K in Extract<keyof FuncMap, string>]?: {
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Builds a typed graph-node map for a set of RPCs: given a node-id → RPC-name
3
+ * map and per-node settings, returns the {@link GraphNodeConfig} for every node,
4
+ * with refs typed against each RPC's input and output.
5
+ */
1
6
  export function createGraph() {
2
7
  return (funcMap, nodesOrBuilder) => {
3
8
  if (!nodesOrBuilder) {
@@ -1,3 +1,4 @@
1
+ /** A string interpolated at run time from other nodes' outputs, as `template` builds it. */
1
2
  export type TemplateString = {
2
3
  $template: {
3
4
  parts: string[];
@@ -9,6 +10,11 @@ export type TemplateString = {
9
10
  } & {
10
11
  __brand: 'TemplateString';
11
12
  };
13
+ /**
14
+ * Builds a {@link TemplateString} for a graph node's input: each `$0`, `$1`, …
15
+ * in `templateStr` is replaced at run time by the value of the ref at that
16
+ * index. An index with no ref resolves to an unknown ref.
17
+ */
12
18
  export declare function template(templateStr: string, refs: Array<{
13
19
  $ref: string;
14
20
  path?: string;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Builds a {@link TemplateString} for a graph node's input: each `$0`, `$1`, …
3
+ * in `templateStr` is replaced at run time by the value of the ref at that
4
+ * index. An index with no ref resolves to an unknown ref.
5
+ */
1
6
  export function template(templateStr, refs) {
2
7
  const parts = [];
3
8
  const expressions = [];
@@ -1,3 +1,4 @@
1
+ /** What `pikkuWorkflowGraph` takes. */
1
2
  export interface PikkuWorkflowGraphConfig<FuncMap extends Record<string, string>, T> {
2
3
  /** Keeps the graph in the codebase but out of the build. */
3
4
  disabled?: true;
@@ -14,6 +15,7 @@ export interface PikkuWorkflowGraphConfig<FuncMap extends Record<string, string>
14
15
  /** Free text carried onto the rendered graph, for a reader who needs the reasoning the shape cannot show. */
15
16
  notes?: string[];
16
17
  }
18
+ /** The marker `pikkuWorkflowGraph` returns; the graph itself is read from source by `pikku all`. */
17
19
  export interface PikkuWorkflowGraphResult {
18
20
  __type: 'pikkuWorkflowGraph';
19
21
  name?: string;
@@ -21,4 +23,14 @@ export interface PikkuWorkflowGraphResult {
21
23
  tags?: string[];
22
24
  notes?: string[];
23
25
  }
26
+ /**
27
+ * Declares a workflow as a graph: each node names an RPC, and `config` says what
28
+ * feeds it and which nodes run next. The shape is data, so the console can draw
29
+ * it and a run records which branch it took.
30
+ *
31
+ * The inspector reads the graph from source at build time; at runtime this only
32
+ * returns a marker carrying the descriptive fields.
33
+ *
34
+ * @example snippet: workflowGraph
35
+ */
24
36
  export declare function pikkuWorkflowGraph<const FuncMap extends Record<string, string>>(config: PikkuWorkflowGraphConfig<FuncMap, any>): PikkuWorkflowGraphResult;
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Declares a workflow as a graph: each node names an RPC, and `config` says what
3
+ * feeds it and which nodes run next. The shape is data, so the console can draw
4
+ * it and a run records which branch it took.
5
+ *
6
+ * The inspector reads the graph from source at build time; at runtime this only
7
+ * returns a marker carrying the descriptive fields.
8
+ *
9
+ * @example snippet: workflowGraph
10
+ */
1
11
  export function pikkuWorkflowGraph(config) {
2
12
  return {
3
13
  __type: 'pikkuWorkflowGraph',
@@ -1,20 +1,31 @@
1
1
  import type { TemplateString } from './template.js';
2
+ /** A reference to another node's output, or a path inside it, resolved when the node runs. */
2
3
  export interface RefValue {
3
4
  __isRef: true;
4
5
  nodeId: string;
5
6
  path?: string;
6
7
  }
7
8
  export declare const createRef: (nodeId: string, path?: string) => RefValue;
9
+ /** Whether a value is a {@link RefValue}. */
8
10
  export declare const isRef: (value: unknown) => value is RefValue;
9
11
  export type RefFn<NodeIds extends string = string> = (nodeId: NodeIds, path?: string) => RefValue;
10
12
  export type NextConfig<NodeIds extends string = string> = NodeIds | NodeIds[] | Record<string, NodeIds | NodeIds[]>;
13
+ /** The `template` helper as a graph node's `input` builder receives it. */
11
14
  export type TemplateFn = (templateStr: string, refs: Array<{
12
15
  $ref: string;
13
16
  path?: string;
14
17
  }>) => TemplateString;
18
+ /** Refers to the current element (or a path inside it) of a `forEach` node. */
15
19
  export type ItemFn = (path?: string) => RefValue;
20
+ /**
21
+ * The upstream array a `forEach` node iterates: a node id, a ref, or a function returning a ref.
22
+ */
16
23
  export type ForEachConfig<NodeIds extends string = string> = NodeIds | RefValue | ((ref: RefFn<NodeIds>) => RefValue);
24
+ /** Whether a `forEach` node's per-item instances run in parallel or one after another. */
17
25
  export type ForEachMode = 'parallel' | 'sequential';
26
+ /**
27
+ * One node of a workflow graph: the RPC it runs, its input, its outgoing edges and its failure handling.
28
+ */
18
29
  export interface GraphNodeConfig<NodeIds extends string = string> {
19
30
  func: string;
20
31
  /**
@@ -3,6 +3,7 @@ export const createRef = (nodeId, path) => ({
3
3
  nodeId,
4
4
  path,
5
5
  });
6
+ /** Whether a value is a {@link RefValue}. */
6
7
  export const isRef = (value) => typeof value === 'object' &&
7
8
  value !== null &&
8
9
  '__isRef' in value &&
@@ -1,6 +1,11 @@
1
- import { PikkuWorkflowService } from '../wirings/workflow/pikku-workflow-service.js';
2
- import type { SerializedError } from '../errors/serialized-error.js';
3
- import type { WorkflowPlannedStep, WorkflowQueueOptions, WorkflowRun, WorkflowRunService, WorkflowRunWire, StepState, StepStatus, WorkflowStatus, WorkflowVersionStatus, WorkflowStepOptions } from '../wirings/workflow/workflow.types.js';
1
+ import { PikkuWorkflowService } from './pikku-workflow-service.js';
2
+ import type { SerializedError } from '../../errors/serialized-error.js';
3
+ import type { WorkflowPlannedStep, WorkflowQueueOptions, WorkflowRun, WorkflowRunService, WorkflowRunWire, StepState, StepStatus, WorkflowStatus, WorkflowVersionStatus, WorkflowStepOptions } from './workflow.types.js';
4
+ /**
5
+ * A workflow service that keeps runs, steps and state in memory and runs every
6
+ * step inline. For tests and local development: nothing survives a restart, and
7
+ * it does not wire workflow queues or coordinate with another process.
8
+ */
4
9
  export declare class InMemoryWorkflowService extends PikkuWorkflowService implements WorkflowRunService {
5
10
  constructor(options?: WorkflowQueueOptions);
6
11
  private sleepTimers;
@@ -1,8 +1,13 @@
1
- import { PikkuWorkflowService } from '../wirings/workflow/pikku-workflow-service.js';
2
- import { isExpectedError } from '../errors/error-handler.js';
3
- import { isStepLeaseLive } from '../wirings/workflow/workflow-constants.js';
4
- import { WorkflowStepSupersededError } from '../wirings/workflow/workflow-errors.js';
1
+ import { PikkuWorkflowService } from './pikku-workflow-service.js';
2
+ import { isExpectedError } from '../../errors/error-handler.js';
3
+ import { isStepLeaseLive } from './workflow-constants.js';
4
+ import { WorkflowStepSupersededError } from './workflow-errors.js';
5
5
  // knowledge: decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md
6
+ /**
7
+ * A workflow service that keeps runs, steps and state in memory and runs every
8
+ * step inline. For tests and local development: nothing survives a restart, and
9
+ * it does not wire workflow queues or coordinate with another process.
10
+ */
6
11
  export class InMemoryWorkflowService extends PikkuWorkflowService {
7
12
  constructor(options = {}) {
8
13
  super({ ...options, wireQueues: false });
@@ -1,5 +1,5 @@
1
1
  import { PikkuError } from '../../errors/error-handler.js';
2
- import { InMemoryWorkflowService } from '../../services/in-memory-workflow-service.js';
2
+ import { InMemoryWorkflowService } from './in-memory-workflow-service.js';
3
3
  import type { RunLifecycleContext, WorkflowRunEngine, WorkflowRunExtension } from './workflow-run-engine.types.js';
4
4
  import type { PikkuRawWire } from '../../types/core.types.js';
5
5
  import type { ScenarioVirtualUsers } from '../../services/virtual-users-service.js';
@@ -3,7 +3,7 @@ import { getSingletonServices, getCreateWireServices, pikkuState, } from '../../
3
3
  import { getDurationInMilliseconds } from '../../time-utils.js';
4
4
  import { closeWireServices } from '../../utils.js';
5
5
  import { PikkuError, addError } from '../../errors/error-handler.js';
6
- import { InMemoryWorkflowService } from '../../services/in-memory-workflow-service.js';
6
+ import { InMemoryWorkflowService } from './in-memory-workflow-service.js';
7
7
  import { runScheduledTask } from '../scheduler/scheduler-runner.js';
8
8
  import { WorkflowStepNameNotString } from './workflow-errors.js';
9
9
  import { resolveScenarioSurfaces, witnessesAgree } from './scenario-surface.js';
@@ -497,7 +497,7 @@ export class PikkuScenarioService {
497
497
  apiUrl,
498
498
  appUrl: (await variables.get('APP_URL')) ?? undefined,
499
499
  };
500
- const { createHttpVirtualUsers } = await import('../../services/http-virtual-users.js');
500
+ const { createHttpVirtualUsers } = await import('../virtual-user/http-virtual-users.js');
501
501
  const { inProcessSignIn } = await import('../../services/virtual-user-sign-in.js');
502
502
  return createHttpVirtualUsers({
503
503
  apiUrl,
@@ -8,6 +8,7 @@ import type { PikkuRPC } from '../rpc/rpc-types.js';
8
8
  import { type RunTimeline, type ReconstructedRunState } from './run-timeline.js';
9
9
  import type { WorkflowRunEngine, WorkflowRunExtension } from './workflow-run-engine.types.js';
10
10
  import type { LeaseService } from '../../services/lease-service.js';
11
+ /** The workflow engine; subclasses supply storage. Leases serialise runs and step claims over a shared store. */
11
12
  export declare abstract class PikkuWorkflowService implements WorkflowService {
12
13
  private runExtension?;
13
14
  private runContexts;
@@ -26,6 +26,7 @@ import { runDslWorkflowPass } from './workflow-dsl-pass.js';
26
26
  import { childRunFailure, failRunOrUnwind, isUnwound, compensatingForStep, cancelAndUnwind, createUnwindHost, driveUnwind, recordHasCompensation, isChildWorkflowRecord, } from './workflow-compensation.js';
27
27
  import { runVersionMismatchFallback } from './workflow-version-fallback.js';
28
28
  import { RedispatchBackoff, sweepStalledRuns, sweepUndispatchedSteps, } from './workflow-recovery.js';
29
+ /** The workflow engine; subclasses supply storage. Leases serialise runs and step claims over a shared store. */
29
30
  export class PikkuWorkflowService {
30
31
  runExtension;
31
32
  runContexts = new Map();
@@ -1,5 +1,6 @@
1
1
  import type { SerializedError } from '../../errors/serialized-error.js';
2
2
  import type { StepState, StepStatus } from './workflow.types.js';
3
+ /** One lifecycle transition of one step, in run order. */
3
4
  export interface RunTimelineEvent {
4
5
  seq: number;
5
6
  at: Date;
@@ -11,11 +12,19 @@ export interface RunTimelineEvent {
11
12
  result?: unknown;
12
13
  error?: SerializedError;
13
14
  }
15
+ /** Every step transition in a run, ordered by time. */
14
16
  export type RunTimeline = RunTimelineEvent[];
17
+ /** One stored step attempt, with the name of the step it belongs to. */
15
18
  export type HistoryEntry = StepState & {
16
19
  stepName: string;
17
20
  };
21
+ /**
22
+ * Flattens a run's step history into a {@link RunTimeline}: one event per
23
+ * recorded transition, ordered by timestamp, then lifecycle order, then history
24
+ * order, and numbered with `seq`.
25
+ */
18
26
  export declare function buildRunTimeline(history: HistoryEntry[]): RunTimeline;
27
+ /** A step as it stood at a point in a run's timeline. */
19
28
  export interface ReconstructedStep {
20
29
  stepName: string;
21
30
  compensating: boolean;
@@ -25,7 +34,11 @@ export interface ReconstructedStep {
25
34
  result?: unknown;
26
35
  error?: SerializedError;
27
36
  }
37
+ /**
38
+ * Where a reconstructed run stood: nothing started, a step in flight, a step failed, or nothing in flight.
39
+ */
28
40
  export type RunPhase = 'pending' | 'running' | 'failed' | 'idle';
41
+ /** A run's steps, results and path as of one point in its timeline. */
29
42
  export interface ReconstructedRunState {
30
43
  /** seq of the last applied event, or -1 if the point precedes all events. */
31
44
  seq: number;
@@ -35,5 +48,13 @@ export interface ReconstructedRunState {
35
48
  path: string[];
36
49
  phase: RunPhase;
37
50
  }
51
+ /**
52
+ * Replays a timeline up to a point, for stepping through a run after the fact.
53
+ *
54
+ * @param timeline - The run's timeline, from {@link buildRunTimeline}.
55
+ * @param at - The last event to apply, by `seq`, or every event up to a time.
56
+ * @returns The run as it stood at that point.
57
+ */
38
58
  export declare function reconstructStateAt(timeline: RunTimeline, at: number | Date): ReconstructedRunState;
59
+ /** The run as its whole timeline leaves it. */
39
60
  export declare function reconstructFinalState(timeline: RunTimeline): ReconstructedRunState;