@pikku/core 0.12.72 → 0.12.77
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 +1171 -0
- package/dist/column-form.d.ts +32 -0
- package/dist/column-form.js +42 -0
- package/dist/crypto-utils.d.ts +43 -7
- package/dist/crypto-utils.js +163 -42
- package/dist/data-classification.d.ts +44 -0
- package/dist/dev/hot-reload.js +11 -30
- package/dist/dev/module-runner.d.ts +3 -7
- package/dist/dev/module-runner.js +4 -10
- package/dist/dev/reload-meta.d.ts +8 -20
- package/dist/dev/reload-meta.js +9 -29
- package/dist/errors/error-handler.d.ts +5 -30
- package/dist/errors/error-handler.js +16 -32
- package/dist/errors/errors.d.ts +32 -151
- package/dist/errors/errors.js +55 -157
- package/dist/function/abort-scope.d.ts +47 -0
- package/dist/function/abort-scope.js +63 -0
- package/dist/function/function-runner.js +37 -32
- package/dist/function/functions.types.d.ts +57 -136
- package/dist/function/functions.types.js +0 -58
- package/dist/function/index.d.ts +1 -1
- package/dist/function/list.types.d.ts +12 -62
- package/dist/function/list.types.js +4 -25
- package/dist/handle-error.d.ts +0 -13
- package/dist/handle-error.js +0 -18
- package/dist/index.d.ts +11 -5
- package/dist/index.js +7 -2
- package/dist/middleware/auth-apikey.d.ts +3 -18
- package/dist/middleware/auth-apikey.js +0 -17
- package/dist/middleware/auth-bearer.d.ts +6 -41
- package/dist/middleware/auth-bearer.js +5 -41
- package/dist/middleware/auth-cookie.d.ts +5 -27
- package/dist/middleware/auth-cookie.js +2 -26
- package/dist/middleware/cors.d.ts +7 -34
- package/dist/middleware/cors.js +7 -34
- package/dist/middleware/remote-auth.d.ts +3 -1
- package/dist/middleware/remote-auth.js +4 -3
- package/dist/middleware/telemetry.d.ts +8 -33
- package/dist/middleware/telemetry.js +2 -31
- package/dist/middleware-runner.d.ts +4 -55
- package/dist/middleware-runner.js +5 -74
- package/dist/permissions.d.ts +3 -44
- package/dist/permissions.js +19 -71
- package/dist/pikku-request.d.ts +0 -6
- package/dist/pikku-request.js +0 -6
- package/dist/pikku-state.d.ts +0 -26
- package/dist/pikku-state.js +2 -30
- package/dist/remote.d.ts +3 -5
- package/dist/remote.js +9 -8
- package/dist/schema.d.ts +5 -39
- package/dist/schema.js +5 -39
- package/dist/scopes.d.ts +4 -23
- package/dist/scopes.js +7 -48
- package/dist/secret-value.d.ts +56 -0
- package/dist/secret-value.js +46 -0
- package/dist/services/ai-agent-runner-service.d.ts +20 -0
- package/dist/services/ai-embedding-service.d.ts +2 -25
- package/dist/services/audit-service.d.ts +74 -4
- package/dist/services/audit-service.js +8 -7
- package/dist/services/content-service.d.ts +1 -46
- package/dist/services/credential-service.d.ts +3 -40
- package/dist/services/credential-wire-service.d.ts +5 -0
- package/dist/services/credential-wire-service.js +9 -1
- package/dist/services/deployment-service.d.ts +3 -9
- package/dist/services/email-service.d.ts +2 -1
- package/dist/services/gateway-service.d.ts +0 -15
- package/dist/services/http-personas.d.ts +80 -0
- package/dist/services/http-personas.js +233 -0
- package/dist/services/in-memory-queue-service.d.ts +0 -14
- package/dist/services/in-memory-queue-service.js +1 -15
- package/dist/services/in-memory-trigger-service.d.ts +0 -18
- package/dist/services/in-memory-trigger-service.js +1 -18
- package/dist/services/in-memory-workflow-service.d.ts +0 -16
- package/dist/services/in-memory-workflow-service.js +4 -33
- package/dist/services/index.d.ts +8 -9
- package/dist/services/index.js +3 -6
- package/dist/services/istanbul-coverage-service.d.ts +1 -5
- package/dist/services/istanbul-coverage-service.js +2 -8
- package/dist/services/jwt-service.d.ts +1 -16
- package/dist/services/local-content-request-handler.d.ts +29 -0
- package/dist/services/local-content-request-handler.js +176 -0
- package/dist/services/local-content.d.ts +13 -2
- package/dist/services/local-content.js +40 -13
- package/dist/services/local-gateway-service.d.ts +0 -16
- package/dist/services/local-gateway-service.js +2 -17
- package/dist/services/local-secrets.d.ts +4 -7
- package/dist/services/local-secrets.js +7 -7
- package/dist/services/logger-console.d.ts +3 -7
- package/dist/services/logger-console.js +3 -7
- package/dist/services/logger.d.ts +22 -40
- package/dist/services/meta-service.d.ts +23 -26
- package/dist/services/meta-service.js +22 -36
- package/dist/services/personas-service.d.ts +134 -0
- package/dist/services/personas-service.js +40 -0
- package/dist/services/pikku-user-id.js +0 -4
- package/dist/services/queue-webhook-service.d.ts +2 -36
- package/dist/services/queue-webhook-service.js +10 -42
- package/dist/services/scheduler-service.d.ts +1 -50
- package/dist/services/scheduler-service.js +0 -10
- package/dist/services/schema-service.d.ts +1 -24
- package/dist/services/scope-service.d.ts +49 -34
- package/dist/services/scoped-secret-service.d.ts +4 -7
- package/dist/services/scoped-secret-service.js +0 -4
- package/dist/services/secret-host-binding.d.ts +8 -0
- package/dist/services/secret-host-binding.js +36 -0
- package/dist/services/secret-service.d.ts +12 -35
- package/dist/services/secretless.d.ts +6 -0
- package/dist/services/secretless.js +21 -0
- package/dist/services/stub-tracker.d.ts +7 -18
- package/dist/services/stub-tracker.js +8 -18
- package/dist/services/system-role-guard.d.ts +33 -0
- package/dist/services/system-role-guard.js +38 -0
- package/dist/services/trigger-service.d.ts +0 -12
- package/dist/services/typed-secret-service.d.ts +5 -11
- package/dist/services/typed-secret-service.js +1 -7
- package/dist/services/v8-coverage-service.d.ts +2 -3
- package/dist/services/v8-coverage-service.js +1 -2
- package/dist/services/variables-service.d.ts +1 -8
- package/dist/services/webhook-service.d.ts +21 -64
- package/dist/services/webhook-service.js +6 -20
- package/dist/services/workflow-service.d.ts +3 -15
- package/dist/testing/service-tests.js +6 -23
- package/dist/time-utils.d.ts +0 -16
- package/dist/time-utils.js +1 -19
- package/dist/types/core.types.d.ts +120 -219
- package/dist/types/core.types.js +0 -42
- package/dist/types/state.types.d.ts +4 -9
- package/dist/utils/hmac.d.ts +4 -10
- package/dist/utils/hmac.js +4 -10
- package/dist/utils/safe-fetch.d.ts +7 -35
- package/dist/utils/safe-fetch.js +13 -53
- package/dist/utils.d.ts +1 -6
- package/dist/utils.js +6 -15
- package/dist/wirings/actor-flow/actor-flow.types.d.ts +1 -34
- package/dist/wirings/actor-flow/index.d.ts +0 -9
- package/dist/wirings/actor-flow/run-conversation.d.ts +5 -5
- package/dist/wirings/actor-flow/run-conversation.js +14 -7
- package/dist/wirings/ai-agent/ai-agent-agui.d.ts +0 -5
- package/dist/wirings/ai-agent/ai-agent-agui.js +46 -12
- package/dist/wirings/ai-agent/ai-agent-helpers.d.ts +7 -0
- package/dist/wirings/ai-agent/ai-agent-helpers.js +7 -0
- package/dist/wirings/ai-agent/ai-agent-interrupt.d.ts +153 -0
- package/dist/wirings/ai-agent/ai-agent-interrupt.js +256 -0
- package/dist/wirings/ai-agent/ai-agent-memory.js +0 -2
- package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +0 -9
- package/dist/wirings/ai-agent/ai-agent-model-config.js +1 -9
- package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +10 -99
- package/dist/wirings/ai-agent/ai-agent-prepare.js +65 -132
- package/dist/wirings/ai-agent/ai-agent-registry.d.ts +2 -1
- package/dist/wirings/ai-agent/ai-agent-registry.js +5 -1
- package/dist/wirings/ai-agent/ai-agent-runner.js +63 -22
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +25 -2
- package/dist/wirings/ai-agent/ai-agent-stream.js +180 -64
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +124 -4
- package/dist/wirings/ai-agent/index.d.ts +6 -4
- package/dist/wirings/ai-agent/index.js +5 -4
- package/dist/wirings/ai-agent/voice-input.d.ts +59 -1
- package/dist/wirings/ai-agent/voice-input.js +90 -12
- package/dist/wirings/ai-agent/voice-output.d.ts +69 -1
- package/dist/wirings/ai-agent/voice-output.js +162 -50
- package/dist/wirings/channel/channel-common.d.ts +7 -20
- package/dist/wirings/channel/channel-common.js +7 -21
- package/dist/wirings/channel/channel-handler.js +25 -6
- package/dist/wirings/channel/channel-host-rpc.d.ts +25 -0
- package/dist/wirings/channel/channel-host-rpc.js +38 -0
- package/dist/wirings/channel/channel-middleware-runner.d.ts +0 -12
- package/dist/wirings/channel/channel-middleware-runner.js +0 -12
- package/dist/wirings/channel/channel-rpc-registry.d.ts +31 -0
- package/dist/wirings/channel/channel-rpc-registry.js +89 -0
- package/dist/wirings/channel/channel-rpc-responder.d.ts +15 -0
- package/dist/wirings/channel/channel-rpc-responder.js +71 -0
- package/dist/wirings/channel/channel-rpc-service.d.ts +40 -0
- package/dist/wirings/channel/channel-rpc-service.js +106 -0
- package/dist/wirings/channel/channel-rpc-validators.d.ts +14 -0
- package/dist/wirings/channel/channel-rpc-validators.js +30 -0
- package/dist/wirings/channel/channel-rpc.d.ts +5 -0
- package/dist/wirings/channel/channel-rpc.js +5 -0
- package/dist/wirings/channel/channel-rpc.types.d.ts +90 -0
- package/dist/wirings/channel/channel-rpc.types.js +50 -0
- package/dist/wirings/channel/channel-runner.d.ts +0 -4
- package/dist/wirings/channel/channel-runner.js +0 -14
- package/dist/wirings/channel/channel-store.d.ts +0 -10
- package/dist/wirings/channel/channel.types.d.ts +12 -1
- package/dist/wirings/channel/define-channel-routes.d.ts +0 -20
- package/dist/wirings/channel/define-channel-routes.js +0 -20
- package/dist/wirings/channel/eventhub-service.d.ts +0 -18
- package/dist/wirings/channel/index.d.ts +4 -1
- package/dist/wirings/channel/index.js +2 -0
- package/dist/wirings/channel/local/local-channel-runner.js +3 -1
- package/dist/wirings/channel/local/local-eventhub-service.d.ts +0 -33
- package/dist/wirings/channel/local/local-eventhub-service.js +2 -36
- package/dist/wirings/channel/log-channels.d.ts +0 -4
- package/dist/wirings/channel/log-channels.js +0 -4
- package/dist/wirings/channel/pikku-abstract-channel-handler.js +6 -0
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +2 -5
- package/dist/wirings/cli/channel/cli-approval.d.ts +41 -0
- package/dist/wirings/cli/channel/cli-approval.js +81 -0
- package/dist/wirings/cli/channel/cli-channel-runner.d.ts +0 -4
- package/dist/wirings/cli/channel/cli-channel-runner.js +3 -25
- package/dist/wirings/cli/channel/cli-raw-channel-runner.d.ts +47 -9
- package/dist/wirings/cli/channel/cli-raw-channel-runner.js +24 -16
- package/dist/wirings/cli/channel/cli-raw-client-runner.d.ts +38 -0
- package/dist/wirings/cli/channel/cli-raw-client-runner.js +129 -0
- package/dist/wirings/cli/channel/index.d.ts +5 -0
- package/dist/wirings/cli/channel/index.js +2 -0
- package/dist/wirings/cli/cli-runner.d.ts +20 -20
- package/dist/wirings/cli/cli-runner.js +28 -89
- package/dist/wirings/cli/cli.types.d.ts +14 -3
- package/dist/wirings/cli/command-parser.d.ts +1 -10
- package/dist/wirings/cli/command-parser.js +10 -87
- package/dist/wirings/cli/define-cli-commands.d.ts +1 -17
- package/dist/wirings/cli/define-cli-commands.js +1 -17
- package/dist/wirings/credential/credential.types.d.ts +0 -12
- package/dist/wirings/credential/define-credential.d.ts +48 -0
- package/dist/wirings/credential/define-credential.js +47 -0
- package/dist/wirings/credential/index.d.ts +1 -1
- package/dist/wirings/credential/index.js +1 -1
- package/dist/wirings/credential/validate-credential-definitions.d.ts +2 -4
- package/dist/wirings/gateway/gateway-runner.d.ts +1 -20
- package/dist/wirings/gateway/gateway-runner.js +8 -105
- package/dist/wirings/gateway/gateway.types.d.ts +7 -80
- package/dist/wirings/http/http-routes.d.ts +0 -63
- package/dist/wirings/http/http-routes.js +0 -63
- package/dist/wirings/http/http-runner.d.ts +0 -99
- package/dist/wirings/http/http-runner.js +9 -165
- package/dist/wirings/http/http.types.d.ts +14 -55
- package/dist/wirings/http/log-http-routes.d.ts +0 -4
- package/dist/wirings/http/log-http-routes.js +0 -4
- package/dist/wirings/http/pikku-fetch-http-request.d.ts +0 -40
- package/dist/wirings/http/pikku-fetch-http-request.js +0 -58
- package/dist/wirings/http/pikku-fetch-http-response.js +0 -3
- package/dist/wirings/http/routers/path-to-regex.js +2 -13
- package/dist/wirings/http/web-request.d.ts +0 -8
- package/dist/wirings/http/web-request.js +25 -17
- package/dist/wirings/mcp/mcp-runner.d.ts +1 -4
- package/dist/wirings/mcp/mcp-runner.js +1 -14
- package/dist/wirings/mcp/mcp.types.d.ts +2 -35
- package/dist/wirings/oauth2/oauth2.types.d.ts +0 -28
- package/dist/wirings/oauth2/oauth2.types.js +0 -3
- package/dist/wirings/persona/define-personas.d.ts +32 -0
- package/dist/wirings/persona/define-personas.js +31 -0
- package/dist/wirings/persona/index.d.ts +21 -0
- package/dist/wirings/persona/index.js +17 -0
- package/dist/wirings/persona/persona-email.d.ts +37 -0
- package/dist/wirings/persona/persona-email.js +69 -0
- package/dist/wirings/persona/persona-environments.d.ts +45 -0
- package/dist/wirings/persona/persona-environments.js +81 -0
- package/dist/wirings/persona/persona-mailbox.d.ts +101 -0
- package/dist/wirings/persona/persona-mailbox.js +53 -0
- package/dist/wirings/persona/persona.types.d.ts +136 -0
- package/dist/wirings/persona/persona.types.js +1 -0
- package/dist/wirings/persona/validate-personas.d.ts +53 -0
- package/dist/wirings/persona/validate-personas.js +94 -0
- package/dist/wirings/queue/index.d.ts +3 -0
- package/dist/wirings/queue/index.js +2 -3
- package/dist/wirings/queue/queue-identity.d.ts +28 -0
- package/dist/wirings/queue/queue-identity.js +103 -0
- package/dist/wirings/queue/queue-runner.d.ts +0 -19
- package/dist/wirings/queue/queue-runner.js +9 -30
- package/dist/wirings/queue/queue.types.d.ts +20 -90
- package/dist/wirings/queue/register-queue-helper.d.ts +0 -12
- package/dist/wirings/queue/register-queue-helper.js +0 -11
- package/dist/wirings/queue/signed-queue-service.d.ts +17 -0
- package/dist/wirings/queue/signed-queue-service.js +42 -0
- package/dist/wirings/queue/validate-worker-config.d.ts +2 -23
- package/dist/wirings/queue/validate-worker-config.js +0 -14
- package/dist/wirings/role/define-system-role.d.ts +32 -0
- package/dist/wirings/role/define-system-role.js +31 -0
- package/dist/wirings/role/index.d.ts +3 -0
- package/dist/wirings/role/index.js +2 -0
- package/dist/wirings/role/role.types.d.ts +43 -0
- package/dist/wirings/role/role.types.js +1 -0
- package/dist/wirings/role/validate-role-definitions.d.ts +21 -0
- package/dist/wirings/role/validate-role-definitions.js +71 -0
- package/dist/wirings/rpc/addon-runner.d.ts +0 -19
- package/dist/wirings/rpc/addon-runner.js +0 -51
- package/dist/wirings/rpc/remote-addon-auth.d.ts +3 -13
- package/dist/wirings/rpc/remote-addon-auth.js +7 -11
- package/dist/wirings/rpc/rpc-runner.d.ts +11 -18
- package/dist/wirings/rpc/rpc-runner.js +88 -105
- package/dist/wirings/rpc/rpc-types.d.ts +7 -6
- package/dist/wirings/rpc/wire-addon.d.ts +25 -0
- package/dist/wirings/rpc/wire-addon.js +62 -0
- package/dist/wirings/rpc/wire-remote-addon.d.ts +3 -28
- package/dist/wirings/rpc/wire-remote-addon.js +0 -8
- package/dist/wirings/scheduler/log-schedulers.d.ts +0 -4
- package/dist/wirings/scheduler/log-schedulers.js +0 -4
- package/dist/wirings/scheduler/scheduler-runner.d.ts +0 -1
- package/dist/wirings/scheduler/scheduler-runner.js +0 -1
- package/dist/wirings/scheduler/scheduler.types.d.ts +1 -14
- package/dist/wirings/scope/define-scope.d.ts +32 -0
- package/dist/wirings/scope/define-scope.js +31 -0
- package/dist/wirings/scope/index.d.ts +1 -1
- package/dist/wirings/scope/index.js +1 -1
- package/dist/wirings/scope/scope.types.d.ts +7 -9
- package/dist/wirings/scope/validate-scope-definitions.d.ts +2 -21
- package/dist/wirings/scope/validate-scope-definitions.js +3 -21
- package/dist/wirings/secret/index.d.ts +1 -1
- package/dist/wirings/secret/index.js +1 -1
- package/dist/wirings/secret/secret.types.d.ts +19 -15
- package/dist/wirings/secret/secret.types.js +1 -1
- package/dist/wirings/secret/validate-secret-definitions.d.ts +2 -4
- package/dist/wirings/trigger/trigger-runner.d.ts +0 -27
- package/dist/wirings/trigger/trigger-runner.js +1 -24
- package/dist/wirings/trigger/trigger.types.d.ts +1 -82
- package/dist/wirings/trigger/trigger.types.js +0 -34
- package/dist/wirings/variable/index.d.ts +1 -1
- package/dist/wirings/variable/index.js +1 -1
- package/dist/wirings/variable/validate-variable-definitions.d.ts +2 -4
- package/dist/wirings/variable/variable.types.d.ts +1 -13
- package/dist/wirings/variable/variable.types.js +1 -1
- package/dist/wirings/virtual-user/index.d.ts +30 -0
- package/dist/wirings/virtual-user/index.js +10 -0
- package/dist/wirings/virtual-user/prepare-virtual-user-run.d.ts +54 -0
- package/dist/wirings/virtual-user/prepare-virtual-user-run.js +49 -0
- package/dist/wirings/virtual-user/run-virtual-user.d.ts +92 -0
- package/dist/wirings/virtual-user/run-virtual-user.js +478 -0
- package/dist/wirings/virtual-user/virtual-user-agents.d.ts +38 -0
- package/dist/wirings/virtual-user/virtual-user-agents.js +24 -0
- package/dist/wirings/virtual-user/virtual-user-catalogue.d.ts +92 -0
- package/dist/wirings/virtual-user/virtual-user-catalogue.js +134 -0
- package/dist/wirings/virtual-user/virtual-user-derive.d.ts +26 -0
- package/dist/wirings/virtual-user/virtual-user-derive.js +137 -0
- package/dist/wirings/virtual-user/virtual-user-dispositions.d.ts +79 -0
- package/dist/wirings/virtual-user/virtual-user-dispositions.js +128 -0
- package/dist/wirings/virtual-user/virtual-user-intents.d.ts +78 -0
- package/dist/wirings/virtual-user/virtual-user-intents.js +142 -0
- package/dist/wirings/virtual-user/virtual-user-rng.d.ts +24 -0
- package/dist/wirings/virtual-user/virtual-user-rng.js +44 -0
- package/dist/wirings/virtual-user/virtual-user-run-store.d.ts +90 -0
- package/dist/wirings/virtual-user/virtual-user-run-store.js +1 -0
- package/dist/wirings/virtual-user/virtual-user-target.d.ts +21 -0
- package/dist/wirings/virtual-user/virtual-user-target.js +34 -0
- package/dist/wirings/virtual-user/virtual-user.types.d.ts +199 -0
- package/dist/wirings/virtual-user/virtual-user.types.js +8 -0
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +19 -15
- package/dist/wirings/workflow/dsl/workflow-runner.d.ts +0 -4
- package/dist/wirings/workflow/dsl/workflow-runner.js +0 -4
- package/dist/wirings/workflow/feature.d.ts +0 -19
- package/dist/wirings/workflow/feature.js +0 -19
- package/dist/wirings/workflow/graph/graph-node.d.ts +0 -98
- package/dist/wirings/workflow/graph/graph-node.js +0 -34
- package/dist/wirings/workflow/graph/graph-runner.js +6 -41
- package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +0 -4
- package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +0 -58
- package/dist/wirings/workflow/graph/workflow-graph.types.js +0 -6
- package/dist/wirings/workflow/index.d.ts +5 -7
- package/dist/wirings/workflow/index.js +3 -17
- package/dist/wirings/workflow/pikku-scenario-service.d.ts +87 -5
- package/dist/wirings/workflow/pikku-scenario-service.js +204 -43
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +7 -459
- package/dist/wirings/workflow/pikku-workflow-service.js +58 -551
- package/dist/wirings/workflow/run-timeline.d.ts +0 -47
- package/dist/wirings/workflow/run-timeline.js +0 -22
- package/dist/wirings/workflow/scenario-cookie-jar.d.ts +0 -23
- package/dist/wirings/workflow/scenario-cookie-jar.js +0 -16
- package/dist/wirings/workflow/scenario-poll.d.ts +0 -15
- package/dist/wirings/workflow/scenario-poll.js +0 -12
- package/dist/wirings/workflow/scenario-prose.d.ts +0 -28
- package/dist/wirings/workflow/scenario-prose.js +1 -19
- package/dist/wirings/workflow/scenario-step-guards.d.ts +0 -13
- package/dist/wirings/workflow/scenario-step-guards.js +1 -14
- package/dist/wirings/workflow/scenario-step.types.d.ts +84 -12
- package/dist/wirings/workflow/scenario-step.types.js +5 -1
- package/dist/wirings/workflow/scenario-surface.d.ts +16 -0
- package/dist/wirings/workflow/scenario-surface.js +56 -0
- package/dist/wirings/workflow/workflow-invocation-id.d.ts +0 -18
- package/dist/wirings/workflow/workflow-invocation-id.js +2 -22
- package/dist/wirings/workflow/workflow-queue-workers.d.ts +0 -20
- package/dist/wirings/workflow/workflow-queue-workers.js +0 -19
- package/dist/wirings/workflow/workflow.types.d.ts +5 -195
- package/knowledge/decisions/index.md +19 -0
- package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +49 -0
- package/knowledge/decisions/internals/a-virtual-user-run-is-not-a-workflow-and-not-a-queued-job.md +48 -0
- package/knowledge/decisions/internals/actor-flow-conversations-seed-a-hidden-kickoff-message.md +23 -0
- package/knowledge/decisions/internals/actor-flow-drives-the-target-through-a-transport-seam.md +24 -0
- package/knowledge/decisions/internals/actor-flow-verdicts-are-llm-self-evaluations.md +25 -0
- package/knowledge/decisions/internals/addon-package-roots-resolve-by-walking-node-module-search-paths.md +26 -0
- package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +33 -0
- package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +28 -0
- package/knowledge/decisions/internals/ai-agent-agui-bridge-obeys-the-client-ordering-contract.md +29 -0
- package/knowledge/decisions/internals/ai-agent-audio-chunks-carry-the-format-the-provider-returned.md +20 -0
- package/knowledge/decisions/internals/ai-agent-credential-suspensions-hide-the-tool-result.md +26 -0
- package/knowledge/decisions/internals/ai-agent-delegate-and-supervise-hide-different-text.md +26 -0
- package/knowledge/decisions/internals/ai-agent-llm-tool-arguments-have-nulls-stripped.md +23 -0
- package/knowledge/decisions/internals/ai-agent-model-config-stays-a-single-resolution-seam.md +25 -0
- package/knowledge/decisions/internals/ai-agent-onerror-hooks-cannot-change-the-failure.md +22 -0
- package/knowledge/decisions/internals/ai-agent-runner-methods-must-keep-their-receiver.md +22 -0
- package/knowledge/decisions/internals/ai-agent-stream-persistence-is-best-effort.md +27 -0
- package/knowledge/decisions/internals/ai-agent-sub-agents-inherit-the-parent-context-block.md +26 -0
- package/knowledge/decisions/internals/ai-agent-tool-execute-failures-are-logged-unconditionally.md +25 -0
- package/knowledge/decisions/internals/ai-agent-voice-input-transcribes-audio-parts-in-place.md +22 -0
- package/knowledge/decisions/internals/ai-agent-working-memory-is-persisted-only-when-valid.md +25 -0
- package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +30 -0
- package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +31 -0
- package/knowledge/decisions/internals/channel-state-is-per-socket-session-state-is-per-user.md +29 -0
- package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +28 -0
- package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +27 -0
- package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +28 -0
- package/knowledge/decisions/internals/cli-stdout-is-reserved-for-machine-readable-output.md +34 -0
- package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +29 -0
- package/knowledge/decisions/internals/core-column-form-is-an-axis-of-its-own.md +84 -0
- package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +41 -0
- package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +44 -0
- package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +39 -0
- package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +42 -0
- package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +39 -0
- package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +43 -0
- package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +38 -0
- package/knowledge/decisions/internals/core-state-is-a-global-map-written-only-at-registration-time.md +44 -0
- package/knowledge/decisions/internals/email-meta-is-read-uncached-because-codegen-rewrites-it-mid-session.md +27 -0
- package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +32 -0
- package/knowledge/decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md +28 -0
- package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +31 -0
- package/knowledge/decisions/internals/generated-src-paths-in-pikku-meta-are-absolute.md +26 -0
- package/knowledge/decisions/internals/http-request-bodies-are-read-once-and-shared.md +32 -0
- package/knowledge/decisions/internals/http-route-groups-cascade-config-in-a-fixed-order.md +28 -0
- package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +30 -0
- package/knowledge/decisions/internals/http-runner-logs-through-a-trace-scoped-logger-functions-do-not.md +26 -0
- package/knowledge/decisions/internals/http-set-cookie-headers-are-appended-never-joined.md +28 -0
- package/knowledge/decisions/internals/http-sse-streams-flush-headers-only-after-middleware.md +32 -0
- package/knowledge/decisions/internals/http-wiring-without-metadata-is-skipped-not-fatal.md +26 -0
- package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +25 -0
- package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +26 -0
- package/knowledge/decisions/internals/index.md +117 -0
- package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +25 -0
- package/knowledge/decisions/internals/local-trigger-and-gateway-services-assume-a-single-process.md +26 -0
- package/knowledge/decisions/internals/node-only-builtins-are-imported-dynamically.md +24 -0
- package/knowledge/decisions/internals/one-project-shape-check-two-validators.md +53 -0
- package/knowledge/decisions/internals/queue-group-concurrency-keeps-one-shared-queue-fair.md +28 -0
- package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +27 -0
- package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +31 -0
- package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +32 -0
- package/knowledge/decisions/internals/scenario-agent-calls-sign-in-on-401-only.md +27 -0
- package/knowledge/decisions/internals/scenario-meta-lives-apart-from-app-meta-but-merges-when-read-off-disk.md +26 -0
- package/knowledge/decisions/internals/scenario-steps-return-drained-response-records.md +27 -0
- package/knowledge/decisions/internals/scenarios-live-in-files-named-for-them.md +48 -0
- package/knowledge/decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md +30 -0
- package/knowledge/decisions/internals/serverless-channel-disconnect-must-tolerate-a-missing-channel.md +28 -0
- package/knowledge/decisions/internals/the-dev-queue-copies-prod-timing-and-serialization-semantics.md +30 -0
- package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +29 -0
- package/knowledge/decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md +27 -0
- package/knowledge/decisions/internals/the-kek-salt-is-scoped-to-the-key-version.md +40 -0
- package/knowledge/decisions/internals/the-schema-service-is-never-stubbed.md +26 -0
- package/knowledge/decisions/internals/trigger-declaration-is-split-from-trigger-source.md +33 -0
- package/knowledge/decisions/internals/typed-secret-service-caches-for-the-process-lifetime.md +26 -0
- package/knowledge/decisions/internals/validate-checks-personas-through-a-shared-module.md +43 -0
- package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +26 -0
- package/knowledge/decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md +25 -0
- package/knowledge/decisions/internals/whether-a-run-is-inline-is-read-from-the-run-record.md +58 -0
- package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +34 -0
- package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +42 -0
- package/knowledge/decisions/internals/workflow-dsl-meta-separates-runtime-expressions-from-literals.md +38 -0
- package/knowledge/decisions/internals/workflow-features-resolve-scenarios-by-object-identity.md +29 -0
- package/knowledge/decisions/internals/workflow-graph-inline-and-queued-runs-share-one-planner.md +42 -0
- package/knowledge/decisions/internals/workflow-graph-node-notes-are-excluded-from-the-graph-hash.md +25 -0
- package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +29 -0
- package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +43 -0
- package/knowledge/decisions/internals/workflow-queued-step-dispatch-requires-an-explicit-opt-in.md +29 -0
- package/knowledge/decisions/internals/workflow-queues-are-per-workflow-by-default.md +42 -0
- package/knowledge/decisions/internals/workflow-repeated-step-names-get-an-ordinal-suffix.md +33 -0
- package/knowledge/decisions/internals/workflow-replay-reads-its-steps-once-and-caches-only-the-immutable-half.md +32 -0
- package/knowledge/decisions/internals/workflow-retries-are-owned-by-the-workflow-not-the-queue.md +31 -0
- package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +39 -0
- package/knowledge/decisions/internals/workflow-run-mirror-is-never-a-source-of-truth.md +29 -0
- package/knowledge/decisions/internals/workflow-run-polling-backs-off-to-the-callers-ceiling.md +33 -0
- package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +37 -0
- package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +50 -0
- package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +43 -0
- package/knowledge/decisions/internals/workflow-scenario-prose-is-rendered-from-typed-calls-not-parsed-from-english.md +32 -0
- package/knowledge/decisions/internals/workflow-scenario-quarantine-reason-lives-in-code.md +18 -0
- package/knowledge/decisions/internals/workflow-scenario-step-targets-are-string-literals-for-the-inspector.md +34 -0
- package/knowledge/decisions/internals/workflow-step-compensation-runs-as-its-own-durable-step.md +26 -0
- package/knowledge/decisions/internals/workflow-step-dispatch-failure-is-transient-not-a-run-failure.md +33 -0
- package/knowledge/decisions/internals/workflow-step-lock-is-held-only-to-claim-the-step.md +27 -0
- package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +34 -0
- package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +38 -0
- package/knowledge/decisions/internals/workflow-suspended-runs-keep-their-in-process-context.md +30 -0
- package/knowledge/decisions/security/a-dropped-audit-write-is-always-logged.md +26 -0
- package/knowledge/decisions/security/actor-flow-missing-approval-decisions-default-to-denied.md +22 -0
- package/knowledge/decisions/security/actor-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +27 -0
- package/knowledge/decisions/security/actor-sign-in-only-works-for-actor-flagged-users.md +27 -0
- package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +43 -0
- package/knowledge/decisions/security/addon-config-gates-apply-only-at-the-namespaced-rpc-boundary.md +52 -0
- package/knowledge/decisions/security/addon-scopes-are-resolved-where-the-function-runs.md +46 -0
- package/knowledge/decisions/security/ai-agent-approval-forwarding-requires-a-symbol-brand.md +27 -0
- package/knowledge/decisions/security/ai-agent-credential-requests-are-symbol-branded.md +37 -0
- package/knowledge/decisions/security/ai-agent-gate-requires-a-session-only-when-auth-is-true.md +31 -0
- package/knowledge/decisions/security/ai-agent-ownership-failures-never-echo-the-resource.md +23 -0
- package/knowledge/decisions/security/ai-agent-resume-re-runs-the-authorization-gate.md +22 -0
- package/knowledge/decisions/security/ai-agent-sessionless-deployments-have-no-thread-ownership.md +39 -0
- package/knowledge/decisions/security/ai-agent-thread-ownership-composes-the-session-principal.md +30 -0
- package/knowledge/decisions/security/ai-agent-tool-filtering-reads-the-live-function-config.md +24 -0
- package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +30 -0
- package/knowledge/decisions/security/an-exposed-ungated-function-is-a-codegen-warning.md +49 -0
- package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +76 -0
- package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +39 -0
- package/knowledge/decisions/security/core-secrets-use-a-per-secret-dek-wrapped-by-a-kek.md +37 -0
- package/knowledge/decisions/security/gateway-handlers-run-through-the-function-runner-gate.md +31 -0
- package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +30 -0
- package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +40 -0
- package/knowledge/decisions/security/http-error-detail-is-withheld-from-clients-in-production.md +33 -0
- package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +46 -0
- package/knowledge/decisions/security/index.md +55 -0
- package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +27 -0
- package/knowledge/decisions/security/passphrases-are-stretched-key-material-is-expanded.md +40 -0
- package/knowledge/decisions/security/permission-auth-filtering-requires-live-permission-functions.md +31 -0
- package/knowledge/decisions/security/pikku-carries-actor-scopes-as-data-and-the-app-grants-them.md +26 -0
- package/knowledge/decisions/security/queue-job-identities-are-signed-at-enqueue.md +69 -0
- package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +39 -0
- package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +34 -0
- package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +49 -0
- package/knowledge/decisions/security/scenario-step-functions-are-never-externally-invocable.md +30 -0
- package/knowledge/decisions/security/scope-resolution-happens-at-the-session-boundary-and-sync-never-deletes.md +28 -0
- package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +34 -0
- package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +37 -0
- package/knowledge/decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md +25 -0
- package/knowledge/decisions/security/workflow-actor-steps-always-use-the-real-transport.md +34 -0
- package/knowledge/decisions/security/workflow-approval-payloads-are-validated-on-replay-inside-the-workflow.md +40 -0
- package/knowledge/decisions/security/workflow-queued-steps-rehydrate-their-session-from-the-run-wire.md +32 -0
- package/knowledge/decisions/security/workflow-scenario-sessions-are-isolated-per-actor-and-per-scenario.md +32 -0
- package/knowledge/decisions/security/workflow-scenario-steps-are-never-network-invocable.md +31 -0
- package/knowledge/index.md +24 -0
- package/knowledge/questions/index.md +15 -0
- package/package.json +6 -2
- package/run-tests.sh +0 -0
- package/src/column-form.test.ts +97 -0
- package/src/column-form.ts +58 -0
- package/src/crypto-utils.test.ts +460 -19
- package/src/crypto-utils.ts +306 -59
- package/src/data-classification.ts +45 -7
- package/src/dev/hot-reload.test.ts +0 -4
- package/src/dev/hot-reload.ts +11 -30
- package/src/dev/module-runner.ts +7 -32
- package/src/dev/reload-meta.ts +9 -29
- package/src/errors/error-handler.ts +20 -35
- package/src/errors/error.test.ts +30 -1
- package/src/errors/errors.ts +73 -157
- package/src/function/abort-scope.test.ts +97 -0
- package/src/function/abort-scope.ts +80 -0
- package/src/function/function-runner.test.ts +0 -7
- package/src/function/function-runner.ts +62 -32
- package/src/function/functions.types.ts +95 -138
- package/src/function/index.ts +1 -0
- package/src/function/list.types.test.ts +3 -25
- package/src/function/list.types.ts +12 -62
- package/src/handle-error.ts +0 -18
- package/src/index.ts +84 -3
- package/src/middleware/auth-apikey.test.ts +0 -1
- package/src/middleware/auth-apikey.ts +0 -17
- package/src/middleware/auth-bearer.test.ts +3 -5
- package/src/middleware/auth-bearer.ts +5 -41
- package/src/middleware/auth-cookie.test.ts +0 -6
- package/src/middleware/auth-cookie.ts +2 -26
- package/src/middleware/cors.test.ts +34 -0
- package/src/middleware/cors.ts +12 -33
- package/src/middleware/remote-auth.test.ts +26 -10
- package/src/middleware/remote-auth.ts +11 -3
- package/src/middleware/telemetry.ts +2 -31
- package/src/middleware-runner.test.ts +0 -2
- package/src/middleware-runner.ts +5 -74
- package/src/permissions.test.ts +30 -0
- package/src/permissions.ts +24 -74
- package/src/pikku-request.ts +0 -6
- package/src/pikku-state.ts +2 -30
- package/src/production-barrels-stay-lean.test.ts +110 -0
- package/src/remote.test.ts +173 -0
- package/src/remote.ts +18 -8
- package/src/schema.ts +5 -39
- package/src/scopes.ts +7 -48
- package/src/secret-value.test.ts +204 -0
- package/src/secret-value.ts +111 -0
- package/src/services/ai-agent-runner-service.ts +20 -0
- package/src/services/ai-embedding-service.ts +3 -25
- package/src/services/audit-service.ts +88 -11
- package/src/services/content-service.ts +1 -46
- package/src/services/credential-service.ts +3 -40
- package/src/services/credential-wire-service.test.ts +0 -2
- package/src/services/credential-wire-service.ts +9 -1
- package/src/services/deployment-service.ts +3 -9
- package/src/services/email-service.ts +3 -1
- package/src/services/gateway-service.ts +0 -15
- package/src/services/{http-scenario-actors-converse.test.ts → http-personas-converse.test.ts} +38 -9
- package/src/services/{http-scenario-actors.test.ts → http-personas.test.ts} +39 -22
- package/src/services/{http-scenario-actors.ts → http-personas.ts} +85 -45
- package/src/services/in-memory-queue-service.ts +1 -15
- package/src/services/in-memory-trigger-service.ts +1 -18
- package/src/services/in-memory-workflow-service.test.ts +0 -13
- package/src/services/in-memory-workflow-service.ts +4 -38
- package/src/services/index.ts +23 -18
- package/src/services/istanbul-coverage-service.ts +2 -8
- package/src/services/jwt-service.ts +1 -16
- package/src/services/local-content-request-handler.test.ts +202 -0
- package/src/services/local-content-request-handler.ts +267 -0
- package/src/services/local-content.test.ts +159 -27
- package/src/services/local-content.ts +55 -23
- package/src/services/local-gateway-service.ts +2 -17
- package/src/services/local-secrets.test.ts +20 -5
- package/src/services/local-secrets.ts +15 -11
- package/src/services/logger-console.test.ts +0 -1
- package/src/services/logger-console.ts +3 -7
- package/src/services/logger.ts +31 -46
- package/src/services/meta-service.test.ts +1 -5
- package/src/services/meta-service.ts +41 -61
- package/src/services/{scenario-actors-service.ts → personas-service.ts} +48 -43
- package/src/services/pikku-user-id.ts +0 -4
- package/src/services/queue-webhook-service.test.ts +2 -1
- package/src/services/queue-webhook-service.ts +10 -42
- package/src/services/scheduler-service.ts +1 -50
- package/src/services/schema-service.ts +1 -24
- package/src/services/scope-service.ts +50 -34
- package/src/services/scoped-secret-service.ts +4 -7
- package/src/services/secret-host-binding.test.ts +138 -0
- package/src/services/secret-host-binding.ts +51 -0
- package/src/services/secret-service.ts +12 -35
- package/src/services/secretless.test.ts +54 -0
- package/src/services/secretless.ts +29 -0
- package/src/services/stub-tracker.ts +8 -18
- package/src/services/system-role-guard.test.ts +93 -0
- package/src/services/system-role-guard.ts +71 -0
- package/src/services/trigger-service.ts +0 -12
- package/src/services/typed-secret-service.ts +12 -14
- package/src/services/v8-coverage-service.ts +3 -6
- package/src/services/variables-service.ts +1 -8
- package/src/services/webhook-service.ts +23 -64
- package/src/services/workflow-service.ts +3 -20
- package/src/testing/service-tests.ts +6 -32
- package/src/time-utils.ts +1 -19
- package/src/types/core.types.ts +137 -229
- package/src/types/state.types.ts +7 -9
- package/src/utils/hmac.ts +4 -10
- package/src/utils/safe-fetch.ts +13 -54
- package/src/utils.test.ts +11 -2
- package/src/utils.ts +6 -15
- package/src/wirings/actor-flow/actor-flow.types.ts +1 -34
- package/src/wirings/actor-flow/index.ts +0 -9
- package/src/wirings/actor-flow/run-conversation.test.ts +11 -6
- package/src/wirings/actor-flow/run-conversation.ts +19 -12
- package/src/wirings/ai-agent/ai-agent-agui.test.ts +91 -10
- package/src/wirings/ai-agent/ai-agent-agui.ts +49 -17
- package/src/wirings/ai-agent/ai-agent-helpers.ts +20 -0
- package/src/wirings/ai-agent/ai-agent-interrupt.test.ts +842 -0
- package/src/wirings/ai-agent/ai-agent-interrupt.ts +399 -0
- package/src/wirings/ai-agent/ai-agent-memory.ts +0 -2
- package/src/wirings/ai-agent/ai-agent-model-config.ts +1 -9
- package/src/wirings/ai-agent/ai-agent-prepare.test.ts +202 -31
- package/src/wirings/ai-agent/ai-agent-prepare.ts +89 -139
- package/src/wirings/ai-agent/ai-agent-registry.test.ts +191 -6
- package/src/wirings/ai-agent/ai-agent-registry.ts +18 -1
- package/src/wirings/ai-agent/ai-agent-resume-authorization.test.ts +0 -2
- package/src/wirings/ai-agent/ai-agent-runner.test.ts +11 -9
- package/src/wirings/ai-agent/ai-agent-runner.ts +85 -35
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +205 -103
- package/src/wirings/ai-agent/ai-agent-stream.ts +224 -76
- package/src/wirings/ai-agent/ai-agent-thread-ownership.test.ts +301 -0
- package/src/wirings/ai-agent/ai-agent.types.ts +130 -5
- package/src/wirings/ai-agent/index.ts +37 -3
- package/src/wirings/ai-agent/voice-input.test.ts +137 -7
- package/src/wirings/ai-agent/voice-input.ts +96 -12
- package/src/wirings/ai-agent/voice-output.test.ts +512 -0
- package/src/wirings/ai-agent/voice-output.ts +243 -56
- package/src/wirings/channel/channel-common.ts +15 -20
- package/src/wirings/channel/channel-handler.test.ts +50 -0
- package/src/wirings/channel/channel-handler.ts +32 -11
- package/src/wirings/channel/channel-host-rpc.test.ts +150 -0
- package/src/wirings/channel/channel-host-rpc.ts +69 -0
- package/src/wirings/channel/channel-middleware-runner.test.ts +0 -1
- package/src/wirings/channel/channel-middleware-runner.ts +0 -12
- package/src/wirings/channel/channel-rpc-registry.ts +116 -0
- package/src/wirings/channel/channel-rpc-responder.ts +117 -0
- package/src/wirings/channel/channel-rpc-service.ts +146 -0
- package/src/wirings/channel/channel-rpc-validators.ts +65 -0
- package/src/wirings/channel/channel-rpc.test.ts +820 -0
- package/src/wirings/channel/channel-rpc.ts +5 -0
- package/src/wirings/channel/channel-rpc.types.ts +150 -0
- package/src/wirings/channel/channel-runner.ts +0 -14
- package/src/wirings/channel/channel-store.ts +0 -10
- package/src/wirings/channel/channel.types.ts +19 -8
- package/src/wirings/channel/define-channel-routes.ts +0 -20
- package/src/wirings/channel/eventhub-service.ts +0 -18
- package/src/wirings/channel/index.ts +35 -0
- package/src/wirings/channel/local/local-channel-handler.ts +3 -1
- package/src/wirings/channel/local/local-channel-runner.test.ts +0 -10
- package/src/wirings/channel/local/local-channel-runner.ts +3 -1
- package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -13
- package/src/wirings/channel/local/local-eventhub-service.ts +2 -37
- package/src/wirings/channel/log-channels.ts +0 -4
- package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +83 -2
- package/src/wirings/channel/pikku-abstract-channel-handler.ts +7 -0
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +2 -5
- package/src/wirings/cli/channel/cli-approval.test.ts +177 -0
- package/src/wirings/cli/channel/cli-approval.ts +135 -0
- package/src/wirings/cli/channel/cli-channel-runner.ts +4 -26
- package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +169 -0
- package/src/wirings/cli/channel/cli-raw-channel-runner.ts +59 -16
- package/src/wirings/cli/channel/cli-raw-client-runner.test.ts +480 -0
- package/src/wirings/cli/channel/cli-raw-client-runner.ts +185 -0
- package/src/wirings/cli/channel/index.ts +13 -0
- package/src/wirings/cli/cli-runner.test.ts +0 -1
- package/src/wirings/cli/cli-runner.ts +46 -88
- package/src/wirings/cli/cli.types.ts +14 -3
- package/src/wirings/cli/command-parser.test.ts +0 -4
- package/src/wirings/cli/command-parser.ts +11 -91
- package/src/wirings/cli/define-cli-commands.ts +1 -17
- package/src/wirings/credential/credential.types.ts +0 -12
- package/src/wirings/credential/{wire-credential.ts → define-credential.ts} +7 -7
- package/src/wirings/credential/index.ts +1 -1
- package/src/wirings/credential/validate-credential-definitions.ts +2 -4
- package/src/wirings/gateway/gateway-runner.test.ts +1 -21
- package/src/wirings/gateway/gateway-runner.ts +8 -110
- package/src/wirings/gateway/gateway.types.ts +7 -80
- package/src/wirings/http/http-routes.test.ts +0 -3
- package/src/wirings/http/http-routes.ts +0 -86
- package/src/wirings/http/http-runner.test.ts +0 -1
- package/src/wirings/http/http-runner.ts +8 -167
- package/src/wirings/http/http.types.ts +15 -62
- package/src/wirings/http/log-http-routes.ts +0 -4
- package/src/wirings/http/pikku-fetch-http-request.test.ts +2 -10
- package/src/wirings/http/pikku-fetch-http-request.ts +0 -58
- package/src/wirings/http/pikku-fetch-http-response.test.ts +1 -1
- package/src/wirings/http/pikku-fetch-http-response.ts +0 -3
- package/src/wirings/http/routers/path-to-regex.test.ts +4 -17
- package/src/wirings/http/routers/path-to-regex.ts +2 -13
- package/src/wirings/http/web-request.test.ts +33 -2
- package/src/wirings/http/web-request.ts +30 -17
- package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -1
- package/src/wirings/mcp/mcp-runner.ts +2 -17
- package/src/wirings/mcp/mcp.types.ts +7 -42
- package/src/wirings/oauth2/oauth2.types.ts +0 -30
- package/src/wirings/persona/define-personas.ts +33 -0
- package/src/wirings/persona/index.ts +62 -0
- package/src/wirings/persona/persona-email.ts +87 -0
- package/src/wirings/persona/persona-environments.test.ts +183 -0
- package/src/wirings/persona/persona-environments.ts +138 -0
- package/src/wirings/persona/persona-mailbox.ts +156 -0
- package/src/wirings/persona/persona.test.ts +220 -0
- package/src/wirings/persona/persona.types.ts +142 -0
- package/src/wirings/persona/validate-personas.ts +133 -0
- package/src/wirings/queue/index.ts +13 -3
- package/src/wirings/queue/queue-identity.test.ts +454 -0
- package/src/wirings/queue/queue-identity.ts +176 -0
- package/src/wirings/queue/queue-runner.ts +12 -31
- package/src/wirings/queue/queue.types.ts +25 -90
- package/src/wirings/queue/register-queue-helper.ts +0 -14
- package/src/wirings/queue/signed-queue-service.ts +60 -0
- package/src/wirings/queue/validate-worker-config.ts +2 -28
- package/src/wirings/role/define-system-role.ts +33 -0
- package/src/wirings/role/index.ts +13 -0
- package/src/wirings/role/role.test.ts +104 -0
- package/src/wirings/role/role.types.ts +47 -0
- package/src/wirings/role/validate-role-definitions.ts +93 -0
- package/src/wirings/rpc/addon-auth-tags.test.ts +223 -0
- package/src/wirings/rpc/addon-runner.ts +0 -56
- package/src/wirings/rpc/addon-scopes.test.ts +225 -0
- package/src/wirings/rpc/remote-addon-auth.ts +9 -16
- package/src/wirings/rpc/rpc-runner.test.ts +192 -6
- package/src/wirings/rpc/rpc-runner.ts +145 -127
- package/src/wirings/rpc/rpc-types.ts +11 -6
- package/src/wirings/rpc/wire-addon.test.ts +43 -1
- package/src/wirings/rpc/wire-addon.ts +99 -0
- package/src/wirings/rpc/wire-remote-addon.ts +9 -29
- package/src/wirings/scheduler/log-schedulers.ts +0 -4
- package/src/wirings/scheduler/scheduler-runner.test.ts +1 -8
- package/src/wirings/scheduler/scheduler-runner.ts +0 -2
- package/src/wirings/scheduler/scheduler.types.ts +1 -14
- package/src/wirings/scope/{wire-scope.ts → define-scope.ts} +5 -6
- package/src/wirings/scope/index.ts +1 -1
- package/src/wirings/scope/scope.test.ts +1 -2
- package/src/wirings/scope/scope.types.ts +7 -9
- package/src/wirings/scope/validate-scope-definitions.ts +3 -21
- package/src/wirings/secret/index.ts +1 -1
- package/src/wirings/secret/secret.types.ts +19 -15
- package/src/wirings/secret/validate-secret-definitions.ts +2 -4
- package/src/wirings/trigger/trigger-runner.ts +1 -27
- package/src/wirings/trigger/trigger.types.ts +1 -82
- package/src/wirings/variable/index.ts +1 -1
- package/src/wirings/variable/validate-variable-definitions.ts +2 -4
- package/src/wirings/variable/variable.types.ts +1 -13
- package/src/wirings/virtual-user/index.ts +88 -0
- package/src/wirings/virtual-user/prepare-virtual-user-run.test.ts +115 -0
- package/src/wirings/virtual-user/prepare-virtual-user-run.ts +95 -0
- package/src/wirings/virtual-user/run-virtual-user.test.ts +765 -0
- package/src/wirings/virtual-user/run-virtual-user.ts +671 -0
- package/src/wirings/virtual-user/virtual-user-agents.test.ts +65 -0
- package/src/wirings/virtual-user/virtual-user-agents.ts +57 -0
- package/src/wirings/virtual-user/virtual-user-catalogue.test.ts +215 -0
- package/src/wirings/virtual-user/virtual-user-catalogue.ts +184 -0
- package/src/wirings/virtual-user/virtual-user-derive.test.ts +398 -0
- package/src/wirings/virtual-user/virtual-user-derive.ts +173 -0
- package/src/wirings/virtual-user/virtual-user-dispositions.test.ts +63 -0
- package/src/wirings/virtual-user/virtual-user-dispositions.ts +213 -0
- package/src/wirings/virtual-user/virtual-user-intents.test.ts +208 -0
- package/src/wirings/virtual-user/virtual-user-intents.ts +185 -0
- package/src/wirings/virtual-user/virtual-user-rng.test.ts +72 -0
- package/src/wirings/virtual-user/virtual-user-rng.ts +50 -0
- package/src/wirings/virtual-user/virtual-user-run-store.ts +98 -0
- package/src/wirings/virtual-user/virtual-user-target.ts +47 -0
- package/src/wirings/virtual-user/virtual-user.types.ts +219 -0
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +19 -20
- package/src/wirings/workflow/dsl/workflow-runner.ts +0 -4
- package/src/wirings/workflow/feature.ts +0 -19
- package/src/wirings/workflow/graph/graph-node.ts +0 -136
- package/src/wirings/workflow/graph/graph-runner.test.ts +20 -19
- package/src/wirings/workflow/graph/graph-runner.ts +6 -41
- package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -4
- package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -58
- package/src/wirings/workflow/index.ts +10 -44
- package/src/wirings/workflow/pikku-scenario-service.ts +235 -61
- package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -39
- package/src/wirings/workflow/pikku-workflow-service.ts +77 -674
- package/src/wirings/workflow/run-timeline.test.ts +7 -19
- package/src/wirings/workflow/run-timeline.ts +0 -56
- package/src/wirings/workflow/scenario-cookie-jar.test.ts +0 -1
- package/src/wirings/workflow/scenario-cookie-jar.ts +0 -25
- package/src/wirings/workflow/scenario-expectations.test.ts +2 -7
- package/src/wirings/workflow/scenario-hooks.test.ts +2 -7
- package/src/wirings/workflow/scenario-poll.test.ts +0 -2
- package/src/wirings/workflow/scenario-poll.ts +0 -15
- package/src/wirings/workflow/scenario-prose.test.ts +5 -7
- package/src/wirings/workflow/scenario-prose.ts +1 -29
- package/src/wirings/workflow/scenario-service.test.ts +2 -10
- package/src/wirings/workflow/scenario-step-guards.ts +1 -14
- package/src/wirings/workflow/scenario-step.test.ts +163 -19
- package/src/wirings/workflow/scenario-step.types.ts +94 -12
- package/src/wirings/workflow/scenario-surface.test.ts +146 -0
- package/src/wirings/workflow/scenario-surface.ts +71 -0
- package/src/wirings/workflow/workflow-dispatch-durability.test.ts +14 -15
- package/src/wirings/workflow/workflow-dispatch-payload.test.ts +0 -4
- package/src/wirings/workflow/workflow-inline-authority.test.ts +169 -0
- package/src/wirings/workflow/workflow-invocation-id.test.ts +0 -2
- package/src/wirings/workflow/workflow-invocation-id.ts +2 -22
- package/src/wirings/workflow/workflow-mirror.test.ts +0 -7
- package/src/wirings/workflow/workflow-on-error.test.ts +0 -9
- package/src/wirings/workflow/workflow-queue-workers.ts +0 -21
- package/src/wirings/workflow/workflow-replay-snapshot.test.ts +8 -7
- package/src/wirings/workflow/workflow-retry-policy.test.ts +0 -5
- package/src/wirings/workflow/workflow-run-context.test.ts +5 -10
- package/src/wirings/workflow/workflow-run-polling.test.ts +0 -5
- package/src/wirings/workflow/workflow-step-ordinal.test.ts +19 -4
- package/src/wirings/workflow/workflow-step-session.test.ts +0 -7
- package/src/wirings/workflow/workflow.types.ts +5 -201
- package/tsconfig.tsbuildinfo +1 -1
- package/tsconfig.type-tests.json +12 -0
- package/src/middleware/timeout.ts +0 -22
- package/src/pikku-response.ts +0 -5
- package/src/wirings/mcp/mcp-endpoint-registry.test.d.ts +0 -1
- package/src/wirings/workflow/dsl/index.ts +0 -36
- package/src/wirings/workflow/graph/index.ts +0 -15
package/dist/errors/errors.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The server cannot or will not process the request due to client error (e.g., malformed request syntax).
|
|
3
|
-
*/
|
|
4
1
|
import { addError, PikkuError } from './error-handler.js';
|
|
5
2
|
export class InvalidMiddlewareWireError extends PikkuError {
|
|
6
3
|
}
|
|
@@ -26,10 +23,6 @@ addError(LocalEnvironmentOnlyError, {
|
|
|
26
23
|
status: 403,
|
|
27
24
|
message: 'This operation is only available in local development mode',
|
|
28
25
|
});
|
|
29
|
-
/**
|
|
30
|
-
* The server cannot or will not process the request due to client error (e.g., malformed request syntax).
|
|
31
|
-
* @group Error
|
|
32
|
-
*/
|
|
33
26
|
export class BadRequestError extends PikkuError {
|
|
34
27
|
}
|
|
35
28
|
addError(BadRequestError, {
|
|
@@ -37,22 +30,10 @@ addError(BadRequestError, {
|
|
|
37
30
|
mcpCode: -32600,
|
|
38
31
|
message: 'The server cannot or will not process the request due to client error (e.g., malformed request syntax).',
|
|
39
32
|
});
|
|
40
|
-
/**
|
|
41
|
-
* Authentication is required and has failed or has not yet been provided.
|
|
42
|
-
* @group Error
|
|
43
|
-
*/
|
|
44
33
|
export class UnauthorizedError extends PikkuError {
|
|
45
34
|
}
|
|
46
|
-
/**
|
|
47
|
-
* More specific error to why it's unauthorized.
|
|
48
|
-
* @group Error
|
|
49
|
-
*/
|
|
50
35
|
export class MissingSessionError extends PikkuError {
|
|
51
36
|
}
|
|
52
|
-
/**
|
|
53
|
-
* More specific error to why it's unauthorized.
|
|
54
|
-
* @group Error
|
|
55
|
-
*/
|
|
56
37
|
export class InvalidSessionError extends PikkuError {
|
|
57
38
|
}
|
|
58
39
|
addError(UnauthorizedError, {
|
|
@@ -64,31 +45,18 @@ addError(InvalidSessionError, {
|
|
|
64
45
|
status: 401,
|
|
65
46
|
message: 'The session provided is not valid.',
|
|
66
47
|
});
|
|
67
|
-
/**
|
|
68
|
-
* Reserved for future use, often related to digital payment or subscription services.
|
|
69
|
-
* @group Error
|
|
70
|
-
*/
|
|
71
48
|
export class PaymentRequiredError extends PikkuError {
|
|
72
49
|
}
|
|
73
50
|
addError(PaymentRequiredError, {
|
|
74
51
|
status: 402,
|
|
75
52
|
message: 'Reserved for future use, often related to digital payment or subscription services.',
|
|
76
53
|
});
|
|
77
|
-
/**
|
|
78
|
-
* The client does not have permission to access the requested resource.
|
|
79
|
-
* @group Error
|
|
80
|
-
*/
|
|
81
54
|
export class ForbiddenError extends PikkuError {
|
|
82
55
|
}
|
|
83
56
|
addError(ForbiddenError, {
|
|
84
57
|
status: 403,
|
|
85
58
|
message: 'The client does not have permission to access the requested resource.',
|
|
86
59
|
});
|
|
87
|
-
/**
|
|
88
|
-
* A required credential is missing. The payload contains metadata
|
|
89
|
-
* about the credential so the client can initiate a connect flow.
|
|
90
|
-
* @group Error
|
|
91
|
-
*/
|
|
92
60
|
export class MissingCredentialError extends PikkuError {
|
|
93
61
|
payload;
|
|
94
62
|
constructor(credentialName, credentialType, connectUrl) {
|
|
@@ -105,11 +73,6 @@ addError(MissingCredentialError, {
|
|
|
105
73
|
status: 403,
|
|
106
74
|
message: 'A required credential is not configured.',
|
|
107
75
|
});
|
|
108
|
-
/**
|
|
109
|
-
* The session does not hold a scope required by the function. The payload
|
|
110
|
-
* names the missing scope so the client can surface what to request.
|
|
111
|
-
* @group Error
|
|
112
|
-
*/
|
|
113
76
|
export class MissingScopeError extends PikkuError {
|
|
114
77
|
payload;
|
|
115
78
|
constructor(scope) {
|
|
@@ -124,285 +87,178 @@ addError(MissingScopeError, {
|
|
|
124
87
|
status: 403,
|
|
125
88
|
message: 'The session does not hold a scope required by this function.',
|
|
126
89
|
});
|
|
127
|
-
/**
|
|
128
|
-
* The session is readonly and cannot access a non-readonly function.
|
|
129
|
-
* @group Error
|
|
130
|
-
*/
|
|
131
90
|
export class ReadonlySessionError extends PikkuError {
|
|
132
91
|
}
|
|
133
92
|
addError(ReadonlySessionError, {
|
|
134
93
|
status: 403,
|
|
135
94
|
message: 'The session is readonly and cannot access this function.',
|
|
136
95
|
});
|
|
137
|
-
/**
|
|
138
|
-
* The request was made from an origin that is not permitted to access this resource.
|
|
139
|
-
* @group Error
|
|
140
|
-
*/
|
|
141
96
|
export class InvalidOriginError extends PikkuError {
|
|
142
97
|
}
|
|
143
98
|
addError(InvalidOriginError, {
|
|
144
99
|
status: 403,
|
|
145
100
|
message: 'The request was made from an origin that is not permitted to access this resource.',
|
|
146
101
|
});
|
|
147
|
-
/**
|
|
148
|
-
* The server cannot find the requested resource.
|
|
149
|
-
* @group Error
|
|
150
|
-
*/
|
|
151
102
|
export class NotFoundError extends PikkuError {
|
|
152
103
|
}
|
|
153
|
-
/**
|
|
154
|
-
* The server cannot find the requested route.
|
|
155
|
-
* @group Error
|
|
156
|
-
*/
|
|
157
104
|
addError(NotFoundError, {
|
|
158
105
|
status: 404,
|
|
159
106
|
mcpCode: -32601,
|
|
160
107
|
message: 'The server cannot find the requested resource.',
|
|
161
108
|
});
|
|
162
|
-
/**
|
|
163
|
-
* The request method is known by the server but is not supported by the resource.
|
|
164
|
-
* @group Error
|
|
165
|
-
*/
|
|
166
109
|
export class MethodNotAllowedError extends PikkuError {
|
|
167
110
|
}
|
|
168
111
|
addError(MethodNotAllowedError, {
|
|
169
112
|
status: 405,
|
|
170
113
|
message: 'The request method is known by the server but is not supported by the resource.',
|
|
171
114
|
});
|
|
172
|
-
/**
|
|
173
|
-
* The requested resource cannot produce a response matching the list of acceptable values in the request's headers.
|
|
174
|
-
* @group Error
|
|
175
|
-
*/
|
|
176
115
|
export class NotAcceptableError extends PikkuError {
|
|
177
116
|
}
|
|
178
117
|
addError(NotAcceptableError, {
|
|
179
118
|
status: 406,
|
|
180
119
|
message: "The requested resource cannot produce a response matching the list of acceptable values in the request's headers.",
|
|
181
120
|
});
|
|
182
|
-
/**
|
|
183
|
-
* The client must authenticate itself to get the requested response.
|
|
184
|
-
* @group Error
|
|
185
|
-
*/
|
|
186
121
|
export class ProxyAuthenticationRequiredError extends PikkuError {
|
|
187
122
|
}
|
|
188
123
|
addError(ProxyAuthenticationRequiredError, {
|
|
189
124
|
status: 407,
|
|
190
125
|
message: 'The client must authenticate itself to get the requested response.',
|
|
191
126
|
});
|
|
192
|
-
/**
|
|
193
|
-
* The server request expired
|
|
194
|
-
* @group Error
|
|
195
|
-
*/
|
|
196
127
|
export class RequestTimeoutError extends PikkuError {
|
|
197
128
|
}
|
|
198
129
|
addError(RequestTimeoutError, {
|
|
199
130
|
status: 408,
|
|
200
131
|
message: 'The request timeout has expired.',
|
|
201
132
|
});
|
|
202
|
-
/**
|
|
203
|
-
* The request could not be completed due to a conflict with the current state of the target resource.
|
|
204
|
-
* @group Error
|
|
205
|
-
*/
|
|
206
133
|
export class ConflictError extends PikkuError {
|
|
207
134
|
}
|
|
208
135
|
addError(ConflictError, {
|
|
209
136
|
status: 409,
|
|
210
137
|
message: 'The request could not be completed due to a conflict with the current state of the target resource.',
|
|
211
138
|
});
|
|
212
|
-
/**
|
|
213
|
-
* The resource that is being accessed is no longer available and will not be available again.
|
|
214
|
-
* @group Error
|
|
215
|
-
*/
|
|
216
139
|
export class GoneError extends PikkuError {
|
|
217
140
|
}
|
|
218
141
|
addError(GoneError, {
|
|
219
142
|
status: 410,
|
|
220
143
|
message: 'The resource that is being accessed is no longer available and will not be available again.',
|
|
221
144
|
});
|
|
222
|
-
/**
|
|
223
|
-
* The request did not specify the length of its content, which is required by the requested resource.
|
|
224
|
-
* @group Error
|
|
225
|
-
*/
|
|
226
145
|
export class LengthRequiredError extends PikkuError {
|
|
227
146
|
}
|
|
228
147
|
addError(LengthRequiredError, {
|
|
229
148
|
status: 411,
|
|
230
149
|
message: 'The request did not specify the length of its content, which is required by the requested resource.',
|
|
231
150
|
});
|
|
232
|
-
/**
|
|
233
|
-
* The server does not meet one of the preconditions that the requester put on the request.
|
|
234
|
-
* @group Error
|
|
235
|
-
*/
|
|
236
151
|
export class PreconditionFailedError extends PikkuError {
|
|
237
152
|
}
|
|
238
153
|
addError(PreconditionFailedError, {
|
|
239
154
|
status: 412,
|
|
240
155
|
message: 'The server does not meet one of the preconditions that the requester put on the request.',
|
|
241
156
|
});
|
|
242
|
-
/**
|
|
243
|
-
* The request is larger than the server is willing or able to process.
|
|
244
|
-
* @group Error
|
|
245
|
-
*/
|
|
246
157
|
export class PayloadTooLargeError extends PikkuError {
|
|
247
158
|
}
|
|
248
159
|
addError(PayloadTooLargeError, {
|
|
249
160
|
status: 413,
|
|
250
161
|
message: 'The request is larger than the server is willing or able to process.',
|
|
251
162
|
});
|
|
252
|
-
/**
|
|
253
|
-
* The URI requested by the client is longer than the server is willing to interpret.
|
|
254
|
-
* @group Error
|
|
255
|
-
*/
|
|
256
163
|
export class URITooLongError extends PikkuError {
|
|
257
164
|
}
|
|
258
165
|
addError(URITooLongError, {
|
|
259
166
|
status: 414,
|
|
260
167
|
message: 'The URI requested by the client is longer than the server is willing to interpret.',
|
|
261
168
|
});
|
|
262
|
-
/**
|
|
263
|
-
* The server does not support the media format of the requested data.
|
|
264
|
-
* @group Error
|
|
265
|
-
*/
|
|
266
169
|
export class UnsupportedMediaTypeError extends PikkuError {
|
|
267
170
|
}
|
|
268
171
|
addError(UnsupportedMediaTypeError, {
|
|
269
172
|
status: 415,
|
|
270
173
|
message: 'The server does not support the media format of the requested data.',
|
|
271
174
|
});
|
|
272
|
-
/**
|
|
273
|
-
* The client has asked for a portion of the file, but the server cannot supply that portion.
|
|
274
|
-
* @group Error
|
|
275
|
-
*/
|
|
276
175
|
export class RangeNotSatisfiableError extends PikkuError {
|
|
277
176
|
}
|
|
278
177
|
addError(RangeNotSatisfiableError, {
|
|
279
178
|
status: 416,
|
|
280
179
|
message: 'The client has asked for a portion of the file, but the server cannot supply that portion.',
|
|
281
180
|
});
|
|
282
|
-
/**
|
|
283
|
-
* The server cannot meet the requirements of the Expect request-header field.
|
|
284
|
-
* @group Error
|
|
285
|
-
*/
|
|
286
181
|
export class ExpectationFailedError extends PikkuError {
|
|
287
182
|
}
|
|
288
183
|
addError(ExpectationFailedError, {
|
|
289
184
|
status: 417,
|
|
290
185
|
message: 'The server cannot meet the requirements of the Expect request-header field.',
|
|
291
186
|
});
|
|
292
|
-
/**
|
|
293
|
-
* Indicates that 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.
|
|
294
|
-
* @group Error
|
|
295
|
-
*/
|
|
296
187
|
export class UnprocessableContentError extends PikkuError {
|
|
297
188
|
}
|
|
298
189
|
addError(UnprocessableContentError, {
|
|
299
190
|
status: 422,
|
|
300
191
|
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..',
|
|
301
192
|
});
|
|
302
|
-
/**
|
|
303
|
-
* Indicates that 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.
|
|
304
|
-
* @group Error
|
|
305
|
-
*/
|
|
306
193
|
export class LockedError extends PikkuError {
|
|
307
194
|
}
|
|
308
195
|
addError(LockedError, {
|
|
309
196
|
status: 423,
|
|
310
197
|
message: "The resource is locked, meaning it can't be accessed. Its response body should contain information in WebDAV's XML format.",
|
|
311
198
|
});
|
|
312
|
-
/**
|
|
313
|
-
* The user has sent too many requests in a given amount of time ("rate limiting").
|
|
314
|
-
* @group Error
|
|
315
|
-
*/
|
|
316
199
|
export class TooManyRequestsError extends PikkuError {
|
|
317
200
|
}
|
|
318
201
|
addError(TooManyRequestsError, {
|
|
319
202
|
status: 429,
|
|
320
203
|
message: 'The user has sent too many requests in a given amount of time ("rate limiting").',
|
|
321
204
|
});
|
|
322
|
-
/**
|
|
323
|
-
* A generic error message, given when no more specific message is suitable.
|
|
324
|
-
* @group Error
|
|
325
|
-
*/
|
|
326
205
|
export class InternalServerError extends PikkuError {
|
|
327
206
|
}
|
|
328
207
|
addError(InternalServerError, {
|
|
329
208
|
status: 500,
|
|
330
209
|
message: 'A generic error message, given when no more specific message is suitable.',
|
|
331
210
|
});
|
|
332
|
-
/**
|
|
333
|
-
* The server does not recognize the request method and cannot support it.
|
|
334
|
-
* @group Error
|
|
335
|
-
*/
|
|
336
211
|
export class NotImplementedError extends PikkuError {
|
|
337
212
|
}
|
|
338
213
|
addError(NotImplementedError, {
|
|
339
214
|
status: 501,
|
|
340
215
|
message: 'The server does not recognize the request method and cannot support it.',
|
|
341
216
|
});
|
|
342
|
-
/**
|
|
343
|
-
* The server was acting as a gateway or proxy and received an invalid response from the upstream server.
|
|
344
|
-
* @group Error
|
|
345
|
-
*/
|
|
346
217
|
export class BadGatewayError extends PikkuError {
|
|
347
218
|
}
|
|
348
219
|
addError(BadGatewayError, {
|
|
349
220
|
status: 502,
|
|
350
221
|
message: 'The server was acting as a gateway or proxy and received an invalid response from the upstream server.',
|
|
351
222
|
});
|
|
352
|
-
/**
|
|
353
|
-
* The server is currently unavailable (overloaded or down).
|
|
354
|
-
* @group Error
|
|
355
|
-
*/
|
|
356
223
|
export class ServiceUnavailableError extends PikkuError {
|
|
357
224
|
}
|
|
358
225
|
addError(ServiceUnavailableError, {
|
|
359
226
|
status: 503,
|
|
360
227
|
message: 'The server is currently unavailable (overloaded or down).',
|
|
361
228
|
});
|
|
362
|
-
/**
|
|
363
|
-
* The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.
|
|
364
|
-
* @group Error
|
|
365
|
-
*/
|
|
366
229
|
export class GatewayTimeoutError extends PikkuError {
|
|
367
230
|
}
|
|
368
231
|
addError(GatewayTimeoutError, {
|
|
369
232
|
status: 504,
|
|
370
233
|
message: 'The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.',
|
|
371
234
|
});
|
|
372
|
-
/**
|
|
373
|
-
* The server does not support the HTTP protocol version used in the request.
|
|
374
|
-
* @group Error
|
|
375
|
-
*/
|
|
376
235
|
export class HTTPVersionNotSupportedError extends PikkuError {
|
|
377
236
|
}
|
|
378
237
|
addError(HTTPVersionNotSupportedError, {
|
|
379
238
|
status: 505,
|
|
380
239
|
message: 'The server does not support the HTTP protocol version used in the request.',
|
|
381
240
|
});
|
|
382
|
-
/**
|
|
383
|
-
* The server took too long to complete the request, reaching the maximum compute time allowed.
|
|
384
|
-
* @group Error
|
|
385
|
-
*/
|
|
386
241
|
export class MaxComputeTimeReachedError extends PikkuError {
|
|
387
242
|
}
|
|
388
243
|
addError(MaxComputeTimeReachedError, {
|
|
389
244
|
status: 524,
|
|
390
245
|
message: 'The server took too long to complete the request, reaching the maximum compute time allowed.',
|
|
391
246
|
});
|
|
392
|
-
/**
|
|
393
|
-
* A required schema was not found during validation.
|
|
394
|
-
* @group Error
|
|
395
|
-
*/
|
|
396
247
|
export class MissingSchemaError extends PikkuError {
|
|
397
248
|
}
|
|
398
249
|
addError(MissingSchemaError, {
|
|
399
250
|
status: 500,
|
|
400
251
|
message: 'A required schema was not found. Ensure schema generation has been run.',
|
|
401
252
|
});
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
253
|
+
export class WeakKeyMaterialError extends PikkuError {
|
|
254
|
+
constructor(name, minimumLength, actualLength) {
|
|
255
|
+
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.`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
addError(WeakKeyMaterialError, {
|
|
259
|
+
status: 500,
|
|
260
|
+
message: 'A configured secret does not carry enough entropy to be used.',
|
|
261
|
+
});
|
|
406
262
|
export class AIProviderNotConfiguredError extends PikkuError {
|
|
407
263
|
constructor() {
|
|
408
264
|
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.');
|
|
@@ -412,10 +268,6 @@ addError(AIProviderNotConfiguredError, {
|
|
|
412
268
|
status: 503,
|
|
413
269
|
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.',
|
|
414
270
|
});
|
|
415
|
-
/**
|
|
416
|
-
* The AI provider API key is missing or invalid.
|
|
417
|
-
* @group Error
|
|
418
|
-
*/
|
|
419
271
|
export class AIProviderAuthError extends PikkuError {
|
|
420
272
|
constructor(message) {
|
|
421
273
|
super(message ||
|
|
@@ -426,3 +278,49 @@ addError(AIProviderAuthError, {
|
|
|
426
278
|
status: 401,
|
|
427
279
|
message: 'AI provider API key is missing or invalid. Please check your API key configuration.',
|
|
428
280
|
});
|
|
281
|
+
/**
|
|
282
|
+
* An administrative operation targeted a role that is declared in code.
|
|
283
|
+
*
|
|
284
|
+
* System roles ship with the product: the console may show and grant them, but
|
|
285
|
+
* renaming, re-scoping or deleting one would let a UI action silently change
|
|
286
|
+
* what a declared persona means, and what every scenario written against that
|
|
287
|
+
* role is actually testing.
|
|
288
|
+
* @group Error
|
|
289
|
+
*/
|
|
290
|
+
export class SystemRoleImmutableError extends PikkuError {
|
|
291
|
+
payload;
|
|
292
|
+
constructor(role, operation) {
|
|
293
|
+
super(`Cannot ${operation} '${role}': it is a system role, declared in code with defineSystemRole. ` +
|
|
294
|
+
`Edit the declaration, or create a separate role in the console.`);
|
|
295
|
+
this.payload = {
|
|
296
|
+
error: 'system_role_immutable',
|
|
297
|
+
role,
|
|
298
|
+
operation,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
addError(SystemRoleImmutableError, {
|
|
303
|
+
status: 409,
|
|
304
|
+
message: 'This role is declared in code and cannot be changed here.',
|
|
305
|
+
});
|
|
306
|
+
/**
|
|
307
|
+
* A role was created with the name of a role declared in code.
|
|
308
|
+
*
|
|
309
|
+
* Shadowing is refused rather than merged: two rows answering to one name make
|
|
310
|
+
* "does Susan hold `buyer`?" depend on which one the store happened to return.
|
|
311
|
+
* @group Error
|
|
312
|
+
*/
|
|
313
|
+
export class SystemRoleShadowedError extends PikkuError {
|
|
314
|
+
payload;
|
|
315
|
+
constructor(role) {
|
|
316
|
+
super(`Cannot create role '${role}': a system role of that name is declared in code.`);
|
|
317
|
+
this.payload = {
|
|
318
|
+
error: 'system_role_shadowed',
|
|
319
|
+
role,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
addError(SystemRoleShadowedError, {
|
|
324
|
+
status: 409,
|
|
325
|
+
message: 'A system role of that name is already declared in code.',
|
|
326
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Raised by {@link beginChanges} when the caller has gone away before anything
|
|
3
|
+
* was changed. Distinct from a failure: nothing happened, so there is nothing
|
|
4
|
+
* to report, retry or apologise for.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AbandonedError extends Error {
|
|
7
|
+
constructor(reason?: string);
|
|
8
|
+
}
|
|
9
|
+
export interface AbortScope {
|
|
10
|
+
/** Whether whatever asked for this work has gone away. */
|
|
11
|
+
readonly abandoned: boolean;
|
|
12
|
+
/** Why, when known — an interrupt reason, a disconnect, a cancellation. */
|
|
13
|
+
readonly reason?: string;
|
|
14
|
+
/** Called by `beginChanges()` once a function commits to mutating. */
|
|
15
|
+
onBeginChanges?: () => void;
|
|
16
|
+
}
|
|
17
|
+
/** Run `fn` with an abort scope that `beginChanges()` will observe. */
|
|
18
|
+
export declare const runInAbortScope: <T>(scope: AbortScope, fn: () => T) => T;
|
|
19
|
+
/** The current scope, if the caller is running inside one. */
|
|
20
|
+
export declare const getAbortScope: () => AbortScope | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Declare that everything after this line changes something.
|
|
23
|
+
*
|
|
24
|
+
* ```ts
|
|
25
|
+
* const plan = await computePlan(input) // interruptible, costs nothing to redo
|
|
26
|
+
* await beginChanges()
|
|
27
|
+
* await db.deleteProject(input.projectId) // past the point of no return
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* Two things happen here. If the caller has already gone away it throws, so the
|
|
31
|
+
* mutation never runs and the interrupt is clean — nothing happened, and the
|
|
32
|
+
* user is told nothing because there is nothing to tell. If the caller is still
|
|
33
|
+
* there it marks this call as mutating, so an interrupt landing *after* this
|
|
34
|
+
* point produces an `undelivered` note on the thread rather than silently
|
|
35
|
+
* discarding work that did happen.
|
|
36
|
+
*
|
|
37
|
+
* It throws rather than returning a boolean on purpose: `if (await ...)` invites
|
|
38
|
+
* ignoring the answer, and the failure mode of ignoring it is a mutation nobody
|
|
39
|
+
* asked for.
|
|
40
|
+
*
|
|
41
|
+
* Entirely cooperative, and safe to call anywhere — outside a scope it is a
|
|
42
|
+
* no-op, so a function does not need to know how it was invoked. A function
|
|
43
|
+
* that never calls it keeps the conservative default: if it is not marked
|
|
44
|
+
* `readonly`, an interrupt assumes it changed something and says so. The tool
|
|
45
|
+
* that forgot to call this is exactly the one that cannot be assumed harmless.
|
|
46
|
+
*/
|
|
47
|
+
export declare const beginChanges: () => Promise<void>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
+
/**
|
|
3
|
+
* Raised by {@link beginChanges} when the caller has gone away before anything
|
|
4
|
+
* was changed. Distinct from a failure: nothing happened, so there is nothing
|
|
5
|
+
* to report, retry or apologise for.
|
|
6
|
+
*/
|
|
7
|
+
export class AbandonedError extends Error {
|
|
8
|
+
constructor(reason) {
|
|
9
|
+
super(reason
|
|
10
|
+
? `Aborted before making changes: ${reason}`
|
|
11
|
+
: 'Aborted before making changes');
|
|
12
|
+
this.name = 'AbandonedError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The ambient "is my caller still there?" signal.
|
|
17
|
+
*
|
|
18
|
+
* Ambient rather than a parameter because the question is the same one for
|
|
19
|
+
* every wiring — an agent run that was interrupted, an HTTP request whose
|
|
20
|
+
* client disconnected, a cancelled workflow — and threading it through every
|
|
21
|
+
* signature would mean changing every function that merely sits between the
|
|
22
|
+
* wiring and the mutation.
|
|
23
|
+
*/
|
|
24
|
+
const scopeStorage = new AsyncLocalStorage();
|
|
25
|
+
/** Run `fn` with an abort scope that `beginChanges()` will observe. */
|
|
26
|
+
export const runInAbortScope = (scope, fn) => scopeStorage.run(scope, fn);
|
|
27
|
+
/** The current scope, if the caller is running inside one. */
|
|
28
|
+
export const getAbortScope = () => scopeStorage.getStore();
|
|
29
|
+
/**
|
|
30
|
+
* Declare that everything after this line changes something.
|
|
31
|
+
*
|
|
32
|
+
* ```ts
|
|
33
|
+
* const plan = await computePlan(input) // interruptible, costs nothing to redo
|
|
34
|
+
* await beginChanges()
|
|
35
|
+
* await db.deleteProject(input.projectId) // past the point of no return
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* Two things happen here. If the caller has already gone away it throws, so the
|
|
39
|
+
* mutation never runs and the interrupt is clean — nothing happened, and the
|
|
40
|
+
* user is told nothing because there is nothing to tell. If the caller is still
|
|
41
|
+
* there it marks this call as mutating, so an interrupt landing *after* this
|
|
42
|
+
* point produces an `undelivered` note on the thread rather than silently
|
|
43
|
+
* discarding work that did happen.
|
|
44
|
+
*
|
|
45
|
+
* It throws rather than returning a boolean on purpose: `if (await ...)` invites
|
|
46
|
+
* ignoring the answer, and the failure mode of ignoring it is a mutation nobody
|
|
47
|
+
* asked for.
|
|
48
|
+
*
|
|
49
|
+
* Entirely cooperative, and safe to call anywhere — outside a scope it is a
|
|
50
|
+
* no-op, so a function does not need to know how it was invoked. A function
|
|
51
|
+
* that never calls it keeps the conservative default: if it is not marked
|
|
52
|
+
* `readonly`, an interrupt assumes it changed something and says so. The tool
|
|
53
|
+
* that forgot to call this is exactly the one that cannot be assumed harmless.
|
|
54
|
+
*/
|
|
55
|
+
export const beginChanges = async () => {
|
|
56
|
+
const scope = scopeStorage.getStore();
|
|
57
|
+
if (!scope)
|
|
58
|
+
return;
|
|
59
|
+
if (scope.abandoned) {
|
|
60
|
+
throw new AbandonedError(scope.reason);
|
|
61
|
+
}
|
|
62
|
+
scope.onBeginChanges?.();
|
|
63
|
+
};
|