@pikku/core 0.12.142 → 0.12.144
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics/analytics.d.ts +14 -0
- package/dist/analytics/analytics.js +14 -0
- package/dist/analytics/analytics.types.d.ts +1 -0
- package/dist/analytics/anonymous-analytics-identity.d.ts +1 -0
- package/dist/analytics/cookie-analytics-identity.d.ts +1 -0
- package/dist/analytics/mint-cookie.d.ts +1 -0
- package/dist/{wirings/channel/channel-middleware-runner.d.ts → channel-middleware-runner.d.ts} +17 -3
- package/dist/{wirings/channel/channel-middleware-runner.js → channel-middleware-runner.js} +24 -8
- package/dist/classification/data-classification.d.ts +13 -0
- package/dist/classification/secret-value.d.ts +7 -0
- package/dist/classification/secret-value.js +7 -0
- package/dist/crypto-utils.d.ts +93 -0
- package/dist/crypto-utils.js +92 -0
- package/dist/dev/hot-reload.d.ts +16 -0
- package/dist/dev/hot-reload.js +16 -1
- package/dist/dev/module-runner.js +7 -3
- package/dist/dev/reload-meta.js +1 -1
- package/dist/errors/error-handler.d.ts +9 -0
- package/dist/errors/error-handler.js +8 -0
- package/dist/errors/errors.d.ts +219 -0
- package/dist/errors/errors.js +227 -0
- package/dist/errors/serialized-error.d.ts +4 -0
- package/dist/function/abort-scope.d.ts +5 -0
- package/dist/function/function-meta.types.d.ts +20 -0
- package/dist/function/function-runner.d.ts +41 -0
- package/dist/function/function-runner.js +57 -11
- package/dist/function/functions.types.d.ts +59 -0
- package/dist/function/functions.types.js +23 -0
- package/dist/function/list.types.d.ts +4 -0
- package/dist/lifecycle.d.ts +12 -1
- package/dist/lifecycle.js +12 -1
- package/dist/middleware/addon-scope-cap.d.ts +4 -0
- package/dist/middleware/addon-scope-cap.js +7 -3
- package/dist/middleware/auth-apikey.js +3 -3
- package/dist/middleware/auth-bearer.js +5 -13
- package/dist/middleware/auth-cookie.js +3 -3
- package/dist/middleware/middleware-factories.d.ts +17 -0
- package/dist/middleware/middleware-factories.js +17 -0
- package/dist/middleware/middleware.types.d.ts +23 -0
- package/dist/middleware/remote-auth.d.ts +15 -0
- package/dist/middleware/remote-auth.js +18 -3
- package/dist/middleware/remote-jobs-secret.js +2 -10
- package/dist/middleware-runner.d.ts +7 -0
- package/dist/middleware-runner.js +23 -7
- package/dist/permissions.d.ts +13 -0
- package/dist/permissions.js +13 -0
- package/dist/pikku-state.d.ts +49 -0
- package/dist/pikku-state.js +49 -0
- package/dist/remote.js +20 -5
- package/dist/schema.d.ts +36 -0
- package/dist/schema.js +36 -0
- package/dist/services/agent-run-state-service.d.ts +8 -0
- package/dist/services/agent-runner-service.d.ts +24 -0
- package/dist/services/agent-storage-service.d.ts +8 -0
- package/dist/services/ai-embedding-service.d.ts +4 -0
- package/dist/services/audit-service.d.ts +48 -0
- package/dist/services/audit-service.js +22 -0
- package/dist/services/content-service.d.ts +34 -0
- package/dist/services/credential-wire-service.d.ts +9 -0
- package/dist/services/credential-wire-service.js +9 -0
- package/dist/services/deployment-service.d.ts +14 -0
- package/dist/services/email-service.d.ts +20 -0
- package/dist/services/email-template.d.ts +24 -0
- package/dist/services/email-template.js +12 -0
- package/dist/services/file-scenario-run-store.d.ts +5 -0
- package/dist/services/file-scenario-run-store.js +4 -0
- package/dist/services/gateway-service.d.ts +5 -0
- package/dist/services/in-memory-agent-run-state-service.d.ts +5 -0
- package/dist/services/in-memory-agent-run-state-service.js +5 -0
- package/dist/services/in-memory-lease-service.d.ts +5 -0
- package/dist/services/in-memory-lease-service.js +5 -0
- package/dist/services/in-memory-session-store.d.ts +4 -0
- package/dist/services/in-memory-session-store.js +4 -0
- package/dist/services/incoming-webhook-queue.d.ts +2 -0
- package/dist/services/incoming-webhook-queue.js +2 -0
- package/dist/services/incoming-webhook-service.d.ts +11 -1
- package/dist/services/incoming-webhook-service.js +5 -1
- package/dist/services/index.d.ts +1 -5
- package/dist/services/index.js +1 -5
- package/dist/services/jwt-service.d.ts +8 -0
- package/dist/services/lease-service.d.ts +5 -0
- package/dist/services/lease-service.js +1 -0
- package/dist/services/local-content-request-handler.d.ts +20 -0
- package/dist/services/local-content-request-handler.js +11 -0
- package/dist/services/local-content.d.ts +45 -0
- package/dist/services/local-content.js +35 -0
- package/dist/services/local-credential-service.d.ts +5 -0
- package/dist/services/local-credential-service.js +5 -0
- package/dist/services/local-email-service.d.ts +7 -0
- package/dist/services/local-email-service.js +7 -0
- package/dist/services/local-secrets.d.ts +8 -0
- package/dist/services/local-secrets.js +8 -0
- package/dist/services/local-variables.d.ts +6 -0
- package/dist/services/local-variables.js +6 -0
- package/dist/services/logger.d.ts +4 -0
- package/dist/services/logger.js +4 -0
- package/dist/services/meta-service.d.ts +38 -0
- package/dist/services/meta-service.js +6 -0
- package/dist/services/queue-webhook-service.d.ts +19 -0
- package/dist/services/queue-webhook-service.js +19 -0
- package/dist/services/remote-jobs.d.ts +8 -13
- package/dist/services/remote-jobs.js +3 -54
- package/dist/services/scenario-cookie-jar.d.ts +4 -0
- package/dist/services/scheduler-service.d.ts +16 -0
- package/dist/services/scheduler-service.js +12 -0
- package/dist/services/schema-service.d.ts +9 -0
- package/dist/services/scope-service.d.ts +10 -0
- package/dist/services/scoped-secret-service.d.ts +5 -0
- package/dist/services/scoped-secret-service.js +5 -0
- package/dist/services/secret-host-binding.d.ts +5 -0
- package/dist/services/secret-host-binding.js +5 -0
- package/dist/services/secret-service.d.ts +19 -1
- package/dist/services/secretless.d.ts +6 -0
- package/dist/services/secretless.js +6 -0
- package/dist/services/session-store.d.ts +5 -0
- package/dist/services/stub-tracker.d.ts +1 -0
- package/dist/services/temporary-file-service.d.ts +9 -0
- package/dist/services/temporary-file-service.js +9 -0
- package/dist/services/trigger-service.d.ts +4 -0
- package/dist/services/trigger-source-store.d.ts +13 -0
- package/dist/services/trigger-source-store.js +7 -0
- package/dist/services/typed-credential-service.d.ts +6 -0
- package/dist/services/typed-credential-service.js +5 -0
- package/dist/services/typed-secret-service.d.ts +12 -0
- package/dist/services/typed-secret-service.js +11 -0
- package/dist/services/typed-variables-service.d.ts +1 -0
- package/dist/services/user-session-service.d.ts +31 -1
- package/dist/services/user-session-service.js +29 -3
- package/dist/services/v8-coverage-service.d.ts +27 -0
- package/dist/services/v8-coverage-service.js +5 -0
- package/dist/services/variables-service.d.ts +8 -0
- package/dist/services/virtual-user-sign-in.d.ts +1 -0
- package/dist/services/virtual-user-statement.d.ts +8 -0
- package/dist/services/virtual-user-statement.js +4 -0
- package/dist/services/webhook-service.d.ts +25 -0
- package/dist/services/webhook-service.js +15 -0
- package/dist/services/workflow-service.d.ts +6 -0
- package/dist/test-utils.js +1 -1
- package/dist/testing/service-tests.d.ts +4 -0
- package/dist/time-utils.d.ts +15 -0
- package/dist/time-utils.js +14 -0
- package/dist/types/core.types.d.ts +80 -0
- package/dist/types/state.types.d.ts +4 -0
- package/dist/utils/hmac.d.ts +3 -0
- package/dist/utils/safe-fetch.d.ts +14 -0
- package/dist/utils/safe-fetch.js +13 -0
- package/dist/utils/stable-stringify.d.ts +11 -0
- package/dist/utils/stable-stringify.js +33 -0
- package/dist/utils.d.ts +28 -0
- package/dist/utils.js +22 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.js +7 -0
- package/dist/wirings/addon/define-screens.d.ts +2 -0
- package/dist/wirings/addon/remote-addon-auth.d.ts +9 -0
- package/dist/wirings/addon/remote-addon-auth.js +5 -0
- package/dist/wirings/addon/wire-addon.d.ts +4 -0
- package/dist/wirings/addon/wire-remote-addon.d.ts +1 -0
- package/dist/wirings/agent/agent-agui.d.ts +14 -5
- package/dist/wirings/agent/agent-agui.js +17 -6
- package/dist/wirings/agent/agent-helpers.d.ts +61 -1
- package/dist/wirings/agent/agent-helpers.js +62 -2
- package/dist/wirings/agent/agent-interrupt.d.ts +5 -0
- package/dist/wirings/agent/agent-output.d.ts +20 -0
- package/dist/wirings/agent/agent-output.js +69 -0
- package/dist/wirings/agent/agent-prepare.d.ts +41 -0
- package/dist/wirings/agent/agent-prepare.js +38 -2
- package/dist/wirings/agent/agent-registry.d.ts +8 -0
- package/dist/wirings/agent/agent-registry.js +10 -4
- package/dist/wirings/agent/agent-runner.d.ts +33 -0
- package/dist/wirings/agent/agent-runner.js +40 -7
- package/dist/wirings/agent/agent-stream.d.ts +30 -0
- package/dist/wirings/agent/agent-stream.js +33 -11
- package/dist/wirings/agent/agent.types.d.ts +43 -0
- package/dist/wirings/agent/voice-input.d.ts +12 -0
- package/dist/wirings/agent/voice-input.js +12 -0
- package/dist/wirings/agent/voice-output.d.ts +14 -0
- package/dist/wirings/agent/voice-output.js +10 -0
- package/dist/wirings/agent-scorer/agent-scorer-judge.js +1 -2
- package/dist/wirings/agent-scorer/agent-scorer-registry.d.ts +10 -0
- package/dist/wirings/agent-scorer/agent-scorer-registry.js +10 -0
- package/dist/wirings/agent-scorer/agent-scorer-snapshots.d.ts +1 -0
- package/dist/wirings/agent-scorer/agent-scorer-snapshots.js +1 -0
- package/dist/wirings/agent-scorer/agent-scorer.types.d.ts +7 -0
- package/dist/wirings/channel/channel-common.js +1 -1
- package/dist/wirings/channel/channel-rpc.types.d.ts +5 -0
- package/dist/wirings/channel/channel-runner.d.ts +22 -0
- package/dist/wirings/channel/channel-runner.js +22 -0
- package/dist/wirings/channel/channel-store.d.ts +8 -0
- package/dist/wirings/channel/channel-store.js +7 -0
- package/dist/wirings/channel/channel.types.d.ts +18 -0
- package/dist/wirings/channel/define-channel-routes.d.ts +5 -0
- package/dist/wirings/channel/define-channel-routes.js +5 -0
- package/dist/wirings/channel/eventhub-service.d.ts +9 -0
- package/dist/wirings/channel/eventhub-store.d.ts +1 -0
- package/dist/wirings/channel/eventhub-store.js +1 -0
- package/dist/wirings/channel/index.d.ts +1 -1
- package/dist/wirings/channel/index.js +1 -1
- package/dist/wirings/channel/local/local-channel-handler.d.ts +1 -0
- package/dist/wirings/channel/local/local-channel-handler.js +1 -0
- package/dist/wirings/channel/local/local-channel-runner.d.ts +13 -0
- package/dist/wirings/channel/local/local-channel-runner.js +13 -0
- package/dist/wirings/channel/local/local-eventhub-service.d.ts +1 -0
- package/dist/wirings/channel/local/local-eventhub-service.js +1 -0
- package/dist/wirings/channel/log-channels.d.ts +1 -0
- package/dist/wirings/channel/log-channels.js +1 -0
- package/dist/wirings/channel/pikku-abstract-channel-handler.d.ts +5 -0
- package/dist/wirings/channel/pikku-abstract-channel-handler.js +5 -0
- package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +32 -0
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +31 -0
- package/dist/wirings/cli/channel/cli-channel-runner.d.ts +8 -0
- package/dist/wirings/cli/channel/cli-channel-runner.js +8 -0
- package/dist/wirings/cli/channel/cli-raw-channel-runner.d.ts +1 -0
- package/dist/wirings/cli/cli-runner.d.ts +43 -0
- package/dist/wirings/cli/cli-runner.js +43 -0
- package/dist/wirings/cli/command-parser.d.ts +13 -0
- package/dist/wirings/cli/command-parser.js +12 -0
- package/dist/wirings/credential/credential-overrides.d.ts +1 -0
- package/dist/wirings/credential/credential.types.d.ts +7 -0
- package/dist/wirings/credential/validate-credential-definitions.d.ts +7 -0
- package/dist/wirings/credential/validate-credential-definitions.js +7 -0
- package/dist/wirings/flag/cached-flag-source.d.ts +1 -0
- package/dist/wirings/flag/flag.types.d.ts +3 -0
- package/dist/wirings/gateway/gateway-runner.d.ts +23 -0
- package/dist/wirings/gateway/gateway-runner.js +23 -0
- package/dist/wirings/gateway/gateway.types.d.ts +3 -0
- package/dist/wirings/gateway/local-gateway-service.d.ts +10 -0
- package/dist/{services → wirings/gateway}/local-gateway-service.js +6 -2
- package/dist/wirings/http/http-routes.d.ts +21 -0
- package/dist/wirings/http/http-routes.js +11 -0
- package/dist/wirings/http/http-runner.d.ts +71 -0
- package/dist/wirings/http/http-runner.js +73 -5
- package/dist/wirings/http/http.types.d.ts +27 -0
- package/dist/wirings/http/index.d.ts +1 -0
- package/dist/wirings/http/index.js +1 -0
- package/dist/wirings/http/log-http-routes.d.ts +1 -0
- package/dist/wirings/http/log-http-routes.js +1 -0
- package/dist/wirings/http/merge-request-data.d.ts +12 -0
- package/dist/wirings/http/merge-request-data.js +42 -0
- package/dist/wirings/http/pikku-fetch-http-request.d.ts +1 -0
- package/dist/wirings/http/pikku-fetch-http-request.js +3 -32
- package/dist/wirings/http/pikku-fetch-http-response.d.ts +1 -0
- package/dist/wirings/http/pikku-fetch-http-response.js +1 -0
- package/dist/wirings/http/routers/http-router.d.ts +6 -0
- package/dist/wirings/http/routers/http-router.js +6 -0
- package/dist/wirings/http/web-request.d.ts +17 -0
- package/dist/wirings/http/web-request.js +17 -0
- package/dist/wirings/mcp/mcp-endpoint-registry.d.ts +7 -0
- package/dist/wirings/mcp/mcp-endpoint-registry.js +7 -0
- package/dist/wirings/mcp/mcp-runner.d.ts +63 -0
- package/dist/wirings/mcp/mcp-runner.js +62 -0
- package/dist/wirings/mcp/mcp.types.d.ts +12 -0
- package/dist/wirings/node/node.types.d.ts +4 -0
- package/dist/wirings/oauth2/oauth2.types.d.ts +2 -0
- package/dist/wirings/queue/in-memory-queue-service.d.ts +23 -0
- package/dist/wirings/queue/in-memory-queue-service.js +129 -0
- package/dist/wirings/queue/index.d.ts +2 -1
- package/dist/wirings/queue/index.js +1 -0
- package/dist/wirings/queue/queue-identity.js +2 -14
- package/dist/wirings/queue/queue-runner.d.ts +37 -0
- package/dist/wirings/queue/queue-runner.js +37 -0
- package/dist/wirings/queue/queue.types.d.ts +56 -0
- package/dist/wirings/queue/register-queue-helper.d.ts +12 -0
- package/dist/wirings/queue/register-queue-helper.js +11 -0
- package/dist/wirings/queue/remote-queue-job.d.ts +11 -0
- package/dist/wirings/queue/remote-queue-job.js +41 -0
- package/dist/wirings/queue/signed-queue-service.d.ts +4 -1
- package/dist/wirings/queue/signed-queue-service.js +3 -0
- package/dist/wirings/queue/validate-worker-config.d.ts +1 -0
- package/dist/wirings/role/role.types.d.ts +3 -0
- package/dist/wirings/rpc/rpc-runner.d.ts +24 -0
- package/dist/wirings/rpc/rpc-runner.js +37 -2
- package/dist/wirings/rpc/rpc-types.d.ts +2 -0
- package/dist/wirings/scheduler/index.d.ts +2 -1
- package/dist/wirings/scheduler/index.js +1 -0
- package/dist/wirings/scheduler/log-schedulers.d.ts +1 -0
- package/dist/wirings/scheduler/log-schedulers.js +1 -0
- package/dist/wirings/scheduler/remote-scheduled-job.d.ts +11 -0
- package/dist/wirings/scheduler/remote-scheduled-job.js +20 -0
- package/dist/wirings/scheduler/scheduler-runner.d.ts +29 -0
- package/dist/wirings/scheduler/scheduler-runner.js +28 -0
- package/dist/wirings/scheduler/scheduler.types.d.ts +15 -0
- package/dist/wirings/scope/scope.types.d.ts +5 -0
- package/dist/wirings/secret/index.d.ts +2 -2
- package/dist/wirings/secret/index.js +1 -1
- package/dist/wirings/secret/secret.types.d.ts +26 -1
- package/dist/wirings/secret/secret.types.js +1 -0
- package/dist/wirings/secret/validate-secret-definitions.d.ts +8 -0
- package/dist/wirings/secret/validate-secret-definitions.js +15 -0
- package/dist/wirings/trigger/in-memory-trigger-service.d.ts +11 -0
- package/dist/{services → wirings/trigger}/in-memory-trigger-service.js +10 -3
- package/dist/wirings/trigger/index.d.ts +1 -1
- package/dist/wirings/trigger/pikku-trigger-service.d.ts +8 -3
- package/dist/wirings/trigger/pikku-trigger-service.js +14 -3
- package/dist/wirings/trigger/trigger-runner.d.ts +27 -2
- package/dist/wirings/trigger/trigger-runner.js +35 -2
- package/dist/wirings/trigger/trigger.types.d.ts +26 -4
- package/dist/wirings/trigger/webhook-source-runner.d.ts +24 -0
- package/dist/wirings/trigger/webhook-source-runner.js +19 -0
- package/dist/wirings/trigger/webhook-source.types.d.ts +12 -2
- package/dist/wirings/trigger/webhook-source.types.js +1 -1
- package/dist/wirings/variable/validate-variable-definitions.d.ts +7 -0
- package/dist/wirings/variable/validate-variable-definitions.js +7 -0
- package/dist/wirings/variable/variable.types.d.ts +7 -0
- package/dist/wirings/virtual-user/conversation/conversation.types.d.ts +5 -0
- package/dist/wirings/virtual-user/conversation/run-conversation.d.ts +6 -0
- package/dist/wirings/virtual-user/conversation/run-conversation.js +1 -1
- package/dist/{services → wirings/virtual-user}/http-virtual-users.d.ts +4 -3
- package/dist/{services → wirings/virtual-user}/http-virtual-users.js +6 -6
- package/dist/wirings/virtual-user/index.d.ts +1 -1
- package/dist/wirings/virtual-user/index.js +1 -1
- package/dist/wirings/virtual-user/run-virtual-user.d.ts +2 -1
- package/dist/wirings/virtual-user/run-virtual-user.js +1 -14
- package/dist/wirings/virtual-user/virtual-user-declaration.types.d.ts +4 -0
- package/dist/wirings/virtual-user/virtual-user-scaffold.d.ts +10 -1
- package/dist/wirings/virtual-user/virtual-user-scaffold.js +5 -0
- package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +5 -0
- package/dist/wirings/virtual-user/virtual-user-schedule.js +1 -0
- package/dist/wirings/virtual-user/virtual-user-target.d.ts +1 -0
- package/dist/wirings/webhook/define-outgoing-webhook.d.ts +20 -0
- package/dist/wirings/webhook/define-outgoing-webhook.js +9 -0
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +8 -4
- package/dist/wirings/workflow/dsl/workflow-runner.d.ts +7 -0
- package/dist/wirings/workflow/dsl/workflow-runner.js +7 -0
- package/dist/wirings/workflow/feature.d.ts +12 -0
- package/dist/wirings/workflow/feature.js +12 -0
- package/dist/wirings/workflow/graph/graph-node.d.ts +5 -0
- package/dist/wirings/workflow/graph/graph-node.js +5 -0
- package/dist/wirings/workflow/graph/template.d.ts +6 -0
- package/dist/wirings/workflow/graph/template.js +5 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +12 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.js +10 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +11 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.js +1 -0
- package/dist/{services → wirings/workflow}/in-memory-workflow-service.d.ts +8 -3
- package/dist/{services → wirings/workflow}/in-memory-workflow-service.js +9 -4
- package/dist/wirings/workflow/pikku-scenario-service.d.ts +1 -1
- package/dist/wirings/workflow/pikku-scenario-service.js +2 -2
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +1 -0
- package/dist/wirings/workflow/pikku-workflow-service.js +1 -0
- package/dist/wirings/workflow/run-timeline.d.ts +21 -0
- package/dist/wirings/workflow/run-timeline.js +15 -7
- package/dist/wirings/workflow/scenario-coverage.d.ts +1 -0
- package/dist/wirings/workflow/scenario-poll.d.ts +1 -0
- package/dist/wirings/workflow/scenario-prose.d.ts +6 -0
- package/dist/wirings/workflow/scenario-prose.js +6 -0
- package/dist/wirings/workflow/scenario-run.types.d.ts +3 -0
- package/dist/wirings/workflow/scenario-step.types.d.ts +1 -0
- package/dist/wirings/workflow/scenario-step.types.js +1 -0
- package/dist/wirings/workflow/scenario-surface.js +1 -13
- package/dist/wirings/workflow/scenario.types.d.ts +6 -0
- package/dist/wirings/workflow/workflow-approval-policy.d.ts +6 -0
- package/dist/wirings/workflow/workflow-approval-policy.js +6 -0
- package/dist/wirings/workflow/workflow-constants.d.ts +7 -1
- package/dist/wirings/workflow/workflow-constants.js +10 -1
- package/dist/wirings/workflow/workflow-errors.d.ts +13 -0
- package/dist/wirings/workflow/workflow-errors.js +13 -0
- package/dist/wirings/workflow/workflow-invocation-id.d.ts +4 -0
- package/dist/wirings/workflow/workflow-invocation-id.js +4 -0
- package/dist/wirings/workflow/workflow-queue-workers.d.ts +3 -0
- package/dist/wirings/workflow/workflow-run-ownership.d.ts +1 -0
- package/dist/wirings/workflow/workflow-run-ownership.js +1 -0
- package/dist/wirings/workflow/workflow-status-stream.d.ts +1 -0
- package/dist/wirings/workflow/workflow-unwind-plan.js +2 -7
- package/dist/wirings/workflow/workflow.types.d.ts +40 -0
- package/package.json +26 -9
- package/CHANGELOG.md +0 -6961
- package/dist/services/in-memory-queue-service.d.ts +0 -8
- package/dist/services/in-memory-queue-service.js +0 -54
- package/dist/services/in-memory-trigger-service.d.ts +0 -4
- package/dist/services/local-gateway-service.d.ts +0 -6
- package/dist/utils/hash.d.ts +0 -2
- package/dist/utils/hash.js +0 -23
- package/knowledge/decisions/index.md +0 -19
- package/knowledge/decisions/internals/a-credential-name-declared-twice-must-agree-on-schema-and-type.md +0 -29
- package/knowledge/decisions/internals/a-grant-can-name-a-scope-declared-without-its-addon.md +0 -29
- package/knowledge/decisions/internals/a-held-run-is-woken-later-not-retried.md +0 -28
- package/knowledge/decisions/internals/a-non-streaming-agent-run-registers-with-agentrunstate-too.md +0 -22
- package/knowledge/decisions/internals/a-reset-suite-makes-the-dev-seed-the-fixture.md +0 -50
- package/knowledge/decisions/internals/a-resumed-agent-turn-is-as-interruptible-as-the-first.md +0 -20
- package/knowledge/decisions/internals/a-scenario-step-template-is-offered-unfilled.md +0 -21
- package/knowledge/decisions/internals/a-scheduled-task-writes-its-caller-session-before-it-runs.md +0 -22
- package/knowledge/decisions/internals/a-secret-set-in-memory-shadows-the-variable-of-the-same-name.md +0 -28
- package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +0 -49
- package/knowledge/decisions/internals/a-virtual-user-acts-through-invokeraw-so-a-refusal-is-data.md +0 -32
- package/knowledge/decisions/internals/a-virtual-user-cadence-is-a-row-not-a-timer.md +0 -66
- package/knowledge/decisions/internals/a-virtual-user-converse-signs-in-before-its-first-turn.md +0 -24
- package/knowledge/decisions/internals/a-virtual-user-decides-whether-to-trust-memory-once-per-turn.md +0 -21
- package/knowledge/decisions/internals/a-virtual-user-email-is-computed-with-the-run-id-as-a-sub-address.md +0 -34
- package/knowledge/decisions/internals/a-virtual-user-run-is-not-a-workflow-but-it-needs-a-trigger.md +0 -65
- package/knowledge/decisions/internals/a-wall-clock-threshold-is-a-load-test-in-disguise.md +0 -46
- package/knowledge/decisions/internals/a-workflow-wire-is-built-from-the-run-not-from-the-rpc-service.md +0 -45
- package/knowledge/decisions/internals/addon-package-roots-resolve-by-walking-node-module-search-paths.md +0 -26
- package/knowledge/decisions/internals/addon-pikku-meta-ships-at-the-package-root-or-under-dist.md +0 -32
- package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +0 -33
- package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +0 -28
- package/knowledge/decisions/internals/agent-agui-bridge-obeys-the-client-ordering-contract.md +0 -29
- package/knowledge/decisions/internals/agent-audio-chunks-carry-the-format-the-provider-returned.md +0 -20
- package/knowledge/decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md +0 -21
- package/knowledge/decisions/internals/agent-credential-suspensions-hide-the-tool-result.md +0 -26
- package/knowledge/decisions/internals/agent-delegate-and-supervise-hide-different-text.md +0 -26
- package/knowledge/decisions/internals/agent-llm-tool-arguments-have-nulls-stripped.md +0 -23
- package/knowledge/decisions/internals/agent-model-config-stays-a-single-resolution-seam.md +0 -25
- package/knowledge/decisions/internals/agent-onerror-hooks-cannot-change-the-failure.md +0 -22
- package/knowledge/decisions/internals/agent-runner-methods-must-keep-their-receiver.md +0 -22
- package/knowledge/decisions/internals/agent-speech-travels-as-a-custom-agui-event.md +0 -22
- package/knowledge/decisions/internals/agent-stream-persistence-is-best-effort.md +0 -27
- package/knowledge/decisions/internals/agent-sub-agents-inherit-the-parent-context-block.md +0 -26
- package/knowledge/decisions/internals/agent-tool-execute-failures-are-logged-unconditionally.md +0 -25
- package/knowledge/decisions/internals/agent-voice-input-transcribes-audio-parts-in-place.md +0 -22
- package/knowledge/decisions/internals/agent-working-memory-is-persisted-only-when-valid.md +0 -25
- package/knowledge/decisions/internals/an-addon-scope-root-loses-to-a-root-the-host-already-declares.md +0 -39
- package/knowledge/decisions/internals/an-agent-interrupt-is-not-a-failure.md +0 -23
- package/knowledge/decisions/internals/an-agent-is-offered-under-its-registry-key-and-only-within-the-virtual-users-scopes.md +0 -27
- package/knowledge/decisions/internals/an-agent-run-owned-by-another-instance-says-so.md +0 -25
- package/knowledge/decisions/internals/an-agent-stream-send-must-return-the-inner-sends-promise.md +0 -22
- package/knowledge/decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md +0 -20
- package/knowledge/decisions/internals/an-empty-transcript-is-not-recorded.md +0 -22
- package/knowledge/decisions/internals/an-oauth2-credential-implies-an-optional-app-secret.md +0 -26
- package/knowledge/decisions/internals/an-unref-d-timer-cannot-be-awaited-under-node-test.md +0 -66
- package/knowledge/decisions/internals/analytics-identity-resolvers-run-in-declared-order.md +0 -22
- package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +0 -30
- package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +0 -31
- package/knowledge/decisions/internals/channel-state-accessors-are-unsound-generics-that-every-implementation-asserts.md +0 -33
- package/knowledge/decisions/internals/channel-state-is-per-socket-session-state-is-per-user.md +0 -29
- package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +0 -28
- package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +0 -27
- package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +0 -28
- package/knowledge/decisions/internals/cli-stdout-is-reserved-for-machine-readable-output.md +0 -34
- package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +0 -29
- package/knowledge/decisions/internals/core-column-form-is-an-axis-of-its-own.md +0 -84
- package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +0 -41
- package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +0 -44
- package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +0 -39
- package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +0 -42
- package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +0 -39
- package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +0 -43
- package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +0 -38
- package/knowledge/decisions/internals/core-state-is-a-global-map-written-only-at-registration-time.md +0 -44
- package/knowledge/decisions/internals/email-meta-is-read-uncached-because-codegen-rewrites-it-mid-session.md +0 -27
- package/knowledge/decisions/internals/feature-flag-declarations-refuse-an-empty-anyof-and-conflicting-scopes.md +0 -22
- package/knowledge/decisions/internals/feature-flags-fail-open-and-never-enforce-access.md +0 -28
- package/knowledge/decisions/internals/flag-sync-rewrites-only-the-declared-text.md +0 -24
- package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +0 -32
- package/knowledge/decisions/internals/gateway-listener-middleware-runs-without-an-rpc-on-the-wire.md +0 -43
- package/knowledge/decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md +0 -28
- package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +0 -31
- package/knowledge/decisions/internals/generated-src-paths-in-pikku-meta-are-absolute.md +0 -26
- package/knowledge/decisions/internals/global-middleware-resolves-from-the-root-namespace-too.md +0 -32
- package/knowledge/decisions/internals/hot-reload-reads-the-changed-source-never-a-compiled-copy.md +0 -38
- package/knowledge/decisions/internals/hot-reload-writes-into-the-function-map-captured-at-startup.md +0 -26
- package/knowledge/decisions/internals/http-request-bodies-are-read-once-and-shared.md +0 -32
- package/knowledge/decisions/internals/http-route-groups-cascade-config-in-a-fixed-order.md +0 -28
- package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +0 -30
- package/knowledge/decisions/internals/http-runner-logs-through-a-trace-scoped-logger-functions-do-not.md +0 -26
- package/knowledge/decisions/internals/http-set-cookie-headers-are-appended-never-joined.md +0 -28
- package/knowledge/decisions/internals/http-sse-streams-flush-headers-only-after-middleware.md +0 -32
- package/knowledge/decisions/internals/http-wiring-without-metadata-is-skipped-not-fatal.md +0 -26
- package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +0 -25
- package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +0 -26
- package/knowledge/decisions/internals/index.md +0 -181
- package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +0 -25
- package/knowledge/decisions/internals/local-trigger-and-gateway-services-assume-a-single-process.md +0 -26
- package/knowledge/decisions/internals/mcp-wire-names-are-assigned-over-the-whole-registry.md +0 -39
- package/knowledge/decisions/internals/node-only-builtins-are-imported-dynamically.md +0 -24
- package/knowledge/decisions/internals/one-project-shape-check-two-validators.md +0 -53
- package/knowledge/decisions/internals/only-exposed-functions-enter-a-virtual-user-catalogue.md +0 -21
- package/knowledge/decisions/internals/queue-group-concurrency-keeps-one-shared-queue-fair.md +0 -28
- package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +0 -27
- package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +0 -31
- package/knowledge/decisions/internals/role-names-cannot-contain-the-scope-separator.md +0 -30
- package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +0 -32
- package/knowledge/decisions/internals/scenario-agent-calls-sign-in-on-401-only.md +0 -31
- package/knowledge/decisions/internals/scenario-given-and-when-are-sugar-but-then-is-not.md +0 -24
- package/knowledge/decisions/internals/scenario-meta-lives-apart-from-app-meta-but-merges-when-read-off-disk.md +0 -26
- package/knowledge/decisions/internals/scenario-steps-return-drained-response-records.md +0 -27
- package/knowledge/decisions/internals/scenarios-live-in-files-named-for-them.md +0 -48
- package/knowledge/decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md +0 -30
- package/knowledge/decisions/internals/serverless-channel-disconnect-must-tolerate-a-missing-channel.md +0 -28
- package/knowledge/decisions/internals/side-effects-are-an-allowlist-not-a-boolean.md +0 -34
- package/knowledge/decisions/internals/speech-synthesis-picks-a-voice-per-sentence-and-warns-once.md +0 -24
- package/knowledge/decisions/internals/the-agent-done-event-goes-through-the-middleware-and-is-awaited.md +0 -26
- package/knowledge/decisions/internals/the-api-report-pins-members-not-just-names.md +0 -43
- package/knowledge/decisions/internals/the-core-scope-validator-refuses-separator-wildcard-and-empty-segments.md +0 -22
- package/knowledge/decisions/internals/the-dev-queue-copies-prod-timing-and-serialization-semantics.md +0 -30
- package/knowledge/decisions/internals/the-ecosystem-entry-point-carries-the-adapter-surface.md +0 -83
- package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +0 -29
- package/knowledge/decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md +0 -27
- package/knowledge/decisions/internals/the-kek-salt-is-scoped-to-the-key-version.md +0 -40
- package/knowledge/decisions/internals/the-mcp-handshake-is-challenged-only-when-every-target-is-gated.md +0 -29
- package/knowledge/decisions/internals/the-middleware-resolution-cache-is-deliberately-unbounded.md +0 -40
- package/knowledge/decisions/internals/the-per-invocation-rpc-view-is-a-class.md +0 -40
- package/knowledge/decisions/internals/the-pikku-user-id-resolves-in-a-fixed-order.md +0 -24
- package/knowledge/decisions/internals/the-runner-resolves-wire-services-itself.md +0 -31
- package/knowledge/decisions/internals/the-schema-service-is-never-stubbed.md +0 -26
- package/knowledge/decisions/internals/the-transcript-event-is-sent-ahead-of-the-run.md +0 -25
- package/knowledge/decisions/internals/the-virtual-user-catalogue-is-the-only-gate-on-what-may-be-called.md +0 -21
- package/knowledge/decisions/internals/the-virtual-user-prompt-says-json-because-of-json-object-mode.md +0 -22
- package/knowledge/decisions/internals/the-virtual-user-runtime-is-exported-from-the-virtual-user-entry-point.md +0 -28
- package/knowledge/decisions/internals/the-worker-disposition-is-the-one-that-is-not-testing.md +0 -22
- package/knowledge/decisions/internals/thread-history-records-the-transcript-not-the-audio.md +0 -25
- package/knowledge/decisions/internals/trigger-declaration-is-split-from-trigger-source.md +0 -33
- package/knowledge/decisions/internals/typed-secret-service-caches-for-the-process-lifetime.md +0 -26
- package/knowledge/decisions/internals/validate-checks-virtual-users-through-a-shared-module.md +0 -43
- package/knowledge/decisions/internals/validate-runs-checks-by-precondition.md +0 -115
- package/knowledge/decisions/internals/virtual-user-conversation-drives-the-target-through-a-transport-seam.md +0 -24
- package/knowledge/decisions/internals/virtual-user-conversation-verdicts-are-llm-self-evaluations.md +0 -25
- package/knowledge/decisions/internals/virtual-user-conversations-seed-a-hidden-kickoff-message.md +0 -23
- package/knowledge/decisions/internals/virtual-user-step-order-comes-from-insertion-order.md +0 -21
- package/knowledge/decisions/internals/virtual-users-are-declared-in-one-definevirtualusers-call-per-codebase.md +0 -30
- package/knowledge/decisions/internals/voice-output-speaks-unless-voice-input-explicitly-says-otherwise.md +0 -24
- package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +0 -26
- package/knowledge/decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md +0 -25
- package/knowledge/decisions/internals/whether-a-run-is-inline-is-read-from-the-run-record.md +0 -58
- package/knowledge/decisions/internals/wiring-registries-erase-the-generics-their-wire-functions-capture.md +0 -35
- package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +0 -34
- package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +0 -42
- package/knowledge/decisions/internals/workflow-dsl-meta-separates-runtime-expressions-from-literals.md +0 -38
- package/knowledge/decisions/internals/workflow-features-resolve-scenarios-by-object-identity.md +0 -29
- package/knowledge/decisions/internals/workflow-graph-inline-and-queued-runs-share-one-planner.md +0 -42
- package/knowledge/decisions/internals/workflow-graph-node-notes-are-excluded-from-the-graph-hash.md +0 -25
- package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +0 -29
- package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +0 -43
- package/knowledge/decisions/internals/workflow-queued-step-dispatch-requires-an-explicit-opt-in.md +0 -29
- package/knowledge/decisions/internals/workflow-queues-are-per-workflow-by-default.md +0 -42
- package/knowledge/decisions/internals/workflow-repeated-step-names-get-an-ordinal-suffix.md +0 -33
- package/knowledge/decisions/internals/workflow-replay-reads-its-steps-once-and-caches-only-the-immutable-half.md +0 -32
- package/knowledge/decisions/internals/workflow-retries-are-owned-by-the-workflow-not-the-queue.md +0 -31
- package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +0 -39
- package/knowledge/decisions/internals/workflow-run-mirror-is-never-a-source-of-truth.md +0 -29
- package/knowledge/decisions/internals/workflow-run-polling-backs-off-to-the-callers-ceiling.md +0 -33
- package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +0 -37
- package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +0 -54
- package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +0 -43
- package/knowledge/decisions/internals/workflow-scenario-prose-is-rendered-from-typed-calls-not-parsed-from-english.md +0 -32
- package/knowledge/decisions/internals/workflow-scenario-quarantine-reason-lives-in-code.md +0 -18
- package/knowledge/decisions/internals/workflow-scenario-step-targets-are-string-literals-for-the-inspector.md +0 -34
- package/knowledge/decisions/internals/workflow-step-compensation-runs-as-its-own-durable-step.md +0 -29
- package/knowledge/decisions/internals/workflow-step-dispatch-failure-is-transient-not-a-run-failure.md +0 -33
- package/knowledge/decisions/internals/workflow-step-lock-is-held-only-to-claim-the-step.md +0 -34
- package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +0 -34
- package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +0 -38
- package/knowledge/decisions/internals/workflow-suspended-runs-keep-their-in-process-context.md +0 -30
- package/knowledge/decisions/security/a-bearer-token-checked-against-a-secret-reads-it-per-request.md +0 -26
- package/knowledge/decisions/security/a-call-without-a-session-raises-missing-session-not-forbidden.md +0 -20
- package/knowledge/decisions/security/a-caller-cookie-wins-over-the-jar-for-the-same-name.md +0 -23
- package/knowledge/decisions/security/a-channel-lifecycle-acts-as-the-socket-upgrade-session.md +0 -16
- package/knowledge/decisions/security/a-channel-requires-a-session-unless-it-says-auth-false.md +0 -26
- package/knowledge/decisions/security/a-credential-read-path-follows-its-declared-type-not-absence.md +0 -32
- package/knowledge/decisions/security/a-credential-type-is-a-literal-the-inspector-checks-at-declaration.md +0 -27
- package/knowledge/decisions/security/a-dropped-audit-write-is-always-logged.md +0 -28
- package/knowledge/decisions/security/a-first-party-cookie-is-written-only-after-its-purposes-consent.md +0 -33
- package/knowledge/decisions/security/a-function-never-receives-the-secret-service.md +0 -37
- package/knowledge/decisions/security/a-graph-run-starts-at-an-entry-node-the-graph-declared.md +0 -33
- package/knowledge/decisions/security/a-permission-gets-a-wire-it-cannot-reply-on.md +0 -33
- package/knowledge/decisions/security/a-public-function-says-so-with-auth-false.md +0 -34
- package/knowledge/decisions/security/a-readonly-session-reaches-only-readonly-functions.md +0 -25
- package/knowledge/decisions/security/a-scaffold-flag-says-a-surface-exists-not-who-may-call-it.md +0 -52
- package/knowledge/decisions/security/a-scheduled-virtual-user-run-needs-no-admin-at-run-time.md +0 -27
- package/knowledge/decisions/security/a-scoped-credential-view-is-limited-to-declared-names.md +0 -26
- package/knowledge/decisions/security/a-scoped-secret-view-reads-only-declared-keys-and-never-writes.md +0 -25
- package/knowledge/decisions/security/a-secret-is-sent-only-to-the-hosts-it-declares.md +0 -29
- package/knowledge/decisions/security/a-step-can-name-an-identity-no-virtual-user-holds-through-per-call-headers.md +0 -25
- package/knowledge/decisions/security/a-step-runs-the-function-the-workflow-dispatched-it-with.md +0 -37
- package/knowledge/decisions/security/a-stopped-run-by-id-skips-the-ownership-check.md +0 -24
- package/knowledge/decisions/security/a-vault-secret-redacts-on-serialization-and-throws-on-coercion.md +0 -29
- package/knowledge/decisions/security/a-virtual-user-catalogue-entry-is-filtered-by-scope-and-approval-is-denied-by-default.md +0 -30
- package/knowledge/decisions/security/a-virtual-user-environment-fails-closed.md +0 -38
- package/knowledge/decisions/security/a-virtual-user-is-never-offered-a-step-that-would-forge-its-own-oracle.md +0 -27
- package/knowledge/decisions/security/a-virtual-user-never-runs-against-production.md +0 -23
- package/knowledge/decisions/security/a-virtual-user-reads-its-roles-from-the-apps-own-rpc-before-better-auth.md +0 -27
- package/knowledge/decisions/security/a-virtual-user-run-treats-an-unresolved-environment-as-production.md +0 -41
- package/knowledge/decisions/security/a-virtual-user-scopes-are-expanded-from-its-roles-once-at-run-preparation.md +0 -25
- package/knowledge/decisions/security/a-virtual-user-whose-roles-drift-from-the-declaration-refuses-to-run.md +0 -32
- package/knowledge/decisions/security/a-workflow-run-is-read-and-approved-by-its-owner.md +0 -50
- package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +0 -43
- package/knowledge/decisions/security/addon-config-gates-apply-only-at-the-namespaced-rpc-boundary.md +0 -52
- package/knowledge/decisions/security/addon-scopes-are-resolved-where-the-function-runs.md +0 -46
- package/knowledge/decisions/security/addon-screen-scopes-hide-and-do-not-enforce.md +0 -20
- package/knowledge/decisions/security/agent-approval-forwarding-requires-a-symbol-brand.md +0 -27
- package/knowledge/decisions/security/agent-credential-requests-are-symbol-branded.md +0 -37
- package/knowledge/decisions/security/agent-gate-requires-a-session-only-when-auth-is-true.md +0 -31
- package/knowledge/decisions/security/agent-ownership-failures-never-echo-the-resource.md +0 -23
- package/knowledge/decisions/security/agent-resume-re-runs-the-authorization-gate.md +0 -22
- package/knowledge/decisions/security/agent-sessionless-deployments-have-no-thread-ownership.md +0 -39
- package/knowledge/decisions/security/agent-thread-ownership-composes-the-session-principal.md +0 -30
- package/knowledge/decisions/security/agent-tool-filtering-reads-the-live-function-config.md +0 -24
- package/knowledge/decisions/security/an-addon-header-can-only-narrow-the-session.md +0 -26
- package/knowledge/decisions/security/an-addon-instance-reads-only-the-secrets-and-credentials-it-is-named.md +0 -33
- package/knowledge/decisions/security/an-addon-may-reach-only-itself-and-the-addons-it-uses.md +0 -16
- package/knowledge/decisions/security/an-agent-approval-is-claimed-before-the-tool-runs.md +0 -33
- package/knowledge/decisions/security/an-api-key-is-jwt-decoded-into-the-session.md +0 -26
- package/knowledge/decisions/security/an-approval-answer-outlives-the-run-it-answered.md +0 -59
- package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +0 -30
- package/knowledge/decisions/security/an-exposed-ungated-function-is-a-codegen-warning.md +0 -52
- package/knowledge/decisions/security/an-external-virtual-user-caller-presents-one-signed-statement.md +0 -38
- package/knowledge/decisions/security/an-inbound-webhook-source-dispatches-only-verified-requests.md +0 -31
- package/knowledge/decisions/security/an-mcp-call-with-no-http-request-stays-anonymous.md +0 -18
- package/knowledge/decisions/security/an-mcp-refusal-is-decided-before-dispatch.md +0 -48
- package/knowledge/decisions/security/an-oauth2-credential-is-read-by-its-account-row.md +0 -40
- package/knowledge/decisions/security/an-omitted-user-id-addresses-the-platform-credential.md +0 -32
- package/knowledge/decisions/security/an-upload-is-counted-as-it-arrives-not-buffered-then-measured.md +0 -24
- package/knowledge/decisions/security/analytics-identity-is-stamped-from-the-session-not-the-event.md +0 -24
- package/knowledge/decisions/security/app-access-is-a-scope-tree-synthesised-from-virtual-users.md +0 -26
- package/knowledge/decisions/security/approval-policy-decides-who-answers-a-tool-call.md +0 -27
- package/knowledge/decisions/security/auth-false-on-a-session-function-warns-and-still-requires-one.md +0 -25
- package/knowledge/decisions/security/bearer-token-hashes-are-unpeppered-sha256.md +0 -18
- package/knowledge/decisions/security/consent-is-read-from-a-cookie-and-a-recognised-denial-counts-as-refusal.md +0 -29
- package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +0 -84
- package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +0 -39
- package/knowledge/decisions/security/core-secrets-use-a-per-secret-dek-wrapped-by-a-kek.md +0 -37
- package/knowledge/decisions/security/cors-defaults-to-any-origin-and-refuses-the-wildcard-with-credentials.md +0 -22
- package/knowledge/decisions/security/credential-backends-share-one-conformance-suite-for-per-user-isolation.md +0 -29
- package/knowledge/decisions/security/each-stage-has-one-virtual-user-key-pair.md +0 -27
- package/knowledge/decisions/security/gateway-handlers-run-through-the-function-runner-gate.md +0 -41
- package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +0 -30
- package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +0 -40
- package/knowledge/decisions/security/hmac-verification-fails-closed-on-empty-inputs.md +0 -25
- package/knowledge/decisions/security/http-error-detail-is-withheld-from-clients-in-production.md +0 -33
- package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +0 -46
- package/knowledge/decisions/security/index.md +0 -135
- package/knowledge/decisions/security/local-content-refuses-private-buckets-under-the-public-segment.md +0 -21
- package/knowledge/decisions/security/mail-is-allowlisted-before-a-virtual-user-run-sees-it.md +0 -38
- package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +0 -27
- package/knowledge/decisions/security/mcp-resources-tools-and-prompts-take-sessionless-functions.md +0 -18
- package/knowledge/decisions/security/origin-locked-routes-match-the-origin-exactly.md +0 -22
- package/knowledge/decisions/security/oss-auth-works-without-pikku-studio-cloud.md +0 -26
- package/knowledge/decisions/security/outbound-webhooks-use-an-allowlist-when-configured.md +0 -24
- package/knowledge/decisions/security/passphrases-are-stretched-key-material-is-expanded.md +0 -40
- package/knowledge/decisions/security/permission-auth-filtering-requires-live-permission-functions.md +0 -31
- package/knowledge/decisions/security/pikku-carries-virtual-user-scopes-as-data-and-the-app-grants-them.md +0 -35
- package/knowledge/decisions/security/queue-job-identities-are-signed-at-enqueue.md +0 -69
- package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +0 -39
- package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +0 -34
- package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +0 -55
- package/knowledge/decisions/security/scenario-step-functions-are-never-externally-invocable.md +0 -30
- package/knowledge/decisions/security/scope-resolution-happens-at-the-session-boundary-and-sync-never-deletes.md +0 -28
- package/knowledge/decisions/security/scoped-content-access-is-a-root-folder-with-longest-prefix-grants.md +0 -31
- package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +0 -34
- package/knowledge/decisions/security/services-without-secrets-get-a-throwing-secrets-accessor.md +0 -22
- package/knowledge/decisions/security/shared-guards-refuse-to-mutate-or-shadow-a-system-role.md +0 -34
- package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +0 -37
- package/knowledge/decisions/security/signed-uploads-are-verified-by-the-same-check-as-signed-reads.md +0 -26
- package/knowledge/decisions/security/system-role-scopes-must-be-declared-with-define-scope.md +0 -24
- package/knowledge/decisions/security/system-roles-are-additive-and-immutable.md +0 -16
- package/knowledge/decisions/security/the-channel-rpc-does-not-send-the-callers-session.md +0 -21
- package/knowledge/decisions/security/the-remote-jobs-inbox-fails-closed-without-a-secret.md +0 -24
- package/knowledge/decisions/security/the-remote-rpc-gate-fails-closed-and-binds-the-token-to-its-function.md +0 -34
- package/knowledge/decisions/security/the-workflow-status-stream-rechecks-ownership-on-every-poll.md +0 -16
- package/knowledge/decisions/security/two-credentials-on-one-key-must-share-a-read-mode.md +0 -29
- package/knowledge/decisions/security/verified-bearer-claims-are-pass-through-data-that-core-never-fills.md +0 -23
- package/knowledge/decisions/security/virtual-user-catalogue-excludes-the-machinery-that-runs-virtual-users.md +0 -25
- package/knowledge/decisions/security/virtual-user-conversation-missing-approval-decisions-default-to-denied.md +0 -22
- package/knowledge/decisions/security/virtual-user-run-records-are-gated-behind-a-read-scope.md +0 -18
- package/knowledge/decisions/security/virtual-user-sign-in-does-not-exist-in-production.md +0 -25
- package/knowledge/decisions/security/virtual-user-sign-in-has-one-door.md +0 -42
- package/knowledge/decisions/security/virtual-user-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +0 -29
- package/knowledge/decisions/security/virtual-user-sign-in-only-works-for-virtual-user-flagged-users.md +0 -29
- package/knowledge/decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md +0 -25
- package/knowledge/decisions/security/wire-addon-expose-selects-the-rpc-surface.md +0 -51
- package/knowledge/decisions/security/workflow-approval-payloads-are-validated-on-replay-inside-the-workflow.md +0 -40
- package/knowledge/decisions/security/workflow-helper-functions-are-sessionless-by-declaration.md +0 -18
- package/knowledge/decisions/security/workflow-queued-steps-rehydrate-their-session-from-the-run-wire.md +0 -32
- package/knowledge/decisions/security/workflow-scenario-sessions-are-isolated-per-virtual-user-and-per-scenario.md +0 -32
- package/knowledge/decisions/security/workflow-scenario-steps-are-never-network-invocable.md +0 -31
- package/knowledge/decisions/security/workflow-virtual-user-steps-always-use-the-real-transport.md +0 -34
- package/knowledge/decisions/security/writing-a-virtual-user-schedule-is-gated-by-its-own-scope.md +0 -18
- package/knowledge/index.md +0 -24
- package/knowledge/questions/a-bearer-jwt-with-no-identity-becomes-a-session.md +0 -24
- package/knowledge/questions/channel-middleware-accepts-bare-factories-that-nothing-resolves.md +0 -35
- package/knowledge/questions/dev-quick-login-as-impersonation.md +0 -25
- package/knowledge/questions/does-a-delayed-rpc-run-as-the-session-it-was-scheduled-with.md +0 -26
- package/knowledge/questions/does-a-user-id-with-a-colon-read-another-users-credentials.md +0 -27
- package/knowledge/questions/does-a-wirecli-command-need-a-session-by-default.md +0 -26
- package/knowledge/questions/does-an-adversarial-in-scope-success-count-as-a-finding.md +0 -26
- package/knowledge/questions/does-approve-step-need-the-run-owners-session-or-the-gates-approvers.md +0 -34
- package/knowledge/questions/does-cors-origin-true-reflect-any-origin-with-credentials.md +0 -20
- package/knowledge/questions/does-skip-user-session-do-anything-on-a-channel.md +0 -24
- package/knowledge/questions/does-the-store-session-match-the-other-two.md +0 -19
- package/knowledge/questions/index.md +0 -41
- package/knowledge/questions/is-the-agent-score-worker-reachable-without-a-session.md +0 -21
- package/knowledge/questions/live-scheduled-tests-may-write.md +0 -19
- package/knowledge/questions/provision-virtual-users-has-no-caller-in-this-repo.md +0 -23
- package/knowledge/questions/remote-secret-refuses-requests-without-a-remote-token-on-every-path.md +0 -32
- package/knowledge/questions/should-a-middleware-set-session-persist-to-the-store.md +0 -25
- package/knowledge/questions/should-a-scoped-secret-view-throw-from-has-secret-for-a-disallowed-key.md +0 -23
- package/knowledge/questions/should-a-wrong-bearer-token-be-anonymous-or-refused.md +0 -35
- package/knowledge/questions/should-an-empty-webhook-signing-secret-send-unsigned.md +0 -23
- package/knowledge/questions/should-http-virtual-user-sessions-reset-between-scenarios-in-one-run.md +0 -27
- package/knowledge/questions/should-the-cookie-jar-scope-cookies-to-the-api-origin.md +0 -26
- package/knowledge/questions/should-voice-input-fetch-audio-urls-without-a-host-allowlist.md +0 -20
- package/knowledge/questions/staging-impersonation-rules.md +0 -27
- package/knowledge/questions/unauthorized-channel-replies-escape-the-declared-out-type.md +0 -44
- package/knowledge/questions/virtual-user-keys-on-cloud-stages-are-pikku-studios-to-build.md +0 -34
- package/knowledge/questions/virtual-user-statement-replay-is-per-process.md +0 -20
- package/knowledge/questions/what-an-impersonated-session-carries.md +0 -22
- package/run-tests.sh +0 -68
- package/scripts/generate-api-report.d.mts +0 -1
- package/scripts/generate-api-report.mjs +0 -96
- package/scripts/generate-api-report.mts +0 -333
- package/src/public-surface.json +0 -637
- package/src/public-surface.json.README +0 -43
- /package/dist/{function/compensation-name.d.ts → compensation-name.d.ts} +0 -0
- /package/dist/{function/compensation-name.js → compensation-name.js} +0 -0
package/dist/errors/errors.js
CHANGED
|
@@ -1,28 +1,53 @@
|
|
|
1
1
|
import { addError, PikkuError } from './error-handler.js';
|
|
2
|
+
/**
|
|
3
|
+
* A middleware was attached to a wiring type it cannot run on. Answers 500.
|
|
4
|
+
* @group Error
|
|
5
|
+
*/
|
|
2
6
|
export class InvalidMiddlewareWireError extends PikkuError {
|
|
3
7
|
}
|
|
4
8
|
addError(InvalidMiddlewareWireError, {
|
|
5
9
|
status: 500,
|
|
6
10
|
message: 'The middleware wire is invalid for the current wiring type.',
|
|
7
11
|
});
|
|
12
|
+
/**
|
|
13
|
+
* The generated metadata for a wiring (a queue worker, trigger, workflow, …) is
|
|
14
|
+
* missing at runtime, usually because `pikku` codegen was not re-run after a
|
|
15
|
+
* change. Answers 500.
|
|
16
|
+
* @group Error
|
|
17
|
+
*/
|
|
8
18
|
export class PikkuMissingMetaError extends PikkuError {
|
|
9
19
|
}
|
|
10
20
|
addError(PikkuMissingMetaError, {
|
|
11
21
|
status: 500,
|
|
12
22
|
message: 'Required metadata is missing',
|
|
13
23
|
});
|
|
24
|
+
/**
|
|
25
|
+
* A function needed a service that was not created in your singleton or wire
|
|
26
|
+
* services factory. Answers 500.
|
|
27
|
+
* @group Error
|
|
28
|
+
*/
|
|
14
29
|
export class MissingServiceError extends PikkuError {
|
|
15
30
|
}
|
|
16
31
|
addError(MissingServiceError, {
|
|
17
32
|
status: 500,
|
|
18
33
|
message: 'A required service is not configured',
|
|
19
34
|
});
|
|
35
|
+
/**
|
|
36
|
+
* A development-only operation was called outside local development. Answers
|
|
37
|
+
* 403.
|
|
38
|
+
* @group Error
|
|
39
|
+
*/
|
|
20
40
|
export class LocalEnvironmentOnlyError extends PikkuError {
|
|
21
41
|
}
|
|
22
42
|
addError(LocalEnvironmentOnlyError, {
|
|
23
43
|
status: 403,
|
|
24
44
|
message: 'This operation is only available in local development mode',
|
|
25
45
|
});
|
|
46
|
+
/**
|
|
47
|
+
* The request is malformed or its data failed validation. Answers 400 (JSON-RPC
|
|
48
|
+
* `-32600` over MCP).
|
|
49
|
+
* @group Error
|
|
50
|
+
*/
|
|
26
51
|
export class BadRequestError extends PikkuError {
|
|
27
52
|
}
|
|
28
53
|
addError(BadRequestError, {
|
|
@@ -30,10 +55,30 @@ addError(BadRequestError, {
|
|
|
30
55
|
mcpCode: -32600,
|
|
31
56
|
message: 'The server cannot or will not process the request due to client error (e.g., malformed request syntax).',
|
|
32
57
|
});
|
|
58
|
+
/**
|
|
59
|
+
* Authentication was attempted and failed for a reason that is not about the
|
|
60
|
+
* session itself, such as a bad webhook signature or dispatch secret. Answers
|
|
61
|
+
* 401.
|
|
62
|
+
* @group Error
|
|
63
|
+
*/
|
|
33
64
|
export class UnauthorizedError extends PikkuError {
|
|
34
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* No session was resolved for a function that requires one: either a
|
|
68
|
+
* `pikkuFunc`, or a sessionless function wired or configured with
|
|
69
|
+
* `auth: true`. Answers 401 — the caller has to sign in. Contrast
|
|
70
|
+
* {@link InvalidSessionError} (credentials were sent but are not valid) and
|
|
71
|
+
* {@link ForbiddenError} (signed in, but not allowed).
|
|
72
|
+
* @group Error
|
|
73
|
+
*/
|
|
35
74
|
export class MissingSessionError extends PikkuError {
|
|
36
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Credentials were presented but could not be turned into a session, for
|
|
78
|
+
* example an `Authorization` header that is not a well-formed `Bearer` token.
|
|
79
|
+
* Answers 401; the caller should re-authenticate rather than retry.
|
|
80
|
+
* @group Error
|
|
81
|
+
*/
|
|
37
82
|
export class InvalidSessionError extends PikkuError {
|
|
38
83
|
}
|
|
39
84
|
addError(UnauthorizedError, {
|
|
@@ -45,18 +90,35 @@ addError(InvalidSessionError, {
|
|
|
45
90
|
status: 401,
|
|
46
91
|
message: 'The session provided is not valid.',
|
|
47
92
|
});
|
|
93
|
+
/**
|
|
94
|
+
* The operation needs a paid plan or payment. Answers 402.
|
|
95
|
+
* @group Error
|
|
96
|
+
*/
|
|
48
97
|
export class PaymentRequiredError extends PikkuError {
|
|
49
98
|
}
|
|
50
99
|
addError(PaymentRequiredError, {
|
|
51
100
|
status: 402,
|
|
52
101
|
message: 'Reserved for future use, often related to digital payment or subscription services.',
|
|
53
102
|
});
|
|
103
|
+
/**
|
|
104
|
+
* The caller is authenticated but a permission (global, wiring or function
|
|
105
|
+
* level) refused the call. Answers 403 — signing in again will not help.
|
|
106
|
+
* Authentication failures are {@link MissingSessionError} and
|
|
107
|
+
* {@link InvalidSessionError} instead.
|
|
108
|
+
* @group Error
|
|
109
|
+
*/
|
|
54
110
|
export class ForbiddenError extends PikkuError {
|
|
55
111
|
}
|
|
56
112
|
addError(ForbiddenError, {
|
|
57
113
|
status: 403,
|
|
58
114
|
message: 'The client does not have permission to access the requested resource.',
|
|
59
115
|
});
|
|
116
|
+
/**
|
|
117
|
+
* A function needs a per-user credential (OAuth2 or API key) that the user has
|
|
118
|
+
* not connected yet. Answers 403; `payload` names the credential and, when
|
|
119
|
+
* known, the `connectUrl` the client should send the user to.
|
|
120
|
+
* @group Error
|
|
121
|
+
*/
|
|
60
122
|
export class MissingCredentialError extends PikkuError {
|
|
61
123
|
payload;
|
|
62
124
|
constructor(credentialName, credentialType, connectUrl) {
|
|
@@ -73,6 +135,11 @@ addError(MissingCredentialError, {
|
|
|
73
135
|
status: 403,
|
|
74
136
|
message: 'A required credential is not configured.',
|
|
75
137
|
});
|
|
138
|
+
/**
|
|
139
|
+
* The upstream service refused a stored credential. Answers 403; `payload.reauth`
|
|
140
|
+
* says whether the user has to sign in again or reconnect the credential.
|
|
141
|
+
* @group Error
|
|
142
|
+
*/
|
|
76
143
|
export class CredentialRejectedError extends PikkuError {
|
|
77
144
|
payload;
|
|
78
145
|
constructor(credentialName, reauth, message) {
|
|
@@ -87,6 +154,11 @@ addError(CredentialRejectedError, {
|
|
|
87
154
|
status: 403,
|
|
88
155
|
message: 'The upstream service rejected the stored credential; the user has to sign in again or reconnect it.',
|
|
89
156
|
});
|
|
157
|
+
/**
|
|
158
|
+
* The session does not hold a scope the function (or the addon running it)
|
|
159
|
+
* requires. Answers 403; `payload.scope` names the missing scope.
|
|
160
|
+
* @group Error
|
|
161
|
+
*/
|
|
90
162
|
export class MissingScopeError extends PikkuError {
|
|
91
163
|
payload;
|
|
92
164
|
constructor(scope) {
|
|
@@ -101,6 +173,12 @@ addError(MissingScopeError, {
|
|
|
101
173
|
status: 403,
|
|
102
174
|
message: 'The session does not hold a scope required by this function.',
|
|
103
175
|
});
|
|
176
|
+
/**
|
|
177
|
+
* A feature flag guarding the function is switched off. Answers 503, so the
|
|
178
|
+
* caller treats it as temporary and retryable rather than as a permission
|
|
179
|
+
* problem; `payload.feature` names the flag.
|
|
180
|
+
* @group Error
|
|
181
|
+
*/
|
|
104
182
|
export class FeatureUnavailableError extends PikkuError {
|
|
105
183
|
payload;
|
|
106
184
|
constructor(feature) {
|
|
@@ -118,18 +196,33 @@ addError(FeatureUnavailableError, {
|
|
|
118
196
|
status: 503,
|
|
119
197
|
message: 'This feature is switched off.',
|
|
120
198
|
});
|
|
199
|
+
/**
|
|
200
|
+
* A session with `readonly: true` called a function that is not declared
|
|
201
|
+
* `readonly`. Answers 403.
|
|
202
|
+
* @group Error
|
|
203
|
+
*/
|
|
121
204
|
export class ReadonlySessionError extends PikkuError {
|
|
122
205
|
}
|
|
123
206
|
addError(ReadonlySessionError, {
|
|
124
207
|
status: 403,
|
|
125
208
|
message: 'The session is readonly and cannot access this function.',
|
|
126
209
|
});
|
|
210
|
+
/**
|
|
211
|
+
* The request's `Origin` is not on the allowlist of the `requireOrigin`
|
|
212
|
+
* middleware, the CSRF guard for cookie-authenticated routes. Answers 403.
|
|
213
|
+
* @group Error
|
|
214
|
+
*/
|
|
127
215
|
export class InvalidOriginError extends PikkuError {
|
|
128
216
|
}
|
|
129
217
|
addError(InvalidOriginError, {
|
|
130
218
|
status: 403,
|
|
131
219
|
message: 'The request was made from an origin that is not permitted to access this resource.',
|
|
132
220
|
});
|
|
221
|
+
/**
|
|
222
|
+
* The requested resource does not exist. Answers 404 (JSON-RPC `-32601` over
|
|
223
|
+
* MCP).
|
|
224
|
+
* @group Error
|
|
225
|
+
*/
|
|
133
226
|
export class NotFoundError extends PikkuError {
|
|
134
227
|
}
|
|
135
228
|
addError(NotFoundError, {
|
|
@@ -137,150 +230,256 @@ addError(NotFoundError, {
|
|
|
137
230
|
mcpCode: -32601,
|
|
138
231
|
message: 'The server cannot find the requested resource.',
|
|
139
232
|
});
|
|
233
|
+
/**
|
|
234
|
+
* The resource exists but does not accept this HTTP method. Answers 405.
|
|
235
|
+
* @group Error
|
|
236
|
+
*/
|
|
140
237
|
export class MethodNotAllowedError extends PikkuError {
|
|
141
238
|
}
|
|
142
239
|
addError(MethodNotAllowedError, {
|
|
143
240
|
status: 405,
|
|
144
241
|
message: 'The request method is known by the server but is not supported by the resource.',
|
|
145
242
|
});
|
|
243
|
+
/**
|
|
244
|
+
* No representation matches the request's `Accept` headers. Answers 406.
|
|
245
|
+
* @group Error
|
|
246
|
+
*/
|
|
146
247
|
export class NotAcceptableError extends PikkuError {
|
|
147
248
|
}
|
|
148
249
|
addError(NotAcceptableError, {
|
|
149
250
|
status: 406,
|
|
150
251
|
message: "The requested resource cannot produce a response matching the list of acceptable values in the request's headers.",
|
|
151
252
|
});
|
|
253
|
+
/**
|
|
254
|
+
* Authentication with a proxy is required. Answers 407.
|
|
255
|
+
* @group Error
|
|
256
|
+
*/
|
|
152
257
|
export class ProxyAuthenticationRequiredError extends PikkuError {
|
|
153
258
|
}
|
|
154
259
|
addError(ProxyAuthenticationRequiredError, {
|
|
155
260
|
status: 407,
|
|
156
261
|
message: 'The client must authenticate itself to get the requested response.',
|
|
157
262
|
});
|
|
263
|
+
/**
|
|
264
|
+
* The request took too long to arrive. Answers 408.
|
|
265
|
+
* @group Error
|
|
266
|
+
*/
|
|
158
267
|
export class RequestTimeoutError extends PikkuError {
|
|
159
268
|
}
|
|
160
269
|
addError(RequestTimeoutError, {
|
|
161
270
|
status: 408,
|
|
162
271
|
message: 'The request timeout has expired.',
|
|
163
272
|
});
|
|
273
|
+
/**
|
|
274
|
+
* The request conflicts with the current state of the resource, such as a
|
|
275
|
+
* duplicate or a stale write. Answers 409.
|
|
276
|
+
* @group Error
|
|
277
|
+
*/
|
|
164
278
|
export class ConflictError extends PikkuError {
|
|
165
279
|
}
|
|
166
280
|
addError(ConflictError, {
|
|
167
281
|
status: 409,
|
|
168
282
|
message: 'The request could not be completed due to a conflict with the current state of the target resource.',
|
|
169
283
|
});
|
|
284
|
+
/**
|
|
285
|
+
* The resource existed but has been permanently removed. Answers 410.
|
|
286
|
+
* @group Error
|
|
287
|
+
*/
|
|
170
288
|
export class GoneError extends PikkuError {
|
|
171
289
|
}
|
|
172
290
|
addError(GoneError, {
|
|
173
291
|
status: 410,
|
|
174
292
|
message: 'The resource that is being accessed is no longer available and will not be available again.',
|
|
175
293
|
});
|
|
294
|
+
/**
|
|
295
|
+
* The request has no `Content-Length` and one is required. Answers 411.
|
|
296
|
+
* @group Error
|
|
297
|
+
*/
|
|
176
298
|
export class LengthRequiredError extends PikkuError {
|
|
177
299
|
}
|
|
178
300
|
addError(LengthRequiredError, {
|
|
179
301
|
status: 411,
|
|
180
302
|
message: 'The request did not specify the length of its content, which is required by the requested resource.',
|
|
181
303
|
});
|
|
304
|
+
/**
|
|
305
|
+
* A conditional request header (`If-Match`, …) did not hold. Answers 412.
|
|
306
|
+
* @group Error
|
|
307
|
+
*/
|
|
182
308
|
export class PreconditionFailedError extends PikkuError {
|
|
183
309
|
}
|
|
184
310
|
addError(PreconditionFailedError, {
|
|
185
311
|
status: 412,
|
|
186
312
|
message: 'The server does not meet one of the preconditions that the requester put on the request.',
|
|
187
313
|
});
|
|
314
|
+
/**
|
|
315
|
+
* The request body exceeds the configured maximum body size; the HTTP request
|
|
316
|
+
* adapters throw it while reading the body. Answers 413.
|
|
317
|
+
* @group Error
|
|
318
|
+
*/
|
|
188
319
|
export class PayloadTooLargeError extends PikkuError {
|
|
189
320
|
}
|
|
190
321
|
addError(PayloadTooLargeError, {
|
|
191
322
|
status: 413,
|
|
192
323
|
message: 'The request is larger than the server is willing or able to process.',
|
|
193
324
|
});
|
|
325
|
+
/**
|
|
326
|
+
* The request URI is longer than the server accepts. Answers 414.
|
|
327
|
+
* @group Error
|
|
328
|
+
*/
|
|
194
329
|
export class URITooLongError extends PikkuError {
|
|
195
330
|
}
|
|
196
331
|
addError(URITooLongError, {
|
|
197
332
|
status: 414,
|
|
198
333
|
message: 'The URI requested by the client is longer than the server is willing to interpret.',
|
|
199
334
|
});
|
|
335
|
+
/**
|
|
336
|
+
* The request body's content type is not supported. Answers 415.
|
|
337
|
+
* @group Error
|
|
338
|
+
*/
|
|
200
339
|
export class UnsupportedMediaTypeError extends PikkuError {
|
|
201
340
|
}
|
|
202
341
|
addError(UnsupportedMediaTypeError, {
|
|
203
342
|
status: 415,
|
|
204
343
|
message: 'The server does not support the media format of the requested data.',
|
|
205
344
|
});
|
|
345
|
+
/**
|
|
346
|
+
* The requested byte range cannot be served. Answers 416.
|
|
347
|
+
* @group Error
|
|
348
|
+
*/
|
|
206
349
|
export class RangeNotSatisfiableError extends PikkuError {
|
|
207
350
|
}
|
|
208
351
|
addError(RangeNotSatisfiableError, {
|
|
209
352
|
status: 416,
|
|
210
353
|
message: 'The client has asked for a portion of the file, but the server cannot supply that portion.',
|
|
211
354
|
});
|
|
355
|
+
/**
|
|
356
|
+
* The `Expect` request header cannot be met. Answers 417.
|
|
357
|
+
* @group Error
|
|
358
|
+
*/
|
|
212
359
|
export class ExpectationFailedError extends PikkuError {
|
|
213
360
|
}
|
|
214
361
|
addError(ExpectationFailedError, {
|
|
215
362
|
status: 417,
|
|
216
363
|
message: 'The server cannot meet the requirements of the Expect request-header field.',
|
|
217
364
|
});
|
|
365
|
+
/**
|
|
366
|
+
* The request is well-formed but semantically invalid. Answers 422.
|
|
367
|
+
* @group Error
|
|
368
|
+
*/
|
|
218
369
|
export class UnprocessableContentError extends PikkuError {
|
|
219
370
|
}
|
|
220
371
|
addError(UnprocessableContentError, {
|
|
221
372
|
status: 422,
|
|
222
373
|
message: 'The server understood the content type of the request content, and the syntax of the request content was correct, but it was unable to process the contained instructions..',
|
|
223
374
|
});
|
|
375
|
+
/**
|
|
376
|
+
* The resource is locked. Answers 423.
|
|
377
|
+
* @group Error
|
|
378
|
+
*/
|
|
224
379
|
export class LockedError extends PikkuError {
|
|
225
380
|
}
|
|
226
381
|
addError(LockedError, {
|
|
227
382
|
status: 423,
|
|
228
383
|
message: "The resource is locked, meaning it can't be accessed. Its response body should contain information in WebDAV's XML format.",
|
|
229
384
|
});
|
|
385
|
+
/**
|
|
386
|
+
* The caller has been rate limited. Answers 429.
|
|
387
|
+
* @group Error
|
|
388
|
+
*/
|
|
230
389
|
export class TooManyRequestsError extends PikkuError {
|
|
231
390
|
}
|
|
232
391
|
addError(TooManyRequestsError, {
|
|
233
392
|
status: 429,
|
|
234
393
|
message: 'The user has sent too many requests in a given amount of time ("rate limiting").',
|
|
235
394
|
});
|
|
395
|
+
/**
|
|
396
|
+
* A generic server-side failure with no more specific error. Answers 500.
|
|
397
|
+
* @group Error
|
|
398
|
+
*/
|
|
236
399
|
export class InternalServerError extends PikkuError {
|
|
237
400
|
}
|
|
238
401
|
addError(InternalServerError, {
|
|
239
402
|
status: 500,
|
|
240
403
|
message: 'A generic error message, given when no more specific message is suitable.',
|
|
241
404
|
});
|
|
405
|
+
/**
|
|
406
|
+
* The operation is not implemented. Answers 501.
|
|
407
|
+
* @group Error
|
|
408
|
+
*/
|
|
242
409
|
export class NotImplementedError extends PikkuError {
|
|
243
410
|
}
|
|
244
411
|
addError(NotImplementedError, {
|
|
245
412
|
status: 501,
|
|
246
413
|
message: 'The server does not recognize the request method and cannot support it.',
|
|
247
414
|
});
|
|
415
|
+
/**
|
|
416
|
+
* An upstream service returned an invalid response. Answers 502.
|
|
417
|
+
* @group Error
|
|
418
|
+
*/
|
|
248
419
|
export class BadGatewayError extends PikkuError {
|
|
249
420
|
}
|
|
250
421
|
addError(BadGatewayError, {
|
|
251
422
|
status: 502,
|
|
252
423
|
message: 'The server was acting as a gateway or proxy and received an invalid response from the upstream server.',
|
|
253
424
|
});
|
|
425
|
+
/**
|
|
426
|
+
* The service is temporarily unavailable (overloaded or down). Answers 503.
|
|
427
|
+
* @group Error
|
|
428
|
+
*/
|
|
254
429
|
export class ServiceUnavailableError extends PikkuError {
|
|
255
430
|
}
|
|
256
431
|
addError(ServiceUnavailableError, {
|
|
257
432
|
status: 503,
|
|
258
433
|
message: 'The server is currently unavailable (overloaded or down).',
|
|
259
434
|
});
|
|
435
|
+
/**
|
|
436
|
+
* An upstream service did not answer in time. Answers 504.
|
|
437
|
+
* @group Error
|
|
438
|
+
*/
|
|
260
439
|
export class GatewayTimeoutError extends PikkuError {
|
|
261
440
|
}
|
|
262
441
|
addError(GatewayTimeoutError, {
|
|
263
442
|
status: 504,
|
|
264
443
|
message: 'The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.',
|
|
265
444
|
});
|
|
445
|
+
/**
|
|
446
|
+
* The request's HTTP version is not supported. Answers 505.
|
|
447
|
+
* @group Error
|
|
448
|
+
*/
|
|
266
449
|
export class HTTPVersionNotSupportedError extends PikkuError {
|
|
267
450
|
}
|
|
268
451
|
addError(HTTPVersionNotSupportedError, {
|
|
269
452
|
status: 505,
|
|
270
453
|
message: 'The server does not support the HTTP protocol version used in the request.',
|
|
271
454
|
});
|
|
455
|
+
/**
|
|
456
|
+
* The function ran past the maximum compute time the runtime allows. Answers
|
|
457
|
+
* 524.
|
|
458
|
+
* @group Error
|
|
459
|
+
*/
|
|
272
460
|
export class MaxComputeTimeReachedError extends PikkuError {
|
|
273
461
|
}
|
|
274
462
|
addError(MaxComputeTimeReachedError, {
|
|
275
463
|
status: 524,
|
|
276
464
|
message: 'The server took too long to complete the request, reaching the maximum compute time allowed.',
|
|
277
465
|
});
|
|
466
|
+
/**
|
|
467
|
+
* Validation was asked for a schema that was never registered, usually because
|
|
468
|
+
* schema generation has not been run. Answers 500.
|
|
469
|
+
* @group Error
|
|
470
|
+
*/
|
|
278
471
|
export class MissingSchemaError extends PikkuError {
|
|
279
472
|
}
|
|
280
473
|
addError(MissingSchemaError, {
|
|
281
474
|
status: 500,
|
|
282
475
|
message: 'A required schema was not found. Ensure schema generation has been run.',
|
|
283
476
|
});
|
|
477
|
+
/**
|
|
478
|
+
* A configured secret is too short to be used as key material. Thrown at
|
|
479
|
+
* startup or first use rather than letting a guessable key sign or encrypt
|
|
480
|
+
* anything. Answers 500.
|
|
481
|
+
* @group Error
|
|
482
|
+
*/
|
|
284
483
|
export class WeakKeyMaterialError extends PikkuError {
|
|
285
484
|
constructor(name, minimumLength, actualLength) {
|
|
286
485
|
super(`${name} must be at least ${minimumLength} characters of high-entropy key material, got ${actualLength}. Generate one with \`openssl rand -base64 32\` and redeploy every service that shares it.`);
|
|
@@ -290,6 +489,10 @@ addError(WeakKeyMaterialError, {
|
|
|
290
489
|
status: 500,
|
|
291
490
|
message: 'A configured secret does not carry enough entropy to be used.',
|
|
292
491
|
});
|
|
492
|
+
/**
|
|
493
|
+
* An agent was run without any AI provider service configured. Answers 503.
|
|
494
|
+
* @group Error
|
|
495
|
+
*/
|
|
293
496
|
export class AIProviderNotConfiguredError extends PikkuError {
|
|
294
497
|
constructor() {
|
|
295
498
|
super('No AI provider configured. Please set up an AI provider (e.g. OpenAI, Anthropic) and provide a valid API key to use this agent.');
|
|
@@ -299,6 +502,30 @@ addError(AIProviderNotConfiguredError, {
|
|
|
299
502
|
status: 503,
|
|
300
503
|
message: 'No AI provider configured. Please set up an AI provider (e.g. OpenAI, Anthropic) and provide a valid API key to use this agent.',
|
|
301
504
|
});
|
|
505
|
+
/**
|
|
506
|
+
* The model answered, but not with what the agent's output schema promises.
|
|
507
|
+
* A 502 rather than a 422: the bad content came from the model, not from the
|
|
508
|
+
* caller, and resending the same request is the only remedy the caller has.
|
|
509
|
+
* @group Error
|
|
510
|
+
*/
|
|
511
|
+
export class AgentOutputValidationError extends PikkuError {
|
|
512
|
+
agentName;
|
|
513
|
+
issues;
|
|
514
|
+
constructor(agentName, issues) {
|
|
515
|
+
super(`${agentName ? `Agent '${agentName}'` : 'The model'} returned output that does not match its output schema: ${issues.join('; ')}`);
|
|
516
|
+
this.agentName = agentName;
|
|
517
|
+
this.issues = issues;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
addError(AgentOutputValidationError, {
|
|
521
|
+
status: 502,
|
|
522
|
+
message: "The AI model returned output that does not match the agent's output schema.",
|
|
523
|
+
});
|
|
524
|
+
/**
|
|
525
|
+
* The configured AI provider rejected its API key, or none was set. Answers
|
|
526
|
+
* 401.
|
|
527
|
+
* @group Error
|
|
528
|
+
*/
|
|
302
529
|
export class AIProviderAuthError extends PikkuError {
|
|
303
530
|
constructor(message) {
|
|
304
531
|
super(message ||
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
export declare class AbandonedError extends Error {
|
|
7
7
|
constructor(reason?: string);
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Whether the caller of an invocation is still waiting for it, as consulted by
|
|
11
|
+
* {@link beginChanges}. Set by wirings whose callers can go away mid-run, such
|
|
12
|
+
* as an interrupted agent run.
|
|
13
|
+
*/
|
|
9
14
|
export interface AbortScope {
|
|
10
15
|
/** Whether whatever asked for this work has gone away. */
|
|
11
16
|
readonly abandoned: boolean;
|
|
@@ -2,10 +2,18 @@ import type { MiddlewareMetadata } from '../middleware/middleware.types.js';
|
|
|
2
2
|
import type { AuditDurability } from '../services/audit-service.js';
|
|
3
3
|
import type { ScenarioStepKind, ScenarioSurface } from '../wirings/workflow/scenario-step.types.js';
|
|
4
4
|
import type { CommonWireMeta } from '../types/core.types.js';
|
|
5
|
+
/**
|
|
6
|
+
* The services a function's body uses, as read by the inspector. `optimized`
|
|
7
|
+
* says whether the list could be determined statically and so can be relied on.
|
|
8
|
+
*/
|
|
5
9
|
export interface FunctionServicesMeta {
|
|
6
10
|
optimized: boolean;
|
|
7
11
|
services: string[];
|
|
8
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* The wire keys a function's body uses, as read by the inspector. `optimized`
|
|
15
|
+
* says whether the list could be determined statically and so can be relied on.
|
|
16
|
+
*/
|
|
9
17
|
export interface FunctionWiresMeta {
|
|
10
18
|
optimized: boolean;
|
|
11
19
|
wires: string[];
|
|
@@ -19,6 +27,11 @@ export type PermissionMetadata = {
|
|
|
19
27
|
name: string;
|
|
20
28
|
inline?: boolean;
|
|
21
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* The part of a function's generated metadata the runtime needs to run it:
|
|
32
|
+
* schemas, auth, scopes, flags and exposure. The verbose fields live on
|
|
33
|
+
* {@link FunctionMeta}.
|
|
34
|
+
*/
|
|
22
35
|
export type FunctionRuntimeMeta = {
|
|
23
36
|
pikkuFuncId: string;
|
|
24
37
|
inputSchemaName: string | null;
|
|
@@ -131,6 +144,11 @@ export type FunctionRuntimeMeta = {
|
|
|
131
144
|
inputHash?: string;
|
|
132
145
|
outputHash?: string;
|
|
133
146
|
};
|
|
147
|
+
/**
|
|
148
|
+
* Everything codegen records about one function: the runtime fields plus the
|
|
149
|
+
* source locations, inputs, middleware and call graph that tooling (the
|
|
150
|
+
* console, deploy planner, coverage) reads.
|
|
151
|
+
*/
|
|
134
152
|
export type FunctionMeta = FunctionRuntimeMeta & Partial<{
|
|
135
153
|
name: string;
|
|
136
154
|
/** `remote`: a contract with no local body, answered by a connected client. */
|
|
@@ -166,5 +184,7 @@ export type FunctionMeta = FunctionRuntimeMeta & Partial<{
|
|
|
166
184
|
*/
|
|
167
185
|
startsWorkflows: string[];
|
|
168
186
|
} & CommonWireMeta>;
|
|
187
|
+
/** Runtime metadata for every function, keyed by function id. */
|
|
169
188
|
export type FunctionsRuntimeMeta = Record<string, FunctionRuntimeMeta>;
|
|
189
|
+
/** Full metadata for every function, keyed by function id. */
|
|
170
190
|
export type FunctionsMeta = Record<string, FunctionMeta>;
|
|
@@ -5,9 +5,50 @@ import type { CorePikkuFunctionConfig } from './functions.types.js';
|
|
|
5
5
|
import type { SessionService } from '../services/user-session-service.js';
|
|
6
6
|
import { PikkuCredentialWireService } from '../services/credential-wire-service.js';
|
|
7
7
|
import type { AddonInstance } from '../wirings/addon/addon-runner.js';
|
|
8
|
+
/**
|
|
9
|
+
* Registers a function's config under its id so wirings can run it by name.
|
|
10
|
+
* Generated code calls this for every function codegen found; an app rarely
|
|
11
|
+
* needs to. Registering the same id again replaces the earlier config.
|
|
12
|
+
*
|
|
13
|
+
* @param funcName - The function id, as it appears in the generated metadata.
|
|
14
|
+
* @param funcConfig - The object a `pikkuFunc` / `pikkuSessionlessFunc` returned.
|
|
15
|
+
* @param packageName - The addon package it belongs to; `null` for the app.
|
|
16
|
+
*/
|
|
8
17
|
export declare const addFunction: (funcName: string, funcConfig: CorePikkuFunctionConfig<any, any, any, any, any>, packageName?: string | null) => void;
|
|
9
18
|
export declare const getFunctionNames: (packageName?: string | null) => string[];
|
|
19
|
+
/**
|
|
20
|
+
* Every function id with generated metadata: the app's own, then each addon's
|
|
21
|
+
* prefixed with the namespace it was wired under (`ns:name`).
|
|
22
|
+
*/
|
|
10
23
|
export declare const getAllFunctionNames: () => string[];
|
|
24
|
+
/**
|
|
25
|
+
* Runs one registered function the way every wiring does. Each transport's
|
|
26
|
+
* runner (HTTP, channel, queue, scheduler, RPC, MCP, CLI, workflow, agent)
|
|
27
|
+
* ends up here; an app calls it directly only when it is building its own
|
|
28
|
+
* transport.
|
|
29
|
+
*
|
|
30
|
+
* In order, it: resolves the function (falling back from `name@vN` to the
|
|
31
|
+
* unversioned name, and into an addon for `ns:name`), runs the combined
|
|
32
|
+
* middleware, resolves the session, enforces auth, `readonly`, scopes and the
|
|
33
|
+
* feature flag, reads `data()`, applies schema defaults and validation, runs
|
|
34
|
+
* global and function permissions, builds and finally closes the wire
|
|
35
|
+
* services, and calls the function. The function and its permissions receive
|
|
36
|
+
* services whose `secrets` throws on access — they read secrets through the
|
|
37
|
+
* declared typed wrappers instead.
|
|
38
|
+
*
|
|
39
|
+
* @param wireType - The transport, recorded on `wire.wireType` if unset.
|
|
40
|
+
* @param wireId - The wiring's id (route, queue name, …), recorded on
|
|
41
|
+
* `wire.wireId` if unset. Middleware registered against it is applied.
|
|
42
|
+
* @param funcName - The registered function id.
|
|
43
|
+
* @returns Whatever the function returns.
|
|
44
|
+
* @throws {MissingSessionError} A session is required and none resolved.
|
|
45
|
+
* @throws {ReadonlySessionError} A readonly session called a mutating function.
|
|
46
|
+
* @throws {MissingScopeError} The session lacks a required scope.
|
|
47
|
+
* @throws {FeatureUnavailableError} The function's feature flag is off.
|
|
48
|
+
* @throws {ForbiddenError} A permission refused the call.
|
|
49
|
+
* @throws {Error} The function or its metadata is not registered. Errors thrown
|
|
50
|
+
* by validation, middleware and the function itself propagate unchanged.
|
|
51
|
+
*/
|
|
11
52
|
export declare const runPikkuFunc: <In = any, Out = any>(wireType: PikkuWiringTypes, wireId: string, funcName: string, { singletonServices, createWireServices, wireServices: providedWireServices, data, auth: wiringAuth, inheritedMiddleware, wireMiddleware, inheritedChannelMiddleware, wireChannelMiddleware, coerceDataFromSchema, wire, sessionService, credentialWireService, packageName, addonInstance, }: {
|
|
12
53
|
singletonServices: CoreSingletonServices;
|
|
13
54
|
createWireServices?: CreateWireServices;
|