@pikku/core 0.11.2 → 0.12.0
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 +33 -2
- package/dist/crypto-utils.d.ts +2 -0
- package/dist/crypto-utils.js +78 -0
- package/dist/errors/errors.d.ts +8 -0
- package/dist/errors/errors.js +16 -0
- package/dist/errors/index.d.ts +0 -1
- package/dist/errors/index.js +0 -1
- package/dist/function/function-runner.d.ts +7 -1
- package/dist/function/function-runner.js +82 -23
- package/dist/function/functions.types.d.ts +31 -87
- package/dist/function/functions.types.js +16 -46
- package/dist/function/index.d.ts +2 -2
- package/dist/function/index.js +1 -2
- package/dist/handle-error.js +1 -10
- package/dist/index.d.ts +28 -26
- package/dist/index.js +18 -29
- package/dist/middleware/auth-apikey.d.ts +2 -2
- package/dist/middleware/auth-apikey.js +3 -3
- package/dist/middleware/auth-bearer.d.ts +2 -2
- package/dist/middleware/auth-bearer.js +3 -6
- package/dist/middleware/auth-cookie.d.ts +2 -2
- package/dist/middleware/auth-cookie.js +6 -8
- package/dist/middleware/cors.d.ts +46 -0
- package/dist/middleware/cors.js +73 -0
- package/dist/middleware/index.d.ts +5 -3
- package/dist/middleware/index.js +5 -3
- package/dist/middleware/remote-auth.d.ts +5 -0
- package/dist/middleware/remote-auth.js +55 -0
- package/dist/middleware/timeout.d.ts +2 -2
- package/dist/middleware-runner.js +8 -10
- package/dist/permissions.js +11 -15
- package/dist/pikku-state.d.ts +1 -0
- package/dist/pikku-state.js +18 -8
- package/dist/schema.js +12 -11
- package/dist/services/ai-agent-runner-service.d.ts +24 -0
- package/dist/services/ai-agent-runner-service.js +1 -0
- package/dist/services/ai-run-state-service.d.ts +13 -0
- package/dist/services/ai-run-state-service.js +1 -0
- package/dist/services/ai-storage-service.d.ts +18 -0
- package/dist/services/ai-storage-service.js +1 -0
- package/dist/services/deployment-service.d.ts +19 -0
- package/dist/services/deployment-service.js +1 -0
- package/dist/services/gopass-secrets.d.ts +47 -0
- package/dist/services/gopass-secrets.js +94 -0
- package/dist/services/in-memory-trigger-service.d.ts +23 -0
- package/dist/services/in-memory-trigger-service.js +50 -0
- package/dist/services/in-memory-workflow-service.d.ts +59 -0
- package/dist/services/in-memory-workflow-service.js +287 -0
- package/dist/services/index.d.ts +25 -11
- package/dist/services/index.js +10 -13
- package/dist/services/local-secrets.d.ts +23 -0
- package/dist/services/local-secrets.js +45 -0
- package/dist/services/local-variables.d.ts +5 -0
- package/dist/services/local-variables.js +18 -0
- package/dist/services/scheduler-service.d.ts +21 -1
- package/dist/services/scheduler-service.js +14 -0
- package/dist/services/schema-service.d.ts +6 -0
- package/dist/services/scoped-secret-service.d.ts +16 -0
- package/dist/services/scoped-secret-service.js +35 -0
- package/dist/services/secret-service.d.ts +25 -4
- package/dist/services/trigger-service.d.ts +23 -0
- package/dist/services/trigger-service.js +1 -0
- package/dist/services/typed-secret-service.d.ts +30 -0
- package/dist/services/typed-secret-service.js +40 -0
- package/dist/services/typed-variables-service.d.ts +27 -0
- package/dist/services/typed-variables-service.js +46 -0
- package/dist/services/user-session-service.d.ts +13 -0
- package/dist/services/user-session-service.js +17 -0
- package/dist/services/variables-service.d.ts +5 -0
- package/dist/services/workflow-service.d.ts +9 -4
- package/dist/types/core.types.d.ts +48 -12
- package/dist/types/core.types.js +8 -1
- package/dist/types/state.types.d.ts +43 -51
- package/dist/utils.d.ts +3 -2
- package/dist/utils.js +15 -3
- package/dist/version.d.ts +6 -0
- package/dist/version.js +19 -0
- package/dist/wirings/ai-agent/ai-agent-memory.d.ts +29 -0
- package/dist/wirings/ai-agent/ai-agent-memory.js +199 -0
- package/dist/wirings/ai-agent/ai-agent-model-config.d.ts +9 -0
- package/dist/wirings/ai-agent/ai-agent-model-config.js +36 -0
- package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +60 -0
- package/dist/wirings/ai-agent/ai-agent-prepare.js +312 -0
- package/dist/wirings/ai-agent/ai-agent-registry.d.ts +15 -0
- package/dist/wirings/ai-agent/ai-agent-registry.js +47 -0
- package/dist/wirings/ai-agent/ai-agent-runner.d.ts +3 -0
- package/dist/wirings/ai-agent/ai-agent-runner.js +96 -0
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +11 -0
- package/dist/wirings/ai-agent/ai-agent-stream.js +503 -0
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +254 -0
- package/dist/wirings/ai-agent/ai-agent.types.js +1 -0
- package/dist/wirings/ai-agent/index.d.ts +5 -0
- package/dist/wirings/ai-agent/index.js +4 -0
- package/dist/wirings/channel/channel-common.d.ts +7 -4
- package/dist/wirings/channel/channel-common.js +15 -8
- package/dist/wirings/channel/channel-handler.js +12 -3
- package/dist/wirings/channel/channel-middleware-runner.d.ts +9 -0
- package/dist/wirings/channel/channel-middleware-runner.js +73 -0
- package/dist/wirings/channel/channel-runner.js +7 -7
- package/dist/wirings/channel/channel.types.d.ts +5 -1
- package/dist/wirings/channel/define-channel-routes.d.ts +21 -0
- package/dist/wirings/channel/define-channel-routes.js +23 -0
- package/dist/wirings/channel/index.d.ts +10 -8
- package/dist/wirings/channel/index.js +7 -8
- package/dist/wirings/channel/local/index.d.ts +3 -3
- package/dist/wirings/channel/local/index.js +3 -3
- package/dist/wirings/channel/local/local-channel-runner.js +18 -6
- package/dist/wirings/channel/serverless/index.d.ts +1 -1
- package/dist/wirings/channel/serverless/index.js +1 -1
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +15 -4
- package/dist/wirings/cli/channel/index.d.ts +1 -1
- package/dist/wirings/cli/channel/index.js +1 -1
- package/dist/wirings/cli/cli-runner.d.ts +1 -1
- package/dist/wirings/cli/cli-runner.js +12 -8
- package/dist/wirings/cli/cli.types.d.ts +6 -6
- package/dist/wirings/cli/define-cli-commands.d.ts +19 -0
- package/dist/wirings/cli/define-cli-commands.js +20 -0
- package/dist/wirings/cli/index.d.ts +2 -3
- package/dist/wirings/cli/index.js +1 -3
- package/dist/wirings/http/http-routes.d.ts +69 -0
- package/dist/wirings/http/http-routes.js +139 -0
- package/dist/wirings/http/http-runner.js +49 -23
- package/dist/wirings/http/http.types.d.ts +78 -38
- package/dist/wirings/http/index.d.ts +5 -4
- package/dist/wirings/http/index.js +4 -3
- package/dist/wirings/mcp/index.d.ts +4 -3
- package/dist/wirings/mcp/index.js +3 -3
- package/dist/wirings/mcp/mcp-runner.d.ts +1 -3
- package/dist/wirings/mcp/mcp-runner.js +25 -39
- package/dist/wirings/mcp/mcp.types.d.ts +3 -3
- package/dist/wirings/node/index.d.ts +2 -0
- package/dist/wirings/node/index.js +1 -0
- package/dist/wirings/node/node.types.d.ts +20 -0
- package/dist/wirings/node/node.types.js +1 -0
- package/dist/wirings/oauth2/index.d.ts +3 -0
- package/dist/wirings/oauth2/index.js +2 -0
- package/dist/wirings/oauth2/oauth2-client.d.ts +47 -0
- package/dist/wirings/oauth2/oauth2-client.js +267 -0
- package/dist/wirings/oauth2/oauth2.types.d.ts +65 -0
- package/dist/wirings/oauth2/oauth2.types.js +4 -0
- package/dist/wirings/oauth2/wire-oauth2-credential.d.ts +20 -0
- package/dist/wirings/oauth2/wire-oauth2-credential.js +21 -0
- package/dist/wirings/queue/index.d.ts +2 -2
- package/dist/wirings/queue/index.js +1 -1
- package/dist/wirings/queue/queue-runner.d.ts +7 -0
- package/dist/wirings/queue/queue-runner.js +17 -6
- package/dist/wirings/queue/queue.types.d.ts +8 -2
- package/dist/wirings/rpc/index.d.ts +1 -1
- package/dist/wirings/rpc/index.js +1 -1
- package/dist/wirings/rpc/rpc-runner.d.ts +33 -5
- package/dist/wirings/rpc/rpc-runner.js +134 -16
- package/dist/wirings/rpc/rpc-types.d.ts +8 -4
- package/dist/wirings/scheduler/index.d.ts +3 -3
- package/dist/wirings/scheduler/index.js +2 -3
- package/dist/wirings/scheduler/scheduler-runner.d.ts +5 -0
- package/dist/wirings/scheduler/scheduler-runner.js +23 -5
- package/dist/wirings/secret/index.d.ts +3 -0
- package/dist/wirings/secret/index.js +2 -0
- package/dist/wirings/secret/secret.types.d.ts +27 -0
- package/dist/wirings/secret/secret.types.js +1 -0
- package/dist/wirings/secret/validate-secret-definitions.d.ts +6 -0
- package/dist/wirings/secret/validate-secret-definitions.js +55 -0
- package/dist/wirings/trigger/index.d.ts +3 -2
- package/dist/wirings/trigger/index.js +2 -2
- package/dist/wirings/trigger/pikku-trigger-service.d.ts +26 -0
- package/dist/wirings/trigger/pikku-trigger-service.js +75 -0
- package/dist/wirings/trigger/trigger-runner.d.ts +21 -8
- package/dist/wirings/trigger/trigger-runner.js +46 -18
- package/dist/wirings/trigger/trigger.types.d.ts +99 -11
- package/dist/wirings/trigger/trigger.types.js +40 -1
- package/dist/wirings/variable/index.d.ts +3 -0
- package/dist/wirings/variable/index.js +2 -0
- package/dist/wirings/variable/validate-variable-definitions.d.ts +6 -0
- package/dist/wirings/variable/validate-variable-definitions.js +45 -0
- package/dist/wirings/variable/variable.types.d.ts +18 -0
- package/dist/wirings/variable/variable.types.js +1 -0
- package/dist/wirings/workflow/dsl/index.d.ts +1 -1
- package/dist/wirings/workflow/dsl/workflow-dsl.types.d.ts +7 -1
- package/dist/wirings/workflow/dsl/workflow-runner.js +3 -2
- package/dist/wirings/workflow/graph/graph-node.d.ts +1 -6
- package/dist/wirings/workflow/graph/graph-runner.d.ts +5 -31
- package/dist/wirings/workflow/graph/graph-runner.js +384 -296
- package/dist/wirings/workflow/graph/index.d.ts +4 -3
- package/dist/wirings/workflow/graph/index.js +3 -3
- package/dist/wirings/workflow/graph/template.d.ts +15 -0
- package/dist/wirings/workflow/graph/template.js +27 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.d.ts +15 -0
- package/dist/wirings/workflow/graph/wire-workflow-graph.js +8 -0
- package/dist/wirings/workflow/graph/workflow-graph.types.d.ts +0 -13
- package/dist/wirings/workflow/index.d.ts +6 -6
- package/dist/wirings/workflow/index.js +6 -4
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +28 -14
- package/dist/wirings/workflow/pikku-workflow-service.js +200 -56
- package/dist/wirings/workflow/workflow-helpers.d.ts +36 -0
- package/dist/wirings/workflow/workflow-helpers.js +38 -0
- package/dist/wirings/workflow/workflow-utils.d.ts +1 -23
- package/dist/wirings/workflow/workflow-utils.js +1 -66
- package/dist/wirings/workflow/workflow.types.d.ts +40 -93
- package/package.json +13 -15
- package/run-tests.sh +4 -1
- package/src/crypto-utils.ts +99 -0
- package/src/errors/errors.ts +17 -0
- package/src/errors/index.ts +0 -1
- package/src/factory-functions.test.ts +42 -2
- package/src/function/function-runner.test.ts +4 -11
- package/src/function/function-runner.ts +114 -29
- package/src/function/functions.types.ts +62 -132
- package/src/function/index.ts +5 -2
- package/src/handle-error.ts +2 -10
- package/src/index.ts +99 -25
- package/src/middleware/auth-apikey.test.ts +15 -12
- package/src/middleware/auth-apikey.ts +3 -3
- package/src/middleware/auth-bearer.test.ts +17 -14
- package/src/middleware/auth-bearer.ts +25 -27
- package/src/middleware/auth-cookie.test.ts +16 -13
- package/src/middleware/auth-cookie.ts +6 -8
- package/src/middleware/cors.ts +96 -0
- package/src/middleware/index.ts +5 -3
- package/src/middleware/remote-auth.ts +68 -0
- package/src/middleware-runner.test.ts +122 -0
- package/src/middleware-runner.ts +12 -12
- package/src/permissions.test.ts +81 -7
- package/src/permissions.ts +15 -17
- package/src/pikku-state.ts +20 -8
- package/src/run-tests-script.test.ts +49 -0
- package/src/schema.ts +18 -15
- package/src/services/ai-agent-runner-service.ts +29 -0
- package/src/services/ai-run-state-service.ts +20 -0
- package/src/services/ai-storage-service.ts +39 -0
- package/src/services/deployment-service.ts +22 -0
- package/src/services/gopass-secrets.ts +95 -0
- package/src/services/in-memory-trigger-service.ts +68 -0
- package/src/services/in-memory-workflow-service.ts +395 -0
- package/src/services/index.ts +49 -14
- package/src/services/local-secrets.ts +51 -0
- package/src/services/local-variables.ts +22 -0
- package/src/services/scheduler-service.ts +29 -1
- package/src/services/schema-service.ts +7 -0
- package/src/services/scoped-secret-service.ts +41 -0
- package/src/services/secret-service.ts +25 -4
- package/src/services/trigger-service.ts +38 -0
- package/src/services/typed-secret-service.ts +70 -0
- package/src/services/typed-variables-service.ts +81 -0
- package/src/services/user-session-service.ts +23 -0
- package/src/services/variables-service.ts +5 -0
- package/src/services/workflow-service.ts +22 -2
- package/src/types/core.types.ts +76 -11
- package/src/types/state.types.ts +37 -63
- package/src/utils.ts +20 -6
- package/src/version.test.ts +80 -0
- package/src/version.ts +25 -0
- package/src/wirings/ai-agent/ai-agent-memory.ts +300 -0
- package/src/wirings/ai-agent/ai-agent-model-config.ts +43 -0
- package/src/wirings/ai-agent/ai-agent-prepare.ts +470 -0
- package/src/wirings/ai-agent/ai-agent-registry.test.ts +37 -0
- package/src/wirings/ai-agent/ai-agent-registry.ts +82 -0
- package/src/wirings/ai-agent/ai-agent-runner.test.ts +75 -0
- package/src/wirings/ai-agent/ai-agent-runner.ts +137 -0
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +246 -0
- package/src/wirings/ai-agent/ai-agent-stream.ts +774 -0
- package/src/wirings/ai-agent/ai-agent.types.ts +273 -0
- package/src/wirings/ai-agent/index.ts +28 -0
- package/src/wirings/channel/channel-common.ts +32 -19
- package/src/wirings/channel/channel-handler.ts +17 -4
- package/src/wirings/channel/channel-middleware-runner.ts +119 -0
- package/src/wirings/channel/channel-runner.ts +9 -10
- package/src/wirings/channel/channel.types.ts +17 -1
- package/src/wirings/channel/define-channel-routes.ts +25 -0
- package/src/wirings/channel/index.ts +23 -8
- package/src/wirings/channel/local/index.ts +3 -3
- package/src/wirings/channel/local/local-channel-runner.test.ts +44 -1
- package/src/wirings/channel/local/local-channel-runner.ts +22 -6
- package/src/wirings/channel/serverless/index.ts +5 -1
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +20 -4
- package/src/wirings/cli/channel/index.ts +1 -1
- package/src/wirings/cli/cli-runner.test.ts +9 -9
- package/src/wirings/cli/cli-runner.ts +17 -10
- package/src/wirings/cli/cli.types.ts +11 -11
- package/src/wirings/cli/command-parser.test.ts +8 -8
- package/src/wirings/cli/define-cli-commands.ts +24 -0
- package/src/wirings/cli/index.ts +10 -4
- package/src/wirings/http/http-routes.test.ts +322 -0
- package/src/wirings/http/http-routes.ts +198 -0
- package/src/wirings/http/http-runner.test.ts +3 -3
- package/src/wirings/http/http-runner.ts +63 -29
- package/src/wirings/http/http.types.ts +121 -37
- package/src/wirings/http/index.ts +16 -4
- package/src/wirings/mcp/index.ts +27 -3
- package/src/wirings/mcp/mcp-endpoint-registry.test.ts +3 -3
- package/src/wirings/mcp/mcp-runner.ts +39 -50
- package/src/wirings/mcp/mcp.types.ts +3 -3
- package/src/wirings/node/index.ts +2 -0
- package/src/wirings/node/node.types.ts +23 -0
- package/src/wirings/oauth2/index.ts +3 -0
- package/src/wirings/oauth2/oauth2-client.test.ts +929 -0
- package/src/wirings/oauth2/oauth2-client.ts +335 -0
- package/src/wirings/oauth2/oauth2.types.ts +69 -0
- package/src/wirings/oauth2/wire-oauth2-credential.ts +23 -0
- package/src/wirings/queue/index.ts +14 -2
- package/src/wirings/queue/queue-runner.test.ts +97 -55
- package/src/wirings/queue/queue-runner.ts +33 -7
- package/src/wirings/queue/queue.types.ts +12 -2
- package/src/wirings/rpc/index.ts +1 -1
- package/src/wirings/rpc/rpc-runner.ts +187 -17
- package/src/wirings/rpc/rpc-types.ts +13 -4
- package/src/wirings/scheduler/index.ts +7 -4
- package/src/wirings/scheduler/scheduler-runner.test.ts +70 -26
- package/src/wirings/scheduler/scheduler-runner.ts +45 -5
- package/src/wirings/secret/index.ts +9 -0
- package/src/wirings/secret/secret.types.ts +32 -0
- package/src/wirings/secret/validate-secret-definitions.ts +82 -0
- package/src/wirings/trigger/index.ts +10 -2
- package/src/wirings/trigger/pikku-trigger-service.ts +134 -0
- package/src/wirings/trigger/trigger-runner.ts +80 -38
- package/src/wirings/trigger/trigger.types.ts +144 -22
- package/src/wirings/variable/index.ts +8 -0
- package/src/wirings/variable/validate-variable-definitions.ts +69 -0
- package/src/wirings/variable/variable.types.ts +22 -0
- package/src/wirings/workflow/dsl/index.ts +1 -0
- package/src/wirings/workflow/dsl/workflow-dsl.types.ts +9 -1
- package/src/wirings/workflow/dsl/workflow-runner.ts +4 -3
- package/src/wirings/workflow/graph/graph-node.ts +1 -6
- package/src/wirings/workflow/graph/graph-runner.test.ts +495 -0
- package/src/wirings/workflow/graph/graph-runner.ts +496 -374
- package/src/wirings/workflow/graph/index.ts +14 -3
- package/src/wirings/workflow/graph/template.ts +42 -0
- package/src/wirings/workflow/graph/wire-workflow-graph.ts +29 -0
- package/src/wirings/workflow/graph/workflow-graph.types.ts +0 -22
- package/src/wirings/workflow/index.ts +21 -10
- package/src/wirings/workflow/pikku-workflow-service.test.ts +212 -0
- package/src/wirings/workflow/pikku-workflow-service.ts +285 -66
- package/src/wirings/workflow/workflow-helpers.ts +79 -0
- package/src/wirings/workflow/workflow-utils.ts +0 -120
- package/src/wirings/workflow/workflow.types.ts +45 -90
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/wirings/forge-node/forge-node.types.d.ts +0 -120
- package/dist/wirings/forge-node/forge-node.types.js +0 -38
- package/dist/wirings/forge-node/index.d.ts +0 -1
- package/dist/wirings/forge-node/index.js +0 -1
- package/dist/wirings/workflow/wire-workflow.d.ts +0 -42
- package/dist/wirings/workflow/wire-workflow.js +0 -53
- package/src/wirings/forge-node/forge-node.types.ts +0 -135
- package/src/wirings/forge-node/index.ts +0 -1
- package/src/wirings/workflow/wire-workflow.ts +0 -94
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
getQueueWorkers,
|
|
6
6
|
removeQueueWorker,
|
|
7
7
|
runQueueJob,
|
|
8
|
+
createQueueJobRunner,
|
|
8
9
|
QueueJobFailedError,
|
|
9
10
|
QueueJobDiscardedError,
|
|
10
11
|
} from './queue-runner.js'
|
|
@@ -38,9 +39,9 @@ const createMockJob = (
|
|
|
38
39
|
data,
|
|
39
40
|
})
|
|
40
41
|
|
|
41
|
-
const addTestQueueFunction = (
|
|
42
|
-
pikkuState(null, 'function', 'meta')[
|
|
43
|
-
|
|
42
|
+
const addTestQueueFunction = (pikkuFuncId: string) => {
|
|
43
|
+
pikkuState(null, 'function', 'meta')[pikkuFuncId] = {
|
|
44
|
+
pikkuFuncId,
|
|
44
45
|
inputSchemaName: null,
|
|
45
46
|
outputSchemaName: null,
|
|
46
47
|
middleware: undefined,
|
|
@@ -51,7 +52,7 @@ const addTestQueueFunction = (pikkuFuncName: string) => {
|
|
|
51
52
|
describe('wireQueueWorker', () => {
|
|
52
53
|
test('should successfully wire a queue worker', () => {
|
|
53
54
|
const mockWorker: CoreQueueWorker = {
|
|
54
|
-
|
|
55
|
+
name: 'test-queue',
|
|
55
56
|
func: {
|
|
56
57
|
func: async (services: any, data: any, wire: any) => {
|
|
57
58
|
return { processed: true }
|
|
@@ -60,10 +61,9 @@ describe('wireQueueWorker', () => {
|
|
|
60
61
|
},
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
// Set up metadata first
|
|
64
64
|
pikkuState(null, 'queue', 'meta')['test-queue'] = {
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
pikkuFuncId: 'queue_test-queue',
|
|
66
|
+
name: 'test-queue',
|
|
67
67
|
}
|
|
68
68
|
addTestQueueFunction('queue_test-queue')
|
|
69
69
|
wireQueueWorker(mockWorker)
|
|
@@ -75,7 +75,7 @@ describe('wireQueueWorker', () => {
|
|
|
75
75
|
|
|
76
76
|
test('should throw error when processor metadata not found', () => {
|
|
77
77
|
const mockWorker: CoreQueueWorker = {
|
|
78
|
-
|
|
78
|
+
name: 'missing-meta-queue',
|
|
79
79
|
func: {
|
|
80
80
|
func: async () => {},
|
|
81
81
|
auth: false,
|
|
@@ -85,7 +85,9 @@ describe('wireQueueWorker', () => {
|
|
|
85
85
|
assert.throws(
|
|
86
86
|
() => wireQueueWorker(mockWorker),
|
|
87
87
|
(error: any) => {
|
|
88
|
-
assert(
|
|
88
|
+
assert(
|
|
89
|
+
error.message.includes('Missing generated metadata for queue worker')
|
|
90
|
+
)
|
|
89
91
|
assert(error.message.includes('missing-meta-queue'))
|
|
90
92
|
return true
|
|
91
93
|
}
|
|
@@ -98,7 +100,7 @@ describe('wireQueueWorker', () => {
|
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
const mockWorker: CoreQueueWorker = {
|
|
101
|
-
|
|
103
|
+
name: 'worker-with-middleware',
|
|
102
104
|
func: {
|
|
103
105
|
func: async () => {},
|
|
104
106
|
auth: false,
|
|
@@ -110,8 +112,8 @@ describe('wireQueueWorker', () => {
|
|
|
110
112
|
}
|
|
111
113
|
|
|
112
114
|
pikkuState(null, 'queue', 'meta')['worker-with-middleware'] = {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
+
pikkuFuncId: 'queue_worker-with-middleware',
|
|
116
|
+
name: 'worker-with-middleware',
|
|
115
117
|
}
|
|
116
118
|
addTestQueueFunction('queue_worker-with-middleware')
|
|
117
119
|
wireQueueWorker(mockWorker)
|
|
@@ -126,7 +128,7 @@ describe('wireQueueWorker', () => {
|
|
|
126
128
|
describe('getQueueWorkers', () => {
|
|
127
129
|
test('should return the registrations map', () => {
|
|
128
130
|
const mockWorker: CoreQueueWorker = {
|
|
129
|
-
|
|
131
|
+
name: 'test-queue',
|
|
130
132
|
func: {
|
|
131
133
|
func: async () => {},
|
|
132
134
|
auth: false,
|
|
@@ -134,8 +136,8 @@ describe('getQueueWorkers', () => {
|
|
|
134
136
|
}
|
|
135
137
|
|
|
136
138
|
pikkuState(null, 'queue', 'meta')['test-queue'] = {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
+
pikkuFuncId: 'queue_test-queue',
|
|
140
|
+
name: 'test-queue',
|
|
139
141
|
}
|
|
140
142
|
addTestQueueFunction('queue_test-queue')
|
|
141
143
|
wireQueueWorker(mockWorker)
|
|
@@ -155,7 +157,7 @@ describe('getQueueWorkers', () => {
|
|
|
155
157
|
describe('removeQueueWorker', () => {
|
|
156
158
|
test('should successfully remove a queue worker', async () => {
|
|
157
159
|
const mockWorker: CoreQueueWorker = {
|
|
158
|
-
|
|
160
|
+
name: 'removable-queue',
|
|
159
161
|
func: {
|
|
160
162
|
func: async () => {},
|
|
161
163
|
auth: false,
|
|
@@ -163,8 +165,8 @@ describe('removeQueueWorker', () => {
|
|
|
163
165
|
}
|
|
164
166
|
|
|
165
167
|
pikkuState(null, 'queue', 'meta')['removable-queue'] = {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
+
pikkuFuncId: 'queue_removable-queue',
|
|
169
|
+
name: 'removable-queue',
|
|
168
170
|
}
|
|
169
171
|
addTestQueueFunction('queue_removable-queue')
|
|
170
172
|
wireQueueWorker(mockWorker)
|
|
@@ -198,7 +200,7 @@ describe('runQueueJob', () => {
|
|
|
198
200
|
let receivedData: any
|
|
199
201
|
|
|
200
202
|
const mockWorker: CoreQueueWorker = {
|
|
201
|
-
|
|
203
|
+
name: 'simple-queue',
|
|
202
204
|
func: {
|
|
203
205
|
func: async (services: any, data: any, wire: any) => {
|
|
204
206
|
jobProcessed = true
|
|
@@ -210,8 +212,8 @@ describe('runQueueJob', () => {
|
|
|
210
212
|
}
|
|
211
213
|
|
|
212
214
|
pikkuState(null, 'queue', 'meta')['simple-queue'] = {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
+
pikkuFuncId: 'queue_simple-queue',
|
|
216
|
+
name: 'simple-queue',
|
|
215
217
|
}
|
|
216
218
|
addTestQueueFunction('queue_simple-queue')
|
|
217
219
|
wireQueueWorker(mockWorker)
|
|
@@ -238,7 +240,7 @@ describe('runQueueJob', () => {
|
|
|
238
240
|
|
|
239
241
|
test('should handle job.fail() by throwing QueueJobFailedError', async () => {
|
|
240
242
|
const mockWorker: CoreQueueWorker = {
|
|
241
|
-
|
|
243
|
+
name: 'fail-queue',
|
|
242
244
|
func: {
|
|
243
245
|
func: async (services: any, data: any, wire: any) => {
|
|
244
246
|
await wire.queue.fail('Processing failed')
|
|
@@ -248,8 +250,8 @@ describe('runQueueJob', () => {
|
|
|
248
250
|
}
|
|
249
251
|
|
|
250
252
|
pikkuState(null, 'queue', 'meta')['fail-queue'] = {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
+
pikkuFuncId: 'queue_fail-queue',
|
|
254
|
+
name: 'fail-queue',
|
|
253
255
|
}
|
|
254
256
|
addTestQueueFunction('queue_fail-queue')
|
|
255
257
|
wireQueueWorker(mockWorker)
|
|
@@ -276,7 +278,7 @@ describe('runQueueJob', () => {
|
|
|
276
278
|
|
|
277
279
|
test('should handle job.fail() without reason', async () => {
|
|
278
280
|
const mockWorker: CoreQueueWorker = {
|
|
279
|
-
|
|
281
|
+
name: 'fail-no-reason-queue',
|
|
280
282
|
func: {
|
|
281
283
|
func: async (services: any, data: any, wire: any) => {
|
|
282
284
|
await wire.queue.fail()
|
|
@@ -286,8 +288,8 @@ describe('runQueueJob', () => {
|
|
|
286
288
|
}
|
|
287
289
|
|
|
288
290
|
pikkuState(null, 'queue', 'meta')['fail-no-reason-queue'] = {
|
|
289
|
-
|
|
290
|
-
|
|
291
|
+
pikkuFuncId: 'queue_fail-no-reason-queue',
|
|
292
|
+
name: 'fail-no-reason-queue',
|
|
291
293
|
}
|
|
292
294
|
addTestQueueFunction('queue_fail-no-reason-queue')
|
|
293
295
|
wireQueueWorker(mockWorker)
|
|
@@ -312,7 +314,7 @@ describe('runQueueJob', () => {
|
|
|
312
314
|
|
|
313
315
|
test('should handle job.discard() by throwing QueueJobDiscardedError', async () => {
|
|
314
316
|
const mockWorker: CoreQueueWorker = {
|
|
315
|
-
|
|
317
|
+
name: 'discard-queue',
|
|
316
318
|
func: {
|
|
317
319
|
func: async (services: any, data: any, wire: any) => {
|
|
318
320
|
await wire.queue.discard('Invalid data')
|
|
@@ -322,8 +324,8 @@ describe('runQueueJob', () => {
|
|
|
322
324
|
}
|
|
323
325
|
|
|
324
326
|
pikkuState(null, 'queue', 'meta')['discard-queue'] = {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
+
pikkuFuncId: 'queue_discard-queue',
|
|
328
|
+
name: 'discard-queue',
|
|
327
329
|
}
|
|
328
330
|
addTestQueueFunction('queue_discard-queue')
|
|
329
331
|
wireQueueWorker(mockWorker)
|
|
@@ -352,7 +354,7 @@ describe('runQueueJob', () => {
|
|
|
352
354
|
const progressUpdates: Array<number | string | object> = []
|
|
353
355
|
|
|
354
356
|
const mockWorker: CoreQueueWorker = {
|
|
355
|
-
|
|
357
|
+
name: 'progress-queue',
|
|
356
358
|
func: {
|
|
357
359
|
func: async (services: any, data: any, wire: any) => {
|
|
358
360
|
await wire.queue.updateProgress(25)
|
|
@@ -365,8 +367,8 @@ describe('runQueueJob', () => {
|
|
|
365
367
|
}
|
|
366
368
|
|
|
367
369
|
pikkuState(null, 'queue', 'meta')['progress-queue'] = {
|
|
368
|
-
|
|
369
|
-
|
|
370
|
+
pikkuFuncId: 'queue_progress-queue',
|
|
371
|
+
name: 'progress-queue',
|
|
370
372
|
}
|
|
371
373
|
addTestQueueFunction('queue_progress-queue')
|
|
372
374
|
wireQueueWorker(mockWorker)
|
|
@@ -387,7 +389,7 @@ describe('runQueueJob', () => {
|
|
|
387
389
|
|
|
388
390
|
test('should use default updateProgress when not provided', async () => {
|
|
389
391
|
const mockWorker: CoreQueueWorker = {
|
|
390
|
-
|
|
392
|
+
name: 'default-progress-queue',
|
|
391
393
|
func: {
|
|
392
394
|
func: async (services: any, data: any, wire: any) => {
|
|
393
395
|
await wire.queue.updateProgress(50)
|
|
@@ -398,8 +400,8 @@ describe('runQueueJob', () => {
|
|
|
398
400
|
}
|
|
399
401
|
|
|
400
402
|
pikkuState(null, 'queue', 'meta')['default-progress-queue'] = {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
+
pikkuFuncId: 'queue_default-progress-queue',
|
|
404
|
+
name: 'default-progress-queue',
|
|
403
405
|
}
|
|
404
406
|
addTestQueueFunction('queue_default-progress-queue')
|
|
405
407
|
wireQueueWorker(mockWorker)
|
|
@@ -421,7 +423,7 @@ describe('runQueueJob', () => {
|
|
|
421
423
|
let capturedWire: any
|
|
422
424
|
|
|
423
425
|
const mockWorker: CoreQueueWorker = {
|
|
424
|
-
|
|
426
|
+
name: 'wire-queue',
|
|
425
427
|
func: {
|
|
426
428
|
func: async (services: any, data: any, wire: any) => {
|
|
427
429
|
capturedWire = wire
|
|
@@ -432,8 +434,8 @@ describe('runQueueJob', () => {
|
|
|
432
434
|
}
|
|
433
435
|
|
|
434
436
|
pikkuState(null, 'queue', 'meta')['wire-queue'] = {
|
|
435
|
-
|
|
436
|
-
|
|
437
|
+
pikkuFuncId: 'queue_wire-queue',
|
|
438
|
+
name: 'wire-queue',
|
|
437
439
|
}
|
|
438
440
|
addTestQueueFunction('queue_wire-queue')
|
|
439
441
|
wireQueueWorker(mockWorker)
|
|
@@ -465,7 +467,9 @@ describe('runQueueJob', () => {
|
|
|
465
467
|
})
|
|
466
468
|
},
|
|
467
469
|
(error: any) => {
|
|
468
|
-
assert(
|
|
470
|
+
assert(
|
|
471
|
+
error.message.includes('Missing generated metadata for queue worker')
|
|
472
|
+
)
|
|
469
473
|
assert(error.message.includes('missing-meta-queue'))
|
|
470
474
|
return true
|
|
471
475
|
}
|
|
@@ -473,10 +477,9 @@ describe('runQueueJob', () => {
|
|
|
473
477
|
})
|
|
474
478
|
|
|
475
479
|
test('should throw error when queue worker registration not found', async () => {
|
|
476
|
-
// Add metadata but not registration
|
|
477
480
|
pikkuState(null, 'queue', 'meta')['no-registration-queue'] = {
|
|
478
|
-
|
|
479
|
-
|
|
481
|
+
pikkuFuncId: 'queue_no-registration-queue',
|
|
482
|
+
name: 'no-registration-queue',
|
|
480
483
|
}
|
|
481
484
|
|
|
482
485
|
const mockLogger = createMockLogger()
|
|
@@ -502,7 +505,7 @@ describe('runQueueJob', () => {
|
|
|
502
505
|
const mockWireService = { custom: 'service' }
|
|
503
506
|
|
|
504
507
|
const mockWorker: CoreQueueWorker = {
|
|
505
|
-
|
|
508
|
+
name: 'session-services-queue',
|
|
506
509
|
func: {
|
|
507
510
|
func: async () => 'ok',
|
|
508
511
|
auth: false,
|
|
@@ -510,8 +513,8 @@ describe('runQueueJob', () => {
|
|
|
510
513
|
}
|
|
511
514
|
|
|
512
515
|
pikkuState(null, 'queue', 'meta')['session-services-queue'] = {
|
|
513
|
-
|
|
514
|
-
|
|
516
|
+
pikkuFuncId: 'queue_session-services-queue',
|
|
517
|
+
name: 'session-services-queue',
|
|
515
518
|
}
|
|
516
519
|
addTestQueueFunction('queue_session-services-queue')
|
|
517
520
|
wireQueueWorker(mockWorker)
|
|
@@ -533,7 +536,7 @@ describe('runQueueJob', () => {
|
|
|
533
536
|
|
|
534
537
|
test('should log errors when job processing fails', async () => {
|
|
535
538
|
const mockWorker: CoreQueueWorker = {
|
|
536
|
-
|
|
539
|
+
name: 'error-queue',
|
|
537
540
|
func: {
|
|
538
541
|
func: async () => {
|
|
539
542
|
throw new Error('Processing error')
|
|
@@ -543,8 +546,8 @@ describe('runQueueJob', () => {
|
|
|
543
546
|
}
|
|
544
547
|
|
|
545
548
|
pikkuState(null, 'queue', 'meta')['error-queue'] = {
|
|
546
|
-
|
|
547
|
-
|
|
549
|
+
pikkuFuncId: 'queue_error-queue',
|
|
550
|
+
name: 'error-queue',
|
|
548
551
|
}
|
|
549
552
|
addTestQueueFunction('queue_error-queue')
|
|
550
553
|
wireQueueWorker(mockWorker)
|
|
@@ -580,7 +583,7 @@ describe('runQueueJob', () => {
|
|
|
580
583
|
}
|
|
581
584
|
|
|
582
585
|
const mockWorker: CoreQueueWorker = {
|
|
583
|
-
|
|
586
|
+
name: 'middleware-queue',
|
|
584
587
|
func: {
|
|
585
588
|
func: async () => {
|
|
586
589
|
executionOrder.push('job')
|
|
@@ -592,8 +595,8 @@ describe('runQueueJob', () => {
|
|
|
592
595
|
}
|
|
593
596
|
|
|
594
597
|
pikkuState(null, 'queue', 'meta')['middleware-queue'] = {
|
|
595
|
-
|
|
596
|
-
|
|
598
|
+
pikkuFuncId: 'queue_middleware-queue',
|
|
599
|
+
name: 'middleware-queue',
|
|
597
600
|
}
|
|
598
601
|
addTestQueueFunction('queue_middleware-queue')
|
|
599
602
|
wireQueueWorker(mockWorker)
|
|
@@ -611,7 +614,7 @@ describe('runQueueJob', () => {
|
|
|
611
614
|
|
|
612
615
|
test('should log debug message on successful job completion', async () => {
|
|
613
616
|
const mockWorker: CoreQueueWorker = {
|
|
614
|
-
|
|
617
|
+
name: 'debug-queue',
|
|
615
618
|
func: {
|
|
616
619
|
func: async () => 'success',
|
|
617
620
|
auth: false,
|
|
@@ -619,8 +622,8 @@ describe('runQueueJob', () => {
|
|
|
619
622
|
}
|
|
620
623
|
|
|
621
624
|
pikkuState(null, 'queue', 'meta')['debug-queue'] = {
|
|
622
|
-
|
|
623
|
-
|
|
625
|
+
pikkuFuncId: 'queue_debug-queue',
|
|
626
|
+
name: 'debug-queue',
|
|
624
627
|
}
|
|
625
628
|
addTestQueueFunction('queue_debug-queue')
|
|
626
629
|
wireQueueWorker(mockWorker)
|
|
@@ -639,3 +642,42 @@ describe('runQueueJob', () => {
|
|
|
639
642
|
assert(debugLogs[0].message.includes('Successfully processed job job-777'))
|
|
640
643
|
})
|
|
641
644
|
})
|
|
645
|
+
|
|
646
|
+
describe('createQueueJobRunner', () => {
|
|
647
|
+
test('delegates queue job execution using bound services', async () => {
|
|
648
|
+
const mockWorker: CoreQueueWorker = {
|
|
649
|
+
name: 'bound-runner-queue',
|
|
650
|
+
func: {
|
|
651
|
+
func: async (_services: any, data: any) => {
|
|
652
|
+
return data.value + 1
|
|
653
|
+
},
|
|
654
|
+
auth: false,
|
|
655
|
+
},
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
pikkuState(null, 'queue', 'meta')['bound-runner-queue'] = {
|
|
659
|
+
pikkuFuncId: 'queue_bound-runner-queue',
|
|
660
|
+
name: 'bound-runner-queue',
|
|
661
|
+
}
|
|
662
|
+
addTestQueueFunction('queue_bound-runner-queue')
|
|
663
|
+
wireQueueWorker(mockWorker)
|
|
664
|
+
|
|
665
|
+
const mockLogger = createMockLogger()
|
|
666
|
+
const runJob = createQueueJobRunner({
|
|
667
|
+
singletonServices: { logger: mockLogger } as any,
|
|
668
|
+
})
|
|
669
|
+
|
|
670
|
+
await runJob({
|
|
671
|
+
job: createMockJob('bound-runner-queue', 'job-888', { value: 41 }),
|
|
672
|
+
})
|
|
673
|
+
|
|
674
|
+
const logs = mockLogger.getLogs()
|
|
675
|
+
assert(
|
|
676
|
+
logs.some(
|
|
677
|
+
(log) =>
|
|
678
|
+
log.level === 'debug' &&
|
|
679
|
+
String(log.message).includes('Successfully processed job job-888')
|
|
680
|
+
)
|
|
681
|
+
)
|
|
682
|
+
})
|
|
683
|
+
})
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
CorePikkuFunctionSessionless,
|
|
6
6
|
} from '../../function/functions.types.js'
|
|
7
7
|
import { getErrorResponse, PikkuError } from '../../errors/error-handler.js'
|
|
8
|
+
import { PikkuMissingMetaError } from '../../errors/errors.js'
|
|
8
9
|
import { pikkuState } from '../../pikku-state.js'
|
|
9
10
|
import { addFunction, runPikkuFunc } from '../../function/function-runner.js'
|
|
10
11
|
import { CreateWireServices } from '../../types/core.types.js'
|
|
@@ -53,15 +54,15 @@ export const wireQueueWorker = <
|
|
|
53
54
|
) => {
|
|
54
55
|
// Get processor metadata
|
|
55
56
|
const meta = pikkuState(null, 'queue', 'meta')
|
|
56
|
-
const processorMeta = meta[queueWorker.
|
|
57
|
+
const processorMeta = meta[queueWorker.name]
|
|
57
58
|
if (!processorMeta) {
|
|
58
|
-
throw new
|
|
59
|
-
`
|
|
59
|
+
throw new PikkuMissingMetaError(
|
|
60
|
+
`Missing generated metadata for queue worker '${queueWorker.name}'`
|
|
60
61
|
)
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
// Register the function with pikku
|
|
64
|
-
addFunction(processorMeta.
|
|
65
|
+
addFunction(processorMeta.pikkuFuncId, {
|
|
65
66
|
func: queueWorker.func.func,
|
|
66
67
|
auth: queueWorker.func.auth,
|
|
67
68
|
permissions: queueWorker.func.permissions,
|
|
@@ -71,7 +72,7 @@ export const wireQueueWorker = <
|
|
|
71
72
|
|
|
72
73
|
// Store processor definition in state - runtime adapters will pick this up
|
|
73
74
|
const registrations = pikkuState(null, 'queue', 'registrations')
|
|
74
|
-
registrations.set(queueWorker.
|
|
75
|
+
registrations.set(queueWorker.name, queueWorker)
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
/**
|
|
@@ -114,7 +115,9 @@ export async function runQueueJob({
|
|
|
114
115
|
const meta = pikkuState(null, 'queue', 'meta')
|
|
115
116
|
const processorMeta = meta[job.queueName]
|
|
116
117
|
if (!processorMeta) {
|
|
117
|
-
throw new
|
|
118
|
+
throw new PikkuMissingMetaError(
|
|
119
|
+
`Missing generated metadata for queue worker '${job.queueName}'`
|
|
120
|
+
)
|
|
118
121
|
}
|
|
119
122
|
|
|
120
123
|
// Get the queue worker registration to access middleware
|
|
@@ -153,7 +156,7 @@ export async function runQueueJob({
|
|
|
153
156
|
const result = await runPikkuFunc(
|
|
154
157
|
'queue',
|
|
155
158
|
job.queueName,
|
|
156
|
-
processorMeta.
|
|
159
|
+
processorMeta.pikkuFuncId,
|
|
157
160
|
{
|
|
158
161
|
singletonServices,
|
|
159
162
|
createWireServices,
|
|
@@ -186,3 +189,26 @@ export async function runQueueJob({
|
|
|
186
189
|
throw error
|
|
187
190
|
}
|
|
188
191
|
}
|
|
192
|
+
|
|
193
|
+
export const createQueueJobRunner = ({
|
|
194
|
+
singletonServices,
|
|
195
|
+
createWireServices,
|
|
196
|
+
}: {
|
|
197
|
+
singletonServices: CoreServices
|
|
198
|
+
createWireServices?: CreateWireServices
|
|
199
|
+
}) => {
|
|
200
|
+
return async ({
|
|
201
|
+
job,
|
|
202
|
+
updateProgress,
|
|
203
|
+
}: {
|
|
204
|
+
job: QueueJob
|
|
205
|
+
updateProgress?: (progress: number | string | object) => Promise<void>
|
|
206
|
+
}) => {
|
|
207
|
+
await runQueueJob({
|
|
208
|
+
singletonServices,
|
|
209
|
+
createWireServices,
|
|
210
|
+
job,
|
|
211
|
+
updateProgress,
|
|
212
|
+
})
|
|
213
|
+
}
|
|
214
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CommonWireMeta } from '../../types/core.types.js'
|
|
2
2
|
import { CorePikkuFunctionConfig } from '../../function/functions.types.js'
|
|
3
3
|
import { QueueConfigMapping } from './validate-worker-config.js'
|
|
4
|
+
import { Logger } from '../../services/logger.js'
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* Configuration for queue workers - how jobs are processed
|
|
@@ -138,6 +139,15 @@ export interface QueueWorkers {
|
|
|
138
139
|
/** Configuration mapping for validation */
|
|
139
140
|
configMappings: QueueConfigMapping
|
|
140
141
|
|
|
142
|
+
/** Set runtime queue job runner callback and logger */
|
|
143
|
+
setJobRunner(
|
|
144
|
+
runJob: (params: {
|
|
145
|
+
job: QueueJob
|
|
146
|
+
updateProgress?: (progress: number | string | object) => Promise<void>
|
|
147
|
+
}) => Promise<void>,
|
|
148
|
+
logger: Logger
|
|
149
|
+
): void
|
|
150
|
+
|
|
141
151
|
/** Scan state and register all compatible processors */
|
|
142
152
|
registerQueues(): Promise<Record<string, ConfigValidationResult[]>>
|
|
143
153
|
}
|
|
@@ -148,7 +158,7 @@ export interface QueueWorkers {
|
|
|
148
158
|
export type QueueWorkersMeta = Record<
|
|
149
159
|
string,
|
|
150
160
|
CommonWireMeta & {
|
|
151
|
-
|
|
161
|
+
name: string
|
|
152
162
|
config?: PikkuWorkerConfig
|
|
153
163
|
}
|
|
154
164
|
>
|
|
@@ -163,7 +173,7 @@ export type CoreQueueWorker<
|
|
|
163
173
|
any
|
|
164
174
|
> = CorePikkuFunctionConfig<any, any, any>,
|
|
165
175
|
> = {
|
|
166
|
-
|
|
176
|
+
name: string
|
|
167
177
|
func: PikkuFunctionConfig
|
|
168
178
|
config?: PikkuWorkerConfig
|
|
169
179
|
errors?: string[]
|
package/src/wirings/rpc/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { PikkuRPCService, rpcService } from './rpc-runner.js'
|
|
1
|
+
export { PikkuRPCService, rpcService, RPCNotFoundError } from './rpc-runner.js'
|
|
2
2
|
export type { PikkuRPC, RPCMeta } from './rpc-types.js'
|