@pikku/core 0.7.8 → 0.8.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.
Files changed (151) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/dist/errors/error-handler.d.ts +2 -0
  3. package/dist/errors/errors.js +2 -0
  4. package/dist/{channel → events/channel}/channel-handler.d.ts +1 -1
  5. package/dist/{channel → events/channel}/channel-handler.js +2 -2
  6. package/dist/{channel → events/channel}/channel-runner.d.ts +1 -1
  7. package/dist/{channel → events/channel}/channel-runner.js +4 -4
  8. package/dist/{channel → events/channel}/channel-store.d.ts +1 -1
  9. package/dist/{channel → events/channel}/channel.types.d.ts +3 -3
  10. package/dist/{channel → events/channel}/local/local-channel-runner.js +6 -6
  11. package/dist/{channel → events/channel}/log-channels.d.ts +1 -1
  12. package/dist/{channel → events/channel}/log-channels.js +1 -1
  13. package/dist/{channel → events/channel}/serverless/serverless-channel-runner.js +7 -7
  14. package/dist/{http → events/http}/http-runner.d.ts +1 -1
  15. package/dist/{http → events/http}/http-runner.js +8 -8
  16. package/dist/{http → events/http}/http.types.d.ts +3 -3
  17. package/dist/{http → events/http}/index.d.ts +0 -1
  18. package/dist/{http → events/http}/index.js +0 -1
  19. package/dist/{http → events/http}/log-http-routes.d.ts +1 -1
  20. package/dist/{http → events/http}/log-http-routes.js +1 -1
  21. package/dist/{http → events/http}/pikku-fetch-http-request.js +1 -1
  22. package/dist/events/mcp/index.d.ts +2 -0
  23. package/dist/events/mcp/index.js +2 -0
  24. package/dist/events/mcp/mcp-runner.d.ts +30 -0
  25. package/dist/events/mcp/mcp-runner.js +192 -0
  26. package/dist/events/mcp/mcp.types.d.ts +117 -0
  27. package/dist/events/queue/index.d.ts +6 -0
  28. package/dist/events/queue/index.js +6 -0
  29. package/dist/events/queue/queue-runner.d.ts +24 -0
  30. package/dist/events/queue/queue-runner.js +83 -0
  31. package/dist/events/queue/queue.types.d.ts +154 -0
  32. package/dist/events/queue/register-queue-helper.d.ts +17 -0
  33. package/dist/events/queue/register-queue-helper.js +34 -0
  34. package/dist/events/queue/validate-worker-config.d.ts +41 -0
  35. package/dist/events/queue/validate-worker-config.js +50 -0
  36. package/dist/events/rpc/index.d.ts +2 -0
  37. package/dist/events/rpc/rpc-runner.d.ts +28 -0
  38. package/dist/{rpc → events/rpc}/rpc-runner.js +2 -2
  39. package/dist/events/scheduler/index.d.ts +3 -0
  40. package/dist/events/scheduler/index.js +3 -0
  41. package/dist/{scheduler → events/scheduler}/log-schedulers.d.ts +1 -1
  42. package/dist/{scheduler → events/scheduler}/log-schedulers.js +1 -1
  43. package/dist/{scheduler → events/scheduler}/scheduler-runner.d.ts +4 -3
  44. package/dist/{scheduler → events/scheduler}/scheduler-runner.js +7 -4
  45. package/dist/{scheduler → events/scheduler}/scheduler.types.d.ts +3 -4
  46. package/dist/function/function-runner.js +8 -0
  47. package/dist/function/functions.types.d.ts +3 -2
  48. package/dist/handle-error.d.ts +2 -2
  49. package/dist/handle-error.js +1 -1
  50. package/dist/index.d.ts +10 -6
  51. package/dist/index.js +10 -6
  52. package/dist/middleware-runner.d.ts +4 -4
  53. package/dist/middleware-runner.js +3 -1
  54. package/dist/pikku-state.d.ts +18 -4
  55. package/dist/pikku-state.js +12 -0
  56. package/dist/services/user-session-service.d.ts +1 -1
  57. package/dist/types/core.types.d.ts +17 -5
  58. package/dist/types/core.types.js +2 -0
  59. package/lcov.info +3191 -3123
  60. package/package.json +8 -7
  61. package/src/errors/error-handler.ts +2 -1
  62. package/src/errors/errors.ts +2 -0
  63. package/src/{channel → events/channel}/channel-handler.ts +3 -3
  64. package/src/{channel → events/channel}/channel-runner.ts +5 -5
  65. package/src/{channel → events/channel}/channel-store.ts +1 -1
  66. package/src/{channel → events/channel}/channel.types.ts +3 -3
  67. package/src/{channel → events/channel}/local/local-channel-runner.test.ts +1 -1
  68. package/src/{channel → events/channel}/local/local-channel-runner.ts +7 -7
  69. package/src/{channel → events/channel}/local/local-eventhub-service.test.ts +1 -1
  70. package/src/{channel → events/channel}/log-channels.ts +2 -2
  71. package/src/{channel → events/channel}/serverless/serverless-channel-runner.ts +8 -8
  72. package/src/{http → events/http}/http-runner.test.ts +4 -4
  73. package/src/{http → events/http}/http-runner.ts +9 -9
  74. package/src/{http → events/http}/http.types.ts +3 -3
  75. package/src/{http → events/http}/index.ts +0 -1
  76. package/src/{http → events/http}/log-http-routes.ts +2 -2
  77. package/src/{http → events/http}/pikku-fetch-http-request.ts +1 -1
  78. package/src/events/mcp/index.ts +2 -0
  79. package/src/events/mcp/mcp-runner.ts +321 -0
  80. package/src/events/mcp/mcp.types.ts +150 -0
  81. package/src/events/queue/index.ts +18 -0
  82. package/src/events/queue/queue-runner.ts +125 -0
  83. package/src/events/queue/queue.types.ts +176 -0
  84. package/src/events/queue/register-queue-helper.ts +62 -0
  85. package/src/events/queue/validate-worker-config.ts +113 -0
  86. package/src/events/rpc/index.ts +2 -0
  87. package/src/{rpc → events/rpc}/rpc-runner.ts +3 -3
  88. package/src/events/scheduler/index.ts +9 -0
  89. package/src/{scheduler → events/scheduler}/log-schedulers.ts +2 -2
  90. package/src/{scheduler → events/scheduler}/scheduler-runner.ts +11 -10
  91. package/src/{scheduler → events/scheduler}/scheduler.types.ts +2 -4
  92. package/src/function/function-runner.ts +19 -1
  93. package/src/function/functions.types.ts +3 -1
  94. package/src/handle-error.ts +2 -2
  95. package/src/index.ts +23 -6
  96. package/src/middleware-runner.ts +14 -7
  97. package/src/pikku-state.ts +40 -4
  98. package/src/services/user-session-service.ts +1 -1
  99. package/src/types/core.types.ts +24 -4
  100. package/tsconfig.json +3 -2
  101. package/tsconfig.tsbuildinfo +1 -1
  102. package/dist/rpc/index.d.ts +0 -2
  103. package/dist/rpc/rpc-runner.d.ts +0 -27
  104. package/dist/scheduler/index.d.ts +0 -3
  105. package/dist/scheduler/index.js +0 -3
  106. package/src/http/incomingmessage-to-request-convertor.ts +0 -0
  107. package/src/rpc/index.ts +0 -2
  108. package/src/scheduler/index.ts +0 -5
  109. /package/dist/{channel → events/channel}/channel-store.js +0 -0
  110. /package/dist/{channel → events/channel}/channel.types.js +0 -0
  111. /package/dist/{channel → events/channel}/eventhub-service.d.ts +0 -0
  112. /package/dist/{channel → events/channel}/eventhub-service.js +0 -0
  113. /package/dist/{channel → events/channel}/eventhub-store.d.ts +0 -0
  114. /package/dist/{channel → events/channel}/eventhub-store.js +0 -0
  115. /package/dist/{channel → events/channel}/index.d.ts +0 -0
  116. /package/dist/{channel → events/channel}/index.js +0 -0
  117. /package/dist/{channel → events/channel}/local/index.d.ts +0 -0
  118. /package/dist/{channel → events/channel}/local/index.js +0 -0
  119. /package/dist/{channel → events/channel}/local/local-channel-handler.d.ts +0 -0
  120. /package/dist/{channel → events/channel}/local/local-channel-handler.js +0 -0
  121. /package/dist/{channel → events/channel}/local/local-channel-runner.d.ts +0 -0
  122. /package/dist/{channel → events/channel}/local/local-eventhub-service.d.ts +0 -0
  123. /package/dist/{channel → events/channel}/local/local-eventhub-service.js +0 -0
  124. /package/dist/{channel → events/channel}/pikku-abstract-channel-handler.d.ts +0 -0
  125. /package/dist/{channel → events/channel}/pikku-abstract-channel-handler.js +0 -0
  126. /package/dist/{channel → events/channel}/serverless/index.d.ts +0 -0
  127. /package/dist/{channel → events/channel}/serverless/index.js +0 -0
  128. /package/dist/{channel → events/channel}/serverless/serverless-channel-runner.d.ts +0 -0
  129. /package/dist/{http → events/http}/http.types.js +0 -0
  130. /package/dist/{http → events/http}/pikku-fetch-http-request.d.ts +0 -0
  131. /package/dist/{http → events/http}/pikku-fetch-http-response.d.ts +0 -0
  132. /package/dist/{http → events/http}/pikku-fetch-http-response.js +0 -0
  133. /package/dist/{http/incomingmessage-to-request-convertor.d.ts → events/mcp/mcp.types.js} +0 -0
  134. /package/dist/{http/incomingmessage-to-request-convertor.js → events/queue/queue.types.js} +0 -0
  135. /package/dist/{rpc → events/rpc}/index.js +0 -0
  136. /package/dist/{rpc → events/rpc}/rpc-types.d.ts +0 -0
  137. /package/dist/{rpc → events/rpc}/rpc-types.js +0 -0
  138. /package/dist/{scheduler → events/scheduler}/scheduler.types.js +0 -0
  139. /package/src/{channel → events/channel}/eventhub-service.ts +0 -0
  140. /package/src/{channel → events/channel}/eventhub-store.ts +0 -0
  141. /package/src/{channel → events/channel}/index.ts +0 -0
  142. /package/src/{channel → events/channel}/local/index.ts +0 -0
  143. /package/src/{channel → events/channel}/local/local-channel-handler.ts +0 -0
  144. /package/src/{channel → events/channel}/local/local-eventhub-service.ts +0 -0
  145. /package/src/{channel → events/channel}/pikku-abstract-channel-handler.test.ts +0 -0
  146. /package/src/{channel → events/channel}/pikku-abstract-channel-handler.ts +0 -0
  147. /package/src/{channel → events/channel}/serverless/index.ts +0 -0
  148. /package/src/{http → events/http}/pikku-fetch-http-request.test.ts +0 -0
  149. /package/src/{http → events/http}/pikku-fetch-http-response.test.ts +0 -0
  150. /package/src/{http → events/http}/pikku-fetch-http-response.ts +0 -0
  151. /package/src/{rpc → events/rpc}/rpc-types.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { UserSessionService } from './services/user-session-service.js';
