@pikku/core 0.12.142 → 0.12.144
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics/analytics.d.ts +14 -0
- package/dist/analytics/analytics.js +14 -0
- package/dist/analytics/analytics.types.d.ts +1 -0
- package/dist/analytics/anonymous-analytics-identity.d.ts +1 -0
- package/dist/analytics/cookie-analytics-identity.d.ts +1 -0
- package/dist/analytics/mint-cookie.d.ts +1 -0
- package/dist/{wirings/channel/channel-middleware-runner.d.ts → channel-middleware-runner.d.ts} +17 -3
- package/dist/{wirings/channel/channel-middleware-runner.js → channel-middleware-runner.js} +24 -8
- package/dist/classification/data-classification.d.ts +13 -0
- package/dist/classification/secret-value.d.ts +7 -0
- package/dist/classification/secret-value.js +7 -0
- package/dist/crypto-utils.d.ts +93 -0
- package/dist/crypto-utils.js +92 -0
- package/dist/dev/hot-reload.d.ts +16 -0
- package/dist/dev/hot-reload.js +16 -1
- package/dist/dev/module-runner.js +7 -3
- package/dist/dev/reload-meta.js +1 -1
- package/dist/errors/error-handler.d.ts +9 -0
- package/dist/errors/error-handler.js +8 -0
- package/dist/errors/errors.d.ts +219 -0
- package/dist/errors/errors.js +227 -0
- package/dist/errors/serialized-error.d.ts +4 -0
- package/dist/function/abort-scope.d.ts +5 -0
- package/dist/function/function-meta.types.d.ts +20 -0
- package/dist/function/function-runner.d.ts +41 -0
- package/dist/function/function-runner.js +57 -11
- package/dist/function/functions.types.d.ts +59 -0
- package/dist/function/functions.types.js +23 -0
- package/dist/function/list.types.d.ts +4 -0
- package/dist/lifecycle.d.ts +12 -1
- package/dist/lifecycle.js +12 -1
- package/dist/middleware/addon-scope-cap.d.ts +4 -0
- package/dist/middleware/addon-scope-cap.js +7 -3
- package/dist/middleware/auth-apikey.js +3 -3
- package/dist/middleware/auth-bearer.js +5 -13
- package/dist/middleware/auth-cookie.js +3 -3
- package/dist/middleware/middleware-factories.d.ts +17 -0
- package/dist/middleware/middleware-factories.js +17 -0
- package/dist/middleware/middleware.types.d.ts +23 -0
- package/dist/middleware/remote-auth.d.ts +15 -0
- package/dist/middleware/remote-auth.js +18 -3
- package/dist/middleware/remote-jobs-secret.js +2 -10
- package/dist/middleware-runner.d.ts +7 -0
- package/dist/middleware-runner.js +23 -7
- package/dist/permissions.d.ts +13 -0
- package/dist/permissions.js +13 -0
- package/dist/pikku-state.d.ts +49 -0
- package/dist/pikku-state.js +49 -0
- package/dist/remote.js +20 -5
- package/dist/schema.d.ts +36 -0
- package/dist/schema.js +36 -0
- package/dist/services/agent-run-state-service.d.ts +8 -0
- package/dist/services/agent-runner-service.d.ts +24 -0
- package/dist/services/agent-storage-service.d.ts +8 -0
- package/dist/services/ai-embedding-service.d.ts +4 -0
- package/dist/services/audit-service.d.ts +48 -0
- package/dist/services/audit-service.js +22 -0
- package/dist/services/content-service.d.ts +34 -0
- package/dist/services/credential-wire-service.d.ts +9 -0
- package/dist/services/credential-wire-service.js +9 -0
- package/dist/services/deployment-service.d.ts +14 -0
- package/dist/services/email-service.d.ts +20 -0
- package/dist/services/email-template.d.ts +24 -0
- package/dist/services/email-template.js +12 -0
- package/dist/services/file-scenario-run-store.d.ts +5 -0
- package/dist/services/file-scenario-run-store.js +4 -0
- package/dist/services/gateway-service.d.ts +5 -0
- package/dist/services/in-memory-agent-run-state-service.d.ts +5 -0
- package/dist/services/in-memory-agent-run-state-service.js +5 -0
- package/dist/services/in-memory-lease-service.d.ts +5 -0
- package/dist/services/in-memory-lease-service.js +5 -0
- package/dist/services/in-memory-session-store.d.ts +4 -0
- package/dist/services/in-memory-session-store.js +4 -0
- package/dist/services/incoming-webhook-queue.d.ts +2 -0
- package/dist/services/incoming-webhook-queue.js +2 -0
- package/dist/services/incoming-webhook-service.d.ts +11 -1
- package/dist/services/incoming-webhook-service.js +5 -1
- package/dist/services/index.d.ts +1 -5
- package/dist/services/index.js +1 -5
- package/dist/services/jwt-service.d.ts +8 -0
- package/dist/services/lease-service.d.ts +5 -0
- package/dist/services/lease-service.js +1 -0
- package/dist/services/local-content-request-handler.d.ts +20 -0
- package/dist/services/local-content-request-handler.js +11 -0
- package/dist/services/local-content.d.ts +45 -0
- package/dist/services/local-content.js +35 -0
- package/dist/services/local-credential-service.d.ts +5 -0
- package/dist/services/local-credential-service.js +5 -0
- package/dist/services/local-email-service.d.ts +7 -0
- package/dist/services/local-email-service.js +7 -0
- package/dist/services/local-secrets.d.ts +8 -0
- package/dist/services/local-secrets.js +8 -0
- package/dist/services/local-variables.d.ts +6 -0
- package/dist/services/local-variables.js +6 -0
- package/dist/services/logger.d.ts +4 -0
- package/dist/services/logger.js +4 -0
- package/dist/services/meta-service.d.ts +38 -0
- package/dist/services/meta-service.js +6 -0
- package/dist/services/queue-webhook-service.d.ts +19 -0
- package/dist/services/queue-webhook-service.js +19 -0
- package/dist/services/remote-jobs.d.ts +8 -13
- package/dist/services/remote-jobs.js +3 -54
- package/dist/services/scenario-cookie-jar.d.ts +4 -0
- package/dist/services/scheduler-service.d.ts +16 -0
- package/dist/services/scheduler-service.js +12 -0
- package/dist/services/schema-service.d.ts +9 -0
- package/dist/services/scope-service.d.ts +10 -0
- package/dist/services/scoped-secret-service.d.ts +5 -0
- package/dist/services/scoped-secret-service.js +5 -0
- package/dist/services/secret-host-binding.d.ts +5 -0
- package/dist/services/secret-host-binding.js +5 -0
- package/dist/services/secret-service.d.ts +19 -1
- package/dist/services/secretless.d.ts +6 -0
- package/dist/services/secretless.js +6 -0
- package/dist/services/session-store.d.ts +5 -0
- package/dist/services/stub-tracker.d.ts +1 -0
- package/dist/services/temporary-file-service.d.ts +9 -0
- package/dist/services/temporary-file-service.js +9 -0
- package/dist/services/trigger-service.d.ts +4 -0
- package/dist/services/trigger-source-store.d.ts +13 -0
- package/dist/services/trigger-source-store.js +7 -0
- package/dist/services/typed-credential-service.d.ts +6 -0
- package/dist/services/typed-credential-service.js +5 -0
- package/dist/services/typed-secret-service.d.ts +12 -0
- package/dist/services/typed-secret-service.js +11 -0
- package/dist/services/typed-variables-service.d.ts +1 -0
- package/dist/services/user-session-service.d.ts +31 -1
- package/dist/services/user-session-service.js +29 -3
- package/dist/services/v8-coverage-service.d.ts +27 -0
- package/dist/services/v8-coverage-service.js +5 -0
- package/dist/services/variables-service.d.ts +8 -0
- package/dist/services/virtual-user-sign-in.d.ts +1 -0
- package/dist/services/virtual-user-statement.d.ts +8 -0
- package/dist/services/virtual-user-statement.js +4 -0
- package/dist/services/webhook-service.d.ts +25 -0
- package/dist/services/webhook-service.js +15 -0
- package/dist/services/workflow-service.d.ts +6 -0
- package/dist/test-utils.js +1 -1
- package/dist/testing/service-tests.d.ts +4 -0
- package/dist/time-utils.d.ts +15 -0
- package/dist/time-utils.js +14 -0
- package/dist/types/core.types.d.ts +80 -0
- package/dist/types/state.types.d.ts +4 -0
- package/dist/utils/hmac.d.ts +3 -0
- package/dist/utils/safe-fetch.d.ts +14 -0
- package/dist/utils/safe-fetch.js +13 -0
- package/dist/utils/stable-stringify.d.ts +11 -0
- package/dist/utils/stable-stringify.js +33 -0
- package/dist/utils.d.ts +28 -0
- package/dist/utils.js +22 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.js +7 -0
- package/dist/wirings/addon/define-screens.d.ts +2 -0
- package/dist/wirings/addon/remote-addon-auth.d.ts +9 -0
- package/dist/wirings/addon/remote-addon-auth.js +5 -0
- package/dist/wirings/addon/wire-addon.d.ts +4 -0
- package/dist/wirings/addon/wire-remote-addon.d.ts +1 -0
- package/dist/wirings/agent/agent-agui.d.ts +14 -5
- package/dist/wirings/agent/agent-agui.js +17 -6
- package/dist/wirings/agent/agent-helpers.d.ts +61 -1
- package/dist/wirings/agent/agent-helpers.js +62 -2
- package/dist/wirings/agent/agent-interrupt.d.ts +5 -0
- package/dist/wirings/agent/agent-output.d.ts +20 -0
- package/dist/wirings/agent/agent-output.js +69 -0
- package/dist/wirings/agent/agent-prepare.d.ts +41 -0
- package/dist/wirings/agent/agent-prepare.js +38 -2
- package/dist/wirings/agent/agent-registry.d.ts +8 -0
- package/dist/wirings/agent/agent-registry.js +10 -4
- package/dist/wirings/agent/agent-runner.d.ts +33 -0
- package/dist/wirings/agent/agent-runner.js +40 -7
- package/dist/wirings/agent/agent-stream.d.ts +30 -0
- package/dist/wirings/agent/agent-stream.js +33 -11
- package/dist/wirings/agent/agent.types.d.ts +43 -0
- package/dist/wirings/agent/voice-input.d.ts +12 -0
- package/dist/wirings/agent/voice-input.js +12 -0
- package/dist/wirings/agent/voice-output.d.ts +14 -0
- package/dist/wirings/agent/voice-output.js +10 -0
- package/dist/wirings/agent-scorer/agent-scorer-judge.js +1 -2
- package/dist/wirings/agent-scorer/agent-scorer-registry.d.ts +10 -0
- package/dist/wirings/agent-scorer/agent-scorer-registry.js +10 -0
- package/dist/wirings/agent-scorer/agent-scorer-snapshots.d.ts +1 -0
- package/dist/wirings/agent-scorer/agent-scorer-snapshots.js +1 -0
- package/dist/wirings/agent-scorer/agent-scorer.types.d.ts +7 -0
- package/dist/wirings/channel/channel-common.js +1 -1
- package/dist/wirings/channel/channel-rpc.types.d.ts +5 -0
- package/dist/wirings/channel/channel-runner.d.ts +22 -0
- package/dist/wirings/channel/channel-runner.js +22 -0
- package/dist/wirings/channel/channel-store.d.ts +8 -0
- package/dist/wirings/channel/channel-store.js +7 -0
- package/dist/wirings/channel/channel.types.d.ts +18 -0
- package/dist/wirings/channel/define-channel-routes.d.ts +5 -0
- package/dist/wirings/channel/define-channel-routes.js +5 -0
- package/dist/wirings/channel/eventhub-service.d.ts +9 -0
- package/dist/wirings/channel/eventhub-store.d.ts +1 -0
- package/dist/wirings/channel/eventhub-store.js +1 -0
- package/dist/wirings/channel/index.d.ts +1 -1
- package/dist/wirings/channel/index.js +1 -1
- package/dist/wirings/channel/local/local-channel-handler.d.ts +1 -0
- package/dist/wirings/channel/local/local-channel-handler.js +1 -0
- package/dist/wirings/channel/local/local-channel-runner.d.ts +13 -0
- package/dist/wirings/channel/local/local-channel-runner.js +13 -0
- package/dist/wirings/channel/local/local-eventhub-service.d.ts +1 -0
- package/dist/wirings/channel/local/local-eventhub-service.js +1 -0
- package/dist/wirings/channel/log-channels.d.ts +1 -0
- package/dist/wirings/channel/log-channels.js +1 -0
- package/dist/wirings/channel/pikku-abstract-channel-handler.d.ts +5 -0
- package/dist/wirings/channel/pikku-abstract-channel-handler.js +5 -0
- package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +32 -0
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +31 -0
- package/dist/wirings/cli/channel/cli-channel-runner.d.ts +8 -0
- package/dist/wirings/cli/channel/cli-channel-runner.js +8 -0
- package/dist/wirings/cli/channel/cli-raw-channel-runner.d.ts +1 -0
- package/dist/wirings/cli/cli-runner.d.ts +43 -0
- package/dist/wirings/cli/cli-runner.js +43 -0
- package/dist/wirings/cli/command-parser.d.ts +13 -0
- package/dist/wirings/cli/command-parser.js +12 -0
- package/dist/wirings/credential/credential-overrides.d.ts +1 -0
- package/dist/wirings/credential/credential.types.d.ts +7 -0
- package/dist/wirings/credential/validate-credential-definitions.d.ts +7 -0
- package/dist/wirings/credential/validate-credential-definitions.js +7 -0
- package/dist/wirings/flag/cached-flag-source.d.ts +1 -0
- package/dist/wirings/flag/flag.types.d.ts +3 -0
- package/dist/wirings/gateway/gateway-runner.d.ts +23 -0
- package/dist/wirings/gateway/gateway-runner.js +23 -0
- package/dist/wirings/gateway/gateway.types.d.ts +3 -0
- package/dist/wirings/gateway/local-gateway-service.d.ts +10 -0
- package/dist/{services → wirings/gateway}/local-gateway-service.js +6 -2
- package/dist/wirings/http/http-routes.d.ts +21 -0
- package/dist/wirings/http/http-routes.js +11 -0
- package/dist/wirings/http/http-runner.d.ts +71 -0
- package/dist/wirings/http/http-runner.js +73 -5
- package/dist/wirings/http/http.types.d.ts +27 -0
- package/dist/wirings/http/index.d.ts +1 -0
- package/dist/wirings/http/index.js +1 -0
- package/dist/wirings/http/log-http-routes.d.ts +1 -0
- package/dist/wirings/http/log-http-routes.js +1 -0
- package/dist/wirings/http/merge-request-data.d.ts +12 -0
- package/dist/wirings/http/merge-request-data.js +42 -0
- package/dist/wirings/http/pikku-fetch-http-request.d.ts +1 -0
- package/dist/wirings/http/pikku-fetch-http-request.js +3 -32
- package/dist/wirings/http/pikku-fetch-http-response.d.ts +1 -0
- package/dist/wirings/http/pikku-fetch-http-response.js +1 -0
- package/dist/wirings/http/routers/http-router.d.ts +6 -0
- package/dist/wirings/http/routers/http-router.js +6 -0
- package/dist/wirings/http/web-request.d.ts +17 -0
- package/dist/wirings/http/web-request.js +17 -0
- package/dist/wirings/mcp/mcp-endpoint-registry.d.ts +7 -0
- package/dist/wirings/mcp/mcp-endpoint-registry.js +7 -0
- package/dist/wirings/mcp/mcp-runner.d.ts +63 -0
- package/dist/wirings/mcp/mcp-runner.js +62 -0
- package/dist/wirings/mcp/mcp.types.d.ts +12 -0
- package/dist/wirings/node/node.types.d.ts +4 -0
- package/dist/wirings/oauth2/oauth2.types.d.ts +2 -0
- package/dist/wirings/queue/in-memory-queue-service.d.ts +23 -0
- package/dist/wirings/queue/in-memory-queue-service.js +129 -0
- package/dist/wirings/queue/index.d.ts +2 -1
- package/dist/wirings/queue/index.js +1 -0
- package/dist/wirings/queue/queue-identity.js +2 -14
- package/dist/wirings/queue/queue-runner.d.ts +37 -0
- package/dist/wirings/queue/queue-runner.js +37 -0
- package/dist/wirings/queue/queue.types.d.ts +56 -0
- package/dist/wirings/queue/register-queue-helper.d.ts +12 -0
- package/dist/wirings/queue/register-queue-helper.js +11 -0
- package/dist/wirings/queue/remote-queue-job.d.ts +11 -0
- package/dist/wirings/queue/remote-queue-job.js +41 -0
- package/dist/wirings/queue/signed-queue-service.d.ts +4 -1
- package/dist/wirings/queue/signed-queue-service.js +3 -0
- package/dist/wirings/queue/validate-worker-config.d.ts +1 -0
- package/dist/wirings/role/role.types.d.ts +3 -0
- package/dist/wirings/rpc/rpc-runner.d.ts +24 -0
- package/dist/wirings/rpc/rpc-runner.js +37 -2
- package/dist/wirings/rpc/rpc-types.d.ts +2 -0
- package/dist/wirings/scheduler/index.d.ts +2 -1
- package/dist/wirings/scheduler/index.js +1 -0
- package/dist/wirings/scheduler/log-schedulers.d.ts +1 -0
- package/dist/wirings/scheduler/log-schedulers.js +1 -0
- package/dist/wirings/scheduler/remote-scheduled-job.d.ts +11 -0
- package/dist/wirings/scheduler/remote-scheduled-job.js +20 -0
- package/dist/wirings/scheduler/scheduler-runner.d.ts +29 -0
- package/dist/wirings/scheduler/scheduler-runner.js +28 -0
- package/dist/wirings/scheduler/scheduler.types.d.ts +15 -0
- package/dist/wirings/scope/scope.types.d.ts +5 -0
- package/dist/wirings/secret/index.d.ts +2 -2
- package/dist/wirings/secret/index.js +1 -1
- package/dist/wirings/secret/secret.types.d.ts +26 -1
- package/dist/wirings/secret/secret.types.js +1 -0
- package/dist/wirings/secret/validate-secret-definitions.d.ts +8 -0
- package/dist/wirings/secret/validate-secret-definitions.js +15 -0
- package/dist/wirings/trigger/in-memory-trigger-service.d.ts +11 -0
- package/dist/{services → wirings/trigger}/in-memory-trigger-service.js +10 -3
- package/dist/wirings/trigger/index.d.ts +1 -1
- package/dist/wirings/trigger/pikku-trigger-service.d.ts +8 -3
- package/dist/wirings/trigger/pikku-trigger-service.js +14 -3
- package/dist/wirings/trigger/trigger-runner.d.ts +27 -2
- package/dist/wirings/trigger/trigger-runner.js +35 -2
- package/dist/wirings/trigger/trigger.types.d.ts +26 -4
- package/dist/wirings/trigger/webhook-source-runner.d.ts +24 -0
- package/dist/wirings/trigger/webhook-source-runner.js +19 -0
- package/dist/wirings/trigger/webhook-source.types.d.ts +12 -2
- package/dist/wirings/trigger/webhook-source.types.js +1 -1
- package/dist/wirings/variable/validate-variable-definitions.d.ts +7 -0
- package/dist/wirings/variable/validate-variable-definitions.js +7 -0
- package/dist/wirings/variable/variable.types.d.ts +7 -0
- package/dist/wirings/virtual-user/conversation/conversation.types.d.ts +5 -0
- package/dist/wirings/virtual-user/conversation/run-conversation.d.ts +6 -0
- package/dist/wirings/virtual-user/conversation/run-conversation.js +1 -1
- package/dist/{services → wirings/virtual-user}/http-virtual-users.d.ts +4 -3
- package/dist/{services → wirings/virtual-user}/http-virtual-users.js +6 -6
- package/dist/wirings/virtual-user/index.d.ts +1 -1
- package/dist/wirings/virtual-user/index.js +1 -1
- package/dist/wirings/virtual-user/run-virtual-user.d.ts +2 -1
- package/dist/wirings/virtual-user/run-virtual-user.js +1 -14
- package/dist/wirings/virtual-user/virtual-user-declaration.types.d.ts +4 -0
- package/dist/wirings/virtual-user/virtual-user-scaffold.d.ts +10 -1
- package/dist/wirings/virtual-user/virtual-user-scaffold.js +5 -0
- package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +5 -0
- package/dist/wirings/virtual-user/virtual-user-schedule.js +1 -0
- package/dist/wirings/virtual-user/virtual-user-target.d.ts +1 -0
- package/dist/wirings/webhook/define-outgoing-webhook.d.ts +20 -0
- package/dist/wirings/webhook/define-outgoing-webhook.js +9 -0
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +8 -4
- package/dist/wirings/workflow/dsl/workflow-runner.d.ts +7 -0
- package/dist/wirings/workflow/dsl/workflow-runner.js +7 -0
- package/dist/wirings/workflow/feature.d.ts +12 -0
- package/dist/wirings/workflow/feature.js +12 -0
- package/dist/wirings/workflow/graph/graph-node.d.ts +5 -0
- package/dist/wirings/workflow/graph/graph-node.js +5 -0
- package/dist/wirings/workflow/graph/template.d.ts +6 -0
- package/dist/wirings/workflow/graph/template.js +5 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +12 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.js +10 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +11 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.js +1 -0
- package/dist/{services → wirings/workflow}/in-memory-workflow-service.d.ts +8 -3
- package/dist/{services → wirings/workflow}/in-memory-workflow-service.js +9 -4
- package/dist/wirings/workflow/pikku-scenario-service.d.ts +1 -1
- package/dist/wirings/workflow/pikku-scenario-service.js +2 -2
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +1 -0
- package/dist/wirings/workflow/pikku-workflow-service.js +1 -0
- package/dist/wirings/workflow/run-timeline.d.ts +21 -0
- package/dist/wirings/workflow/run-timeline.js +15 -7
- package/dist/wirings/workflow/scenario-coverage.d.ts +1 -0
- package/dist/wirings/workflow/scenario-poll.d.ts +1 -0
- package/dist/wirings/workflow/scenario-prose.d.ts +6 -0
- package/dist/wirings/workflow/scenario-prose.js +6 -0
- package/dist/wirings/workflow/scenario-run.types.d.ts +3 -0
- package/dist/wirings/workflow/scenario-step.types.d.ts +1 -0
- package/dist/wirings/workflow/scenario-step.types.js +1 -0
- package/dist/wirings/workflow/scenario-surface.js +1 -13
- package/dist/wirings/workflow/scenario.types.d.ts +6 -0
- package/dist/wirings/workflow/workflow-approval-policy.d.ts +6 -0
- package/dist/wirings/workflow/workflow-approval-policy.js +6 -0
- package/dist/wirings/workflow/workflow-constants.d.ts +7 -1
- package/dist/wirings/workflow/workflow-constants.js +10 -1
- package/dist/wirings/workflow/workflow-errors.d.ts +13 -0
- package/dist/wirings/workflow/workflow-errors.js +13 -0
- package/dist/wirings/workflow/workflow-invocation-id.d.ts +4 -0
- package/dist/wirings/workflow/workflow-invocation-id.js +4 -0
- package/dist/wirings/workflow/workflow-queue-workers.d.ts +3 -0
- package/dist/wirings/workflow/workflow-run-ownership.d.ts +1 -0
- package/dist/wirings/workflow/workflow-run-ownership.js +1 -0
- package/dist/wirings/workflow/workflow-status-stream.d.ts +1 -0
- package/dist/wirings/workflow/workflow-unwind-plan.js +2 -7
- package/dist/wirings/workflow/workflow.types.d.ts +40 -0
- package/package.json +26 -9
- package/CHANGELOG.md +0 -6961
- package/dist/services/in-memory-queue-service.d.ts +0 -8
- package/dist/services/in-memory-queue-service.js +0 -54
- package/dist/services/in-memory-trigger-service.d.ts +0 -4
- package/dist/services/local-gateway-service.d.ts +0 -6
- package/dist/utils/hash.d.ts +0 -2
- package/dist/utils/hash.js +0 -23
- package/knowledge/decisions/index.md +0 -19
- package/knowledge/decisions/internals/a-credential-name-declared-twice-must-agree-on-schema-and-type.md +0 -29
- package/knowledge/decisions/internals/a-grant-can-name-a-scope-declared-without-its-addon.md +0 -29
- package/knowledge/decisions/internals/a-held-run-is-woken-later-not-retried.md +0 -28
- package/knowledge/decisions/internals/a-non-streaming-agent-run-registers-with-agentrunstate-too.md +0 -22
- package/knowledge/decisions/internals/a-reset-suite-makes-the-dev-seed-the-fixture.md +0 -50
- package/knowledge/decisions/internals/a-resumed-agent-turn-is-as-interruptible-as-the-first.md +0 -20
- package/knowledge/decisions/internals/a-scenario-step-template-is-offered-unfilled.md +0 -21
- package/knowledge/decisions/internals/a-scheduled-task-writes-its-caller-session-before-it-runs.md +0 -22
- package/knowledge/decisions/internals/a-secret-set-in-memory-shadows-the-variable-of-the-same-name.md +0 -28
- package/knowledge/decisions/internals/a-secret-that-fails-to-decrypt-fails-the-whole-read.md +0 -49
- package/knowledge/decisions/internals/a-virtual-user-acts-through-invokeraw-so-a-refusal-is-data.md +0 -32
- package/knowledge/decisions/internals/a-virtual-user-cadence-is-a-row-not-a-timer.md +0 -66
- package/knowledge/decisions/internals/a-virtual-user-converse-signs-in-before-its-first-turn.md +0 -24
- package/knowledge/decisions/internals/a-virtual-user-decides-whether-to-trust-memory-once-per-turn.md +0 -21
- package/knowledge/decisions/internals/a-virtual-user-email-is-computed-with-the-run-id-as-a-sub-address.md +0 -34
- package/knowledge/decisions/internals/a-virtual-user-run-is-not-a-workflow-but-it-needs-a-trigger.md +0 -65
- package/knowledge/decisions/internals/a-wall-clock-threshold-is-a-load-test-in-disguise.md +0 -46
- package/knowledge/decisions/internals/a-workflow-wire-is-built-from-the-run-not-from-the-rpc-service.md +0 -45
- package/knowledge/decisions/internals/addon-package-roots-resolve-by-walking-node-module-search-paths.md +0 -26
- package/knowledge/decisions/internals/addon-pikku-meta-ships-at-the-package-root-or-under-dist.md +0 -32
- package/knowledge/decisions/internals/addon-singleton-services-are-cached-per-namespace-not-per-package.md +0 -33
- package/knowledge/decisions/internals/addon-workflow-names-are-prefixed-with-the-consumer-namespace.md +0 -28
- package/knowledge/decisions/internals/agent-agui-bridge-obeys-the-client-ordering-contract.md +0 -29
- package/knowledge/decisions/internals/agent-audio-chunks-carry-the-format-the-provider-returned.md +0 -20
- package/knowledge/decisions/internals/agent-context-waits-for-a-tool-result-still-being-written.md +0 -21
- package/knowledge/decisions/internals/agent-credential-suspensions-hide-the-tool-result.md +0 -26
- package/knowledge/decisions/internals/agent-delegate-and-supervise-hide-different-text.md +0 -26
- package/knowledge/decisions/internals/agent-llm-tool-arguments-have-nulls-stripped.md +0 -23
- package/knowledge/decisions/internals/agent-model-config-stays-a-single-resolution-seam.md +0 -25
- package/knowledge/decisions/internals/agent-onerror-hooks-cannot-change-the-failure.md +0 -22
- package/knowledge/decisions/internals/agent-runner-methods-must-keep-their-receiver.md +0 -22
- package/knowledge/decisions/internals/agent-speech-travels-as-a-custom-agui-event.md +0 -22
- package/knowledge/decisions/internals/agent-stream-persistence-is-best-effort.md +0 -27
- package/knowledge/decisions/internals/agent-sub-agents-inherit-the-parent-context-block.md +0 -26
- package/knowledge/decisions/internals/agent-tool-execute-failures-are-logged-unconditionally.md +0 -25
- package/knowledge/decisions/internals/agent-voice-input-transcribes-audio-parts-in-place.md +0 -22
- package/knowledge/decisions/internals/agent-working-memory-is-persisted-only-when-valid.md +0 -25
- package/knowledge/decisions/internals/an-addon-scope-root-loses-to-a-root-the-host-already-declares.md +0 -39
- package/knowledge/decisions/internals/an-agent-interrupt-is-not-a-failure.md +0 -23
- package/knowledge/decisions/internals/an-agent-is-offered-under-its-registry-key-and-only-within-the-virtual-users-scopes.md +0 -27
- package/knowledge/decisions/internals/an-agent-run-owned-by-another-instance-says-so.md +0 -25
- package/knowledge/decisions/internals/an-agent-stream-send-must-return-the-inner-sends-promise.md +0 -22
- package/knowledge/decisions/internals/an-empty-text-part-is-omitted-from-an-agent-message.md +0 -20
- package/knowledge/decisions/internals/an-empty-transcript-is-not-recorded.md +0 -22
- package/knowledge/decisions/internals/an-oauth2-credential-implies-an-optional-app-secret.md +0 -26
- package/knowledge/decisions/internals/an-unref-d-timer-cannot-be-awaited-under-node-test.md +0 -66
- package/knowledge/decisions/internals/analytics-identity-resolvers-run-in-declared-order.md +0 -22
- package/knowledge/decisions/internals/channel-message-handlers-accept-three-config-shapes.md +0 -30
- package/knowledge/decisions/internals/channel-middleware-caches-only-statically-resolved-middleware.md +0 -31
- package/knowledge/decisions/internals/channel-state-accessors-are-unsound-generics-that-every-implementation-asserts.md +0 -33
- package/knowledge/decisions/internals/channel-state-is-per-socket-session-state-is-per-user.md +0 -29
- package/knowledge/decisions/internals/channel-user-id-is-persisted-after-onconnect-middleware-runs.md +0 -28
- package/knowledge/decisions/internals/cli-option-names-are-camelcase-in-state-and-kebab-on-the-command-line.md +0 -27
- package/knowledge/decisions/internals/cli-parse-errors-are-routed-by-message-prefix.md +0 -28
- package/knowledge/decisions/internals/cli-stdout-is-reserved-for-machine-readable-output.md +0 -34
- package/knowledge/decisions/internals/cli-unknown-long-options-warn-instead-of-failing.md +0 -29
- package/knowledge/decisions/internals/core-column-form-is-an-axis-of-its-own.md +0 -84
- package/knowledge/decisions/internals/core-data-classification-brand-is-an-optional-property.md +0 -41
- package/knowledge/decisions/internals/core-function-runner-restores-the-wire-fields-it-overwrites.md +0 -44
- package/knowledge/decisions/internals/core-hot-reload-merges-generated-meta-never-replaces-it.md +0 -39
- package/knowledge/decisions/internals/core-hot-reload-owns-its-module-registry.md +0 -42
- package/knowledge/decisions/internals/core-middleware-order-is-scope-then-priority.md +0 -39
- package/knowledge/decisions/internals/core-schema-defaults-apply-on-every-transport.md +0 -43
- package/knowledge/decisions/internals/core-scopes-are-an-and-gate-separate-from-permissions.md +0 -38
- package/knowledge/decisions/internals/core-state-is-a-global-map-written-only-at-registration-time.md +0 -44
- package/knowledge/decisions/internals/email-meta-is-read-uncached-because-codegen-rewrites-it-mid-session.md +0 -27
- package/knowledge/decisions/internals/feature-flag-declarations-refuse-an-empty-anyof-and-conflicting-scopes.md +0 -22
- package/knowledge/decisions/internals/feature-flags-fail-open-and-never-enforce-access.md +0 -28
- package/knowledge/decisions/internals/flag-sync-rewrites-only-the-declared-text.md +0 -24
- package/knowledge/decisions/internals/gateway-adapters-resolve-lazily-and-are-promise-cached.md +0 -32
- package/knowledge/decisions/internals/gateway-listener-middleware-runs-without-an-rpc-on-the-wire.md +0 -43
- package/knowledge/decisions/internals/gateway-webhook-challenges-echo-bytes-not-json.md +0 -28
- package/knowledge/decisions/internals/gateway-wiring-is-a-meta-wiring-over-http-and-channels.md +0 -31
- package/knowledge/decisions/internals/generated-src-paths-in-pikku-meta-are-absolute.md +0 -26
- package/knowledge/decisions/internals/global-middleware-resolves-from-the-root-namespace-too.md +0 -32
- package/knowledge/decisions/internals/hot-reload-reads-the-changed-source-never-a-compiled-copy.md +0 -38
- package/knowledge/decisions/internals/hot-reload-writes-into-the-function-map-captured-at-startup.md +0 -26
- package/knowledge/decisions/internals/http-request-bodies-are-read-once-and-shared.md +0 -32
- package/knowledge/decisions/internals/http-route-groups-cascade-config-in-a-fixed-order.md +0 -28
- package/knowledge/decisions/internals/http-router-matches-normalized-paths-but-returns-registered-ones.md +0 -30
- package/knowledge/decisions/internals/http-runner-logs-through-a-trace-scoped-logger-functions-do-not.md +0 -26
- package/knowledge/decisions/internals/http-set-cookie-headers-are-appended-never-joined.md +0 -28
- package/knowledge/decisions/internals/http-sse-streams-flush-headers-only-after-middleware.md +0 -32
- package/knowledge/decisions/internals/http-wiring-without-metadata-is-skipped-not-fatal.md +0 -26
- package/knowledge/decisions/internals/in-a-scenario-a-4xx-is-data-not-an-exception.md +0 -25
- package/knowledge/decisions/internals/in-memory-workflow-history-aliases-the-live-step-object.md +0 -26
- package/knowledge/decisions/internals/index.md +0 -181
- package/knowledge/decisions/internals/istanbul-statement-counts-attach-to-the-start-line-only.md +0 -25
- package/knowledge/decisions/internals/local-trigger-and-gateway-services-assume-a-single-process.md +0 -26
- package/knowledge/decisions/internals/mcp-wire-names-are-assigned-over-the-whole-registry.md +0 -39
- package/knowledge/decisions/internals/node-only-builtins-are-imported-dynamically.md +0 -24
- package/knowledge/decisions/internals/one-project-shape-check-two-validators.md +0 -53
- package/knowledge/decisions/internals/only-exposed-functions-enter-a-virtual-user-catalogue.md +0 -21
- package/knowledge/decisions/internals/queue-group-concurrency-keeps-one-shared-queue-fair.md +0 -28
- package/knowledge/decisions/internals/queue-jobs-always-carry-an-explicit-attempts-count.md +0 -27
- package/knowledge/decisions/internals/remote-addons-dispatch-over-http-instead-of-local-meta.md +0 -31
- package/knowledge/decisions/internals/role-names-cannot-contain-the-scope-separator.md +0 -30
- package/knowledge/decisions/internals/rpc-names-resolve-through-package-scope-before-root.md +0 -32
- package/knowledge/decisions/internals/scenario-agent-calls-sign-in-on-401-only.md +0 -31
- package/knowledge/decisions/internals/scenario-given-and-when-are-sugar-but-then-is-not.md +0 -24
- package/knowledge/decisions/internals/scenario-meta-lives-apart-from-app-meta-but-merges-when-read-off-disk.md +0 -26
- package/knowledge/decisions/internals/scenario-steps-return-drained-response-records.md +0 -27
- package/knowledge/decisions/internals/scenarios-live-in-files-named-for-them.md +0 -48
- package/knowledge/decisions/internals/scope-roots-may-be-co-declared-by-an-addon-and-its-host-app.md +0 -30
- package/knowledge/decisions/internals/serverless-channel-disconnect-must-tolerate-a-missing-channel.md +0 -28
- package/knowledge/decisions/internals/side-effects-are-an-allowlist-not-a-boolean.md +0 -34
- package/knowledge/decisions/internals/speech-synthesis-picks-a-voice-per-sentence-and-warns-once.md +0 -24
- package/knowledge/decisions/internals/the-agent-done-event-goes-through-the-middleware-and-is-awaited.md +0 -26
- package/knowledge/decisions/internals/the-api-report-pins-members-not-just-names.md +0 -43
- package/knowledge/decisions/internals/the-core-scope-validator-refuses-separator-wildcard-and-empty-segments.md +0 -22
- package/knowledge/decisions/internals/the-dev-queue-copies-prod-timing-and-serialization-semantics.md +0 -30
- package/knowledge/decisions/internals/the-ecosystem-entry-point-carries-the-adapter-surface.md +0 -83
- package/knowledge/decisions/internals/the-embedding-model-is-pinned-per-service-and-doc-query-embedding-is-split.md +0 -29
- package/knowledge/decisions/internals/the-in-memory-workflow-service-is-inline-only-and-single-process.md +0 -27
- package/knowledge/decisions/internals/the-kek-salt-is-scoped-to-the-key-version.md +0 -40
- package/knowledge/decisions/internals/the-mcp-handshake-is-challenged-only-when-every-target-is-gated.md +0 -29
- package/knowledge/decisions/internals/the-middleware-resolution-cache-is-deliberately-unbounded.md +0 -40
- package/knowledge/decisions/internals/the-per-invocation-rpc-view-is-a-class.md +0 -40
- package/knowledge/decisions/internals/the-pikku-user-id-resolves-in-a-fixed-order.md +0 -24
- package/knowledge/decisions/internals/the-runner-resolves-wire-services-itself.md +0 -31
- package/knowledge/decisions/internals/the-schema-service-is-never-stubbed.md +0 -26
- package/knowledge/decisions/internals/the-transcript-event-is-sent-ahead-of-the-run.md +0 -25
- package/knowledge/decisions/internals/the-virtual-user-catalogue-is-the-only-gate-on-what-may-be-called.md +0 -21
- package/knowledge/decisions/internals/the-virtual-user-prompt-says-json-because-of-json-object-mode.md +0 -22
- package/knowledge/decisions/internals/the-virtual-user-runtime-is-exported-from-the-virtual-user-entry-point.md +0 -28
- package/knowledge/decisions/internals/the-worker-disposition-is-the-one-that-is-not-testing.md +0 -22
- package/knowledge/decisions/internals/thread-history-records-the-transcript-not-the-audio.md +0 -25
- package/knowledge/decisions/internals/trigger-declaration-is-split-from-trigger-source.md +0 -33
- package/knowledge/decisions/internals/typed-secret-service-caches-for-the-process-lifetime.md +0 -26
- package/knowledge/decisions/internals/validate-checks-virtual-users-through-a-shared-module.md +0 -43
- package/knowledge/decisions/internals/validate-runs-checks-by-precondition.md +0 -115
- package/knowledge/decisions/internals/virtual-user-conversation-drives-the-target-through-a-transport-seam.md +0 -24
- package/knowledge/decisions/internals/virtual-user-conversation-verdicts-are-llm-self-evaluations.md +0 -25
- package/knowledge/decisions/internals/virtual-user-conversations-seed-a-hidden-kickoff-message.md +0 -23
- package/knowledge/decisions/internals/virtual-user-step-order-comes-from-insertion-order.md +0 -21
- package/knowledge/decisions/internals/virtual-users-are-declared-in-one-definevirtualusers-call-per-codebase.md +0 -30
- package/knowledge/decisions/internals/voice-output-speaks-unless-voice-input-explicitly-says-otherwise.md +0 -24
- package/knowledge/decisions/internals/webhook-delivery-history-records-every-attempt-best-effort.md +0 -26
- package/knowledge/decisions/internals/webhook-service-collaborators-are-constructor-args-not-locator-lookups.md +0 -25
- package/knowledge/decisions/internals/whether-a-run-is-inline-is-read-from-the-run-record.md +0 -58
- package/knowledge/decisions/internals/wiring-registries-erase-the-generics-their-wire-functions-capture.md +0 -35
- package/knowledge/decisions/internals/workflow-approval-expiry-is-decided-from-a-recorded-deadline.md +0 -34
- package/knowledge/decisions/internals/workflow-core-never-imports-a-browser-driver.md +0 -42
- package/knowledge/decisions/internals/workflow-dsl-meta-separates-runtime-expressions-from-literals.md +0 -38
- package/knowledge/decisions/internals/workflow-features-resolve-scenarios-by-object-identity.md +0 -29
- package/knowledge/decisions/internals/workflow-graph-inline-and-queued-runs-share-one-planner.md +0 -42
- package/knowledge/decisions/internals/workflow-graph-node-notes-are-excluded-from-the-graph-hash.md +0 -25
- package/knowledge/decisions/internals/workflow-inline-runs-report-their-run-id-before-they-can-fail.md +0 -29
- package/knowledge/decisions/internals/workflow-invocation-id-is-the-dedupe-key-not-step-id.md +0 -43
- package/knowledge/decisions/internals/workflow-queued-step-dispatch-requires-an-explicit-opt-in.md +0 -29
- package/knowledge/decisions/internals/workflow-queues-are-per-workflow-by-default.md +0 -42
- package/knowledge/decisions/internals/workflow-repeated-step-names-get-an-ordinal-suffix.md +0 -33
- package/knowledge/decisions/internals/workflow-replay-reads-its-steps-once-and-caches-only-the-immutable-half.md +0 -32
- package/knowledge/decisions/internals/workflow-retries-are-owned-by-the-workflow-not-the-queue.md +0 -31
- package/knowledge/decisions/internals/workflow-run-capabilities-are-extensions-not-subclasses.md +0 -39
- package/knowledge/decisions/internals/workflow-run-mirror-is-never-a-source-of-truth.md +0 -29
- package/knowledge/decisions/internals/workflow-run-polling-backs-off-to-the-callers-ceiling.md +0 -33
- package/knowledge/decisions/internals/workflow-run-timeline-is-a-pure-fold-over-durable-history.md +0 -37
- package/knowledge/decisions/internals/workflow-scenario-assertions-never-retry-and-record-one-step.md +0 -54
- package/knowledge/decisions/internals/workflow-scenario-hooks-are-a-scenario-only-affordance.md +0 -43
- package/knowledge/decisions/internals/workflow-scenario-prose-is-rendered-from-typed-calls-not-parsed-from-english.md +0 -32
- package/knowledge/decisions/internals/workflow-scenario-quarantine-reason-lives-in-code.md +0 -18
- package/knowledge/decisions/internals/workflow-scenario-step-targets-are-string-literals-for-the-inspector.md +0 -34
- package/knowledge/decisions/internals/workflow-step-compensation-runs-as-its-own-durable-step.md +0 -29
- package/knowledge/decisions/internals/workflow-step-dispatch-failure-is-transient-not-a-run-failure.md +0 -33
- package/knowledge/decisions/internals/workflow-step-lock-is-held-only-to-claim-the-step.md +0 -34
- package/knowledge/decisions/internals/workflow-step-rpc-name-is-provenance-only.md +0 -34
- package/knowledge/decisions/internals/workflow-suspend-and-approval-reasons-are-durable-step-identities.md +0 -38
- package/knowledge/decisions/internals/workflow-suspended-runs-keep-their-in-process-context.md +0 -30
- package/knowledge/decisions/security/a-bearer-token-checked-against-a-secret-reads-it-per-request.md +0 -26
- package/knowledge/decisions/security/a-call-without-a-session-raises-missing-session-not-forbidden.md +0 -20
- package/knowledge/decisions/security/a-caller-cookie-wins-over-the-jar-for-the-same-name.md +0 -23
- package/knowledge/decisions/security/a-channel-lifecycle-acts-as-the-socket-upgrade-session.md +0 -16
- package/knowledge/decisions/security/a-channel-requires-a-session-unless-it-says-auth-false.md +0 -26
- package/knowledge/decisions/security/a-credential-read-path-follows-its-declared-type-not-absence.md +0 -32
- package/knowledge/decisions/security/a-credential-type-is-a-literal-the-inspector-checks-at-declaration.md +0 -27
- package/knowledge/decisions/security/a-dropped-audit-write-is-always-logged.md +0 -28
- package/knowledge/decisions/security/a-first-party-cookie-is-written-only-after-its-purposes-consent.md +0 -33
- package/knowledge/decisions/security/a-function-never-receives-the-secret-service.md +0 -37
- package/knowledge/decisions/security/a-graph-run-starts-at-an-entry-node-the-graph-declared.md +0 -33
- package/knowledge/decisions/security/a-permission-gets-a-wire-it-cannot-reply-on.md +0 -33
- package/knowledge/decisions/security/a-public-function-says-so-with-auth-false.md +0 -34
- package/knowledge/decisions/security/a-readonly-session-reaches-only-readonly-functions.md +0 -25
- package/knowledge/decisions/security/a-scaffold-flag-says-a-surface-exists-not-who-may-call-it.md +0 -52
- package/knowledge/decisions/security/a-scheduled-virtual-user-run-needs-no-admin-at-run-time.md +0 -27
- package/knowledge/decisions/security/a-scoped-credential-view-is-limited-to-declared-names.md +0 -26
- package/knowledge/decisions/security/a-scoped-secret-view-reads-only-declared-keys-and-never-writes.md +0 -25
- package/knowledge/decisions/security/a-secret-is-sent-only-to-the-hosts-it-declares.md +0 -29
- package/knowledge/decisions/security/a-step-can-name-an-identity-no-virtual-user-holds-through-per-call-headers.md +0 -25
- package/knowledge/decisions/security/a-step-runs-the-function-the-workflow-dispatched-it-with.md +0 -37
- package/knowledge/decisions/security/a-stopped-run-by-id-skips-the-ownership-check.md +0 -24
- package/knowledge/decisions/security/a-vault-secret-redacts-on-serialization-and-throws-on-coercion.md +0 -29
- package/knowledge/decisions/security/a-virtual-user-catalogue-entry-is-filtered-by-scope-and-approval-is-denied-by-default.md +0 -30
- package/knowledge/decisions/security/a-virtual-user-environment-fails-closed.md +0 -38
- package/knowledge/decisions/security/a-virtual-user-is-never-offered-a-step-that-would-forge-its-own-oracle.md +0 -27
- package/knowledge/decisions/security/a-virtual-user-never-runs-against-production.md +0 -23
- package/knowledge/decisions/security/a-virtual-user-reads-its-roles-from-the-apps-own-rpc-before-better-auth.md +0 -27
- package/knowledge/decisions/security/a-virtual-user-run-treats-an-unresolved-environment-as-production.md +0 -41
- package/knowledge/decisions/security/a-virtual-user-scopes-are-expanded-from-its-roles-once-at-run-preparation.md +0 -25
- package/knowledge/decisions/security/a-virtual-user-whose-roles-drift-from-the-declaration-refuses-to-run.md +0 -32
- package/knowledge/decisions/security/a-workflow-run-is-read-and-approved-by-its-owner.md +0 -50
- package/knowledge/decisions/security/addon-auth-and-tags-only-tighten.md +0 -43
- package/knowledge/decisions/security/addon-config-gates-apply-only-at-the-namespaced-rpc-boundary.md +0 -52
- package/knowledge/decisions/security/addon-scopes-are-resolved-where-the-function-runs.md +0 -46
- package/knowledge/decisions/security/addon-screen-scopes-hide-and-do-not-enforce.md +0 -20
- package/knowledge/decisions/security/agent-approval-forwarding-requires-a-symbol-brand.md +0 -27
- package/knowledge/decisions/security/agent-credential-requests-are-symbol-branded.md +0 -37
- package/knowledge/decisions/security/agent-gate-requires-a-session-only-when-auth-is-true.md +0 -31
- package/knowledge/decisions/security/agent-ownership-failures-never-echo-the-resource.md +0 -23
- package/knowledge/decisions/security/agent-resume-re-runs-the-authorization-gate.md +0 -22
- package/knowledge/decisions/security/agent-sessionless-deployments-have-no-thread-ownership.md +0 -39
- package/knowledge/decisions/security/agent-thread-ownership-composes-the-session-principal.md +0 -30
- package/knowledge/decisions/security/agent-tool-filtering-reads-the-live-function-config.md +0 -24
- package/knowledge/decisions/security/an-addon-header-can-only-narrow-the-session.md +0 -26
- package/knowledge/decisions/security/an-addon-instance-reads-only-the-secrets-and-credentials-it-is-named.md +0 -33
- package/knowledge/decisions/security/an-addon-may-reach-only-itself-and-the-addons-it-uses.md +0 -16
- package/knowledge/decisions/security/an-agent-approval-is-claimed-before-the-tool-runs.md +0 -33
- package/knowledge/decisions/security/an-api-key-is-jwt-decoded-into-the-session.md +0 -26
- package/knowledge/decisions/security/an-approval-answer-outlives-the-run-it-answered.md +0 -59
- package/knowledge/decisions/security/an-empty-owners-constraint-matches-nothing.md +0 -30
- package/knowledge/decisions/security/an-exposed-ungated-function-is-a-codegen-warning.md +0 -52
- package/knowledge/decisions/security/an-external-virtual-user-caller-presents-one-signed-statement.md +0 -38
- package/knowledge/decisions/security/an-inbound-webhook-source-dispatches-only-verified-requests.md +0 -31
- package/knowledge/decisions/security/an-mcp-call-with-no-http-request-stays-anonymous.md +0 -18
- package/knowledge/decisions/security/an-mcp-refusal-is-decided-before-dispatch.md +0 -48
- package/knowledge/decisions/security/an-oauth2-credential-is-read-by-its-account-row.md +0 -40
- package/knowledge/decisions/security/an-omitted-user-id-addresses-the-platform-credential.md +0 -32
- package/knowledge/decisions/security/an-upload-is-counted-as-it-arrives-not-buffered-then-measured.md +0 -24
- package/knowledge/decisions/security/analytics-identity-is-stamped-from-the-session-not-the-event.md +0 -24
- package/knowledge/decisions/security/app-access-is-a-scope-tree-synthesised-from-virtual-users.md +0 -26
- package/knowledge/decisions/security/approval-policy-decides-who-answers-a-tool-call.md +0 -27
- package/knowledge/decisions/security/auth-false-on-a-session-function-warns-and-still-requires-one.md +0 -25
- package/knowledge/decisions/security/bearer-token-hashes-are-unpeppered-sha256.md +0 -18
- package/knowledge/decisions/security/consent-is-read-from-a-cookie-and-a-recognised-denial-counts-as-refusal.md +0 -29
- package/knowledge/decisions/security/console-addon-privileged-functions-gate-themselves.md +0 -84
- package/knowledge/decisions/security/core-safe-fetch-blocks-ssrf-by-host-literal-not-dns.md +0 -39
- package/knowledge/decisions/security/core-secrets-use-a-per-secret-dek-wrapped-by-a-kek.md +0 -37
- package/knowledge/decisions/security/cors-defaults-to-any-origin-and-refuses-the-wildcard-with-credentials.md +0 -22
- package/knowledge/decisions/security/credential-backends-share-one-conformance-suite-for-per-user-isolation.md +0 -29
- package/knowledge/decisions/security/each-stage-has-one-virtual-user-key-pair.md +0 -27
- package/knowledge/decisions/security/gateway-handlers-run-through-the-function-runner-gate.md +0 -41
- package/knowledge/decisions/security/gateway-middleware-sessions-must-be-bridged-onto-the-wire.md +0 -30
- package/knowledge/decisions/security/global-permissions-and-function-permissions-are-independent-gates.md +0 -40
- package/knowledge/decisions/security/hmac-verification-fails-closed-on-empty-inputs.md +0 -25
- package/knowledge/decisions/security/http-error-detail-is-withheld-from-clients-in-production.md +0 -33
- package/knowledge/decisions/security/http-request-bodies-are-bounded-before-they-are-buffered.md +0 -46
- package/knowledge/decisions/security/index.md +0 -135
- package/knowledge/decisions/security/local-content-refuses-private-buckets-under-the-public-segment.md +0 -21
- package/knowledge/decisions/security/mail-is-allowlisted-before-a-virtual-user-run-sees-it.md +0 -38
- package/knowledge/decisions/security/mcp-internal-error-details-are-double-gated-on-production.md +0 -27
- package/knowledge/decisions/security/mcp-resources-tools-and-prompts-take-sessionless-functions.md +0 -18
- package/knowledge/decisions/security/origin-locked-routes-match-the-origin-exactly.md +0 -22
- package/knowledge/decisions/security/oss-auth-works-without-pikku-studio-cloud.md +0 -26
- package/knowledge/decisions/security/outbound-webhooks-use-an-allowlist-when-configured.md +0 -24
- package/knowledge/decisions/security/passphrases-are-stretched-key-material-is-expanded.md +0 -40
- package/knowledge/decisions/security/permission-auth-filtering-requires-live-permission-functions.md +0 -31
- package/knowledge/decisions/security/pikku-carries-virtual-user-scopes-as-data-and-the-app-grants-them.md +0 -35
- package/knowledge/decisions/security/queue-job-identities-are-signed-at-enqueue.md +0 -69
- package/knowledge/decisions/security/queue-jobs-carry-the-producers-pikku-user-id.md +0 -39
- package/knowledge/decisions/security/remote-addon-tokens-are-client-credentials-not-mesh-trust.md +0 -34
- package/knowledge/decisions/security/scaffold-features-are-authenticated-unless-opted-out.md +0 -55
- package/knowledge/decisions/security/scenario-step-functions-are-never-externally-invocable.md +0 -30
- package/knowledge/decisions/security/scope-resolution-happens-at-the-session-boundary-and-sync-never-deletes.md +0 -28
- package/knowledge/decisions/security/scoped-content-access-is-a-root-folder-with-longest-prefix-grants.md +0 -31
- package/knowledge/decisions/security/self-authentication-is-declared-not-detected.md +0 -34
- package/knowledge/decisions/security/services-without-secrets-get-a-throwing-secrets-accessor.md +0 -22
- package/knowledge/decisions/security/shared-guards-refuse-to-mutate-or-shadow-a-system-role.md +0 -34
- package/knowledge/decisions/security/signed-content-urls-bind-the-request-path.md +0 -37
- package/knowledge/decisions/security/signed-uploads-are-verified-by-the-same-check-as-signed-reads.md +0 -26
- package/knowledge/decisions/security/system-role-scopes-must-be-declared-with-define-scope.md +0 -24
- package/knowledge/decisions/security/system-roles-are-additive-and-immutable.md +0 -16
- package/knowledge/decisions/security/the-channel-rpc-does-not-send-the-callers-session.md +0 -21
- package/knowledge/decisions/security/the-remote-jobs-inbox-fails-closed-without-a-secret.md +0 -24
- package/knowledge/decisions/security/the-remote-rpc-gate-fails-closed-and-binds-the-token-to-its-function.md +0 -34
- package/knowledge/decisions/security/the-workflow-status-stream-rechecks-ownership-on-every-poll.md +0 -16
- package/knowledge/decisions/security/two-credentials-on-one-key-must-share-a-read-mode.md +0 -29
- package/knowledge/decisions/security/verified-bearer-claims-are-pass-through-data-that-core-never-fills.md +0 -23
- package/knowledge/decisions/security/virtual-user-catalogue-excludes-the-machinery-that-runs-virtual-users.md +0 -25
- package/knowledge/decisions/security/virtual-user-conversation-missing-approval-decisions-default-to-denied.md +0 -22
- package/knowledge/decisions/security/virtual-user-run-records-are-gated-behind-a-read-scope.md +0 -18
- package/knowledge/decisions/security/virtual-user-sign-in-does-not-exist-in-production.md +0 -25
- package/knowledge/decisions/security/virtual-user-sign-in-has-one-door.md +0 -42
- package/knowledge/decisions/security/virtual-user-sign-in-is-proven-by-set-cookie-not-a-non-empty-jar.md +0 -29
- package/knowledge/decisions/security/virtual-user-sign-in-only-works-for-virtual-user-flagged-users.md +0 -29
- package/knowledge/decisions/security/webhook-bodies-are-signed-before-they-are-enqueued.md +0 -25
- package/knowledge/decisions/security/wire-addon-expose-selects-the-rpc-surface.md +0 -51
- package/knowledge/decisions/security/workflow-approval-payloads-are-validated-on-replay-inside-the-workflow.md +0 -40
- package/knowledge/decisions/security/workflow-helper-functions-are-sessionless-by-declaration.md +0 -18
- package/knowledge/decisions/security/workflow-queued-steps-rehydrate-their-session-from-the-run-wire.md +0 -32
- package/knowledge/decisions/security/workflow-scenario-sessions-are-isolated-per-virtual-user-and-per-scenario.md +0 -32
- package/knowledge/decisions/security/workflow-scenario-steps-are-never-network-invocable.md +0 -31
- package/knowledge/decisions/security/workflow-virtual-user-steps-always-use-the-real-transport.md +0 -34
- package/knowledge/decisions/security/writing-a-virtual-user-schedule-is-gated-by-its-own-scope.md +0 -18
- package/knowledge/index.md +0 -24
- package/knowledge/questions/a-bearer-jwt-with-no-identity-becomes-a-session.md +0 -24
- package/knowledge/questions/channel-middleware-accepts-bare-factories-that-nothing-resolves.md +0 -35
- package/knowledge/questions/dev-quick-login-as-impersonation.md +0 -25
- package/knowledge/questions/does-a-delayed-rpc-run-as-the-session-it-was-scheduled-with.md +0 -26
- package/knowledge/questions/does-a-user-id-with-a-colon-read-another-users-credentials.md +0 -27
- package/knowledge/questions/does-a-wirecli-command-need-a-session-by-default.md +0 -26
- package/knowledge/questions/does-an-adversarial-in-scope-success-count-as-a-finding.md +0 -26
- package/knowledge/questions/does-approve-step-need-the-run-owners-session-or-the-gates-approvers.md +0 -34
- package/knowledge/questions/does-cors-origin-true-reflect-any-origin-with-credentials.md +0 -20
- package/knowledge/questions/does-skip-user-session-do-anything-on-a-channel.md +0 -24
- package/knowledge/questions/does-the-store-session-match-the-other-two.md +0 -19
- package/knowledge/questions/index.md +0 -41
- package/knowledge/questions/is-the-agent-score-worker-reachable-without-a-session.md +0 -21
- package/knowledge/questions/live-scheduled-tests-may-write.md +0 -19
- package/knowledge/questions/provision-virtual-users-has-no-caller-in-this-repo.md +0 -23
- package/knowledge/questions/remote-secret-refuses-requests-without-a-remote-token-on-every-path.md +0 -32
- package/knowledge/questions/should-a-middleware-set-session-persist-to-the-store.md +0 -25
- package/knowledge/questions/should-a-scoped-secret-view-throw-from-has-secret-for-a-disallowed-key.md +0 -23
- package/knowledge/questions/should-a-wrong-bearer-token-be-anonymous-or-refused.md +0 -35
- package/knowledge/questions/should-an-empty-webhook-signing-secret-send-unsigned.md +0 -23
- package/knowledge/questions/should-http-virtual-user-sessions-reset-between-scenarios-in-one-run.md +0 -27
- package/knowledge/questions/should-the-cookie-jar-scope-cookies-to-the-api-origin.md +0 -26
- package/knowledge/questions/should-voice-input-fetch-audio-urls-without-a-host-allowlist.md +0 -20
- package/knowledge/questions/staging-impersonation-rules.md +0 -27
- package/knowledge/questions/unauthorized-channel-replies-escape-the-declared-out-type.md +0 -44
- package/knowledge/questions/virtual-user-keys-on-cloud-stages-are-pikku-studios-to-build.md +0 -34
- package/knowledge/questions/virtual-user-statement-replay-is-per-process.md +0 -20
- package/knowledge/questions/what-an-impersonated-session-carries.md +0 -22
- package/run-tests.sh +0 -68
- package/scripts/generate-api-report.d.mts +0 -1
- package/scripts/generate-api-report.mjs +0 -96
- package/scripts/generate-api-report.mts +0 -333
- package/src/public-surface.json +0 -637
- package/src/public-surface.json.README +0 -43
- /package/dist/{function/compensation-name.d.ts → compensation-name.d.ts} +0 -0
- /package/dist/{function/compensation-name.js → compensation-name.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
2
|
import type { CorePikkuFunctionConfig } from '../../function/functions.types.js';
|
|
3
3
|
import type { HmacAlgorithm, SecretEncoding } from '../../utils/hmac.js';
|
|
4
|
-
export
|
|
4
|
+
export { PIKKU_INCOMING_WEBHOOK_QUEUE_NAME } from '../../services/incoming-webhook-queue.js';
|
|
5
5
|
/** `github` → `githubWebhookSecret`, `microsoft-outlook` → `microsoftOutlookWebhookSecret`. */
|
|
6
6
|
export declare const webhookSecretCredentialName: (source: string) => string;
|
|
7
7
|
/** What every trigger source produces, whichever way it arrives. */
|
|
@@ -27,9 +27,11 @@ export type WebhookRequest = {
|
|
|
27
27
|
export type WebhookReceiveResult = {
|
|
28
28
|
events: TriggerEvent[];
|
|
29
29
|
};
|
|
30
|
+
/** The HTTP methods a webhook source can be mounted on. */
|
|
30
31
|
export type WebhookSourceMethod = 'post' | 'put' | 'get' | 'head';
|
|
31
32
|
/** Whatever `setup` wants back on the next deploy, for providers whose endpoints cannot be found by label. */
|
|
32
33
|
export type WebhookSourceState = Record<string, unknown>;
|
|
34
|
+
/** What a webhook source's `check` and `setup` steps are given. */
|
|
33
35
|
export type WebhookLifecycleInput = {
|
|
34
36
|
/** Always this deployment's own route: nothing can point it elsewhere. */
|
|
35
37
|
url: string;
|
|
@@ -39,6 +41,7 @@ export type WebhookLifecycleInput = {
|
|
|
39
41
|
events: string[];
|
|
40
42
|
previous?: WebhookSourceState;
|
|
41
43
|
};
|
|
44
|
+
/** Whether the provider-side registration matches what this deployment needs. */
|
|
42
45
|
export type WebhookCheckResult = {
|
|
43
46
|
status: 'ok';
|
|
44
47
|
} | {
|
|
@@ -47,6 +50,7 @@ export type WebhookCheckResult = {
|
|
|
47
50
|
status: 'drifted';
|
|
48
51
|
reason: string;
|
|
49
52
|
};
|
|
53
|
+
/** What `setup` did at the provider. */
|
|
50
54
|
export type WebhookSetupResult = {
|
|
51
55
|
status: 'created' | 'updated' | 'unchanged';
|
|
52
56
|
state?: WebhookSourceState;
|
|
@@ -56,10 +60,12 @@ export type WebhookSetupResult = {
|
|
|
56
60
|
status: 'manual';
|
|
57
61
|
instructions: string;
|
|
58
62
|
};
|
|
63
|
+
/** What a webhook source's `teardown` step is given. */
|
|
59
64
|
export type WebhookTeardownInput = {
|
|
60
65
|
label: string;
|
|
61
66
|
previous?: WebhookSourceState;
|
|
62
67
|
};
|
|
68
|
+
/** Whether `teardown` removed a registration or found none. */
|
|
63
69
|
export type WebhookTeardownResult = {
|
|
64
70
|
status: 'deleted' | 'absent';
|
|
65
71
|
};
|
|
@@ -98,6 +104,7 @@ export type WebhookVerify<Services = any> = {
|
|
|
98
104
|
type SourceFunction<In, Out> = CorePikkuFunctionConfig<any, any> & {
|
|
99
105
|
func: (services: any, data: In, wire: any) => Promise<Out>;
|
|
100
106
|
};
|
|
107
|
+
/** What `wireTriggerWebhookSource` takes. */
|
|
101
108
|
export type CoreTriggerWebhookSource<Events extends Record<string, StandardSchemaV1> = Record<string, StandardSchemaV1>> = {
|
|
102
109
|
/** Triggers subscribe to `<name>:<event>`. Unique across every kind of trigger source. */
|
|
103
110
|
name: string;
|
|
@@ -129,6 +136,9 @@ export type CoreTriggerWebhookSource<Events extends Record<string, StandardSchem
|
|
|
129
136
|
setup?: SourceFunction<WebhookLifecycleInput, WebhookSetupResult>;
|
|
130
137
|
teardown?: SourceFunction<WebhookTeardownInput, WebhookTeardownResult>;
|
|
131
138
|
};
|
|
139
|
+
/**
|
|
140
|
+
* Generated metadata for one webhook source: its route and the function ids of its lifecycle steps.
|
|
141
|
+
*/
|
|
132
142
|
export type WebhookSourceMeta = {
|
|
133
143
|
name: string;
|
|
134
144
|
method: WebhookSourceMethod | WebhookSourceMethod[];
|
|
@@ -139,6 +149,7 @@ export type WebhookSourceMeta = {
|
|
|
139
149
|
setup?: string;
|
|
140
150
|
teardown?: string;
|
|
141
151
|
};
|
|
152
|
+
/** Generated metadata for every webhook source, keyed by name. */
|
|
142
153
|
export type WebhookSourcesMeta = Record<string, WebhookSourceMeta>;
|
|
143
154
|
/** One queued event on its way to its trigger. */
|
|
144
155
|
export type WebhookSourceJob = {
|
|
@@ -147,4 +158,3 @@ export type WebhookSourceJob = {
|
|
|
147
158
|
/** Present when a store-backed service recorded the receipt. */
|
|
148
159
|
receiptId?: string;
|
|
149
160
|
};
|
|
150
|
-
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { PIKKU_INCOMING_WEBHOOK_QUEUE_NAME } from '../../services/incoming-webhook-queue.js';
|
|
2
2
|
/** `github` → `githubWebhookSecret`, `microsoft-outlook` → `microsoftOutlookWebhookSecret`. */
|
|
3
3
|
export const webhookSecretCredentialName = (source) => `${source.replace(/[-_]+([a-z0-9])/gi, (_, c) => c.toUpperCase())}WebhookSecret`;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { VariableDefinitions, VariableDefinitionsMeta } from './variable.types.js';
|
|
2
2
|
import type { SchemaRefLike } from '../../types/core.types.js';
|
|
3
3
|
export type { SchemaRefLike };
|
|
4
|
+
/**
|
|
5
|
+
* Merges the variable declarations the inspector found into meta keyed by name.
|
|
6
|
+
* Declarations that share a `variableId` must use the same schema.
|
|
7
|
+
*
|
|
8
|
+
* @throws Error when two declarations of one `variableId` disagree on schema.
|
|
9
|
+
* @internal Called by the CLI when generating meta.
|
|
10
|
+
*/
|
|
4
11
|
export declare function validateAndBuildVariableDefinitionsMeta(definitions: VariableDefinitions, schemaLookup: Map<string, SchemaRefLike>): VariableDefinitionsMeta;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merges the variable declarations the inspector found into meta keyed by name.
|
|
3
|
+
* Declarations that share a `variableId` must use the same schema.
|
|
4
|
+
*
|
|
5
|
+
* @throws Error when two declarations of one `variableId` disagree on schema.
|
|
6
|
+
* @internal Called by the CLI when generating meta.
|
|
7
|
+
*/
|
|
1
8
|
export function validateAndBuildVariableDefinitionsMeta(definitions, schemaLookup) {
|
|
2
9
|
const meta = {};
|
|
3
10
|
const variableIdToDefinition = new Map();
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The declaration {@link defineVariable} takes: a non-secret setting read from the
|
|
3
|
+
* environment. Anything sensitive belongs in {@link defineSecret} instead.
|
|
4
|
+
*/
|
|
1
5
|
export type CoreVariable<T = unknown> = {
|
|
2
6
|
/** How the variable is asked for in code. Generated into `VariablesMap`, so it is what `variables.get` autocompletes. */
|
|
3
7
|
name: string;
|
|
@@ -14,6 +18,7 @@ export type CoreVariable<T = unknown> = {
|
|
|
14
18
|
/** Where to go to work out what to set this to. */
|
|
15
19
|
docsUrl?: string;
|
|
16
20
|
};
|
|
21
|
+
/** A variable declaration as recorded in generated meta, with the schema replaced by its name. */
|
|
17
22
|
export type VariableDefinitionMeta = {
|
|
18
23
|
name: string;
|
|
19
24
|
displayName: string;
|
|
@@ -24,7 +29,9 @@ export type VariableDefinitionMeta = {
|
|
|
24
29
|
docsUrl?: string;
|
|
25
30
|
sourceFile?: string;
|
|
26
31
|
};
|
|
32
|
+
/** Variable declarations collected by the CLI, keyed by name. */
|
|
27
33
|
export type VariableDefinitionsMeta = Record<string, VariableDefinitionMeta>;
|
|
34
|
+
/** Variable declarations as the inspector found them, before de-duplication. */
|
|
28
35
|
export type VariableDefinitions = VariableDefinitionMeta[];
|
|
29
36
|
/**
|
|
30
37
|
* Declares an environment variable this project needs, with the shape of its
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export type ConversationApprovalPolicy = 'in-virtual-user' | 'always' | 'never';
|
|
2
|
+
/**
|
|
3
|
+
* What a scenario asks for when a virtual user holds a conversation with one of the app's agents.
|
|
4
|
+
*/
|
|
2
5
|
export interface ConverseOptions<TAgentName extends string = string> {
|
|
3
6
|
agent: TAgentName;
|
|
4
7
|
/** What the virtual user is trying to get the agent to accomplish. */
|
|
@@ -9,6 +12,7 @@ export interface ConverseOptions<TAgentName extends string = string> {
|
|
|
9
12
|
model?: string;
|
|
10
13
|
maxTurns?: number;
|
|
11
14
|
}
|
|
15
|
+
/** The virtual user's judgement of a conversation, with the transcript it judged. */
|
|
12
16
|
export interface ConversationVerdict {
|
|
13
17
|
passed: boolean;
|
|
14
18
|
reasoning: string;
|
|
@@ -26,6 +30,7 @@ export interface TargetAgentReply {
|
|
|
26
30
|
status?: 'completed' | 'suspended';
|
|
27
31
|
pendingApprovals?: TargetPendingApproval[];
|
|
28
32
|
}
|
|
33
|
+
/** Transport to the agent under test: sends a message, and answers its tool-approval requests. */
|
|
29
34
|
export interface TargetAgentDriver {
|
|
30
35
|
run(message: string): Promise<TargetAgentReply>;
|
|
31
36
|
approve(runId: string, decisions: {
|
|
@@ -3,6 +3,7 @@ import type { ResolvedVirtualUser } from '../../../services/virtual-users-servic
|
|
|
3
3
|
import type { AgentRunnerParams, AgentStepResult } from '../../../services/agent-runner-service.js';
|
|
4
4
|
/** The LLM call the virtual user uses for its own turns/decisions/evaluation. */
|
|
5
5
|
export type VirtualUserLLM = (params: AgentRunnerParams) => Promise<AgentStepResult>;
|
|
6
|
+
/** What `runConversation` needs to play one virtual user against one agent. */
|
|
6
7
|
export interface RunConversationParams {
|
|
7
8
|
/** The person being played — name, job title, personality. */
|
|
8
9
|
virtualUser: ResolvedVirtualUser;
|
|
@@ -27,6 +28,11 @@ export interface RunConversationParams {
|
|
|
27
28
|
/** Display name of the target agent (transcript labelling). */
|
|
28
29
|
agentName: string;
|
|
29
30
|
}
|
|
31
|
+
/** Read a structured `run` result, falling back to parsing JSON from text. */
|
|
32
|
+
export declare function readObject<T>(result: {
|
|
33
|
+
object?: unknown;
|
|
34
|
+
text?: string;
|
|
35
|
+
}): T | null;
|
|
30
36
|
/**
|
|
31
37
|
* Run a conversation: an LLM-driven virtual user holds a real multi-turn exchange
|
|
32
38
|
* with a target agent (driven via the injected transport), answers the target's
|
|
@@ -46,7 +46,7 @@ function msg(role, content) {
|
|
|
46
46
|
};
|
|
47
47
|
}
|
|
48
48
|
/** Read a structured `run` result, falling back to parsing JSON from text. */
|
|
49
|
-
function readObject(result) {
|
|
49
|
+
export function readObject(result) {
|
|
50
50
|
if (result.object && typeof result.object === 'object') {
|
|
51
51
|
return result.object;
|
|
52
52
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { ScenarioVirtualUser, ResolvedVirtualUser, ScenarioVirtualUsers, ScenarioInvokeOptions, ScenarioHttpResponse } from '
|
|
2
|
-
import type { ConverseOptions, ConversationVerdict } from '
|
|
3
|
-
import { type VirtualUserSignIn } from '
|
|
1
|
+
import type { ScenarioVirtualUser, ResolvedVirtualUser, ScenarioVirtualUsers, ScenarioInvokeOptions, ScenarioHttpResponse } from '../../services/virtual-users-service.js';
|
|
2
|
+
import type { ConverseOptions, ConversationVerdict } from './conversation/conversation.types.js';
|
|
3
|
+
import { type VirtualUserSignIn } from '../../services/virtual-user-sign-in.js';
|
|
4
|
+
/** How `createHttpVirtualUsers` reaches the target app and signs each virtual user in. */
|
|
4
5
|
export interface HttpVirtualUsersConfig {
|
|
5
6
|
/**
|
|
6
7
|
* Base API URL of the target app, INCLUDING the HTTP prefix — e.g.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { readScenarioHttpResponse } from '
|
|
2
|
-
import { runConversation } from '
|
|
3
|
-
import { createCookieJar, } from '
|
|
4
|
-
import { authMount } from '
|
|
5
|
-
import { getSingletonServices } from '
|
|
6
|
-
import { AIProviderNotConfiguredError } from '
|
|
1
|
+
import { readScenarioHttpResponse } from '../../services/virtual-users-service.js';
|
|
2
|
+
import { runConversation } from './conversation/run-conversation.js';
|
|
3
|
+
import { createCookieJar, } from '../../services/scenario-cookie-jar.js';
|
|
4
|
+
import { authMount, } from '../../services/virtual-user-sign-in.js';
|
|
5
|
+
import { getSingletonServices } from '../../pikku-state.js';
|
|
6
|
+
import { AIProviderNotConfiguredError } from '../../errors/errors.js';
|
|
7
7
|
/**
|
|
8
8
|
* Default HTTP-backed virtual user. Signs in lazily on first invoke, holds the
|
|
9
9
|
* session cookies for its lifetime, and re-logs-in once on a 401 mid-run (long
|
|
@@ -49,7 +49,7 @@ export type { CoreVirtualUser, CoreVirtualUsers, VirtualUserAccountMeta, Virtual
|
|
|
49
49
|
* imports services, which only a bundler could remove and an unbundled Node or
|
|
50
50
|
* Lambda deploy would load outright.
|
|
51
51
|
*/
|
|
52
|
-
export { HttpVirtualUser, createHttpVirtualUsers, type HttpVirtualUsersConfig, } from '
|
|
52
|
+
export { HttpVirtualUser, createHttpVirtualUsers, type HttpVirtualUsersConfig, } from './http-virtual-users.js';
|
|
53
53
|
export { statementSignIn, inProcessSignIn, authMount, type VirtualUserSignIn, type VirtualUserStatementMint, type StatementSignInOptions, type InProcessAuth, } from '../../services/virtual-user-sign-in.js';
|
|
54
54
|
export { createCookieJar, type ScenarioCookieJar, } from '../../services/scenario-cookie-jar.js';
|
|
55
55
|
export { postScenarioJson, readScenarioHttpResponse, } from '../../services/virtual-users-service.js';
|
|
@@ -23,7 +23,7 @@ export { APP_SCOPE_ROOT, appScopeId, buildAppScopeDefinition, } from './virtual-
|
|
|
23
23
|
* imports services, which only a bundler could remove and an unbundled Node or
|
|
24
24
|
* Lambda deploy would load outright.
|
|
25
25
|
*/
|
|
26
|
-
export { HttpVirtualUser, createHttpVirtualUsers, } from '
|
|
26
|
+
export { HttpVirtualUser, createHttpVirtualUsers, } from './http-virtual-users.js';
|
|
27
27
|
export { statementSignIn, inProcessSignIn, authMount, } from '../../services/virtual-user-sign-in.js';
|
|
28
28
|
export { createCookieJar, } from '../../services/scenario-cookie-jar.js';
|
|
29
29
|
export { postScenarioJson, readScenarioHttpResponse, } from '../../services/virtual-users-service.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ResolvedVirtualUser } from '../../services/virtual-users-service.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type VirtualUserLLM } from './conversation/run-conversation.js';
|
|
3
3
|
import { type VirtualUserTuning } from './virtual-user-dispositions.js';
|
|
4
4
|
import type { ApiCatalogueEntry, IntentSource, VirtualUserBudget, VirtualUserDisposition, VirtualUserFinding, VirtualUserRunResult, VirtualUserTally, VirtualUserTarget } from './virtual-user.types.js';
|
|
5
5
|
/** What an app-specific oracle is shown about one call. */
|
|
@@ -13,6 +13,7 @@ export interface VirtualUserCallContext {
|
|
|
13
13
|
step: number;
|
|
14
14
|
disposition: VirtualUserDisposition;
|
|
15
15
|
}
|
|
16
|
+
/** Everything one autonomous virtual-user run is given. */
|
|
16
17
|
export interface RunVirtualUserParams {
|
|
17
18
|
/** The person being run — name, job title, personality, goals. */
|
|
18
19
|
virtualUser: ResolvedVirtualUser;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readObject, } from './conversation/run-conversation.js';
|
|
1
2
|
import { getDurationInMilliseconds } from '../../time-utils.js';
|
|
2
3
|
import { catalogueIndex, catalogueLookup, describeEntry, isReadOnly, reachableCatalogue, renderCatalogue, } from './virtual-user-catalogue.js';
|
|
3
4
|
import { dispositionProfile, } from './virtual-user-dispositions.js';
|
|
@@ -39,20 +40,6 @@ const msg = (role, content) => ({
|
|
|
39
40
|
content,
|
|
40
41
|
createdAt: new Date(),
|
|
41
42
|
});
|
|
42
|
-
/** Read a structured result, falling back to parsing JSON out of the text. */
|
|
43
|
-
const readObject = (result) => {
|
|
44
|
-
if (result.object && typeof result.object === 'object')
|
|
45
|
-
return result.object;
|
|
46
|
-
if (result.text) {
|
|
47
|
-
try {
|
|
48
|
-
return JSON.parse(result.text);
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return null;
|
|
55
|
-
};
|
|
56
43
|
/**
|
|
57
44
|
* The arguments for a call, however the model chose to spell them.
|
|
58
45
|
*
|
|
@@ -120,9 +120,11 @@ export type CoreVirtualUser = {
|
|
|
120
120
|
};
|
|
121
121
|
/** Virtual users to declare, keyed by id. */
|
|
122
122
|
export type CoreVirtualUsers = Record<string, CoreVirtualUser>;
|
|
123
|
+
/** Generated metadata for the account a virtual user signs in with. */
|
|
123
124
|
export type VirtualUserAccountMeta = {
|
|
124
125
|
provider?: string;
|
|
125
126
|
};
|
|
127
|
+
/** Generated metadata for one declared virtual user. */
|
|
126
128
|
export type VirtualUserMeta = {
|
|
127
129
|
/** The key it was declared under. */
|
|
128
130
|
id: string;
|
|
@@ -146,5 +148,7 @@ export type VirtualUserMeta = {
|
|
|
146
148
|
app?: string;
|
|
147
149
|
sourceFile?: string;
|
|
148
150
|
};
|
|
151
|
+
/** Every declared virtual user, in declaration order. */
|
|
149
152
|
export type VirtualUserDefinitions = VirtualUserMeta[];
|
|
153
|
+
/** Generated metadata for every declared virtual user, keyed by id. */
|
|
150
154
|
export type VirtualUsersMeta = Record<string, VirtualUserMeta>;
|
|
@@ -3,7 +3,7 @@ import type { Logger } from '../../services/logger.js';
|
|
|
3
3
|
import type { MetaService } from '../../services/meta-service.js';
|
|
4
4
|
import type { VariablesService } from '../../services/variables-service.js';
|
|
5
5
|
import type { AgentRunnerService } from '../../services/agent-runner-service.js';
|
|
6
|
-
import type { HttpVirtualUsersConfig } from '
|
|
6
|
+
import type { HttpVirtualUsersConfig } from './http-virtual-users.js';
|
|
7
7
|
import type { ResolvedVirtualUser, ScenarioVirtualUsers } from '../../services/virtual-users-service.js';
|
|
8
8
|
import type { VirtualUserEnvironment } from '../virtual-user/virtual-user-environments.js';
|
|
9
9
|
import type { StepRecord, VirtualUserDisposition } from './virtual-user.types.js';
|
|
@@ -56,6 +56,11 @@ export declare const VIRTUAL_USER_VARIABLES: {
|
|
|
56
56
|
export declare const runnableVirtualUser: (virtualUsers: ScaffoldVirtualUsers, virtualUserId: string) => ResolvedVirtualUser;
|
|
57
57
|
/** The store, or the error naming the one to wire. */
|
|
58
58
|
export declare const requireVirtualUserRunStore: (store: VirtualUserRunStore | undefined, reading?: boolean) => VirtualUserRunStore;
|
|
59
|
+
/**
|
|
60
|
+
* The schedule store, or an error naming the one to wire.
|
|
61
|
+
*
|
|
62
|
+
* @throws Error when no `virtualUserScheduleStore` is wired.
|
|
63
|
+
*/
|
|
59
64
|
export declare const requireVirtualUserScheduleStore: (store: VirtualUserScheduleStore | undefined) => VirtualUserScheduleStore;
|
|
60
65
|
/** What a caller asked for, before the declaration fills in what it left out. */
|
|
61
66
|
export interface StartVirtualUserRunParams {
|
|
@@ -175,6 +180,9 @@ export declare const serializeVirtualUserSchedule: (schedule: VirtualUserSchedul
|
|
|
175
180
|
goals: string[];
|
|
176
181
|
};
|
|
177
182
|
};
|
|
183
|
+
/**
|
|
184
|
+
* What a request to create or change a virtual user's schedule carries. Omitted fields keep their current value.
|
|
185
|
+
*/
|
|
178
186
|
export interface WriteVirtualUserScheduleParams {
|
|
179
187
|
store: VirtualUserScheduleStore | undefined;
|
|
180
188
|
virtualUsers: ScaffoldVirtualUsers;
|
|
@@ -228,6 +236,7 @@ export declare const virtualUserScheduleRunInput: (schedule: VirtualUserSchedule
|
|
|
228
236
|
* otherwise the only trace that a virtual user is still out there working.
|
|
229
237
|
*/
|
|
230
238
|
export declare const logVirtualUserTick: (logger: Logger, result: VirtualUserTickResult) => void;
|
|
239
|
+
/** What the scaffolded run worker needs to execute one recorded virtual-user run. */
|
|
231
240
|
export interface ExecuteVirtualUserRunParams {
|
|
232
241
|
runStore: VirtualUserRunStore | undefined;
|
|
233
242
|
metaService: MetaService | undefined;
|
|
@@ -53,6 +53,11 @@ export const requireVirtualUserRunStore = (store, reading = false) => {
|
|
|
53
53
|
}
|
|
54
54
|
return store;
|
|
55
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* The schedule store, or an error naming the one to wire.
|
|
58
|
+
*
|
|
59
|
+
* @throws Error when no `virtualUserScheduleStore` is wired.
|
|
60
|
+
*/
|
|
56
61
|
export const requireVirtualUserScheduleStore = (store) => {
|
|
57
62
|
if (!store) {
|
|
58
63
|
throw new Error(MISSING_SCHEDULE_STORE);
|
|
@@ -21,6 +21,7 @@ export declare const STALE_RUN_AFTER_MS: number;
|
|
|
21
21
|
* not the one that finds the most.
|
|
22
22
|
*/
|
|
23
23
|
export declare const DEFAULT_MIN_INTERVAL_MS: number;
|
|
24
|
+
/** The upper bound of the default cadence; see {@link DEFAULT_MIN_INTERVAL_MS}. */
|
|
24
25
|
export declare const DEFAULT_MAX_INTERVAL_MS: number;
|
|
25
26
|
/** Whether a row is the tick's business, for stores that cannot ask in a query. */
|
|
26
27
|
export declare const isDue: (schedule: VirtualUserScheduleRecord, now: Date) => boolean;
|
|
@@ -33,6 +34,9 @@ export declare const isDue: (schedule: VirtualUserScheduleRecord, now: Date) =>
|
|
|
33
34
|
*/
|
|
34
35
|
export declare const nextRunAt: (schedule: Pick<VirtualUserScheduleRecord, 'minIntervalMs' | 'maxIntervalMs'>, now: Date, random: () => number) => Date;
|
|
35
36
|
export type VirtualUserSkipReason = 'in-flight' | 'dispatch-failed' | 'claimed-elsewhere';
|
|
37
|
+
/**
|
|
38
|
+
* What one scheduling tick did: runs started, virtual users skipped and why, and stranded runs reaped.
|
|
39
|
+
*/
|
|
36
40
|
export interface VirtualUserTickResult {
|
|
37
41
|
dispatched: {
|
|
38
42
|
virtualUserId: string;
|
|
@@ -45,6 +49,7 @@ export interface VirtualUserTickResult {
|
|
|
45
49
|
/** Runs found stranded at `running` and marked failed. */
|
|
46
50
|
reaped: string[];
|
|
47
51
|
}
|
|
52
|
+
/** The stores a scheduling tick reads and the callback that starts a run. */
|
|
48
53
|
export interface VirtualUserTickParams {
|
|
49
54
|
schedules: VirtualUserScheduleStore;
|
|
50
55
|
runs: VirtualUserRunStore;
|
|
@@ -19,6 +19,7 @@ export const STALE_RUN_AFTER_MS = 2 * 60 * 60 * 1000;
|
|
|
19
19
|
* not the one that finds the most.
|
|
20
20
|
*/
|
|
21
21
|
export const DEFAULT_MIN_INTERVAL_MS = 6 * 60 * 60 * 1000;
|
|
22
|
+
/** The upper bound of the default cadence; see {@link DEFAULT_MIN_INTERVAL_MS}. */
|
|
22
23
|
export const DEFAULT_MAX_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
23
24
|
/** Whether a row is the tick's business, for stores that cannot ask in a query. */
|
|
24
25
|
export const isDue = (schedule, now) => schedule.enabled && schedule.nextRunAt.getTime() <= now.getTime();
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ScenarioVirtualUser } from '../../services/virtual-users-service.js';
|
|
2
2
|
import type { VirtualUserTarget } from './virtual-user.types.js';
|
|
3
|
+
/** Options for `virtualUserTarget`. */
|
|
3
4
|
export interface VirtualUserTargetOptions {
|
|
4
5
|
/** Model the virtual user uses for its side of a conversation with an agent. */
|
|
5
6
|
model?: string;
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
2
|
import type { Safe } from '../../classification/secret-value.js';
|
|
3
3
|
import type { SendWebhookInput, SendWebhookResult, WebhookService } from '../../services/webhook-service.js';
|
|
4
|
+
/** An outgoing webhook event your app sends: its event name, a title and description for docs, and the schema its payload must satisfy. */
|
|
4
5
|
export type CoreOutgoingWebhook<Event extends string = string, Payload extends StandardSchemaV1 = StandardSchemaV1> = {
|
|
5
6
|
event: Event;
|
|
6
7
|
title: string;
|
|
7
8
|
description?: string;
|
|
8
9
|
payload: Payload;
|
|
9
10
|
};
|
|
11
|
+
/** Generated metadata for one outgoing webhook event. */
|
|
10
12
|
export type OutgoingWebhookMeta = {
|
|
11
13
|
event: string;
|
|
12
14
|
title: string;
|
|
@@ -15,14 +17,32 @@ export type OutgoingWebhookMeta = {
|
|
|
15
17
|
exportedName?: string;
|
|
16
18
|
sourceFile?: string;
|
|
17
19
|
};
|
|
20
|
+
/** Generated metadata for every outgoing webhook event, keyed by event name. */
|
|
18
21
|
export type OutgoingWebhooksMeta = Record<string, OutgoingWebhookMeta>;
|
|
22
|
+
/** The payload type of an outgoing webhook, inferred from its schema's input type. */
|
|
19
23
|
export type OutgoingWebhookPayloadOf<W> = W extends CoreOutgoingWebhook<string, infer S> ? StandardSchemaV1.InferInput<S> : never;
|
|
24
|
+
/** Resolves the `data` a {@link TypedWebhookService.send} call must carry for its `event`: the event's payload when it is a known event, unconstrained otherwise. */
|
|
20
25
|
export type OutgoingWebhookDataFor<TMap, Input> = Input extends {
|
|
21
26
|
event: infer Event;
|
|
22
27
|
} ? Event extends keyof TMap ? {
|
|
23
28
|
data: Safe<TMap[Event]>;
|
|
24
29
|
} : unknown : unknown;
|
|
30
|
+
/**
|
|
31
|
+
* A `WebhookService` whose `send` checks `data` against the payload of the named event. An app's generated types supply the event-to-payload map.
|
|
32
|
+
*
|
|
33
|
+
* `data` must be {@link Safe}: a payload with a `SecretValue` anywhere in it
|
|
34
|
+
* fails to compile rather than being sent to a third party.
|
|
35
|
+
*/
|
|
25
36
|
export interface TypedWebhookService<TMap = Record<string, unknown>> extends Omit<WebhookService, 'send'> {
|
|
26
37
|
send<const T extends SendWebhookInput>(input: Safe<T> & OutgoingWebhookDataFor<TMap, T>): Promise<SendWebhookResult>;
|
|
27
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Declares an outgoing webhook event and its payload schema. Returns the definition unchanged.
|
|
41
|
+
*
|
|
42
|
+
* `pikku` collects these into the generated event-to-payload map, which is what
|
|
43
|
+
* makes `webhookService.send({ event, data })` type-check `data` against the
|
|
44
|
+
* schema. Defining an event does not send anything or register a URL.
|
|
45
|
+
*
|
|
46
|
+
* @param webhook - The event name, title, optional description, and payload schema.
|
|
47
|
+
*/
|
|
28
48
|
export declare const defineOutgoingWebhook: <const Event extends string, Payload extends StandardSchemaV1>(webhook: CoreOutgoingWebhook<Event, Payload>) => CoreOutgoingWebhook<Event, Payload>;
|
|
@@ -1 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declares an outgoing webhook event and its payload schema. Returns the definition unchanged.
|
|
3
|
+
*
|
|
4
|
+
* `pikku` collects these into the generated event-to-payload map, which is what
|
|
5
|
+
* makes `webhookService.send({ event, data })` type-check `data` against the
|
|
6
|
+
* schema. Defining an event does not send anything or register a URL.
|
|
7
|
+
*
|
|
8
|
+
* @param webhook - The event name, title, optional description, and payload schema.
|
|
9
|
+
*/
|
|
1
10
|
export const defineOutgoingWebhook = (webhook) => webhook;
|
|
@@ -528,10 +528,7 @@ export interface WorkflowStepWire {
|
|
|
528
528
|
*/
|
|
529
529
|
fromInvocationId?: string;
|
|
530
530
|
}
|
|
531
|
-
/**
|
|
532
|
-
* Workflow wire object for DSL workflows
|
|
533
|
-
* Provides workflow-specific capabilities to function execution
|
|
534
|
-
*/
|
|
531
|
+
/** The outcome of the forward call a `compensate` function is undoing. */
|
|
535
532
|
export type CompensatingFor<Out = unknown> = {
|
|
536
533
|
ok: true;
|
|
537
534
|
output: Out;
|
|
@@ -542,6 +539,10 @@ export type CompensatingFor<Out = unknown> = {
|
|
|
542
539
|
error: SerializedError;
|
|
543
540
|
stepName?: string;
|
|
544
541
|
};
|
|
542
|
+
/**
|
|
543
|
+
* Workflow wire object for DSL workflows
|
|
544
|
+
* Provides workflow-specific capabilities to function execution
|
|
545
|
+
*/
|
|
545
546
|
export interface PikkuWorkflowWire {
|
|
546
547
|
/**
|
|
547
548
|
* Set only while a function's `compensate` is running: the outcome of the
|
|
@@ -583,6 +584,9 @@ export interface PikkuWorkflowWire {
|
|
|
583
584
|
* context would reject every wire whose scenario output differs from it.
|
|
584
585
|
*/
|
|
585
586
|
export type ScenarioContext<Out = unknown> = 0 extends 1 & Out ? any : Out extends object ? Partial<Out> : Record<string, unknown>;
|
|
587
|
+
/**
|
|
588
|
+
* The workflow wire a scenario body receives: every workflow step, plus the expectation steps and the shared `context`.
|
|
589
|
+
*/
|
|
586
590
|
export interface PikkuScenarioWire<Out = unknown> extends PikkuWorkflowWire {
|
|
587
591
|
/**
|
|
588
592
|
* Scratch the body writes and the `before`/`after` hooks read. A hook is a
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers a workflow under its generated name. Called by generated code; an
|
|
3
|
+
* app declares workflows with `pikkuWorkflowFunc` and its relatives instead.
|
|
4
|
+
* Skipped with a warning when no metadata was generated for the name.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
1
8
|
export declare const addWorkflow: (workflowName: string, workflowFunc: any, packageName?: string | null) => void;
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { pikkuState } from '../../../pikku-state.js';
|
|
2
2
|
import { addFunction } from '../../../function/function-runner.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers a workflow under its generated name. Called by generated code; an
|
|
5
|
+
* app declares workflows with `pikkuWorkflowFunc` and its relatives instead.
|
|
6
|
+
* Skipped with a warning when no metadata was generated for the name.
|
|
7
|
+
*
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
3
10
|
export const addWorkflow = (workflowName, workflowFunc, packageName = null) => {
|
|
4
11
|
const meta = pikkuState(packageName, 'workflows', 'meta');
|
|
5
12
|
const workflowMeta = meta[workflowName];
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import type { CoreWorkflow } from './workflow.types.js';
|
|
2
2
|
import type { CoreFeature, FeaturePlanEntry } from './scenario.types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Registers a scenario feature. Called by generated code for each `pikkuFeature`.
|
|
5
|
+
*
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
3
8
|
export declare const addFeature: (featureId: string, feature: CoreFeature, packageName?: string | null) => void;
|
|
9
|
+
/**
|
|
10
|
+
* Matches each feature's scenarios to the workflow names they are registered
|
|
11
|
+
* under, merging feature and scenario tags. Entries that name a scenario no
|
|
12
|
+
* workflow registration holds come back in `unresolved`.
|
|
13
|
+
*
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
4
16
|
export declare const resolveFeatureScenarios: (features: Map<string, CoreFeature>, registrations: Map<string, CoreWorkflow>) => {
|
|
5
17
|
entries: FeaturePlanEntry[];
|
|
6
18
|
unresolved: Array<{
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { pikkuState } from '../../pikku-state.js';
|
|
2
|
+
/**
|
|
3
|
+
* Registers a scenario feature. Called by generated code for each `pikkuFeature`.
|
|
4
|
+
*
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
2
7
|
export const addFeature = (featureId, feature, packageName = null) => {
|
|
3
8
|
pikkuState(packageName, 'workflows', 'features').set(featureId, feature);
|
|
4
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Matches each feature's scenarios to the workflow names they are registered
|
|
12
|
+
* under, merging feature and scenario tags. Entries that name a scenario no
|
|
13
|
+
* workflow registration holds come back in `unresolved`.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
5
17
|
export const resolveFeatureScenarios = (features, registrations) => {
|
|
6
18
|
const nameByConfig = new Map();
|
|
7
19
|
for (const [name, registration] of registrations) {
|
|
@@ -15,6 +15,11 @@ export type TypedRef<T> = RefValue & {
|
|
|
15
15
|
type InputWithRefs<T> = {
|
|
16
16
|
[K in keyof T]: T[K] | TypedRef<T[K]>;
|
|
17
17
|
};
|
|
18
|
+
/**
|
|
19
|
+
* Builds a typed graph-node map for a set of RPCs: given a node-id → RPC-name
|
|
20
|
+
* map and per-node settings, returns the {@link GraphNodeConfig} for every node,
|
|
21
|
+
* with refs typed against each RPC's input and output.
|
|
22
|
+
*/
|
|
18
23
|
export declare function createGraph<RPCMap extends Record<string, RPCHandler>>(): <const FuncMap extends Record<string, keyof RPCMap & string>>(funcMap: FuncMap, nodesOrBuilder?: GraphNodeConfigMap<FuncMap, RPCMap> | ((nodes: FuncMap) => GraphNodeConfigMap<FuncMap, RPCMap>)) => Record<Extract<keyof FuncMap, string>, GraphNodeConfig<Extract<keyof FuncMap, string>>>;
|
|
19
24
|
type GraphNodeConfigMap<FuncMap extends Record<string, string>, RPCMap extends Record<string, RPCHandler>> = {
|
|
20
25
|
[K in Extract<keyof FuncMap, string>]?: {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a typed graph-node map for a set of RPCs: given a node-id → RPC-name
|
|
3
|
+
* map and per-node settings, returns the {@link GraphNodeConfig} for every node,
|
|
4
|
+
* with refs typed against each RPC's input and output.
|
|
5
|
+
*/
|
|
1
6
|
export function createGraph() {
|
|
2
7
|
return (funcMap, nodesOrBuilder) => {
|
|
3
8
|
if (!nodesOrBuilder) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** A string interpolated at run time from other nodes' outputs, as `template` builds it. */
|
|
1
2
|
export type TemplateString = {
|
|
2
3
|
$template: {
|
|
3
4
|
parts: string[];
|
|
@@ -9,6 +10,11 @@ export type TemplateString = {
|
|
|
9
10
|
} & {
|
|
10
11
|
__brand: 'TemplateString';
|
|
11
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* Builds a {@link TemplateString} for a graph node's input: each `$0`, `$1`, …
|
|
15
|
+
* in `templateStr` is replaced at run time by the value of the ref at that
|
|
16
|
+
* index. An index with no ref resolves to an unknown ref.
|
|
17
|
+
*/
|
|
12
18
|
export declare function template(templateStr: string, refs: Array<{
|
|
13
19
|
$ref: string;
|
|
14
20
|
path?: string;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds a {@link TemplateString} for a graph node's input: each `$0`, `$1`, …
|
|
3
|
+
* in `templateStr` is replaced at run time by the value of the ref at that
|
|
4
|
+
* index. An index with no ref resolves to an unknown ref.
|
|
5
|
+
*/
|
|
1
6
|
export function template(templateStr, refs) {
|
|
2
7
|
const parts = [];
|
|
3
8
|
const expressions = [];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** What `pikkuWorkflowGraph` takes. */
|
|
1
2
|
export interface PikkuWorkflowGraphConfig<FuncMap extends Record<string, string>, T> {
|
|
2
3
|
/** Keeps the graph in the codebase but out of the build. */
|
|
3
4
|
disabled?: true;
|
|
@@ -14,6 +15,7 @@ export interface PikkuWorkflowGraphConfig<FuncMap extends Record<string, string>
|
|
|
14
15
|
/** Free text carried onto the rendered graph, for a reader who needs the reasoning the shape cannot show. */
|
|
15
16
|
notes?: string[];
|
|
16
17
|
}
|
|
18
|
+
/** The marker `pikkuWorkflowGraph` returns; the graph itself is read from source by `pikku all`. */
|
|
17
19
|
export interface PikkuWorkflowGraphResult {
|
|
18
20
|
__type: 'pikkuWorkflowGraph';
|
|
19
21
|
name?: string;
|
|
@@ -21,4 +23,14 @@ export interface PikkuWorkflowGraphResult {
|
|
|
21
23
|
tags?: string[];
|
|
22
24
|
notes?: string[];
|
|
23
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Declares a workflow as a graph: each node names an RPC, and `config` says what
|
|
28
|
+
* feeds it and which nodes run next. The shape is data, so the console can draw
|
|
29
|
+
* it and a run records which branch it took.
|
|
30
|
+
*
|
|
31
|
+
* The inspector reads the graph from source at build time; at runtime this only
|
|
32
|
+
* returns a marker carrying the descriptive fields.
|
|
33
|
+
*
|
|
34
|
+
* @example snippet: workflowGraph
|
|
35
|
+
*/
|
|
24
36
|
export declare function pikkuWorkflowGraph<const FuncMap extends Record<string, string>>(config: PikkuWorkflowGraphConfig<FuncMap, any>): PikkuWorkflowGraphResult;
|