@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.
- package/CHANGELOG.md +2027 -0
- package/dist/.pikku/addon/agent/index.d.ts +8 -0
- package/dist/.pikku/addon/agent/index.d.ts.map +1 -0
- package/dist/.pikku/addon/agent/index.js +8 -0
- package/dist/.pikku/addon/agent/index.js.map +1 -0
- package/dist/.pikku/addon/agent/pikku-agent-map.gen.d.ts +4 -0
- package/dist/.pikku/addon/agent/pikku-agent-types.gen.d.ts +54 -0
- package/dist/.pikku/addon/agent/pikku-agent-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/agent/pikku-agent-types.gen.js +20 -0
- package/dist/.pikku/addon/agent/pikku-agent-types.gen.js.map +1 -0
- package/dist/.pikku/addon/agent/pikku-model-aliases.gen.d.ts +2 -0
- package/dist/.pikku/addon/agent/pikku-model-aliases.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/agent/pikku-model-aliases.gen.js +6 -0
- package/dist/.pikku/addon/agent/pikku-model-aliases.gen.js.map +1 -0
- package/dist/.pikku/addon/agent/pikku-scorer-names.gen.d.ts +8 -0
- package/dist/.pikku/addon/auth/auth.types.d.ts +5 -0
- package/dist/.pikku/addon/auth/auth.types.d.ts.map +1 -0
- package/dist/.pikku/addon/auth/auth.types.js +6 -0
- package/dist/.pikku/addon/auth/auth.types.js.map +1 -0
- package/dist/.pikku/addon/auth/index.d.ts +9 -0
- package/dist/.pikku/addon/auth/index.d.ts.map +1 -0
- package/dist/.pikku/addon/auth/index.js +9 -0
- package/dist/.pikku/addon/auth/index.js.map +1 -0
- package/dist/.pikku/addon/auth/pikku-auth-types.gen.d.ts +119 -0
- package/dist/.pikku/addon/auth/pikku-auth-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/auth/pikku-auth-types.gen.js +93 -0
- package/dist/.pikku/addon/auth/pikku-auth-types.gen.js.map +1 -0
- package/dist/.pikku/addon/channel/index.d.ts +8 -0
- package/dist/.pikku/addon/channel/index.d.ts.map +1 -0
- package/dist/.pikku/addon/channel/index.js +8 -0
- package/dist/.pikku/addon/channel/index.js.map +1 -0
- package/dist/.pikku/addon/channel/pikku-channel-types.gen.d.ts +91 -0
- package/dist/.pikku/addon/channel/pikku-channel-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/channel/pikku-channel-types.gen.js +43 -0
- package/dist/.pikku/addon/channel/pikku-channel-types.gen.js.map +1 -0
- package/dist/.pikku/addon/error/index.d.ts +8 -0
- package/dist/.pikku/addon/error/index.d.ts.map +1 -0
- package/dist/.pikku/addon/error/index.js +8 -0
- package/dist/.pikku/addon/error/index.js.map +1 -0
- package/dist/.pikku/addon/error/pikku-error-types.gen.d.ts +8 -0
- package/dist/.pikku/addon/error/pikku-error-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/error/pikku-error-types.gen.js +8 -0
- package/dist/.pikku/addon/error/pikku-error-types.gen.js.map +1 -0
- package/dist/.pikku/addon/function/index.d.ts +8 -0
- package/dist/.pikku/addon/function/index.d.ts.map +1 -0
- package/dist/.pikku/addon/function/index.js +8 -0
- package/dist/.pikku/addon/function/index.js.map +1 -0
- package/dist/.pikku/addon/function/pikku-function-types.gen.d.ts +270 -0
- package/dist/.pikku/addon/function/pikku-function-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/function/pikku-function-types.gen.js +117 -0
- package/dist/.pikku/addon/function/pikku-function-types.gen.js.map +1 -0
- package/dist/.pikku/addon/function/pikku-functions-meta-verbose.gen.json +2146 -0
- package/dist/.pikku/addon/function/pikku-functions-meta.gen.d.ts +2 -0
- package/dist/.pikku/addon/function/pikku-functions-meta.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/function/pikku-functions-meta.gen.js +7 -0
- package/dist/.pikku/addon/function/pikku-functions-meta.gen.js.map +1 -0
- package/dist/.pikku/addon/function/pikku-functions-meta.gen.json +1690 -0
- package/dist/.pikku/addon/function/pikku-functions.gen.d.ts +2 -0
- package/dist/.pikku/addon/function/pikku-functions.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/function/pikku-functions.gen.js +126 -0
- package/dist/.pikku/addon/function/pikku-functions.gen.js.map +1 -0
- package/dist/.pikku/addon/http/index.d.ts +8 -0
- package/dist/.pikku/addon/http/index.d.ts.map +1 -0
- package/dist/.pikku/addon/http/index.js +8 -0
- package/dist/.pikku/addon/http/index.js.map +1 -0
- package/dist/.pikku/addon/http/pikku-http-types.gen.d.ts +50 -0
- package/dist/.pikku/addon/http/pikku-http-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/http/pikku-http-types.gen.js +11 -0
- package/dist/.pikku/addon/http/pikku-http-types.gen.js.map +1 -0
- package/dist/.pikku/addon/index.d.ts +8 -0
- package/dist/.pikku/addon/index.d.ts.map +1 -0
- package/dist/.pikku/addon/index.js +8 -0
- package/dist/.pikku/addon/index.js.map +1 -0
- package/dist/.pikku/addon/mcp/index.d.ts +8 -0
- package/dist/.pikku/addon/mcp/index.d.ts.map +1 -0
- package/dist/.pikku/addon/mcp/index.js +8 -0
- package/dist/.pikku/addon/mcp/index.js.map +1 -0
- package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.d.ts +102 -0
- package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.js +16 -0
- package/dist/.pikku/addon/mcp/pikku-mcp-types.gen.js.map +1 -0
- package/dist/.pikku/addon/middleware/index.d.ts +8 -0
- package/dist/.pikku/addon/middleware/index.d.ts.map +1 -0
- package/dist/.pikku/addon/middleware/index.js +8 -0
- package/dist/.pikku/addon/middleware/index.js.map +1 -0
- package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.d.ts +118 -0
- package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.js +109 -0
- package/dist/.pikku/addon/middleware/pikku-middleware-types.gen.js.map +1 -0
- package/dist/.pikku/addon/pikku-addon-types.gen.d.ts +2 -2
- package/dist/.pikku/addon/pikku-addon-types.gen.d.ts.map +1 -1
- package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.d.ts +10 -0
- package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.js +10 -0
- package/dist/.pikku/addon/pikku-bootstrap-scenarios.gen.js.map +1 -0
- package/dist/.pikku/addon/pikku-bootstrap.gen.d.ts +10 -0
- package/dist/.pikku/addon/pikku-bootstrap.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/pikku-bootstrap.gen.js +10 -0
- package/dist/.pikku/addon/pikku-bootstrap.gen.js.map +1 -0
- package/dist/.pikku/addon/pikku-package.gen.js +3 -3
- package/dist/.pikku/addon/pikku-package.gen.js.map +1 -1
- package/dist/.pikku/addon/pikku-services.gen.d.ts +50 -0
- package/dist/.pikku/addon/pikku-services.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/pikku-services.gen.js +46 -0
- package/dist/.pikku/addon/pikku-services.gen.js.map +1 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-map.gen.d.ts +251 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +253 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-map.remote.gen.d.ts +184 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts +2 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.js +7 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.js.map +1 -0
- package/dist/.pikku/addon/rpc/pikku-rpc-wirings-meta.internal.gen.json +62 -0
- package/dist/.pikku/addon/scenarios/index.d.ts +8 -0
- package/dist/.pikku/addon/scenarios/index.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/index.js +8 -0
- package/dist/.pikku/addon/scenarios/index.js.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-personas.gen.d.ts +18 -0
- package/dist/.pikku/addon/scenarios/pikku-personas.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-personas.gen.js +18 -0
- package/dist/.pikku/addon/scenarios/pikku-personas.gen.js.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.d.ts +2 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.js +11 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.js.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions-meta.gen.json +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.d.ts +5 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.js +2 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-functions.gen.js.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.d.ts +311 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.js +72 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-types.gen.js.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.d.ts +2 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.js +11 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings-meta.gen.js.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.d.ts +5 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.js +2 -0
- package/dist/.pikku/addon/scenarios/pikku-scenario-wirings.gen.js.map +1 -0
- package/dist/.pikku/addon/scenarios/schemas/register.gen.d.ts +5 -0
- package/dist/.pikku/addon/scenarios/schemas/register.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scenarios/schemas/register.gen.js +5 -0
- package/dist/.pikku/addon/scenarios/schemas/register.gen.js.map +1 -0
- package/dist/.pikku/addon/schemas/register.gen.d.ts +2 -0
- package/dist/.pikku/addon/schemas/register.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/schemas/register.gen.js +201 -0
- package/dist/.pikku/addon/schemas/register.gen.js.map +1 -0
- package/dist/.pikku/addon/schemas/schemas/AddonMetaPage.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AddonMetaQuery.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AddonPackageInfo.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AddonReadinessInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AddonReadinessOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AgentCredentialCheckInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AgentCredentialCheckOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AllMeta.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/AuthProvidersMeta.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ChannelSnippets.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/DbSchema.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/DeleteAgentThreadInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/DeleteAgentThreadOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/DeleteScenarioRunInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/DeleteWorkflowRunInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/DeleteWorkflowRunOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAddonCategoriesOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAddonCommunityPackageInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAddonIconInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAddonInstalledPackageInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAddonInstancesInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAddonInstancesOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentRunScoresInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentRunScoresOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentThreadMessagesInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentThreadMessagesOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentThreadRunsInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentThreadRunsOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentThreadsInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetAgentThreadsOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetChannelSnippetsInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetFunctionsMetaOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetInstalledAddonsOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetMyAccessOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetOpenapiCategoriesOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetOpenapiDetailInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetOpenapiDetailOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetOpenapisInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetOpenapisOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetScenarioArtifactInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetScenarioRunInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetSchemaInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetScorersOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetStateDiffInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWebhookDeliveryInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowMetaByIdInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowMetaByIdOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunHistoryInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunHistoryOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunNamesOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunStepsInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunStepsOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunsInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowRunsOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowVersionInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/GetWorkflowVersionOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/InstallAddonInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/InstallAddonOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/InstallOpenapiAddonInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/InstallOpenapiAddonOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/JSONSchema7.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/KnowledgeBundle.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ListScenarioRunsInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ListScenarioRunsOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ListWebhookDeliveriesInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ListWebhookDeliveriesOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/PingOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ReadAgentSourceInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ReadAgentSourceOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ReadFunctionBodyInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ReadFunctionBodyOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ReadFunctionSourceInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ReadFunctionSourceOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/RenderEmailPreviewInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/RenderEmailPreviewOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/ScenarioRunRecord.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SecretGetInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SecretGetOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SecretHasInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SecretHasOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SecretSetInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SecretSetOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SecurityAuditReport.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/StateDiff.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/StreamWorkflowRunInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/SurfaceResult.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateAgentConfigInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateAgentConfigOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateDependencyInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateEmailTemplateInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateEmailTemplateOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateFunctionBodyInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateFunctionBodyOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateFunctionConfigInput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/UpdateFunctionConfigOutput.schema.json +1 -0
- package/dist/.pikku/addon/schemas/schemas/WebhookDeliveryWithAttempts.schema.json +1 -0
- package/dist/.pikku/addon/scopes/index.d.ts +8 -0
- package/dist/.pikku/addon/scopes/index.d.ts.map +1 -0
- package/dist/.pikku/addon/scopes/index.js +8 -0
- package/dist/.pikku/addon/scopes/index.js.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-personas-meta.gen.json +1 -0
- package/dist/.pikku/addon/scopes/pikku-personas.gen.d.ts +29 -0
- package/dist/.pikku/addon/scopes/pikku-personas.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-personas.gen.js +18 -0
- package/dist/.pikku/addon/scopes/pikku-personas.gen.js.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-roles-meta.gen.json +1 -0
- package/dist/.pikku/addon/scopes/pikku-roles.gen.d.ts +31 -0
- package/dist/.pikku/addon/scopes/pikku-roles.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-roles.gen.js +19 -0
- package/dist/.pikku/addon/scopes/pikku-roles.gen.js.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-scope-types.gen.d.ts +6 -0
- package/dist/.pikku/addon/scopes/pikku-scope-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-scope-types.gen.js +6 -0
- package/dist/.pikku/addon/scopes/pikku-scope-types.gen.js.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-scopes-meta.gen.json +144 -0
- package/dist/.pikku/addon/scopes/pikku-scopes.gen.d.ts +36 -0
- package/dist/.pikku/addon/scopes/pikku-scopes.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/scopes/pikku-scopes.gen.js +30 -0
- package/dist/.pikku/addon/scopes/pikku-scopes.gen.js.map +1 -0
- package/dist/.pikku/addon/secrets/index.d.ts +9 -0
- package/dist/.pikku/addon/secrets/index.d.ts.map +1 -0
- package/dist/.pikku/addon/secrets/index.js +9 -0
- package/dist/.pikku/addon/secrets/index.js.map +1 -0
- package/dist/.pikku/addon/secrets/pikku-secret-types.gen.d.ts +5 -0
- package/dist/.pikku/addon/secrets/pikku-secret-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/secrets/pikku-secret-types.gen.js +5 -0
- package/dist/.pikku/addon/secrets/pikku-secret-types.gen.js.map +1 -0
- package/dist/.pikku/addon/secrets/pikku-secrets-meta.gen.json +1 -0
- package/dist/.pikku/addon/secrets/pikku-secrets.gen.d.ts +18 -0
- package/dist/.pikku/addon/secrets/pikku-secrets.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/secrets/pikku-secrets.gen.js +19 -0
- package/dist/.pikku/addon/secrets/pikku-secrets.gen.js.map +1 -0
- package/dist/.pikku/addon/services/pikku-meta-service.gen.d.ts +8 -0
- package/dist/.pikku/addon/services/pikku-meta-service.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/services/pikku-meta-service.gen.js +10 -0
- package/dist/.pikku/addon/services/pikku-meta-service.gen.js.map +1 -0
- package/dist/.pikku/addon/setup/index.d.ts +9 -0
- package/dist/.pikku/addon/setup/index.d.ts.map +1 -0
- package/dist/.pikku/addon/setup/index.js +9 -0
- package/dist/.pikku/addon/setup/index.js.map +1 -0
- package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.d.ts +66 -0
- package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.js +78 -0
- package/dist/.pikku/addon/setup/pikku-addon-setup-types.gen.js.map +1 -0
- package/dist/.pikku/addon/setup/pikku-setup-types.gen.d.ts +67 -0
- package/dist/.pikku/addon/setup/pikku-setup-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/setup/pikku-setup-types.gen.js +88 -0
- package/dist/.pikku/addon/setup/pikku-setup-types.gen.js.map +1 -0
- package/dist/.pikku/addon/trigger/index.d.ts +8 -0
- package/dist/.pikku/addon/trigger/index.d.ts.map +1 -0
- package/dist/.pikku/addon/trigger/index.js +8 -0
- package/dist/.pikku/addon/trigger/index.js.map +1 -0
- package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.d.ts +83 -0
- package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.js +13 -0
- package/dist/.pikku/addon/trigger/pikku-trigger-types.gen.js.map +1 -0
- package/dist/.pikku/addon/variables/index.d.ts +9 -0
- package/dist/.pikku/addon/variables/index.d.ts.map +1 -0
- package/dist/.pikku/addon/variables/index.js +9 -0
- package/dist/.pikku/addon/variables/index.js.map +1 -0
- package/dist/.pikku/addon/variables/pikku-variable-types.gen.d.ts +5 -0
- package/dist/.pikku/addon/variables/pikku-variable-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/variables/pikku-variable-types.gen.js +5 -0
- package/dist/.pikku/addon/variables/pikku-variable-types.gen.js.map +1 -0
- package/dist/.pikku/addon/variables/pikku-variables-meta.gen.json +1 -0
- package/dist/.pikku/addon/variables/pikku-variables.gen.d.ts +19 -0
- package/dist/.pikku/addon/variables/pikku-variables.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/variables/pikku-variables.gen.js +19 -0
- package/dist/.pikku/addon/variables/pikku-variables.gen.js.map +1 -0
- package/dist/.pikku/addon/workflow/index.d.ts +8 -0
- package/dist/.pikku/addon/workflow/index.d.ts.map +1 -0
- package/dist/.pikku/addon/workflow/index.js +8 -0
- package/dist/.pikku/addon/workflow/index.js.map +1 -0
- package/dist/.pikku/addon/workflow/pikku-scenario-step-map.gen.d.ts +18 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-map.gen.d.ts +38 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.d.ts +106 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.js +16 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-types.gen.js.map +1 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.d.ts +2 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.js +7 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings-meta.gen.js.map +1 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.d.ts +5 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.d.ts.map +1 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.js +5 -0
- package/dist/.pikku/addon/workflow/pikku-workflow-wirings.gen.js.map +1 -0
- package/dist/.pikku/agent/index.d.ts +8 -0
- package/dist/.pikku/agent/index.d.ts.map +1 -0
- package/dist/.pikku/agent/index.js +8 -0
- package/dist/.pikku/agent/index.js.map +1 -0
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts +8 -7
- package/dist/.pikku/agent/pikku-agent-types.gen.d.ts.map +1 -1
- package/dist/.pikku/agent/pikku-agent-types.gen.js +2 -3
- package/dist/.pikku/agent/pikku-agent-types.gen.js.map +1 -1
- package/dist/.pikku/agent/pikku-model-aliases.gen.js +1 -1
- package/dist/.pikku/agent/pikku-model-aliases.gen.js.map +1 -1
- package/dist/.pikku/auth/index.d.ts +9 -0
- package/dist/.pikku/auth/index.d.ts.map +1 -0
- package/dist/.pikku/auth/index.js +9 -0
- package/dist/.pikku/auth/index.js.map +1 -0
- package/dist/.pikku/auth/pikku-auth-types.gen.d.ts +119 -0
- package/dist/.pikku/auth/pikku-auth-types.gen.d.ts.map +1 -0
- package/dist/.pikku/auth/pikku-auth-types.gen.js +93 -0
- package/dist/.pikku/auth/pikku-auth-types.gen.js.map +1 -0
- package/dist/.pikku/channel/index.d.ts +8 -0
- package/dist/.pikku/channel/index.d.ts.map +1 -0
- package/dist/.pikku/channel/index.js +8 -0
- package/dist/.pikku/channel/index.js.map +1 -0
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts +4 -25
- package/dist/.pikku/channel/pikku-channel-types.gen.d.ts.map +1 -1
- package/dist/.pikku/channel/pikku-channel-types.gen.js +1 -19
- package/dist/.pikku/channel/pikku-channel-types.gen.js.map +1 -1
- package/dist/.pikku/credentials/index.d.ts +8 -0
- package/dist/.pikku/credentials/index.d.ts.map +1 -0
- package/dist/.pikku/credentials/index.js +8 -0
- package/dist/.pikku/credentials/index.js.map +1 -0
- package/dist/.pikku/credentials/pikku-credential-types.gen.d.ts +5 -0
- package/dist/.pikku/credentials/pikku-credential-types.gen.d.ts.map +1 -0
- package/dist/.pikku/credentials/pikku-credential-types.gen.js +5 -0
- package/dist/.pikku/credentials/pikku-credential-types.gen.js.map +1 -0
- package/dist/.pikku/error/index.d.ts +8 -0
- package/dist/.pikku/error/index.d.ts.map +1 -0
- package/dist/.pikku/error/index.js +8 -0
- package/dist/.pikku/error/index.js.map +1 -0
- package/dist/.pikku/error/pikku-error-types.gen.d.ts +8 -0
- package/dist/.pikku/error/pikku-error-types.gen.d.ts.map +1 -0
- package/dist/.pikku/error/pikku-error-types.gen.js +8 -0
- package/dist/.pikku/error/pikku-error-types.gen.js.map +1 -0
- package/dist/.pikku/function/index.d.ts +8 -0
- package/dist/.pikku/function/index.d.ts.map +1 -0
- package/dist/.pikku/function/index.js +8 -0
- package/dist/.pikku/function/index.js.map +1 -0
- package/dist/.pikku/function/pikku-function-types.gen.d.ts +28 -262
- package/dist/.pikku/function/pikku-function-types.gen.d.ts.map +1 -1
- package/dist/.pikku/function/pikku-function-types.gen.js +1 -236
- package/dist/.pikku/function/pikku-function-types.gen.js.map +1 -1
- package/dist/.pikku/function/pikku-functions-meta-verbose.gen.json +201 -680
- package/dist/.pikku/function/pikku-functions-meta.gen.js +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.js.map +1 -1
- package/dist/.pikku/function/pikku-functions-meta.gen.json +159 -535
- package/dist/.pikku/function/pikku-functions.gen.js +10 -36
- package/dist/.pikku/function/pikku-functions.gen.js.map +1 -1
- package/dist/.pikku/gateway/index.d.ts +8 -0
- package/dist/.pikku/gateway/index.d.ts.map +1 -0
- package/dist/.pikku/gateway/index.js +8 -0
- package/dist/.pikku/gateway/index.js.map +1 -0
- package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts +38 -0
- package/dist/.pikku/gateway/pikku-gateway-types.gen.d.ts.map +1 -0
- package/dist/.pikku/gateway/pikku-gateway-types.gen.js +26 -0
- package/dist/.pikku/gateway/pikku-gateway-types.gen.js.map +1 -0
- package/dist/.pikku/http/index.d.ts +8 -0
- package/dist/.pikku/http/index.d.ts.map +1 -0
- package/dist/.pikku/http/index.js +8 -0
- package/dist/.pikku/http/index.js.map +1 -0
- package/dist/.pikku/http/pikku-http-types.gen.d.ts +3 -51
- package/dist/.pikku/http/pikku-http-types.gen.d.ts.map +1 -1
- package/dist/.pikku/http/pikku-http-types.gen.js +1 -40
- package/dist/.pikku/http/pikku-http-types.gen.js.map +1 -1
- package/dist/.pikku/mcp/index.d.ts +8 -0
- package/dist/.pikku/mcp/index.d.ts.map +1 -0
- package/dist/.pikku/mcp/index.js +8 -0
- package/dist/.pikku/mcp/index.js.map +1 -0
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts +5 -35
- package/dist/.pikku/mcp/pikku-mcp-types.gen.d.ts.map +1 -1
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js +0 -22
- package/dist/.pikku/mcp/pikku-mcp-types.gen.js.map +1 -1
- package/dist/.pikku/middleware/index.d.ts +8 -0
- package/dist/.pikku/middleware/index.d.ts.map +1 -0
- package/dist/.pikku/middleware/index.js +8 -0
- package/dist/.pikku/middleware/index.js.map +1 -0
- package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts +118 -0
- package/dist/.pikku/middleware/pikku-middleware-types.gen.d.ts.map +1 -0
- package/dist/.pikku/middleware/pikku-middleware-types.gen.js +109 -0
- package/dist/.pikku/middleware/pikku-middleware-types.gen.js.map +1 -0
- package/dist/.pikku/pikku-services.gen.d.ts +6 -5
- package/dist/.pikku/pikku-services.gen.d.ts.map +1 -1
- package/dist/.pikku/pikku-services.gen.js +5 -4
- package/dist/.pikku/pikku-services.gen.js.map +1 -1
- package/dist/.pikku/pikku-types.gen.d.ts +0 -1
- package/dist/.pikku/pikku-types.gen.d.ts.map +1 -1
- package/dist/.pikku/pikku-types.gen.js +0 -2
- package/dist/.pikku/pikku-types.gen.js.map +1 -1
- package/dist/.pikku/queue/index.d.ts +8 -0
- package/dist/.pikku/queue/index.d.ts.map +1 -0
- package/dist/.pikku/queue/index.js +8 -0
- package/dist/.pikku/queue/index.js.map +1 -0
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts +1 -1
- package/dist/.pikku/queue/pikku-queue-types.gen.d.ts.map +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-map.gen.d.ts +16 -55
- package/dist/.pikku/rpc/pikku-rpc-wirings-map.internal.gen.d.ts +17 -55
- package/dist/.pikku/rpc/pikku-rpc-wirings-map.remote.gen.d.ts +11 -35
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.js.map +1 -1
- package/dist/.pikku/rpc/pikku-rpc-wirings-meta.internal.gen.json +5 -18
- package/dist/.pikku/scenarios/index.d.ts +8 -0
- package/dist/.pikku/scenarios/index.d.ts.map +1 -0
- package/dist/.pikku/scenarios/index.js +8 -0
- package/dist/.pikku/scenarios/index.js.map +1 -0
- package/dist/.pikku/scenarios/pikku-personas.gen.d.ts +18 -0
- package/dist/.pikku/scenarios/pikku-personas.gen.d.ts.map +1 -0
- package/dist/.pikku/scenarios/pikku-personas.gen.js +18 -0
- package/dist/.pikku/scenarios/pikku-personas.gen.js.map +1 -0
- package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-functions-meta.gen.js.map +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts +311 -0
- package/dist/.pikku/scenarios/pikku-scenario-types.gen.d.ts.map +1 -0
- package/dist/.pikku/scenarios/pikku-scenario-types.gen.js +72 -0
- package/dist/.pikku/scenarios/pikku-scenario-types.gen.js.map +1 -0
- package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js +1 -1
- package/dist/.pikku/scenarios/pikku-scenario-wirings-meta.gen.js.map +1 -1
- package/dist/.pikku/scheduler/index.d.ts +8 -0
- package/dist/.pikku/scheduler/index.d.ts.map +1 -0
- package/dist/.pikku/scheduler/index.js +8 -0
- package/dist/.pikku/scheduler/index.js.map +1 -0
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts +1 -1
- package/dist/.pikku/scheduler/pikku-scheduler-types.gen.d.ts.map +1 -1
- package/dist/.pikku/schemas/register.gen.js +15 -65
- package/dist/.pikku/schemas/register.gen.js.map +1 -1
- package/dist/.pikku/schemas/schemas/AddonMetaPage.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/AddonPackageInfo.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/AllMeta.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/DeleteScenarioRunInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/GetFunctionsMetaOutput.schema.json +1 -1
- package/dist/.pikku/schemas/schemas/GetScenarioArtifactInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/GetScenarioRunInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ListScenarioRunsInput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ListScenarioRunsOutput.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/ScenarioRunRecord.schema.json +1 -0
- package/dist/.pikku/schemas/schemas/SurfaceResult.schema.json +1 -0
- package/dist/.pikku/scopes/index.d.ts +8 -0
- package/dist/.pikku/scopes/index.d.ts.map +1 -0
- package/dist/.pikku/scopes/index.js +8 -0
- package/dist/.pikku/scopes/index.js.map +1 -0
- package/dist/.pikku/scopes/pikku-personas.gen.d.ts +4 -13
- package/dist/.pikku/scopes/pikku-personas.gen.d.ts.map +1 -1
- package/dist/.pikku/scopes/pikku-personas.gen.js.map +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.d.ts +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.d.ts.map +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.js +1 -1
- package/dist/.pikku/scopes/pikku-roles.gen.js.map +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts +2 -4
- package/dist/.pikku/scopes/pikku-scope-types.gen.d.ts.map +1 -1
- package/dist/.pikku/scopes/pikku-scope-types.gen.js +2 -2
- package/dist/.pikku/scopes/pikku-scope-types.gen.js.map +1 -1
- package/dist/.pikku/scopes/pikku-scopes-meta.gen.json +13 -66
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts +2 -2
- package/dist/.pikku/scopes/pikku-scopes.gen.d.ts.map +1 -1
- package/dist/.pikku/scopes/pikku-scopes.gen.js +1 -2
- package/dist/.pikku/scopes/pikku-scopes.gen.js.map +1 -1
- package/dist/.pikku/secrets/index.d.ts +9 -0
- package/dist/.pikku/secrets/index.d.ts.map +1 -0
- package/dist/.pikku/secrets/index.js +9 -0
- package/dist/.pikku/secrets/index.js.map +1 -0
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts +0 -2
- package/dist/.pikku/secrets/pikku-secret-types.gen.d.ts.map +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts +7 -11
- package/dist/.pikku/secrets/pikku-secrets.gen.d.ts.map +1 -1
- package/dist/.pikku/secrets/pikku-secrets.gen.js +6 -8
- package/dist/.pikku/secrets/pikku-secrets.gen.js.map +1 -1
- package/dist/.pikku/services/pikku-meta-service.gen.d.ts +8 -0
- package/dist/.pikku/services/pikku-meta-service.gen.d.ts.map +1 -0
- package/dist/.pikku/services/pikku-meta-service.gen.js +10 -0
- package/dist/.pikku/services/pikku-meta-service.gen.js.map +1 -0
- package/dist/.pikku/setup/index.d.ts +8 -0
- package/dist/.pikku/setup/index.d.ts.map +1 -0
- package/dist/.pikku/setup/index.js +8 -0
- package/dist/.pikku/setup/index.js.map +1 -0
- package/dist/.pikku/setup/pikku-setup-types.gen.d.ts +67 -0
- package/dist/.pikku/setup/pikku-setup-types.gen.d.ts.map +1 -0
- package/dist/.pikku/setup/pikku-setup-types.gen.js +88 -0
- package/dist/.pikku/setup/pikku-setup-types.gen.js.map +1 -0
- package/dist/.pikku/trigger/index.d.ts +8 -0
- package/dist/.pikku/trigger/index.d.ts.map +1 -0
- package/dist/.pikku/trigger/index.js +8 -0
- package/dist/.pikku/trigger/index.js.map +1 -0
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts +5 -36
- package/dist/.pikku/trigger/pikku-trigger-types.gen.d.ts.map +1 -1
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js +0 -21
- package/dist/.pikku/trigger/pikku-trigger-types.gen.js.map +1 -1
- package/dist/.pikku/variables/index.d.ts +9 -0
- package/dist/.pikku/variables/index.d.ts.map +1 -0
- package/dist/.pikku/variables/index.js +9 -0
- package/dist/.pikku/variables/index.js.map +1 -0
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts +0 -1
- package/dist/.pikku/variables/pikku-variable-types.gen.d.ts.map +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.d.ts +7 -10
- package/dist/.pikku/variables/pikku-variables.gen.d.ts.map +1 -1
- package/dist/.pikku/variables/pikku-variables.gen.js +7 -9
- package/dist/.pikku/variables/pikku-variables.gen.js.map +1 -1
- package/dist/.pikku/workflow/index.d.ts +8 -0
- package/dist/.pikku/workflow/index.d.ts.map +1 -0
- package/dist/.pikku/workflow/index.js +8 -0
- package/dist/.pikku/workflow/index.js.map +1 -0
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts +14 -262
- package/dist/.pikku/workflow/pikku-workflow-types.gen.d.ts.map +1 -1
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js +0 -63
- package/dist/.pikku/workflow/pikku-workflow-types.gen.js.map +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js +1 -1
- package/dist/.pikku/workflow/pikku-workflow-wirings-meta.gen.js.map +1 -1
- package/dist/src/functions/addon-readiness.function.d.ts +4 -4
- package/dist/src/functions/addon-readiness.function.d.ts.map +1 -1
- package/dist/src/functions/addon-readiness.function.js +2 -2
- package/dist/src/functions/addon-readiness.function.js.map +1 -1
- package/dist/src/functions/agent-credential-check.function.d.ts +4 -4
- package/dist/src/functions/agent-credential-check.function.d.ts.map +1 -1
- package/dist/src/functions/agent-credential-check.function.js +2 -2
- package/dist/src/functions/agent-credential-check.function.js.map +1 -1
- package/dist/src/functions/credential-delete.function.d.ts +4 -4
- package/dist/src/functions/credential-delete.function.d.ts.map +1 -1
- package/dist/src/functions/credential-delete.function.js +1 -1
- package/dist/src/functions/credential-delete.function.js.map +1 -1
- package/dist/src/functions/credential-get.function.d.ts +4 -4
- package/dist/src/functions/credential-get.function.d.ts.map +1 -1
- package/dist/src/functions/credential-get.function.js +1 -1
- package/dist/src/functions/credential-get.function.js.map +1 -1
- package/dist/src/functions/credential-list-users.function.d.ts +4 -4
- package/dist/src/functions/credential-list-users.function.d.ts.map +1 -1
- package/dist/src/functions/credential-list-users.function.js +1 -1
- package/dist/src/functions/credential-list-users.function.js.map +1 -1
- package/dist/src/functions/credential-set.function.d.ts +4 -4
- package/dist/src/functions/credential-set.function.d.ts.map +1 -1
- package/dist/src/functions/credential-set.function.js +1 -1
- package/dist/src/functions/credential-set.function.js.map +1 -1
- package/dist/src/functions/credential-status.function.d.ts +4 -4
- package/dist/src/functions/credential-status.function.d.ts.map +1 -1
- package/dist/src/functions/credential-status.function.js +1 -1
- package/dist/src/functions/credential-status.function.js.map +1 -1
- package/dist/src/functions/credential-users.function.d.ts +4 -4
- package/dist/src/functions/credential-users.function.d.ts.map +1 -1
- package/dist/src/functions/credential-users.function.js +1 -1
- package/dist/src/functions/credential-users.function.js.map +1 -1
- package/dist/src/functions/delete-agent-thread.function.d.ts +4 -4
- package/dist/src/functions/delete-agent-thread.function.d.ts.map +1 -1
- package/dist/src/functions/delete-agent-thread.function.js +1 -1
- package/dist/src/functions/delete-agent-thread.function.js.map +1 -1
- package/dist/src/functions/delete-scenario-run.function.d.ts +8 -0
- package/dist/src/functions/delete-scenario-run.function.d.ts.map +1 -0
- package/dist/src/functions/delete-scenario-run.function.js +11 -0
- package/dist/src/functions/delete-scenario-run.function.js.map +1 -0
- package/dist/src/functions/delete-workflow-run.function.d.ts +4 -4
- package/dist/src/functions/delete-workflow-run.function.d.ts.map +1 -1
- package/dist/src/functions/delete-workflow-run.function.js +1 -1
- package/dist/src/functions/delete-workflow-run.function.js.map +1 -1
- package/dist/src/functions/get-addon-categories.function.d.ts +1 -1
- package/dist/src/functions/get-addon-categories.function.d.ts.map +1 -1
- package/dist/src/functions/get-addon-categories.function.js +1 -1
- package/dist/src/functions/get-addon-categories.function.js.map +1 -1
- package/dist/src/functions/get-addon-icon.function.d.ts +4 -4
- package/dist/src/functions/get-addon-icon.function.d.ts.map +1 -1
- package/dist/src/functions/get-addon-icon.function.js +1 -1
- package/dist/src/functions/get-addon-icon.function.js.map +1 -1
- package/dist/src/functions/get-addon-instances.function.d.ts +4 -4
- package/dist/src/functions/get-addon-instances.function.d.ts.map +1 -1
- package/dist/src/functions/get-addon-instances.function.js +2 -2
- package/dist/src/functions/get-addon-instances.function.js.map +1 -1
- package/dist/src/functions/get-addon-meta.function.d.ts +1 -1
- package/dist/src/functions/get-addon-meta.function.d.ts.map +1 -1
- package/dist/src/functions/get-addon-meta.function.js +1 -1
- package/dist/src/functions/get-addon-meta.function.js.map +1 -1
- package/dist/src/functions/get-addon-package.function.d.ts +4 -4
- package/dist/src/functions/get-addon-package.function.d.ts.map +1 -1
- package/dist/src/functions/get-addon-package.function.js +1 -1
- package/dist/src/functions/get-addon-package.function.js.map +1 -1
- package/dist/src/functions/get-agent-run-scores.function.d.ts +4 -4
- package/dist/src/functions/get-agent-run-scores.function.d.ts.map +1 -1
- package/dist/src/functions/get-agent-run-scores.function.js +4 -3
- package/dist/src/functions/get-agent-run-scores.function.js.map +1 -1
- package/dist/src/functions/get-agent-thread-messages.function.d.ts +4 -4
- package/dist/src/functions/get-agent-thread-messages.function.d.ts.map +1 -1
- package/dist/src/functions/get-agent-thread-messages.function.js +1 -1
- package/dist/src/functions/get-agent-thread-messages.function.js.map +1 -1
- package/dist/src/functions/get-agent-thread-runs.function.d.ts +4 -4
- package/dist/src/functions/get-agent-thread-runs.function.d.ts.map +1 -1
- package/dist/src/functions/get-agent-thread-runs.function.js +3 -3
- package/dist/src/functions/get-agent-thread-runs.function.js.map +1 -1
- package/dist/src/functions/get-agent-threads.function.d.ts +4 -4
- package/dist/src/functions/get-agent-threads.function.d.ts.map +1 -1
- package/dist/src/functions/get-agent-threads.function.js +3 -3
- package/dist/src/functions/get-agent-threads.function.js.map +1 -1
- package/dist/src/functions/get-agent-threads.function.test.js +1 -1
- package/dist/src/functions/get-agent-threads.function.test.js.map +1 -1
- package/dist/src/functions/get-all-meta.function.d.ts +1 -1
- package/dist/src/functions/get-all-meta.function.d.ts.map +1 -1
- package/dist/src/functions/get-all-meta.function.js +1 -1
- package/dist/src/functions/get-all-meta.function.js.map +1 -1
- package/dist/src/functions/get-audit-filters.function.d.ts +1 -1
- package/dist/src/functions/get-audit-filters.function.d.ts.map +1 -1
- package/dist/src/functions/get-audit-filters.function.js +1 -1
- package/dist/src/functions/get-audit-filters.function.js.map +1 -1
- package/dist/src/functions/get-audits.function.d.ts +2 -2
- package/dist/src/functions/get-audits.function.d.ts.map +1 -1
- package/dist/src/functions/get-audits.function.js +1 -1
- package/dist/src/functions/get-audits.function.js.map +1 -1
- package/dist/src/functions/get-auth-providers.function.d.ts +1 -1
- package/dist/src/functions/get-auth-providers.function.d.ts.map +1 -1
- package/dist/src/functions/get-auth-providers.function.js +1 -1
- package/dist/src/functions/get-auth-providers.function.js.map +1 -1
- package/dist/src/functions/get-channel-snippets.function.d.ts +4 -4
- package/dist/src/functions/get-channel-snippets.function.d.ts.map +1 -1
- package/dist/src/functions/get-channel-snippets.function.js +1 -1
- package/dist/src/functions/get-channel-snippets.function.js.map +1 -1
- package/dist/src/functions/get-db-schema.function.d.ts +1 -1
- package/dist/src/functions/get-db-schema.function.d.ts.map +1 -1
- package/dist/src/functions/get-db-schema.function.js +2 -2
- package/dist/src/functions/get-db-schema.function.js.map +1 -1
- package/dist/src/functions/get-functions-meta.function.d.ts +1 -1
- package/dist/src/functions/get-functions-meta.function.d.ts.map +1 -1
- package/dist/src/functions/get-functions-meta.function.js +1 -1
- package/dist/src/functions/get-functions-meta.function.js.map +1 -1
- package/dist/src/functions/get-installed-addons.function.d.ts +1 -1
- package/dist/src/functions/get-installed-addons.function.d.ts.map +1 -1
- package/dist/src/functions/get-installed-addons.function.js +2 -2
- package/dist/src/functions/get-installed-addons.function.js.map +1 -1
- package/dist/src/functions/get-installed-package.function.d.ts +4 -4
- package/dist/src/functions/get-installed-package.function.d.ts.map +1 -1
- package/dist/src/functions/get-installed-package.function.js +11 -4
- package/dist/src/functions/get-installed-package.function.js.map +1 -1
- package/dist/src/functions/get-installed-package.function.test.d.ts +2 -0
- package/dist/src/functions/get-installed-package.function.test.d.ts.map +1 -0
- package/dist/src/functions/get-installed-package.function.test.js +35 -0
- package/dist/src/functions/get-installed-package.function.test.js.map +1 -0
- package/dist/src/functions/get-knowledge.function.d.ts +1 -1
- package/dist/src/functions/get-knowledge.function.d.ts.map +1 -1
- package/dist/src/functions/get-knowledge.function.js +2 -2
- package/dist/src/functions/get-knowledge.function.js.map +1 -1
- package/dist/src/functions/get-knowledge.function.test.js +1 -1
- package/dist/src/functions/get-my-access.function.d.ts +4 -4
- package/dist/src/functions/get-my-access.function.d.ts.map +1 -1
- package/dist/src/functions/get-my-access.function.js +1 -1
- package/dist/src/functions/get-my-access.function.js.map +1 -1
- package/dist/src/functions/get-openapi-categories.function.d.ts +1 -1
- package/dist/src/functions/get-openapi-categories.function.d.ts.map +1 -1
- package/dist/src/functions/get-openapi-categories.function.js +1 -1
- package/dist/src/functions/get-openapi-categories.function.js.map +1 -1
- package/dist/src/functions/get-openapi-detail.function.d.ts +4 -4
- package/dist/src/functions/get-openapi-detail.function.d.ts.map +1 -1
- package/dist/src/functions/get-openapi-detail.function.js +1 -1
- package/dist/src/functions/get-openapi-detail.function.js.map +1 -1
- package/dist/src/functions/get-openapis.function.d.ts +4 -4
- package/dist/src/functions/get-openapis.function.d.ts.map +1 -1
- package/dist/src/functions/get-openapis.function.js +1 -1
- package/dist/src/functions/get-openapis.function.js.map +1 -1
- package/dist/src/functions/get-scenario-artifact.function.d.ts +19 -0
- package/dist/src/functions/get-scenario-artifact.function.d.ts.map +1 -0
- package/dist/src/functions/get-scenario-artifact.function.js +30 -0
- package/dist/src/functions/get-scenario-artifact.function.js.map +1 -0
- package/dist/src/functions/get-scenario-run.function.d.ts +9 -0
- package/dist/src/functions/get-scenario-run.function.d.ts.map +1 -0
- package/dist/src/functions/get-scenario-run.function.js +14 -0
- package/dist/src/functions/get-scenario-run.function.js.map +1 -0
- package/dist/src/functions/get-schema.function.d.ts +4 -4
- package/dist/src/functions/get-schema.function.d.ts.map +1 -1
- package/dist/src/functions/get-schema.function.js +1 -1
- package/dist/src/functions/get-schema.function.js.map +1 -1
- package/dist/src/functions/get-scorers.function.d.ts +1 -1
- package/dist/src/functions/get-scorers.function.d.ts.map +1 -1
- package/dist/src/functions/get-scorers.function.js +2 -2
- package/dist/src/functions/get-scorers.function.js.map +1 -1
- package/dist/src/functions/get-security-audit.function.d.ts +2 -2
- package/dist/src/functions/get-security-audit.function.d.ts.map +1 -1
- package/dist/src/functions/get-security-audit.function.js +1 -1
- package/dist/src/functions/get-security-audit.function.js.map +1 -1
- package/dist/src/functions/get-state-diff.function.d.ts +4 -4
- package/dist/src/functions/get-state-diff.function.d.ts.map +1 -1
- package/dist/src/functions/get-state-diff.function.js +1 -1
- package/dist/src/functions/get-state-diff.function.js.map +1 -1
- package/dist/src/functions/get-surface.function.d.ts +3 -0
- package/dist/src/functions/get-surface.function.d.ts.map +1 -0
- package/dist/src/functions/get-surface.function.js +10 -0
- package/dist/src/functions/get-surface.function.js.map +1 -0
- package/dist/src/functions/get-webhook-delivery.function.d.ts +5 -5
- package/dist/src/functions/get-webhook-delivery.function.d.ts.map +1 -1
- package/dist/src/functions/get-webhook-delivery.function.js +1 -1
- package/dist/src/functions/get-webhook-delivery.function.js.map +1 -1
- package/dist/src/functions/get-workflow-meta-by-id.function.d.ts +13 -13
- package/dist/src/functions/get-workflow-meta-by-id.function.d.ts.map +1 -1
- package/dist/src/functions/get-workflow-meta-by-id.function.js +1 -1
- package/dist/src/functions/get-workflow-meta-by-id.function.js.map +1 -1
- package/dist/src/functions/get-workflow-run-history.function.d.ts +4 -4
- package/dist/src/functions/get-workflow-run-history.function.d.ts.map +1 -1
- package/dist/src/functions/get-workflow-run-history.function.js +1 -1
- package/dist/src/functions/get-workflow-run-history.function.js.map +1 -1
- package/dist/src/functions/get-workflow-run-names.function.d.ts +1 -1
- package/dist/src/functions/get-workflow-run-names.function.d.ts.map +1 -1
- package/dist/src/functions/get-workflow-run-names.function.js +1 -1
- package/dist/src/functions/get-workflow-run-names.function.js.map +1 -1
- package/dist/src/functions/get-workflow-run-steps.function.d.ts +4 -4
- package/dist/src/functions/get-workflow-run-steps.function.d.ts.map +1 -1
- package/dist/src/functions/get-workflow-run-steps.function.js +1 -1
- package/dist/src/functions/get-workflow-run-steps.function.js.map +1 -1
- package/dist/src/functions/get-workflow-run.function.d.ts +4 -4
- package/dist/src/functions/get-workflow-run.function.d.ts.map +1 -1
- package/dist/src/functions/get-workflow-run.function.js +1 -1
- package/dist/src/functions/get-workflow-run.function.js.map +1 -1
- package/dist/src/functions/get-workflow-runs.function.d.ts +4 -4
- package/dist/src/functions/get-workflow-runs.function.d.ts.map +1 -1
- package/dist/src/functions/get-workflow-runs.function.js +1 -1
- package/dist/src/functions/get-workflow-runs.function.js.map +1 -1
- package/dist/src/functions/get-workflow-version.function.d.ts +4 -4
- package/dist/src/functions/get-workflow-version.function.d.ts.map +1 -1
- package/dist/src/functions/get-workflow-version.function.js +1 -1
- package/dist/src/functions/get-workflow-version.function.js.map +1 -1
- package/dist/src/functions/install-addon.function.d.ts +4 -4
- package/dist/src/functions/install-addon.function.d.ts.map +1 -1
- package/dist/src/functions/install-addon.function.js +4 -4
- package/dist/src/functions/install-addon.function.js.map +1 -1
- package/dist/src/functions/install-addon.function.test.js +4 -4
- package/dist/src/functions/install-addon.function.test.js.map +1 -1
- package/dist/src/functions/install-openapi-addon.function.d.ts +4 -4
- package/dist/src/functions/install-openapi-addon.function.d.ts.map +1 -1
- package/dist/src/functions/install-openapi-addon.function.js +3 -3
- package/dist/src/functions/install-openapi-addon.function.js.map +1 -1
- package/dist/src/functions/list-scenario-runs.function.d.ts +9 -0
- package/dist/src/functions/list-scenario-runs.function.d.ts.map +1 -0
- package/dist/src/functions/list-scenario-runs.function.js +14 -0
- package/dist/src/functions/list-scenario-runs.function.js.map +1 -0
- package/dist/src/functions/list-webhook-deliveries.function.d.ts +5 -5
- package/dist/src/functions/list-webhook-deliveries.function.d.ts.map +1 -1
- package/dist/src/functions/list-webhook-deliveries.function.js +1 -1
- package/dist/src/functions/list-webhook-deliveries.function.js.map +1 -1
- package/dist/src/functions/ping.function.d.ts +4 -4
- package/dist/src/functions/ping.function.d.ts.map +1 -1
- package/dist/src/functions/ping.function.js +1 -1
- package/dist/src/functions/ping.function.js.map +1 -1
- package/dist/src/functions/read-agent-source.function.d.ts +4 -4
- package/dist/src/functions/read-agent-source.function.d.ts.map +1 -1
- package/dist/src/functions/read-agent-source.function.js +2 -2
- package/dist/src/functions/read-agent-source.function.js.map +1 -1
- package/dist/src/functions/read-function-body.function.d.ts +4 -4
- package/dist/src/functions/read-function-body.function.d.ts.map +1 -1
- package/dist/src/functions/read-function-body.function.js +2 -2
- package/dist/src/functions/read-function-body.function.js.map +1 -1
- package/dist/src/functions/read-function-source.function.d.ts +4 -4
- package/dist/src/functions/read-function-source.function.d.ts.map +1 -1
- package/dist/src/functions/read-function-source.function.js +2 -2
- package/dist/src/functions/read-function-source.function.js.map +1 -1
- package/dist/src/functions/render-email-preview.function.d.ts +1 -1
- package/dist/src/functions/render-email-preview.function.d.ts.map +1 -1
- package/dist/src/functions/render-email-preview.function.js +8 -19
- package/dist/src/functions/render-email-preview.function.js.map +1 -1
- package/dist/src/functions/render-email-preview.function.test.js +1 -1
- package/dist/src/functions/render-email-preview.function.test.js.map +1 -1
- package/dist/src/functions/render-email-template.utils.d.ts +8 -3
- package/dist/src/functions/render-email-template.utils.d.ts.map +1 -1
- package/dist/src/functions/render-email-template.utils.js +71 -17
- package/dist/src/functions/render-email-template.utils.js.map +1 -1
- package/dist/src/functions/render-email-template.utils.test.js +56 -23
- package/dist/src/functions/render-email-template.utils.test.js.map +1 -1
- package/dist/src/functions/run-security-audit.function.d.ts +2 -2
- package/dist/src/functions/run-security-audit.function.d.ts.map +1 -1
- package/dist/src/functions/run-security-audit.function.js +1 -1
- package/dist/src/functions/run-security-audit.function.js.map +1 -1
- package/dist/src/functions/run-security-audit.function.test.d.ts +2 -0
- package/dist/src/functions/run-security-audit.function.test.d.ts.map +1 -0
- package/dist/src/functions/run-security-audit.function.test.js +98 -0
- package/dist/src/functions/run-security-audit.function.test.js.map +1 -0
- package/dist/src/functions/scope-add-scope-to-user.function.d.ts +4 -4
- package/dist/src/functions/scope-add-scope-to-user.function.d.ts.map +1 -1
- package/dist/src/functions/scope-add-scope-to-user.function.js +1 -1
- package/dist/src/functions/scope-add-scope-to-user.function.js.map +1 -1
- package/dist/src/functions/scope-add-user-to-role.function.d.ts +4 -4
- package/dist/src/functions/scope-add-user-to-role.function.d.ts.map +1 -1
- package/dist/src/functions/scope-add-user-to-role.function.js +1 -1
- package/dist/src/functions/scope-add-user-to-role.function.js.map +1 -1
- package/dist/src/functions/scope-create-role.function.d.ts +4 -4
- package/dist/src/functions/scope-create-role.function.d.ts.map +1 -1
- package/dist/src/functions/scope-create-role.function.js +1 -1
- package/dist/src/functions/scope-create-role.function.js.map +1 -1
- package/dist/src/functions/scope-delete-role.function.d.ts +4 -4
- package/dist/src/functions/scope-delete-role.function.d.ts.map +1 -1
- package/dist/src/functions/scope-delete-role.function.js +1 -1
- package/dist/src/functions/scope-delete-role.function.js.map +1 -1
- package/dist/src/functions/scope-list-declared.function.d.ts +4 -4
- package/dist/src/functions/scope-list-declared.function.d.ts.map +1 -1
- package/dist/src/functions/scope-list-declared.function.js +1 -1
- package/dist/src/functions/scope-list-declared.function.js.map +1 -1
- package/dist/src/functions/scope-list-roles.function.d.ts +5 -5
- package/dist/src/functions/scope-list-roles.function.d.ts.map +1 -1
- package/dist/src/functions/scope-list-roles.function.js +1 -1
- package/dist/src/functions/scope-list-roles.function.js.map +1 -1
- package/dist/src/functions/scope-list-user-roles.function.d.ts +4 -4
- package/dist/src/functions/scope-list-user-roles.function.d.ts.map +1 -1
- package/dist/src/functions/scope-list-user-roles.function.js +1 -1
- package/dist/src/functions/scope-list-user-roles.function.js.map +1 -1
- package/dist/src/functions/scope-remove-scope-from-user.function.d.ts +4 -4
- package/dist/src/functions/scope-remove-scope-from-user.function.d.ts.map +1 -1
- package/dist/src/functions/scope-remove-scope-from-user.function.js +1 -1
- package/dist/src/functions/scope-remove-scope-from-user.function.js.map +1 -1
- package/dist/src/functions/scope-remove-user-from-role.function.d.ts +4 -4
- package/dist/src/functions/scope-remove-user-from-role.function.d.ts.map +1 -1
- package/dist/src/functions/scope-remove-user-from-role.function.js +1 -1
- package/dist/src/functions/scope-remove-user-from-role.function.js.map +1 -1
- package/dist/src/functions/scope-set-role-scopes.function.d.ts +4 -4
- package/dist/src/functions/scope-set-role-scopes.function.d.ts.map +1 -1
- package/dist/src/functions/scope-set-role-scopes.function.js +1 -1
- package/dist/src/functions/scope-set-role-scopes.function.js.map +1 -1
- package/dist/src/functions/secret-get.function.d.ts +4 -4
- package/dist/src/functions/secret-get.function.d.ts.map +1 -1
- package/dist/src/functions/secret-get.function.js +1 -1
- package/dist/src/functions/secret-get.function.js.map +1 -1
- package/dist/src/functions/secret-has.function.d.ts +4 -4
- package/dist/src/functions/secret-has.function.d.ts.map +1 -1
- package/dist/src/functions/secret-has.function.js +1 -1
- package/dist/src/functions/secret-has.function.js.map +1 -1
- package/dist/src/functions/secret-set.function.d.ts +4 -4
- package/dist/src/functions/secret-set.function.d.ts.map +1 -1
- package/dist/src/functions/secret-set.function.js +1 -1
- package/dist/src/functions/secret-set.function.js.map +1 -1
- package/dist/src/functions/stream-workflow-run.function.d.ts +4 -4
- package/dist/src/functions/stream-workflow-run.function.d.ts.map +1 -1
- package/dist/src/functions/stream-workflow-run.function.js +1 -1
- package/dist/src/functions/stream-workflow-run.function.js.map +1 -1
- package/dist/src/functions/update-agent-config.function.d.ts +4 -4
- package/dist/src/functions/update-agent-config.function.d.ts.map +1 -1
- package/dist/src/functions/update-agent-config.function.js +2 -2
- package/dist/src/functions/update-agent-config.function.js.map +1 -1
- package/dist/src/functions/update-dependency.function.d.ts +5 -5
- package/dist/src/functions/update-dependency.function.d.ts.map +1 -1
- package/dist/src/functions/update-dependency.function.js +1 -1
- package/dist/src/functions/update-dependency.function.js.map +1 -1
- package/dist/src/functions/update-dependency.function.test.d.ts +2 -0
- package/dist/src/functions/update-dependency.function.test.d.ts.map +1 -0
- package/dist/src/functions/update-dependency.function.test.js +181 -0
- package/dist/src/functions/update-dependency.function.test.js.map +1 -0
- package/dist/src/functions/update-email-template.function.d.ts +4 -4
- package/dist/src/functions/update-email-template.function.d.ts.map +1 -1
- package/dist/src/functions/update-email-template.function.js +2 -3
- package/dist/src/functions/update-email-template.function.js.map +1 -1
- package/dist/src/functions/update-function-body.function.d.ts +4 -4
- package/dist/src/functions/update-function-body.function.d.ts.map +1 -1
- package/dist/src/functions/update-function-body.function.js +2 -2
- package/dist/src/functions/update-function-body.function.js.map +1 -1
- package/dist/src/functions/update-function-config.function.d.ts +4 -4
- package/dist/src/functions/update-function-config.function.d.ts.map +1 -1
- package/dist/src/functions/update-function-config.function.js +2 -2
- package/dist/src/functions/update-function-config.function.js.map +1 -1
- package/dist/src/lib/addon-readiness.test.js +1 -1
- package/dist/src/lib/audit-exec.d.ts +2 -2
- package/dist/src/lib/audit-exec.d.ts.map +1 -1
- package/dist/src/lib/audit-exec.test.d.ts +2 -0
- package/dist/src/lib/audit-exec.test.d.ts.map +1 -0
- package/dist/src/lib/audit-exec.test.js +97 -0
- package/dist/src/lib/audit-exec.test.js.map +1 -0
- package/dist/src/lib/derive-instance-overrides.js +1 -1
- package/dist/src/lib/resolve-audit-users.d.ts +1 -1
- package/dist/src/lib/resolve-audit-users.d.ts.map +1 -1
- package/dist/src/lib/resolve-package-manager.d.ts +11 -0
- package/dist/src/lib/resolve-package-manager.d.ts.map +1 -1
- package/dist/src/lib/resolve-package-manager.js +49 -20
- package/dist/src/lib/resolve-package-manager.js.map +1 -1
- package/dist/src/lib/resolve-package-manager.test.js +39 -1
- package/dist/src/lib/resolve-package-manager.test.js.map +1 -1
- package/dist/src/lib/surface.d.ts +30 -0
- package/dist/src/lib/surface.d.ts.map +1 -0
- package/dist/src/lib/surface.js +47 -0
- package/dist/src/lib/surface.js.map +1 -0
- package/dist/src/lib/surface.test.d.ts +2 -0
- package/dist/src/lib/surface.test.d.ts.map +1 -0
- package/dist/src/lib/surface.test.js +99 -0
- package/dist/src/lib/surface.test.js.map +1 -0
- package/dist/src/lib/surface.types.d.ts +59 -0
- package/dist/src/lib/surface.types.d.ts.map +1 -0
- package/dist/src/lib/surface.types.js +2 -0
- package/dist/src/lib/surface.types.js.map +1 -0
- package/dist/src/scopes.js +21 -59
- package/dist/src/scopes.js.map +1 -1
- package/dist/src/services/addon-readiness.service.d.ts +2 -1
- package/dist/src/services/addon-readiness.service.d.ts.map +1 -1
- package/dist/src/services/addon-readiness.service.js.map +1 -1
- package/dist/src/services/addon.service.d.ts +5 -5
- package/dist/src/services/addon.service.d.ts.map +1 -1
- package/dist/src/services/db-schema.service.d.ts +1 -1
- package/dist/src/services/db-schema.service.d.ts.map +1 -1
- package/dist/src/services/wiring.service.d.ts +7 -7
- package/dist/src/services/wiring.service.d.ts.map +1 -1
- package/dist/src/services.d.ts +1 -1
- package/dist/src/services.d.ts.map +1 -1
- package/dist/src/services.js +12 -9
- package/dist/src/services.js.map +1 -1
- package/dist/types/application-types.d.ts +10 -2
- package/package.json +17 -20
- package/dist/.pikku/schemas/schemas/GetAuditFiltersOutput.schema.json +0 -1
- package/dist/.pikku/schemas/schemas/GetAuditsInput.schema.json +0 -1
- 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
|