@pikku/core 0.10.2 → 0.11.1

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.
Files changed (138) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/errors/errors.d.ts +1 -1
  3. package/dist/errors/errors.js +3 -3
  4. package/dist/function/function-runner.d.ts +6 -7
  5. package/dist/function/function-runner.js +35 -16
  6. package/dist/function/functions.types.d.ts +23 -30
  7. package/dist/function/functions.types.js +9 -6
  8. package/dist/handle-error.d.ts +1 -1
  9. package/dist/handle-error.js +1 -1
  10. package/dist/index.d.ts +2 -0
  11. package/dist/index.js +2 -0
  12. package/dist/middleware/auth-apikey.d.ts +1 -0
  13. package/dist/middleware/auth-apikey.js +3 -3
  14. package/dist/middleware/auth-bearer.d.ts +1 -0
  15. package/dist/middleware/auth-bearer.js +3 -3
  16. package/dist/middleware/auth-cookie.d.ts +1 -0
  17. package/dist/middleware/auth-cookie.js +5 -5
  18. package/dist/middleware/timeout.d.ts +1 -0
  19. package/dist/middleware/timeout.js +3 -2
  20. package/dist/middleware-runner.d.ts +3 -6
  21. package/dist/middleware-runner.js +11 -11
  22. package/dist/permissions.d.ts +6 -6
  23. package/dist/permissions.js +15 -15
  24. package/dist/pikku-state.d.ts +7 -2
  25. package/dist/pikku-state.js +4 -0
  26. package/dist/services/index.d.ts +1 -0
  27. package/dist/services/index.js +1 -0
  28. package/dist/services/scheduler-service.d.ts +63 -0
  29. package/dist/services/scheduler-service.js +6 -0
  30. package/dist/services/user-session-service.d.ts +7 -3
  31. package/dist/services/user-session-service.js +8 -1
  32. package/dist/time-utils.d.ts +14 -0
  33. package/dist/time-utils.js +62 -0
  34. package/dist/types/core.types.d.ts +48 -35
  35. package/dist/types/core.types.js +3 -13
  36. package/dist/utils.d.ts +1 -1
  37. package/dist/utils.js +3 -3
  38. package/dist/wirings/channel/channel-common.js +2 -3
  39. package/dist/wirings/channel/channel-handler.d.ts +3 -2
  40. package/dist/wirings/channel/channel-handler.js +6 -9
  41. package/dist/wirings/channel/channel-runner.d.ts +2 -2
  42. package/dist/wirings/channel/channel.types.d.ts +10 -5
  43. package/dist/wirings/channel/local/local-channel-runner.d.ts +1 -1
  44. package/dist/wirings/channel/local/local-channel-runner.js +19 -26
  45. package/dist/wirings/channel/serverless/serverless-channel-runner.d.ts +1 -1
  46. package/dist/wirings/channel/serverless/serverless-channel-runner.js +41 -46
  47. package/dist/wirings/cli/channel/cli-channel-runner.js +1 -1
  48. package/dist/wirings/cli/cli-runner.d.ts +5 -5
  49. package/dist/wirings/cli/cli-runner.js +11 -29
  50. package/dist/wirings/cli/cli.types.d.ts +15 -11
  51. package/dist/wirings/http/http-runner.d.ts +6 -6
  52. package/dist/wirings/http/http-runner.js +25 -39
  53. package/dist/wirings/http/http.types.d.ts +5 -10
  54. package/dist/wirings/mcp/mcp-runner.d.ts +2 -2
  55. package/dist/wirings/mcp/mcp-runner.js +12 -19
  56. package/dist/wirings/mcp/mcp.types.d.ts +6 -0
  57. package/dist/wirings/queue/queue-runner.d.ts +3 -3
  58. package/dist/wirings/queue/queue-runner.js +7 -14
  59. package/dist/wirings/queue/queue.types.d.ts +4 -13
  60. package/dist/wirings/rpc/index.d.ts +1 -1
  61. package/dist/wirings/rpc/index.js +1 -1
  62. package/dist/wirings/rpc/rpc-runner.d.ts +13 -7
  63. package/dist/wirings/rpc/rpc-runner.js +50 -26
  64. package/dist/wirings/rpc/rpc-types.d.ts +1 -0
  65. package/dist/wirings/scheduler/scheduler-runner.d.ts +3 -3
  66. package/dist/wirings/scheduler/scheduler-runner.js +13 -24
  67. package/dist/wirings/scheduler/scheduler.types.d.ts +3 -8
  68. package/dist/wirings/workflow/index.d.ts +15 -0
  69. package/dist/wirings/workflow/index.js +14 -0
  70. package/dist/wirings/workflow/pikku-workflow-service.d.ts +160 -0
  71. package/dist/wirings/workflow/pikku-workflow-service.js +430 -0
  72. package/dist/wirings/workflow/workflow-runner.d.ts +34 -0
  73. package/dist/wirings/workflow/workflow-runner.js +65 -0
  74. package/dist/wirings/workflow/workflow.types.d.ts +332 -0
  75. package/dist/wirings/workflow/workflow.types.js +1 -0
  76. package/package.json +3 -4
  77. package/src/errors/errors.ts +3 -3
  78. package/src/factory-functions.test.ts +9 -36
  79. package/src/function/function-runner.test.ts +57 -68
  80. package/src/function/function-runner.ts +51 -28
  81. package/src/function/function-runner.ts.bak +188 -0
  82. package/src/function/functions.types.ts +69 -51
  83. package/src/handle-error.ts +1 -1
  84. package/src/index.ts +2 -0
  85. package/src/middleware/auth-apikey.test.ts +360 -0
  86. package/src/middleware/auth-apikey.ts +3 -7
  87. package/src/middleware/auth-bearer.test.ts +447 -0
  88. package/src/middleware/auth-bearer.ts +27 -33
  89. package/src/middleware/auth-cookie.test.ts +525 -0
  90. package/src/middleware/auth-cookie.ts +6 -6
  91. package/src/middleware/timeout.ts +4 -2
  92. package/src/middleware-runner.test.ts +58 -127
  93. package/src/middleware-runner.ts +13 -15
  94. package/src/permissions.test.ts +41 -45
  95. package/src/permissions.ts +21 -20
  96. package/src/pikku-state.ts +14 -2
  97. package/src/services/index.ts +1 -0
  98. package/src/services/scheduler-service.ts +76 -0
  99. package/src/services/user-session-service.ts +14 -4
  100. package/src/time-utils.ts +75 -0
  101. package/src/types/core.types.ts +92 -51
  102. package/src/utils.ts +4 -4
  103. package/src/wirings/channel/channel-common.ts +4 -7
  104. package/src/wirings/channel/channel-handler.ts +16 -22
  105. package/src/wirings/channel/channel-runner.ts +2 -2
  106. package/src/wirings/channel/channel.types.ts +14 -11
  107. package/src/wirings/channel/local/local-channel-runner.test.ts +5 -3
  108. package/src/wirings/channel/local/local-channel-runner.ts +23 -38
  109. package/src/wirings/channel/serverless/serverless-channel-runner.ts +51 -77
  110. package/src/wirings/cli/channel/cli-channel-runner.ts +1 -1
  111. package/src/wirings/cli/cli-runner.test.ts +7 -7
  112. package/src/wirings/cli/cli-runner.ts +25 -63
  113. package/src/wirings/cli/cli.types.ts +22 -16
  114. package/src/wirings/http/http-runner.test.ts +8 -8
  115. package/src/wirings/http/http-runner.ts +29 -56
  116. package/src/wirings/http/http.types.ts +5 -14
  117. package/src/wirings/mcp/mcp-runner.ts +23 -48
  118. package/src/wirings/mcp/mcp.types.ts +6 -0
  119. package/src/wirings/queue/queue-runner.test.ts +641 -0
  120. package/src/wirings/queue/queue-runner.ts +10 -24
  121. package/src/wirings/queue/queue.types.ts +5 -15
  122. package/src/wirings/rpc/index.ts +1 -1
  123. package/src/wirings/rpc/rpc-runner.ts +71 -32
  124. package/src/wirings/rpc/rpc-types.ts +1 -0
  125. package/src/wirings/scheduler/scheduler-runner.test.ts +627 -0
  126. package/src/wirings/scheduler/scheduler-runner.ts +24 -50
  127. package/src/wirings/scheduler/scheduler.types.ts +3 -9
  128. package/src/wirings/workflow/index.ts +43 -0
  129. package/src/wirings/workflow/pikku-workflow-service.ts +746 -0
  130. package/src/wirings/workflow/workflow-runner.ts +72 -0
  131. package/src/wirings/workflow/workflow.types.ts +422 -0
  132. package/tsconfig.tsbuildinfo +1 -1
  133. package/dist/services/file-channel-store.d.ts +0 -19
  134. package/dist/services/file-channel-store.js +0 -69
  135. package/dist/services/file-eventhub-store.d.ts +0 -17
  136. package/dist/services/file-eventhub-store.js +0 -71
  137. package/src/services/file-channel-store.ts +0 -86
  138. package/src/services/file-eventhub-store.ts +0 -90
