@pikku/core 0.12.0 → 0.12.2
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 +40 -0
- package/dist/errors/errors.d.ts +6 -0
- package/dist/errors/errors.js +10 -0
- package/dist/errors/index.d.ts +1 -0
- package/dist/errors/index.js +1 -0
- package/dist/function/function-runner.d.ts +3 -3
- package/dist/function/function-runner.js +66 -44
- package/dist/function/functions.types.d.ts +1 -0
- package/dist/handle-error.d.ts +2 -2
- package/dist/handle-error.js +2 -2
- package/dist/index.d.ts +5 -3
- package/dist/index.js +2 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.js +2 -0
- package/dist/middleware/auth-bearer.d.ts +1 -1
- package/dist/middleware/auth-bearer.js +1 -1
- package/dist/middleware/auth-cookie.d.ts +2 -2
- package/dist/middleware/auth-cookie.js +1 -1
- package/dist/middleware/cors.d.ts +2 -2
- package/dist/middleware/cors.js +45 -37
- package/dist/middleware-runner.d.ts +1 -1
- package/dist/middleware-runner.js +1 -0
- package/dist/permissions.d.ts +2 -2
- package/dist/permissions.js +1 -0
- package/dist/pikku-state.d.ts +9 -8
- package/dist/pikku-state.js +34 -17
- package/dist/schema.d.ts +4 -4
- package/dist/schema.js +9 -5
- package/dist/services/ai-agent-runner-service.d.ts +22 -3
- package/dist/services/ai-run-state-service.d.ts +1 -1
- package/dist/services/ai-storage-service.d.ts +1 -1
- package/dist/services/content-service.d.ts +6 -0
- package/dist/services/gateway-service.d.ts +19 -0
- package/dist/services/gopass-secrets.d.ts +1 -1
- package/dist/services/gopass-secrets.js +3 -0
- package/dist/services/in-memory-ai-run-state-service.d.ts +15 -0
- package/dist/services/in-memory-ai-run-state-service.js +44 -0
- package/dist/services/in-memory-trigger-service.d.ts +0 -1
- package/dist/services/in-memory-trigger-service.js +6 -8
- package/dist/services/index.d.ts +5 -2
- package/dist/services/index.js +2 -0
- package/dist/services/local-content.d.ts +2 -1
- package/dist/services/local-content.js +6 -1
- package/dist/services/local-gateway-service.d.ts +22 -0
- package/dist/services/local-gateway-service.js +51 -0
- package/dist/services/local-secrets.d.ts +2 -2
- package/dist/services/local-variables.d.ts +1 -1
- package/dist/services/logger-console.d.ts +2 -1
- package/dist/services/scheduler-service.d.ts +0 -12
- package/dist/services/scheduler-service.js +0 -6
- package/dist/services/scoped-secret-service.d.ts +1 -1
- package/dist/services/trigger-service.d.ts +0 -7
- package/dist/services/user-session-service.d.ts +3 -3
- package/dist/services/workflow-service.d.ts +2 -3
- package/dist/types/core.types.d.ts +27 -19
- package/dist/types/state.types.d.ts +22 -15
- package/dist/utils.d.ts +5 -5
- package/dist/utils.js +12 -9
- package/dist/wirings/ai-agent/ai-agent-assistant-ui.d.ts +5 -0
- package/dist/wirings/ai-agent/ai-agent-assistant-ui.js +168 -0
- package/dist/wirings/ai-agent/ai-agent-helpers.d.ts +28 -0
- package/dist/wirings/ai-agent/ai-agent-helpers.js +40 -0
- package/dist/wirings/ai-agent/ai-agent-memory.js +13 -2
- package/dist/wirings/ai-agent/ai-agent-prepare.d.ts +4 -5
- package/dist/wirings/ai-agent/ai-agent-prepare.js +80 -31
- package/dist/wirings/ai-agent/ai-agent-registry.d.ts +1 -1
- package/dist/wirings/ai-agent/ai-agent-runner.js +107 -8
- package/dist/wirings/ai-agent/ai-agent-stream.d.ts +2 -1
- package/dist/wirings/ai-agent/ai-agent-stream.js +263 -89
- package/dist/wirings/ai-agent/ai-agent.types.d.ts +96 -4
- package/dist/wirings/ai-agent/index.d.ts +3 -1
- package/dist/wirings/ai-agent/index.js +2 -0
- package/dist/wirings/channel/channel-common.d.ts +2 -2
- package/dist/wirings/channel/channel-handler.d.ts +7 -4
- package/dist/wirings/channel/channel-handler.js +15 -5
- package/dist/wirings/channel/channel-middleware-runner.js +1 -0
- package/dist/wirings/channel/channel-runner.d.ts +5 -5
- package/dist/wirings/channel/channel-runner.js +3 -2
- package/dist/wirings/channel/channel-store.d.ts +1 -1
- package/dist/wirings/channel/channel.types.d.ts +10 -6
- package/dist/wirings/channel/index.d.ts +1 -1
- package/dist/wirings/channel/local/local-channel-handler.d.ts +7 -0
- package/dist/wirings/channel/local/local-channel-handler.js +17 -0
- package/dist/wirings/channel/local/local-channel-runner.d.ts +7 -2
- package/dist/wirings/channel/local/local-channel-runner.js +18 -4
- package/dist/wirings/channel/local/local-eventhub-service.d.ts +2 -2
- package/dist/wirings/channel/log-channels.d.ts +1 -1
- package/dist/wirings/channel/pikku-abstract-channel-handler.d.ts +2 -1
- package/dist/wirings/channel/pikku-abstract-channel-handler.js +1 -0
- package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +4 -4
- package/dist/wirings/channel/serverless/serverless-channel-runner.js +26 -20
- package/dist/wirings/cli/channel/cli-channel-runner.d.ts +1 -1
- package/dist/wirings/cli/cli-runner.d.ts +2 -2
- package/dist/wirings/cli/cli-runner.js +3 -0
- package/dist/wirings/cli/cli.types.d.ts +3 -3
- package/dist/wirings/cli/command-parser.d.ts +1 -1
- package/dist/wirings/gateway/gateway-runner.d.ts +24 -0
- package/dist/wirings/gateway/gateway-runner.js +325 -0
- package/dist/wirings/gateway/gateway.types.d.ts +127 -0
- package/dist/wirings/gateway/index.d.ts +2 -0
- package/dist/wirings/gateway/index.js +1 -0
- package/dist/wirings/http/http-runner.d.ts +9 -9
- package/dist/wirings/http/http-runner.js +36 -14
- package/dist/wirings/http/http.types.d.ts +2 -6
- package/dist/wirings/http/log-http-routes.d.ts +1 -1
- package/dist/wirings/http/pikku-fetch-http-request.d.ts +1 -1
- package/dist/wirings/http/pikku-fetch-http-response.d.ts +2 -2
- package/dist/wirings/http/pikku-fetch-http-response.js +6 -1
- package/dist/wirings/http/routers/http-router.d.ts +1 -1
- package/dist/wirings/http/routers/path-to-regex.d.ts +2 -2
- package/dist/wirings/mcp/mcp-endpoint-registry.d.ts +1 -1
- package/dist/wirings/mcp/mcp-runner.d.ts +0 -3
- package/dist/wirings/mcp/mcp-runner.js +4 -2
- package/dist/wirings/mcp/mcp.types.d.ts +2 -2
- package/dist/wirings/oauth2/oauth2-client.d.ts +3 -3
- package/dist/wirings/oauth2/wire-oauth2-credential.d.ts +1 -1
- package/dist/wirings/queue/index.d.ts +1 -1
- package/dist/wirings/queue/index.js +1 -1
- package/dist/wirings/queue/queue-runner.d.ts +1 -12
- package/dist/wirings/queue/queue-runner.js +4 -12
- package/dist/wirings/queue/queue.types.d.ts +3 -9
- package/dist/wirings/queue/register-queue-helper.d.ts +2 -2
- package/dist/wirings/queue/register-queue-helper.js +1 -1
- package/dist/wirings/queue/validate-worker-config.d.ts +1 -1
- package/dist/wirings/rpc/index.d.ts +2 -0
- package/dist/wirings/rpc/index.js +1 -0
- package/dist/wirings/rpc/rpc-runner.d.ts +36 -14
- package/dist/wirings/rpc/rpc-runner.js +56 -28
- package/dist/wirings/rpc/rpc-types.d.ts +14 -2
- package/dist/wirings/rpc/wire-addon.d.ts +10 -0
- package/dist/wirings/rpc/wire-addon.js +9 -0
- package/dist/wirings/scheduler/index.d.ts +1 -1
- package/dist/wirings/scheduler/index.js +1 -1
- package/dist/wirings/scheduler/log-schedulers.d.ts +1 -1
- package/dist/wirings/scheduler/scheduler-runner.d.ts +3 -10
- package/dist/wirings/scheduler/scheduler-runner.js +4 -25
- package/dist/wirings/scheduler/scheduler.types.d.ts +2 -2
- package/dist/wirings/trigger/pikku-trigger-service.d.ts +2 -6
- package/dist/wirings/trigger/pikku-trigger-service.js +11 -16
- package/dist/wirings/trigger/trigger-runner.d.ts +1 -5
- package/dist/wirings/trigger/trigger-runner.js +4 -3
- package/dist/wirings/workflow/pikku-workflow-service.d.ts +2 -6
- package/dist/wirings/workflow/pikku-workflow-service.js +20 -29
- package/dist/wirings/workflow/workflow.types.d.ts +2 -2
- package/package.json +4 -2
- package/src/crypto-utils.test.ts +116 -0
- package/src/errors/error.test.ts +143 -2
- package/src/errors/errors.ts +10 -0
- package/src/errors/index.ts +1 -0
- package/src/function/function-runner.test.ts +2 -2
- package/src/function/function-runner.ts +72 -49
- package/src/function/functions.types.ts +1 -0
- package/src/handle-error.test.ts +361 -0
- package/src/handle-error.ts +4 -4
- package/src/index.ts +3 -10
- package/src/internal.ts +6 -0
- package/src/middleware/auth-apikey.test.ts +1 -1
- package/src/middleware/auth-bearer.test.ts +1 -1
- package/src/middleware/auth-bearer.ts +2 -5
- package/src/middleware/auth-cookie.test.ts +1 -1
- package/src/middleware/auth-cookie.ts +3 -5
- package/src/middleware/cors.test.ts +424 -0
- package/src/middleware/cors.ts +14 -6
- package/src/middleware/remote-auth.test.ts +488 -0
- package/src/middleware-runner.test.ts +1 -1
- package/src/middleware-runner.ts +2 -1
- package/src/permissions.test.ts +2 -2
- package/src/permissions.ts +3 -2
- package/src/pikku-state.test.ts +224 -0
- package/src/pikku-state.ts +45 -28
- package/src/schema.test.ts +198 -6
- package/src/schema.ts +11 -7
- package/src/services/ai-agent-runner-service.ts +15 -3
- package/src/services/ai-run-state-service.ts +1 -1
- package/src/services/ai-storage-service.ts +1 -1
- package/src/services/content-service.ts +7 -0
- package/src/services/gateway-service.ts +20 -0
- package/src/services/gopass-secrets.ts +4 -1
- package/src/services/in-memory-ai-run-state-service.ts +73 -0
- package/src/services/in-memory-trigger-service.ts +6 -10
- package/src/services/in-memory-workflow-service.test.ts +351 -0
- package/src/services/index.ts +4 -1
- package/src/services/local-content.ts +9 -3
- package/src/services/local-gateway-service.ts +62 -0
- package/src/services/local-secrets.test.ts +80 -0
- package/src/services/local-secrets.ts +2 -2
- package/src/services/local-variables.test.ts +61 -0
- package/src/services/local-variables.ts +1 -1
- package/src/services/logger-console.test.ts +118 -0
- package/src/services/logger-console.ts +2 -1
- package/src/services/scheduler-service.ts +0 -18
- package/src/services/scoped-secret-service.test.ts +74 -0
- package/src/services/scoped-secret-service.ts +1 -1
- package/src/services/trigger-service.ts +0 -21
- package/src/services/typed-secret-service.test.ts +93 -0
- package/src/services/typed-variables-service.test.ts +73 -0
- package/src/services/user-session-service.test.ts +113 -0
- package/src/services/user-session-service.ts +3 -3
- package/src/services/workflow-service.ts +2 -12
- package/src/time-utils.test.ts +1 -1
- package/src/types/core.types.ts +28 -19
- package/src/types/state.types.ts +32 -15
- package/src/utils.test.ts +350 -0
- package/src/utils.ts +14 -13
- package/src/wirings/ai-agent/ai-agent-assistant-ui.test.ts +363 -0
- package/src/wirings/ai-agent/ai-agent-assistant-ui.ts +238 -0
- package/src/wirings/ai-agent/ai-agent-helpers.test.ts +152 -0
- package/src/wirings/ai-agent/ai-agent-helpers.ts +76 -0
- package/src/wirings/ai-agent/ai-agent-memory.ts +10 -1
- package/src/wirings/ai-agent/ai-agent-model-config.test.ts +115 -0
- package/src/wirings/ai-agent/ai-agent-prepare.ts +98 -46
- package/src/wirings/ai-agent/ai-agent-registry.ts +1 -1
- package/src/wirings/ai-agent/ai-agent-runner.test.ts +245 -3
- package/src/wirings/ai-agent/ai-agent-runner.ts +121 -7
- package/src/wirings/ai-agent/ai-agent-stream.test.ts +430 -24
- package/src/wirings/ai-agent/ai-agent-stream.ts +390 -104
- package/src/wirings/ai-agent/ai-agent.types.ts +91 -4
- package/src/wirings/ai-agent/index.ts +13 -0
- package/src/wirings/channel/channel-common.ts +2 -2
- package/src/wirings/channel/channel-handler.ts +43 -11
- package/src/wirings/channel/channel-middleware-runner.ts +1 -0
- package/src/wirings/channel/channel-runner.ts +6 -6
- package/src/wirings/channel/channel-store.ts +1 -1
- package/src/wirings/channel/channel.types.ts +15 -8
- package/src/wirings/channel/index.ts +1 -0
- package/src/wirings/channel/local/local-channel-handler.ts +26 -0
- package/src/wirings/channel/local/local-channel-runner.test.ts +19 -12
- package/src/wirings/channel/local/local-channel-runner.ts +33 -14
- package/src/wirings/channel/local/local-eventhub-service.test.ts +2 -2
- package/src/wirings/channel/local/local-eventhub-service.ts +2 -2
- package/src/wirings/channel/log-channels.ts +1 -1
- package/src/wirings/channel/pikku-abstract-channel-handler.test.ts +2 -0
- package/src/wirings/channel/pikku-abstract-channel-handler.ts +8 -1
- package/src/wirings/channel/serverless/serverless-channel-runner.ts +38 -33
- package/src/wirings/cli/channel/cli-channel-runner.ts +1 -1
- package/src/wirings/cli/cli-runner.test.ts +1 -1
- package/src/wirings/cli/cli-runner.ts +14 -4
- package/src/wirings/cli/cli.types.ts +3 -3
- package/src/wirings/cli/command-parser.test.ts +1 -1
- package/src/wirings/cli/command-parser.ts +1 -1
- package/src/wirings/gateway/gateway-runner.test.ts +474 -0
- package/src/wirings/gateway/gateway-runner.ts +411 -0
- package/src/wirings/gateway/gateway.types.ts +149 -0
- package/src/wirings/gateway/index.ts +13 -0
- package/src/wirings/http/http-routes.test.ts +1 -1
- package/src/wirings/http/http-runner.test.ts +9 -17
- package/src/wirings/http/http-runner.ts +46 -27
- package/src/wirings/http/http.types.ts +1 -14
- package/src/wirings/http/log-http-routes.ts +1 -1
- package/src/wirings/http/pikku-fetch-http-request.ts +1 -1
- package/src/wirings/http/pikku-fetch-http-response.ts +12 -5
- package/src/wirings/http/routers/http-router.ts +1 -1
- package/src/wirings/http/routers/path-to-regex.test.ts +1 -1
- package/src/wirings/http/routers/path-to-regex.ts +4 -3
- package/src/wirings/mcp/mcp-endpoint-registry.ts +5 -1
- package/src/wirings/mcp/mcp-runner.ts +9 -15
- package/src/wirings/mcp/mcp.types.ts +2 -2
- package/src/wirings/oauth2/oauth2-client.ts +3 -3
- package/src/wirings/oauth2/wire-oauth2-credential.ts +1 -1
- package/src/wirings/queue/index.ts +0 -1
- package/src/wirings/queue/queue-runner.test.ts +52 -25
- package/src/wirings/queue/queue-runner.ts +8 -30
- package/src/wirings/queue/queue.types.ts +3 -13
- package/src/wirings/queue/register-queue-helper.ts +3 -5
- package/src/wirings/queue/validate-worker-config.test.ts +108 -0
- package/src/wirings/queue/validate-worker-config.ts +4 -1
- package/src/wirings/rpc/index.ts +2 -0
- package/src/wirings/rpc/rpc-runner.ts +92 -49
- package/src/wirings/rpc/rpc-types.ts +17 -2
- package/src/wirings/rpc/wire-addon.ts +20 -0
- package/src/wirings/scheduler/index.ts +0 -1
- package/src/wirings/scheduler/log-schedulers.ts +1 -1
- package/src/wirings/scheduler/scheduler-runner.test.ts +49 -60
- package/src/wirings/scheduler/scheduler-runner.ts +9 -56
- package/src/wirings/scheduler/scheduler.types.ts +2 -2
- package/src/wirings/secret/validate-secret-definitions.test.ts +140 -0
- package/src/wirings/trigger/pikku-trigger-service.ts +17 -39
- package/src/wirings/trigger/trigger-runner.test.ts +79 -0
- package/src/wirings/trigger/trigger-runner.ts +8 -11
- package/src/wirings/variable/validate-variable-definitions.test.ts +91 -0
- package/src/wirings/workflow/graph/graph-runner.test.ts +14 -22
- package/src/wirings/workflow/graph/template.test.ts +49 -0
- package/src/wirings/workflow/pikku-workflow-service.test.ts +15 -27
- package/src/wirings/workflow/pikku-workflow-service.ts +29 -45
- package/src/wirings/workflow/workflow-helpers.test.ts +129 -0
- package/src/wirings/workflow/workflow.types.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/src/wirings/workflow/workflow-utils.ts +0 -0
- /package/dist/{wirings/workflow/workflow-utils.d.ts → services/gateway-service.js} +0 -0
- /package/dist/wirings/{workflow/workflow-utils.js → gateway/gateway.types.js} +0 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { describe, test } from 'node:test'
|
|
2
|
+
import assert from 'node:assert'
|
|
3
|
+
import {
|
|
4
|
+
PikkuSessionService,
|
|
5
|
+
createMiddlewareSessionWireProps,
|
|
6
|
+
createFunctionSessionWireProps,
|
|
7
|
+
} from './user-session-service.js'
|
|
8
|
+
|
|
9
|
+
describe('PikkuSessionService', () => {
|
|
10
|
+
test('should set and get session', () => {
|
|
11
|
+
const service = new PikkuSessionService()
|
|
12
|
+
service.setInitial({ userId: 'user-1' })
|
|
13
|
+
const session = service.get()
|
|
14
|
+
assert.deepStrictEqual(session, { userId: 'user-1' })
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
test('should return undefined when no session set', () => {
|
|
18
|
+
const service = new PikkuSessionService()
|
|
19
|
+
assert.strictEqual(service.get(), undefined)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('should mark sessionChanged when set is called', () => {
|
|
23
|
+
const service = new PikkuSessionService()
|
|
24
|
+
assert.strictEqual(service.sessionChanged, false)
|
|
25
|
+
service.set({ userId: 'user-1' })
|
|
26
|
+
assert.strictEqual(service.sessionChanged, true)
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
test('should clear session', () => {
|
|
30
|
+
const service = new PikkuSessionService()
|
|
31
|
+
service.setInitial({ userId: 'user-1' })
|
|
32
|
+
service.clear()
|
|
33
|
+
assert.strictEqual(service.get(), undefined)
|
|
34
|
+
assert.strictEqual(service.sessionChanged, true)
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
test('should freeze initial session', () => {
|
|
38
|
+
const service = new PikkuSessionService()
|
|
39
|
+
service.setInitial({ userId: 'user-1' })
|
|
40
|
+
const frozen = service.freezeInitial()
|
|
41
|
+
assert.deepStrictEqual(frozen, { userId: 'user-1' })
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
test('should only freeze initial once', () => {
|
|
45
|
+
const service = new PikkuSessionService()
|
|
46
|
+
service.setInitial({ userId: 'user-1' })
|
|
47
|
+
service.freezeInitial()
|
|
48
|
+
service.set({ userId: 'user-2' })
|
|
49
|
+
const frozen2 = service.freezeInitial()
|
|
50
|
+
assert.deepStrictEqual(frozen2, { userId: 'user-1' })
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
test('should throw when channelStore provided without channelId', () => {
|
|
54
|
+
assert.throws(() => new PikkuSessionService({} as any), {
|
|
55
|
+
message: 'Channel ID is required when using channel store',
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
test('should use channelStore when provided', async () => {
|
|
60
|
+
let storedSession: any
|
|
61
|
+
const store = {
|
|
62
|
+
setUserSession: (id: string, session: any) => {
|
|
63
|
+
storedSession = session
|
|
64
|
+
},
|
|
65
|
+
getChannelAndSession: (id: string) => ({ session: { userId: 'stored' } }),
|
|
66
|
+
}
|
|
67
|
+
const service = new PikkuSessionService(store as any, 'ch-1')
|
|
68
|
+
service.set({ userId: 'new' })
|
|
69
|
+
assert.deepStrictEqual(storedSession, { userId: 'new' })
|
|
70
|
+
|
|
71
|
+
const session = service.get()
|
|
72
|
+
assert.deepStrictEqual(session, { userId: 'stored' })
|
|
73
|
+
})
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
describe('createMiddlewareSessionWireProps', () => {
|
|
77
|
+
test('should return session wire props', () => {
|
|
78
|
+
const service = new PikkuSessionService()
|
|
79
|
+
service.setInitial({ userId: 'user-1' })
|
|
80
|
+
const props = createMiddlewareSessionWireProps(service)
|
|
81
|
+
assert.ok('session' in props)
|
|
82
|
+
assert.ok('setSession' in props)
|
|
83
|
+
assert.ok('getSession' in props)
|
|
84
|
+
assert.ok('hasSessionChanged' in props)
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
test('setSession should call setInitial', () => {
|
|
88
|
+
const service = new PikkuSessionService()
|
|
89
|
+
const props = createMiddlewareSessionWireProps(service)
|
|
90
|
+
props.setSession({ userId: 'user-2' })
|
|
91
|
+
assert.deepStrictEqual(service.get(), { userId: 'user-2' })
|
|
92
|
+
})
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
describe('createFunctionSessionWireProps', () => {
|
|
96
|
+
test('should return function session wire props', () => {
|
|
97
|
+
const service = new PikkuSessionService()
|
|
98
|
+
service.setInitial({ userId: 'user-1' })
|
|
99
|
+
const props = createFunctionSessionWireProps(service)
|
|
100
|
+
assert.ok('session' in props)
|
|
101
|
+
assert.ok('setSession' in props)
|
|
102
|
+
assert.ok('clearSession' in props)
|
|
103
|
+
assert.ok('getSession' in props)
|
|
104
|
+
assert.ok('hasSessionChanged' in props)
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
test('session should be frozen initial', () => {
|
|
108
|
+
const service = new PikkuSessionService()
|
|
109
|
+
service.setInitial({ userId: 'user-1' })
|
|
110
|
+
const props = createFunctionSessionWireProps(service)
|
|
111
|
+
assert.deepStrictEqual(props.session, { userId: 'user-1' })
|
|
112
|
+
})
|
|
113
|
+
})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ChannelStore } from '../wirings/channel/channel-store.js'
|
|
2
|
-
import { CoreUserSession } from '../types/core.types.js'
|
|
1
|
+
import type { ChannelStore } from '../wirings/channel/channel-store.js'
|
|
2
|
+
import type { CoreUserSession } from '../types/core.types.js'
|
|
3
3
|
|
|
4
4
|
export interface SessionService<UserSession extends CoreUserSession> {
|
|
5
5
|
sessionChanged: boolean
|
|
@@ -66,7 +66,7 @@ export function createMiddlewareSessionWireProps<
|
|
|
66
66
|
UserSession extends CoreUserSession,
|
|
67
67
|
>(session: SessionService<UserSession>) {
|
|
68
68
|
return {
|
|
69
|
-
session: session.get(),
|
|
69
|
+
session: session.get() as UserSession | undefined,
|
|
70
70
|
setSession: (s: UserSession) => session.setInitial(s),
|
|
71
71
|
getSession: () => session.get(),
|
|
72
72
|
hasSessionChanged: () => session.sessionChanged,
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
CoreSingletonServices,
|
|
4
|
-
CreateWireServices,
|
|
5
|
-
CoreConfig,
|
|
6
|
-
} from '../types/core.types.js'
|
|
7
|
-
import {
|
|
1
|
+
import type { SerializedError } from '../types/core.types.js'
|
|
2
|
+
import type {
|
|
8
3
|
WorkflowRun,
|
|
9
4
|
WorkflowRunWire,
|
|
10
5
|
StepState,
|
|
@@ -37,11 +32,6 @@ export interface WorkflowService {
|
|
|
37
32
|
|
|
38
33
|
// Orchestration operations
|
|
39
34
|
resumeWorkflow(runId: string): Promise<void>
|
|
40
|
-
setServices(
|
|
41
|
-
singletonServices: CoreSingletonServices,
|
|
42
|
-
createWireServices: CreateWireServices | undefined,
|
|
43
|
-
config: CoreConfig
|
|
44
|
-
): void
|
|
45
35
|
startWorkflow<I>(
|
|
46
36
|
name: string,
|
|
47
37
|
input: I,
|
package/src/time-utils.test.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { describe, test } from 'node:test'
|
|
2
2
|
import assert from 'node:assert/strict'
|
|
3
3
|
|
|
4
|
+
import type { RelativeTimeInput } from './time-utils'
|
|
4
5
|
import {
|
|
5
6
|
getRelativeTimeOffset,
|
|
6
7
|
getRelativeTimeOffsetFromNow,
|
|
7
|
-
RelativeTimeInput,
|
|
8
8
|
} from './time-utils'
|
|
9
9
|
|
|
10
10
|
const approxEqual = (a: number, b: number, delta: number = 10): boolean =>
|
package/src/types/core.types.ts
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import type { Logger, LogLevel } from '../services/logger.js'
|
|
2
|
-
import { VariablesService } from '../services/variables-service.js'
|
|
3
|
-
import { SecretService } from '../services/secret-service.js'
|
|
4
|
-
import { SchemaService } from '../services/schema-service.js'
|
|
5
|
-
import { JWTService } from '../services/jwt-service.js'
|
|
6
|
-
import { PikkuHTTP } from '../wirings/http/http.types.js'
|
|
7
|
-
import {
|
|
2
|
+
import type { VariablesService } from '../services/variables-service.js'
|
|
3
|
+
import type { SecretService } from '../services/secret-service.js'
|
|
4
|
+
import type { SchemaService } from '../services/schema-service.js'
|
|
5
|
+
import type { JWTService } from '../services/jwt-service.js'
|
|
6
|
+
import type { PikkuHTTP } from '../wirings/http/http.types.js'
|
|
7
|
+
import type {
|
|
8
8
|
PikkuChannel,
|
|
9
9
|
CorePikkuChannelMiddleware,
|
|
10
10
|
CorePikkuChannelMiddlewareFactory,
|
|
11
11
|
} from '../wirings/channel/channel.types.js'
|
|
12
|
-
import { PikkuRPC } from '../wirings/rpc/rpc-types.js'
|
|
13
|
-
import { PikkuMCP } from '../wirings/mcp/mcp.types.js'
|
|
14
|
-
import { PikkuScheduledTask } from '../wirings/scheduler/scheduler.types.js'
|
|
15
|
-
import { PikkuQueue, QueueService } from '../wirings/queue/queue.types.js'
|
|
16
|
-
import { PikkuCLI } from '../wirings/cli/cli.types.js'
|
|
17
|
-
import {
|
|
12
|
+
import type { PikkuRPC } from '../wirings/rpc/rpc-types.js'
|
|
13
|
+
import type { PikkuMCP } from '../wirings/mcp/mcp.types.js'
|
|
14
|
+
import type { PikkuScheduledTask } from '../wirings/scheduler/scheduler.types.js'
|
|
15
|
+
import type { PikkuQueue, QueueService } from '../wirings/queue/queue.types.js'
|
|
16
|
+
import type { PikkuCLI } from '../wirings/cli/cli.types.js'
|
|
17
|
+
import type {
|
|
18
18
|
PikkuWorkflowWire,
|
|
19
19
|
WorkflowService,
|
|
20
20
|
WorkflowServiceConfig,
|
|
21
21
|
WorkflowStepWire,
|
|
22
22
|
} from '../wirings/workflow/workflow.types.js'
|
|
23
23
|
import type { PikkuGraphWire } from '../wirings/workflow/graph/workflow-graph.types.js'
|
|
24
|
-
import { PikkuTrigger } from '../wirings/trigger/trigger.types.js'
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
import {
|
|
24
|
+
import type { PikkuTrigger } from '../wirings/trigger/trigger.types.js'
|
|
25
|
+
import type { PikkuGateway } from '../wirings/gateway/gateway.types.js'
|
|
26
|
+
import type { SchedulerService } from '../services/scheduler-service.js'
|
|
27
|
+
import type { DeploymentService } from '../services/deployment-service.js'
|
|
28
|
+
import type { AIStorageService } from '../services/ai-storage-service.js'
|
|
29
|
+
|
|
30
|
+
import type { ContentService } from '../services/content-service.js'
|
|
31
|
+
import type { AIAgentRunnerService } from '../services/ai-agent-runner-service.js'
|
|
32
|
+
import type { AIRunStateService } from '../services/ai-run-state-service.js'
|
|
31
33
|
import type { PikkuAIMiddlewareHooks } from '../wirings/ai-agent/ai-agent.types.js'
|
|
32
34
|
|
|
33
35
|
export type PikkuWiringTypes =
|
|
@@ -41,6 +43,7 @@ export type PikkuWiringTypes =
|
|
|
41
43
|
| 'cli'
|
|
42
44
|
| 'workflow'
|
|
43
45
|
| 'agent'
|
|
46
|
+
| 'gateway'
|
|
44
47
|
|
|
45
48
|
export interface FunctionServicesMeta {
|
|
46
49
|
optimized: boolean
|
|
@@ -101,10 +104,13 @@ export type FunctionRuntimeMeta = {
|
|
|
101
104
|
expose?: boolean
|
|
102
105
|
remote?: boolean
|
|
103
106
|
mcp?: boolean
|
|
107
|
+
readonly?: boolean
|
|
104
108
|
sessionless?: boolean
|
|
105
109
|
version?: number
|
|
106
110
|
requiresApproval?: boolean
|
|
107
111
|
contractHash?: string
|
|
112
|
+
inputHash?: string
|
|
113
|
+
outputHash?: string
|
|
108
114
|
}
|
|
109
115
|
|
|
110
116
|
export type FunctionMeta = FunctionRuntimeMeta &
|
|
@@ -208,6 +214,8 @@ export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
|
|
|
208
214
|
/** AI agent storage service (threads, messages, working memory) */
|
|
209
215
|
aiStorage?: AIStorageService
|
|
210
216
|
|
|
217
|
+
/** Content service for file storage and retrieval */
|
|
218
|
+
content?: ContentService
|
|
211
219
|
/** AI agent runner service (model calls + tool loop) */
|
|
212
220
|
aiAgentRunner?: AIAgentRunnerService
|
|
213
221
|
/** AI run state service (run lifecycle + approval persistence) */
|
|
@@ -243,6 +251,7 @@ export type PikkuWire<
|
|
|
243
251
|
workflowStep: WorkflowStepWire
|
|
244
252
|
graph: PikkuGraphWire
|
|
245
253
|
trigger: PikkuTrigger<TriggerOutput>
|
|
254
|
+
gateway: PikkuGateway
|
|
246
255
|
session: HasInitialSession extends true
|
|
247
256
|
? UserSession
|
|
248
257
|
: UserSession | undefined
|
package/src/types/state.types.ts
CHANGED
|
@@ -1,44 +1,54 @@
|
|
|
1
|
-
import { PikkuError, ErrorDetails } from '../errors/error-handler.js'
|
|
2
|
-
import {
|
|
1
|
+
import type { PikkuError, ErrorDetails } from '../errors/error-handler.js'
|
|
2
|
+
import type {
|
|
3
3
|
CorePikkuFunctionConfig,
|
|
4
4
|
CorePermissionGroup,
|
|
5
5
|
CorePikkuPermission,
|
|
6
6
|
} from '../function/functions.types.js'
|
|
7
|
-
import { CorePikkuTriggerFunctionConfig } from '../wirings/trigger/trigger.types.js'
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
import type { CorePikkuTriggerFunctionConfig } from '../wirings/trigger/trigger.types.js'
|
|
8
|
+
import type {
|
|
9
|
+
CoreChannel,
|
|
10
|
+
ChannelsMeta,
|
|
11
|
+
} from '../wirings/channel/channel.types.js'
|
|
12
|
+
import type { CLIMeta, CLIProgramState } from '../wirings/cli/cli.types.js'
|
|
13
|
+
import type {
|
|
11
14
|
HTTPMethod,
|
|
12
15
|
CoreHTTPFunctionWiring,
|
|
13
16
|
HTTPWiringsMeta,
|
|
14
17
|
} from '../wirings/http/http.types.js'
|
|
15
|
-
import {
|
|
18
|
+
import type {
|
|
16
19
|
CoreMCPResource,
|
|
17
20
|
MCPResourceMeta,
|
|
18
21
|
MCPToolMeta,
|
|
19
22
|
CoreMCPPrompt,
|
|
20
23
|
MCPPromptMeta,
|
|
21
24
|
} from '../wirings/mcp/mcp.types.js'
|
|
22
|
-
import {
|
|
23
|
-
|
|
25
|
+
import type {
|
|
26
|
+
CoreAIAgent,
|
|
27
|
+
AIAgentMeta,
|
|
28
|
+
} from '../wirings/ai-agent/ai-agent.types.js'
|
|
29
|
+
import type {
|
|
30
|
+
CoreGateway,
|
|
31
|
+
GatewaysMeta,
|
|
32
|
+
} from '../wirings/gateway/gateway.types.js'
|
|
33
|
+
import type {
|
|
24
34
|
CoreQueueWorker,
|
|
25
35
|
QueueWorkersMeta,
|
|
26
36
|
} from '../wirings/queue/queue.types.js'
|
|
27
|
-
import {
|
|
37
|
+
import type {
|
|
28
38
|
CoreScheduledTask,
|
|
29
39
|
ScheduledTasksMeta,
|
|
30
40
|
} from '../wirings/scheduler/scheduler.types.js'
|
|
31
|
-
import {
|
|
41
|
+
import type {
|
|
32
42
|
CoreWorkflow,
|
|
33
43
|
WorkflowsRuntimeMeta,
|
|
34
44
|
} from '../wirings/workflow/workflow.types.js'
|
|
35
|
-
import {
|
|
45
|
+
import type {
|
|
36
46
|
CoreTrigger,
|
|
37
47
|
CoreTriggerSource,
|
|
38
48
|
TriggerMeta,
|
|
39
49
|
TriggerSourceMeta,
|
|
40
50
|
} from '../wirings/trigger/trigger.types.js'
|
|
41
|
-
import {
|
|
51
|
+
import type {
|
|
42
52
|
FunctionsMeta,
|
|
43
53
|
CorePikkuMiddleware,
|
|
44
54
|
CorePikkuMiddlewareGroup,
|
|
@@ -70,7 +80,10 @@ export interface PikkuPackageState {
|
|
|
70
80
|
}
|
|
71
81
|
>
|
|
72
82
|
/** Maps namespace aliases to package config (e.g., 'ext' -> { package: '@pikku/...', rpcEndpoint: '...' }) */
|
|
73
|
-
|
|
83
|
+
addons: Map<
|
|
84
|
+
string,
|
|
85
|
+
{ package: string; rpcEndpoint?: string; auth?: boolean; tags?: string[] }
|
|
86
|
+
>
|
|
74
87
|
}
|
|
75
88
|
http: {
|
|
76
89
|
middleware: Map<string, CorePikkuMiddleware<any, any>[]>
|
|
@@ -112,6 +125,10 @@ export interface PikkuPackageState {
|
|
|
112
125
|
agents: Map<string, CoreAIAgent>
|
|
113
126
|
agentsMeta: AIAgentMeta
|
|
114
127
|
}
|
|
128
|
+
gateway: {
|
|
129
|
+
gateways: Map<string, CoreGateway>
|
|
130
|
+
meta: GatewaysMeta
|
|
131
|
+
}
|
|
115
132
|
cli: {
|
|
116
133
|
meta: CLIMeta | Record<string, any> // Backward compatible with old published CLI format
|
|
117
134
|
programs: Record<string, CLIProgramState>
|
|
@@ -148,7 +165,7 @@ export interface PikkuPackageState {
|
|
|
148
165
|
} | null
|
|
149
166
|
}
|
|
150
167
|
package: {
|
|
151
|
-
/** Service factory functions for
|
|
168
|
+
/** Service factory functions for addon packages */
|
|
152
169
|
factories: {
|
|
153
170
|
createConfig?: CreateConfig<CoreConfig>
|
|
154
171
|
createSingletonServices?: CreateSingletonServices<
|