@pikku/addon-console 0.12.42 → 0.12.44

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 (937) hide show
  1. package/CHANGELOG.md +2027 -0
  2. package/dist/.pikku/addon/agent/index.d.ts +8 -0
  3. package/dist/.pikku/addon/agent/index.d.ts.map +1 -0
  4. package/dist/.pikku/addon/agent/index.js +8 -0
  5. package/dist/.pikku/addon/agent/index.js.map +1 -0
  6. package/dist/.pikku/addon/agent/pikku-agent-map.gen.d.ts +4 -0
  7. package/dist/.pikku/addon/agent/pikku-agent-types.gen.d.ts +54 -0
  8. package/dist/.pikku/addon/agent/pikku-agent-types.gen.d.ts.map +1 -0
  9. package/dist/.pikku/addon/agent/pikku-agent-types.gen.js +20 -0
  10. package/dist/.pikku/addon/agent/pikku-agent-types.gen.js.map +1 -0
  11. package/dist/.pikku/addon/agent/pikku-model-aliases.gen.d.ts +2 -0
  12. package/dist/.pikku/addon/agent/pikku-model-aliases.gen.d.ts.map +1 -0
  13. package/dist/.pikku/addon/agent/pikku-model-aliases.gen.js +6 -0
  14. package/dist/.pikku/addon/agent/pikku-model-aliases.gen.js.map +1 -0
  15. package/dist/.pikku/addon/agent/pikku-scorer-names.gen.d.ts +8 -0
  16. package/dist/.pikku/addon/auth/auth.types.d.ts +5 -0
  17. package/dist/.pikku/addon/auth/auth.types.d.ts.map +1 -0
  18. package/dist/.pikku/addon/auth/auth.types.js +6 -0
  19. package/dist/.pikku/addon/auth/auth.types.js.map +1 -0
  20. package/dist/.pikku/addon/auth/index.d.ts +9 -0
  21. package/dist/.pikku/addon/auth/index.d.ts.map +1 -0
  22. package/dist/.pikku/addon/auth/index.js +9 -0
  23. package/dist/.pikku/addon/auth/index.js.map +1 -0
  24. package/dist/.pikku/addon/auth/pikku-auth-types.gen.d.ts +119 -0
  25. package/dist/.pikku/addon/auth/pikku-auth-types.gen.d.ts.map +1 -0
  26. package/dist/.pikku/addon/auth/pikku-auth-types.gen.js +93 -0
  27. package/dist/.pikku/addon/auth/pikku-auth-types.gen.js.map +1 -0
  28. package/dist/.pikku/addon/channel/index.d.ts +8 -0
  29. package/dist/.pikku/addon/channel/index.d.ts.map +1 -0
  30. package/dist/.pikku/addon/channel/index.js +8 -0
  31. package/dist/.pikku/addon/channel/index.js.map +1 -0
  32. package/dist/.pikku/addon/channel/pikku-channel-types.gen.d.ts +91 -0
  33. package/dist/.pikku/addon/channel/pikku-channel-types.gen.d.ts.map +1 -0
  34. package/dist/.pikku/addon/channel/pikku-channel-types.gen.js +43 -0
  35. package/dist/.pikku/addon/channel/pikku-channel-types.gen.js.map +1 -0
  36. package/dist/.pikku/addon/error/index.d.ts +8 -0
  37. package/dist/.pikku/addon/error/index.d.ts.map +1 -0
  38. package/dist/.pikku/addon/error/index.js +8 -0
  39. package/dist/.pikku/addon/error/index.js.map +1 -0
  40. package/dist/.pikku/addon/error/pikku-error-types.gen.d.ts +8 -0
  41. package/dist/.pikku/addon/error/pikku-error-types.gen.d.ts.map +1 -0
  42. package/dist/.pikku/addon/error/pikku-error-types.gen.js +8 -0
  43. package/dist/.pikku/addon/error/pikku-error-types.gen.js.map +1 -0
  44. package/dist/.pikku/addon/function/index.d.ts +8 -0
  45. package/dist/.pikku/addon/function/index.d.ts.map +1 -0
  46. package/dist/.pikku/addon/function/index.js +8 -0
  47. package/dist/.pikku/addon/function/index.js.map +1 -0
  48. package/dist/.pikku/addon/function/pikku-function-types.gen.d.ts +270 -0
  49. package/dist/.pikku/addon/function/pikku-function-types.gen.d.ts.map +1 -0
  50. package/dist/.pikku/addon/function/pikku-function-types.gen.js +117 -0
  51. package/dist/.pikku/addon/function/pikku-function-types.gen.js.map +1 -0
  52. package/dist/.pikku/addon/function/pikku-functions-meta-verbose.gen.json +2146 -0
  53. package/dist/.pikku/addon/function/pikku-functions-meta.gen.d.ts +2 -0
  54. package/dist/.pikku/addon/function/pikku-functions-meta.gen.d.ts.map +1 -0
  55. package/dist/.pikku/addon/function/pikku-functions-meta.gen.js +7 -0
  56. package/dist/.pikku/addon/function/pikku-functions-meta.gen.js.map +1 -0
  57. package/dist/.pikku/addon/function/pikku-functions-meta.gen.json +1690 -0
  58. package/dist/.pikku/addon/function/pikku-functions.gen.d.ts +2 -0
  59. package/dist/.pikku/addon/function/pikku-functions.gen.d.ts.map +1 -0
  60. package/dist/.pikku/addon/function/pikku-functions.gen.js +126 -0
  61. package/dist/.pikku/addon/function/pikku-functions.gen.js.map +1 -0
  62. package/dist/.pikku/addon/http/index.d.ts +8 -0
  63. package/dist/.pikku/addon/http/index.d.ts.map +1 -0
  64. package/dist/.pikku/addon/http/index.js +8 -0
  65. package/dist/.pikku/addon/http/index.js.map +1 -0
  66. package/dist/.pikku/addon/http/pikku-http-types.gen.d.ts +50 -0
  67. package/dist/.pikku/addon/http/pikku-http-types.gen.d.ts.map +1 -0
  68. package/dist/.pikku/addon/http/pikku-http-types.gen.js +11 -0
  69. package/dist/.pikku/addon/http/pikku-http-types.gen.js.map +1 -0
  70. package/dist/.pikku/addon/index.d.ts +8 -0
  71. package/dist/.pikku/addon/index.d.ts.map +1 -0
  72. package/dist/.pikku/addon/index.js +8 -0
  73. package/dist/.pikku/addon/index.js.map +1 -0
  74. package/dist/.pikku/addon/mcp/index.d.ts +8 -0
  75. package/dist/.pikku/addon/mcp/index.d.ts.map +1 -0
  76. package/dist/.pikku/addon/mcp/index.js +8 -0
  77. package/dist/.pikku/addon/mcp/index.js.map +1 -0
  78. package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.d.ts +102 -0
  79. package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.d.ts.map +1 -0
  80. package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.js +16 -0
  81. package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.js.map +1 -0
  82. package/dist/.pikku/addon/middleware/index.d.ts +8 -0
  83. package/dist/.pikku/addon/middleware/index.d.ts.map +1 -0
  84. package/dist/.pikku/addon/middleware/index.js +8 -0
  85. package/dist/.pikku/addon/middleware/index.js.map +1 -0
  86. package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.d.ts +118 -0
  87. package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.d.ts.map +1 -0
  88. package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.js +109 -0
  89. package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.js.map +1 -0
  90. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +2 -2
  91. package/dist/.pikku/addon/pikku-addon-types.gen.d.ts.map +1 -1
  92. package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.d.ts +10 -0
  93. package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.d.ts.map +1 -0
  94. package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.js +10 -0
  95. package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.js.map +1 -0
  96. package/dist/.pikku/addon/pikku-bootstrap.gen.d.ts +10 -0
  97. package/dist/.pikku/addon/pikku-bootstrap.gen.d.ts.map +1 -0
  98. package/dist/.pikku/addon/pikku-bootstrap.gen.js +10 -0
  99. package/dist/.pikku/addon/pikku-bootstrap.gen.js.map +1 -0
  100. package/dist/.pikku/addon/pikku-package.gen.js +3 -3
  101. package/dist/.pikku/addon/pikku-package.gen.js.map +1 -1
  102. package/dist/.pikku/addon/pikku-services.gen.d.ts +50 -0
  103. package/dist/.pikku/addon/pikku-services.gen.d.ts.map +1 -0
  104. package/dist/.pikku/addon/pikku-services.gen.js +46 -0
  105. package/dist/.pikku/addon/pikku-services.gen.js.map +1 -0
  106. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-map.gen.d.ts +251 -0
  107. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +253 -0
  108. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-map.remote.gen.d.ts +184 -0
  109. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +2 -0
  110. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts.map +1 -0
  111. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.js +7 -0
  112. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.js.map +1 -0
  113. package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.json +62 -0
  114. package/dist/.pikku/addon/scenarios/index.d.ts +8 -0
  115. package/dist/.pikku/addon/scenarios/index.d.ts.map +1 -0
  116. package/dist/.pikku/addon/scenarios/index.js +8 -0
  117. package/dist/.pikku/addon/scenarios/index.js.map +1 -0
  118. package/dist/.pikku/addon/scenarios/pikku-personas.gen.d.ts +18 -0
  119. package/dist/.pikku/addon/scenarios/pikku-personas.gen.d.ts.map +1 -0
  120. package/dist/.pikku/addon/scenarios/pikku-personas.gen.js +18 -0
  121. package/dist/.pikku/addon/scenarios/pikku-personas.gen.js.map +1 -0
  122. package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.d.ts +2 -0
  123. package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.d.ts.map +1 -0
  124. package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.js +11 -0
  125. package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.js.map +1 -0
  126. package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.json +1 -0
  127. package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.d.ts +5 -0
  128. package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.d.ts.map +1 -0
  129. package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.js +2 -0
  130. package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.js.map +1 -0
  131. package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.d.ts +311 -0
  132. package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.d.ts.map +1 -0
  133. package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.js +72 -0
  134. package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.js.map +1 -0
  135. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.d.ts +2 -0
  136. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.d.ts.map +1 -0
  137. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.js +11 -0
  138. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.js.map +1 -0
  139. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.d.ts +5 -0
  140. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.d.ts.map +1 -0
  141. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.js +2 -0
  142. package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.js.map +1 -0
  143. package/dist/.pikku/addon/scenarios/schemas/register.gen.d.ts +5 -0
  144. package/dist/.pikku/addon/scenarios/schemas/register.gen.d.ts.map +1 -0
  145. package/dist/.pikku/addon/scenarios/schemas/register.gen.js +5 -0
  146. package/dist/.pikku/addon/scenarios/schemas/register.gen.js.map +1 -0
  147. package/dist/.pikku/addon/schemas/register.gen.d.ts +2 -0
  148. package/dist/.pikku/addon/schemas/register.gen.d.ts.map +1 -0
  149. package/dist/.pikku/addon/schemas/register.gen.js +201 -0
  150. package/dist/.pikku/addon/schemas/register.gen.js.map +1 -0
  151. package/dist/.pikku/addon/schemas/schemas/AddonMetaPage.schema.json +1 -0
  152. package/dist/.pikku/addon/schemas/schemas/AddonMetaQuery.schema.json +1 -0
  153. package/dist/.pikku/addon/schemas/schemas/AddonPackageInfo.schema.json +1 -0
  154. package/dist/.pikku/addon/schemas/schemas/AddonReadinessInput.schema.json +1 -0
  155. package/dist/.pikku/addon/schemas/schemas/AddonReadinessOutput.schema.json +1 -0
  156. package/dist/.pikku/addon/schemas/schemas/AgentCredentialCheckInput.schema.json +1 -0
  157. package/dist/.pikku/addon/schemas/schemas/AgentCredentialCheckOutput.schema.json +1 -0
  158. package/dist/.pikku/addon/schemas/schemas/AllMeta.schema.json +1 -0
  159. package/dist/.pikku/addon/schemas/schemas/AuthProvidersMeta.schema.json +1 -0
  160. package/dist/.pikku/addon/schemas/schemas/ChannelSnippets.schema.json +1 -0
  161. package/dist/.pikku/addon/schemas/schemas/DbSchema.schema.json +1 -0
  162. package/dist/.pikku/addon/schemas/schemas/DeleteAgentThreadInput.schema.json +1 -0
  163. package/dist/.pikku/addon/schemas/schemas/DeleteAgentThreadOutput.schema.json +1 -0
  164. package/dist/.pikku/addon/schemas/schemas/DeleteScenarioRunInput.schema.json +1 -0
  165. package/dist/.pikku/addon/schemas/schemas/DeleteWorkflowRunInput.schema.json +1 -0
  166. package/dist/.pikku/addon/schemas/schemas/DeleteWorkflowRunOutput.schema.json +1 -0
  167. package/dist/.pikku/addon/schemas/schemas/GetAddonCategoriesOutput.schema.json +1 -0
  168. package/dist/.pikku/addon/schemas/schemas/GetAddonCommunityPackageInput.schema.json +1 -0
  169. package/dist/.pikku/addon/schemas/schemas/GetAddonIconInput.schema.json +1 -0
  170. package/dist/.pikku/addon/schemas/schemas/GetAddonInstalledPackageInput.schema.json +1 -0
  171. package/dist/.pikku/addon/schemas/schemas/GetAddonInstancesInput.schema.json +1 -0
  172. package/dist/.pikku/addon/schemas/schemas/GetAddonInstancesOutput.schema.json +1 -0
  173. package/dist/.pikku/addon/schemas/schemas/GetAgentRunScoresInput.schema.json +1 -0
  174. package/dist/.pikku/addon/schemas/schemas/GetAgentRunScoresOutput.schema.json +1 -0
  175. package/dist/.pikku/addon/schemas/schemas/GetAgentThreadMessagesInput.schema.json +1 -0
  176. package/dist/.pikku/addon/schemas/schemas/GetAgentThreadMessagesOutput.schema.json +1 -0
  177. package/dist/.pikku/addon/schemas/schemas/GetAgentThreadRunsInput.schema.json +1 -0
  178. package/dist/.pikku/addon/schemas/schemas/GetAgentThreadRunsOutput.schema.json +1 -0
  179. package/dist/.pikku/addon/schemas/schemas/GetAgentThreadsInput.schema.json +1 -0
  180. package/dist/.pikku/addon/schemas/schemas/GetAgentThreadsOutput.schema.json +1 -0
  181. package/dist/.pikku/addon/schemas/schemas/GetChannelSnippetsInput.schema.json +1 -0
  182. package/dist/.pikku/addon/schemas/schemas/GetFunctionsMetaOutput.schema.json +1 -0
  183. package/dist/.pikku/addon/schemas/schemas/GetInstalledAddonsOutput.schema.json +1 -0
  184. package/dist/.pikku/addon/schemas/schemas/GetMyAccessOutput.schema.json +1 -0
  185. package/dist/.pikku/addon/schemas/schemas/GetOpenapiCategoriesOutput.schema.json +1 -0
  186. package/dist/.pikku/addon/schemas/schemas/GetOpenapiDetailInput.schema.json +1 -0
  187. package/dist/.pikku/addon/schemas/schemas/GetOpenapiDetailOutput.schema.json +1 -0
  188. package/dist/.pikku/addon/schemas/schemas/GetOpenapisInput.schema.json +1 -0
  189. package/dist/.pikku/addon/schemas/schemas/GetOpenapisOutput.schema.json +1 -0
  190. package/dist/.pikku/addon/schemas/schemas/GetScenarioArtifactInput.schema.json +1 -0
  191. package/dist/.pikku/addon/schemas/schemas/GetScenarioRunInput.schema.json +1 -0
  192. package/dist/.pikku/addon/schemas/schemas/GetSchemaInput.schema.json +1 -0
  193. package/dist/.pikku/addon/schemas/schemas/GetScorersOutput.schema.json +1 -0
  194. package/dist/.pikku/addon/schemas/schemas/GetStateDiffInput.schema.json +1 -0
  195. package/dist/.pikku/addon/schemas/schemas/GetWebhookDeliveryInput.schema.json +1 -0
  196. package/dist/.pikku/addon/schemas/schemas/GetWorkflowMetaByIdInput.schema.json +1 -0
  197. package/dist/.pikku/addon/schemas/schemas/GetWorkflowMetaByIdOutput.schema.json +1 -0
  198. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunHistoryInput.schema.json +1 -0
  199. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunHistoryOutput.schema.json +1 -0
  200. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunInput.schema.json +1 -0
  201. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunNamesOutput.schema.json +1 -0
  202. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunOutput.schema.json +1 -0
  203. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunStepsInput.schema.json +1 -0
  204. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunStepsOutput.schema.json +1 -0
  205. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunsInput.schema.json +1 -0
  206. package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunsOutput.schema.json +1 -0
  207. package/dist/.pikku/addon/schemas/schemas/GetWorkflowVersionInput.schema.json +1 -0
  208. package/dist/.pikku/addon/schemas/schemas/GetWorkflowVersionOutput.schema.json +1 -0
  209. package/dist/.pikku/addon/schemas/schemas/InstallAddonInput.schema.json +1 -0
  210. package/dist/.pikku/addon/schemas/schemas/InstallAddonOutput.schema.json +1 -0
  211. package/dist/.pikku/addon/schemas/schemas/InstallOpenapiAddonInput.schema.json +1 -0
  212. package/dist/.pikku/addon/schemas/schemas/InstallOpenapiAddonOutput.schema.json +1 -0
  213. package/dist/.pikku/addon/schemas/schemas/JSONSchema7.schema.json +1 -0
  214. package/dist/.pikku/addon/schemas/schemas/KnowledgeBundle.schema.json +1 -0
  215. package/dist/.pikku/addon/schemas/schemas/ListScenarioRunsInput.schema.json +1 -0
  216. package/dist/.pikku/addon/schemas/schemas/ListScenarioRunsOutput.schema.json +1 -0
  217. package/dist/.pikku/addon/schemas/schemas/ListWebhookDeliveriesInput.schema.json +1 -0
  218. package/dist/.pikku/addon/schemas/schemas/ListWebhookDeliveriesOutput.schema.json +1 -0
  219. package/dist/.pikku/addon/schemas/schemas/PingOutput.schema.json +1 -0
  220. package/dist/.pikku/addon/schemas/schemas/ReadAgentSourceInput.schema.json +1 -0
  221. package/dist/.pikku/addon/schemas/schemas/ReadAgentSourceOutput.schema.json +1 -0
  222. package/dist/.pikku/addon/schemas/schemas/ReadFunctionBodyInput.schema.json +1 -0
  223. package/dist/.pikku/addon/schemas/schemas/ReadFunctionBodyOutput.schema.json +1 -0
  224. package/dist/.pikku/addon/schemas/schemas/ReadFunctionSourceInput.schema.json +1 -0
  225. package/dist/.pikku/addon/schemas/schemas/ReadFunctionSourceOutput.schema.json +1 -0
  226. package/dist/.pikku/addon/schemas/schemas/RenderEmailPreviewInput.schema.json +1 -0
  227. package/dist/.pikku/addon/schemas/schemas/RenderEmailPreviewOutput.schema.json +1 -0
  228. package/dist/.pikku/addon/schemas/schemas/ScenarioRunRecord.schema.json +1 -0
  229. package/dist/.pikku/addon/schemas/schemas/SecretGetInput.schema.json +1 -0
  230. package/dist/.pikku/addon/schemas/schemas/SecretGetOutput.schema.json +1 -0
  231. package/dist/.pikku/addon/schemas/schemas/SecretHasInput.schema.json +1 -0
  232. package/dist/.pikku/addon/schemas/schemas/SecretHasOutput.schema.json +1 -0
  233. package/dist/.pikku/addon/schemas/schemas/SecretSetInput.schema.json +1 -0
  234. package/dist/.pikku/addon/schemas/schemas/SecretSetOutput.schema.json +1 -0
  235. package/dist/.pikku/addon/schemas/schemas/SecurityAuditReport.schema.json +1 -0
  236. package/dist/.pikku/addon/schemas/schemas/StateDiff.schema.json +1 -0
  237. package/dist/.pikku/addon/schemas/schemas/StreamWorkflowRunInput.schema.json +1 -0
  238. package/dist/.pikku/addon/schemas/schemas/SurfaceResult.schema.json +1 -0
  239. package/dist/.pikku/addon/schemas/schemas/UpdateAgentConfigInput.schema.json +1 -0
  240. package/dist/.pikku/addon/schemas/schemas/UpdateAgentConfigOutput.schema.json +1 -0
  241. package/dist/.pikku/addon/schemas/schemas/UpdateDependencyInput.schema.json +1 -0
  242. package/dist/.pikku/addon/schemas/schemas/UpdateEmailTemplateInput.schema.json +1 -0
  243. package/dist/.pikku/addon/schemas/schemas/UpdateEmailTemplateOutput.schema.json +1 -0
  244. package/dist/.pikku/addon/schemas/schemas/UpdateFunctionBodyInput.schema.json +1 -0
  245. package/dist/.pikku/addon/schemas/schemas/UpdateFunctionBodyOutput.schema.json +1 -0
  246. package/dist/.pikku/addon/schemas/schemas/UpdateFunctionConfigInput.schema.json +1 -0
  247. package/dist/.pikku/addon/schemas/schemas/UpdateFunctionConfigOutput.schema.json +1 -0
  248. package/dist/.pikku/addon/schemas/schemas/WebhookDeliveryWithAttempts.schema.json +1 -0
  249. package/dist/.pikku/addon/scopes/index.d.ts +8 -0
  250. package/dist/.pikku/addon/scopes/index.d.ts.map +1 -0
  251. package/dist/.pikku/addon/scopes/index.js +8 -0
  252. package/dist/.pikku/addon/scopes/index.js.map +1 -0
  253. package/dist/.pikku/addon/scopes/pikku-personas-meta.gen.json +1 -0
  254. package/dist/.pikku/addon/scopes/pikku-personas.gen.d.ts +29 -0
  255. package/dist/.pikku/addon/scopes/pikku-personas.gen.d.ts.map +1 -0
  256. package/dist/.pikku/addon/scopes/pikku-personas.gen.js +18 -0
  257. package/dist/.pikku/addon/scopes/pikku-personas.gen.js.map +1 -0
  258. package/dist/.pikku/addon/scopes/pikku-roles-meta.gen.json +1 -0
  259. package/dist/.pikku/addon/scopes/pikku-roles.gen.d.ts +31 -0
  260. package/dist/.pikku/addon/scopes/pikku-roles.gen.d.ts.map +1 -0
  261. package/dist/.pikku/addon/scopes/pikku-roles.gen.js +19 -0
  262. package/dist/.pikku/addon/scopes/pikku-roles.gen.js.map +1 -0
  263. package/dist/.pikku/addon/scopes/pikku-scope-types.gen.d.ts +6 -0
  264. package/dist/.pikku/addon/scopes/pikku-scope-types.gen.d.ts.map +1 -0
  265. package/dist/.pikku/addon/scopes/pikku-scope-types.gen.js +6 -0
  266. package/dist/.pikku/addon/scopes/pikku-scope-types.gen.js.map +1 -0
  267. package/dist/.pikku/addon/scopes/pikku-scopes-meta.gen.json +144 -0
  268. package/dist/.pikku/addon/scopes/pikku-scopes.gen.d.ts +36 -0
  269. package/dist/.pikku/addon/scopes/pikku-scopes.gen.d.ts.map +1 -0
  270. package/dist/.pikku/addon/scopes/pikku-scopes.gen.js +30 -0
  271. package/dist/.pikku/addon/scopes/pikku-scopes.gen.js.map +1 -0
  272. package/dist/.pikku/addon/secrets/index.d.ts +9 -0
  273. package/dist/.pikku/addon/secrets/index.d.ts.map +1 -0
  274. package/dist/.pikku/addon/secrets/index.js +9 -0
  275. package/dist/.pikku/addon/secrets/index.js.map +1 -0
  276. package/dist/.pikku/addon/secrets/pikku-secret-types.gen.d.ts +5 -0
  277. package/dist/.pikku/addon/secrets/pikku-secret-types.gen.d.ts.map +1 -0
  278. package/dist/.pikku/addon/secrets/pikku-secret-types.gen.js +5 -0
  279. package/dist/.pikku/addon/secrets/pikku-secret-types.gen.js.map +1 -0
  280. package/dist/.pikku/addon/secrets/pikku-secrets-meta.gen.json +1 -0
  281. package/dist/.pikku/addon/secrets/pikku-secrets.gen.d.ts +18 -0
  282. package/dist/.pikku/addon/secrets/pikku-secrets.gen.d.ts.map +1 -0
  283. package/dist/.pikku/addon/secrets/pikku-secrets.gen.js +19 -0
  284. package/dist/.pikku/addon/secrets/pikku-secrets.gen.js.map +1 -0
  285. package/dist/.pikku/addon/services/pikku-meta-service.gen.d.ts +8 -0
  286. package/dist/.pikku/addon/services/pikku-meta-service.gen.d.ts.map +1 -0
  287. package/dist/.pikku/addon/services/pikku-meta-service.gen.js +10 -0
  288. package/dist/.pikku/addon/services/pikku-meta-service.gen.js.map +1 -0
  289. package/dist/.pikku/addon/setup/index.d.ts +9 -0
  290. package/dist/.pikku/addon/setup/index.d.ts.map +1 -0
  291. package/dist/.pikku/addon/setup/index.js +9 -0
  292. package/dist/.pikku/addon/setup/index.js.map +1 -0
  293. package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.d.ts +66 -0
  294. package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.d.ts.map +1 -0
  295. package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.js +78 -0
  296. package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.js.map +1 -0
  297. package/dist/.pikku/addon/setup/pikku-setup-types.gen.d.ts +67 -0
  298. package/dist/.pikku/addon/setup/pikku-setup-types.gen.d.ts.map +1 -0
  299. package/dist/.pikku/addon/setup/pikku-setup-types.gen.js +88 -0
  300. package/dist/.pikku/addon/setup/pikku-setup-types.gen.js.map +1 -0
  301. package/dist/.pikku/addon/trigger/index.d.ts +8 -0
  302. package/dist/.pikku/addon/trigger/index.d.ts.map +1 -0
  303. package/dist/.pikku/addon/trigger/index.js +8 -0
  304. package/dist/.pikku/addon/trigger/index.js.map +1 -0
  305. package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.d.ts +83 -0
  306. package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.d.ts.map +1 -0
  307. package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.js +13 -0
  308. package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.js.map +1 -0
  309. package/dist/.pikku/addon/variables/index.d.ts +9 -0
  310. package/dist/.pikku/addon/variables/index.d.ts.map +1 -0
  311. package/dist/.pikku/addon/variables/index.js +9 -0
  312. package/dist/.pikku/addon/variables/index.js.map +1 -0
  313. package/dist/.pikku/addon/variables/pikku-variable-types.gen.d.ts +5 -0
  314. package/dist/.pikku/addon/variables/pikku-variable-types.gen.d.ts.map +1 -0
  315. package/dist/.pikku/addon/variables/pikku-variable-types.gen.js +5 -0
  316. package/dist/.pikku/addon/variables/pikku-variable-types.gen.js.map +1 -0
  317. package/dist/.pikku/addon/variables/pikku-variables-meta.gen.json +1 -0
  318. package/dist/.pikku/addon/variables/pikku-variables.gen.d.ts +19 -0
  319. package/dist/.pikku/addon/variables/pikku-variables.gen.d.ts.map +1 -0
  320. package/dist/.pikku/addon/variables/pikku-variables.gen.js +19 -0
  321. package/dist/.pikku/addon/variables/pikku-variables.gen.js.map +1 -0
  322. package/dist/.pikku/addon/workflow/index.d.ts +8 -0
  323. package/dist/.pikku/addon/workflow/index.d.ts.map +1 -0
  324. package/dist/.pikku/addon/workflow/index.js +8 -0
  325. package/dist/.pikku/addon/workflow/index.js.map +1 -0
  326. package/dist/.pikku/addon/workflow/pikku-scenario-step-map.gen.d.ts +18 -0
  327. package/dist/.pikku/addon/workflow/pikku-workflow-map.gen.d.ts +38 -0
  328. package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.d.ts +106 -0
  329. package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.d.ts.map +1 -0
  330. package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.js +16 -0
  331. package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.js.map +1 -0
  332. package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.d.ts +2 -0
  333. package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.d.ts.map +1 -0
  334. package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.js +7 -0
  335. package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.js.map +1 -0
  336. package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.d.ts +5 -0
  337. package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.d.ts.map +1 -0
  338. package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.js +5 -0
  339. package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.js.map +1 -0
  340. package/dist/.pikku/agent/index.d.ts +8 -0
  341. package/dist/.pikku/agent/index.d.ts.map +1 -0
  342. package/dist/.pikku/agent/index.js +8 -0
  343. package/dist/.pikku/agent/index.js.map +1 -0
  344. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +8 -7
  345. package/dist/.pikku/agent/pikku-agent-types.gen.d.ts.map +1 -1
  346. package/dist/.pikku/agent/pikku-agent-types.gen.js +2 -3
  347. package/dist/.pikku/agent/pikku-agent-types.gen.js.map +1 -1
  348. package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
  349. package/dist/.pikku/agent/pikku-model-aliases.gen.js.map +1 -1
  350. package/dist/.pikku/auth/index.d.ts +9 -0
  351. package/dist/.pikku/auth/index.d.ts.map +1 -0
  352. package/dist/.pikku/auth/index.js +9 -0
  353. package/dist/.pikku/auth/index.js.map +1 -0
  354. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +119 -0
  355. package/dist/.pikku/auth/pikku-auth-types.gen.d.ts.map +1 -0
  356. package/dist/.pikku/auth/pikku-auth-types.gen.js +93 -0
  357. package/dist/.pikku/auth/pikku-auth-types.gen.js.map +1 -0
  358. package/dist/.pikku/channel/index.d.ts +8 -0
  359. package/dist/.pikku/channel/index.d.ts.map +1 -0
  360. package/dist/.pikku/channel/index.js +8 -0
  361. package/dist/.pikku/channel/index.js.map +1 -0
  362. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +4 -25
  363. package/dist/.pikku/channel/pikku-channel-types.gen.d.ts.map +1 -1
  364. package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -19
  365. package/dist/.pikku/channel/pikku-channel-types.gen.js.map +1 -1
  366. package/dist/.pikku/credentials/index.d.ts +8 -0
  367. package/dist/.pikku/credentials/index.d.ts.map +1 -0
  368. package/dist/.pikku/credentials/index.js +8 -0
  369. package/dist/.pikku/credentials/index.js.map +1 -0
  370. package/dist/.pikku/credentials/pikku-credential-types.gen.d.ts +5 -0
  371. package/dist/.pikku/credentials/pikku-credential-types.gen.d.ts.map +1 -0
  372. package/dist/.pikku/credentials/pikku-credential-types.gen.js +5 -0
  373. package/dist/.pikku/credentials/pikku-credential-types.gen.js.map +1 -0
  374. package/dist/.pikku/error/index.d.ts +8 -0
  375. package/dist/.pikku/error/index.d.ts.map +1 -0
  376. package/dist/.pikku/error/index.js +8 -0
  377. package/dist/.pikku/error/index.js.map +1 -0
  378. package/dist/.pikku/error/pikku-error-types.gen.d.ts +8 -0
  379. package/dist/.pikku/error/pikku-error-types.gen.d.ts.map +1 -0
  380. package/dist/.pikku/error/pikku-error-types.gen.js +8 -0
  381. package/dist/.pikku/error/pikku-error-types.gen.js.map +1 -0
  382. package/dist/.pikku/function/index.d.ts +8 -0
  383. package/dist/.pikku/function/index.d.ts.map +1 -0
  384. package/dist/.pikku/function/index.js +8 -0
  385. package/dist/.pikku/function/index.js.map +1 -0
  386. package/dist/.pikku/function/pikku-function-types.gen.d.ts +28 -262
  387. package/dist/.pikku/function/pikku-function-types.gen.d.ts.map +1 -1
  388. package/dist/.pikku/function/pikku-function-types.gen.js +1 -236
  389. package/dist/.pikku/function/pikku-function-types.gen.js.map +1 -1
  390. package/dist/.pikku/function/pikku-functions-meta-verbose.gen.json +201 -680
  391. package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
  392. package/dist/.pikku/function/pikku-functions-meta.gen.js.map +1 -1
  393. package/dist/.pikku/function/pikku-functions-meta.gen.json +159 -535
  394. package/dist/.pikku/function/pikku-functions.gen.js +10 -36
  395. package/dist/.pikku/function/pikku-functions.gen.js.map +1 -1
  396. package/dist/.pikku/gateway/index.d.ts +8 -0
  397. package/dist/.pikku/gateway/index.d.ts.map +1 -0
  398. package/dist/.pikku/gateway/index.js +8 -0
  399. package/dist/.pikku/gateway/index.js.map +1 -0
  400. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +38 -0
  401. package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts.map +1 -0
  402. package/dist/.pikku/gateway/pikku-gateway-types.gen.js +26 -0
  403. package/dist/.pikku/gateway/pikku-gateway-types.gen.js.map +1 -0
  404. package/dist/.pikku/http/index.d.ts +8 -0
  405. package/dist/.pikku/http/index.d.ts.map +1 -0
  406. package/dist/.pikku/http/index.js +8 -0
  407. package/dist/.pikku/http/index.js.map +1 -0
  408. package/dist/.pikku/http/pikku-http-types.gen.d.ts +3 -51
  409. package/dist/.pikku/http/pikku-http-types.gen.d.ts.map +1 -1
  410. package/dist/.pikku/http/pikku-http-types.gen.js +1 -40
  411. package/dist/.pikku/http/pikku-http-types.gen.js.map +1 -1
  412. package/dist/.pikku/mcp/index.d.ts +8 -0
  413. package/dist/.pikku/mcp/index.d.ts.map +1 -0
  414. package/dist/.pikku/mcp/index.js +8 -0
  415. package/dist/.pikku/mcp/index.js.map +1 -0
  416. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +5 -35
  417. package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts.map +1 -1
  418. package/dist/.pikku/mcp/pikku-mcp-types.gen.js +0 -22
  419. package/dist/.pikku/mcp/pikku-mcp-types.gen.js.map +1 -1
  420. package/dist/.pikku/middleware/index.d.ts +8 -0
  421. package/dist/.pikku/middleware/index.d.ts.map +1 -0
  422. package/dist/.pikku/middleware/index.js +8 -0
  423. package/dist/.pikku/middleware/index.js.map +1 -0
  424. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +118 -0
  425. package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts.map +1 -0
  426. package/dist/.pikku/middleware/pikku-middleware-types.gen.js +109 -0
  427. package/dist/.pikku/middleware/pikku-middleware-types.gen.js.map +1 -0
  428. package/dist/.pikku/pikku-services.gen.d.ts +6 -5
  429. package/dist/.pikku/pikku-services.gen.d.ts.map +1 -1
  430. package/dist/.pikku/pikku-services.gen.js +5 -4
  431. package/dist/.pikku/pikku-services.gen.js.map +1 -1
  432. package/dist/.pikku/pikku-types.gen.d.ts +0 -1
  433. package/dist/.pikku/pikku-types.gen.d.ts.map +1 -1
  434. package/dist/.pikku/pikku-types.gen.js +0 -2
  435. package/dist/.pikku/pikku-types.gen.js.map +1 -1
  436. package/dist/.pikku/queue/index.d.ts +8 -0
  437. package/dist/.pikku/queue/index.d.ts.map +1 -0
  438. package/dist/.pikku/queue/index.js +8 -0
  439. package/dist/.pikku/queue/index.js.map +1 -0
  440. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
  441. package/dist/.pikku/queue/pikku-queue-types.gen.d.ts.map +1 -1
  442. package/dist/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +16 -55
  443. package/dist/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +17 -55
  444. package/dist/.pikku/rpc/pikku-rpc-wirings-map.remote.gen.d.ts +11 -35
  445. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
  446. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js.map +1 -1
  447. package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +5 -18
  448. package/dist/.pikku/scenarios/index.d.ts +8 -0
  449. package/dist/.pikku/scenarios/index.d.ts.map +1 -0
  450. package/dist/.pikku/scenarios/index.js +8 -0
  451. package/dist/.pikku/scenarios/index.js.map +1 -0
  452. package/dist/.pikku/scenarios/pikku-personas.gen.d.ts +18 -0
  453. package/dist/.pikku/scenarios/pikku-personas.gen.d.ts.map +1 -0
  454. package/dist/.pikku/scenarios/pikku-personas.gen.js +18 -0
  455. package/dist/.pikku/scenarios/pikku-personas.gen.js.map +1 -0
  456. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
  457. package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js.map +1 -1
  458. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +311 -0
  459. package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts.map +1 -0
  460. package/dist/.pikku/scenarios/pikku-scenario-types.gen.js +72 -0
  461. package/dist/.pikku/scenarios/pikku-scenario-types.gen.js.map +1 -0
  462. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
  463. package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js.map +1 -1
  464. package/dist/.pikku/scheduler/index.d.ts +8 -0
  465. package/dist/.pikku/scheduler/index.d.ts.map +1 -0
  466. package/dist/.pikku/scheduler/index.js +8 -0
  467. package/dist/.pikku/scheduler/index.js.map +1 -0
  468. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
  469. package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts.map +1 -1
  470. package/dist/.pikku/schemas/register.gen.js +15 -65
  471. package/dist/.pikku/schemas/register.gen.js.map +1 -1
  472. package/dist/.pikku/schemas/schemas/AddonMetaPage.schema.json +1 -1
  473. package/dist/.pikku/schemas/schemas/AddonPackageInfo.schema.json +1 -1
  474. package/dist/.pikku/schemas/schemas/AllMeta.schema.json +1 -1
  475. package/dist/.pikku/schemas/schemas/DeleteScenarioRunInput.schema.json +1 -0
  476. package/dist/.pikku/schemas/schemas/GetFunctionsMetaOutput.schema.json +1 -1
  477. package/dist/.pikku/schemas/schemas/GetScenarioArtifactInput.schema.json +1 -0
  478. package/dist/.pikku/schemas/schemas/GetScenarioRunInput.schema.json +1 -0
  479. package/dist/.pikku/schemas/schemas/ListScenarioRunsInput.schema.json +1 -0
  480. package/dist/.pikku/schemas/schemas/ListScenarioRunsOutput.schema.json +1 -0
  481. package/dist/.pikku/schemas/schemas/ScenarioRunRecord.schema.json +1 -0
  482. package/dist/.pikku/schemas/schemas/SurfaceResult.schema.json +1 -0
  483. package/dist/.pikku/scopes/index.d.ts +8 -0
  484. package/dist/.pikku/scopes/index.d.ts.map +1 -0
  485. package/dist/.pikku/scopes/index.js +8 -0
  486. package/dist/.pikku/scopes/index.js.map +1 -0
  487. package/dist/.pikku/scopes/pikku-personas.gen.d.ts +4 -13
  488. package/dist/.pikku/scopes/pikku-personas.gen.d.ts.map +1 -1
  489. package/dist/.pikku/scopes/pikku-personas.gen.js.map +1 -1
  490. package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
  491. package/dist/.pikku/scopes/pikku-roles.gen.d.ts.map +1 -1
  492. package/dist/.pikku/scopes/pikku-roles.gen.js +1 -1
  493. package/dist/.pikku/scopes/pikku-roles.gen.js.map +1 -1
  494. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +2 -4
  495. package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts.map +1 -1
  496. package/dist/.pikku/scopes/pikku-scope-types.gen.js +2 -2
  497. package/dist/.pikku/scopes/pikku-scope-types.gen.js.map +1 -1
  498. package/dist/.pikku/scopes/pikku-scopes-meta.gen.json +13 -66
  499. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +2 -2
  500. package/dist/.pikku/scopes/pikku-scopes.gen.d.ts.map +1 -1
  501. package/dist/.pikku/scopes/pikku-scopes.gen.js +1 -2
  502. package/dist/.pikku/scopes/pikku-scopes.gen.js.map +1 -1
  503. package/dist/.pikku/secrets/index.d.ts +9 -0
  504. package/dist/.pikku/secrets/index.d.ts.map +1 -0
  505. package/dist/.pikku/secrets/index.js +9 -0
  506. package/dist/.pikku/secrets/index.js.map +1 -0
  507. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +0 -2
  508. package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts.map +1 -1
  509. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +7 -11
  510. package/dist/.pikku/secrets/pikku-secrets.gen.d.ts.map +1 -1
  511. package/dist/.pikku/secrets/pikku-secrets.gen.js +6 -8
  512. package/dist/.pikku/secrets/pikku-secrets.gen.js.map +1 -1
  513. package/dist/.pikku/services/pikku-meta-service.gen.d.ts +8 -0
  514. package/dist/.pikku/services/pikku-meta-service.gen.d.ts.map +1 -0
  515. package/dist/.pikku/services/pikku-meta-service.gen.js +10 -0
  516. package/dist/.pikku/services/pikku-meta-service.gen.js.map +1 -0
  517. package/dist/.pikku/setup/index.d.ts +8 -0
  518. package/dist/.pikku/setup/index.d.ts.map +1 -0
  519. package/dist/.pikku/setup/index.js +8 -0
  520. package/dist/.pikku/setup/index.js.map +1 -0
  521. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +67 -0
  522. package/dist/.pikku/setup/pikku-setup-types.gen.d.ts.map +1 -0
  523. package/dist/.pikku/setup/pikku-setup-types.gen.js +88 -0
  524. package/dist/.pikku/setup/pikku-setup-types.gen.js.map +1 -0
  525. package/dist/.pikku/trigger/index.d.ts +8 -0
  526. package/dist/.pikku/trigger/index.d.ts.map +1 -0
  527. package/dist/.pikku/trigger/index.js +8 -0
  528. package/dist/.pikku/trigger/index.js.map +1 -0
  529. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +5 -36
  530. package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts.map +1 -1
  531. package/dist/.pikku/trigger/pikku-trigger-types.gen.js +0 -21
  532. package/dist/.pikku/trigger/pikku-trigger-types.gen.js.map +1 -1
  533. package/dist/.pikku/variables/index.d.ts +9 -0
  534. package/dist/.pikku/variables/index.d.ts.map +1 -0
  535. package/dist/.pikku/variables/index.js +9 -0
  536. package/dist/.pikku/variables/index.js.map +1 -0
  537. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +0 -1
  538. package/dist/.pikku/variables/pikku-variable-types.gen.d.ts.map +1 -1
  539. package/dist/.pikku/variables/pikku-variables.gen.d.ts +7 -10
  540. package/dist/.pikku/variables/pikku-variables.gen.d.ts.map +1 -1
  541. package/dist/.pikku/variables/pikku-variables.gen.js +7 -9
  542. package/dist/.pikku/variables/pikku-variables.gen.js.map +1 -1
  543. package/dist/.pikku/workflow/index.d.ts +8 -0
  544. package/dist/.pikku/workflow/index.d.ts.map +1 -0
  545. package/dist/.pikku/workflow/index.js +8 -0
  546. package/dist/.pikku/workflow/index.js.map +1 -0
  547. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +14 -262
  548. package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts.map +1 -1
  549. package/dist/.pikku/workflow/pikku-workflow-types.gen.js +0 -63
  550. package/dist/.pikku/workflow/pikku-workflow-types.gen.js.map +1 -1
  551. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
  552. package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js.map +1 -1
  553. package/dist/src/functions/addon-readiness.function.d.ts +4 -4
  554. package/dist/src/functions/addon-readiness.function.d.ts.map +1 -1
  555. package/dist/src/functions/addon-readiness.function.js +2 -2
  556. package/dist/src/functions/addon-readiness.function.js.map +1 -1
  557. package/dist/src/functions/agent-credential-check.function.d.ts +4 -4
  558. package/dist/src/functions/agent-credential-check.function.d.ts.map +1 -1
  559. package/dist/src/functions/agent-credential-check.function.js +2 -2
  560. package/dist/src/functions/agent-credential-check.function.js.map +1 -1
  561. package/dist/src/functions/credential-delete.function.d.ts +4 -4
  562. package/dist/src/functions/credential-delete.function.d.ts.map +1 -1
  563. package/dist/src/functions/credential-delete.function.js +1 -1
  564. package/dist/src/functions/credential-delete.function.js.map +1 -1
  565. package/dist/src/functions/credential-get.function.d.ts +4 -4
  566. package/dist/src/functions/credential-get.function.d.ts.map +1 -1
  567. package/dist/src/functions/credential-get.function.js +1 -1
  568. package/dist/src/functions/credential-get.function.js.map +1 -1
  569. package/dist/src/functions/credential-list-users.function.d.ts +4 -4
  570. package/dist/src/functions/credential-list-users.function.d.ts.map +1 -1
  571. package/dist/src/functions/credential-list-users.function.js +1 -1
  572. package/dist/src/functions/credential-list-users.function.js.map +1 -1
  573. package/dist/src/functions/credential-set.function.d.ts +4 -4
  574. package/dist/src/functions/credential-set.function.d.ts.map +1 -1
  575. package/dist/src/functions/credential-set.function.js +1 -1
  576. package/dist/src/functions/credential-set.function.js.map +1 -1
  577. package/dist/src/functions/credential-status.function.d.ts +4 -4
  578. package/dist/src/functions/credential-status.function.d.ts.map +1 -1
  579. package/dist/src/functions/credential-status.function.js +1 -1
  580. package/dist/src/functions/credential-status.function.js.map +1 -1
  581. package/dist/src/functions/credential-users.function.d.ts +4 -4
  582. package/dist/src/functions/credential-users.function.d.ts.map +1 -1
  583. package/dist/src/functions/credential-users.function.js +1 -1
  584. package/dist/src/functions/credential-users.function.js.map +1 -1
  585. package/dist/src/functions/delete-agent-thread.function.d.ts +4 -4
  586. package/dist/src/functions/delete-agent-thread.function.d.ts.map +1 -1
  587. package/dist/src/functions/delete-agent-thread.function.js +1 -1
  588. package/dist/src/functions/delete-agent-thread.function.js.map +1 -1
  589. package/dist/src/functions/delete-scenario-run.function.d.ts +8 -0
  590. package/dist/src/functions/delete-scenario-run.function.d.ts.map +1 -0
  591. package/dist/src/functions/delete-scenario-run.function.js +11 -0
  592. package/dist/src/functions/delete-scenario-run.function.js.map +1 -0
  593. package/dist/src/functions/delete-workflow-run.function.d.ts +4 -4
  594. package/dist/src/functions/delete-workflow-run.function.d.ts.map +1 -1
  595. package/dist/src/functions/delete-workflow-run.function.js +1 -1
  596. package/dist/src/functions/delete-workflow-run.function.js.map +1 -1
  597. package/dist/src/functions/get-addon-categories.function.d.ts +1 -1
  598. package/dist/src/functions/get-addon-categories.function.d.ts.map +1 -1
  599. package/dist/src/functions/get-addon-categories.function.js +1 -1
  600. package/dist/src/functions/get-addon-categories.function.js.map +1 -1
  601. package/dist/src/functions/get-addon-icon.function.d.ts +4 -4
  602. package/dist/src/functions/get-addon-icon.function.d.ts.map +1 -1
  603. package/dist/src/functions/get-addon-icon.function.js +1 -1
  604. package/dist/src/functions/get-addon-icon.function.js.map +1 -1
  605. package/dist/src/functions/get-addon-instances.function.d.ts +4 -4
  606. package/dist/src/functions/get-addon-instances.function.d.ts.map +1 -1
  607. package/dist/src/functions/get-addon-instances.function.js +2 -2
  608. package/dist/src/functions/get-addon-instances.function.js.map +1 -1
  609. package/dist/src/functions/get-addon-meta.function.d.ts +1 -1
  610. package/dist/src/functions/get-addon-meta.function.d.ts.map +1 -1
  611. package/dist/src/functions/get-addon-meta.function.js +1 -1
  612. package/dist/src/functions/get-addon-meta.function.js.map +1 -1
  613. package/dist/src/functions/get-addon-package.function.d.ts +4 -4
  614. package/dist/src/functions/get-addon-package.function.d.ts.map +1 -1
  615. package/dist/src/functions/get-addon-package.function.js +1 -1
  616. package/dist/src/functions/get-addon-package.function.js.map +1 -1
  617. package/dist/src/functions/get-agent-run-scores.function.d.ts +4 -4
  618. package/dist/src/functions/get-agent-run-scores.function.d.ts.map +1 -1
  619. package/dist/src/functions/get-agent-run-scores.function.js +4 -3
  620. package/dist/src/functions/get-agent-run-scores.function.js.map +1 -1
  621. package/dist/src/functions/get-agent-thread-messages.function.d.ts +4 -4
  622. package/dist/src/functions/get-agent-thread-messages.function.d.ts.map +1 -1
  623. package/dist/src/functions/get-agent-thread-messages.function.js +1 -1
  624. package/dist/src/functions/get-agent-thread-messages.function.js.map +1 -1
  625. package/dist/src/functions/get-agent-thread-runs.function.d.ts +4 -4
  626. package/dist/src/functions/get-agent-thread-runs.function.d.ts.map +1 -1
  627. package/dist/src/functions/get-agent-thread-runs.function.js +3 -3
  628. package/dist/src/functions/get-agent-thread-runs.function.js.map +1 -1
  629. package/dist/src/functions/get-agent-threads.function.d.ts +4 -4
  630. package/dist/src/functions/get-agent-threads.function.d.ts.map +1 -1
  631. package/dist/src/functions/get-agent-threads.function.js +3 -3
  632. package/dist/src/functions/get-agent-threads.function.js.map +1 -1
  633. package/dist/src/functions/get-agent-threads.function.test.js +1 -1
  634. package/dist/src/functions/get-agent-threads.function.test.js.map +1 -1
  635. package/dist/src/functions/get-all-meta.function.d.ts +1 -1
  636. package/dist/src/functions/get-all-meta.function.d.ts.map +1 -1
  637. package/dist/src/functions/get-all-meta.function.js +1 -1
  638. package/dist/src/functions/get-all-meta.function.js.map +1 -1
  639. package/dist/src/functions/get-audit-filters.function.d.ts +1 -1
  640. package/dist/src/functions/get-audit-filters.function.d.ts.map +1 -1
  641. package/dist/src/functions/get-audit-filters.function.js +1 -1
  642. package/dist/src/functions/get-audit-filters.function.js.map +1 -1
  643. package/dist/src/functions/get-audits.function.d.ts +2 -2
  644. package/dist/src/functions/get-audits.function.d.ts.map +1 -1
  645. package/dist/src/functions/get-audits.function.js +1 -1
  646. package/dist/src/functions/get-audits.function.js.map +1 -1
  647. package/dist/src/functions/get-auth-providers.function.d.ts +1 -1
  648. package/dist/src/functions/get-auth-providers.function.d.ts.map +1 -1
  649. package/dist/src/functions/get-auth-providers.function.js +1 -1
  650. package/dist/src/functions/get-auth-providers.function.js.map +1 -1
  651. package/dist/src/functions/get-channel-snippets.function.d.ts +4 -4
  652. package/dist/src/functions/get-channel-snippets.function.d.ts.map +1 -1
  653. package/dist/src/functions/get-channel-snippets.function.js +1 -1
  654. package/dist/src/functions/get-channel-snippets.function.js.map +1 -1
  655. package/dist/src/functions/get-db-schema.function.d.ts +1 -1
  656. package/dist/src/functions/get-db-schema.function.d.ts.map +1 -1
  657. package/dist/src/functions/get-db-schema.function.js +2 -2
  658. package/dist/src/functions/get-db-schema.function.js.map +1 -1
  659. package/dist/src/functions/get-functions-meta.function.d.ts +1 -1
  660. package/dist/src/functions/get-functions-meta.function.d.ts.map +1 -1
  661. package/dist/src/functions/get-functions-meta.function.js +1 -1
  662. package/dist/src/functions/get-functions-meta.function.js.map +1 -1
  663. package/dist/src/functions/get-installed-addons.function.d.ts +1 -1
  664. package/dist/src/functions/get-installed-addons.function.d.ts.map +1 -1
  665. package/dist/src/functions/get-installed-addons.function.js +2 -2
  666. package/dist/src/functions/get-installed-addons.function.js.map +1 -1
  667. package/dist/src/functions/get-installed-package.function.d.ts +4 -4
  668. package/dist/src/functions/get-installed-package.function.d.ts.map +1 -1
  669. package/dist/src/functions/get-installed-package.function.js +11 -4
  670. package/dist/src/functions/get-installed-package.function.js.map +1 -1
  671. package/dist/src/functions/get-installed-package.function.test.d.ts +2 -0
  672. package/dist/src/functions/get-installed-package.function.test.d.ts.map +1 -0
  673. package/dist/src/functions/get-installed-package.function.test.js +35 -0
  674. package/dist/src/functions/get-installed-package.function.test.js.map +1 -0
  675. package/dist/src/functions/get-knowledge.function.d.ts +1 -1
  676. package/dist/src/functions/get-knowledge.function.d.ts.map +1 -1
  677. package/dist/src/functions/get-knowledge.function.js +2 -2
  678. package/dist/src/functions/get-knowledge.function.js.map +1 -1
  679. package/dist/src/functions/get-knowledge.function.test.js +1 -1
  680. package/dist/src/functions/get-my-access.function.d.ts +4 -4
  681. package/dist/src/functions/get-my-access.function.d.ts.map +1 -1
  682. package/dist/src/functions/get-my-access.function.js +1 -1
  683. package/dist/src/functions/get-my-access.function.js.map +1 -1
  684. package/dist/src/functions/get-openapi-categories.function.d.ts +1 -1
  685. package/dist/src/functions/get-openapi-categories.function.d.ts.map +1 -1
  686. package/dist/src/functions/get-openapi-categories.function.js +1 -1
  687. package/dist/src/functions/get-openapi-categories.function.js.map +1 -1
  688. package/dist/src/functions/get-openapi-detail.function.d.ts +4 -4
  689. package/dist/src/functions/get-openapi-detail.function.d.ts.map +1 -1
  690. package/dist/src/functions/get-openapi-detail.function.js +1 -1
  691. package/dist/src/functions/get-openapi-detail.function.js.map +1 -1
  692. package/dist/src/functions/get-openapis.function.d.ts +4 -4
  693. package/dist/src/functions/get-openapis.function.d.ts.map +1 -1
  694. package/dist/src/functions/get-openapis.function.js +1 -1
  695. package/dist/src/functions/get-openapis.function.js.map +1 -1
  696. package/dist/src/functions/get-scenario-artifact.function.d.ts +19 -0
  697. package/dist/src/functions/get-scenario-artifact.function.d.ts.map +1 -0
  698. package/dist/src/functions/get-scenario-artifact.function.js +30 -0
  699. package/dist/src/functions/get-scenario-artifact.function.js.map +1 -0
  700. package/dist/src/functions/get-scenario-run.function.d.ts +9 -0
  701. package/dist/src/functions/get-scenario-run.function.d.ts.map +1 -0
  702. package/dist/src/functions/get-scenario-run.function.js +14 -0
  703. package/dist/src/functions/get-scenario-run.function.js.map +1 -0
  704. package/dist/src/functions/get-schema.function.d.ts +4 -4
  705. package/dist/src/functions/get-schema.function.d.ts.map +1 -1
  706. package/dist/src/functions/get-schema.function.js +1 -1
  707. package/dist/src/functions/get-schema.function.js.map +1 -1
  708. package/dist/src/functions/get-scorers.function.d.ts +1 -1
  709. package/dist/src/functions/get-scorers.function.d.ts.map +1 -1
  710. package/dist/src/functions/get-scorers.function.js +2 -2
  711. package/dist/src/functions/get-scorers.function.js.map +1 -1
  712. package/dist/src/functions/get-security-audit.function.d.ts +2 -2
  713. package/dist/src/functions/get-security-audit.function.d.ts.map +1 -1
  714. package/dist/src/functions/get-security-audit.function.js +1 -1
  715. package/dist/src/functions/get-security-audit.function.js.map +1 -1
  716. package/dist/src/functions/get-state-diff.function.d.ts +4 -4
  717. package/dist/src/functions/get-state-diff.function.d.ts.map +1 -1
  718. package/dist/src/functions/get-state-diff.function.js +1 -1
  719. package/dist/src/functions/get-state-diff.function.js.map +1 -1
  720. package/dist/src/functions/get-surface.function.d.ts +3 -0
  721. package/dist/src/functions/get-surface.function.d.ts.map +1 -0
  722. package/dist/src/functions/get-surface.function.js +10 -0
  723. package/dist/src/functions/get-surface.function.js.map +1 -0
  724. package/dist/src/functions/get-webhook-delivery.function.d.ts +5 -5
  725. package/dist/src/functions/get-webhook-delivery.function.d.ts.map +1 -1
  726. package/dist/src/functions/get-webhook-delivery.function.js +1 -1
  727. package/dist/src/functions/get-webhook-delivery.function.js.map +1 -1
  728. package/dist/src/functions/get-workflow-meta-by-id.function.d.ts +13 -13
  729. package/dist/src/functions/get-workflow-meta-by-id.function.d.ts.map +1 -1
  730. package/dist/src/functions/get-workflow-meta-by-id.function.js +1 -1
  731. package/dist/src/functions/get-workflow-meta-by-id.function.js.map +1 -1
  732. package/dist/src/functions/get-workflow-run-history.function.d.ts +4 -4
  733. package/dist/src/functions/get-workflow-run-history.function.d.ts.map +1 -1
  734. package/dist/src/functions/get-workflow-run-history.function.js +1 -1
  735. package/dist/src/functions/get-workflow-run-history.function.js.map +1 -1
  736. package/dist/src/functions/get-workflow-run-names.function.d.ts +1 -1
  737. package/dist/src/functions/get-workflow-run-names.function.d.ts.map +1 -1
  738. package/dist/src/functions/get-workflow-run-names.function.js +1 -1
  739. package/dist/src/functions/get-workflow-run-names.function.js.map +1 -1
  740. package/dist/src/functions/get-workflow-run-steps.function.d.ts +4 -4
  741. package/dist/src/functions/get-workflow-run-steps.function.d.ts.map +1 -1
  742. package/dist/src/functions/get-workflow-run-steps.function.js +1 -1
  743. package/dist/src/functions/get-workflow-run-steps.function.js.map +1 -1
  744. package/dist/src/functions/get-workflow-run.function.d.ts +4 -4
  745. package/dist/src/functions/get-workflow-run.function.d.ts.map +1 -1
  746. package/dist/src/functions/get-workflow-run.function.js +1 -1
  747. package/dist/src/functions/get-workflow-run.function.js.map +1 -1
  748. package/dist/src/functions/get-workflow-runs.function.d.ts +4 -4
  749. package/dist/src/functions/get-workflow-runs.function.d.ts.map +1 -1
  750. package/dist/src/functions/get-workflow-runs.function.js +1 -1
  751. package/dist/src/functions/get-workflow-runs.function.js.map +1 -1
  752. package/dist/src/functions/get-workflow-version.function.d.ts +4 -4
  753. package/dist/src/functions/get-workflow-version.function.d.ts.map +1 -1
  754. package/dist/src/functions/get-workflow-version.function.js +1 -1
  755. package/dist/src/functions/get-workflow-version.function.js.map +1 -1
  756. package/dist/src/functions/install-addon.function.d.ts +4 -4
  757. package/dist/src/functions/install-addon.function.d.ts.map +1 -1
  758. package/dist/src/functions/install-addon.function.js +4 -4
  759. package/dist/src/functions/install-addon.function.js.map +1 -1
  760. package/dist/src/functions/install-addon.function.test.js +4 -4
  761. package/dist/src/functions/install-addon.function.test.js.map +1 -1
  762. package/dist/src/functions/install-openapi-addon.function.d.ts +4 -4
  763. package/dist/src/functions/install-openapi-addon.function.d.ts.map +1 -1
  764. package/dist/src/functions/install-openapi-addon.function.js +3 -3
  765. package/dist/src/functions/install-openapi-addon.function.js.map +1 -1
  766. package/dist/src/functions/list-scenario-runs.function.d.ts +9 -0
  767. package/dist/src/functions/list-scenario-runs.function.d.ts.map +1 -0
  768. package/dist/src/functions/list-scenario-runs.function.js +14 -0
  769. package/dist/src/functions/list-scenario-runs.function.js.map +1 -0
  770. package/dist/src/functions/list-webhook-deliveries.function.d.ts +5 -5
  771. package/dist/src/functions/list-webhook-deliveries.function.d.ts.map +1 -1
  772. package/dist/src/functions/list-webhook-deliveries.function.js +1 -1
  773. package/dist/src/functions/list-webhook-deliveries.function.js.map +1 -1
  774. package/dist/src/functions/ping.function.d.ts +4 -4
  775. package/dist/src/functions/ping.function.d.ts.map +1 -1
  776. package/dist/src/functions/ping.function.js +1 -1
  777. package/dist/src/functions/ping.function.js.map +1 -1
  778. package/dist/src/functions/read-agent-source.function.d.ts +4 -4
  779. package/dist/src/functions/read-agent-source.function.d.ts.map +1 -1
  780. package/dist/src/functions/read-agent-source.function.js +2 -2
  781. package/dist/src/functions/read-agent-source.function.js.map +1 -1
  782. package/dist/src/functions/read-function-body.function.d.ts +4 -4
  783. package/dist/src/functions/read-function-body.function.d.ts.map +1 -1
  784. package/dist/src/functions/read-function-body.function.js +2 -2
  785. package/dist/src/functions/read-function-body.function.js.map +1 -1
  786. package/dist/src/functions/read-function-source.function.d.ts +4 -4
  787. package/dist/src/functions/read-function-source.function.d.ts.map +1 -1
  788. package/dist/src/functions/read-function-source.function.js +2 -2
  789. package/dist/src/functions/read-function-source.function.js.map +1 -1
  790. package/dist/src/functions/render-email-preview.function.d.ts +1 -1
  791. package/dist/src/functions/render-email-preview.function.d.ts.map +1 -1
  792. package/dist/src/functions/render-email-preview.function.js +8 -19
  793. package/dist/src/functions/render-email-preview.function.js.map +1 -1
  794. package/dist/src/functions/render-email-preview.function.test.js +1 -1
  795. package/dist/src/functions/render-email-preview.function.test.js.map +1 -1
  796. package/dist/src/functions/render-email-template.utils.d.ts +8 -3
  797. package/dist/src/functions/render-email-template.utils.d.ts.map +1 -1
  798. package/dist/src/functions/render-email-template.utils.js +71 -17
  799. package/dist/src/functions/render-email-template.utils.js.map +1 -1
  800. package/dist/src/functions/render-email-template.utils.test.js +56 -23
  801. package/dist/src/functions/render-email-template.utils.test.js.map +1 -1
  802. package/dist/src/functions/run-security-audit.function.d.ts +2 -2
  803. package/dist/src/functions/run-security-audit.function.d.ts.map +1 -1
  804. package/dist/src/functions/run-security-audit.function.js +1 -1
  805. package/dist/src/functions/run-security-audit.function.js.map +1 -1
  806. package/dist/src/functions/run-security-audit.function.test.d.ts +2 -0
  807. package/dist/src/functions/run-security-audit.function.test.d.ts.map +1 -0
  808. package/dist/src/functions/run-security-audit.function.test.js +98 -0
  809. package/dist/src/functions/run-security-audit.function.test.js.map +1 -0
  810. package/dist/src/functions/scope-add-scope-to-user.function.d.ts +4 -4
  811. package/dist/src/functions/scope-add-scope-to-user.function.d.ts.map +1 -1
  812. package/dist/src/functions/scope-add-scope-to-user.function.js +1 -1
  813. package/dist/src/functions/scope-add-scope-to-user.function.js.map +1 -1
  814. package/dist/src/functions/scope-add-user-to-role.function.d.ts +4 -4
  815. package/dist/src/functions/scope-add-user-to-role.function.d.ts.map +1 -1
  816. package/dist/src/functions/scope-add-user-to-role.function.js +1 -1
  817. package/dist/src/functions/scope-add-user-to-role.function.js.map +1 -1
  818. package/dist/src/functions/scope-create-role.function.d.ts +4 -4
  819. package/dist/src/functions/scope-create-role.function.d.ts.map +1 -1
  820. package/dist/src/functions/scope-create-role.function.js +1 -1
  821. package/dist/src/functions/scope-create-role.function.js.map +1 -1
  822. package/dist/src/functions/scope-delete-role.function.d.ts +4 -4
  823. package/dist/src/functions/scope-delete-role.function.d.ts.map +1 -1
  824. package/dist/src/functions/scope-delete-role.function.js +1 -1
  825. package/dist/src/functions/scope-delete-role.function.js.map +1 -1
  826. package/dist/src/functions/scope-list-declared.function.d.ts +4 -4
  827. package/dist/src/functions/scope-list-declared.function.d.ts.map +1 -1
  828. package/dist/src/functions/scope-list-declared.function.js +1 -1
  829. package/dist/src/functions/scope-list-declared.function.js.map +1 -1
  830. package/dist/src/functions/scope-list-roles.function.d.ts +5 -5
  831. package/dist/src/functions/scope-list-roles.function.d.ts.map +1 -1
  832. package/dist/src/functions/scope-list-roles.function.js +1 -1
  833. package/dist/src/functions/scope-list-roles.function.js.map +1 -1
  834. package/dist/src/functions/scope-list-user-roles.function.d.ts +4 -4
  835. package/dist/src/functions/scope-list-user-roles.function.d.ts.map +1 -1
  836. package/dist/src/functions/scope-list-user-roles.function.js +1 -1
  837. package/dist/src/functions/scope-list-user-roles.function.js.map +1 -1
  838. package/dist/src/functions/scope-remove-scope-from-user.function.d.ts +4 -4
  839. package/dist/src/functions/scope-remove-scope-from-user.function.d.ts.map +1 -1
  840. package/dist/src/functions/scope-remove-scope-from-user.function.js +1 -1
  841. package/dist/src/functions/scope-remove-scope-from-user.function.js.map +1 -1
  842. package/dist/src/functions/scope-remove-user-from-role.function.d.ts +4 -4
  843. package/dist/src/functions/scope-remove-user-from-role.function.d.ts.map +1 -1
  844. package/dist/src/functions/scope-remove-user-from-role.function.js +1 -1
  845. package/dist/src/functions/scope-remove-user-from-role.function.js.map +1 -1
  846. package/dist/src/functions/scope-set-role-scopes.function.d.ts +4 -4
  847. package/dist/src/functions/scope-set-role-scopes.function.d.ts.map +1 -1
  848. package/dist/src/functions/scope-set-role-scopes.function.js +1 -1
  849. package/dist/src/functions/scope-set-role-scopes.function.js.map +1 -1
  850. package/dist/src/functions/secret-get.function.d.ts +4 -4
  851. package/dist/src/functions/secret-get.function.d.ts.map +1 -1
  852. package/dist/src/functions/secret-get.function.js +1 -1
  853. package/dist/src/functions/secret-get.function.js.map +1 -1
  854. package/dist/src/functions/secret-has.function.d.ts +4 -4
  855. package/dist/src/functions/secret-has.function.d.ts.map +1 -1
  856. package/dist/src/functions/secret-has.function.js +1 -1
  857. package/dist/src/functions/secret-has.function.js.map +1 -1
  858. package/dist/src/functions/secret-set.function.d.ts +4 -4
  859. package/dist/src/functions/secret-set.function.d.ts.map +1 -1
  860. package/dist/src/functions/secret-set.function.js +1 -1
  861. package/dist/src/functions/secret-set.function.js.map +1 -1
  862. package/dist/src/functions/stream-workflow-run.function.d.ts +4 -4
  863. package/dist/src/functions/stream-workflow-run.function.d.ts.map +1 -1
  864. package/dist/src/functions/stream-workflow-run.function.js +1 -1
  865. package/dist/src/functions/stream-workflow-run.function.js.map +1 -1
  866. package/dist/src/functions/update-agent-config.function.d.ts +4 -4
  867. package/dist/src/functions/update-agent-config.function.d.ts.map +1 -1
  868. package/dist/src/functions/update-agent-config.function.js +2 -2
  869. package/dist/src/functions/update-agent-config.function.js.map +1 -1
  870. package/dist/src/functions/update-dependency.function.d.ts +5 -5
  871. package/dist/src/functions/update-dependency.function.d.ts.map +1 -1
  872. package/dist/src/functions/update-dependency.function.js +1 -1
  873. package/dist/src/functions/update-dependency.function.js.map +1 -1
  874. package/dist/src/functions/update-dependency.function.test.d.ts +2 -0
  875. package/dist/src/functions/update-dependency.function.test.d.ts.map +1 -0
  876. package/dist/src/functions/update-dependency.function.test.js +181 -0
  877. package/dist/src/functions/update-dependency.function.test.js.map +1 -0
  878. package/dist/src/functions/update-email-template.function.d.ts +4 -4
  879. package/dist/src/functions/update-email-template.function.d.ts.map +1 -1
  880. package/dist/src/functions/update-email-template.function.js +2 -3
  881. package/dist/src/functions/update-email-template.function.js.map +1 -1
  882. package/dist/src/functions/update-function-body.function.d.ts +4 -4
  883. package/dist/src/functions/update-function-body.function.d.ts.map +1 -1
  884. package/dist/src/functions/update-function-body.function.js +2 -2
  885. package/dist/src/functions/update-function-body.function.js.map +1 -1
  886. package/dist/src/functions/update-function-config.function.d.ts +4 -4
  887. package/dist/src/functions/update-function-config.function.d.ts.map +1 -1
  888. package/dist/src/functions/update-function-config.function.js +2 -2
  889. package/dist/src/functions/update-function-config.function.js.map +1 -1
  890. package/dist/src/lib/addon-readiness.test.js +1 -1
  891. package/dist/src/lib/audit-exec.d.ts +2 -2
  892. package/dist/src/lib/audit-exec.d.ts.map +1 -1
  893. package/dist/src/lib/audit-exec.test.d.ts +2 -0
  894. package/dist/src/lib/audit-exec.test.d.ts.map +1 -0
  895. package/dist/src/lib/audit-exec.test.js +97 -0
  896. package/dist/src/lib/audit-exec.test.js.map +1 -0
  897. package/dist/src/lib/derive-instance-overrides.js +1 -1
  898. package/dist/src/lib/resolve-audit-users.d.ts +1 -1
  899. package/dist/src/lib/resolve-audit-users.d.ts.map +1 -1
  900. package/dist/src/lib/resolve-package-manager.d.ts +11 -0
  901. package/dist/src/lib/resolve-package-manager.d.ts.map +1 -1
  902. package/dist/src/lib/resolve-package-manager.js +49 -20
  903. package/dist/src/lib/resolve-package-manager.js.map +1 -1
  904. package/dist/src/lib/resolve-package-manager.test.js +39 -1
  905. package/dist/src/lib/resolve-package-manager.test.js.map +1 -1
  906. package/dist/src/lib/surface.d.ts +30 -0
  907. package/dist/src/lib/surface.d.ts.map +1 -0
  908. package/dist/src/lib/surface.js +47 -0
  909. package/dist/src/lib/surface.js.map +1 -0
  910. package/dist/src/lib/surface.test.d.ts +2 -0
  911. package/dist/src/lib/surface.test.d.ts.map +1 -0
  912. package/dist/src/lib/surface.test.js +99 -0
  913. package/dist/src/lib/surface.test.js.map +1 -0
  914. package/dist/src/lib/surface.types.d.ts +59 -0
  915. package/dist/src/lib/surface.types.d.ts.map +1 -0
  916. package/dist/src/lib/surface.types.js +2 -0
  917. package/dist/src/lib/surface.types.js.map +1 -0
  918. package/dist/src/scopes.js +21 -59
  919. package/dist/src/scopes.js.map +1 -1
  920. package/dist/src/services/addon-readiness.service.d.ts +2 -1
  921. package/dist/src/services/addon-readiness.service.d.ts.map +1 -1
  922. package/dist/src/services/addon-readiness.service.js.map +1 -1
  923. package/dist/src/services/addon.service.d.ts +5 -5
  924. package/dist/src/services/addon.service.d.ts.map +1 -1
  925. package/dist/src/services/db-schema.service.d.ts +1 -1
  926. package/dist/src/services/db-schema.service.d.ts.map +1 -1
  927. package/dist/src/services/wiring.service.d.ts +7 -7
  928. package/dist/src/services/wiring.service.d.ts.map +1 -1
  929. package/dist/src/services.d.ts +1 -1
  930. package/dist/src/services.d.ts.map +1 -1
  931. package/dist/src/services.js +12 -9
  932. package/dist/src/services.js.map +1 -1
  933. package/dist/types/application-types.d.ts +10 -2
  934. package/package.json +17 -20
  935. package/dist/.pikku/schemas/schemas/GetAuditFiltersOutput.schema.json +0 -1
  936. package/dist/.pikku/schemas/schemas/GetAuditsInput.schema.json +0 -1
  937. package/dist/.pikku/schemas/schemas/GetAuditsOutput.schema.json +0 -1