@@ -1,18 +1,16 @@
1
1
  import {
2
- PikkuInteraction,
3
- PikkuWiringTypes,
2
+ PikkuWire,
4
3
  type CoreServices,
5
4
  type CoreSingletonServices,
6
5
  type CoreUserSession,
7
- type CreateSessionServices,
6
+ type CreateWireServices,
8
7
  } from '../../types/core.types.js'
9
8
  import type { CoreScheduledTask } from './scheduler.types.js'
10
9
  import { getErrorResponse, PikkuError } from '../../errors/error-handler.js'
11
- import { closeSessionServices } from '../../utils.js'
10
+ import { closeWireServices } from '../../utils.js'
12
11
  import { pikkuState } from '../../pikku-state.js'
13
12
  import { addFunction, runPikkuFunc } from '../../function/function-runner.js'
14
- import { rpcService } from '../rpc/rpc-runner.js'
15
- import { PikkuUserSessionService } from '../../services/user-session-service.js'
13
+ import { PikkuSessionService } from '../../services/user-session-service.js'
16
14
  import {
17
15
  CorePikkuFunctionConfig,
18
16
  CorePikkuFunctionSessionless,
@@ -22,7 +20,7 @@ export type RunScheduledTasksParams = {
22
20
  name: string
23
21
  session?: CoreUserSession
24
22
  singletonServices: CoreSingletonServices
25
- createSessionServices?: CreateSessionServices<
23
+ createWireServices?: CreateWireServices<
26
24
  CoreSingletonServices,
27
25
  CoreServices<CoreSingletonServices>,
28
26
  CoreUserSession
@@ -45,9 +43,8 @@ export const wireScheduler = <
45
43
  func: scheduledTask.func.func,
46
44
  auth: scheduledTask.func.auth,
47
45
  permissions: scheduledTask.func.permissions,
48
- middleware: scheduledTask.func.middleware as any,
46
+ middleware: scheduledTask.func.middleware,
49
47
  tags: scheduledTask.func.tags,
50
- docs: scheduledTask.func.docs as any,
51
48
  })
