@pikku/core 0.12.107 → 0.12.111
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 +344 -0
- package/dist/analytics/analytics.d.ts +6 -0
- package/dist/analytics/analytics.js +58 -0
- package/dist/analytics/analytics.types.d.ts +156 -0
- package/dist/analytics/analytics.types.js +1 -0
- package/dist/analytics/anonymous-analytics-identity.d.ts +23 -0
- package/dist/analytics/anonymous-analytics-identity.js +27 -0
- package/dist/analytics/compose-analytics-identity.d.ts +14 -0
- package/dist/analytics/compose-analytics-identity.js +33 -0
- package/dist/analytics/cookie-analytics-identity.d.ts +24 -0
- package/dist/analytics/cookie-analytics-identity.js +37 -0
- package/dist/analytics/define-analytics-events.d.ts +22 -0
- package/dist/analytics/define-analytics-events.js +9 -0
- package/dist/analytics/fan-out-analytics.d.ts +15 -0
- package/dist/analytics/fan-out-analytics.js +36 -0
- package/dist/analytics/index.d.ts +13 -0
- package/dist/analytics/index.js +8 -0
- package/dist/analytics/logger-analytics-service.d.ts +14 -0
- package/dist/analytics/logger-analytics-service.js +23 -0
- package/dist/analytics/mint-cookie.d.ts +44 -0
- package/dist/analytics/mint-cookie.js +55 -0
- package/dist/errors/errors.d.ts +7 -0
- package/dist/errors/errors.js +17 -0
- package/dist/function/function-meta.types.d.ts +2 -0
- package/dist/function/function-runner.js +29 -0
- package/dist/function/functions.types.d.ts +22 -3
- package/dist/middleware/auth-apikey.d.ts +1 -1
- package/dist/pikku-state.d.ts +1 -1
- package/dist/scopes.d.ts +11 -0
- package/dist/scopes.js +17 -0
- package/dist/services/credential-wire-service.d.ts +1 -1
- package/dist/services/feature-flag-service.d.ts +100 -0
- package/dist/services/feature-flag-service.js +1 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/meta-service.d.ts +16 -0
- package/dist/services/meta-service.js +19 -0
- package/dist/services/webhook-service.d.ts +7 -2
- package/dist/services/webhook-service.js +11 -6
- package/dist/testing/service-tests/agent-run-service-tests.d.ts +2 -2
- package/dist/testing/service-tests/agent-storage-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/channel-store-tests.d.ts +1 -1
- package/dist/testing/service-tests/credential-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/deployment-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/event-hub-store-tests.d.ts +1 -1
- package/dist/testing/service-tests/secret-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/session-store-tests.d.ts +1 -1
- package/dist/testing/service-tests/workflow-run-service-tests.d.ts +1 -1
- package/dist/testing/service-tests/workflow-service-tests.d.ts +1 -1
- package/dist/types/core.types.d.ts +23 -0
- package/dist/wirings/agent/agent-rpc.d.ts +1 -1
- package/dist/wirings/agent/agent-turn.d.ts +1 -1
- package/dist/wirings/agent-scorer/agent-scorer-live.d.ts +1 -1
- package/dist/wirings/channel/channel-common.d.ts +1 -1
- package/dist/wirings/channel/channel-rpc-validators.d.ts +2 -2
- package/dist/wirings/channel/channel-runner.d.ts +1 -1
- package/dist/wirings/channel/local/local-channel-runner.d.ts +1 -1
- package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +1 -1
- package/dist/wirings/cli/channel/cli-approval.d.ts +2 -2
- package/dist/wirings/flag/assert-feature-available.d.ts +15 -0
- package/dist/wirings/flag/assert-feature-available.js +23 -0
- package/dist/wirings/flag/cached-flag-source.d.ts +73 -0
- package/dist/wirings/flag/cached-flag-source.js +96 -0
- package/dist/wirings/flag/define-feature-flags.d.ts +33 -0
- package/dist/wirings/flag/define-feature-flags.js +32 -0
- package/dist/wirings/flag/flag.types.d.ts +97 -0
- package/dist/wirings/flag/flag.types.js +1 -0
- package/dist/wirings/flag/index.d.ts +7 -0
- package/dist/wirings/flag/index.js +5 -0
- package/dist/wirings/flag/resolve-flag.d.ts +52 -0
- package/dist/wirings/flag/resolve-flag.js +90 -0
- package/dist/wirings/flag/validate-flag-definitions.d.ts +26 -0
- package/dist/wirings/flag/validate-flag-definitions.js +103 -0
- package/dist/wirings/virtual-user/virtual-user-scaffold.d.ts +8 -8
- package/dist/wirings/virtual-user/virtual-user-schedule.d.ts +1 -1
- package/dist/wirings/workflow/workflow-queue-routing.d.ts +1 -1
- package/package.json +11 -5
- package/run-tests.sh +17 -9
- package/src/public-surface.json +26 -0
- package/src/agent-naming.test.ts +0 -68
- package/src/api-report.test.ts +0 -138
- package/src/app-alias-surface.test.ts +0 -179
- package/src/app-leaf-surface.test.ts +0 -222
- package/src/bootstrap-compat/root.ts +0 -20
- package/src/classification/column-form.test.ts +0 -97
- package/src/classification/column-form.ts +0 -55
- package/src/classification/data-classification.ts +0 -73
- package/src/classification/index.ts +0 -40
- package/src/classification/key-ids.ts +0 -2
- package/src/classification/secret-value.test.ts +0 -204
- package/src/classification/secret-value.ts +0 -106
- package/src/crypto-utils.test.ts +0 -668
- package/src/crypto-utils.ts +0 -460
- package/src/dev/hot-reload.test.ts +0 -587
- package/src/dev/hot-reload.ts +0 -225
- package/src/dev/module-runner.test.ts +0 -235
- package/src/dev/module-runner.ts +0 -138
- package/src/dev/reload-meta.test.ts +0 -183
- package/src/dev/reload-meta.ts +0 -144
- package/src/ecosystem-tier-removed.test.ts +0 -72
- package/src/env.ts +0 -1
- package/src/errors/error-handler.ts +0 -77
- package/src/errors/error.test.ts +0 -229
- package/src/errors/errors.ts +0 -393
- package/src/errors/index.ts +0 -11
- package/src/errors/serialized-error.ts +0 -12
- package/src/factory-functions.test.ts +0 -111
- package/src/function/abort-scope.test.ts +0 -97
- package/src/function/abort-scope.ts +0 -80
- package/src/function/function-meta.types.ts +0 -151
- package/src/function/function-runner.test.ts +0 -1619
- package/src/function/function-runner.ts +0 -499
- package/src/function/functions.types.ts +0 -319
- package/src/function/index.ts +0 -40
- package/src/function/list.types.test.ts +0 -100
- package/src/function/list.types.ts +0 -69
- package/src/function/pikku-request.test.ts +0 -35
- package/src/function/pikku-request.ts +0 -17
- package/src/gopass-secrets-removed.test.ts +0 -51
- package/src/handle-error.test.ts +0 -532
- package/src/handle-error.ts +0 -64
- package/src/middleware/auth-apikey.test.ts +0 -362
- package/src/middleware/auth-apikey.ts +0 -39
- package/src/middleware/auth-bearer.test.ts +0 -566
- package/src/middleware/auth-bearer.ts +0 -83
- package/src/middleware/auth-cookie.test.ts +0 -572
- package/src/middleware/auth-cookie.ts +0 -107
- package/src/middleware/cors.test.ts +0 -579
- package/src/middleware/cors.ts +0 -103
- package/src/middleware/index.ts +0 -30
- package/src/middleware/middleware-factories.ts +0 -76
- package/src/middleware/middleware.types.ts +0 -61
- package/src/middleware/remote-auth.test.ts +0 -547
- package/src/middleware/remote-auth.ts +0 -95
- package/src/middleware/remote-jobs-secret.ts +0 -35
- package/src/middleware/require-origin.test.ts +0 -115
- package/src/middleware/require-origin.ts +0 -79
- package/src/middleware/telemetry.ts +0 -83
- package/src/middleware-runner.test.ts +0 -578
- package/src/middleware-runner.ts +0 -232
- package/src/no-any-casts.test.ts +0 -57
- package/src/no-root-barrel.test.ts +0 -122
- package/src/permissions.test.ts +0 -256
- package/src/permissions.ts +0 -217
- package/src/pikku-state.test.ts +0 -198
- package/src/pikku-state.ts +0 -206
- package/src/production-barrels-stay-lean.test.ts +0 -110
- package/src/public-surface.test.ts +0 -133
- package/src/remote.test.ts +0 -173
- package/src/remote.ts +0 -56
- package/src/removed-legacy-exports.test.ts +0 -66
- package/src/run-tests-script.test.ts +0 -67
- package/src/schema.test.ts +0 -430
- package/src/schema.ts +0 -204
- package/src/scopes.test.ts +0 -203
- package/src/scopes.ts +0 -67
- package/src/services/agent-run-state-service.ts +0 -37
- package/src/services/agent-runner-service.ts +0 -238
- package/src/services/agent-storage-service.ts +0 -39
- package/src/services/ai-embedding-service.ts +0 -9
- package/src/services/audit-service.test.ts +0 -44
- package/src/services/audit-service.ts +0 -280
- package/src/services/content-service.ts +0 -65
- package/src/services/credential-service.ts +0 -20
- package/src/services/credential-wire-service.test.ts +0 -235
- package/src/services/credential-wire-service.ts +0 -120
- package/src/services/deployment-service.ts +0 -32
- package/src/services/email-service.test.ts +0 -100
- package/src/services/email-service.ts +0 -60
- package/src/services/email-template.test.ts +0 -311
- package/src/services/email-template.ts +0 -254
- package/src/services/file-scenario-run-store.test.ts +0 -349
- package/src/services/file-scenario-run-store.ts +0 -282
- package/src/services/gateway-service.ts +0 -5
- package/src/services/http-personas-converse.test.ts +0 -274
- package/src/services/http-personas.test.ts +0 -379
- package/src/services/http-personas.ts +0 -508
- package/src/services/in-memory-agent-run-state-service.ts +0 -87
- package/src/services/in-memory-queue-service.test.ts +0 -162
- package/src/services/in-memory-queue-service.ts +0 -78
- package/src/services/in-memory-session-store.test.ts +0 -58
- package/src/services/in-memory-session-store.ts +0 -20
- package/src/services/in-memory-trigger-service.ts +0 -47
- package/src/services/in-memory-workflow-service.test.ts +0 -430
- package/src/services/in-memory-workflow-service.ts +0 -595
- package/src/services/index.ts +0 -192
- package/src/services/istanbul-coverage-service.test.ts +0 -66
- package/src/services/istanbul-coverage-service.ts +0 -59
- package/src/services/jwt-service.ts +0 -15
- package/src/services/local-content-request-handler.test.ts +0 -240
- package/src/services/local-content-request-handler.ts +0 -295
- package/src/services/local-content.test.ts +0 -186
- package/src/services/local-content.ts +0 -242
- package/src/services/local-credential-service.ts +0 -63
- package/src/services/local-email-service.test.ts +0 -182
- package/src/services/local-email-service.ts +0 -43
- package/src/services/local-gateway-service.ts +0 -51
- package/src/services/local-secrets.test.ts +0 -95
- package/src/services/local-secrets.ts +0 -71
- package/src/services/local-variables.test.ts +0 -61
- package/src/services/local-variables.ts +0 -45
- package/src/services/logger-console.test.ts +0 -117
- package/src/services/logger-console.ts +0 -174
- package/src/services/logger.ts +0 -48
- package/src/services/meta-service.test.ts +0 -75
- package/src/services/meta-service.ts +0 -767
- package/src/services/persona-actor-secret.test.ts +0 -68
- package/src/services/persona-actor-secret.ts +0 -70
- package/src/services/persona-sign-in.test.ts +0 -219
- package/src/services/persona-sign-in.ts +0 -238
- package/src/services/personas-service.ts +0 -191
- package/src/services/pikku-user-id.test.ts +0 -62
- package/src/services/pikku-user-id.ts +0 -13
- package/src/services/queue-webhook-service.test.ts +0 -409
- package/src/services/queue-webhook-service.ts +0 -150
- package/src/services/remote-jobs.test.ts +0 -106
- package/src/services/remote-jobs.ts +0 -92
- package/src/services/scheduler-service.ts +0 -37
- package/src/services/schema-service.ts +0 -10
- package/src/services/scope-service.ts +0 -91
- package/src/services/scoped-credential-service.test.ts +0 -86
- package/src/services/scoped-credential-service.ts +0 -63
- package/src/services/scoped-secret-service.test.ts +0 -93
- package/src/services/scoped-secret-service.ts +0 -40
- package/src/services/secret-host-binding.test.ts +0 -138
- package/src/services/secret-host-binding.ts +0 -51
- package/src/services/secret-service.ts +0 -25
- package/src/services/secretless.test.ts +0 -54
- package/src/services/secretless.ts +0 -29
- package/src/services/session-store.ts +0 -9
- package/src/services/stub-tracker.test.ts +0 -104
- package/src/services/stub-tracker.ts +0 -175
- package/src/services/system-role-guard.test.ts +0 -96
- package/src/services/system-role-guard.ts +0 -71
- package/src/services/temporary-file-service.ts +0 -76
- package/src/services/trigger-service.ts +0 -5
- package/src/services/typed-credential-service.ts +0 -83
- package/src/services/typed-secret-service.test.ts +0 -204
- package/src/services/typed-secret-service.ts +0 -132
- package/src/services/typed-variables-service.test.ts +0 -166
- package/src/services/typed-variables-service.ts +0 -166
- package/src/services/user-session-service.test.ts +0 -147
- package/src/services/user-session-service.ts +0 -85
- package/src/services/v8-coverage-service.test.ts +0 -69
- package/src/services/v8-coverage-service.ts +0 -163
- package/src/services/variables-service.ts +0 -13
- package/src/services/webhook-service.ts +0 -147
- package/src/services/workflow-service.ts +0 -120
- package/src/side-effects-are-declared.test.ts +0 -84
- package/src/source-files-stay-composable.test.ts +0 -41
- package/src/template-alias-surface.test.ts +0 -240
- package/src/test-utils.ts +0 -38
- package/src/testing/index.ts +0 -3
- package/src/testing/service-tests/agent-run-service-tests.ts +0 -98
- package/src/testing/service-tests/agent-storage-service-tests.ts +0 -379
- package/src/testing/service-tests/channel-store-tests.ts +0 -98
- package/src/testing/service-tests/credential-service-tests.ts +0 -143
- package/src/testing/service-tests/deployment-service-tests.ts +0 -33
- package/src/testing/service-tests/event-hub-store-tests.ts +0 -48
- package/src/testing/service-tests/secret-service-tests.ts +0 -105
- package/src/testing/service-tests/session-store-tests.ts +0 -62
- package/src/testing/service-tests/workflow-run-service-tests.ts +0 -59
- package/src/testing/service-tests/workflow-service-tests.ts +0 -308
- package/src/testing/service-tests.ts +0 -95
- package/src/time-utils.test.ts +0 -56
- package/src/time-utils.ts +0 -89
- package/src/types/core.types.ts +0 -446
- package/src/types/index.ts +0 -25
- package/src/types/state.types.ts +0 -226
- package/src/types/typed-credentials.test.ts +0 -72
- package/src/utils/hash.test.ts +0 -68
- package/src/utils/hash.ts +0 -26
- package/src/utils/hmac.ts +0 -21
- package/src/utils/node-host-resolver.ts +0 -20
- package/src/utils/safe-fetch.test.ts +0 -515
- package/src/utils/safe-fetch.ts +0 -347
- package/src/utils.test.ts +0 -359
- package/src/utils.ts +0 -165
- package/src/version.test.ts +0 -80
- package/src/version.ts +0 -25
- package/src/wirings/actor-flow/actor-flow.types.ts +0 -40
- package/src/wirings/actor-flow/index.ts +0 -10
- package/src/wirings/actor-flow/run-conversation.test.ts +0 -187
- package/src/wirings/actor-flow/run-conversation.ts +0 -280
- package/src/wirings/addon/addon-auth-tags.test.ts +0 -219
- package/src/wirings/addon/addon-runner.ts +0 -236
- package/src/wirings/addon/addon-scopes.test.ts +0 -225
- package/src/wirings/addon/addon-secrets.test.ts +0 -391
- package/src/wirings/addon/index.ts +0 -12
- package/src/wirings/addon/remote-addon-auth.ts +0 -65
- package/src/wirings/addon/wire-addon.test.ts +0 -102
- package/src/wirings/addon/wire-addon.ts +0 -202
- package/src/wirings/addon/wire-remote-addon.ts +0 -41
- package/src/wirings/agent/agent-agui.test.ts +0 -1213
- package/src/wirings/agent/agent-agui.ts +0 -405
- package/src/wirings/agent/agent-authorization.test.ts +0 -208
- package/src/wirings/agent/agent-finalize.test.ts +0 -187
- package/src/wirings/agent/agent-finalize.ts +0 -197
- package/src/wirings/agent/agent-helpers.test.ts +0 -215
- package/src/wirings/agent/agent-helpers.ts +0 -96
- package/src/wirings/agent/agent-interrupt.test.ts +0 -833
- package/src/wirings/agent/agent-interrupt.ts +0 -400
- package/src/wirings/agent/agent-memory.test.ts +0 -397
- package/src/wirings/agent/agent-memory.ts +0 -496
- package/src/wirings/agent/agent-middleware.types.test.ts +0 -41
- package/src/wirings/agent/agent-model-config.test.ts +0 -103
- package/src/wirings/agent/agent-model-config.ts +0 -59
- package/src/wirings/agent/agent-prepare.test.ts +0 -977
- package/src/wirings/agent/agent-prepare.ts +0 -1083
- package/src/wirings/agent/agent-registry.test.ts +0 -455
- package/src/wirings/agent/agent-registry.ts +0 -99
- package/src/wirings/agent/agent-resume-authorization.test.ts +0 -206
- package/src/wirings/agent/agent-rpc.ts +0 -116
- package/src/wirings/agent/agent-runner.test.ts +0 -1229
- package/src/wirings/agent/agent-runner.ts +0 -858
- package/src/wirings/agent/agent-stream-delegate.test.ts +0 -381
- package/src/wirings/agent/agent-stream-output-hooks.test.ts +0 -353
- package/src/wirings/agent/agent-stream.test.ts +0 -1800
- package/src/wirings/agent/agent-stream.ts +0 -1639
- package/src/wirings/agent/agent-thread-ownership.test.ts +0 -297
- package/src/wirings/agent/agent-turn.test.ts +0 -65
- package/src/wirings/agent/agent-turn.ts +0 -122
- package/src/wirings/agent/agent-utils.ts +0 -20
- package/src/wirings/agent/agent.types.ts +0 -676
- package/src/wirings/agent/index.ts +0 -58
- package/src/wirings/agent/voice-input.test.ts +0 -220
- package/src/wirings/agent/voice-input.ts +0 -180
- package/src/wirings/agent/voice-output.test.ts +0 -510
- package/src/wirings/agent/voice-output.ts +0 -311
- package/src/wirings/agent-scorer/agent-scorer-grade.test.ts +0 -106
- package/src/wirings/agent-scorer/agent-scorer-grade.ts +0 -55
- package/src/wirings/agent-scorer/agent-scorer-judge.test.ts +0 -285
- package/src/wirings/agent-scorer/agent-scorer-judge.ts +0 -180
- package/src/wirings/agent-scorer/agent-scorer-live.test.ts +0 -174
- package/src/wirings/agent-scorer/agent-scorer-live.ts +0 -56
- package/src/wirings/agent-scorer/agent-scorer-registry.ts +0 -66
- package/src/wirings/agent-scorer/agent-scorer-sampling.test.ts +0 -34
- package/src/wirings/agent-scorer/agent-scorer-sampling.ts +0 -36
- package/src/wirings/agent-scorer/agent-scorer-snapshots.test.ts +0 -49
- package/src/wirings/agent-scorer/agent-scorer-snapshots.ts +0 -46
- package/src/wirings/agent-scorer/agent-scorer-worker.test.ts +0 -122
- package/src/wirings/agent-scorer/agent-scorer-worker.ts +0 -71
- package/src/wirings/agent-scorer/agent-scorer.ts +0 -102
- package/src/wirings/agent-scorer/agent-scorer.types.ts +0 -128
- package/src/wirings/agent-scorer/index.ts +0 -23
- package/src/wirings/channel/channel-common.ts +0 -102
- package/src/wirings/channel/channel-handler-shapes.test.ts +0 -72
- package/src/wirings/channel/channel-handler.test.ts +0 -322
- package/src/wirings/channel/channel-handler.ts +0 -259
- package/src/wirings/channel/channel-host-rpc.test.ts +0 -150
- package/src/wirings/channel/channel-host-rpc.ts +0 -69
- package/src/wirings/channel/channel-middleware-runner.test.ts +0 -188
- package/src/wirings/channel/channel-middleware-runner.ts +0 -126
- package/src/wirings/channel/channel-rpc-registry.ts +0 -116
- package/src/wirings/channel/channel-rpc-responder.ts +0 -117
- package/src/wirings/channel/channel-rpc-service.ts +0 -132
- package/src/wirings/channel/channel-rpc-validators.ts +0 -65
- package/src/wirings/channel/channel-rpc.test.ts +0 -841
- package/src/wirings/channel/channel-rpc.ts +0 -5
- package/src/wirings/channel/channel-rpc.types.ts +0 -160
- package/src/wirings/channel/channel-runner.ts +0 -164
- package/src/wirings/channel/channel-store.ts +0 -35
- package/src/wirings/channel/channel.types.ts +0 -193
- package/src/wirings/channel/define-channel-routes.ts +0 -5
- package/src/wirings/channel/eventhub-service.ts +0 -16
- package/src/wirings/channel/eventhub-store.ts +0 -13
- package/src/wirings/channel/index.ts +0 -40
- package/src/wirings/channel/local/index.ts +0 -3
- package/src/wirings/channel/local/local-channel-handler.ts +0 -98
- package/src/wirings/channel/local/local-channel-runner.test.ts +0 -339
- package/src/wirings/channel/local/local-channel-runner.ts +0 -271
- package/src/wirings/channel/local/local-eventhub-service.test.ts +0 -77
- package/src/wirings/channel/local/local-eventhub-service.ts +0 -69
- package/src/wirings/channel/log-channels.ts +0 -16
- package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +0 -135
- package/src/wirings/channel/pikku-abstract-channel-handler.ts +0 -60
- package/src/wirings/channel/serverless/index.ts +0 -6
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +0 -328
- package/src/wirings/cli/channel/cli-approval.test.ts +0 -177
- package/src/wirings/cli/channel/cli-approval.ts +0 -135
- package/src/wirings/cli/channel/cli-channel-runner.ts +0 -118
- package/src/wirings/cli/channel/cli-raw-channel-runner.test.ts +0 -192
- package/src/wirings/cli/channel/cli-raw-channel-runner.ts +0 -148
- package/src/wirings/cli/channel/cli-raw-client-runner.test.ts +0 -480
- package/src/wirings/cli/channel/cli-raw-client-runner.ts +0 -188
- package/src/wirings/cli/channel/index.ts +0 -6
- package/src/wirings/cli/cli-runner.test.ts +0 -969
- package/src/wirings/cli/cli-runner.ts +0 -538
- package/src/wirings/cli/cli.types.ts +0 -388
- package/src/wirings/cli/command-parser.test.ts +0 -1120
- package/src/wirings/cli/command-parser.ts +0 -713
- package/src/wirings/cli/define-cli-commands.ts +0 -13
- package/src/wirings/cli/format-cli-error.test.ts +0 -91
- package/src/wirings/cli/format-cli-error.ts +0 -96
- package/src/wirings/cli/index.ts +0 -19
- package/src/wirings/credential/credential.types.ts +0 -37
- package/src/wirings/credential/define-credential.ts +0 -49
- package/src/wirings/credential/index.ts +0 -7
- package/src/wirings/credential/validate-credential-definitions.ts +0 -63
- package/src/wirings/gateway/gateway-authorization.test.ts +0 -575
- package/src/wirings/gateway/gateway-channel-meta.test.ts +0 -44
- package/src/wirings/gateway/gateway-runner.test.ts +0 -581
- package/src/wirings/gateway/gateway-runner.ts +0 -411
- package/src/wirings/gateway/gateway.types.ts +0 -137
- package/src/wirings/gateway/index.ts +0 -15
- package/src/wirings/http/http-routes.test.ts +0 -318
- package/src/wirings/http/http-routes.ts +0 -111
- package/src/wirings/http/http-runner-addon-ref.test.ts +0 -238
- package/src/wirings/http/http-runner.test.ts +0 -503
- package/src/wirings/http/http-runner.ts +0 -462
- package/src/wirings/http/http.types.ts +0 -307
- package/src/wirings/http/index.ts +0 -27
- package/src/wirings/http/log-http-routes.ts +0 -18
- package/src/wirings/http/pikku-fetch-http-request.test.ts +0 -318
- package/src/wirings/http/pikku-fetch-http-request.ts +0 -260
- package/src/wirings/http/pikku-fetch-http-response.test.ts +0 -123
- package/src/wirings/http/pikku-fetch-http-response.ts +0 -149
- package/src/wirings/http/routers/http-router.ts +0 -13
- package/src/wirings/http/routers/path-to-regex.test.ts +0 -306
- package/src/wirings/http/routers/path-to-regex.ts +0 -115
- package/src/wirings/http/web-request.test.ts +0 -382
- package/src/wirings/http/web-request.ts +0 -162
- package/src/wirings/mcp/index.ts +0 -26
- package/src/wirings/mcp/mcp-endpoint-registry.test.ts +0 -388
- package/src/wirings/mcp/mcp-endpoint-registry.ts +0 -159
- package/src/wirings/mcp/mcp-runner.test.ts +0 -588
- package/src/wirings/mcp/mcp-runner.ts +0 -330
- package/src/wirings/mcp/mcp.types.ts +0 -199
- package/src/wirings/node/index.ts +0 -2
- package/src/wirings/node/node.types.ts +0 -23
- package/src/wirings/oauth2/index.ts +0 -1
- package/src/wirings/oauth2/oauth2.types.ts +0 -12
- package/src/wirings/persona/define-personas.ts +0 -33
- package/src/wirings/persona/index.ts +0 -75
- package/src/wirings/persona/persona-app-scopes.test.ts +0 -47
- package/src/wirings/persona/persona-app-scopes.ts +0 -74
- package/src/wirings/persona/persona-email.ts +0 -87
- package/src/wirings/persona/persona-environments.test.ts +0 -194
- package/src/wirings/persona/persona-environments.ts +0 -138
- package/src/wirings/persona/persona-mailbox.ts +0 -156
- package/src/wirings/persona/persona.test.ts +0 -230
- package/src/wirings/persona/persona.types.ts +0 -156
- package/src/wirings/persona/validate-personas.ts +0 -137
- package/src/wirings/queue/index.ts +0 -29
- package/src/wirings/queue/queue-identity.test.ts +0 -454
- package/src/wirings/queue/queue-identity.ts +0 -176
- package/src/wirings/queue/queue-runner.test.ts +0 -705
- package/src/wirings/queue/queue-runner.ts +0 -181
- package/src/wirings/queue/queue.types.ts +0 -161
- package/src/wirings/queue/register-queue-helper.ts +0 -46
- package/src/wirings/queue/signed-queue-service.ts +0 -60
- package/src/wirings/queue/validate-worker-config.test.ts +0 -108
- package/src/wirings/queue/validate-worker-config.ts +0 -90
- package/src/wirings/role/define-system-role.ts +0 -33
- package/src/wirings/role/index.ts +0 -13
- package/src/wirings/role/role.test.ts +0 -104
- package/src/wirings/role/role.types.ts +0 -47
- package/src/wirings/role/validate-role-definitions.ts +0 -93
- package/src/wirings/rpc/index.ts +0 -8
- package/src/wirings/rpc/rpc-runner.test.ts +0 -1130
- package/src/wirings/rpc/rpc-runner.ts +0 -569
- package/src/wirings/rpc/rpc-types.ts +0 -87
- package/src/wirings/scheduler/index.ts +0 -11
- package/src/wirings/scheduler/log-schedulers.ts +0 -16
- package/src/wirings/scheduler/scheduler-runner.test.ts +0 -835
- package/src/wirings/scheduler/scheduler-runner.ts +0 -138
- package/src/wirings/scheduler/scheduler.types.ts +0 -42
- package/src/wirings/scope/define-scope.ts +0 -33
- package/src/wirings/scope/index.ts +0 -15
- package/src/wirings/scope/scope.test.ts +0 -159
- package/src/wirings/scope/scope.types.ts +0 -42
- package/src/wirings/scope/validate-scope-definitions.ts +0 -107
- package/src/wirings/secret/index.ts +0 -9
- package/src/wirings/secret/secret.types.ts +0 -70
- package/src/wirings/secret/validate-secret-definitions.test.ts +0 -232
- package/src/wirings/secret/validate-secret-definitions.ts +0 -88
- package/src/wirings/trigger/index.ts +0 -9
- package/src/wirings/trigger/pikku-trigger-service.ts +0 -107
- package/src/wirings/trigger/trigger-runner.test.ts +0 -78
- package/src/wirings/trigger/trigger-runner.ts +0 -113
- package/src/wirings/trigger/trigger.types.ts +0 -100
- package/src/wirings/variable/index.ts +0 -8
- package/src/wirings/variable/validate-variable-definitions.test.ts +0 -115
- package/src/wirings/variable/validate-variable-definitions.ts +0 -71
- package/src/wirings/variable/variable.types.ts +0 -40
- package/src/wirings/virtual-user/index.ts +0 -107
- package/src/wirings/virtual-user/prepare-virtual-user-run.test.ts +0 -115
- package/src/wirings/virtual-user/prepare-virtual-user-run.ts +0 -95
- package/src/wirings/virtual-user/run-virtual-user.test.ts +0 -774
- package/src/wirings/virtual-user/run-virtual-user.ts +0 -684
- package/src/wirings/virtual-user/virtual-user-agents.test.ts +0 -72
- package/src/wirings/virtual-user/virtual-user-agents.ts +0 -62
- package/src/wirings/virtual-user/virtual-user-catalogue.test.ts +0 -215
- package/src/wirings/virtual-user/virtual-user-catalogue.ts +0 -184
- package/src/wirings/virtual-user/virtual-user-derive.test.ts +0 -426
- package/src/wirings/virtual-user/virtual-user-derive.ts +0 -161
- package/src/wirings/virtual-user/virtual-user-dispositions.test.ts +0 -68
- package/src/wirings/virtual-user/virtual-user-dispositions.ts +0 -210
- package/src/wirings/virtual-user/virtual-user-intents.test.ts +0 -218
- package/src/wirings/virtual-user/virtual-user-intents.ts +0 -185
- package/src/wirings/virtual-user/virtual-user-rng.test.ts +0 -72
- package/src/wirings/virtual-user/virtual-user-rng.ts +0 -50
- package/src/wirings/virtual-user/virtual-user-run-store.ts +0 -131
- package/src/wirings/virtual-user/virtual-user-scaffold.test.ts +0 -854
- package/src/wirings/virtual-user/virtual-user-scaffold.ts +0 -664
- package/src/wirings/virtual-user/virtual-user-schedule-store.ts +0 -93
- package/src/wirings/virtual-user/virtual-user-schedule.test.ts +0 -280
- package/src/wirings/virtual-user/virtual-user-schedule.ts +0 -156
- package/src/wirings/virtual-user/virtual-user-target.ts +0 -47
- package/src/wirings/virtual-user/virtual-user.types.ts +0 -215
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +0 -709
- package/src/wirings/workflow/dsl/workflow-runner.ts +0 -25
- package/src/wirings/workflow/feature.test.ts +0 -131
- package/src/wirings/workflow/feature.ts +0 -59
- package/src/wirings/workflow/graph/graph-foreach-queued.test.ts +0 -569
- package/src/wirings/workflow/graph/graph-foreach.test.ts +0 -626
- package/src/wirings/workflow/graph/graph-node.ts +0 -115
- package/src/wirings/workflow/graph/graph-runner.test.ts +0 -1049
- package/src/wirings/workflow/graph/graph-runner.ts +0 -1376
- package/src/wirings/workflow/graph/graph-validation.test.ts +0 -27
- package/src/wirings/workflow/graph/graph-validation.ts +0 -41
- package/src/wirings/workflow/graph/template.test.ts +0 -49
- package/src/wirings/workflow/graph/template.ts +0 -42
- package/src/wirings/workflow/graph/wire-workflow-graph.ts +0 -39
- package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -75
- package/src/wirings/workflow/index.ts +0 -107
- package/src/wirings/workflow/pikku-scenario-service.ts +0 -1013
- package/src/wirings/workflow/pikku-workflow-service.test.ts +0 -963
- package/src/wirings/workflow/pikku-workflow-service.ts +0 -1993
- package/src/wirings/workflow/run-timeline.test.ts +0 -199
- package/src/wirings/workflow/run-timeline.ts +0 -185
- package/src/wirings/workflow/scenario-cookie-jar.test.ts +0 -107
- package/src/wirings/workflow/scenario-cookie-jar.ts +0 -57
- package/src/wirings/workflow/scenario-expectations.test.ts +0 -238
- package/src/wirings/workflow/scenario-hooks.test.ts +0 -259
- package/src/wirings/workflow/scenario-poll.test.ts +0 -64
- package/src/wirings/workflow/scenario-poll.ts +0 -27
- package/src/wirings/workflow/scenario-prose.test.ts +0 -275
- package/src/wirings/workflow/scenario-prose.ts +0 -86
- package/src/wirings/workflow/scenario-run.types.ts +0 -193
- package/src/wirings/workflow/scenario-service.test.ts +0 -147
- package/src/wirings/workflow/scenario-step-guards.ts +0 -23
- package/src/wirings/workflow/scenario-step.test.ts +0 -800
- package/src/wirings/workflow/scenario-step.types.ts +0 -262
- package/src/wirings/workflow/scenario-surface.test.ts +0 -146
- package/src/wirings/workflow/scenario-surface.ts +0 -71
- package/src/wirings/workflow/scenario.types.ts +0 -63
- package/src/wirings/workflow/workflow-approval-audit.ts +0 -47
- package/src/wirings/workflow/workflow-approval-policy.test.ts +0 -594
- package/src/wirings/workflow/workflow-approval-policy.ts +0 -68
- package/src/wirings/workflow/workflow-approval.ts +0 -290
- package/src/wirings/workflow/workflow-child-run-session.test.ts +0 -168
- package/src/wirings/workflow/workflow-constants.ts +0 -66
- package/src/wirings/workflow/workflow-dispatch-durability.test.ts +0 -116
- package/src/wirings/workflow/workflow-dispatch-payload.test.ts +0 -55
- package/src/wirings/workflow/workflow-dispatch-relay.test.ts +0 -128
- package/src/wirings/workflow/workflow-errors.ts +0 -132
- package/src/wirings/workflow/workflow-inline-authority.test.ts +0 -175
- package/src/wirings/workflow/workflow-invocation-id.test.ts +0 -51
- package/src/wirings/workflow/workflow-invocation-id.ts +0 -28
- package/src/wirings/workflow/workflow-meta-resolver.ts +0 -45
- package/src/wirings/workflow/workflow-mirror.test.ts +0 -171
- package/src/wirings/workflow/workflow-missing-meta.test.ts +0 -92
- package/src/wirings/workflow/workflow-on-error.test.ts +0 -145
- package/src/wirings/workflow/workflow-queue-routing.ts +0 -129
- package/src/wirings/workflow/workflow-queue-wiring.ts +0 -149
- package/src/wirings/workflow/workflow-queue-workers.test.ts +0 -131
- package/src/wirings/workflow/workflow-queue-workers.ts +0 -66
- package/src/wirings/workflow/workflow-recovery.ts +0 -192
- package/src/wirings/workflow/workflow-replay-snapshot.test.ts +0 -140
- package/src/wirings/workflow/workflow-retry-policy.test.ts +0 -113
- package/src/wirings/workflow/workflow-run-authority.test.ts +0 -212
- package/src/wirings/workflow/workflow-run-context.test.ts +0 -172
- package/src/wirings/workflow/workflow-run-engine.types.ts +0 -92
- package/src/wirings/workflow/workflow-run-ownership.ts +0 -37
- package/src/wirings/workflow/workflow-run-polling.test.ts +0 -127
- package/src/wirings/workflow/workflow-stalled-recovery.test.ts +0 -152
- package/src/wirings/workflow/workflow-status-stream.test.ts +0 -354
- package/src/wirings/workflow/workflow-status-stream.ts +0 -144
- package/src/wirings/workflow/workflow-step-claim.ts +0 -46
- package/src/wirings/workflow/workflow-step-ordinal.test.ts +0 -94
- package/src/wirings/workflow/workflow-step-session.test.ts +0 -87
- package/src/wirings/workflow/workflow-suspend.ts +0 -61
- package/src/wirings/workflow/workflow-terminal-run-guard.test.ts +0 -105
- package/src/wirings/workflow/workflow.types.ts +0 -268
- package/src/wirings-stay-decoupled.test.ts +0 -130
- package/tsconfig.json +0 -14
- package/tsconfig.tsbuildinfo +0 -1
- package/tsconfig.type-tests.json +0 -15
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
CommonWireMeta,
|
|
3
|
-
CoreSingletonServices,
|
|
4
|
-
} from '../../types/core.types.js'
|
|
5
|
-
import type { StandardSchemaV1 } from '@standard-schema/spec'
|
|
6
|
-
import type { CoreNodeConfig } from '../node/node.types.js'
|
|
7
|
-
|
|
8
|
-
export interface PikkuTrigger<TOutput = unknown> {
|
|
9
|
-
invoke: (data: TOutput) => void
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export type TriggerMeta = Record<string, CommonWireMeta & { name: string }>
|
|
13
|
-
|
|
14
|
-
export type TriggerSourceMeta = Record<
|
|
15
|
-
string,
|
|
16
|
-
{ name: string; pikkuFuncId: string; packageName?: string }
|
|
17
|
-
>
|
|
18
|
-
|
|
19
|
-
export type CorePikkuTriggerFunction<
|
|
20
|
-
TInput = unknown,
|
|
21
|
-
TOutput = unknown,
|
|
22
|
-
Services extends CoreSingletonServices = CoreSingletonServices,
|
|
23
|
-
> = (
|
|
24
|
-
services: Services,
|
|
25
|
-
input: TInput,
|
|
26
|
-
wire: { trigger: { invoke: (data: TOutput) => void } }
|
|
27
|
-
) => Promise<() => void | Promise<void>>
|
|
28
|
-
|
|
29
|
-
export type CorePikkuTriggerFunctionConfig<
|
|
30
|
-
TInput = unknown,
|
|
31
|
-
TOutput = unknown,
|
|
32
|
-
Services extends CoreSingletonServices = CoreSingletonServices,
|
|
33
|
-
InputSchema extends StandardSchemaV1 | undefined = undefined,
|
|
34
|
-
OutputSchema extends StandardSchemaV1 | undefined = undefined,
|
|
35
|
-
> = {
|
|
36
|
-
title?: string
|
|
37
|
-
description?: string
|
|
38
|
-
tags?: string[]
|
|
39
|
-
func: CorePikkuTriggerFunction<TInput, TOutput, Services>
|
|
40
|
-
input?: InputSchema
|
|
41
|
-
output?: OutputSchema
|
|
42
|
-
node?: CoreNodeConfig
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const pikkuTriggerFunc = <
|
|
46
|
-
TInput = unknown,
|
|
47
|
-
TOutput = unknown,
|
|
48
|
-
Services extends CoreSingletonServices = CoreSingletonServices,
|
|
49
|
-
InputSchema extends StandardSchemaV1 | undefined = undefined,
|
|
50
|
-
OutputSchema extends StandardSchemaV1 | undefined = undefined,
|
|
51
|
-
>(
|
|
52
|
-
triggerOrConfig:
|
|
53
|
-
| CorePikkuTriggerFunction<TInput, TOutput, Services>
|
|
54
|
-
| CorePikkuTriggerFunctionConfig<
|
|
55
|
-
TInput,
|
|
56
|
-
TOutput,
|
|
57
|
-
Services,
|
|
58
|
-
InputSchema,
|
|
59
|
-
OutputSchema
|
|
60
|
-
>
|
|
61
|
-
): CorePikkuTriggerFunctionConfig<
|
|
62
|
-
TInput,
|
|
63
|
-
TOutput,
|
|
64
|
-
Services,
|
|
65
|
-
InputSchema,
|
|
66
|
-
OutputSchema
|
|
67
|
-
> => {
|
|
68
|
-
if (typeof triggerOrConfig === 'function') {
|
|
69
|
-
return { func: triggerOrConfig }
|
|
70
|
-
}
|
|
71
|
-
return triggerOrConfig
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export interface CoreTrigger<PikkuFunctionConfig = any> {
|
|
75
|
-
/** What a `wireTriggerSource` points at to fire this trigger. It is the contract between the two, so both must spell it the same. */
|
|
76
|
-
name: string
|
|
77
|
-
/** The function to run each time the trigger fires. */
|
|
78
|
-
func: PikkuFunctionConfig
|
|
79
|
-
/** What firing this trigger means, for whoever is reading the wiring rather than writing it. */
|
|
80
|
-
description?: string
|
|
81
|
-
/** Filters this trigger in and out of a build — see the `tags` option on `pikku all`. It has no effect at runtime. */
|
|
82
|
-
tags?: string[]
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export interface TriggerInstance {
|
|
86
|
-
name: string
|
|
87
|
-
teardown: () => void | Promise<void>
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export type CoreTriggerSource<TInput = unknown, TOutput = unknown> = {
|
|
91
|
-
/** Must match the name of a `wireTrigger` registration. */
|
|
92
|
-
name: string
|
|
93
|
-
func: CorePikkuTriggerFunctionConfig<
|
|
94
|
-
TInput,
|
|
95
|
-
TOutput,
|
|
96
|
-
CoreSingletonServices,
|
|
97
|
-
StandardSchemaV1 | undefined,
|
|
98
|
-
StandardSchemaV1 | undefined
|
|
99
|
-
>
|
|
100
|
-
} & (unknown extends TInput ? { input?: TInput } : { input: TInput })
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export { defineVariable } from './variable.types.js'
|
|
2
|
-
export type {
|
|
3
|
-
CoreVariable,
|
|
4
|
-
VariableDefinitionMeta,
|
|
5
|
-
VariableDefinitionsMeta,
|
|
6
|
-
VariableDefinitions,
|
|
7
|
-
} from './variable.types.js'
|
|
8
|
-
export { validateAndBuildVariableDefinitionsMeta } from './validate-variable-definitions.js'
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { describe, test } from 'node:test'
|
|
2
|
-
import assert from 'node:assert'
|
|
3
|
-
import { validateAndBuildVariableDefinitionsMeta } from './validate-variable-definitions.js'
|
|
4
|
-
|
|
5
|
-
describe('validateAndBuildVariableDefinitionsMeta', () => {
|
|
6
|
-
test('should build meta from single definition', () => {
|
|
7
|
-
const definitions = [
|
|
8
|
-
{
|
|
9
|
-
name: 'dbUrl',
|
|
10
|
-
displayName: 'Database URL',
|
|
11
|
-
description: 'Connection string',
|
|
12
|
-
variableId: 'DB_URL',
|
|
13
|
-
sourceFile: 'a.ts',
|
|
14
|
-
},
|
|
15
|
-
]
|
|
16
|
-
const result = validateAndBuildVariableDefinitionsMeta(
|
|
17
|
-
definitions as any,
|
|
18
|
-
new Map()
|
|
19
|
-
)
|
|
20
|
-
assert.ok(result['dbUrl'])
|
|
21
|
-
assert.strictEqual(result['dbUrl'].variableId, 'DB_URL')
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
test('should allow duplicate variableId with same schema', () => {
|
|
25
|
-
const schemaLookup = new Map([
|
|
26
|
-
['schema1', { variableName: 'Schema', sourceFile: 'types.ts' }],
|
|
27
|
-
])
|
|
28
|
-
const definitions = [
|
|
29
|
-
{
|
|
30
|
-
name: 'var1',
|
|
31
|
-
displayName: 'Var 1',
|
|
32
|
-
description: 'd',
|
|
33
|
-
variableId: 'SHARED',
|
|
34
|
-
schema: 'schema1',
|
|
35
|
-
sourceFile: 'a.ts',
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'var2',
|
|
39
|
-
displayName: 'Var 2',
|
|
40
|
-
description: 'd',
|
|
41
|
-
variableId: 'SHARED',
|
|
42
|
-
schema: 'schema1',
|
|
43
|
-
sourceFile: 'b.ts',
|
|
44
|
-
},
|
|
45
|
-
]
|
|
46
|
-
const result = validateAndBuildVariableDefinitionsMeta(
|
|
47
|
-
definitions as any,
|
|
48
|
-
schemaLookup
|
|
49
|
-
)
|
|
50
|
-
assert.ok(result['var1'])
|
|
51
|
-
assert.ok(result['var2'])
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
test('should throw when duplicate variableId has different schemas', () => {
|
|
55
|
-
const schemaLookup = new Map([
|
|
56
|
-
['schema1', { variableName: 'SchemaA', sourceFile: 'types.ts' }],
|
|
57
|
-
['schema2', { variableName: 'SchemaB', sourceFile: 'types2.ts' }],
|
|
58
|
-
])
|
|
59
|
-
const definitions = [
|
|
60
|
-
{
|
|
61
|
-
name: 'var1',
|
|
62
|
-
displayName: 'Var 1',
|
|
63
|
-
description: 'd',
|
|
64
|
-
variableId: 'SHARED',
|
|
65
|
-
schema: 'schema1',
|
|
66
|
-
sourceFile: 'a.ts',
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
name: 'var2',
|
|
70
|
-
displayName: 'Var 2',
|
|
71
|
-
description: 'd',
|
|
72
|
-
variableId: 'SHARED',
|
|
73
|
-
schema: 'schema2',
|
|
74
|
-
sourceFile: 'b.ts',
|
|
75
|
-
},
|
|
76
|
-
]
|
|
77
|
-
assert.throws(
|
|
78
|
-
() =>
|
|
79
|
-
validateAndBuildVariableDefinitionsMeta(
|
|
80
|
-
definitions as any,
|
|
81
|
-
schemaLookup
|
|
82
|
-
),
|
|
83
|
-
(err: any) => err.message.includes('different schemas')
|
|
84
|
-
)
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
test('should handle empty definitions', () => {
|
|
88
|
-
const result = validateAndBuildVariableDefinitionsMeta([], new Map())
|
|
89
|
-
assert.deepStrictEqual(result, {})
|
|
90
|
-
})
|
|
91
|
-
|
|
92
|
-
test('carries optional into the meta so only the opted-out ones skip the gate', () => {
|
|
93
|
-
const result = validateAndBuildVariableDefinitionsMeta(
|
|
94
|
-
[
|
|
95
|
-
{
|
|
96
|
-
name: 'corsOrigins',
|
|
97
|
-
displayName: 'Allowed Browser Origins',
|
|
98
|
-
variableId: 'CORS_ORIGINS',
|
|
99
|
-
optional: true,
|
|
100
|
-
sourceFile: 'a.ts',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: 'consoleUrl',
|
|
104
|
-
displayName: 'Console URL',
|
|
105
|
-
variableId: 'CONSOLE_URL',
|
|
106
|
-
sourceFile: 'a.ts',
|
|
107
|
-
},
|
|
108
|
-
] as any,
|
|
109
|
-
new Map()
|
|
110
|
-
)
|
|
111
|
-
assert.strictEqual(result['corsOrigins']!.optional, true)
|
|
112
|
-
// Undeclared means required, which is what makes the gate ask by default.
|
|
113
|
-
assert.strictEqual(result['consoleUrl']!.optional, undefined)
|
|
114
|
-
})
|
|
115
|
-
})
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
VariableDefinitions,
|
|
3
|
-
VariableDefinitionsMeta,
|
|
4
|
-
} from './variable.types.js'
|
|
5
|
-
import type { SchemaRefLike } from '../../types/core.types.js'
|
|
6
|
-
|
|
7
|
-
export type { SchemaRefLike }
|
|
8
|
-
|
|
9
|
-
export function validateAndBuildVariableDefinitionsMeta(
|
|
10
|
-
definitions: VariableDefinitions,
|
|
11
|
-
schemaLookup: Map<string, SchemaRefLike>
|
|
12
|
-
): VariableDefinitionsMeta {
|
|
13
|
-
const meta: VariableDefinitionsMeta = {}
|
|
14
|
-
const variableIdToDefinition: Map<string, VariableDefinitions[0]> = new Map()
|
|
15
|
-
|
|
16
|
-
for (const def of definitions) {
|
|
17
|
-
const existingDef = variableIdToDefinition.get(def.variableId)
|
|
18
|
-
|
|
19
|
-
if (existingDef) {
|
|
20
|
-
if (def.schema && existingDef.schema) {
|
|
21
|
-
const defSchemaRef = schemaLookup.get(def.schema as string)
|
|
22
|
-
const existingSchemaRef = schemaLookup.get(existingDef.schema as string)
|
|
23
|
-
|
|
24
|
-
if (defSchemaRef && existingSchemaRef) {
|
|
25
|
-
if (
|
|
26
|
-
defSchemaRef.variableName !== existingSchemaRef.variableName ||
|
|
27
|
-
defSchemaRef.sourceFile !== existingSchemaRef.sourceFile
|
|
28
|
-
) {
|
|
29
|
-
throw new Error(
|
|
30
|
-
`Variable '${def.variableId}' is defined with different schemas.\n` +
|
|
31
|
-
` First definition: ${existingDef.sourceFile} (schema: ${existingSchemaRef.variableName})\n` +
|
|
32
|
-
` Second definition: ${def.sourceFile} (schema: ${defSchemaRef.variableName})\n` +
|
|
33
|
-
`Variables sharing a variableId must use the same schema.`
|
|
34
|
-
)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (!meta[def.name]) {
|
|
40
|
-
meta[def.name] = {
|
|
41
|
-
name: def.name,
|
|
42
|
-
displayName: def.displayName,
|
|
43
|
-
description: def.description,
|
|
44
|
-
variableId: def.variableId,
|
|
45
|
-
schema: def.schema,
|
|
46
|
-
optional: def.optional,
|
|
47
|
-
docsUrl: def.docsUrl,
|
|
48
|
-
sourceFile: def.sourceFile,
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
continue
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
variableIdToDefinition.set(def.variableId, def)
|
|
55
|
-
|
|
56
|
-
if (!meta[def.name]) {
|
|
57
|
-
meta[def.name] = {
|
|
58
|
-
name: def.name,
|
|
59
|
-
displayName: def.displayName,
|
|
60
|
-
description: def.description,
|
|
61
|
-
variableId: def.variableId,
|
|
62
|
-
schema: def.schema,
|
|
63
|
-
optional: def.optional,
|
|
64
|
-
docsUrl: def.docsUrl,
|
|
65
|
-
sourceFile: def.sourceFile,
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return meta
|
|
71
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export type CoreVariable<T = unknown> = {
|
|
2
|
-
/** How the variable is asked for in code. Generated into `VariablesMap`, so it is what `variables.get` autocompletes. */
|
|
3
|
-
name: string
|
|
4
|
-
/** The name shown to whoever configures the deployment. */
|
|
5
|
-
displayName: string
|
|
6
|
-
/** What the value does, for the person setting it rather than the one reading it. */
|
|
7
|
-
description?: string
|
|
8
|
-
/** The environment variable this reads, which is the name that has to exist on the host. */
|
|
9
|
-
variableId: string
|
|
10
|
-
/** The shape of the value. It arrives as a string, so this is also what parses it. */
|
|
11
|
-
schema: T
|
|
12
|
-
/** Required by default: this says the deployment is still correct without it. */
|
|
13
|
-
optional?: boolean
|
|
14
|
-
/** Where to go to work out what to set this to. */
|
|
15
|
-
docsUrl?: string
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export type VariableDefinitionMeta = {
|
|
19
|
-
name: string
|
|
20
|
-
displayName: string
|
|
21
|
-
description?: string
|
|
22
|
-
variableId: string
|
|
23
|
-
schema?: Record<string, unknown> | string
|
|
24
|
-
optional?: boolean
|
|
25
|
-
docsUrl?: string
|
|
26
|
-
sourceFile?: string
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export type VariableDefinitionsMeta = Record<string, VariableDefinitionMeta>
|
|
30
|
-
|
|
31
|
-
export type VariableDefinitions = VariableDefinitionMeta[]
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Declares an environment variable this project needs, with the shape of its
|
|
35
|
-
* value. The CLI collects every declaration into `VariablesMap`, which is what
|
|
36
|
-
* makes `variables.get('NAME')` return the right type instead of `unknown`.
|
|
37
|
-
*
|
|
38
|
-
* @example snippet: variables
|
|
39
|
-
*/
|
|
40
|
-
export const defineVariable = <T>(_config: CoreVariable<T>): void => {}
|
|
@@ -1,107 +0,0 @@
|
|
|
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 {
|
|
20
|
-
ApiCatalogueEntry,
|
|
21
|
-
IntentRecord,
|
|
22
|
-
IntentSource,
|
|
23
|
-
StepRecord,
|
|
24
|
-
VirtualUserBudget,
|
|
25
|
-
VirtualUserDisposition,
|
|
26
|
-
VirtualUserFinding,
|
|
27
|
-
VirtualUserRunResult,
|
|
28
|
-
VirtualUserTarget,
|
|
29
|
-
} from './virtual-user.types.js'
|
|
30
|
-
export { PRODUCTION_DISPOSITION } from './virtual-user.types.js'
|
|
31
|
-
export {
|
|
32
|
-
runVirtualUser,
|
|
33
|
-
type RunVirtualUserParams,
|
|
34
|
-
} from './run-virtual-user.js'
|
|
35
|
-
export {
|
|
36
|
-
personaScopes,
|
|
37
|
-
prepareVirtualUserRun,
|
|
38
|
-
type VirtualUserPreparation,
|
|
39
|
-
} from './prepare-virtual-user-run.js'
|
|
40
|
-
export type {
|
|
41
|
-
VirtualUserRunOutcome,
|
|
42
|
-
VirtualUserRunRecord,
|
|
43
|
-
VirtualUserRunStart,
|
|
44
|
-
VirtualUserRunStore,
|
|
45
|
-
} from './virtual-user-run-store.js'
|
|
46
|
-
export type {
|
|
47
|
-
VirtualUserScheduleInput,
|
|
48
|
-
VirtualUserScheduleRecord,
|
|
49
|
-
VirtualUserScheduleStore,
|
|
50
|
-
} from './virtual-user-schedule-store.js'
|
|
51
|
-
export {
|
|
52
|
-
DEFAULT_MAX_INTERVAL_MS,
|
|
53
|
-
DEFAULT_MIN_INTERVAL_MS,
|
|
54
|
-
isDue,
|
|
55
|
-
nextRunAt,
|
|
56
|
-
STALE_RUN_AFTER_MS,
|
|
57
|
-
tickVirtualUserSchedules,
|
|
58
|
-
type VirtualUserTickParams,
|
|
59
|
-
type VirtualUserTickResult,
|
|
60
|
-
} from './virtual-user-schedule.js'
|
|
61
|
-
export {
|
|
62
|
-
DISPOSITIONS,
|
|
63
|
-
dispositionProfile,
|
|
64
|
-
type DispositionProfile,
|
|
65
|
-
type VirtualUserTuning,
|
|
66
|
-
} from './virtual-user-dispositions.js'
|
|
67
|
-
export {
|
|
68
|
-
catalogueClassification,
|
|
69
|
-
catalogueLookup,
|
|
70
|
-
isReadOnly,
|
|
71
|
-
reachableCatalogue,
|
|
72
|
-
unreachableCatalogue,
|
|
73
|
-
} from './virtual-user-catalogue.js'
|
|
74
|
-
export {
|
|
75
|
-
type AgentReachability,
|
|
76
|
-
type ReachableAgent,
|
|
77
|
-
} from './virtual-user-agents.js'
|
|
78
|
-
export { IntentStack, intentsForPersona } from './virtual-user-intents.js'
|
|
79
|
-
export {
|
|
80
|
-
deriveCatalogue,
|
|
81
|
-
deriveIntents,
|
|
82
|
-
type SchemaMap,
|
|
83
|
-
} from './virtual-user-derive.js'
|
|
84
|
-
export {
|
|
85
|
-
personaVirtualUserTarget,
|
|
86
|
-
type PersonaTargetOptions,
|
|
87
|
-
} from './virtual-user-target.js'
|
|
88
|
-
export {
|
|
89
|
-
executeVirtualUserRun,
|
|
90
|
-
logVirtualUserTick,
|
|
91
|
-
requireVirtualUserRunStore,
|
|
92
|
-
requireVirtualUserScheduleStore,
|
|
93
|
-
runnablePersona,
|
|
94
|
-
serializeVirtualUserRun,
|
|
95
|
-
serializeVirtualUserSchedule,
|
|
96
|
-
serializeVirtualUserSteps,
|
|
97
|
-
signInPathFor,
|
|
98
|
-
startVirtualUserRun,
|
|
99
|
-
VIRTUAL_USER_VARIABLES,
|
|
100
|
-
virtualUserScheduleRunInput,
|
|
101
|
-
writeVirtualUserSchedule,
|
|
102
|
-
type ExecuteVirtualUserRunParams,
|
|
103
|
-
type ScaffoldPersonas,
|
|
104
|
-
type StartedVirtualUserRun,
|
|
105
|
-
type StartVirtualUserRunParams,
|
|
106
|
-
type WriteVirtualUserScheduleParams,
|
|
107
|
-
} from './virtual-user-scaffold.js'
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { test, describe } from 'node:test'
|
|
2
|
-
import assert from 'node:assert/strict'
|
|
3
|
-
import {
|
|
4
|
-
personaScopes,
|
|
5
|
-
prepareVirtualUserRun,
|
|
6
|
-
} from './prepare-virtual-user-run.js'
|
|
7
|
-
|
|
8
|
-
const ROLE_DEFINITIONS = [
|
|
9
|
-
{ name: 'editor', scopes: ['docs:write', 'docs:read'] },
|
|
10
|
-
{ name: 'viewer', scopes: ['docs:read'] },
|
|
11
|
-
]
|
|
12
|
-
|
|
13
|
-
const FUNCTIONS_META = {
|
|
14
|
-
listDocs: { pikkuFuncName: 'listDocs', services: [], expose: true },
|
|
15
|
-
deleteDoc: { pikkuFuncName: 'deleteDoc', services: [], expose: true },
|
|
16
|
-
} as any
|
|
17
|
-
|
|
18
|
-
describe('personaScopes', () => {
|
|
19
|
-
test('expands the roles a persona declares into the scopes functions check', () => {
|
|
20
|
-
const scopes = personaScopes(
|
|
21
|
-
{ roles: ['editor'] },
|
|
22
|
-
{
|
|
23
|
-
editor: ['docs:write', 'docs:read'],
|
|
24
|
-
}
|
|
25
|
-
)
|
|
26
|
-
assert.deepEqual(scopes, ['docs:read', 'docs:write'])
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
test('a persona with no roles holds no scopes', () => {
|
|
30
|
-
assert.deepEqual(personaScopes({}, { editor: ['docs:write'] }), [])
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
// Two roles granting the same scope is ordinary, and the catalogue narrowing
|
|
34
|
-
// downstream compares scopes as a set.
|
|
35
|
-
test('de-duplicates overlapping roles', () => {
|
|
36
|
-
const scopes = personaScopes(
|
|
37
|
-
{ roles: ['editor', 'viewer'] },
|
|
38
|
-
{
|
|
39
|
-
editor: ['docs:write', 'docs:read'],
|
|
40
|
-
viewer: ['docs:read'],
|
|
41
|
-
}
|
|
42
|
-
)
|
|
43
|
-
assert.deepEqual(scopes, ['docs:read', 'docs:write'])
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
// An undeclared role granting everything would be the worst possible default.
|
|
47
|
-
test('an unknown role grants nothing', () => {
|
|
48
|
-
assert.deepEqual(personaScopes({ roles: ['ghost'] }, {}), [])
|
|
49
|
-
})
|
|
50
|
-
})
|
|
51
|
-
|
|
52
|
-
describe('prepareVirtualUserRun', () => {
|
|
53
|
-
// The CLI reads the inspector state, which holds an array; the scaffolded RPC
|
|
54
|
-
// reads metaService, which hands the same definitions back keyed by name. Both
|
|
55
|
-
// callers must land on the same scopes or the same persona and seed explore a
|
|
56
|
-
// different API depending on how the run was started.
|
|
57
|
-
test('accepts role definitions as an array or keyed by name, identically', () => {
|
|
58
|
-
const asArray = prepareVirtualUserRun({
|
|
59
|
-
persona: { roles: ['editor'] },
|
|
60
|
-
functionsMeta: FUNCTIONS_META,
|
|
61
|
-
systemRoles: ROLE_DEFINITIONS as any,
|
|
62
|
-
})
|
|
63
|
-
const asRecord = prepareVirtualUserRun({
|
|
64
|
-
persona: { roles: ['editor'] },
|
|
65
|
-
functionsMeta: FUNCTIONS_META,
|
|
66
|
-
systemRoles: {
|
|
67
|
-
editor: ROLE_DEFINITIONS[0],
|
|
68
|
-
viewer: ROLE_DEFINITIONS[1],
|
|
69
|
-
} as any,
|
|
70
|
-
})
|
|
71
|
-
assert.deepEqual(asArray.scopes, asRecord.scopes)
|
|
72
|
-
assert.deepEqual(asArray.scopes, ['docs:read', 'docs:write'])
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
test('derives the catalogue from the function meta', () => {
|
|
76
|
-
const { catalogue } = prepareVirtualUserRun({
|
|
77
|
-
persona: {},
|
|
78
|
-
functionsMeta: FUNCTIONS_META,
|
|
79
|
-
})
|
|
80
|
-
assert.deepEqual(catalogue.map((entry) => entry.name).sort(), [
|
|
81
|
-
'deleteDoc',
|
|
82
|
-
'listDocs',
|
|
83
|
-
])
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
// An agent is reached rather than declared: its scopes are checked against the
|
|
87
|
-
// session, so a persona must find the specialists its roles unlock and no
|
|
88
|
-
// others.
|
|
89
|
-
test('narrows agents to the ones the persona s scopes reach', () => {
|
|
90
|
-
const agentsMeta = {
|
|
91
|
-
helper: { scopes: [] },
|
|
92
|
-
auditor: { scopes: ['docs:audit'] },
|
|
93
|
-
} as any
|
|
94
|
-
|
|
95
|
-
const { agents } = prepareVirtualUserRun({
|
|
96
|
-
persona: { roles: ['viewer'] },
|
|
97
|
-
functionsMeta: FUNCTIONS_META,
|
|
98
|
-
systemRoles: ROLE_DEFINITIONS as any,
|
|
99
|
-
agentsMeta,
|
|
100
|
-
})
|
|
101
|
-
|
|
102
|
-
assert.deepEqual(
|
|
103
|
-
agents.map((agent) => agent.name),
|
|
104
|
-
['helper']
|
|
105
|
-
)
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
test('a project with no scenarios simply has no intents', () => {
|
|
109
|
-
const { intents } = prepareVirtualUserRun({
|
|
110
|
-
persona: {},
|
|
111
|
-
functionsMeta: FUNCTIONS_META,
|
|
112
|
-
})
|
|
113
|
-
assert.deepEqual(intents, [])
|
|
114
|
-
})
|
|
115
|
-
})
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import type { FunctionsMeta } from '../../function/function-meta.types.js'
|
|
2
|
-
import type { WorkflowsMeta } from '../workflow/workflow.types.js'
|
|
3
|
-
import { flattenSystemRoleDefinitions } from '../role/validate-role-definitions.js'
|
|
4
|
-
import type {
|
|
5
|
-
SystemRoleDefinitions,
|
|
6
|
-
SystemRoleDefinitionsMeta,
|
|
7
|
-
} from '../role/role.types.js'
|
|
8
|
-
import {
|
|
9
|
-
deriveCatalogue,
|
|
10
|
-
deriveIntents,
|
|
11
|
-
type SchemaMap,
|
|
12
|
-
} from './virtual-user-derive.js'
|
|
13
|
-
import {
|
|
14
|
-
reachableAgents,
|
|
15
|
-
type AgentReachability,
|
|
16
|
-
type ReachableAgent,
|
|
17
|
-
} from './virtual-user-agents.js'
|
|
18
|
-
import type { ApiCatalogueEntry, IntentSource } from './virtual-user.types.js'
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* The scopes a persona holds, resolved through its roles.
|
|
22
|
-
*
|
|
23
|
-
* Roles are the only thing a persona declares; scopes are what a function
|
|
24
|
-
* checks. Narrowing a virtual user's catalogue needs the second, so the
|
|
25
|
-
* expansion happens once, here, against the same `defineSystemRole` definitions
|
|
26
|
-
* the seed grants from.
|
|
27
|
-
*/
|
|
28
|
-
export const personaScopes = (
|
|
29
|
-
persona: { roles?: readonly string[] },
|
|
30
|
-
roleScopes: Record<string, readonly string[]>
|
|
31
|
-
): string[] => {
|
|
32
|
-
const scopes = new Set<string>()
|
|
33
|
-
for (const role of persona.roles ?? []) {
|
|
34
|
-
for (const scope of roleScopes[role] ?? []) {
|
|
35
|
-
scopes.add(scope)
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return [...scopes].sort()
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/** Everything a run needs that is derived rather than decided. */
|
|
42
|
-
export interface VirtualUserPreparation {
|
|
43
|
-
/** Every RPC the app exposes, narrowed to what this persona can reach. */
|
|
44
|
-
catalogue: ApiCatalogueEntry[]
|
|
45
|
-
intents: IntentSource[]
|
|
46
|
-
scopes: string[]
|
|
47
|
-
agents: ReachableAgent[]
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Derive what a virtual user needs from what the project already generates.
|
|
52
|
-
*
|
|
53
|
-
* Shared because there are two callers with the same problem and different
|
|
54
|
-
* sources for it: `pikku persona run` reads the inspector state at build time,
|
|
55
|
-
* and the scaffolded `runVirtualUser` RPC reads `metaService` at runtime. They
|
|
56
|
-
* must agree — a persona whose catalogue is narrower over RPC than on the CLI
|
|
57
|
-
* finds different things from the same seed, which is exactly the property a
|
|
58
|
-
* seed exists to give.
|
|
59
|
-
*
|
|
60
|
-
* Nothing here is authored for the virtual user's benefit: the function meta is
|
|
61
|
-
* the catalogue, the scenario meta is the intents, and the role definitions are
|
|
62
|
-
* what turn a persona's declared roles into the scopes a function checks.
|
|
63
|
-
*/
|
|
64
|
-
export const prepareVirtualUserRun = (input: {
|
|
65
|
-
persona: { roles?: readonly string[] }
|
|
66
|
-
functionsMeta: FunctionsMeta
|
|
67
|
-
schemas?: SchemaMap
|
|
68
|
-
workflowsMeta?: WorkflowsMeta
|
|
69
|
-
/**
|
|
70
|
-
* Either shape: the inspector holds an array, `metaService` hands back the
|
|
71
|
-
* same definitions keyed by name. Accepting both is what lets the CLI and the
|
|
72
|
-
* scaffolded RPC share this.
|
|
73
|
-
*/
|
|
74
|
-
systemRoles?: SystemRoleDefinitions | SystemRoleDefinitionsMeta
|
|
75
|
-
agentsMeta?: Readonly<Record<string, AgentReachability>>
|
|
76
|
-
}): VirtualUserPreparation => {
|
|
77
|
-
const catalogue = deriveCatalogue(input.functionsMeta, input.schemas ?? {})
|
|
78
|
-
const intents = deriveIntents(input.workflowsMeta ?? {}, input.functionsMeta)
|
|
79
|
-
|
|
80
|
-
const declared = input.systemRoles ?? []
|
|
81
|
-
const roleScopes: Record<string, string[]> = {}
|
|
82
|
-
for (const role of flattenSystemRoleDefinitions(
|
|
83
|
-
Array.isArray(declared) ? declared : Object.values(declared)
|
|
84
|
-
)) {
|
|
85
|
-
roleScopes[role.name] = role.scopes
|
|
86
|
-
}
|
|
87
|
-
const scopes = personaScopes(input.persona, roleScopes)
|
|
88
|
-
|
|
89
|
-
// Gated by the same scopes as the RPCs, because an agent is reached rather
|
|
90
|
-
// than declared: `CoreAgent.scopes` is checked against the session, so a
|
|
91
|
-
// persona finds the specialists its roles unlock and no others.
|
|
92
|
-
const agents = reachableAgents(input.agentsMeta ?? {}, scopes)
|
|
93
|
-
|
|
94
|
-
return { catalogue, intents, scopes, agents }
|
|
95
|
-
}
|