@pikku/core 0.12.71 → 0.12.74
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 +848 -0
- package/dist/crypto-utils.d.ts +30 -5
- package/dist/crypto-utils.js +146 -41
- 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 +40 -30
- package/dist/function/functions.types.d.ts +44 -136
- package/dist/function/functions.types.js +0 -58
- package/dist/function/list.types.d.ts +12 -62
- package/dist/function/list.types.js +4 -25
- package/dist/handle-error.d.ts +0 -11
- package/dist/handle-error.js +6 -18
- package/dist/index.d.ts +5 -2
- package/dist/index.js +4 -1
- 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 +3 -40
- 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 +3 -2
- 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 +8 -7
- package/dist/schema.d.ts +7 -17
- package/dist/schema.js +30 -18
- package/dist/scopes.d.ts +4 -23
- package/dist/scopes.js +7 -48
- 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.js +1 -2
- package/dist/services/content-service.d.ts +1 -46
- package/dist/services/credential-service.d.ts +3 -40
- package/dist/services/deployment-service.d.ts +3 -9
- 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 +5 -6
- package/dist/services/index.js +2 -5
- 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.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 +0 -4
- package/dist/services/local-secrets.js +0 -4
- package/dist/services/logger-console.d.ts +3 -7
- package/dist/services/logger-console.js +3 -7
- package/dist/services/logger.d.ts +2 -37
- 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 +9 -41
- 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 +0 -4
- 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 +5 -33
- 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 +0 -7
- 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 +19 -63
- package/dist/services/webhook-service.js +6 -20
- package/dist/services/workflow-service.d.ts +3 -15
- package/dist/testing/service-tests.js +0 -17
- package/dist/time-utils.d.ts +0 -16
- package/dist/time-utils.js +1 -19
- package/dist/types/core.types.d.ts +99 -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 +34 -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 +58 -131
- 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 +49 -20
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +25 -2
- package/dist/wirings/ai-agent/ai-agent-stream.js +153 -63
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +84 -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 +39 -1
- package/dist/wirings/ai-agent/voice-input.js +46 -3
- package/dist/wirings/ai-agent/voice-output.d.ts +54 -1
- package/dist/wirings/ai-agent/voice-output.js +153 -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 +20 -0
- package/dist/wirings/cli/channel/cli-raw-client-runner.js +121 -0
- package/dist/wirings/cli/channel/index.d.ts +4 -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 +1 -100
- package/dist/wirings/http/http-runner.js +12 -166
- package/dist/wirings/http/http.types.d.ts +16 -55
- package/dist/wirings/http/index.d.ts +2 -1
- package/dist/wirings/http/index.js +1 -1
- 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 +6 -36
- package/dist/wirings/http/pikku-fetch-http-request.js +56 -50
- 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 +2 -0
- package/dist/wirings/mcp/mcp-runner.js +6 -16
- 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 +28 -0
- package/dist/wirings/persona/define-personas.js +27 -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 +125 -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 +102 -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 +18 -89
- 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 +16 -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 +1 -12
- package/dist/wirings/rpc/remote-addon-auth.js +1 -9
- 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 +27 -0
- package/dist/wirings/virtual-user/index.js +8 -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-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 +5 -5
- 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 -42
- 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 +0 -18
- 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 +72 -6
- 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 +0 -197
- 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/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-data-classification-brand-is-an-optional-property.md +34 -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 +113 -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/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/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/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 +4 -2
- package/run-tests.sh +0 -0
- package/src/crypto-utils.test.ts +460 -19
- package/src/crypto-utils.ts +283 -55
- package/src/data-classification.ts +1 -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 +75 -7
- package/src/function/function-runner.ts +73 -30
- package/src/function/functions.types.ts +56 -136
- package/src/function/list.types.test.ts +3 -25
- package/src/function/list.types.ts +12 -62
- package/src/gopass-secrets-removed.test.ts +51 -0
- package/src/handle-error.test.ts +108 -1
- package/src/handle-error.ts +8 -18
- package/src/index.ts +60 -1
- package/src/middleware/auth-apikey.test.ts +0 -1
- package/src/middleware/auth-apikey.ts +0 -17
- package/src/middleware/auth-bearer.test.ts +0 -3
- package/src/middleware/auth-bearer.ts +3 -40
- 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 +24 -9
- package/src/middleware/remote-auth.ts +10 -2
- 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 +172 -0
- package/src/remote.ts +17 -7
- package/src/schema.test.ts +103 -0
- package/src/schema.ts +35 -18
- package/src/scopes.ts +7 -48
- 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 +1 -2
- 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/deployment-service.ts +3 -9
- 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 +20 -15
- package/src/services/istanbul-coverage-service.ts +2 -8
- package/src/services/jwt-service.ts +1 -16
- 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.ts +0 -4
- package/src/services/logger-console.test.ts +0 -1
- package/src/services/logger-console.ts +3 -7
- package/src/services/logger.ts +2 -37
- 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.ts +9 -41
- 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 +0 -4
- 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 +5 -33
- 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 +1 -7
- package/src/services/v8-coverage-service.ts +3 -6
- package/src/services/variables-service.ts +1 -8
- package/src/services/webhook-service.ts +19 -63
- package/src/services/workflow-service.ts +3 -20
- package/src/testing/service-tests.ts +0 -26
- package/src/time-utils.ts +1 -19
- package/src/types/core.types.ts +116 -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 +75 -10
- package/src/wirings/ai-agent/ai-agent-agui.ts +36 -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 +82 -138
- 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 +67 -33
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +205 -103
- package/src/wirings/ai-agent/ai-agent-stream.ts +192 -75
- package/src/wirings/ai-agent/ai-agent-thread-ownership.test.ts +301 -0
- package/src/wirings/ai-agent/ai-agent.types.ts +85 -4
- package/src/wirings/ai-agent/index.ts +35 -3
- package/src/wirings/ai-agent/voice-input.test.ts +72 -7
- package/src/wirings/ai-agent/voice-input.ts +48 -3
- package/src/wirings/ai-agent/voice-output.test.ts +422 -0
- package/src/wirings/ai-agent/voice-output.ts +216 -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 +155 -0
- package/src/wirings/cli/channel/index.ts +9 -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 +12 -168
- package/src/wirings/http/http.types.ts +17 -62
- package/src/wirings/http/index.ts +5 -1
- package/src/wirings/http/log-http-routes.ts +0 -4
- package/src/wirings/http/pikku-fetch-http-request.test.ts +88 -7
- package/src/wirings/http/pikku-fetch-http-request.ts +74 -50
- 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.test.ts +40 -0
- package/src/wirings/mcp/mcp-runner.ts +9 -15
- 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 +29 -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 +131 -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 +453 -0
- package/src/wirings/queue/queue-identity.ts +173 -0
- package/src/wirings/queue/queue-runner.ts +12 -31
- package/src/wirings/queue/queue.types.ts +19 -89
- package/src/wirings/queue/register-queue-helper.ts +0 -14
- package/src/wirings/queue/signed-queue-service.ts +59 -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 +1 -13
- package/src/wirings/rpc/rpc-runner.test.ts +186 -2
- 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 +76 -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-target.ts +47 -0
- package/src/wirings/virtual-user/virtual-user.types.ts +219 -0
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +5 -4
- 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 -52
- 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.ts +0 -28
- package/src/wirings/workflow/scenario-service.test.ts +2 -9
- package/src/wirings/workflow/scenario-step-guards.ts +1 -14
- package/src/wirings/workflow/scenario-step.test.ts +159 -14
- package/src/wirings/workflow/scenario-step.types.ts +82 -6
- package/src/wirings/workflow/scenario-surface.test.ts +145 -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 +0 -203
- package/tsconfig.tsbuildinfo +1 -1
- package/src/middleware/timeout.ts +0 -22
- package/src/pikku-response.ts +0 -5
- package/src/services/gopass-secrets.ts +0 -78
- 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
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { defineScope } from './define-scope.js';
|
|
2
2
|
export { flattenScopeDefinitions, validateAndBuildScopeDefinitionsMeta, } from './validate-scope-definitions.js';
|
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* `admin:invoices
|
|
2
|
+
* Every node is itself a grantable scope: `admin` containing `invoices`
|
|
3
|
+
* containing `create` yields all three of `admin`, `admin:invoices` and
|
|
4
|
+
* `admin:invoices:create`.
|
|
5
5
|
*/
|
|
6
6
|
export type CoreScopeNode = {
|
|
7
|
-
/** Short human-readable name, e.g. "Administration". */
|
|
8
7
|
displayName?: string;
|
|
9
|
-
/**
|
|
8
|
+
/** Surfaced in the console when granting. */
|
|
10
9
|
description?: string;
|
|
11
10
|
/** Nested scopes, keyed by their segment. */
|
|
12
11
|
scopes?: Record<string, CoreScopeNode>;
|
|
13
12
|
};
|
|
14
13
|
/**
|
|
15
|
-
* Scope trees
|
|
16
|
-
*
|
|
17
|
-
*
|
|
14
|
+
* Scope trees keyed by their root segment — a root is named by its key exactly
|
|
15
|
+
* like every node beneath it. A key must not contain `:` or be `*`; nothing
|
|
16
|
+
* enforces that at runtime, only the build.
|
|
18
17
|
*/
|
|
19
18
|
export type CoreScopes = Record<string, CoreScopeNode>;
|
|
20
19
|
export type ScopeNodeMeta = {
|
|
@@ -31,7 +30,6 @@ export type ScopeDefinitionMeta = {
|
|
|
31
30
|
};
|
|
32
31
|
export type ScopeDefinitions = ScopeDefinitionMeta[];
|
|
33
32
|
export type ScopeDefinitionsMeta = Record<string, ScopeDefinitionMeta>;
|
|
34
|
-
/** A single scope, flattened out of the declared tree. */
|
|
35
33
|
export type FlatScope = {
|
|
36
34
|
/** Colon-delimited id, e.g. `admin:invoices:create`. */
|
|
37
35
|
id: string;
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import type { FlatScope, ScopeDefinitions, ScopeDefinitionsMeta } from './scope.types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Flattens declared scope trees into the full list of grantable scope ids,
|
|
4
|
-
* depth-first. Every node is emitted, including intermediate ones.
|
|
5
|
-
*
|
|
6
|
-
* Ids are unique. A root may legitimately be declared more than once — an addon
|
|
7
|
-
* and its host app both contributing the same `admin` tree, say — and
|
|
8
|
-
* {@link validateAndBuildScopeDefinitionsMeta} already guarantees those
|
|
9
|
-
* declarations are identical, so the second one is redundant rather than
|
|
10
|
-
* conflicting. Collapsing it here keeps every consumer honest: codegen emits an
|
|
11
|
-
* object literal keyed by id (duplicates are a TypeScript error), and a
|
|
12
|
-
* ScopeService syncs one row per scope instead of re-writing the same one.
|
|
13
|
-
*
|
|
14
|
-
* Used by codegen to build the `ScopeId` union, and by a ScopeService to sync
|
|
15
|
-
* the declared set into its store.
|
|
16
|
-
*/
|
|
2
|
+
/** Every node is emitted, intermediate ones included, depth-first. Ids are unique. */
|
|
17
3
|
export declare const flattenScopeDefinitions: (definitions: ScopeDefinitions) => FlatScope[];
|
|
18
|
-
/**
|
|
19
|
-
* Validates declared scopes and keys them by name.
|
|
20
|
-
*
|
|
21
|
-
* Definitions sharing a name must be identical; a conflicting redeclaration is
|
|
22
|
-
* a hard error naming both source files.
|
|
23
|
-
*/
|
|
4
|
+
/** Definitions sharing a name must be identical; a conflicting one is a hard error. */
|
|
24
5
|
export declare function validateAndBuildScopeDefinitionsMeta(definitions: ScopeDefinitions): ScopeDefinitionsMeta;
|
|
@@ -26,21 +26,8 @@ const flattenNodes = (nodes, prefix, out) => {
|
|
|
26
26
|
flattenNodes(node.scopes, id, out);
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
-
/**
|
|
30
|
-
|
|
31
|
-
* depth-first. Every node is emitted, including intermediate ones.
|
|
32
|
-
*
|
|
33
|
-
* Ids are unique. A root may legitimately be declared more than once — an addon
|
|
34
|
-
* and its host app both contributing the same `admin` tree, say — and
|
|
35
|
-
* {@link validateAndBuildScopeDefinitionsMeta} already guarantees those
|
|
36
|
-
* declarations are identical, so the second one is redundant rather than
|
|
37
|
-
* conflicting. Collapsing it here keeps every consumer honest: codegen emits an
|
|
38
|
-
* object literal keyed by id (duplicates are a TypeScript error), and a
|
|
39
|
-
* ScopeService syncs one row per scope instead of re-writing the same one.
|
|
40
|
-
*
|
|
41
|
-
* Used by codegen to build the `ScopeId` union, and by a ScopeService to sync
|
|
42
|
-
* the declared set into its store.
|
|
43
|
-
*/
|
|
29
|
+
/** Every node is emitted, intermediate ones included, depth-first. Ids are unique. */
|
|
30
|
+
// knowledge: decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md
|
|
44
31
|
export const flattenScopeDefinitions = (definitions) => {
|
|
45
32
|
const out = [];
|
|
46
33
|
for (const def of definitions) {
|
|
@@ -56,12 +43,7 @@ export const flattenScopeDefinitions = (definitions) => {
|
|
|
56
43
|
return true;
|
|
57
44
|
});
|
|
58
45
|
};
|
|
59
|
-
/**
|
|
60
|
-
* Validates declared scopes and keys them by name.
|
|
61
|
-
*
|
|
62
|
-
* Definitions sharing a name must be identical; a conflicting redeclaration is
|
|
63
|
-
* a hard error naming both source files.
|
|
64
|
-
*/
|
|
46
|
+
/** Definitions sharing a name must be identical; a conflicting one is a hard error. */
|
|
65
47
|
export function validateAndBuildScopeDefinitionsMeta(definitions) {
|
|
66
48
|
const meta = {};
|
|
67
49
|
for (const def of definitions) {
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { defineSecret } from './secret.types.js';
|
|
2
2
|
export type { CoreSecret, OAuth2CredentialConfig, SecretDefinitionMeta, SecretDefinitionsMeta, SecretDefinitions, } from './secret.types.js';
|
|
3
3
|
export { validateAndBuildSecretDefinitionsMeta } from './validate-secret-definitions.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { defineSecret } from './secret.types.js';
|
|
2
2
|
export { validateAndBuildSecretDefinitionsMeta } from './validate-secret-definitions.js';
|
|
@@ -5,25 +5,29 @@ export type CoreSecret<T = unknown> = {
|
|
|
5
5
|
secretId: string;
|
|
6
6
|
schema: T;
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Where a user goes to obtain this value — a provider's API-key page, a setup
|
|
9
|
+
* guide, an internal runbook. Consoles and deploy UIs surface it beside a
|
|
10
|
+
* missing value. The same field on every credential/variable definition means
|
|
11
|
+
* the same thing.
|
|
12
12
|
*/
|
|
13
13
|
docsUrl?: string;
|
|
14
|
+
/** Rotation cadence as a duration string, e.g. `'1d'`, `'30day'`, `'1w'`. */
|
|
15
|
+
rotationPeriod?: string;
|
|
14
16
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
17
|
+
* Hosts this secret may be sent to, e.g. `['api.notion.com']` or
|
|
18
|
+
* `'*.notion.com'`. Omitted means unrestricted unless
|
|
19
|
+
* `config.secrets.requireAllowedHosts` is set.
|
|
18
20
|
*/
|
|
19
|
-
|
|
21
|
+
allowedHosts?: string[];
|
|
20
22
|
};
|
|
21
23
|
export type OAuth2CredentialConfig = {
|
|
24
|
+
/** Where access/refresh tokens are stored */
|
|
22
25
|
tokenSecretId: string;
|
|
23
26
|
authorizationUrl: string;
|
|
24
27
|
tokenUrl: string;
|
|
25
28
|
scopes: string[];
|
|
26
29
|
pkce?: boolean;
|
|
30
|
+
/** Appended to the authorization URL's query string. */
|
|
27
31
|
additionalParams?: Record<string, string>;
|
|
28
32
|
};
|
|
29
33
|
export type SecretDefinitionMeta = {
|
|
@@ -32,17 +36,17 @@ export type SecretDefinitionMeta = {
|
|
|
32
36
|
description?: string;
|
|
33
37
|
secretId: string;
|
|
34
38
|
schema?: Record<string, unknown> | string;
|
|
35
|
-
/**
|
|
36
|
-
* Link to documentation explaining how to obtain this value — a provider's
|
|
37
|
-
* API-key page, a setup guide, an internal runbook. Surfaced by consoles and
|
|
38
|
-
* deploy UIs so a user facing a missing value has somewhere to go instead of
|
|
39
|
-
* an opaque identifier.
|
|
40
|
-
*/
|
|
41
39
|
docsUrl?: string;
|
|
42
40
|
oauth2?: OAuth2CredentialConfig;
|
|
43
41
|
rotationPeriod?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Hosts this secret may be sent to, e.g. `['api.notion.com']` or
|
|
44
|
+
* `'*.notion.com'`. Omitted means unrestricted unless
|
|
45
|
+
* `config.secrets.requireAllowedHosts` is set.
|
|
46
|
+
*/
|
|
47
|
+
allowedHosts?: string[];
|
|
44
48
|
sourceFile?: string;
|
|
45
49
|
};
|
|
46
50
|
export type SecretDefinitionsMeta = Record<string, SecretDefinitionMeta>;
|
|
47
51
|
export type SecretDefinitions = SecretDefinitionMeta[];
|
|
48
|
-
export declare const
|
|
52
|
+
export declare const defineSecret: <T>(_config: CoreSecret<T>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const defineSecret = (_config) => { };
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { SecretDefinitions, SecretDefinitionsMeta } from './secret.types.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
sourceFile: string;
|
|
5
|
-
}
|
|
2
|
+
import type { SchemaRefLike } from '../../types/core.types.js';
|
|
3
|
+
export type { SchemaRefLike };
|
|
6
4
|
export declare function validateAndBuildSecretDefinitionsMeta(definitions: SecretDefinitions, schemaLookup: Map<string, SchemaRefLike>): SecretDefinitionsMeta;
|
|
@@ -1,38 +1,11 @@
|
|
|
1
1
|
import type { CoreTrigger, CoreTriggerSource, TriggerInstance } from './trigger.types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Registers a trigger with the Pikku framework.
|
|
4
|
-
* Declares a trigger name and its target pikku function.
|
|
5
|
-
* Runs everywhere. Inspector extracts at build time.
|
|
6
|
-
*/
|
|
7
2
|
export declare const wireTrigger: (trigger: CoreTrigger) => void;
|
|
8
|
-
/**
|
|
9
|
-
* Registers a trigger source with the Pikku framework.
|
|
10
|
-
* Provides the actual subscription function and input data.
|
|
11
|
-
* Only imported in the trigger worker process.
|
|
12
|
-
*/
|
|
13
3
|
export declare const wireTriggerSource: <TInput = unknown, TOutput = unknown>(source: CoreTriggerSource<TInput, TOutput>) => void;
|
|
14
|
-
/**
|
|
15
|
-
* Parameters for setting up a trigger
|
|
16
|
-
*/
|
|
17
4
|
export type SetupTriggerParams<TInput = unknown, TOutput = unknown> = {
|
|
18
5
|
name: string;
|
|
19
6
|
input?: TInput;
|
|
20
7
|
onTrigger: (data: TOutput) => void | Promise<void>;
|
|
21
8
|
};
|
|
22
|
-
/**
|
|
23
|
-
* Sets up a registered trigger and starts listening for events.
|
|
24
|
-
* Returns a TriggerInstance with a teardown function.
|
|
25
|
-
*
|
|
26
|
-
* @param name - The trigger name (must be registered via wireTrigger)
|
|
27
|
-
* @param input - The input to pass to the trigger function
|
|
28
|
-
* @param onTrigger - Callback invoked when the trigger fires
|
|
29
|
-
*/
|
|
30
9
|
export declare function setupTrigger<TInput = unknown, TOutput = unknown>({ name, input, onTrigger, }: SetupTriggerParams<TInput, TOutput>): Promise<TriggerInstance>;
|
|
31
|
-
/**
|
|
32
|
-
* Gets all registered triggers
|
|
33
|
-
*/
|
|
34
10
|
export declare const getRegisteredTriggers: () => Map<string, CoreTrigger<any>>;
|
|
35
|
-
/**
|
|
36
|
-
* Gets trigger metadata
|
|
37
|
-
*/
|
|
38
11
|
export declare const getTriggerMeta: () => import("./trigger.types.js").TriggerMeta;
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { pikkuState, getSingletonServices, getCreateWireServices, } from '../../pikku-state.js';
|
|
2
2
|
import { addFunction, runPikkuFunc } from '../../function/function-runner.js';
|
|
3
3
|
import { PikkuMissingMetaError } from '../../errors/errors.js';
|
|
4
|
-
/**
|
|
5
|
-
* Registers a trigger with the Pikku framework.
|
|
6
|
-
* Declares a trigger name and its target pikku function.
|
|
7
|
-
* Runs everywhere. Inspector extracts at build time.
|
|
8
|
-
*/
|
|
9
4
|
export const wireTrigger = (trigger) => {
|
|
10
5
|
const meta = pikkuState(null, 'trigger', 'meta');
|
|
11
6
|
const triggerMeta = meta[trigger.name];
|
|
@@ -17,11 +12,7 @@ export const wireTrigger = (trigger) => {
|
|
|
17
12
|
const triggers = pikkuState(null, 'trigger', 'triggers');
|
|
18
13
|
triggers.set(trigger.name, trigger);
|
|
19
14
|
};
|
|
20
|
-
|
|
21
|
-
* Registers a trigger source with the Pikku framework.
|
|
22
|
-
* Provides the actual subscription function and input data.
|
|
23
|
-
* Only imported in the trigger worker process.
|
|
24
|
-
*/
|
|
15
|
+
// knowledge: decisions/internals/trigger-declaration-is-split-from-trigger-source.md
|
|
25
16
|
export const wireTriggerSource = (source) => {
|
|
26
17
|
const sourceMeta = pikkuState(null, 'trigger', 'sourceMeta');
|
|
27
18
|
const triggerSourceMeta = sourceMeta[source.name];
|
|
@@ -36,14 +27,6 @@ export const wireTriggerSource = (source) => {
|
|
|
36
27
|
triggerSources.set(source.name, source);
|
|
37
28
|
addFunction(triggerSourceMeta.pikkuFuncId, source.func, triggerSourceMeta.packageName);
|
|
38
29
|
};
|
|
39
|
-
/**
|
|
40
|
-
* Sets up a registered trigger and starts listening for events.
|
|
41
|
-
* Returns a TriggerInstance with a teardown function.
|
|
42
|
-
*
|
|
43
|
-
* @param name - The trigger name (must be registered via wireTrigger)
|
|
44
|
-
* @param input - The input to pass to the trigger function
|
|
45
|
-
* @param onTrigger - Callback invoked when the trigger fires
|
|
46
|
-
*/
|
|
47
30
|
export async function setupTrigger({ name, input, onTrigger, }) {
|
|
48
31
|
const singletonServices = getSingletonServices();
|
|
49
32
|
const createWireServices = getCreateWireServices();
|
|
@@ -74,15 +57,9 @@ export async function setupTrigger({ name, input, onTrigger, }) {
|
|
|
74
57
|
});
|
|
75
58
|
return { name, teardown };
|
|
76
59
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Gets all registered triggers
|
|
79
|
-
*/
|
|
80
60
|
export const getRegisteredTriggers = () => {
|
|
81
61
|
return pikkuState(null, 'trigger', 'triggers');
|
|
82
62
|
};
|
|
83
|
-
/**
|
|
84
|
-
* Gets trigger metadata
|
|
85
|
-
*/
|
|
86
63
|
export const getTriggerMeta = () => {
|
|
87
64
|
return pikkuState(null, 'trigger', 'meta');
|
|
88
65
|
};
|
|
@@ -1,16 +1,9 @@
|
|
|
1
1
|
import type { CommonWireMeta, CoreSingletonServices } from '../../types/core.types.js';
|
|
2
2
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
3
3
|
import type { CoreNodeConfig } from '../node/node.types.js';
|
|
4
|
-
/**
|
|
5
|
-
* The trigger interaction object passed to trigger functions via the wire.
|
|
6
|
-
* Call trigger() to fire the trigger and start a new workflow/execution.
|
|
7
|
-
*/
|
|
8
4
|
export interface PikkuTrigger<TOutput = unknown> {
|
|
9
5
|
invoke: (data: TOutput) => void;
|
|
10
6
|
}
|
|
11
|
-
/**
|
|
12
|
-
* Metadata for registered triggers stored in state.
|
|
13
|
-
*/
|
|
14
7
|
export type TriggerMeta = Record<string, CommonWireMeta & {
|
|
15
8
|
name: string;
|
|
16
9
|
}>;
|
|
@@ -19,109 +12,35 @@ export type TriggerSourceMeta = Record<string, {
|
|
|
19
12
|
pikkuFuncId: string;
|
|
20
13
|
packageName?: string;
|
|
21
14
|
}>;
|
|
22
|
-
/**
|
|
23
|
-
* A trigger function that sets up a subscription and returns a teardown function.
|
|
24
|
-
* The trigger is fired via wire.trigger.invoke(data).
|
|
25
|
-
*
|
|
26
|
-
* @template TInput - Input type (configuration passed when wired)
|
|
27
|
-
* @template TOutput - Output type produced when trigger fires
|
|
28
|
-
* @template Services - Services available to the trigger
|
|
29
|
-
*/
|
|
30
15
|
export type CorePikkuTriggerFunction<TInput = unknown, TOutput = unknown, Services extends CoreSingletonServices = CoreSingletonServices> = (services: Services, input: TInput, wire: {
|
|
31
16
|
trigger: {
|
|
32
17
|
invoke: (data: TOutput) => void;
|
|
33
18
|
};
|
|
34
19
|
}) => Promise<() => void | Promise<void>>;
|
|
35
|
-
/**
|
|
36
|
-
* Configuration object for creating a trigger function with metadata
|
|
37
|
-
*/
|
|
38
20
|
export type CorePikkuTriggerFunctionConfig<TInput = unknown, TOutput = unknown, Services extends CoreSingletonServices = CoreSingletonServices, InputSchema extends StandardSchemaV1 | undefined = undefined, OutputSchema extends StandardSchemaV1 | undefined = undefined> = {
|
|
39
|
-
/** Optional human-readable title for the trigger */
|
|
40
21
|
title?: string;
|
|
41
|
-
/** Optional description of what the trigger does */
|
|
42
22
|
description?: string;
|
|
43
|
-
/** Optional tags for categorization */
|
|
44
23
|
tags?: string[];
|
|
45
|
-
/** The trigger function */
|
|
46
24
|
func: CorePikkuTriggerFunction<TInput, TOutput, Services>;
|
|
47
|
-
/** Optional Zod schema for input validation */
|
|
48
25
|
input?: InputSchema;
|
|
49
|
-
/** Optional Zod schema for output validation */
|
|
50
26
|
output?: OutputSchema;
|
|
51
|
-
/** Optional node configuration */
|
|
52
27
|
node?: CoreNodeConfig;
|
|
53
28
|
};
|
|
54
|
-
/**
|
|
55
|
-
* Factory function for creating trigger functions
|
|
56
|
-
* Supports both direct function and configuration object syntax
|
|
57
|
-
*
|
|
58
|
-
* @example
|
|
59
|
-
* ```typescript
|
|
60
|
-
* // Direct function syntax
|
|
61
|
-
* export const redisSubscribeTrigger = pikkuTriggerFunc<
|
|
62
|
-
* { channel: string },
|
|
63
|
-
* { message: string }
|
|
64
|
-
* >(async ({ redis }, { channel }, { trigger }) => {
|
|
65
|
-
* const subscriber = redis.duplicate()
|
|
66
|
-
* await subscriber.subscribe(channel, (msg) => {
|
|
67
|
-
* trigger.invoke({ message: msg })
|
|
68
|
-
* })
|
|
69
|
-
* return () => subscriber.unsubscribe()
|
|
70
|
-
* })
|
|
71
|
-
*
|
|
72
|
-
* // Configuration object syntax with metadata
|
|
73
|
-
* export const redisSubscribeTrigger = pikkuTriggerFunc({
|
|
74
|
-
* title: 'Redis Subscribe Trigger',
|
|
75
|
-
* description: 'Listens to Redis pub/sub channel',
|
|
76
|
-
* input: z.object({ channel: z.string() }),
|
|
77
|
-
* output: z.object({ message: z.string() }),
|
|
78
|
-
* func: async ({ redis }, { channel }, { trigger }) => {
|
|
79
|
-
* const subscriber = redis.duplicate()
|
|
80
|
-
* await subscriber.subscribe(channel, (msg) => {
|
|
81
|
-
* trigger.invoke({ message: msg })
|
|
82
|
-
* })
|
|
83
|
-
* return () => subscriber.unsubscribe()
|
|
84
|
-
* }
|
|
85
|
-
* })
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
29
|
export declare const pikkuTriggerFunc: <TInput = unknown, TOutput = unknown, Services extends CoreSingletonServices = CoreSingletonServices, InputSchema extends StandardSchemaV1 | undefined = undefined, OutputSchema extends StandardSchemaV1 | undefined = undefined>(triggerOrConfig: CorePikkuTriggerFunction<TInput, TOutput, Services> | CorePikkuTriggerFunctionConfig<TInput, TOutput, Services, InputSchema, OutputSchema>) => CorePikkuTriggerFunctionConfig<TInput, TOutput, Services, InputSchema, OutputSchema>;
|
|
89
|
-
/**
|
|
90
|
-
* Core trigger definition for registration.
|
|
91
|
-
*
|
|
92
|
-
* @template TInput - Input type (configuration passed when wired)
|
|
93
|
-
* @template TOutput - Output type
|
|
94
|
-
*/
|
|
95
30
|
export interface CoreTrigger<PikkuFunctionConfig = any> {
|
|
96
|
-
/** Unique name for this trigger */
|
|
97
31
|
name: string;
|
|
98
|
-
/** The target RPC function to invoke when the trigger fires */
|
|
99
32
|
func: PikkuFunctionConfig;
|
|
100
|
-
/** Optional description */
|
|
101
33
|
description?: string;
|
|
102
|
-
/** Optional tags for categorization */
|
|
103
34
|
tags?: string[];
|
|
104
|
-
/** Whether this trigger is used by a graph workflow */
|
|
105
35
|
graph?: true;
|
|
106
36
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Represents a trigger instance with teardown capability
|
|
109
|
-
*/
|
|
110
37
|
export interface TriggerInstance {
|
|
111
38
|
name: string;
|
|
112
39
|
teardown: () => void | Promise<void>;
|
|
113
40
|
}
|
|
114
|
-
/**
|
|
115
|
-
* A trigger source that provides the subscription function.
|
|
116
|
-
* Only imported in the trigger worker process.
|
|
117
|
-
*
|
|
118
|
-
* @template TInput - Input type passed to the trigger function
|
|
119
|
-
* @template TOutput - Output type produced when trigger fires
|
|
120
|
-
*/
|
|
121
41
|
export type CoreTriggerSource<TInput = unknown, TOutput = unknown> = {
|
|
122
|
-
/** Must match a wireTrigger
|
|
42
|
+
/** Must match the name of a `wireTrigger` registration. */
|
|
123
43
|
name: string;
|
|
124
|
-
/** The trigger function config that sets up the subscription */
|
|
125
44
|
func: CorePikkuTriggerFunctionConfig<TInput, TOutput, CoreSingletonServices, StandardSchemaV1 | undefined, StandardSchemaV1 | undefined>;
|
|
126
45
|
} & (unknown extends TInput ? {
|
|
127
46
|
input?: TInput;
|
|
@@ -1,37 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Factory function for creating trigger functions
|
|
3
|
-
* Supports both direct function and configuration object syntax
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* ```typescript
|
|
7
|
-
* // Direct function syntax
|
|
8
|
-
* export const redisSubscribeTrigger = pikkuTriggerFunc<
|
|
9
|
-
* { channel: string },
|
|
10
|
-
* { message: string }
|
|
11
|
-
* >(async ({ redis }, { channel }, { trigger }) => {
|
|
12
|
-
* const subscriber = redis.duplicate()
|
|
13
|
-
* await subscriber.subscribe(channel, (msg) => {
|
|
14
|
-
* trigger.invoke({ message: msg })
|
|
15
|
-
* })
|
|
16
|
-
* return () => subscriber.unsubscribe()
|
|
17
|
-
* })
|
|
18
|
-
*
|
|
19
|
-
* // Configuration object syntax with metadata
|
|
20
|
-
* export const redisSubscribeTrigger = pikkuTriggerFunc({
|
|
21
|
-
* title: 'Redis Subscribe Trigger',
|
|
22
|
-
* description: 'Listens to Redis pub/sub channel',
|
|
23
|
-
* input: z.object({ channel: z.string() }),
|
|
24
|
-
* output: z.object({ message: z.string() }),
|
|
25
|
-
* func: async ({ redis }, { channel }, { trigger }) => {
|
|
26
|
-
* const subscriber = redis.duplicate()
|
|
27
|
-
* await subscriber.subscribe(channel, (msg) => {
|
|
28
|
-
* trigger.invoke({ message: msg })
|
|
29
|
-
* })
|
|
30
|
-
* return () => subscriber.unsubscribe()
|
|
31
|
-
* }
|
|
32
|
-
* })
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
1
|
export const pikkuTriggerFunc = (triggerOrConfig) => {
|
|
36
2
|
if (typeof triggerOrConfig === 'function') {
|
|
37
3
|
return { func: triggerOrConfig };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { defineVariable } from './variable.types.js';
|
|
2
2
|
export type { CoreVariable, VariableDefinitionMeta, VariableDefinitionsMeta, VariableDefinitions, } from './variable.types.js';
|
|
3
3
|
export { validateAndBuildVariableDefinitionsMeta } from './validate-variable-definitions.js';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { defineVariable } from './variable.types.js';
|
|
2
2
|
export { validateAndBuildVariableDefinitionsMeta } from './validate-variable-definitions.js';
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import type { VariableDefinitions, VariableDefinitionsMeta } from './variable.types.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
sourceFile: string;
|
|
5
|
-
}
|
|
2
|
+
import type { SchemaRefLike } from '../../types/core.types.js';
|
|
3
|
+
export type { SchemaRefLike };
|
|
6
4
|
export declare function validateAndBuildVariableDefinitionsMeta(definitions: VariableDefinitions, schemaLookup: Map<string, SchemaRefLike>): VariableDefinitionsMeta;
|
|
@@ -4,12 +4,6 @@ export type CoreVariable<T = unknown> = {
|
|
|
4
4
|
description?: string;
|
|
5
5
|
variableId: string;
|
|
6
6
|
schema: T;
|
|
7
|
-
/**
|
|
8
|
-
* Link to documentation explaining how to obtain this value — a provider's
|
|
9
|
-
* API-key page, a setup guide, an internal runbook. Surfaced by consoles and
|
|
10
|
-
* deploy UIs so a user facing a missing value has somewhere to go instead of
|
|
11
|
-
* an opaque identifier.
|
|
12
|
-
*/
|
|
13
7
|
docsUrl?: string;
|
|
14
8
|
};
|
|
15
9
|
export type VariableDefinitionMeta = {
|
|
@@ -18,15 +12,9 @@ export type VariableDefinitionMeta = {
|
|
|
18
12
|
description?: string;
|
|
19
13
|
variableId: string;
|
|
20
14
|
schema?: Record<string, unknown> | string;
|
|
21
|
-
/**
|
|
22
|
-
* Link to documentation explaining how to obtain this value — a provider's
|
|
23
|
-
* API-key page, a setup guide, an internal runbook. Surfaced by consoles and
|
|
24
|
-
* deploy UIs so a user facing a missing value has somewhere to go instead of
|
|
25
|
-
* an opaque identifier.
|
|
26
|
-
*/
|
|
27
15
|
docsUrl?: string;
|
|
28
16
|
sourceFile?: string;
|
|
29
17
|
};
|
|
30
18
|
export type VariableDefinitionsMeta = Record<string, VariableDefinitionMeta>;
|
|
31
19
|
export type VariableDefinitions = VariableDefinitionMeta[];
|
|
32
|
-
export declare const
|
|
20
|
+
export declare const defineVariable: <T>(_config: CoreVariable<T>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const
|
|
1
|
+
export const defineVariable = (_config) => { };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Virtual user module exports.
|
|
3
|
+
*
|
|
4
|
+
* A virtual user is an LLM playing a persona that signs into a *running* stage
|
|
5
|
+
* and works its API in character — non-deterministically, with a budget, and
|
|
6
|
+
* with oracles watching what comes back. It is not a test runner: nothing here
|
|
7
|
+
* asserts an expected outcome, because the point is the outcomes nobody thought
|
|
8
|
+
* to expect.
|
|
9
|
+
*
|
|
10
|
+
* Everything it needs is derived from what a pikku project already generates —
|
|
11
|
+
* the function meta becomes the catalogue, the scenario meta becomes the
|
|
12
|
+
* intents, the declared personas become the identities — so adopting it is
|
|
13
|
+
* configuration rather than authoring.
|
|
14
|
+
*
|
|
15
|
+
* The engine is transport-agnostic: the virtual user drives an
|
|
16
|
+
* {@link VirtualUserTarget}, which in production is an `HttpPersona`
|
|
17
|
+
* signed in as a real user against staging or production.
|
|
18
|
+
*/
|
|
19
|
+
export type { ApiCatalogueEntry, IntentRecord, IntentSource, IntentStatus, StepRecord, VirtualUserAction, VirtualUserBudget, VirtualUserDisposition, VirtualUserFinding, VirtualUserFindingKind, VirtualUserRunResult, VirtualUserTally, VirtualUserTarget, } from './virtual-user.types.js';
|
|
20
|
+
export { runVirtualUser, rememberIds, type RunVirtualUserParams, type VirtualUserCallContext, } from './run-virtual-user.js';
|
|
21
|
+
export { DISPOSITIONS, dispositionProfile, type DispositionProfile, type VirtualUserTuning, } from './virtual-user-dispositions.js';
|
|
22
|
+
export { catalogueClassification, catalogueIndex, catalogueLookup, describeEntry, isReadOnly, reachableCatalogue, renderCatalogue, unreachableCatalogue, } from './virtual-user-catalogue.js';
|
|
23
|
+
export { reachableAgents, type AgentReachability, type ReachableAgent, } from './virtual-user-agents.js';
|
|
24
|
+
export { IntentStack, intentsForPersona, type IntentMove, type ScheduledTick, } from './virtual-user-intents.js';
|
|
25
|
+
export { createRng, type VirtualUserRng } from './virtual-user-rng.js';
|
|
26
|
+
export { deriveCatalogue, deriveIntents, type SchemaMap, } from './virtual-user-derive.js';
|
|
27
|
+
export { personaVirtualUserTarget, type PersonaTargetOptions, } from './virtual-user-target.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { runVirtualUser, rememberIds, } from './run-virtual-user.js';
|
|
2
|
+
export { DISPOSITIONS, dispositionProfile, } from './virtual-user-dispositions.js';
|
|
3
|
+
export { catalogueClassification, catalogueIndex, catalogueLookup, describeEntry, isReadOnly, reachableCatalogue, renderCatalogue, unreachableCatalogue, } from './virtual-user-catalogue.js';
|
|
4
|
+
export { reachableAgents, } from './virtual-user-agents.js';
|
|
5
|
+
export { IntentStack, intentsForPersona, } from './virtual-user-intents.js';
|
|
6
|
+
export { createRng } from './virtual-user-rng.js';
|
|
7
|
+
export { deriveCatalogue, deriveIntents, } from './virtual-user-derive.js';
|
|
8
|
+
export { personaVirtualUserTarget, } from './virtual-user-target.js';
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { ResolvedPersona } from '../../services/personas-service.js';
|
|
2
|
+
import type { ActorLLM } from '../actor-flow/run-conversation.js';
|
|
3
|
+
import { type VirtualUserTuning } from './virtual-user-dispositions.js';
|
|
4
|
+
import type { ApiCatalogueEntry, IntentSource, VirtualUserBudget, VirtualUserDisposition, VirtualUserFinding, VirtualUserRunResult, VirtualUserTally, VirtualUserTarget } from './virtual-user.types.js';
|
|
5
|
+
/** What an app-specific oracle is shown about one call. */
|
|
6
|
+
export interface VirtualUserCallContext {
|
|
7
|
+
rpcName: string;
|
|
8
|
+
args: unknown;
|
|
9
|
+
status: number;
|
|
10
|
+
ok: boolean;
|
|
11
|
+
body: unknown;
|
|
12
|
+
intentId?: string;
|
|
13
|
+
step: number;
|
|
14
|
+
disposition: VirtualUserDisposition;
|
|
15
|
+
}
|
|
16
|
+
export interface RunVirtualUserParams {
|
|
17
|
+
/** The person being run — name, job title, personality, goals. */
|
|
18
|
+
persona: ResolvedPersona;
|
|
19
|
+
/** The id they were declared under, as the intent sources refer to them. */
|
|
20
|
+
personaId: string;
|
|
21
|
+
/** How it behaves. Default `realistic`. */
|
|
22
|
+
disposition?: VirtualUserDisposition;
|
|
23
|
+
/** Per-user overrides for that disposition's dials. */
|
|
24
|
+
tuning?: VirtualUserTuning;
|
|
25
|
+
/** Every RPC the app exposes. Narrowed internally; nothing is hidden by default. */
|
|
26
|
+
catalogue: readonly ApiCatalogueEntry[];
|
|
27
|
+
/** Features and scenarios in the app's own words — never their step graphs. */
|
|
28
|
+
intents: readonly IntentSource[];
|
|
29
|
+
/** Extra goals in the user's own words, run alongside the derived intents. */
|
|
30
|
+
goals?: readonly string[];
|
|
31
|
+
/** The transport it acts through. */
|
|
32
|
+
target: VirtualUserTarget;
|
|
33
|
+
/** The user's own LLM. */
|
|
34
|
+
llm: ActorLLM;
|
|
35
|
+
model: string;
|
|
36
|
+
budget?: VirtualUserBudget;
|
|
37
|
+
/**
|
|
38
|
+
* The app's own stopping rule, given the running tally. Pikku counts steps,
|
|
39
|
+
* calls, mutations and tokens because only the engine sees them; what they
|
|
40
|
+
* cost is the app's to decide, which is why no price appears in core.
|
|
41
|
+
*/
|
|
42
|
+
stop?: (tally: VirtualUserTally) => boolean | Promise<boolean>;
|
|
43
|
+
/** Fixed seed, so a run replays into the same finding. */
|
|
44
|
+
seed?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Check a response against the RPC's own output schema. Supplied by the CLI
|
|
47
|
+
* from generated schemas; a mismatch means the contract and the implementation
|
|
48
|
+
* disagree, which nothing else in a normal test suite looks for.
|
|
49
|
+
*/
|
|
50
|
+
validateOutput?: (rpcName: string, body: unknown) => string | null;
|
|
51
|
+
/** App-specific oracle — ownership, invariants, anything core cannot know. */
|
|
52
|
+
classify?: (context: VirtualUserCallContext) => VirtualUserFinding[] | null | undefined;
|
|
53
|
+
/** Files this user may upload. */
|
|
54
|
+
fixtures?: readonly string[];
|
|
55
|
+
/** Agents it may talk to. */
|
|
56
|
+
agents?: readonly {
|
|
57
|
+
name: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
}[];
|
|
60
|
+
/** Ids and slugs remembered from an earlier run, for a `stale` user. */
|
|
61
|
+
memory?: Record<string, string>;
|
|
62
|
+
/**
|
|
63
|
+
* The scopes this persona actually holds, resolved from its roles at sign-in.
|
|
64
|
+
*
|
|
65
|
+
* Used two ways: to narrow a large catalogue to what it is entitled to reach,
|
|
66
|
+
* and as an oracle — a call whose scopes it does not hold that nonetheless
|
|
67
|
+
* succeeds is authorization drift.
|
|
68
|
+
*/
|
|
69
|
+
scopes?: readonly string[];
|
|
70
|
+
/**
|
|
71
|
+
* Offer the endpoints the app marked as needing a human's approval. Off by
|
|
72
|
+
* default: those are the ones that spend money and move real traffic.
|
|
73
|
+
*/
|
|
74
|
+
allowApprovalRequired?: boolean;
|
|
75
|
+
maxStepsPerIntent?: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Pull identifiers out of a response so later intents can refer to them.
|
|
79
|
+
*
|
|
80
|
+
* This is what makes a run cohesive without ever handing the user a dataflow
|
|
81
|
+
* map: it discovers that a project has an id by looking at one, the same way a
|
|
82
|
+
* person reads it off the screen.
|
|
83
|
+
*/
|
|
84
|
+
export declare const rememberIds: (body: unknown, into: Record<string, string>, depth?: number) => Record<string, string>;
|
|
85
|
+
/**
|
|
86
|
+
* Run one virtual user against a live target until its budget runs out.
|
|
87
|
+
*
|
|
88
|
+
* The engine schedules which intent is live and the model decides what to do
|
|
89
|
+
* within it — that split is what lets a run be replayed from its seed while the
|
|
90
|
+
* work inside it stays genuinely open-ended.
|
|
91
|
+
*/
|
|
92
|
+
export declare const runVirtualUser: (params: RunVirtualUserParams) => Promise<VirtualUserRunResult>;
|