2
- import { CoreSingletonServices, PikkuInteraction, PikkuMiddleware } from './types/core.types.js';
2
+ import { CoreSingletonServices, PikkuFunctionMiddleware, PikkuInteraction, PikkuMiddleware } from './types/core.types.js';
3
3
  /**
4
4
  * Runs a chain of middleware functions in sequence before executing the main function.
5
5
  *
@@ -17,6 +17,6 @@ import { CoreSingletonServices, PikkuInteraction, PikkuMiddleware } from './type
17
17
  * async () => { return await runMain(); }
18
18
  * );
19
19
  */
20
- export declare const runMiddleware: (services: CoreSingletonServices & {
21
- userSession: UserSessionService<any>;
22
- }, interaction: PikkuInteraction, middlewares: PikkuMiddleware[], main?: () => Promise<void>) => Promise<void>;
20
+ export declare const runMiddleware: <Middleware extends PikkuMiddleware | PikkuFunctionMiddleware = PikkuMiddleware>(services: CoreSingletonServices & {
21
+ userSession?: UserSessionService<any>;
22
+ }, interaction: PikkuInteraction, middlewares: Middleware[], main?: () => Promise<unknown>) => Promise<unknown>;
@@ -16,13 +16,15 @@
16
16
  * );
17
17
  */