package/CHANGELOG.md ADDED
@@ -0,0 +1,2027 @@
1
+ ## 0.12.44
2
+
3
+ ### Patch Changes
4
+
5
+ - 31ad85f: fix(emails): escape substituted values in the generated email renderer
6
+
7
+ `renderEmailTemplate` spliced values into HTML unescaped and looped substitution
8
+ until it reached a fixed point, so a value containing `"` broke out of the
9
+ attribute it landed in, a value containing markup was injected verbatim, and a
10
+ value containing `{{...}}` was re-expanded as a template on the next pass. An
11
+ ordinary CSS font stack from `theme.json` was enough to corrupt the document.
12
+
13
+ Rendering is now layered by trust. Partials are inlined first; `theme.*` and
14
+ `t.*` are expanded next as template-author input; caller `data` is substituted in
15
+ a single pass that is never rescanned. Values are HTML-escaped in `.html` output
16
+ and left raw in `.subject.txt` / `.text.txt`. `{{content}}` and partials stay
17
+ raw, and `{{{value}}}` is a new opt-in raw form. The console's email preview uses
18
+ the same renderer, so previews match what is sent.
19
+
20
+ - Updated dependencies [9687ad1]
21
+ - Updated dependencies [2d21628]
22
+ - Updated dependencies [985b87b]
23
+ - Updated dependencies [3a83f85]
24
+ - @pikku/core@0.12.87
25
+
26
+ ## 0.12.43
27
+
28
+ ### Patch Changes
29
+
30
+ - 7722ceb: Split the addon leaf so an application cannot shadow a linked addon's own
31
+
32
+ An addon authored its services through `#pikku/addon`, and so did an
33
+ application installing one. Node keeps those apart — `#pikku/*` is a
34
+ package-private subpath import, resolved against the addon's own
35
+ `package.json` — but tsconfig `paths` are global to a tsx process, and every
36
+ runtime template maps `#pikku/*` onto a sibling package. A linked addon's
37
+ `#pikku/addon` was resolved against the _application's_ leaf, which holds the
38
+ install half and none of the authoring exports, and every template failed to
39
+ boot with `does not provide an export named 'pikkuAddonServices'`.
40
+
41
+ The authoring half now sits at `#pikku/addon/setup`. An application generates a
42
+ flat `.pikku/<leaf>`, so there is nothing there for that specifier to match and
43
+ the resolver falls back to Node, which reads the addon's own imports. Addons
44
+ declaring themselves import `pikkuAddonConfig`, `pikkuAddonServices` and
45
+ `pikkuAddonWireServices` from `#pikku/addon/setup`; `wireAddon` and
46
+ `wireRemoteAddon` stay at `#pikku/addon`.
47
+
48
+ `wireAddon` and `wireRemoteAddon` also move off `@pikku/core/rpc` onto
49
+ `@pikku/core/addon`. Being reached over rpc is how an addon is called rather
50
+ than what it is, and it put the whole addon surface behind the rpc subpath for
51
+ consumers that only wanted to install one.
52
+
53
+ - 20d8a39: Split application administration out of the console addon into a new
54
+ `@pikku/addon-admin`.
55
+
56
+ `@pikku/addon-console` reads generated metadata, project source and knowledge
57
+ notes from disk, so it only ever runs where there is a project checkout and a
58
+ dev server. That made the console the only way to reach capabilities that have
59
+ nothing to do with a console — listing users, composing roles, granting scopes,
60
+ managing credentials, reading the audit trail — none of which touch a
61
+ filesystem. Those now live in `@pikku/addon-admin`, which depends on nothing but
62
+ `@pikku/core` and `@pikku/better-auth` and can be wired into a deployed
63
+ serverless unit:
64
+
65
+ ```ts
66
+ wireAddon({ name: 'admin', package: '@pikku/addon-admin' })
67
+ ```
68
+
69
+ It ships the user directory (`admin:listUsers`, `createUser`, `setUserBanned`,
70
+ `removeUser`, `revokeUserSessions`, `setUserPassword`), role and scope
71
+ administration, credential administration and the audit trail.
72
+ `console:getMyAccess` stays where it is: the console reads it to decide what to
73
+ render, and it must not need a second addon wired to boot.
74
+ Each function carries its own `admin:*` scope; the addon deliberately declares
75
+ no `scopes` on `wireAddon`, because addon scopes are required _in addition to_ a
76
+ function's own and an addon-level `admin` would force the umbrella grant on a
77
+ caller granted only `admin:users:list`.
78
+
79
+ Breaking for anyone calling these RPCs by name or granting their scopes:
80
+
81
+ - `console:getAudits`, `console:getAuditFilters`, `console:scope*` and
82
+ `console:credential*` are now `admin:*`.
83
+ - `pikku:console:audit:read` is now `admin:audit:read`,
84
+ `pikku:console:scopes:{read,manage}` are now `admin:scopes:{read,manage}`, and
85
+ `pikku:console:credentials:{read,manage}` are now
86
+ `admin:credentials:{read,manage}`.
87
+ - The `admin` scope tree gains `credentials:{read,manage}`, `scopes` and
88
+ `audit`. A bare `admin` grant now also covers reading the audit trail and
89
+ administering roles; a role that means to exclude those must spell out the
90
+ leaves it wants.
91
+ - `scaffold.console` gates the console addon on `pikku:console` rather than
92
+ `admin`, since `admin` is now the other addon's tree, and `@pikku/console`'s
93
+ own `AuthGate` requires the same root (`isAdmin` on the auth context is now
94
+ `canUseConsole`). Grant `pikku:console` to whoever should reach the console —
95
+ the two are separate decisions, and a host may hand someone the console
96
+ without handing them the user directory.
97
+
98
+ `credentialListUsers` now reports the credentials each user actually holds
99
+ rather than a matrix against the declared set, which is what removed its last
100
+ dependency on the on-disk metadata.
101
+
102
+ The `scaffold.userAdmin` generator is superseded by the addon and left in place
103
+ for hosts still on it. Its copy of the `admin` scope tree — and the one exported
104
+ as `ADMIN_SCOPE_TREE` from `@pikku/better-auth` — stay byte-identical to the
105
+ addon's, as pikku still requires of a shared scope root.
106
+
107
+ - 266e3bc: One door per name: `@pikku/core/ecosystem/*` and the package root are gone
108
+
109
+ `@pikku/core` published every module twice. `ecosystem/http` re-exported
110
+ `./http`, `ecosystem/services` re-exported `./services`, and a name was
111
+ reachable through either — so every addition had to be made in two places, and a
112
+ consumer's import said nothing about what it actually used. The package root was
113
+ the same problem at a larger scale: a single barrel of 206 names that no bundler
114
+ could take apart, and the one specifier that revealed nothing at all.
115
+
116
+ Both are deleted. Every name now lives on the subpath that owns it, and every
117
+ import carries that subpath — `@pikku/core/http`, `@pikku/core/services`,
118
+ `@pikku/core/errors`, `@pikku/core/types`.
119
+
120
+ Deleting the facades meant the raw subpaths had to become a superset of them,
121
+ which they were not: the facade tree had accumulated 25 names with no raw home
122
+ and about 26 more filed under a different area than the module they came from.
123
+ Those names moved to the area that owns them, and three areas were published as
124
+ new entry points rather than left on a root that is going away — `./types` (the
125
+ shared type surface, the largest single destination), `./state` and
126
+ `./classification`.
127
+
128
+ `./classification` is one door onto one subject: what a value is and how it must
129
+ be handled. Its three halves would each have been an entry point — the brands
130
+ and manifest types, the stored-form helpers (`hashToken`, `unsafeAsSealed` and
131
+ friends), and `SecretValue` — split by whether a name happens to be a type or a
132
+ value, which is the same defect as the facades. The duration and versioned-id
133
+ helpers went to `./utils`, which already published, and `PikkuRequest` went to
134
+ `./function`: it is the transport-agnostic request base, not an HTTP one — HTTP
135
+ has `PikkuHTTPAbstractRequest`, and the only thing outside core that extends
136
+ `PikkuRequest` is Azure's timer request.
137
+
138
+ `./types` inherited the root barrel's habit before it inherited its contents, so
139
+ the names with an owner elsewhere were moved off it. The middleware types and the
140
+ five middleware factories — `pikkuMiddleware`, `pikkuMiddlewareFactory`,
141
+ `pikkuChannelMiddleware`, `pikkuChannelMiddlewareFactory` and
142
+ `pikkuAgentMiddleware`, runtime values on a types entry point — are now
143
+ `@pikku/core/middleware`; the function meta types are `@pikku/core/function`;
144
+ `SerializedError` is `@pikku/core/errors`; and the generic TypeScript helpers
145
+ (`MakeRequired`, `PickRequired`, `PickOptional`, `RequireAtLeastOne`,
146
+ `JSONPrimitive`, `JSONValue`) are `@pikku/core/utils`. What is left on `./types`
147
+ is the vocabulary the wirings share, which no single module owns.
148
+
149
+ `pikku` was itself a root barrel — `export * from '@pikku/core'` — and
150
+ now exports only the services it bundles.
151
+
152
+ One module survives at the old specifier, and only for the bootstrap:
153
+ `packages/cli` is generated by the _published_ CLI pinned in its `build.sh`, and
154
+ that CLI still writes a bare `@pikku/core` into the files it generates for the
155
+ CLI itself. `bootstrap-compat/root.ts` carries the eight types it names, a test
156
+ in core fails if that list grows, and it goes when the pin moves to a CLI
157
+ released from this branch. The adapter names the pinned CLI reaches for —
158
+ `pikkuState` and `CreateWireServices` — are rewritten to `@pikku/core/state` and
159
+ `@pikku/core/types` by the same `build.sh` patch pass, so no second shim is
160
+ needed for them.
161
+
162
+ A guard test keeps the root shut: it parses imports and rejects a bare
163
+ `@pikku/core` rather than grepping for it, because several tests hold a user's
164
+ file as a template literal, where `import … from '@pikku/core'` is fixture text
165
+ rather than an import this repo makes.
166
+
167
+ An agent scaffold a project generated under an older CLI is refreshed rather
168
+ than left to fail: `pikku all` already deleted one importing an entry point
169
+ `@pikku/core` no longer publishes, and the `#pikku` hub joins that list.
170
+ Without it a project that scaffolds the agent endpoint but
171
+ declares no agents keeps the old file forever — the generator that would rewrite
172
+ it only runs when agents exist, and the file being present is what stops it
173
+ being regenerated as missing.
174
+
175
+ `pikku new addon` also wrote a tsconfig `paths` map naming only the deleted hub.
176
+ An addon's `imports` map points into `dist`, so `paths` is what resolves
177
+ `#pikku/<leaf>` for the addon's own source build — it now names the two leaf
178
+ patterns, in both the addon and its test harness.
179
+
180
+ - 786dae5: Bump every dependency whose latest release is a major across the monorepo, and
181
+ port the code the majors broke: `cookie` 2's `parseCookie`/`stringifySetCookie`
182
+ API in `@pikku/core` and the three runtime HTTP adapters, and assistant-ui 0.15's
183
+ store client in `@pikku/assistant-ui`.
184
+ - 6eef0a0: Bump every dependency to its latest compatible minor/patch across the monorepo.
185
+ - 892100b: Generate the meta service under `services/` and reach it through `#pikku`
186
+
187
+ `pikku-meta-service.gen.ts` was written loose at the root of the output dir
188
+ while every wiring type sat in its own subdir, and both call sites that consume
189
+ it reached past the `#pikku` imports map to a relative path into the generated
190
+ tree — `e2e/src/services.ts` with a static import, the `functions` template with
191
+ a dynamic `await import('../.pikku/pikku-meta-service.gen.js')`. It now lands at
192
+ `services/pikku-meta-service.gen.ts` and is imported as
193
+ `#pikku/services/pikku-meta-service.gen.js`, matching the `<dir>/pikku-<x>.gen.js`
194
+ shape the rest of the generated tree already uses. Bootstrap prunes the old root
195
+ file, since a project generated before the move would otherwise keep compiling
196
+ it. The console addon's "metaService is required" error names the new path.
197
+
198
+ The `functions` template had no `imports` map at all, so its generated-code
199
+ imports were all relative; it now declares `"#pikku/*": "./.pikku/*"` and its
200
+ `services.ts` goes through it.
201
+
202
+ - f4cd54e: Find the package manager at the workspace root, and stop the impersonation banner covering the page
203
+
204
+ Installing an addon from the console detected the package manager by looking
205
+ only in the pikku root — the directory holding `pikku.config.json`. In a
206
+ monorepo that is a package directory carrying neither a `packageManager` field
207
+ nor a lockfile, so detection fell through to its `npm` default and ran
208
+ `npm install` inside a yarn workspace, which dies on
209
+ `Unsupported URL Type "workspace:"`. Detection now walks up to the workspace
210
+ root, where both signals actually live, and a declared manager anywhere up the
211
+ tree outranks a lockfile below it — a stray `package-lock.json` in a
212
+ sub-package no longer overrides the root's declared yarn.
213
+
214
+ The impersonation banner is fixed to the top of the window but reserved no
215
+ space, so it painted over the top ~34px of every page and swallowed clicks on
216
+ anything the page put there. It now publishes its measured height as
217
+ `--app-banner-inset-top` and the app layout pads by it, following the same
218
+ idiom the nav dock already uses for the edges it takes.
219
+
220
+ - 266e3bc: `#pikku` is a namespace, not a module: one subpath per wiring
221
+
222
+ The bare `#pikku` specifier resolved to `.pikku/pikku-types.gen.ts`, a hub that
223
+ re-exported all twelve wiring leaves with `export *` — undoing the split the
224
+ leaves exist for, each of which still says so in its own generated header
225
+ ("HTTP-specific type definitions for tree-shaking optimization"). Reaching that
226
+ hub put 33 distinct `@pikku/core` subpaths into the module graph, and neither
227
+ consumer could drop them again: bundlers keep `export *` chains because the app
228
+ declares no `sideEffects`, and Node and tsx do not tree-shake at all, so an app
229
+ with no queues still executed `@pikku/core/queue` at boot.
230
+
231
+ The hub is gone. An app now imports the leaf the name belongs to —
232
+ `#pikku/function`, `#pikku/http`, `#pikku/workflow` — and a project's `imports`
233
+ map declares two patterns, because both resolvers pick the more specific one:
234
+
235
+ ```json
236
+ "#pikku/*.js": "./.pikku/*.ts",
237
+ "#pikku/*": "./.pikku/*/index.ts"
238
+ ```
239
+
240
+ A source tree names the `.ts` on both. Webpack, esbuild and Bun all rewrite a
241
+ `.js` specifier to the `.ts` beside it for a relative import but not for an
242
+ imports-map target, so a `.js` target there resolves to a file that does not
243
+ exist. The two places that keep `.js` are the ones where it is the real file: a
244
+ published addon, whose map points into `dist`, and a project that imports a
245
+ declaration-only generated file such as `pikku-rpc-wirings-map.gen.d.ts`, where
246
+ naming the `.js` lets the type resolver's own mapping reach the `.d.ts`.
247
+
248
+ `pikku` generates the leaf indexes and removes the hub, and `pikku validate`
249
+ reports a barrel import as an error. The split also turns the addon boundary
250
+ from advice into a rule: an addon never generates the wiring leaves, so
251
+ `#pikku/http` fails at the specifier rather than yielding "no exported member"
252
+ from a hub that quietly dropped the re-export.
253
+
254
+ - 456c88b: Scenario runs are now kept, and the console reads them back.
255
+
256
+ Every `pikku scenario run` files a record: the run's outcome and counts, each
257
+ scenario's result with the prose of the steps as they read at the time, and the
258
+ screenshots and video it left behind. The steps are snapshotted rather than
259
+ referenced, so a run still reads correctly after the scenario that produced it
260
+ has been rewritten.
261
+
262
+ `ScenarioRunStore` is the interface, `FileScenarioRunStore` the on-disk
263
+ implementation the CLI writes to — one folder per run, `run.json` beside its
264
+ artifacts, under `<outDir>/scenario-runs`. It is a store in its own right rather
265
+ than a corner of the workflow service, so a hosted console can keep the same
266
+ records in a database and its footage in object storage without the functions
267
+ that read them knowing the difference.
268
+
269
+ The console's Scenarios page gained a Runs view (`?view=runs`) listing past
270
+ runs, with a run's results, its step ladder, failures, and the screenshots and
271
+ video inline. Reading and deleting runs are gated by the new
272
+ `pikku:console:scenarios:read` and `pikku:console:scenarios:manage` scopes.
273
+
274
+ - 727671b: Serve the public surface to the console. `console:getSurface` reads the doc
275
+ shipped inside `@pikku/cli` and the usage the inspector measured into the
276
+ project's outDir, each half optional, and `/surface` renders it from
277
+ `useSurface()`. Both files are read on demand when the page asks, never at boot.
278
+ - 727671b: `wireAddon` and `wireRemoteAddon` move from `#pikku/function` to `#pikku/addon`.
279
+
280
+ Installing an addon and authoring one are the same concept from opposite ends,
281
+ so they are one import: an application's `#pikku/addon` carries the two install
282
+ functions, an addon package's carries `pikkuAddonConfig`, `pikkuAddonServices`,
283
+ `pikkuAddonWireServices` and `AddonBaseServices`.
284
+
285
+ Two generation fixes came with it:
286
+
287
+ - `CredentialsMap` is generated as a type alias rather than an interface. An
288
+ interface has no implicit index signature, so it was never assignable to the
289
+ `Record<string, unknown>` that `GetCredential` is constrained by, and every
290
+ generated project reported two errors on its own function types.
291
+ - An unresolved `SingletonServices` type is now `PKU724` instead of a services
292
+ map with no entries in it. Written out, the empty map made every service
293
+ optional and the real failure resurfaced as unrelated "possibly undefined"
294
+ errors in files nobody had touched.
295
+
296
+ - Updated dependencies [7722ceb]
297
+ - Updated dependencies [375c1ff]
298
+ - Updated dependencies [20d8a39]
299
+ - Updated dependencies [02a70cd]
300
+ - Updated dependencies [aeef159]
301
+ - Updated dependencies [a281de6]
302
+ - Updated dependencies [266e3bc]
303
+ - Updated dependencies [02a70cd]
304
+ - Updated dependencies [786dae5]
305
+ - Updated dependencies [6eef0a0]
306
+ - Updated dependencies [20d8a39]
307
+ - Updated dependencies [3561d67]
308
+ - Updated dependencies [a91c433]
309
+ - Updated dependencies [02a70cd]
310
+ - Updated dependencies [9537f74]
311
+ - Updated dependencies [2b57ca8]
312
+ - Updated dependencies [266e3bc]
313
+ - Updated dependencies [9fce0f1]
314
+ - Updated dependencies [83683a0]
315
+ - Updated dependencies [456c88b]
316
+ - Updated dependencies [456c88b]
317
+ - Updated dependencies [c127273]
318
+ - @pikku/core@0.12.85
319
+ - @pikku/better-auth@0.12.26
320
+ - @pikku/knowledge@0.12.7
321
+
322
+ ## 0.12.42
323
+
324
+ ### Patch Changes
325
+
326
+ - 17eea0d: feat(console): an addon install says what it still needs before a restart
327
+
328
+ `wireAddon` only reaches the live registry when its module is executed at boot,
329
+ so an addon installed into a running dev server is inert until a restart — while
330
+ `installAddon` returned a bare `success: true` and the Addons tab kept showing
331
+ the old list. The install now returns `restartRequired`, and whether the addon
332
+ could actually start: `ready`, `missingSecrets` and `missingVariables`, read from
333
+ the package's own declared secrets and variables under this instance's override
334
+ names. A variable whose schema carries a default is never missing.
335
+
336
+ `addonReadiness` re-runs that check for an already-installed instance, reading
337
+ the override names out of its `<namespace>.addon.ts`, so a caller can gate the
338
+ restart until the user has configured what the addon needs rather than
339
+ restarting into a crash loop.
340
+
341
+ The console renders that outcome instead of polling for the addon to become
342
+ queryable. Installing used to navigate to the package page, which polled
343
+ `getAddonInstalledPackage` for ~20s and then gave up with "Package not found" —
344
+ re-inspecting the new wiring routinely takes longer, so a successful install
345
+ looked like a failure. The page now shows what the install reported: the name it
346
+ was wired under, that a restart is required, and either that it is ready or which
347
+ secrets and variables are still unset.
348
+
349
+ `readAddonDeclaredNames` also now finds meta in a package that ships `.pikku`
350
+ only under `dist`, where it previously read as "declares nothing" and silently
351
+ skipped the per-instance override derivation.
352
+
353
+ - 7406bfe: Rename the agent runtime from `AI*` to `Agent*` (#596)
354
+
355
+ `AI` described the model provider, not the thing being named. Every symbol that
356
+ belongs to the agent runtime now says `Agent`; the symbols that genuinely wrap a
357
+ model provider — `AIEmbeddingService`, `AIProviderOptions`, `AIEmbedParams`,
358
+ `AITranscriptionParams`, `AIGenerateImageParams` and their siblings, and the
359
+ `@pikku/ai-vercel` / `@pikku/ai-deepinfra` / `@pikku/ai-voice` packages — keep
360
+ their names.
361
+
362
+ **Wiring**
363
+ - `pikkuAIAgent` → `pikkuAgent`, `pikkuAIScorer` → `pikkuAgentScorer`,
364
+ `pikkuAIJudge` → `pikkuAgentJudge`
365
+ - `CoreAIAgent` → `CoreAgent`, `AIAgentInput` → `AgentInput`, `AIAgentStep` →
366
+ `AgentStep`, `AIMessage` → `AgentMessage`, and the rest of the agent types
367
+ - `AIAgentRunnerService` → `AgentRunnerService`, `AIStorageService` →
368
+ `AgentStorageService`, `AIRunStateService` → `AgentRunStateService`
369
+
370
+ **Entry points**
371
+
372
+ `@pikku/core/agent` → `@pikku/core/agent`, `@pikku/core/agent-scorer` →
373
+ `@pikku/core/agent-scorer`.
374
+
375
+ **Queues**
376
+
377
+ The scorer queues are now `agent-score-fast` and `agent-score-slow`. Drain the
378
+ old `ai-score-fast` / `ai-score-slow` queues before deploying — jobs still
379
+ sitting on them when the new workers start will never be picked up.
380
+
381
+ **Scaffolds**
382
+
383
+ The agent scaffold pikku wrote for your project — `<scaffold>/agent/agent.gen.ts`
384
+ and its schemas file — imports `@pikku/core/ai-agent`, which no longer exists. A
385
+ scaffold is normally written once and then left alone, so `pikku all` would find
386
+ it present and leave the broken import in place. It now deletes an agent scaffold
387
+ importing either removed entry point and regenerates it in the same run. Anything
388
+ you added to that file goes with it, so move local edits out first.
389
+
390
+ **Database**
391
+
392
+ The agent tables are renamed: `ai_threads`, `ai_message`, `ai_tool_call`,
393
+ `ai_working_memory`, `ai_run` and `ai_run_score` become `agent_threads`,
394
+ `agent_message`, `agent_tool_call`, `agent_working_memory`, `agent_run` and
395
+ `agent_run_score`, along with their indexes and the `ai_working_memory_pk`
396
+ constraint. The same rename applies to the MongoDB collections.
397
+
398
+ `ensurePikkuSchema` creates tables it cannot find, so an existing database will
399
+ get empty `agent_*` tables and leave the old data stranded in `ai_*`. Rename
400
+ them before the first boot on the new version:
401
+
402
+ ```sql
403
+ ALTER TABLE ai_threads RENAME TO agent_threads;
404
+ ALTER TABLE ai_message RENAME TO agent_message;
405
+ ALTER TABLE ai_tool_call RENAME TO agent_tool_call;
406
+ ALTER TABLE ai_working_memory RENAME TO agent_working_memory;
407
+ ALTER TABLE ai_run RENAME TO agent_run;
408
+ ALTER TABLE ai_run_score RENAME TO agent_run_score;
409
+ ```
410
+
411
+ - eadea64: Reach the whole console from ⌘K, and report a name collision as a conflict.
412
+
413
+ The command palette now lists every page in the navigation and, for anyone who
414
+ can impersonate, the impersonation picker — so both are reachable without the
415
+ chrome, which is a dock that only raises on hover at pointer widths and a closed
416
+ sheet on a phone. Its shortcut no longer goes dead while a text field has focus,
417
+ which is when reaching for the palette is most likely.
418
+
419
+ Installing an addon under a name the project already wires now reports a
420
+ conflict rather than a 500: the check asks the registry what is wired, so an
421
+ instance wired from outside the addons directory is found too.
422
+
423
+ A gherkin line in the knowledge viewer keeps a space between its keyword and the
424
+ sentence, so the line reads as a sentence to anything reading the DOM rather
425
+ than the layout.
426
+
427
+ - 6794681: Publish the ecosystem surface as per-area sub-barrels under `@pikku/core/ecosystem/*`, and point generated code, the CLI, the inspector and the runtime adapters at them.
428
+
429
+ 348 names that only generated code, the toolchain or a runtime adapter ever imports now have a second home on `@pikku/core/ecosystem/<area>` — one sub-barrel per area, matching how core already publishes its entrypoints, so no single barrel grows without bound and a consumer only pulls in the area it uses.
430
+
431
+ This step is additive: every name is still exported from the entrypoint it was published from before, so nothing downstream breaks. Removing them from the app-facing barrels is a later change, and needs a release carrying `./ecosystem/*` first.
432
+
433
+ - Updated dependencies [7406bfe]
434
+ - Updated dependencies [6794681]
435
+ - Updated dependencies [a7fcd2e]
436
+ - @pikku/core@0.12.84
437
+ - @pikku/better-auth@0.12.25
438
+
439
+ ## 0.12.41
440
+
441
+ ### Patch Changes
442
+
443
+ - 3a4d50a: feat(console): one scope per console area, under `pikku:console`
444
+
445
+ The console gated itself on a single `admin` scope declared on `wireAddon`, so
446
+ one grant covered reading a secret, rewriting a function body and reading the
447
+ audit trail alike — and the secret and variable brokers, which the CLI emits
448
+ into the app's own scaffold rather than the addon, were not covered by the addon
449
+ gate at all and carried no scope of their own.
450
+
451
+ Every console function now declares the area it belongs to:
452
+
453
+ ```
454
+ pikku:console:secrets read | write
455
+ pikku:console:variables read | write
456
+ pikku:console:addons read | install
457
+ pikku:console:credentials read | manage
458
+ pikku:console:scopes read | manage (was pikku:scopes:*)
459
+ pikku:console:audit read (was pikku:audit:*)
460
+ pikku:console:wirings read
461
+ pikku:console:security read | run
462
+ pikku:console:workflows read | manage
463
+ pikku:console:agents read | manage
464
+ pikku:console:db read
465
+ pikku:console:knowledge read
466
+ pikku:console:emails read | write
467
+ pikku:console:code write
468
+ ```
469
+
470
+ `pikku:console` grants the lot, and `pikku` still grants that — the generated
471
+ `PIKKU_CONSOLE_TOKEN` session carries `['admin', 'pikku']`, so an external
472
+ console keeps working untouched.
473
+
474
+ **Migration.** `admin` no longer reaches the console: it is a different tree.
475
+ Grant `pikku:console` alongside `admin` to keep an administrator's access as it
476
+ was, or grant the individual areas to hand out less. The two existing console
477
+ scopes moved: `pikku:scopes:read` / `pikku:scopes:manage` are now
478
+ `pikku:console:scopes:*`, and `pikku:audit:read` is now
479
+ `pikku:console:audit:read`.
480
+
481
+ - 3a4d50a: Five `console:scope*` descriptions and two `pikku *-prune` warnings promised a
482
+ grant or revoke "takes effect on their next request — no re-login". That is
483
+ only true when `withResolvedScopes` actually resolves, and it skips resolution
484
+ whenever `mapSession`/`mapKey` has already set `scopes` — which is
485
+ authoritative and deliberately never overridden.
486
+
487
+ So an app whose `mapSession` derives scopes from something like
488
+ `result.user.role` — the shape the `wire-scope` scaffold teaches — can grant a
489
+ scope from the console, see it stored, and have it never reach a session. The
490
+ revoke direction is worse: `roles prune` and `scopes prune` reported that users
491
+ lose the scopes on their next request when in fact they keep them.
492
+
493
+ Copy only; no behaviour change. The docblock on `withResolvedScopes` now states
494
+ that the propagation guarantee is conditional on resolution running at all, so
495
+ the next person copying that sentence into UI copy carries the caveat with it.
496
+
497
+ - Updated dependencies [3a4d50a]
498
+ - @pikku/better-auth@0.12.24
499
+
500
+ ## 0.12.40
501
+
502
+ ### Patch Changes
503
+
504
+ - b930dca: Remove the `secretBroker` escape hatch and scope addon secrets and credentials
505
+
506
+ `secretBroker` let three named console functions receive the real `SecretService`,
507
+ against the rule that a function never sees one. It is gone: the inspector allowlist,
508
+ the `FunctionRuntimeMeta` flag, the runner branches, and the `WiredSecretBrokerServices`
509
+ type. Console secret administration moved into the console addon, where a
510
+ `SecretAdminService` holds the `SecretService` and the functions hold none.
511
+
512
+ Addons are now scoped rather than trusted. The CLI emits each package's declared secret
513
+ keys, and the host wraps the `SecretService` in a `ScopedSecretService` and the
514
+ `CredentialService` in a new `ScopedCredentialService` before the addon's service factory
515
+ runs — so an addon reads only what it declared, cannot write secrets, and cannot enumerate
516
+ the app's users. `wireAddon({ globalSecrets, globalCredentials })` waives this, taking the
517
+ reason as its value; only the consuming app can grant it, and the deploy manifest reports
518
+ every grant under `unscopedSecretAddons` / `unscopedCredentialAddons`.
519
+
520
+ - Updated dependencies [063f43a]
521
+ - Updated dependencies [8ad051c]
522
+ - Updated dependencies [ce66bf8]
523
+ - Updated dependencies [d0307a8]
524
+ - Updated dependencies [0ab1a88]
525
+ - Updated dependencies [5599a27]
526
+ - Updated dependencies [ce66bf8]
527
+ - Updated dependencies [3ad2131]
528
+ - Updated dependencies [b930dca]
529
+ - Updated dependencies [b95e77d]
530
+ - Updated dependencies [fd9d834]
531
+ - Updated dependencies [8978fbd]
532
+ - @pikku/core@0.12.82
533
+ - @pikku/better-auth@0.12.23
534
+ - @pikku/knowledge@0.12.5
535
+
536
+ ## 0.12.39
537
+
538
+ ### Patch Changes
539
+
540
+ - 2f15aad: Resolve every entry point under `dist`
541
+
542
+ `imports["#pikku"]` named `./.pikku/pikku-types.gen.ts` — a TypeScript file, at
543
+ runtime, inside `node_modules` — while `files` publishes only `dist`. The
544
+ generated output under `dist/.pikku` also imports a `types/application-types.d.js`
545
+ that nothing was copying there, since a hand-written `.d.ts` is an input to
546
+ `tsc` rather than something it emits.
547
+
548
+ Both now point at the built copy. The addon's own build resolves `#pikku`
549
+ through tsconfig `paths`, so no entry point has to reach into the source tree.
550
+
551
+ - e110c55: Emit `pikkuAIScorer` and `pikkuAIJudge` from the generated agent types so a
552
+ project can declare scorers, and read a run's grades from the console.
553
+
554
+ A tool that threw now reports its reason only on the step record's `error`; the
555
+ result replayed to the model stays the generic `Error: Tool execution failed` it
556
+ was before scorers needed the reason.
557
+
558
+ - e110c55: Show what the scorers declared and what they graded: a `/scorers` page listing
559
+ every declared scorer with its lane, sampling rate and the agents that named it,
560
+ and a Runs tab in the agent inspector listing the open conversation's runs with
561
+ the grades each one earned.
562
+
563
+ `console:getAgentThreadRuns` now answers under the same ownership as the thread
564
+ itself — a caller without the admin scope sees only its own runs, filtered
565
+ rather than refused, so the answer never confirms someone else's thread exists.
566
+
567
+ - Updated dependencies [e110c55]
568
+ - Updated dependencies [e110c55]
569
+ - Updated dependencies [e110c55]
570
+ - Updated dependencies [acc8077]
571
+ - Updated dependencies [905f737]
572
+ - Updated dependencies [3cc6428]
573
+ - Updated dependencies [c524adf]
574
+ - Updated dependencies [e110c55]
575
+ - @pikku/core@0.12.81
576
+
577
+ ## 0.12.38
578
+
579
+ ### Patch Changes
580
+
581
+ - 62ea4cc: The audit trail is now readable — in the generated meta, through an RPC, and as
582
+ a page in the console.
583
+
584
+ `audit: true` reaches `FunctionRuntimeMeta.audit` as its resolved form
585
+ (`{ durability }`), so which functions record anything is answerable without
586
+ running them. It is informational: the runner still resolves audit from the live
587
+ function config, so meta and runtime cannot disagree.
588
+
589
+ `AuditService` grows an optional read side — `query(AuditQuery)` and `facets()`.
590
+ Optional because a sink can legitimately be write-only: a queue producer that
591
+ hands events to another system has nothing to read back, and a reader that finds
592
+ these absent should say the trail is not readable here rather than that it is
593
+ empty. The two are very different answers to give someone auditing a system.
594
+
595
+ `KyselyAuditService` implements both, newest first with offset paging, filtered
596
+ by user, action and time window. Two things it now gets right that are easy to
597
+ get wrong: an empty filter array means "match nothing" rather than "no filter",
598
+ and results are read by physical _and_ camelCase key, because `CamelCasePlugin`
599
+ is on most pikku Kysely instances and renames result keys on the way out — the
600
+ mismatch does not throw, it returns a page of `undefined`. `init()` creates the
601
+ `audit` table for projects that do not migrate it themselves, from a new
602
+ exported `auditSchema` that stays out of `pikkuSchemas` because the runtime does
603
+ not need it.
604
+
605
+ The console addon exposes `console:getAudits` and `console:getAuditFilters`
606
+ behind a new `pikku:audit:read` scope, and forwards the application's `audit`
607
+ service into the addon's own services — without that last part every install
608
+ reported the trail as unreadable, whatever sink it had configured.
609
+
610
+ The console gets an Audit trail page: an infinite list filtered server-side by
611
+ user and action, and a row that opens the whole event, metadata rendered as a
612
+ JSON tree. Refused, unreadable and empty are three different screens, because
613
+ "you may not read this", "nobody can read this" and "nothing happened" are three
614
+ different facts.
615
+
616
+ Events name the person who caused them. The trail records a user id — the only
617
+ thing stable enough to record, since a name can change after the event — so
618
+ `getAudits` resolves those ids against better-auth's user directory at read
619
+ time, and the page shows the name while keeping the recorded id on the event.
620
+ The filter follows: pick a colleague by name, filter by the id. A scenario
621
+ actor is labelled as one, so synthetic traffic is not mistaken for real, and a
622
+ caller who was signed out shows the wire identity pikku resolved for them
623
+ rather than being credited to the system.
624
+
625
+ **Breaking, for anyone already reading `AuditEvent`:** `actor` is now
626
+ `userIdentity`, and its type `AuditActor` is `AuditUserIdentity`; `AuditQuery`
627
+ takes `userIds`/`orgId` in place of `actorUserIds`/`actorOrgId`, and
628
+ `AuditFacets` returns `userIds`. In pikku an _actor_ is a synthetic person a
629
+ scenario drives, flagged on the user row — so naming the causer of an event
630
+ `actor` made the synthetic case unsayable (`actor.actor === true`) and implied
631
+ every recorded action was a test. The overwhelming majority are ordinary
632
+ customers. The `audit` table follows: `actor_user_id` / `actor_org_id`
633
+ are now `user_id` / `org_id`, and a `pikku_user_id` column joins them so the
634
+ wire identity of a caller who never signed in survives the round trip — the
635
+ sink was dropping it, which left the console's Session field permanently
636
+ blank. A project that already migrated the table needs to rename the two
637
+ columns and add the third; `KyselyAuditService.init()` creates the new shape
638
+ for anyone who did not.
639
+
640
+ - 78b29f0: `SecretService` now returns a `SecretValue<T>` rather than the bare value, so a
641
+ vault secret cannot reach a sink by accident.
642
+
643
+ `SecretValue` is nominally typed, which means it is not assignable to `string`
644
+ (or to any other concretely-typed field). Every sink with a real type — a
645
+ database column, an email body, a session payload — rejects it with no lint
646
+ rule involved. The sinks typed `any`, `unknown`, or a free generic — the logger,
647
+ queue payloads, webhook and email inputs, and a function's own output — are
648
+ guarded with `Safe<T>`, which collapses a `SecretValue` found anywhere inside
649
+ `T`, however deeply nested, to `never`.
650
+
651
+ Unwrap deliberately at the point the secret reaches the wire:
652
+
653
+ ```ts
654
+ const secret = await secrets.getSecret('BETTER_AUTH_SECRET')
655
+ betterAuth({ secret: secret.reveal() })
656
+ ```
657
+
658
+ Two behaviours cover what types cannot see. Structured serialization redacts —
659
+ `JSON.stringify` and node's inspect both yield `[secret]`, so an audit or log
660
+ write stays honest without crashing the request. String coercion throws
661
+ `SecretCoercionError`, because a template literal is always a leak.
662
+
663
+ `AuditLog.write` is guarded the same way as the logger, since an audit event
664
+ carries `input` and `metadata` as `unknown` and nominality alone cannot stop a
665
+ secret landing in one.
666
+
667
+ `.reveal()` is the deliberate escape hatch, and what it hands back is an
668
+ ordinary string as far as every sink signature is concerned. **PKU953** closes
669
+ that gap: under `pikku all --security` the inspector reports a revealed secret
670
+ that flows into a logger, an audit, a queue, an email or a webhook — `console` included.
671
+
672
+ This also fixed a real one: `remote-addon-auth.ts` called `String(token)` on an
673
+ `unknown` and wrote the result straight into an `Authorization` header.
674
+
675
+ - Updated dependencies [62ea4cc]
676
+ - Updated dependencies [9dddff8]
677
+ - Updated dependencies [1065b80]
678
+ - Updated dependencies [78b29f0]
679
+ - @pikku/core@0.12.76
680
+ - @pikku/knowledge@0.12.4
681
+ - @pikku/better-auth@0.12.21
682
+
683
+ ## 0.12.37
684
+
685
+ ### Patch Changes
686
+
687
+ - dd19aa7: Drop `scopes` from sessionless functions, rename `selfAuthenticated`, and make both
688
+ escape hatches opt-in.
689
+
690
+ **`scopes` are gone from `pikkuSessionlessFunc`.** They are AND-ed and `verifyScopes`
691
+ fails closed on a session that does not exist, so every scope listed on a sessionless
692
+ function rejected the anonymous caller it exists to serve. `CorePikkuSessionlessFunctionConfig`
693
+ now states this once in core, and the generated `pikkuSessionlessFunc` / `pikkuVoidFunc`
694
+ configs derive from it — so the field is absent rather than subtracted.
695
+
696
+ `@pikku/addon-console`'s `installAddon` and `installOpenapiAddon` are now `pikkuFunc`.
697
+ Both set `auth: true` and `scopes: ['admin']`, and a test exercises that gate, so the
698
+ scopes were load-bearing — they only compiled as sessionless because the config accepted
699
+ a field it could not honour. No behaviour change: both already required a session.
700
+
701
+ **`selfAuthenticated` is now `permissionsInBody`.** It never described authentication:
702
+ what it records is that the permission check lives in the function body rather than in a
703
+ declared `permissions` entry.
704
+
705
+ **Both escape hatches must be opted into**, via a new `allow` block in
706
+ `pikku.config.json`:
707
+
708
+ ```json
709
+ "allow": { "permissionsInBody": true, "complexWorkflows": true }
710
+ ```
711
+
712
+ Unset means unavailable, and using the feature is a build error naming the flag that
713
+ would permit it — PKU576 for `permissionsInBody`, PKU643 for `pikkuWorkflowComplexFunc`.
714
+ Both trade something the tooling can inspect for something only a reader can verify: a
715
+ permission check buried in a body, or workflow steps that cannot be serialized into the
716
+ graph, replayed, or migrated. Both are occasionally right, and both are the path of least
717
+ resistance whenever the declarative form is merely inconvenient. Whoever owns the project
718
+ makes that call once, in writing, instead of every author making it silently at the call
719
+ site.
720
+
721
+ **PKU574's message no longer contradicts any of this.** Every function it reports is
722
+ sessionless — that is how the population is selected, not a finding — yet it opened by
723
+ reporting that they "require neither a session", then advised adding scopes. It now names
724
+ them as sessionless and recommends only gates an anonymous caller can meet:
725
+ `permissions`, `auth: true`, `wireAddon({ auth: true })`, or dropping `expose: true`.
726
+ `permissionsInBody` is deliberately absent from that list: a diagnostic should not
727
+ advertise its own escape hatch.
728
+
729
+ - Updated dependencies [32277d5]
730
+ - Updated dependencies [ea8aabf]
731
+ - Updated dependencies [33e96ab]
732
+ - Updated dependencies [fd72e58]
733
+ - Updated dependencies [fd72e58]
734
+ - Updated dependencies [fd72e58]
735
+ - Updated dependencies [894b2f8]
736
+ - Updated dependencies [dd19aa7]
737
+ - Updated dependencies [50ec500]
738
+ - @pikku/core@0.12.75
739
+
740
+ ## 0.12.36
741
+
742
+ ### Patch Changes
743
+
744
+ - afef587: Close eleven security weaknesses found in a review of `@pikku/core`. Most are
745
+ breaking, and two invalidate data or credentials already in the wild — read the
746
+ migration notes before upgrading.
747
+
748
+ **Breaking: AI agent thread ownership now fails closed.** Reading, listing,
749
+ resuming or approving an existing thread or run requires a resolved session
750
+ principal (`userId`, or `orgId` for `sessionScope: 'org'`), regardless of the
751
+ agent's `auth` setting. Previously a request without a session had no ownership
752
+ model at all: the caller-supplied `resourceId` was accepted as the ownership
753
+ key, so any caller could read or resume another party's thread by naming its
754
+ `resourceId`. Worse, `threadOwnerConstraint` returned `undefined` for a
755
+ sessionless caller, and `undefined` means _no filter_ rather than _no rows_ —
756
+ so `getAgentThreads` returned every thread in the deployment. It now returns
757
+ `string[]`, empty for a sessionless caller, which every storage backend already
758
+ treats as matching nothing. Sessionless agents still run one-shot conversations,
759
+ each with a fresh unguessable owner; what they lose is cross-request continuity.
760
+ Wire a session to restore it.
761
+
762
+ **Breaking: stored secrets and credentials must be re-entered.** `deriveKey` ran
763
+ a single unsalted round of SHA-256 over the passphrase and used the digest
764
+ directly as the AES-GCM key — roughly one hash per brute-force guess, with one
765
+ rainbow table working against every deployment. It is now PBKDF2-HMAC-SHA256 at
766
+ 600,000 iterations over a random salt. There is no compatibility path: every
767
+ value held by the kysely, mongodb and redis secret services and the kysely
768
+ credential service becomes undecryptable. They fail loud, naming the key and
769
+ `key_version`, so the app hard-fails on first secret read until each is re-set.
770
+
771
+ The KEK salt is scoped to the key version and stored alongside it, rather than
772
+ per secret, so a bulk read costs one derivation instead of N — `getSecrets` over
773
+ 50 secrets went from ~2.3s to ~48ms, and rotation from ~4.6s to ~94ms. This adds
774
+ a salt table (kysely), hash field (redis) or collection (mongodb), created
775
+ automatically on first use.
776
+
777
+ **Breaking: `PIKKU_REMOTE_SECRET` must be at least 32 characters.** The
778
+ remote-RPC session envelope moved from PBKDF2 to HKDF, which expands
779
+ high-entropy key material rather than stretching a low-entropy passphrase. That
780
+ took a remote hop from ~269ms to ~0.4ms — PBKDF2 was running twice per request —
781
+ but HKDF supplies no brute-force resistance, so the secret must carry the
782
+ entropy itself. A shorter secret now throws `WeakKeyMaterialError` at both ends.
783
+ Generate one with `openssl rand -base64 32` and roll it out to every service in
784
+ the mesh together: existing bearer tokens are format-incompatible, so a partial
785
+ rollout produces 401s until every instance is updated. The Cloudflare, Lambda
786
+ and Azure deployment services each hand-rolled a copy of `buildRemoteHeaders`
787
+ and now call the shared one, which is what keeps the two sides in step.
788
+
789
+ **Breaking: previously signed content URLs stop verifying.** `LocalContent`
790
+ signed only `{signedAt, expiresAt, notBefore}`, so a signature proved when a URL
791
+ was issued but never what it was issued for — any valid token was a skeleton
792
+ key, and swapping the pathname from a public thumbnail to a private document
793
+ still verified. The signature now binds the request path. Separately, the
794
+ verifier returned "valid" when no JWT service was wired, which is how
795
+ `pikku serve` ran: a forged `?signedAt=0&expiresAt=99999999999999` was accepted.
796
+ It now rejects with 403, `LocalContent` requires a `JWTService`, and
797
+ `pikku serve`/`pikku dev` mint an ephemeral per-process signing key so local
798
+ development works without shipping a fail-open path. In-flight signed URLs must
799
+ be re-issued.
800
+
801
+ **Request body size limits now apply to every adapter.** The `maxBodySize` cap
802
+ existed only in `PikkuFetchHTTPRequest`. The real hole was uWebSockets, which
803
+ drove `res.onData` itself and concatenated every chunk with no bound and nothing
804
+ downstream able to intervene; it now drops chunks past the limit and replies 413
805
+ before routing. Fastify delegates to its native `bodyLimit` (set only when
806
+ `maxBodySize` is configured, so fastify's stricter 1 MB default is never
807
+ loosened), and `PikkuExpressServer` feeds the limit into its body parsers. Two
808
+ paths can only reject rather than prevent, and are documented as such:
809
+ `express-middleware` mounted on your own app receives an already-parsed body, so
810
+ that deployment must bound its own parser; Next server actions bottom out at
811
+ `experimental.serverActions.bodySizeLimit`.
812
+
813
+ **Breaking: the console addon's privileged functions are gated by default.**
814
+ `wireAddon` gains a `scopes` option that applies to every function in the
815
+ addon's namespace, and the console scaffold now generates
816
+ `wireAddon({ name: 'console', package: '@pikku/addon-console', scopes: ['admin'] })`.
817
+ Previously the console's entire privileged surface — around 54 functions
818
+ including `credentialGet`, which returns a resolved OAuth token for an arbitrary
819
+ `userId`, `updateFunctionBody`, and `installAddon`, which shells out to a
820
+ package install — was protected only by an optional host-registered
821
+ `addGlobalPermission`. `resolveGlobalPermissions` returns `[]` when none is
822
+ registered and permission checking then no-ops, so an app that never registered
823
+ one served those functions to anyone, and with the template's default
824
+ `scaffold.rpc: "no-auth"` that meant unauthenticated. All of them now return 403
825
+ `MissingScopeError` without an `admin`, `admin:*` or `*` scope. **Regenerating
826
+ is required** — an app holding an old `console.gen.ts` stays open.
827
+ `installAddon` and `installOpenapiAddon` additionally declare their own
828
+ `auth: true, scopes: ['admin']`, and `getAgentThreads` now scopes its listing to
829
+ the session's own threads unless the caller holds admin.
830
+
831
+ Addon scopes are enforced in `runPikkuFunc` rather than at the RPC boundary,
832
+ because a wiring can reference an addon function directly — the inspector
833
+ records the addon's `packageName` on HTTP, channel, schedule, queue, CLI,
834
+ trigger, gateway and MCP wirings — and those paths never call `resolveNamespace`.
835
+ Enforcing at the RPC seam would have covered only the `namespace:function` form
836
+ while reading as complete.
837
+
838
+ **Breaking: `wireAddon`'s `auth` and `tags` now apply on direct wirings too.**
839
+ Both were read only by `resolveAddonFunction`, so they had exactly the hole
840
+ scopes had: `wireAddon({ name: 'console', package: '@pikku/addon-console', auth:
841
+ true, tags: ['admin'] })` gated `rpc('console:credentialGet')` and gated nothing
842
+ at all on an HTTP route wired straight to `credentialGet`. A consumer who
843
+ reached for the documented way to lock an addon down got a control that was
844
+ silently inert on every wiring except one. Both now resolve in `runPikkuFunc`.
845
+ `auth` merges as an OR — `auth: false` from an addon is ignored on a direct
846
+ wiring, because an addon may require a session the wiring did not but must never
847
+ waive one it did. Addon tags resolve to concrete middleware against the **root**
848
+ tag groups before the call rather than being folded into the function's
849
+ inherited middleware: `addTagMiddleware('admin', …)` is written by the consuming
850
+ app and registers under the root package, whereas `combineMiddleware` would look
851
+ the tag up under the addon's own `packageName`, where it does not exist.
852
+
853
+ One consequence worth naming: an addon that wires `auth: true` and also runs its
854
+ own sessionless internal work — a scheduled task or queue worker inside the
855
+ addon calling a sibling function — is now gated where it previously was not,
856
+ because a bare `rpc('fn')` from inside the addon reaches `runPikkuFunc` with the
857
+ addon's `packageName` like any other call. This reverses a decision that
858
+ deliberately scoped the gate to the namespaced boundary; that reasoning held
859
+ only while the boundary was real, and a direct wiring can enter an addon without
860
+ crossing it, so "already inside" is not something the runtime can infer. Such an
861
+ addon should carry authorization on the function via
862
+ `pikkuFunc({ permissions })`, which has always been enforced on every path. A
863
+ follow-up will add execution provenance so an intra-addon call can be
864
+ distinguished from an external one and skip the addon-level check; that needs a
865
+ marker no caller outside the process can set, which is its own design problem
866
+ and does not belong in a security fix.
867
+
868
+ **Codegen now warns when an exposed function has no gate (PKU574).** The
869
+ generated `POST /rpc/:rpcName` dispatcher forwards to `rpc.exposed`, which
870
+ refuses anything without `expose: true` — but nothing checked whether the
871
+ target was gated, because a dispatcher cannot know what it dispatches to. The
872
+ console shipped ~54 privileged functions through that gap and the toolchain was
873
+ silent. The inspector now reports every function that is exposed, sessionless,
874
+ and carries no `auth`, `scopes` or `permissions` of its own and none from a
875
+ governing `wireAddon`. It is a `warn`, not a critical: `expose: true` on an
876
+ ungated sessionless function is correct for a genuinely public endpoint, so it
877
+ blocks a build only under `--fail-on-warn`.
878
+
879
+ Two pieces of metadata were missing for this to be answerable statically, and
880
+ both are now recorded. A `pikkuSessionlessFunc`'s own `auth: true` was read at
881
+ runtime but never written to function meta, so a self-gated function was
882
+ indistinguishable from an ungated one — `sessionless` carries the baseline, and
883
+ `auth` now carries the tightening. And `wireAddon`'s `scopes`, `auth` and `tags`
884
+ were not parsed at all: the inspector recorded the addon's `rpcEndpoint` and its
885
+ secret, variable and credential overrides, and dropped every one of its gates.
886
+ An addon whose gates are not statically knowable is treated as gated, because a
887
+ false positive on a correctly-secured addon costs more than the one case it
888
+ would catch.
889
+
890
+ **Breaking: an application's global permissions now apply inside addons.**
891
+ `resolveGlobalPermissions` read only the bucket matching the function's own
892
+ package, but the generated `addGlobalPermission` wrapper takes no package
893
+ argument and always registers under the root. An app-wide rule like "every
894
+ request needs a signed-in user" therefore stopped at the addon boundary, and the
895
+ bucket an addon's functions did read was one no host could write to — which is
896
+ why the console addon's recommended `addGlobalPermission([isAdmin],
897
+ '@pikku/addon-console')` was never a gate anybody could actually install. A
898
+ function now resolves the root bucket and its own package's, root first.
899
+ Unioning is safe in a way nothing else here would be: globals AND, so adding the
900
+ root ones can only tighten. Package buckets stay one-way — a package's globals
901
+ never reach root functions, or an installed addon could gate the whole
902
+ application. Apps with both a root global and addon-provided functions will see
903
+ those functions gated where they previously were not.
904
+
905
+ **Codegen now records whether each HTTP route requires a session, and warns
906
+ about inert addon tags (PKU575).** Four separate things can demand a session —
907
+ the function's `sessionless`, its own `auth`, the route's (or its group's)
908
+ `auth`, and the addon it belongs to — and answering "which routes are open?"
909
+ meant joining all four by hand and knowing which wins. Each route's meta now
910
+ carries the resolved `requiresSession` alongside the route's own `auth`. Scopes
911
+ count as requiring one, since they are matched against the session's and fail
912
+ closed. Anything not statically knowable resolves to `true`, matching PKU574:
913
+ a route that looks stricter than it is costs less than one that looks open and
914
+ isn't. Separately, `wireAddon({ tags: ['admin'] })` reads like a gate and is
915
+ applied like one right up until no `addTagMiddleware('admin', …)` exists, at
916
+ which point it resolves to an empty list and gates nothing; that now warns.
917
+ Only addon tags are reported — a tag on a function is as likely to be
918
+ organizational, and warning about those would bury the case that matters.
919
+
920
+ **Object-shorthand permissions were missing from meta.** The inspector visited
921
+ `ts.PropertyAssignment` but not `ts.ShorthandPropertyAssignment`, so
922
+ `permissions: { canAdminOrg }` — enforced identically to the longhand form at
923
+ runtime, since `verifyPermissions` has a non-array branch — was recorded as _no
924
+ permissions at all_. That is the most dangerous direction for meta to be wrong
925
+ in: an audit reading it sees an open door where one is shut. It cost this review
926
+ a false IDOR report across ~35 billing and org functions before the source
927
+ contradicted the metadata.
928
+
929
+ **Functions that authorize in their own body can say so.** A webhook receiver
930
+ verifying a signature, or a handler redeeming a signed invite, is genuinely
931
+ closed while carrying no session, scope or permission — indistinguishable in
932
+ meta from one nobody remembered to gate, and so warned about forever by PKU574.
933
+ `selfAuthenticated: true` on the function config records the claim and silences
934
+ the warning for that function. It is declarative only: nothing at runtime reads
935
+ it and it grants nothing. Detection was rejected deliberately — inferring it
936
+ from the body means a function that _looks_ like it checks something silences
937
+ the warning while checking nothing, and a warning that is usually wrong stops
938
+ being read.
939
+
940
+ **Breaking: `scaffold.<feature>` is now `boolean | { auth?, path? }`, and `true`
941
+ means authenticated.** The old `'auth' | 'no-auth' | false` read like a
942
+ starter-file preference while being a live authorization decision, set three
943
+ directories from the functions it governed — the shape the console incident
944
+ took. A surface now becomes public only by writing `{ auth: false }`, so
945
+ omitting a field can never open anything: the failure mode of a forgotten flag
946
+ is a locked door. `{ path }` additionally overrides where the file is
947
+ generated, which previously could only be set for all features at once via
948
+ `pikkuDir`.
949
+
950
+ The legacy strings are **refused, not coerced**. `resolveScaffoldFeature` throws
951
+ naming the key and its replacement (`"rpc": "no-auth"` → `"rpc": { "auth":
952
+ false }`), and it does so at config load, not downstream. An earlier design used
953
+ a bare `string` for the output path, under which `"no-auth"` would have parsed
954
+ as a file named `no-auth` and every unmigrated config would have silently
955
+ produced nonsense; the object form makes any string invalid, so the failure is
956
+ loud.
957
+
958
+ The collapse is deliberately not uniform in effect. For `rpc` the flag was a
959
+ blanket "no anonymous RPC in this app" set on a dispatcher that cannot know what
960
+ it dispatches to; for `userAdmin` it was redundant, since the generated
961
+ functions are already `pikkuFunc` with `scopes: ['admin:users:list']`. But for
962
+ `agent`, `workflow`, `events` and `scenarios` it is the only gate — those
963
+ generate real endpoints the app never authors — so `true` keeps them
964
+ authenticated rather than opening them as a side effect of a config cleanup.
965
+ `webhook` and `remoteRpc` have no auth dimension at all (`serialize-remote-rpc.ts`
966
+ hardcodes `auth: false`), so an `{ auth }` on them is ignored. The three
967
+ configs in this repo are migrated preserving their current behaviour exactly.
968
+
969
+ **Queue job identities are signed.** A job carried the producer's `pikkuUserId`
970
+ as a plain string and the worker resolved a session from it with no
971
+ verification, so write access to the queue backend was act-as-any-user. The
972
+ identity is now `pq1.<claim>.<hmac>`, HMAC-SHA256 over the claim and the
973
+ canonicalized job payload, keyed by HKDF expansion of a new
974
+ `PIKKU_QUEUE_IDENTITY_SECRET`. Producers opt in by wrapping their queue service
975
+ with `SignedQueueService`. This fails safe rather than closed: with no secret
976
+ configured the identity is dropped and jobs still process, warning once per
977
+ process, so no existing deployment breaks on upgrade — it simply loses queue
978
+ identity until the secret is set. The payload rather than the job id is bound
979
+ because SQS, Cloudflare Queues, Azure and the in-memory service all mint ids
980
+ after `add` returns.
981
+
982
+ **Workflow inline state is read from the run record.** `isInline` consulted a
983
+ process-local `Map`, while `WorkflowRun.inline` is durable. Any instance that
984
+ did not start a run disagreed with the record, so one instance could dispatch a
985
+ queued job for a workflow another was already executing in-process. It is now
986
+ async and resolves through the durable identity, cached only when a context
987
+ already exists so a passive reader allocates nothing. The same `Map` also leaked:
988
+ `nextStepKey` fabricated replay state on every step, and `releaseContext`
989
+ refused to free anything carrying it, so runs whose steps executed outside a
990
+ `beginReplay` bracket — the step-worker queue path — stranded their context and
991
+ step state for the process lifetime. Contexts are now released by an explicit
992
+ execution counter. Step ordinals reset per execution rather than accumulating
993
+ across step-worker invocations in one process, which makes step naming
994
+ independent of how work was distributed.
995
+
996
+ **Secret reads fail loud in every store.** `MongoDBSecretService.getSecrets`
997
+ skipped rows that failed to decrypt, and the redis equivalent dropped every
998
+ rejection via `Promise.allSettled`, including the "No KEK available for
999
+ key_version N" configuration error. Both now throw, naming the key and its key
1000
+ version, matching the kysely behaviour. This matters most alongside the KEK
1001
+ change above: without it, an upgrade surfaces as a partial secrets map and an
1002
+ opaque downstream failure instead of an error naming the secret to re-enter.
1003
+
1004
+ **A second middleware registration for a pattern no longer erases the first.**
1005
+ `addHTTPMiddleware`, `addTagMiddleware` and `addChannelMiddleware` groups are
1006
+ keyed by pattern or tag and held one source file each, so a second file's call
1007
+ overwrote the first's. Codegen emits its imports from what is stored, so the
1008
+ losing file was never imported and its middleware never registered — the
1009
+ runtime composes repeated registrations for a pattern happily, and only codegen
1010
+ dropped one. Adding an unrelated `addHTTPMiddleware('*', …)` to an app was
1011
+ enough to silently unregister the generated better-auth session bridge, which
1012
+ fails open and gives no sign until a request arrives without a session. A group
1013
+ now carries every registration made for it, and all of them are imported.
1014
+
1015
+ - Updated dependencies [6a307f0]
1016
+ - Updated dependencies [afef587]
1017
+ - Updated dependencies [6a6675c]
1018
+ - Updated dependencies [8075f6a]
1019
+ - @pikku/core@0.12.74
1020
+ - @pikku/knowledge@0.12.3
1021
+
1022
+ ## 0.12.35
1023
+
1024
+ ### Patch Changes
1025
+
1026
+ - a7b26c5: rename the inspected declarations to `define*`: `wireScope` → `defineScope`, `wireSecret` → `defineSecret`, `wireVariable` → `defineVariable`, `wireCredential` → `defineCredential`
1027
+
1028
+ `wire*` meant two unrelated things. A transport wiring attaches a function to
1029
+ something that can invoke it — `wireHTTP`, `wireChannel`, `wireScheduler`,
1030
+ `wireQueueWorker` and the rest — and the thing it wires runs. These four wire
1031
+ nothing: they are no-ops that exist only so the call typechecks, they are
1032
+ tree-shaken out of the build, and their whole job is to be found by the
1033
+ inspector's AST pass and turned into a type union. One word for both left the
1034
+ declaration reading like a registration with a runtime.
1035
+
1036
+ So the vocabulary splits: **`wire*` is a transport, `define*` is an inspected
1037
+ declaration.**
1038
+
1039
+ ```ts
1040
+ import { defineScope } from '@pikku/core/scope'
1041
+ import { defineSecret } from '@pikku/core/secret'
1042
+ import { defineVariable } from '@pikku/core/variable'
1043
+ import { defineCredential } from '@pikku/core/credential'
1044
+
1045
+ defineScope({ admin: { scopes: { invoices: { scopes: { create: {} } } } } })
1046
+ ```
1047
+
1048
+ **Breaking:** no alias is kept. Rename the four call sites; the module subpaths
1049
+ (`@pikku/core/scope`, `/secret`, `/variable`) are unchanged.
1050
+
1051
+ The inspector matches these by identifier text, so a stale `wire*` call is not a
1052
+ type error — it is silently not extracted, and the generated union comes back
1053
+ empty. That fails as "this scope isn't declared" on code that was fine a moment
1054
+ ago, nowhere near the declaration. Grep for the old names rather than trusting a
1055
+ clean build.
1056
+
1057
+ An addon published with `.pikku` output generated before this release re-exports
1058
+ `wireSecret` from `@pikku/core/secret` and will not typecheck against this core
1059
+ until it is rebuilt and republished.
1060
+
1061
+ - 457cb25: Add `definePersonas()`: the people a project's scenarios and virtual users run
1062
+ as, declared in code.
1063
+
1064
+ There used to be three names for two-and-a-bit things — an _actor_ in
1065
+ `scenarios.actors`, a _persona_ in `scenarios.personas`, and a _virtual user_
1066
+ declared separately against an actor. In practice almost every actor was its own
1067
+ kind, so the second set carried no information and the third was a third place
1068
+ for a name to drift. There is now one declaration:
1069
+
1070
+ ```ts
1071
+ definePersonas({
1072
+ shopper: {
1073
+ name: 'Sam Shopper',
1074
+ jobTitle: 'Shopper',
1075
+ personality: 'Buys in a hurry and leaves tabs open',
1076
+ roles: ['customer'],
1077
+ disposition: 'careless',
1078
+ goals: ['Buy something without reading anything'],
1079
+ account: {},
1080
+ },
1081
+ })
1082
+ ```
1083
+
1084
+ A persona is a person: what they are like, what they want, the roles they hold,
1085
+ and **one** account they sign in with — `account: {}` plus `linkedAccounts` for
1086
+ the rare case of more, modelled on how better-auth does linking. A persona with a
1087
+ `disposition` is a virtual user; `runnable: false` marks someone who only ever
1088
+ exists to be acted upon — banned, shared with, reset — and is never handed a
1089
+ session.
1090
+
1091
+ **A persona names roles, never scopes.** Scopes come from `defineSystemRole()`
1092
+ expansion, so the build fails if a persona names a role nobody declared, and
1093
+ fails again if a role confers a scope no `defineScope` declares. Running one only
1094
+ ever has to check that its roles are still valid.
1095
+
1096
+ **Addresses are computed, never declared.** `personaEmail(id, domain, runId)`
1097
+ derives `<id>[+runId]@<domain>` from `scenarios.emailDomain`, so a seed, a
1098
+ scenario run and a virtual-user run cannot disagree about who they are signing in
1099
+ as. `scenarios.actors` and `scenarios.personas` are gone from
1100
+ `pikku.config.json` — only `emailDomain` remains.
1101
+
1102
+ `actor` survives in exactly one place: the name of a **slot in a scenario step**,
1103
+ which is the role a persona is cast in for that step. `pikkuVirtualUser()`,
1104
+ `kind`, `grants` and the `actor` field are removed; the `actors` service is now
1105
+ `personas`, and the CLI's `virtual-user` commands are now `pikku persona list` /
1106
+ `pikku persona run`. `budget` and `allowApprovalRequired` moved to run flags —
1107
+ how much you will spend today is not a fact about a person.
1108
+
1109
+ `@pikku/cucumber` drops its `Actor` class and `ActorDispatchContext`: a
1110
+ hand-rolled cookie jar that a persona's own typed session replaces outright.
1111
+
1112
+ - 0e0f6eb: Add virtual users: LLM-driven synthetic users that work a real stage in
1113
+ character.
1114
+
1115
+ A scenario proves a path somebody thought of. A virtual user works the same
1116
+ ground without the script — it signs in as a declared persona over the app's own
1117
+ auth, is handed the scenarios' BDD prose and the schema of every endpoint it may
1118
+ reach, and decides for itself what to do. It asserts nothing; a run produces
1119
+ findings, and their absence only ever means "not this time, not with this seed".
1120
+
1121
+ There is nothing extra to declare. A persona with a `disposition` is a virtual
1122
+ user, and running it is what makes it one — see the `definePersonas` changeset
1123
+ for the declaration itself. Listing, describing or running one never loads the
1124
+ app: the inspector reads the literal declaration, the CLI writes
1125
+ `scopes/pikku-personas-meta.gen.json`, and `MetaService.getPersonasMeta()`
1126
+ serves it.
1127
+
1128
+ **Dispositions are engine dials, not prose.** Each carries its own intent weights
1129
+ (continue / suspend / resume / abandon), temperature, re-read and repeat rates,
1130
+ and switches: `careless` puts things down and picks them up in the wrong order,
1131
+ `newcomer` starts with no memory, `auditor` is never offered a mutation,
1132
+ `adversarial` is shown the catalogue its roles do not cover — being offered a
1133
+ call it should not be able to make is the test — while those roles stay live as
1134
+ the oracle, so a success outside them is authorization drift rather than a pass.
1135
+
1136
+ **Nothing is retrieved against.** The whole reachable catalogue goes into the
1137
+ instructions (~8k tokens on a 430-RPC project, cached for the run), because a
1138
+ ranking function would make the user only as adventurous as the ranking and lose
1139
+ exactly the endpoints worth stumbling into. Schema first: an endpoint must be
1140
+ described before it may be called.
1141
+
1142
+ **No money in core.** The engine counts steps, calls, mutations and tokens; what
1143
+ they cost is the app's to decide through `stop(tally)`.
1144
+
1145
+ CLI: `pikku persona list` and `pikku persona run <environment> [name]`, with
1146
+ flags overriding a declaration for reproduction (`--seed`, `--steps`,
1147
+ `--disposition`). Spending is a run flag too — `--steps`, `--mutations` and
1148
+ `--duration` bound a run, because how much you will spend today is not a fact
1149
+ about a person. Console: a Virtual Users screen beside Scenarios, built out of
1150
+ core's own derivation functions so it shows a run's actual inputs rather than a
1151
+ second implementation of them.
1152
+
1153
+ `dev-ai-runner` now ships its own `@pikku/ai-vercel` and
1154
+ `@ai-sdk/openai-compatible` instead of requiring them from the project. Behind a
1155
+ proxy one openai-compatible provider answers for every prefix, so there was never
1156
+ a per-vendor package worth making somebody install; the project's copies still
1157
+ win when it has them, and both load from the same place or neither does.
1158
+
1159
+ - Updated dependencies [c984df6]
1160
+ - Updated dependencies [63ff32b]
1161
+ - Updated dependencies [ba6cc08]
1162
+ - Updated dependencies [d007191]
1163
+ - Updated dependencies [45859cf]
1164
+ - Updated dependencies [a7b26c5]
1165
+ - Updated dependencies [457cb25]
1166
+ - Updated dependencies [f7567ad]
1167
+ - Updated dependencies [ba6cc08]
1168
+ - Updated dependencies [a2e21e5]
1169
+ - Updated dependencies [457cb25]
1170
+ - Updated dependencies [86a50b9]
1171
+ - Updated dependencies [0e0f6eb]
1172
+ - @pikku/core@0.12.73
1173
+ - @pikku/better-auth@0.12.20
1174
+ - @pikku/knowledge@0.12.2
1175
+
1176
+ ## 0.12.34
1177
+
1178
+ ### Patch Changes
1179
+
1180
+ - b89d3b3: Bring the knowledge base into OSS: a package, a CLI gate, a console browser and a skill
1181
+
1182
+ `knowledge/` is where a project records the things `pikku meta` cannot tell you —
1183
+ what a slice is for, which rule was chosen and what it rules out, what is still an
1184
+ open question. Tables, routes, schemas and permissions are generated, so a note
1185
+ that repeats them is a copy that will drift, and the profile refuses the sections
1186
+ where that happens.
1187
+ - **`@pikku/knowledge`** (new) reads the notes, builds the link graph in both
1188
+ directions, and validates the app-project profile: every note typed, every
1189
+ section indexed, every slice carrying a third-person gherkin scenario and at
1190
+ most three entities, and every `resource:` URI resolving against the generated
1191
+ meta. The resource check fails closed on drift and open on ignorance — a prefix
1192
+ whose meta is absent is skipped rather than called dangling.
1193
+ - **`pikku knowledge validate`** and **`pikku knowledge index`** replace the dead
1194
+ three-flat-files check. Both exit non-zero on an inconsistent base, so a
1195
+ pipeline can stop on one; `index` refreshes each `index.md` listing while
1196
+ leaving the prose around it alone, and now gives a section that holds only
1197
+ sub-sections an index of its own instead of leaving it unreachable.
1198
+ - **The console** gains a read-only Knowledge page: notes grouped by section,
1199
+ a rendered document with its tags, resources, links in both directions and the
1200
+ findings against it, and intra-bundle markdown links that open the linked note
1201
+ instead of leaving the page. Read-only by design — a note is edited in the repo,
1202
+ in the same commit as the code it describes.
1203
+ - **The `pikku-knowledge` skill** documents the format for agents, and Fabric
1204
+ builds on it rather than restating it.
1205
+ - **`@pikku/inspector`**: a zod schema imported from a built workspace package
1206
+ resolved to that package's `.d.ts`, which has no runtime exports at all, so
1207
+ every schema in it was reported missing. The emitted JS beside it is imported
1208
+ instead.
1209
+
1210
+ - Updated dependencies [384e484]
1211
+ - Updated dependencies [b5a73fb]
1212
+ - Updated dependencies [6be5ab0]
1213
+ - Updated dependencies [b89d3b3]
1214
+ - @pikku/core@0.12.72
1215
+ - @pikku/knowledge@0.12.1
1216
+
1217
+ ## 0.12.33
1218
+
1219
+ ### Patch Changes
1220
+
1221
+ - 4c59a92: `db/pikku-db-schema.gen.json` now records who declared each table. Every entry carries a `source` — `app`, `better-auth`, `pikku-runtime`, or an addon's package name — and framework-declared tables also carry the `origin` prose from their migration header.
1222
+
1223
+ The console's Database view filters on that instead of guessing from a table-name prefix. The old guess (`workflow_`, `ai_`, `pikku_`) missed Better Auth's `user`, `session`, `account` and `verification`, the secrets, credentials, channel and webhook-delivery tables, and every addon's, all of which rendered as if the project owned them. A schema JSON generated before this change still falls back to the prefix guess, so an un-regenerated project sees no behaviour change.
1224
+
1225
+ Provenance is read back out of the generated migrations at codegen time — each one already names its source in its filename and its origin in its header — so `db migrate` needs no new inputs and does not have to load the project's Better Auth config.
1226
+
1227
+ - 637e668: State every package's license in the package itself.
1228
+
1229
+ Eight publishable packages had no `license` field, `@pikku/aws-services` said `UNLICENSED` by accident, and no package carried a LICENSE file at all — the grant lived only in the repo root, which npm tarballs never include. Every publishable package now declares its license and ships the matching LICENSE file, and `yarn check:licenses` fails the release if the two ever disagree.
1230
+
1231
+ `@pikku/console` is now explicitly BUSL-1.1 and named in the root LICENSE's Licensed Work alongside `@pikku/cli` and `@pikku/inspector`; the Additional Use Grant still permits production use for any purpose, including in free and open source software. Everything else — runtimes, services, clients, deploy adapters and the agent skills — is MIT, as the root LICENSE already said.
1232
+
1233
+ - a261006: **Breaking:** removed dynamic workflows — runtime-defined workflow graphs stored in the database and resolved by name instead of by codegen.
1234
+
1235
+ The feature was already half-gone. Its authoring surface (`createAgentWorkflow`, `saveAgentWorkflow`, `listAgentWorkflows`, `executeAgentWorkflow`, and the AI-agent instruction builder) was deleted in April 2026 along with its entire e2e suite, and nothing has written a dynamic workflow since. What remained could not execute one either: `executeAgentWorkflow` gated on `pikkuState('workflows', 'meta')`, which only codegen ever populates, so a graph that existed solely in the database was never findable. The two backend families had also drifted onto different `source` sentinels (`'ai-agent'` vs `'dynamic-workflow'`), and the two Redis implementations disagreed on key escaping — so at least one of them matched nothing. Rather than keep shipping plumbing for a path no caller could complete, it is removed until it can be reintroduced deliberately.
1236
+
1237
+ Removed:
1238
+ - `getAIGeneratedWorkflows` from `WorkflowService` and `WorkflowRunService`, and from every backend (in-memory, Redis, MongoDB, Kysely, and the Cloudflare Durable Object service and client — the last two were already a `return []` stub and a rejection).
1239
+ - The database-lookup fallbacks in `startWorkflow` and `runWorkflowJob` that resolved a workflow name against stored graphs when static meta had no match.
1240
+ - `'dynamic-workflow'` from the `WorkflowRuntimeMeta['source']` union.
1241
+ - `validateWorkflowWiring` and `computeEntryNodeIds` from `@pikku/core/workflow`. These validated AI-authored graphs and had no callers in core; the inspector keeps its own private entry-node computation for static graph wiring, which is unaffected.
1242
+ - The `workflow-created` AI stream event and its AG-UI `pikku:workflow-created` custom event. Its only emitter went with the April deletion, so it could never fire.
1243
+ - The console's `console:getAIWorkflows` RPC, the `useAIWorkflows` hook, the "Dynamic" workflow filter and badge, and the trigger-schema scraper that derived an input form from a stored graph's `$ref` bindings.
1244
+
1245
+ Kept, because static graph workflows depend on them and this is not a change to versioning:
1246
+ - `upsertWorkflowVersion`, `getWorkflowVersion`, `updateWorkflowVersionStatus`, and the `workflowVersions` storage in every backend. These back version-mismatch replay: when a deployed graph's hash changes, in-flight runs continue against the exact graph they started on. No schema migration is needed — the table, its columns, and its `(workflowName, graphHash)` upsert key are unchanged.
1247
+ - `generateMermaidDiagram`, which renders any workflow graph and is not specific to dynamic ones.
1248
+
1249
+ Static `pikkuWorkflowGraph` and DSL workflows are entirely unaffected: they resolve from codegen'd meta, which was always the only path that worked.
1250
+
1251
+ To revive this post-MVP, the deleted authoring code is recoverable in full — its prompt engineering (a compact tool table upfront, full schemas with flattened dotted output paths returned only after a validation failure) is worth reading before rewriting:
1252
+
1253
+ ```
1254
+ git show f52f3308b^:packages/core/src/wirings/ai-agent/agent-dynamic-workflow.ts
1255
+ git show f52f3308b^:packages/core/src/wirings/workflow/graph/graph-validation.ts
1256
+ git show f52f3308b --stat # the April removal, incl. the three e2e feature files
1257
+ ```
1258
+
1259
+ Note that reviving it needs more than restoring those files: the queued-step path (`executeWorkflowStep`), `onError` compensation, and sub-workflow resolution all read static meta only and would need a fallback for a graph that exists solely in the database.
1260
+
1261
+ - Updated dependencies [8a2c993]
1262
+ - Updated dependencies [a261006]
1263
+ - Updated dependencies [09973b9]
1264
+ - @pikku/core@0.12.71
1265
+
1266
+ ## 0.12.32
1267
+
1268
+ ### Patch Changes
1269
+
1270
+ - a436645: Redesign the console's scenarios screen as living documentation of a project's BDD features.
1271
+
1272
+ The inspector now statically extracts `pikkuFeature` declarations — name, description, tags, the scenarios each one groups (including `{ scenario, data }` examples), and whether it declares `before`/`after` — and the CLI writes them to `<outDir>/scenarios/features.gen.json`, which `MetaService.getFeaturesMeta()` reads and the console addon returns from `getAllMeta`.
1273
+
1274
+ The scenarios page reads that back as a document: features on the left, and on the right the selected feature's scenarios, each rendered as the given/when/then ladder of prose its author actually wrote, with repeats shown as `for each x in xs`, `Examples:` tables for parameterised entries, skip reasons stated rather than hidden, and each scenario's cast of personas inline. The Flows/Personas segmented control is gone; tags filter the document the same way `pikku scenario run --tags` filters a run.
1275
+
1276
+ - Updated dependencies [539ee0b]
1277
+ - Updated dependencies [a1a6816]
1278
+ - Updated dependencies [dc3e11e]
1279
+ - Updated dependencies [24da616]
1280
+ - Updated dependencies [04bfe3f]
1281
+ - Updated dependencies [5962e51]
1282
+ - Updated dependencies [5962e51]
1283
+ - Updated dependencies [cd6453c]
1284
+ - Updated dependencies [a436645]
1285
+ - Updated dependencies [46cf63e]
1286
+ - Updated dependencies [9e666bc]
1287
+ - Updated dependencies [1c841d8]
1288
+ - Updated dependencies [47478a4]
1289
+ - Updated dependencies [9e666bc]
1290
+ - Updated dependencies [5962e51]
1291
+ - Updated dependencies [5962e51]
1292
+ - Updated dependencies [61b9bf8]
1293
+ - @pikku/core@0.12.70
1294
+
1295
+ ## 0.12.31
1296
+
1297
+ ### Patch Changes
1298
+
1299
+ - 9a9ed6f: Detect the project's package manager instead of defaulting to yarn when installing an addon
1300
+
1301
+ ## 0.12.30
1302
+
1303
+ ### Patch Changes
1304
+
1305
+ - 118646d: Page the addon and API catalogues instead of loading them whole.
1306
+
1307
+ The APIs tab fetched a fixed first 100 entries out of ~2,500 and never fetched
1308
+ more, so most of the catalogue was unreachable and its search box only ever
1309
+ searched those 100. Both galleries now use infinite queries, pulling the next
1310
+ page as the grid scrolls.
1311
+
1312
+ Because a paged list can only be filtered honestly by the server, search,
1313
+ category, sort and the All/Official/Installed filter all moved to the registry,
1314
+ and the category rail's counts now come from a catalogue-wide facet call rather
1315
+ than being derived from the loaded rows.
1316
+
1317
+ **Breaking (`@pikku/addon-console`):** `getAddonMeta` took no input and returned
1318
+ `AddonMeta[]`. It now takes `{ cursor?, limit?, search?, category?, sort?,
1319
+ official?, names? }` and returns `{ packages, total, nextCursor }`. Callers that
1320
+ want the whole catalogue should walk `nextCursor` — the `useAddonMeta` hook in
1321
+ `@pikku/console` does this and still returns a flat array.
1322
+
1323
+ Adds `getAddonCategories` and `getOpenapiCategories`, and `category` to
1324
+ `getOpenapis`.
1325
+
1326
+ - Updated dependencies [f11675f]
1327
+ - @pikku/core@0.12.68
1328
+
1329
+ ## 0.12.29
1330
+
1331
+ ### Patch Changes
1332
+
1333
+ - ae4f59a: Gate admin capabilities on scopes, and scaffold user management
1334
+
1335
+ Admin capabilities were gated on `user.role === 'admin'` — a single text column
1336
+ meaning "can do everything". Impersonating a user, rebinding a shared
1337
+ credential and reading the user directory are distinct capabilities that one
1338
+ user can hold independently, so they are now scopes on an `admin` tree:
1339
+
1340
+ | Gate | Scope |
1341
+ | -------------------------------------- | ------------------------ |
1342
+ | impersonation | `admin:impersonate` |
1343
+ | `credentialOAuth`'s `canLinkSingleton` | `admin:credentials:link` |
1344
+ | reading the user directory | `admin:users:list` |
1345
+ | creating a user out of band | `admin:users:create` |
1346
+ | ban / unban | `admin:users:ban` |
1347
+ | delete a user | `admin:users:remove` |
1348
+ | revoke a user's sessions | `admin:users:sessions` |
1349
+ | set a user's password | `admin:users:password` |
1350
+
1351
+ Holding the bare `admin` scope satisfies all of them via pikku's existing
1352
+ parent-grant rule, so it is a one-for-one replacement for the old role.
1353
+
1354
+ better-auth's `admin()` plugin is still what implements ban, delete,
1355
+ session-revocation and set-password, so it stays. Its `user.role` column is no
1356
+ longer something pikku grants: it is _projected_ from the scope store when a
1357
+ session is built, and only from the scopes whose capability better-auth's own
1358
+ endpoints gate on the caller's role. Someone granted `admin:users:list` can read
1359
+ the directory — which goes straight to the auth adapter — without gaining the
1360
+ power to ban, and revoking a scope demotes the role on the next sign-in. Scopes
1361
+ remain the single source of truth.
1362
+
1363
+ New `scaffold.userAdmin` in `pikku.config.json` generates the whole set —
1364
+ `pikkuAdminListUsers`, `pikkuAdminCreateUser`, `pikkuAdminSetUserBanned`,
1365
+ `pikkuAdminRemoveUser`, `pikkuAdminRevokeUserSessions` and
1366
+ `pikkuAdminSetUserPassword` — into your project. Listing or banning a user is
1367
+ ordinary application behaviour and must not require installing the console.
1368
+ Codegen fails with an actionable error if better-auth is wired without
1369
+ `admin()`. The console's Users page calls these same functions, showing each
1370
+ action only where the caller holds its scope.
1371
+
1372
+ Every scaffold now emits a directory named for its domain — `scaffold/admin/`,
1373
+ `scaffold/rpc/`, `scaffold/agent/`, `scaffold/auth/`, `scaffold/console/`,
1374
+ `scaffold/graph/`, `scaffold/realtime/`, `scaffold/scenarios/`,
1375
+ `scaffold/webhook/`, `scaffold/workflow/` — holding its wiring file beside a
1376
+ `*.schemas.gen.ts` sibling, and every generated payload is a zod schema instead
1377
+ of a TypeScript generic. The schemas have to stand alone: the inspector reads a
1378
+ zod schema by importing the module that declares it, which it cannot do for a
1379
+ wiring file whose relative pikku-types import per-unit deploy codegen rewrites.
1380
+
1381
+ Resolving a schema by reference rather than by name also fixes the agent HTTP
1382
+ surface. `agentCaller` and `agentStreamCaller` take the same payload but had to
1383
+ repeat the type literal verbatim in each generic position, because the extractor
1384
+ synthesised the schema name from the _function_ name and so recorded an
1385
+ `inputSchemaName` with no schema behind it whenever the two shared a named
1386
+ alias — every agent call through that alias failed with `MissingSchemaError`.
1387
+ One `AgentCall` schema now backs both.
1388
+
1389
+ Where a payload's shape belongs to `@pikku/core` (`WorkflowRunStatus`,
1390
+ `FunctionCoverageReport`, `StubCall[]`) the generated function carries no
1391
+ `output` schema and the inspector infers it from the handler's return type;
1392
+ re-declaring a core type in zod would be a second definition free to drift.
1393
+
1394
+ Upgrading rewrites the layout in place: codegen prunes the pre-directory copy of
1395
+ each scaffold file before it inspects the source tree, since the old flat file
1396
+ still wires the same routes and leaving it behind would wire everything twice.
1397
+
1398
+ `@pikku/core` gains `hasScopes(required, held)`, the non-throwing counterpart to
1399
+ `verifyScopes`, and declares `auth` on `CoreSingletonServices` — the auth
1400
+ instance the generated `pikkuServices` wrapper already injected but never typed.
1401
+ A scope root declared twice (an addon and its host both contributing the same
1402
+ `admin` tree) now flattens to one entry per id instead of emitting it twice.
1403
+
1404
+ BREAKING: there is no role fallback for the scope-gated capabilities. An app
1405
+ that relied on the old default must register a `ScopeService` and grant `admin`
1406
+ (or a narrower `admin:*` scope). Every gate fails closed and warns when no
1407
+ `ScopeService` is registered. `delegatedAuth`'s `defaultRole`/`mapRole` now
1408
+ grant a pikku role through the `ScopeService` instead of writing better-auth's
1409
+ `role` column, and the `credentialOAuth` platform user no longer sets `banned`.
1410
+
1411
+ BREAKING: the console reads its user directory over the scaffolded
1412
+ `pikkuAdminListUsers` RPC (gated on `admin:users:list`, backed by better-auth's
1413
+ `$context.adapter`) instead of `client.admin.listUsers`, and
1414
+ `UsersTableUser`/`UsersTableLabels` no longer carry `role` — there is no role
1415
+ column to render. `@pikku/addon-console` no longer ships a `console:listUsers`
1416
+ function: user management is not the console's job, so a host that wants the
1417
+ Users page must enable `scaffold.userAdmin`.
1418
+
1419
+ - Updated dependencies [ae4f59a]
1420
+ - @pikku/better-auth@0.12.19
1421
+ - @pikku/core@0.12.67
1422
+
1423
+ ## 0.12.28
1424
+
1425
+ ### Patch Changes
1426
+
1427
+ - df54b6f: Drop dead service-existence guards from the console addon functions.
1428
+
1429
+ All 27 `if (!service) throw new MissingServiceError(...)` guards are removed.
1430
+ A service is optional only when nothing destructures it — in which case it is
1431
+ never created — so a guard inside a function that _does_ destructure it can
1432
+ never fire. Now that wired functions receive `WiredServices`, these are dead
1433
+ code and the compiler agrees: the addon typechecks with the guards gone.
1434
+
1435
+ Two function descriptions that documented the unreachable `MissingServiceError`
1436
+ are corrected.
1437
+
1438
+ - Updated dependencies [5f19016]
1439
+ - Updated dependencies [78e4778]
1440
+ - Updated dependencies [4324652]
1441
+ - Updated dependencies [de044f8]
1442
+ - Updated dependencies [cd1a811]
1443
+ - Updated dependencies [19fa6f0]
1444
+ - Updated dependencies [b501612]
1445
+ - Updated dependencies [eb37b1e]
1446
+ - @pikku/core@0.12.66
1447
+
1448
+ ## 0.12.27
1449
+
1450
+ ### Patch Changes
1451
+
1452
+ - 1dd7928: Route `getOpenapis`/`getOpenapiDetail` through `AddonService` and the fabric registry's `/registry/openapis` endpoints (unifying with the package funcs on `FABRIC_API_URL`), instead of the divergent `REGISTRY_URL`/`/api/openapis` path.
1453
+ - e3dc7d7: When installing a second-or-later instance of the same addon package, the console now writes namespace-scoped `secretOverrides`/`variableOverrides`/`credentialOverrides` into the generated `wireAddon` so the two instances don't silently share one credential. The first (sole) instance stays plain and keeps the package's documented logical names. Overrides are a sensible default only — the generated file is the user's to edit or drop (the runtime and inspector both fall back to the logical name when an override is absent).
1454
+ - 78f0b8c: The addon Setup tab is now instance-aware. A new `getAddonInstances` RPC returns every wired instance of a package with its per-instance overrides, and when a package is installed more than once the Setup tab shows an instance selector. The selected instance's `credentialOverrides`/`secretOverrides` are resolved so the OAuth connect and secret status/set actions target that instance's actual project names (and the resolved names are shown), instead of always acting on the package's shared logical names.
1455
+ - 13474a6: feat(scopes): grant scopes directly to a user, not only through roles
1456
+
1457
+ A scope can now be granted to a user directly, outside of any role.
1458
+ `resolveScopes` returns the union of a user's role-derived scopes and their
1459
+ direct grants, so a one-off capability no longer requires inventing a role.
1460
+ - `@pikku/core`: `ScopeService` gains `addScopeToUser` / `removeScopeFromUser` /
1461
+ `listUserScopes`.
1462
+ - `@pikku/kysely`: a new `pikku_user_scope` table (FK into `pikku_scopes`, so the
1463
+ database still refuses an undeclared grant; `ON DELETE CASCADE` from `user`,
1464
+ so deleting a user takes their direct grants with it). `resolveScopes` unions
1465
+ it with the role join.
1466
+ - `@pikku/addon-console`: `scopeAddScopeToUser` / `scopeRemoveScopeFromUser`
1467
+ (gated by `pikku:scopes:manage`), and `scopeListUserRoles` now also returns
1468
+ `directScopes`.
1469
+ - `@pikku/console`: a **Direct scopes** section in the user roles drawer to grant
1470
+ and revoke scopes directly, showing them distinctly from the resolved union.
1471
+
1472
+ Also: the Scopes page now distinguishes a permission error (a console admin
1473
+ without `pikku:scopes:read`) from an actual scope-service outage, instead of
1474
+ showing "the scope service may be unavailable" for both.
1475
+
1476
+ - 13474a6: feat: role and scope management functions
1477
+
1478
+ Adds functions over `ScopeService` for listing the declared scope vocabulary,
1479
+ composing roles from it, and granting roles to users. Grants take effect on the
1480
+ user's next request — no re-login.
1481
+
1482
+ These are self-hosting: the console declares its own `pikku:scopes:read` and
1483
+ `pikku:scopes:manage` scopes and requires them, so being able to reach the
1484
+ console is not the same as being able to grant yourself anything.
1485
+
1486
+ The addon's `createSingletonServices` now forwards the host's `scopeService`
1487
+ through to these functions — without it the addon composed a services object
1488
+ that dropped `scopeService`, so every scope RPC silently returned an empty
1489
+ result behind a passing scope gate.
1490
+
1491
+ - 4a624cc: Installing an addon now returns typed errors instead of a raw 500. Re-installing
1492
+ under a name that's already wired raises a `ConflictError` (409) with a clean,
1493
+ path-free message ("An addon is already installed under the name ..."), and
1494
+ invalid package/namespace/version inputs raise `BadRequestError` (400) — so the
1495
+ console surfaces them inline as user-facing errors rather than a server stack
1496
+ trace.
1497
+ - 70fa400: Add outgoing webhooks — `webhookService.send()` enqueues signed deliveries onto a retrying queue, `@pikku/kysely`'s `KyselyWebhookService` persists per-attempt delivery history, and `@pikku/console` gains a read-only `/webhooks` page; also caches resolved secrets in `TypedSecretService` and registers inline-`func` metadata for queue/scheduler/trigger/gateway wirings.
1498
+ - 3c75366: Key `secretOverrides`/`variableOverrides` on the secretId/variableId (the string the addon actually reads by — its typed map is keyed by id, e.g. `getSecret('MAILGUN_CREDENTIALS')`), not the logical meta name. The runtime aliaser already keys on the id, but the inspector merge + validation keyed on the logical name, so a correctly-keyed override failed validation and never provisioned its target whenever an addon's logical name differed from its id (the common case — `mailgun`/`MAILGUN_CREDENTIALS`). The existing test masked it by using a secret whose name equalled its id. The merge now resolves and provisions by id (with a name-fallback for older meta), validation checks ids, and the console install codegen generates overrides keyed by id.
1499
+ - 1dc77d5: Remove the old, pre-better-auth OAuth2 credential runtime now that the
1500
+ `credentialOAuth` plugin owns credential linking, storage and refresh.
1501
+ - `@pikku/core`: drop the unused `createOAuth2Handler` HTTP-routes flow (and its
1502
+ `CreateOAuth2HandlerOptions`) from the `./oauth2` entrypoint. The credential
1503
+ schema types (`OAuth2AppCredential`, `OAuth2Token`) and the `OAuth2Client`
1504
+ API helper remain exported.
1505
+ - `@pikku/addon-console`: delete the six `oauth-*` console functions
1506
+ (connect/disconnect/status/exchange-tokens/refresh-token/test-token) and the
1507
+ `OAuthService` behind them — credential connections now flow through
1508
+ better-auth's `/credential-oauth/link` + `/callback`.
1509
+ - `@pikku/console`: the credential UI no longer calls the removed
1510
+ `console:oauth*` RPCs. Per-user and singleton (platform) OAuth2 credentials
1511
+ connect via the `/credential-oauth/link` full-page redirect and disconnect via
1512
+ `console:credentialDelete`; the `/oauth/callback` popup page is removed.
1513
+
1514
+ - Updated dependencies [7ab5287]
1515
+ - Updated dependencies [e86bc17]
1516
+ - Updated dependencies [a9b96a0]
1517
+ - Updated dependencies [3f7fc54]
1518
+ - Updated dependencies [c478794]
1519
+ - Updated dependencies [3f04ae4]
1520
+ - Updated dependencies [90d9f04]
1521
+ - Updated dependencies [cb079cc]
1522
+ - Updated dependencies [cb079cc]
1523
+ - Updated dependencies [0a7db82]
1524
+ - Updated dependencies [981c4db]
1525
+ - Updated dependencies [13474a6]
1526
+ - Updated dependencies [5a2b0d5]
1527
+ - Updated dependencies [13474a6]
1528
+ - Updated dependencies [ee040dc]
1529
+ - Updated dependencies [cb079cc]
1530
+ - Updated dependencies [13474a6]
1531
+ - Updated dependencies [9f0d0eb]
1532
+ - Updated dependencies [13474a6]
1533
+ - Updated dependencies [70fa400]
1534
+ - Updated dependencies [7b2ea23]
1535
+ - Updated dependencies [1dc77d5]
1536
+ - Updated dependencies [416606c]
1537
+ - Updated dependencies [d2a6eea]
1538
+ - Updated dependencies [30e62ee]
1539
+ - @pikku/core@0.12.64
1540
+
1541
+ ## 0.12.26
1542
+
1543
+ ### Patch Changes
1544
+
1545
+ - cd0cff1: Remove the `pikku tests` harness in favour of scenarios (`pikku scenario run` + `pikku dev --coverage`).
1546
+ - `@pikku/cli`: `pikku tests init` / `pikku tests coverage` are gone, along with the workspace-validate hints that suggested scaffolding the ftest harness.
1547
+ - `@pikku/cucumber`: refactored to e2e-only — keeps `Actor`, the browser world, `createDbUtils`, `PersonaData`, and the `StubTracker` re-export; the in-process function world (`createFunctionWorld`, `registerHooks`, `registerCommonSteps`, stub wires) is removed.
1548
+ - `@pikku/console`: the Tests page is removed; Scenarios moves to `/scenarios`.
1549
+ - `@pikku/addon-console`: `runFunctionTests` / `streamFunctionTests` / `getFunctionCoverage` RPCs are removed — live coverage via `takeLiveCoverage` / `resetLiveCoverage` (from `pikku dev --coverage`) replaces the file-based report.
1550
+
1551
+ - ded4f90: `pikku scenario --coverage` no longer requires the console addon
1552
+
1553
+ The scenario instrumentation RPCs (take/reset live coverage, reset stubs, get
1554
+ stub calls) previously shipped inside the console addon, so any project
1555
+ without the addon silently lost scenario coverage and stub assertions — and
1556
+ core's `expectService` hardcoded a `console:` RPC, assuming an addon was
1557
+ installed.
1558
+
1559
+ A new `scaffold.scenarios` feature (`pikku enable scenarios`, or
1560
+ `"scaffold": { "scenarios": "auth" }` in pikku.config.json) generates the
1561
+ four functions into the project scaffold as `pikkuScenario*` exposed RPCs.
1562
+ The scenario runner and `expectService` now invoke those names and the
1563
+ addon copies were removed. The source-map-aware coverage mapping (and its
1564
+ `@jridgewell/trace-mapping` dependency) moved from the addon into the CLI:
1565
+ `@pikku/core` gains only the report types plus an optional
1566
+ `CoverageService.takeReport`, which the CLI-booted coverage service
1567
+ implements and the scaffolded function calls.
1568
+
1569
+ - Updated dependencies [ded4f90]
1570
+ - @pikku/core@0.12.54
1571
+
1572
+ ## 0.12.25
1573
+
1574
+ ### Patch Changes
1575
+
1576
+ - efb0406: Add in-process V8 precise coverage (`pikku dev --coverage` / `pikku serve --coverage`) with per-scenario attribution.
1577
+ - `@pikku/core`: new `V8CoverageService` (node:inspector precise coverage with snapshot + reset), exposed as the optional `coverageService` singleton service.
1578
+ - `@pikku/inspector`: function meta now records `bodyStart`/`bodyEnd` body spans (verbose meta only) so coverage can be mapped without a runtime TypeScript dependency.
1579
+ - `@pikku/cli`: `--coverage` on `pikku dev` and `pikku serve` starts the collector in-process; `pikku scenario run --coverage` resets/snapshots the server between flows and writes `.pikku/coverage/scenario-coverage.json` with per-scenario function coverage.
1580
+ - `@pikku/addon-console`: new exposed `takeLiveCoverage` / `resetLiveCoverage` RPCs; V8 ranges are mapped through inline source maps to original TypeScript lines (offset-based, so esbuild/tsx single-line output keeps full resolution).
1581
+
1582
+ - fe4f5ca: Add `stub`/`spy`/`isTestRun` core utils with call recording for scenario assertions.
1583
+ - `@pikku/core`: `StubTracker` moves here from `@pikku/cucumber` (which re-exports it), gaining `record`/`getCalls`/`reset`. New plain-import utils backed by a process-wide tracker: `stub(name, impl?)` (recording fake), `spy(name, real)` (record + pass through), `isTestRun()` (reads `PIKKU_TEST_RUN`). Nothing is injected into service factories and no new factory types exist — swap services with a plain `isTestRun()` conditional where needed. New scenario DSL steps: `workflow.expectService('email.send', { calledWith })` asserts recorded stub calls via the console RPC, `workflow.expectError(...)` walks error branches.
1584
+ - `@pikku/cli`: `pikku dev --test` sets `PIKKU_TEST_RUN` and wraps the dev-provided default services (email) in recording spies; independent of `--coverage`, absent from production `pikku serve`. `pikku scenario run` resets recorded calls per flow.
1585
+ - `@pikku/addon-console`: exposed `getStubCalls` / `resetStubs` RPCs next to the coverage snapshot endpoints.
1586
+
1587
+ - Updated dependencies [efb0406]
1588
+ - Updated dependencies [fe4f5ca]
1589
+ - @pikku/core@0.12.53
1590
+
1591
+ ## 0.12.24
1592
+
1593
+ ### Patch Changes
1594
+
1595
+ - 472a349: Rename the userflow concept to scenario (#862). `pikkuUserFlow` becomes `pikkuScenario`, `pikku userflow run/list` becomes `pikku scenario run/list`, the workflow meta flag `userFlow` becomes `scenario`, actor types are now `ScenarioActor`/`ScenarioActors`/`ScenarioActorConfig` (`createHttpScenarioActors`), pikku.config.json's `userFlows` key becomes `scenarios`, the generated actors file is `pikku-scenario-actors.gen.ts` (`createScenarioActors`), the actor sign-in secret env var is `SCENARIO_ACTOR_SECRET`, and the console's User Flows view is now Scenarios.
1596
+ - Updated dependencies [61c9ce9]
1597
+ - Updated dependencies [f1f39f8]
1598
+ - Updated dependencies [c45e98d]
1599
+ - Updated dependencies [472a349]
1600
+ - @pikku/core@0.12.52
1601
+
1602
+ ## 0.12.23
1603
+
1604
+ ### Patch Changes
1605
+
1606
+ - b919815: Fix "pikku.config.json not found" on installAddon/installOpenapiAddon (and a matching bug in createSingletonServices' projectRoot for StateDiffService/CodeEditService) in monorepo layouts. These derived the project root as `dirname(metaService.basePath)`, which is only correct when `.pikku` sits directly next to pikku.config.json. In Fabric sandboxes (basePath is `packages/functions/.pikku`), that resolved to `packages/functions` instead of the real root, so pikku.config.json was never found. A new findProjectRoot() walks up from basePath looking for pikku.config.json, matching the CLI's own findConfigFile() behavior.
1607
+ - e57dd65: console addon: require an authenticated session by default
1608
+
1609
+ All exposed console RPCs are now `pikkuFunc` (require a session) instead of
1610
+ `pikkuSessionlessFunc` + `auth: false` — the console is an admin surface, so it
1611
+ should never be reachable anonymously. The two SSE streaming routes
1612
+ (`/workflow-run/:runId/stream`, `/function-tests/stream`) stay sessionless, since
1613
+ their HTTP wiring is intentionally `auth: false`.
1614
+
1615
+ Behaviour change for consumers: a host that mounts `@pikku/addon-console` must
1616
+ provide an authenticated session (e.g. via better-auth) to reach console RPCs —
1617
+ unauthenticated calls now return `403`. Permission policy on top of "must be
1618
+ logged in" (admin-only, org scoping, …) remains host-owned via tag/HTTP
1619
+ middleware; the addon only enforces the baseline.
1620
+
1621
+ `@pikku/cli`:
1622
+ - `pikku all` now **throws** when `scaffold.console` is enabled but no
1623
+ `pikkuBetterAuth(...)` is found in the project — scaffolding the console
1624
+ without an auth strategy would produce a console that 403s on every call, so
1625
+ `scaffold.console` alone is no longer the minimum.
1626
+ - The scaffolded `console.gen.ts` secret/variable RPCs (`setSecret`, `getSecret`,
1627
+ `hasSecret`, `getVariable`, `setVariable`) are now generated as `pikkuFunc`
1628
+ (require a session) instead of `pikkuSessionlessFunc` + `auth: false` — these
1629
+ read/write secrets and must never be anonymous. The two SSE routes stay
1630
+ `auth: false`.
1631
+ - `scaffold.console` is now always `"auth"` (the `"no-auth"` mode is gone for the
1632
+ console): `pikku enable console` writes `"auth"` and ignores `--no-auth`.
1633
+
1634
+ - e57dd65: feat(console): surface the `pikku audit` report in the dev console
1635
+
1636
+ Adds a view-only **Security** screen to the pikku dev console that renders the
1637
+ dependency audit produced by `pikku audit` (`.pikku/audit.json`): known
1638
+ vulnerabilities (severity, advisory, recommended version) and available
1639
+ dependency updates.
1640
+ - `@pikku/core`: exports the canonical `SecurityAuditReport` artifact type (plus
1641
+ `SecurityAuditIssue`/`SecurityAuditUpdate`/`SecurityAuditSummary` and the
1642
+ `SecuritySeverity`/`SecurityUpdateLevel` unions) — a single source of truth
1643
+ shared by the CLI (writer), the console addon (reader) and the console UI.
1644
+ - `@pikku/addon-console`: `getSecurityAudit` reads the audit artifact via the
1645
+ meta service; `runSecurityAudit` triggers `pikku audit --outdated` server-side
1646
+ (regenerating the artifact) — same shape as the Run Tests action;
1647
+ `updateDependency` bumps a package in `package.json` (preserving the `^`/`~`
1648
+ range), runs `bun install`, re-audits, and returns the fresh report.
1649
+ - `@pikku/console`: new `SecurityPage` with a **Run audit** button + reusable
1650
+ presentational `SecurityAuditView` (exported, so downstream consoles can wrap
1651
+ it with their own actions) + `useSecurityAudit`/`useRunSecurityAudit`/
1652
+ `useUpdateDependency` hooks. Issues/Dependencies lenses; per-finding
1653
+ remediation slot right-aligned in the row header (`renderRemediation`,
1654
+ defaulting to the OSS `UpdateDependencyButton`; Fabric swaps in its own
1655
+ sandbox-verified action). Empty state until an audit has been run.
1656
+
1657
+ - Updated dependencies [7ebea62]
1658
+ - Updated dependencies [e57dd65]
1659
+ - @pikku/core@0.12.51
1660
+
1661
+ ## 0.12.22
1662
+
1663
+ ### Patch Changes
1664
+
1665
+ - 92bd643: User flows in the console: workflow graph extraction now captures
1666
+ `workflow.expectEventually` steps and per-step actor names (`{ actor:
1667
+ actors.x }`), workflow meta carries `actors`/`title` into the serialized
1668
+ graph, the CLI emits `user-flow-actors.gen.json` for the new
1669
+ `MetaService.getUserFlowActorsMeta()`, and the console Workflows page gains a
1670
+ Workflows / User Flows / Personas toggle. Also fixes complex-workflow graphs
1671
+ being clobbered by a duplicate basic-extraction pass after successful DSL
1672
+ extraction.
1673
+ - Updated dependencies [35a9bab]
1674
+ - Updated dependencies [92bd643]
1675
+ - @pikku/core@0.12.50
1676
+
1677
+ ## 0.12.21
1678
+
1679
+ ### Patch Changes
1680
+
1681
+ - 41ce2cb: Upgrade to TypeScript 6 and raise the minimum Node.js version to 22.
1682
+
1683
+ All packages now build against `typescript@^6.0.3` and declare `engines.node >= 22`. Internal tooling (`ts-json-schema-generator`, `zod-to-ts`) was bumped to TypeScript 6-compatible releases.
1684
+
1685
+ - Updated dependencies [41ce2cb]
1686
+ - @pikku/core@0.12.44
1687
+
1688
+ ## 0.12.20
1689
+
1690
+ ### Patch Changes
1691
+
1692
+ - a1acc23: fix(console): make the Tests tab show scenarios after a run
1693
+
1694
+ The Tests tab renders scenarios from `meta.functions[].tests.scenarios`, which
1695
+ `readAllMeta()` builds by reading the function-tests harness's coverage JSON and
1696
+ Cucumber HTML report. Three drifts left every function with `tests: undefined`:
1697
+ - **`loadFunctionTests` looked in the wrong place.** It probed
1698
+ `function-tests/coverage/function-coverage.json` and
1699
+ `function-tests/tests/reports/cucumber-report.html`, but the harness (and
1700
+ `pikku tests coverage`) actually write `tests/.coverage/function-coverage.json`
1701
+ and `tests/tests/reports/cucumber-report.html`. It now anchors on
1702
+ `resolveFunctionsDir(metaService.basePath)` — the same single source of truth
1703
+ the run handlers and coverage writer use — and keeps the old relative paths as
1704
+ a fallback.
1705
+ - **The console "Run tests" stream never wrote the HTML report.** It ran
1706
+ Cucumber with `--format message` only (for the live view), so scenarios
1707
+ vanished once the run finished. It now also emits
1708
+ `html:tests/tests/reports/cucumber-report.html`.
1709
+ - **`pikku tests coverage` had the same gap** — no `--format`, so no report.
1710
+ It now writes the HTML report alongside the default progress output.
1711
+
1712
+ ## 0.12.19
1713
+
1714
+ ### Patch Changes
1715
+
1716
+ - fa7a09c: Add gateway metadata generation and display enabled gateways in the console.
1717
+ - Updated dependencies [ae7fc5d]
1718
+ - Updated dependencies [fa7a09c]
1719
+ - @pikku/core@0.12.37
1720
+
1721
+ ## 0.12.18
1722
+
1723
+ ### Patch Changes
1724
+
1725
+ - 25a1f6d: Make the function-test harness work for monorepo + engine-aware projects:
1726
+ - `@pikku/addon-console`: the Run-tests and coverage handlers now resolve the
1727
+ functions dir robustly (`<root>/packages/functions` when present), and
1728
+ `getFunctionCoverage` reads the actual coverage output path
1729
+ (`tests/.coverage/function-coverage.json`) instead of a stale
1730
+ `function-tests/coverage/...` path — so the console's coverage button works in
1731
+ monorepo sandboxes.
1732
+ - `@pikku/cli`: `pikku tests init` now detects the db engine (`db/sqlite` /
1733
+ `db/postgres`) and points the harness at the correct migrations + seed
1734
+ (`db/<engine>` + `db/<engine>-seed.sql`) instead of the hardcoded
1735
+ `db/migrations`. It also scaffolds a green starter `example.feature` and an
1736
+ empty `yarn.lock` (so the standalone tests package installs under Yarn Berry).
1737
+ Postgres harness support is tracked in #758.
1738
+ - `@pikku/cucumber`: `createDbUtils.buildBaseDb` tolerates a missing/empty
1739
+ migrations dir or seed file instead of crashing on `scandir('')`.
1740
+
1741
+ - Updated dependencies [f6adc1c]
1742
+ - @pikku/core@0.12.36
1743
+
1744
+ ## 0.12.17
1745
+
1746
+ ### Patch Changes
1747
+
1748
+ - 0a2af8b: Stop addon packages from rebuilding via the workspace pikku CLI at publish time.
1749
+
1750
+ `npx changeset publish` runs up to 10 `npm publish` processes concurrently, and
1751
+ `@pikku/cli`'s publish build (`build.sh`) starts with `rm -rf -- .pikku dist`.
1752
+ An addon whose `prepublishOnly` ran the workspace CLI (`pikku all`, or a
1753
+ `build.sh` invoking `cli/dist/bin/pikku.js`) could read `packages/cli/dist`
1754
+ mid-wipe and fail with `Cannot find module '.../cli/dist/src/services.js'`,
1755
+ breaking the release. `yarn release` already builds every package before
1756
+ publishing, so the `prepublishOnly` rebuild was redundant; it has been removed
1757
+ from both addons and a `check:no-publish-rebuild` guard now fails CI if any
1758
+ published package reintroduces a publish-time CLI rebuild.
1759
+
1760
+ ## 0.12.16
1761
+
1762
+ ### Patch Changes
1763
+
1764
+ - 807a8d0: Fix the `build` script masking failures. The trailing `2>/dev/null; true` sat outside the `&&` chain, so `yarn build` could exit `0` even when `pikku all` or `tsc` failed, hiding broken builds. `pikku all` and `tsc` failures now propagate, while each `.d.ts` copy step is independently tolerant (`|| true`) so a missing `rpc`/`agent`/`workflow` directory no longer blocks the others or fails the build.
1765
+
1766
+ ## 0.12.15
1767
+
1768
+ ### Patch Changes
1769
+
1770
+ - 5283434: Redesign the Addons → Community tab as a card gallery: a hero banner, a category rail derived from addon metadata, a sort bar, and addon cards (category icon, publisher badge, tags, function/agent stats, install action). Selecting a card opens a right-hand detail drawer with an Overview ("What's included" surface tiles + publisher) and Functions tab, replacing the full-page navigation. Installed and APIs tabs are unchanged.
1771
+
1772
+ The community catalog now reads from the Fabric registry API (`FABRIC_API_URL`, default `https://api.pikkufabric.com`) via `/registry/packages` instead of the standalone registry.
1773
+
1774
+ - Updated dependencies [6bca38f]
1775
+ - @pikku/core@0.12.35
1776
+
1777
+ ## 0.12.14
1778
+
1779
+ ### Patch Changes
1780
+
1781
+ - a027a8e: feat: emit auth provider + plugin metadata as `auth-meta.gen.json` for the console SSO page
1782
+
1783
+ The enabled social providers and Better Auth plugins are now extracted statically
1784
+ and written to a generated `auth-meta.gen.json`, replacing the runtime
1785
+ `setAuthRegistry`/`getAuthRegistry` approach — so the console can show them without
1786
+ evaluating the Better Auth factory.
1787
+ - **inspector**: the `pikkuBetterAuth` inspector now reads the `plugins` array from
1788
+ the `betterAuth({ ... })` config and records each plugin id (the callee name of
1789
+ each `plugins: [organization(), bearer()]` entry) on the auth definition.
1790
+ - **cli**: `pikku auth` (and `pikku all`) emit `auth/pikku-auth-meta.gen.json` (path
1791
+ configurable via `authMetaJsonFile`) containing `basePath`, `hasCredentials`, the
1792
+ enabled `providers` (`id` + `displayName` + `secretId`), and the enabled `plugins`
1793
+ (`id` + `displayName`). The previous `setAuthRegistry(...)` runtime wiring is
1794
+ removed from the generated `auth.gen.ts`.
1795
+ - **better-auth**: exports a `PLUGIN_REGISTRY` and `pluginDisplayName(id)` helper so
1796
+ plugin ids resolve to human-readable names.
1797
+ - **core**: removes the unreleased `setAuthRegistry`/`getAuthRegistry` runtime auth
1798
+ registry (now superseded by `auth-meta.gen.json`).
1799
+ - **addon-console**: `getAuthProviders` reads `auth-meta.gen.json` and returns the
1800
+ configured providers, plugins, and `hasCredentials` flag.
1801
+ - **console**: the Auth Providers (SSO) page fetches `console:getAuthProviders` and
1802
+ marks each provider configured/unconfigured, lists email+password credentials as a
1803
+ provider, and shows the enabled Better Auth plugins.
1804
+
1805
+ - a027a8e: feat(auth): migrate auth integration from Auth.js to Better Auth
1806
+
1807
+ The auth integration is now built on [Better Auth](https://better-auth.com)
1808
+ and ships as a single package, `@pikku/better-auth` (replacing the former
1809
+ `@pikku/auth-js`). There is exactly one auth package now.
1810
+ - `pikkuBetterAuth(async ({ secrets, variables }) => betterAuth({ ... }))` is the new
1811
+ single entry point. The CLI inspects the `betterAuth(...)` call and generates:
1812
+ - `auth.gen.ts` — a catch-all `${basePath}{/*splat}` HTTP route per method and
1813
+ a global `betterAuthSession({ auth })` middleware that bridges the Better
1814
+ Auth session into the Pikku wire session.
1815
+ - `auth-secrets.gen.ts` — `wireSecret(BETTER_AUTH_SECRET)` plus a
1816
+ `<PROVIDER>_OAUTH` secret for each configured social provider, and
1817
+ `wireVariable` for non-secret provider config (e.g. `MICROSOFT_TENANT_ID`,
1818
+ `COGNITO_DOMAIN`/`REGION`/`USER_POOL_ID`).
1819
+ - `auth.types.ts` — a typed `pikkuBetterAuth` re-export.
1820
+ - `add-auth` (inspector) walks into the `betterAuth(...)` options to discover the
1821
+ configured providers and required secrets/variables.
1822
+ - The auth secret is now auto-wired by codegen from `BETTER_AUTH_SECRET` — it no
1823
+ longer needs to be registered as a JWT signing key in `services.ts`.
1824
+
1825
+ CLI fix included: scaffold files generated outside `srcDirectories` (e.g. an
1826
+ `auth.gen.ts` under a project's `pikku/` dir) are now added to the inspector's
1827
+ wiring files, so their routes and secret metadata are picked up. The generated
1828
+ wiring imports Pikku types via a resolved relative path instead of a hardcoded
1829
+ `#pikku` specifier, so templates without a `#pikku` import map type-check.
1830
+
1831
+ - Updated dependencies [a027a8e]
1832
+ - Updated dependencies [a027a8e]
1833
+ - Updated dependencies [a027a8e]
1834
+ - Updated dependencies [a027a8e]
1835
+ - @pikku/core@0.12.32
1836
+
1837
+ ## 0.12.13
1838
+
1839
+ ### Patch Changes
1840
+
1841
+ - f95dd07: feat(console): add an HTML tab to the email preview with an inline source editor
1842
+
1843
+ The email preview now has a Desktop | Mobile | HTML toggle. The HTML tab shows the
1844
+ raw template source (`templates/<name>.html`) in a CodeMirror editor with a Save
1845
+ button that writes the file back via a new `console:updateEmailTemplate` RPC
1846
+ (local-dev only, mirrors `updateFunctionBody`), so small edits can be made from the
1847
+ console without leaving the preview. Saving invalidates and re-renders the preview.
1848
+ - `renderEmailPreview` now returns `source` (the un-rendered template HTML) so the
1849
+ editor binds to the source, never the rendered output.
1850
+
1851
+ - 409ec80: feat(console): Tests page with live SSE streaming and function test harness
1852
+ - `@pikku/addon-console`: add `streamFunctionTests` SSE function that runs the
1853
+ cucumber/c8 test harness and streams structured per-scenario events
1854
+ (scenario-start, step, scenario-done, done)
1855
+ - `@pikku/console`: TestsPage live run view — renders scenario names and step
1856
+ status in real time during a test run via SSE; adds `usePikkuSSE` hook and
1857
+ `showRunButton` prop
1858
+ - `@pikku/fetch`: add `subscribePikkuSSE` helper for typed server-sent event
1859
+ streams
1860
+ - `@pikku/cli`: wire SSE-returning functions through the console serialiser and
1861
+ RPC wrapper so the stream route is included in generated clients
1862
+
1863
+ - Updated dependencies [cd101a5]
1864
+ - Updated dependencies [ac16265]
1865
+ - Updated dependencies [a05e864]
1866
+ - Updated dependencies [20750fd]
1867
+ - @pikku/core@0.12.30
1868
+
1869
+ ## 0.12.12
1870
+
1871
+ ### Patch Changes
1872
+
1873
+ - 5093725: runFunctionTests throws a descriptive error when tests dir is missing instead of returning null; db-codegen formatting reflow
1874
+
1875
+ ## 0.12.11
1876
+
1877
+ ### Patch Changes
1878
+
1879
+ - cd237c3: fix(pikku-console): use correct `tests` dir and `.coverage` output path in runFunctionTests
1880
+
1881
+ ## 0.12.10
1882
+
1883
+ ### Patch Changes
1884
+
1885
+ - fd61eb0: **Database schema visualizer in the OSS console.**
1886
+
1887
+ A new `/database` route renders an interactive flowchart of your local development database directly in the pikku console.
1888
+
1889
+ Changes:
1890
+ - `@pikku/addon-console`: new `console:getDbSchema` RPC backed by `DbSchemaService`. Introspects SQLite (Node 22+ built-in `node:sqlite`) or Postgres (`pg`, resolved via `DATABASE_URL` / `POSTGRES_URL`). Foreign-key edges are inferred from `PRAGMA foreign_key_list` (SQLite) or `information_schema` (Postgres). Classification data is merged from `db/annotations.gen.json` when present.
1891
+ - `@pikku/console`: new `DatabasePage` with a ReactFlow/ELK layout canvas. Columns are colour-coded by classification (public = teal, private = orange, secret = red). Includes a hide-internal-tables toggle and a refresh button.
1892
+
1893
+ - Updated dependencies [4b5c75b]
1894
+ - Updated dependencies [4b5c75b]
1895
+ - @pikku/core@0.12.27
1896
+
1897
+ ## 0.12.9
1898
+
1899
+ ### Patch Changes
1900
+
1901
+ - 9060165: Agents now declare their model directly as `<provider>/<model>` (e.g. `openai/gpt-4o`). The `models`, `agentDefaults`, and `agentOverrides` config blocks have been removed.
1902
+
1903
+ **Migration:** replace any bare `model: 'alias'` values with the full provider-qualified form and remove those blocks from `pikku.config.json`.
1904
+
1905
+ - 9060165: New `pikku tests init` scaffolds a Cucumber BDD test harness in your functions package. The companion `@pikku/cucumber` package provides the world, hooks, step library, and database utilities — wiring real Pikku RPC dispatch against an in-process SQLite copy seeded from migrations. `pikku tests coverage` generates per-function coverage summaries, surfaced in the console.
1906
+ - Updated dependencies [9060165]
1907
+ - Updated dependencies [9060165]
1908
+ - Updated dependencies [9060165]
1909
+ - @pikku/core@0.12.21
1910
+
1911
+ ## 0.12.0
1912
+
1913
+ ## 0.12.8
1914
+
1915
+ ### Patch Changes
1916
+
1917
+ - fbcf5b9: Console UX improvements: syntax highlighting for all code blocks, schema-aware client usage snippets for HTTP routes, HTTP tab sidebar layout, CLI/channel breadcrumb cleanup, detail panel max-width constraint
1918
+ - Updated dependencies [fbcf5b9]
1919
+ - @pikku/core@0.12.16
1920
+
1921
+ ## 0.12.7
1922
+
1923
+ ### Patch Changes
1924
+
1925
+ - 624097e: Add deploy pipeline with provider-agnostic architecture
1926
+ - Add MetaService with explicit typed API, absorb WiringService reads
1927
+ - Add deployment service, traceId propagation, scoped logger
1928
+ - Rewrite analyzer: one function = one worker, gateways dispatch via RPC
1929
+ - Add Cloudflare deploy provider with plan/apply commands
1930
+ - Add per-unit filtered codegen for deploy pipeline
1931
+ - Skip missing metadata in wiring registration for deploy units
1932
+ - Fix schema coercion crash when schema has no properties
1933
+ - Fix E2E codegen: double-pass resolves cross-package Zod type imports
1934
+
1935
+ - Updated dependencies [9e8605f]
1936
+ - Updated dependencies [624097e]
1937
+ - Updated dependencies [7ab3243]
1938
+ - @pikku/core@0.12.15
1939
+
1940
+ ## 0.12.6
1941
+
1942
+ ### Patch Changes
1943
+
1944
+ - f85c234: Add unified credential system with per-user OAuth and AI agent pre-flight checks
1945
+ - Unified CredentialService with lazy loading per user via pikkuUserId
1946
+ - wire.getCredential() for typed single credential lookup
1947
+ - MissingCredentialError with structured payload for client-side connect flows
1948
+ - Console UI: Global/Users credential tabs, per-user OAuth connect/revoke
1949
+ - AI agent pre-flight check: detects missing OAuth credentials from addon metadata, shows "Connect your accounts" prompt before chat
1950
+ - CLI codegen: generates credentialsMeta per addon package for runtime lookup
1951
+ - Vercel AI runner: catches MissingCredentialError as runtime fallback
1952
+
1953
+ - Updated dependencies [f85c234]
1954
+ - Updated dependencies [88d3100]
1955
+ - @pikku/core@0.12.14
1956
+
1957
+ ## 0.12.5
1958
+
1959
+ ### Patch Changes
1960
+
1961
+ - Fix publish: ensure dist/.pikku/ generated files are included in the published package
1962
+
1963
+ ## 0.12.4
1964
+
1965
+ ### Patch Changes
1966
+
1967
+ - Fix `#pikku` import alias: use conditional exports so published package resolves to compiled `dist/.pikku/pikku-types.gen.js` at runtime while keeping `.ts` for types during development
1968
+
1969
+ ## 0.12.3
1970
+
1971
+ ### Patch Changes
1972
+
1973
+ - Fix publish: exports now point to compiled dist/.pikku/ instead of root .pikku/ (TS-only), ensuring consumers can import .pikku/pikku-bootstrap.gen.js
1974
+ - Remove redundant cp in build script that was overwriting compiled JS with source TS
1975
+
1976
+ ## 0.12.2
1977
+
1978
+ ### Patch Changes
1979
+
1980
+ - 387b2ee: Add agent thread/run management functions, workflow run streaming, and refactor services to receive DB services from host app
1981
+ - Updated dependencies [387b2ee]
1982
+ - Updated dependencies [32ed003]
1983
+ - Updated dependencies [7d369f3]
1984
+ - Updated dependencies [508a796]
1985
+ - Updated dependencies [ffe83af]
1986
+ - Updated dependencies [c7ff141]
1987
+ - @pikku/core@0.12.3
1988
+
1989
+ ## 0.12.1
1990
+
1991
+ ### Patch Changes
1992
+
1993
+ - 62a8725: Console UI improvements:
1994
+ - Add markdown rendering for addon detail pages
1995
+ - Add shared `ProjectSecrets` and `ProjectVariables` components to addon detail view
1996
+ - Show `Addon Service Not Running` status when an addon RPC endpoint is unreachable
1997
+ - Visual polish: unified badges, subtler borders, larger base rem
1998
+ - Fix dark mode colours throughout (CLI page, anchor colours, border variables)
1999
+ - Hide anonymous middleware/permission instances from the list view; add route table descriptions
2000
+ - Update documentation links to point to the correct pikku.dev URLs
2001
+
2002
+ - a83efb8: Handle OPTIONS preflight requests automatically in fetchData when no explicit OPTIONS route is matched. Runs global HTTP middleware (e.g. CORS) and returns 204. Remove redundant startWorkflowRun and streamAgentRun pass-through functions from addon-console.
2003
+ - Updated dependencies [62a8725]
2004
+ - Updated dependencies [a3bdb0d]
2005
+ - Updated dependencies [e0349ff]
2006
+ - Updated dependencies [62a8725]
2007
+ - Updated dependencies [e04531f]
2008
+ - Updated dependencies [62a8725]
2009
+ - Updated dependencies [a83efb8]
2010
+ - Updated dependencies [e04531f]
2011
+ - Updated dependencies [8eed717]
2012
+ - Updated dependencies [62a8725]
2013
+ - Updated dependencies [62a8725]
2014
+ - Updated dependencies [62a8725]
2015
+ - @pikku/core@0.12.1
2016
+ - @pikku/pg@0.12.1
2017
+
2018
+ ### New Features
2019
+
2020
+ - Initial release of `@pikku/external-console` — backend functions for Pikku Console
2021
+ - `console:getAllMeta` aggregates all project metadata into a single RPC call
2022
+ - Workflow run management (start, stream, list, delete)
2023
+ - Agent thread and run management with streaming support
2024
+ - Schema introspection service
2025
+ - External package icon and metadata service
2026
+ - OAuth2 credential connect/disconnect/status/refresh flows
2027
+ - Secrets and variables read/write functions