52
49
 
53
50
  const tasks = pikkuState('scheduler', 'tasks')
@@ -76,13 +73,13 @@ export async function runScheduledTask({
76
73
  name,
77
74
  session,
78
75
  singletonServices,
79
- createSessionServices,
76
+ createWireServices,
80
77
  }: RunScheduledTasksParams): Promise<void> {
81
- let sessionServices: any
78
+ let wireServices: any
82
79
  const task = pikkuState('scheduler', 'tasks').get(name)
83
80
  const meta = pikkuState('scheduler', 'meta')[name]
84
81
 
85
- const userSession = new PikkuUserSessionService()
82
+ const userSession = new PikkuSessionService()
86
83
  if (session) {
87
84
  userSession.set(session)
88
85
  }
@@ -96,8 +93,8 @@ export async function runScheduledTask({
96
93
  )
97
94
  }
98
95
 
99
- // Create the scheduled task interaction object
100
- const interaction: PikkuInteraction = {
96
+ // Create the scheduled task wire object
97
+ const wire: PikkuWire = {
101
98
  scheduledTask: {
102
99
  name,
103
100
  schedule: task.schedule,
@@ -106,6 +103,7 @@ export async function runScheduledTask({
106
103
  throw new ScheduledTaskSkippedError(name, reason)
107
104
  },
108
105
  },
106
+ session: userSession,
109
107
  }
110
108
 
111
109
  try {
@@ -113,40 +111,16 @@ export async function runScheduledTask({
113
111
  `Running schedule task: ${name} | schedule: ${task.schedule}`
114
112
  )
115
113
 
116
- const getAllServices = async () => {
117
- sessionServices = await createSessionServices?.(
118
- singletonServices,
119
- interaction,
120
- session
121
- )
122
-
123
- return rpcService.injectRPCService(
124
- {
125
- ...singletonServices,
126
- ...sessionServices,
127
- },
128
- interaction
129
- )
130
- }
131
-
132
- const result = await runPikkuFunc(
133
- PikkuWiringTypes.scheduler,
134
- meta.name,
135
- meta.pikkuFuncName,
136
- {
137
- singletonServices,
138
- getAllServices,
139
- userSession,
140
- auth: false,
141
- data: () => undefined,
142
- inheritedMiddleware: meta.middleware,
143
- wireMiddleware: task.middleware,
144
- tags: task.tags,
145
- interaction,
146
- }
147
- )
148
-
149
- return result
114
+ await runPikkuFunc('scheduler', meta.name, meta.pikkuFuncName, {
115
+ singletonServices,
116
+ createWireServices,
117
+ auth: false,
118
+ data: () => undefined,
119
+ inheritedMiddleware: meta.middleware,
120
+ wireMiddleware: task.middleware,
121
+ tags: task.tags,
122
+ wire,
123
+ })
150
124
  } catch (e: any) {
151
125
  const errorResponse = getErrorResponse(e)
152
126
  if (errorResponse != null) {
@@ -154,8 +128,8 @@ export async function runScheduledTask({
154
128
  }
155
129
  throw e
156
130
  } finally {
157
- if (sessionServices) {
158
- await closeSessionServices(singletonServices.logger, sessionServices)
131
+ if (wireServices) {
132
+ await closeWireServices(singletonServices.logger, wireServices)
159
133
  }
160
134
  }
161
135
  }
@@ -1,8 +1,7 @@
1
1
  import {
2
- PikkuDocs,
3
2
  CoreUserSession,
4
3
  CorePikkuMiddleware,
5
- MiddlewareMetadata,
4
+ CommonWireMeta,
6
5
  } from '../../types/core.types.js'
7
6
  import {
8
7
  CorePikkuFunctionConfig,
@@ -15,14 +14,10 @@ import {
15
14
  export type ScheduledTasksMeta<UserSession extends CoreUserSession = any> =
16
15
  Record<
17
16
  string,
18
- {
19
- pikkuFuncName: string
17
+ CommonWireMeta & {
20
18
  name: string
21
19
  schedule: string
22
20
  session?: UserSession
23
- docs?: PikkuDocs
24
- tags?: string[]
25
- middleware?: MiddlewareMetadata[] // Pre-resolved middleware chain (tag + explicit)
26
21
  }
27
22
  >
28
23
 
@@ -38,13 +33,12 @@ export type CoreScheduledTask<
38
33
  name: string
39
34
  schedule: string
40
35
  func: PikkuFunctionConfig
41
- docs?: PikkuDocs
42
36
  tags?: string[]
43
37
  middleware?: PikkuMiddleware[]
44
38
  }
45
39
 
46
40
  /**
47
- * Represents a scheduled task interaction object for middleware
41
+ * Represents a scheduled task wire object for middleware
48
42
  * Provides information about the current scheduled task execution
49
43
  */
50
44
  export interface PikkuScheduledTask {
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Workflow module exports
3
+ */
4
+
5
+ // Types
6
+ export type {
7
+ CoreWorkflow,
8
+ WorkflowStepOptions,
9
+ WorkflowStepMeta,
10
+ RpcStepMeta,
11
+ BranchStepMeta,
12
+ ParallelGroupStepMeta,
13
+ FanoutStepMeta,
14
+ ReturnStepMeta,
15
+ InlineStepMeta,
16
+ SleepStepMeta,
17
+ CancelStepMeta,
18
+ InputSource,
19
+ OutputBinding,
20
+ PikkuWorkflowWire,
21
+ PikkuWorkflow,
22
+ WorkflowsMeta,
23
+ WorkflowRun,
24
+ StepState,
25
+ WorkflowStatus,
26
+ StepStatus,
27
+ } from './workflow.types.js'
28
+
29
+ export { PikkuWorkflowService } from './pikku-workflow-service.js'
30
+
31
+ // Internal registration function (used by generated code)
32
+ export { addWorkflow } from './workflow-runner.js'
33
+
34
+ /**
35
+ * @deprecated This function is no longer used and will be removed in a future release.
36
+ * It exists only for backwards compatibility with generated code.
37
+ * TODO: Remove this export in a future release after updating code generation
38
+ */
39
+ export const wireWorkflow = <T extends { name: string; func: any }>(
40
+ workflow: T
41
+ ): void => {
42
+ // Empty function - no longer used, kept for backwards compatibility
43
+ }