18
18
  export const runMiddleware = async (services, interaction, middlewares, main) => {
19
+ let result;
19
20
  const dispatch = async (index) => {
20
21
  if (middlewares && index < middlewares.length) {
21
22
  return await middlewares[index](services, interaction, () => dispatch(index + 1));
22
23
  }
23
24
  else if (main) {
24
- await main();
25
+ result = await main();
25
26
  }
26
27
  };
27
28
  await dispatch(0);
29
+ return result;
28
30
  };
@@ -1,10 +1,12 @@
1
- import { ChannelsMeta, CoreAPIChannel } from './channel/channel.types.js';
2
- import { CoreHTTPFunctionRoute, HTTPMethod, HTTPRoutesMeta } from './http/http.types.js';
1
+ import { ChannelsMeta, CoreAPIChannel } from './events/channel/channel.types.js';
2
+ import { CoreHTTPFunctionRoute, HTTPMethod, HTTPRoutesMeta } from './events/http/http.types.js';
3
3
  import { FunctionsMeta, PikkuMiddleware } from './types/core.types.js';
4
- import { CoreScheduledTask, ScheduledTasksMeta } from './scheduler/scheduler.types.js';
4
+ import { CoreScheduledTask, ScheduledTasksMeta } from './events/scheduler/scheduler.types.js';
5
5
  import { ErrorDetails, PikkuError } from './errors/error-handler.js';
