@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,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Envelope actions for request/response RPC carried over an already-open
|
|
3
|
-
* channel. Both directions share one socket, so every frame is tagged and
|
|
4
|
-
* correlated by `id`.
|
|
5
|
-
*/
|
|
6
|
-
export const CHANNEL_RPC_REQUEST = 'pikku-rpc-request'
|
|
7
|
-
export const CHANNEL_RPC_RESPONSE = 'pikku-rpc-response'
|
|
8
|
-
export const CHANNEL_RPC_PENDING = 'pikku-rpc-pending'
|
|
9
|
-
|
|
10
|
-
export interface ChannelRPCRequest {
|
|
11
|
-
action: typeof CHANNEL_RPC_REQUEST
|
|
12
|
-
id: string
|
|
13
|
-
funcName: string
|
|
14
|
-
data: unknown
|
|
15
|
-
traceId?: string
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export interface ChannelRPCResponse {
|
|
19
|
-
action: typeof CHANNEL_RPC_RESPONSE
|
|
20
|
-
id: string
|
|
21
|
-
ok: boolean
|
|
22
|
-
result?: unknown
|
|
23
|
-
error?: { name: string; message: string }
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* "Still working on it — a human is being asked." Stops the caller's timeout,
|
|
28
|
-
* which otherwise fails any approval slower than it and then discards the
|
|
29
|
-
* answer when it arrives. Grants nothing: a peer that sends it dishonestly can
|
|
30
|
-
* only keep its own call waiting.
|
|
31
|
-
*/
|
|
32
|
-
export interface ChannelRPCPending {
|
|
33
|
-
action: typeof CHANNEL_RPC_PENDING
|
|
34
|
-
id: string
|
|
35
|
-
reason?: string
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
const isRecord = (message: unknown): message is Record<string, unknown> =>
|
|
39
|
-
typeof message === 'object' && message !== null
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* The guards check the whole envelope, not just the action tag: `id` is peer
|
|
43
|
-
* input and is used as a map key, so a frame carrying one of the wrong type
|
|
44
|
-
* must not reach `settle`.
|
|
45
|
-
*/
|
|
46
|
-
export const isChannelRPCRequest = (
|
|
47
|
-
message: unknown
|
|
48
|
-
): message is ChannelRPCRequest =>
|
|
49
|
-
isRecord(message) &&
|
|
50
|
-
message.action === CHANNEL_RPC_REQUEST &&
|
|
51
|
-
typeof message.id === 'string' &&
|
|
52
|
-
message.id.length > 0 &&
|
|
53
|
-
typeof message.funcName === 'string' &&
|
|
54
|
-
message.funcName.length > 0 &&
|
|
55
|
-
(message.traceId === undefined || typeof message.traceId === 'string')
|
|
56
|
-
|
|
57
|
-
export const isChannelRPCResponse = (
|
|
58
|
-
message: unknown
|
|
59
|
-
): message is ChannelRPCResponse =>
|
|
60
|
-
isRecord(message) &&
|
|
61
|
-
message.action === CHANNEL_RPC_RESPONSE &&
|
|
62
|
-
typeof message.id === 'string' &&
|
|
63
|
-
message.id.length > 0 &&
|
|
64
|
-
typeof message.ok === 'boolean'
|
|
65
|
-
|
|
66
|
-
export const isChannelRPCPending = (
|
|
67
|
-
message: unknown
|
|
68
|
-
): message is ChannelRPCPending =>
|
|
69
|
-
isRecord(message) &&
|
|
70
|
-
message.action === CHANNEL_RPC_PENDING &&
|
|
71
|
-
typeof message.id === 'string' &&
|
|
72
|
-
message.id.length > 0 &&
|
|
73
|
-
(message.reason === undefined || typeof message.reason === 'string')
|
|
74
|
-
|
|
75
|
-
/** `reason` exists so a dropped socket cannot look like a resolved call. */
|
|
76
|
-
export class ChannelRPCError extends Error {
|
|
77
|
-
constructor(
|
|
78
|
-
message: string,
|
|
79
|
-
public readonly reason:
|
|
80
|
-
'timeout' | 'closed' | 'remote' | 'invalid' | 'unsupported'
|
|
81
|
-
) {
|
|
82
|
-
super(message)
|
|
83
|
-
this.name = 'ChannelRPCError'
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Whether a callable exposed to a remote decider needs a human to agree before
|
|
89
|
-
* it runs, and how to describe the invocation while asking.
|
|
90
|
-
*
|
|
91
|
-
* Shared with `AgentToolDef`: both are an allowlist of named callables
|
|
92
|
-
* invoked by something other than the code that wrote them. The runtime around
|
|
93
|
-
* them is not shared — an agent suspends and resumes, a reverse call is a live
|
|
94
|
-
* await.
|
|
95
|
-
*/
|
|
96
|
-
export interface ApprovalPolicy {
|
|
97
|
-
needsApproval: boolean
|
|
98
|
-
approvalDescriptionFn?: (input: unknown) => Promise<string> | string
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export type CapabilityHandler = (data: any) => Promise<unknown> | unknown
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* `needsApproval` is required here on purpose. On `AgentToolDef` the same
|
|
105
|
-
* field is optional and absence means "do not ask"; here absence means the
|
|
106
|
-
* opposite, so it must not be expressible — a bare function is the
|
|
107
|
-
* unclassified form.
|
|
108
|
-
*/
|
|
109
|
-
export interface CapabilityDef extends ApprovalPolicy {
|
|
110
|
-
execute: CapabilityHandler
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
export type Capability = CapabilityHandler | CapabilityDef
|
|
114
|
-
|
|
115
|
-
export type Capabilities = Record<string, Capability>
|
|
116
|
-
|
|
117
|
-
export const isCapabilityDef = (
|
|
118
|
-
capability: Capability
|
|
119
|
-
): capability is CapabilityDef =>
|
|
120
|
-
typeof capability === 'object' &&
|
|
121
|
-
capability !== null &&
|
|
122
|
-
typeof (capability as CapabilityDef).execute === 'function'
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* A bare function is unclassified, which resolves to needing approval:
|
|
126
|
-
* forgetting the annotation costs a prompt rather than costing a key.
|
|
127
|
-
*/
|
|
128
|
-
export const resolveCapability = (
|
|
129
|
-
capability: Capability
|
|
130
|
-
): { execute: CapabilityHandler } & ApprovalPolicy =>
|
|
131
|
-
isCapabilityDef(capability)
|
|
132
|
-
? capability
|
|
133
|
-
: { execute: capability, needsApproval: true }
|
|
134
|
-
|
|
135
|
-
/** Returning false refuses the call, and the peer is told so. */
|
|
136
|
-
export type ApprovalRequester = (request: {
|
|
137
|
-
funcName: string
|
|
138
|
-
data: unknown
|
|
139
|
-
description?: string
|
|
140
|
-
}) => Promise<boolean> | boolean
|
|
141
|
-
|
|
142
|
-
/** Checks one end of a call — arguments going out, or the answer coming back. */
|
|
143
|
-
export type ChannelRPCValidator = (
|
|
144
|
-
funcName: string,
|
|
145
|
-
value: unknown
|
|
146
|
-
) => Promise<void> | void
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* `remote` for wires with no peer that answers — a server-sent stream, an
|
|
150
|
-
* agent's output, a local CLI. Nothing is listening for a request on them, so
|
|
151
|
-
* the call is refused rather than waiting out a timeout.
|
|
152
|
-
*/
|
|
153
|
-
export const unsupportedChannelRemote = async (
|
|
154
|
-
funcName: string
|
|
155
|
-
): Promise<never> => {
|
|
156
|
-
throw new ChannelRPCError(
|
|
157
|
-
`Cannot call "${funcName}" remotely: this channel has no peer that answers`,
|
|
158
|
-
'unsupported'
|
|
159
|
-
)
|
|
160
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { NotFoundError } from '../../errors/errors.js'
|
|
2
|
-
import { addFunction } from '../../function/function-runner.js'
|
|
3
|
-
import type { CorePikkuFunctionConfig } from '../../function/functions.types.js'
|
|
4
|
-
import { pikkuState, getSingletonServices } from '../../pikku-state.js'
|
|
5
|
-
import { coerceTopLevelDataFromSchema, validateSchema } from '../../schema.js'
|
|
6
|
-
import type { SessionService } from '../../services/user-session-service.js'
|
|
7
|
-
import { httpRouter } from '../http/routers/http-router.js'
|
|
8
|
-
import type {
|
|
9
|
-
ChannelMeta,
|
|
10
|
-
CoreChannel,
|
|
11
|
-
RunChannelOptions,
|
|
12
|
-
RunChannelParams,
|
|
13
|
-
} from './channel.types.js'
|
|
14
|
-
|
|
15
|
-
type HandlerConfig = CorePikkuFunctionConfig<any, any>
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The config to register for a channel handler: the handler itself when it is a
|
|
19
|
-
* direct function config, or its inner `func` when it is a wrapper.
|
|
20
|
-
*
|
|
21
|
-
* knowledge: decisions/internals/channel-message-handlers-accept-three-config-shapes.md
|
|
22
|
-
*/
|
|
23
|
-
const registeredHandler = (handler: unknown): HandlerConfig => {
|
|
24
|
-
const candidate = handler as { func?: unknown }
|
|
25
|
-
return typeof candidate.func === 'function'
|
|
26
|
-
? (handler as HandlerConfig)
|
|
27
|
-
: (candidate.func as HandlerConfig)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export const wireChannel = <
|
|
31
|
-
In,
|
|
32
|
-
Channel extends string,
|
|
33
|
-
ChannelConnect,
|
|
34
|
-
ChannelDisconnect,
|
|
35
|
-
ChannelFunctionMessage,
|
|
36
|
-
>(
|
|
37
|
-
channel: CoreChannel<
|
|
38
|
-
In,
|
|
39
|
-
Channel,
|
|
40
|
-
ChannelConnect,
|
|
41
|
-
ChannelDisconnect,
|
|
42
|
-
ChannelFunctionMessage
|
|
43
|
-
>
|
|
44
|
-
) => {
|
|
45
|
-
const channelsMeta = pikkuState(null, 'channel', 'meta')
|
|
46
|
-
const channelMeta = channelsMeta[channel.name]
|
|
47
|
-
if (!channelMeta) {
|
|
48
|
-
console.warn(
|
|
49
|
-
`[pikku] Skipping channel '${channel.name}' — metadata not found. Consider moving this wiring to its own file.`
|
|
50
|
-
)
|
|
51
|
-
return
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
if (channel.onConnect && channelMeta.connect) {
|
|
55
|
-
addFunction(
|
|
56
|
-
channelMeta.connect.pikkuFuncId,
|
|
57
|
-
registeredHandler(channel.onConnect)
|
|
58
|
-
)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
if (channel.onDisconnect && channelMeta.disconnect) {
|
|
62
|
-
addFunction(
|
|
63
|
-
channelMeta.disconnect.pikkuFuncId,
|
|
64
|
-
registeredHandler(channel.onDisconnect)
|
|
65
|
-
)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (channel.onMessage && channelMeta.message?.pikkuFuncId) {
|
|
69
|
-
addFunction(
|
|
70
|
-
channelMeta.message.pikkuFuncId,
|
|
71
|
-
registeredHandler(channel.onMessage)
|
|
72
|
-
)
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (channel.onMessageWiring && channelMeta.messageWirings) {
|
|
76
|
-
Object.entries(channel.onMessageWiring).forEach(([channelKey, wirings]) => {
|
|
77
|
-
const channelWirings = channelMeta.messageWirings[channelKey]
|
|
78
|
-
if (!channelWirings) return
|
|
79
|
-
|
|
80
|
-
Object.entries(wirings).forEach(([wiringKey, handler]) => {
|
|
81
|
-
const wiringMeta = channelWirings[wiringKey]
|
|
82
|
-
if (!wiringMeta) return
|
|
83
|
-
|
|
84
|
-
addFunction(wiringMeta.pikkuFuncId, registeredHandler(handler))
|
|
85
|
-
})
|
|
86
|
-
})
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
pikkuState(null, 'channel', 'channels').set(channel.name, channel)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const getMatchingChannelConfig = (path: string) => {
|
|
93
|
-
const matchedPath = httpRouter.match('get', path)
|
|
94
|
-
if (!matchedPath) {
|
|
95
|
-
return null
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const meta = pikkuState(null, 'channel', 'meta')
|
|
99
|
-
const channelMeta = Object.values(meta).find(
|
|
100
|
-
(channelConfig) => channelConfig.route === matchedPath.route
|
|
101
|
-
)
|
|
102
|
-
if (!channelMeta) {
|
|
103
|
-
return null
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const channels = pikkuState(null, 'channel', 'channels')
|
|
107
|
-
const channelConfig = channels.get(channelMeta.name)
|
|
108
|
-
if (!channelConfig) {
|
|
109
|
-
return null
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return {
|
|
113
|
-
matchedPath,
|
|
114
|
-
params: matchedPath.params,
|
|
115
|
-
channelConfig,
|
|
116
|
-
schemaName: channelMeta.input,
|
|
117
|
-
meta: channelMeta,
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export const openChannel = async ({
|
|
122
|
-
route,
|
|
123
|
-
coerceDataFromSchema = true,
|
|
124
|
-
request,
|
|
125
|
-
}: Pick<CoreChannel<unknown, string>, 'route'> &
|
|
126
|
-
RunChannelParams<unknown> & {
|
|
127
|
-
userSession: SessionService<any>
|
|
128
|
-
} & RunChannelOptions): Promise<{
|
|
129
|
-
openingData: unknown
|
|
130
|
-
channelConfig: CoreChannel<unknown, any>
|
|
131
|
-
meta: ChannelMeta
|
|
132
|
-
}> => {
|
|
133
|
-
const singletonServices = getSingletonServices()
|
|
134
|
-
const matchingChannel = getMatchingChannelConfig(route)
|
|
135
|
-
if (!matchingChannel) {
|
|
136
|
-
singletonServices.logger.info(`Channel not found: ${route}`)
|
|
137
|
-
throw new NotFoundError(`Channel not found: ${route}`)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
const { params, channelConfig, schemaName, meta } = matchingChannel
|
|
141
|
-
|
|
142
|
-
const requiresSession = channelConfig.auth !== false
|
|
143
|
-
request?.setParams(params)
|
|
144
|
-
|
|
145
|
-
singletonServices.logger.info(
|
|
146
|
-
`Matched channel: ${channelConfig.name} | route: ${channelConfig.route} | auth: ${requiresSession.toString()}`
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
let openingData: any | undefined
|
|
150
|
-
if (request) {
|
|
151
|
-
openingData = await request.data()
|
|
152
|
-
if (coerceDataFromSchema && schemaName) {
|
|
153
|
-
coerceTopLevelDataFromSchema(schemaName, openingData)
|
|
154
|
-
}
|
|
155
|
-
await validateSchema(
|
|
156
|
-
singletonServices.logger,
|
|
157
|
-
singletonServices.schema,
|
|
158
|
-
schemaName,
|
|
159
|
-
openingData
|
|
160
|
-
)
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return { openingData, channelConfig, meta }
|
|
164
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
export type Channel<ChannelType = unknown, OpeningData = unknown> = {
|
|
2
|
-
channelId: string
|
|
3
|
-
channelName: string
|
|
4
|
-
channelObject?: ChannelType
|
|
5
|
-
openingData?: OpeningData
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export abstract class ChannelStore<
|
|
9
|
-
ChannelType = unknown,
|
|
10
|
-
OpeningData = unknown,
|
|
11
|
-
TypedChannel = Channel<ChannelType, OpeningData>,
|
|
12
|
-
> {
|
|
13
|
-
public abstract addChannel(
|
|
14
|
-
channel: Channel<ChannelType, OpeningData>
|
|
15
|
-
): Promise<void> | void
|
|
16
|
-
public abstract removeChannels(channelId: string[]): Promise<void> | void
|
|
17
|
-
public abstract setPikkuUserId(
|
|
18
|
-
channelId: string,
|
|
19
|
-
pikkuUserId: string | null
|
|
20
|
-
): Promise<void> | void
|
|
21
|
-
public abstract getChannel(
|
|
22
|
-
channelId: string
|
|
23
|
-
):
|
|
24
|
-
| Promise<TypedChannel & { pikkuUserId?: string }>
|
|
25
|
-
| (TypedChannel & { pikkuUserId?: string })
|
|
26
|
-
|
|
27
|
-
public abstract setState(
|
|
28
|
-
channelId: string,
|
|
29
|
-
state: unknown
|
|
30
|
-
): Promise<void> | void
|
|
31
|
-
public abstract getState(
|
|
32
|
-
channelId: string
|
|
33
|
-
): Promise<unknown | undefined> | unknown | undefined
|
|
34
|
-
public abstract clearState(channelId: string): Promise<void> | void
|
|
35
|
-
}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
HTTPFunctionMetaInputTypes,
|
|
3
|
-
PikkuHTTPRequest,
|
|
4
|
-
PikkuHTTPResponse,
|
|
5
|
-
} from '../http/http.types.js'
|
|
6
|
-
import type {
|
|
7
|
-
CorePikkuMiddleware,
|
|
8
|
-
MiddlewareMetadata,
|
|
9
|
-
} from '../../middleware/middleware.types.js'
|
|
10
|
-
export type BinaryData = ArrayBuffer | Uint8Array
|
|
11
|
-
|
|
12
|
-
export type CorePikkuChannelMiddleware<Services = any, Event = unknown> = (
|
|
13
|
-
services: Services,
|
|
14
|
-
event: Event,
|
|
15
|
-
next: (event: Event | Event[] | null) => Promise<void> | void
|
|
16
|
-
) => Promise<void> | void
|
|
17
|
-
|
|
18
|
-
export type CorePikkuChannelMiddlewareFactory<
|
|
19
|
-
In = any,
|
|
20
|
-
Services = any,
|
|
21
|
-
Event = unknown,
|
|
22
|
-
> = (input: In) => CorePikkuChannelMiddleware<Services, Event>
|
|
23
|
-
import type {
|
|
24
|
-
CorePikkuFunction,
|
|
25
|
-
CorePikkuFunctionConfig,
|
|
26
|
-
CorePikkuFunctionSessionless,
|
|
27
|
-
CorePikkuPermission,
|
|
28
|
-
} from '../../function/functions.types.js'
|
|
29
|
-
|
|
30
|
-
export type RunChannelOptions = Partial<{
|
|
31
|
-
skipUserSession: boolean
|
|
32
|
-
respondWith404: boolean
|
|
33
|
-
coerceDataFromSchema: boolean
|
|
34
|
-
logWarningsForStatusCodes: number[]
|
|
35
|
-
bubbleErrors: boolean
|
|
36
|
-
}>
|
|
37
|
-
|
|
38
|
-
export type RunChannelParams<ChannelData> = {
|
|
39
|
-
channelId: string
|
|
40
|
-
request?: PikkuHTTPRequest<ChannelData>
|
|
41
|
-
response?: PikkuHTTPResponse
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export interface ChannelMessageMeta {
|
|
45
|
-
pikkuFuncId: string
|
|
46
|
-
packageName?: string
|
|
47
|
-
summary?: string
|
|
48
|
-
description?: string
|
|
49
|
-
errors?: string[]
|
|
50
|
-
tags?: string[]
|
|
51
|
-
middleware?: MiddlewareMetadata[]
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface ChannelMeta {
|
|
55
|
-
name: string
|
|
56
|
-
route: string
|
|
57
|
-
params?: string[]
|
|
58
|
-
query?: string[]
|
|
59
|
-
input: string | null
|
|
60
|
-
inputTypes?: HTTPFunctionMetaInputTypes
|
|
61
|
-
connect: ChannelMessageMeta | null
|
|
62
|
-
disconnect: ChannelMessageMeta | null
|
|
63
|
-
message: ChannelMessageMeta | null
|
|
64
|
-
messageWirings: Record<string, Record<string, ChannelMessageMeta>>
|
|
65
|
-
binary?: boolean | null
|
|
66
|
-
/** Set when the channel was wired by a gateway rather than declared directly. */
|
|
67
|
-
gateway?: boolean
|
|
68
|
-
summary?: string
|
|
69
|
-
description?: string
|
|
70
|
-
errors?: string[]
|
|
71
|
-
tags?: string[]
|
|
72
|
-
middleware?: MiddlewareMetadata[] // Pre-resolved middleware chain (tag + explicit)
|
|
73
|
-
channelMiddleware?: MiddlewareMetadata[]
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export type ChannelsMeta = Record<string, ChannelMeta>
|
|
77
|
-
|
|
78
|
-
export type CoreChannel<
|
|
79
|
-
ChannelData,
|
|
80
|
-
Channel extends string,
|
|
81
|
-
ChannelConnect = CorePikkuFunctionConfig<
|
|
82
|
-
| CorePikkuFunction<void, unknown>
|
|
83
|
-
| CorePikkuFunctionSessionless<void, unknown>,
|
|
84
|
-
CorePikkuPermission<void>,
|
|
85
|
-
CorePikkuMiddleware
|
|
86
|
-
>,
|
|
87
|
-
ChannelDisconnect = CorePikkuFunctionConfig<
|
|
88
|
-
CorePikkuFunction<void, void> | CorePikkuFunctionSessionless<void, void>,
|
|
89
|
-
CorePikkuPermission<void>,
|
|
90
|
-
CorePikkuMiddleware
|
|
91
|
-
>,
|
|
92
|
-
ChannelFunctionMessage = CorePikkuFunctionConfig<
|
|
93
|
-
| CorePikkuFunction<unknown, unknown>
|
|
94
|
-
| CorePikkuFunctionSessionless<unknown, unknown>,
|
|
95
|
-
CorePikkuPermission<unknown>,
|
|
96
|
-
CorePikkuMiddleware
|
|
97
|
-
>,
|
|
98
|
-
PikkuPermission = CorePikkuPermission<ChannelData>,
|
|
99
|
-
PikkuMiddleware = CorePikkuMiddleware,
|
|
100
|
-
> = {
|
|
101
|
-
/** Unique across the project. It is how the channel is addressed in `pikku meta` and by the generated client. */
|
|
102
|
-
name: string
|
|
103
|
-
/** The path a client opens the socket on. */
|
|
104
|
-
route: Channel
|
|
105
|
-
/** Runs once when a client connects, before any message. Its return value is sent as the first message. */
|
|
106
|
-
onConnect?:
|
|
107
|
-
| ChannelConnect
|
|
108
|
-
| {
|
|
109
|
-
func?: ChannelConnect
|
|
110
|
-
middleware?: PikkuMiddleware[]
|
|
111
|
-
}
|
|
112
|
-
onDisconnect?:
|
|
113
|
-
| ChannelDisconnect
|
|
114
|
-
| {
|
|
115
|
-
func?: ChannelDisconnect
|
|
116
|
-
middleware?: PikkuMiddleware[]
|
|
117
|
-
}
|
|
118
|
-
/** Handles any message that no `onMessageWiring` entry claimed. Without one, an unrouted message is dropped. */
|
|
119
|
-
onMessage?: ChannelFunctionMessage
|
|
120
|
-
/** Routes messages by a key in their payload: the outer key is the field to switch on, the inner key its value. This is how one socket carries many operations. */
|
|
121
|
-
onMessageWiring?: Record<
|
|
122
|
-
string,
|
|
123
|
-
Record<
|
|
124
|
-
string,
|
|
125
|
-
| ChannelFunctionMessage
|
|
126
|
-
| {
|
|
127
|
-
func: ChannelFunctionMessage
|
|
128
|
-
auth?: boolean
|
|
129
|
-
middleware?: PikkuMiddleware[]
|
|
130
|
-
}
|
|
131
|
-
>
|
|
132
|
-
>
|
|
133
|
-
/** Wraps the connection: it runs on connect, where the session is established, not on every message. */
|
|
134
|
-
middleware?: PikkuMiddleware[]
|
|
135
|
-
/** Wraps every message, which is where per-message concerns like rate limiting belong. */
|
|
136
|
-
channelMiddleware?: Array<
|
|
137
|
-
CorePikkuChannelMiddleware | CorePikkuChannelMiddlewareFactory
|
|
138
|
-
>
|
|
139
|
-
/** Whether opening the channel requires a session. Defaults to true — a channel is closed unless it says otherwise. */
|
|
140
|
-
auth?: boolean
|
|
141
|
-
/** Whether this channel carries binary frames. Text frames are still parsed as JSON. */
|
|
142
|
-
binary?: boolean | null
|
|
143
|
-
/** Handles binary frames, which never reach `onMessage` because they are not JSON. Return a value to reply in kind. */
|
|
144
|
-
onBinaryMessage?: (
|
|
145
|
-
services: any,
|
|
146
|
-
data: BinaryData,
|
|
147
|
-
channel: PikkuChannel<ChannelData, any>
|
|
148
|
-
) => Promise<BinaryData | void> | BinaryData | void
|
|
149
|
-
/** Filters this channel in and out of a build — see the `tags` option on `pikku all`. It has no effect at runtime. */
|
|
150
|
-
tags?: string[]
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* The shape of `channel.remote` before generated types narrow it to the app's
|
|
155
|
-
* own functions. Loose on purpose: core cannot know the names.
|
|
156
|
-
*/
|
|
157
|
-
export type ChannelRemote = (funcName: string, data?: any) => Promise<any>
|
|
158
|
-
|
|
159
|
-
export interface PikkuChannel<
|
|
160
|
-
OpeningData,
|
|
161
|
-
out Out,
|
|
162
|
-
Remote extends (...args: any[]) => any = ChannelRemote,
|
|
163
|
-
> {
|
|
164
|
-
channelId: string
|
|
165
|
-
// Query parameters or url parameters the channel was created with.
|
|
166
|
-
openingData: OpeningData
|
|
167
|
-
// Fails once the stream has been closed.
|
|
168
|
-
send(data: Out, isBinary?: boolean): Promise<void> | void
|
|
169
|
-
sendBinary(data: BinaryData): Promise<void> | void
|
|
170
|
-
close(): Promise<void> | void
|
|
171
|
-
state: 'initial' | 'open' | 'closed'
|
|
172
|
-
setState<T>(state: T): Promise<void> | void
|
|
173
|
-
getState<T>(): Promise<T | undefined> | T | undefined
|
|
174
|
-
clearState(): Promise<void> | void
|
|
175
|
-
/**
|
|
176
|
-
* Calls a function on the peer at the other end of this connection and waits
|
|
177
|
-
* for its answer — the only way to reach a peer with no address of its own.
|
|
178
|
-
* The peer decides what it answers to; an unregistered name is refused.
|
|
179
|
-
*/
|
|
180
|
-
remote: Remote
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
export interface PikkuChannelHandler<OpeningData = unknown, Out = unknown> {
|
|
184
|
-
send(message: Out, isBinary?: boolean): Promise<void> | void
|
|
185
|
-
sendBinary(data: BinaryData): Promise<void> | void
|
|
186
|
-
getChannel(): PikkuChannel<OpeningData, Out>
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export type PikkuChannelHandlerFactory<OpeningData = unknown, Out = unknown> = (
|
|
190
|
-
channelId: string,
|
|
191
|
-
channelName: string,
|
|
192
|
-
openingData: OpeningData
|
|
193
|
-
) => PikkuChannelHandler<OpeningData, Out>
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export interface EventHubService<Topics extends Record<string, any>> {
|
|
2
|
-
subscribe<T extends keyof Topics>(
|
|
3
|
-
topic: T,
|
|
4
|
-
channelId: string
|
|
5
|
-
): Promise<void> | void
|
|
6
|
-
unsubscribe<T extends keyof Topics>(
|
|
7
|
-
topic: T,
|
|
8
|
-
channelId: string
|
|
9
|
-
): Promise<void> | void
|
|
10
|
-
publish<T extends keyof Topics>(
|
|
11
|
-
topic: T,
|
|
12
|
-
channelId: string | null,
|
|
13
|
-
data: Topics[T],
|
|
14
|
-
isBinary?: boolean
|
|
15
|
-
): Promise<void> | void
|
|
16
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export abstract class EventHubStore<
|
|
2
|
-
EventTopics extends Record<string, any> = {},
|
|
3
|
-
> {
|
|
4
|
-
public abstract getChannelIdsForTopic(topic: string): Promise<string[]>
|
|
5
|
-
public abstract subscribe<T extends keyof EventTopics>(
|
|
6
|
-
topic: T,
|
|
7
|
-
channelId: string
|
|
8
|
-
): Promise<boolean>
|
|
9
|
-
public abstract unsubscribe<T extends keyof EventTopics>(
|
|
10
|
-
topic: T,
|
|
11
|
-
channelId: string
|
|
12
|
-
): Promise<boolean>
|
|
13
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export { wireChannel } from './channel-runner.js'
|
|
2
|
-
export {
|
|
3
|
-
addChannelMiddleware,
|
|
4
|
-
combineChannelMiddleware,
|
|
5
|
-
} from './channel-middleware-runner.js'
|
|
6
|
-
export { logChannels } from './log-channels.js'
|
|
7
|
-
export { PikkuAbstractChannelHandler } from './pikku-abstract-channel-handler.js'
|
|
8
|
-
export type { EventHubService } from './eventhub-service.js'
|
|
9
|
-
export { ChannelStore } from './channel-store.js'
|
|
10
|
-
export type { Channel } from './channel-store.js'
|
|
11
|
-
export { EventHubStore } from './eventhub-store.js'
|
|
12
|
-
export type {
|
|
13
|
-
BinaryData,
|
|
14
|
-
ChannelsMeta,
|
|
15
|
-
CoreChannel,
|
|
16
|
-
CorePikkuChannelMiddleware,
|
|
17
|
-
CorePikkuChannelMiddlewareFactory,
|
|
18
|
-
ChannelMessageMeta,
|
|
19
|
-
ChannelMeta,
|
|
20
|
-
PikkuChannel,
|
|
21
|
-
PikkuChannelHandlerFactory,
|
|
22
|
-
} from './channel.types.js'
|
|
23
|
-
export { defineChannelRoutes } from './define-channel-routes.js'
|
|
24
|
-
export {
|
|
25
|
-
ChannelDeploymentService,
|
|
26
|
-
ChannelRPCError,
|
|
27
|
-
ChannelRPCRegistry,
|
|
28
|
-
unsupportedChannelRemote,
|
|
29
|
-
} from './channel-rpc.js'
|
|
30
|
-
export type {
|
|
31
|
-
ApprovalPolicy,
|
|
32
|
-
ApprovalRequester,
|
|
33
|
-
Capabilities,
|
|
34
|
-
Capability,
|
|
35
|
-
CapabilityHandler,
|
|
36
|
-
ChannelRPCPending,
|
|
37
|
-
ChannelRPCRequest,
|
|
38
|
-
ChannelRPCResponse,
|
|
39
|
-
ChannelRPCValidator,
|
|
40
|
-
} from './channel-rpc.js'
|