6
6
  import { CorePikkuFunctionConfig } from './function/functions.types.js';
7
- import { RPCMeta } from './rpc/rpc-types.js';
7
+ import { RPCMeta } from './events/rpc/rpc-types.js';
8
+ import { queueWorkersMeta, CoreQueueWorker } from './events/queue/queue.types.js';
9
+ import { CoreMCPResource, CoreMCPTool, CoreMCPPrompt, MCPResourceMeta, MCPToolMeta, MCPPromptMeta } from './events/mcp/mcp.types.js';
8
10
  interface PikkuState {
9
11
  function: {
10
12
  meta: FunctionsMeta;
@@ -33,6 +35,18 @@ interface PikkuState {
33
35
  tasks: Map<string, CoreScheduledTask>;
34
36
  meta: ScheduledTasksMeta;
35
37
  };
38
+ queue: {
39
+ registrations: Map<string, CoreQueueWorker>;
40
+ meta: queueWorkersMeta;
41
+ };
42
+ mcp: {
43
+ resources: Map<string, CoreMCPResource>;
44
+ resourcesMeta: MCPResourceMeta;
45
+ tools: Map<string, CoreMCPTool>;
46
+ toolsMeta: MCPToolMeta;
47
+ prompts: Map<string, CoreMCPPrompt>;
48
+ promptsMeta: MCPPromptMeta;
49
+ };
36
50
  misc: {
37
51
  errors: Map<PikkuError, ErrorDetails>;
38
52
  schemas: Map<string, any>;
@@ -21,6 +21,18 @@ export const resetPikkuState = () => {
21
21
  tasks: new Map(),
22
22
  meta: [],
23
23
  },
24
+ queue: {
25
+ registrations: new Map(),
26
+ meta: {},
27
+ },
28
+ mcp: {
29
+ resources: new Map(),
30
+ resourcesMeta: {},
31
+ tools: new Map(),
32
+ toolsMeta: {},
33
+ prompts: new Map(),
34
+ promptsMeta: {},
35
+ },
24
36
  misc: {
25
37
  errors: globalThis.pikkuState?.misc?.errors || new Map(),
26
38
  schemas: globalThis.pikkuState?.misc?.schema || new Map(),
@@ -1,4 +1,4 @@
1
- import { ChannelStore } from '../channel/channel-store.js';
1
+ import { ChannelStore } from '../events/channel/channel-store.js';
2
2
  import { CoreUserSession } from '../types/core.types.js';
3
3
  export interface UserSessionService<UserSession extends CoreUserSession> {
4
4
  sessionChanged: boolean;
@@ -1,18 +1,21 @@
1
1
  import type { Logger, LogLevel } from '../services/logger.js';
2
2
  import { VariablesService } from '../services/variables-service.js';
3
- import { EventHubService } from '../channel/eventhub-service.js';
3
+ import { EventHubService } from '../events/channel/eventhub-service.js';
4
4
  import { SchemaService } from '../services/schema-service.js';
5
- import { PikkuHTTP } from '../http/http.types.js';
5
+ import { PikkuHTTP } from '../events/http/http.types.js';
6
6
  import { UserSessionService } from '../services/user-session-service.js';
7
7
  import { JWTService } from '../services/jwt-service.js';
8
8
  import { SecretService } from '../services/secret-service.js';
9
- import { PikkuChannel } from '../channel/channel.types.js';
10
- import { PikkuRPC } from '../rpc/rpc-types.js';
9
+ import { PikkuChannel } from '../events/channel/channel.types.js';
10
+ import { PikkuRPC } from '../events/rpc/rpc-types.js';
11
+ import { PikkuMCP } from '../events/mcp/mcp.types.js';
11
12
  export declare enum PikkuEventTypes {
12
13
  http = "http",
13
14
  scheduled = "scheduled",
14
15
  channel = "channel",
15
- rpc = "rpc"
16
+ rpc = "rpc",
17
+ queue = "queue",
18
+ mcp = "mcp"
16
19
  }
17
20
  export interface FunctionServicesMeta {
18
21
  optimized: boolean;
@@ -89,7 +92,15 @@ export interface CoreSingletonServices<Config extends CoreConfig = CoreConfig> {
89
92
  */
90
93
  export interface PikkuInteraction {
91
94
  http?: PikkuHTTP;
95
+ mcp?: PikkuMCP;
96
+ rpc?: PikkuRPC;
92
97
  }
98
+ /**
99
+ * A function that can wrap an interaction and be called before or after
100
+ */
101
+ export type PikkuFunctionMiddleware<SingletonServices extends CoreSingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession> = (services: SingletonServices & {
102
+ userSession?: UserSessionService<UserSession>;
103
+ }, interactions: PikkuInteraction, next: () => Promise<void>) => Promise<void>;
93
104
  /**
94
105
  * A function that can wrap an interaction and be called before or after
95
106
  */
@@ -100,6 +111,7 @@ export type PikkuMiddleware<SingletonServices extends CoreSingletonServices = Co
100
111
  * Represents the core services used by Pikku, including singleton services and the request/response interaction.
101
112
  */
102
113
  export type CoreServices<SingletonServices = CoreSingletonServices, UserSession extends CoreUserSession = CoreUserSession, CoreServices extends Record<string, unknown> = {}> = SingletonServices & PikkuInteraction & {
114
+ mcp?: PikkuMCP;
103
115
  rpc?: PikkuRPC;
104
116
  userSession?: UserSessionService<UserSession>;
105
117
  channel?: PikkuChannel<unknown, unknown>;
@@ -4,4 +4,6 @@ export var PikkuEventTypes;
4
4
  PikkuEventTypes["scheduled"] = "scheduled";
5
5
  PikkuEventTypes["channel"] = "channel";
6
6
  PikkuEventTypes["rpc"] = "rpc";
7
+ PikkuEventTypes["queue"] = "queue";
8
+ PikkuEventTypes["mcp"] = "mcp";
7
9
  })(PikkuEventTypes || (PikkuEventTypes = {}));