@journal.one/gateway 0.1.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 (61) hide show
  1. package/dist/common/logger.d.ts +19 -0
  2. package/dist/common/logger.d.ts.map +1 -0
  3. package/dist/common/logger.js +52 -0
  4. package/dist/common/logger.js.map +1 -0
  5. package/dist/config.d.ts +64 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +103 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/connection.d.ts +21 -0
  10. package/dist/connection.d.ts.map +1 -0
  11. package/dist/connection.js +266 -0
  12. package/dist/connection.js.map +1 -0
  13. package/dist/main.d.ts +3 -0
  14. package/dist/main.d.ts.map +1 -0
  15. package/dist/main.js +32 -0
  16. package/dist/main.js.map +1 -0
  17. package/dist/mcp-client.d.ts +24 -0
  18. package/dist/mcp-client.d.ts.map +1 -0
  19. package/dist/mcp-client.js +91 -0
  20. package/dist/mcp-client.js.map +1 -0
  21. package/dist/runtime.d.ts +25 -0
  22. package/dist/runtime.d.ts.map +1 -0
  23. package/dist/runtime.js +124 -0
  24. package/dist/runtime.js.map +1 -0
  25. package/dist/skill-client.d.ts +18 -0
  26. package/dist/skill-client.d.ts.map +1 -0
  27. package/dist/skill-client.js +75 -0
  28. package/dist/skill-client.js.map +1 -0
  29. package/dist/types/errors.d.ts +16 -0
  30. package/dist/types/errors.d.ts.map +1 -0
  31. package/dist/types/errors.js +13 -0
  32. package/dist/types/errors.js.map +1 -0
  33. package/dist/types/index.d.ts +7 -0
  34. package/dist/types/index.d.ts.map +1 -0
  35. package/dist/types/index.js +6 -0
  36. package/dist/types/index.js.map +1 -0
  37. package/dist/types/integrations.d.ts +165 -0
  38. package/dist/types/integrations.d.ts.map +1 -0
  39. package/dist/types/integrations.js +32 -0
  40. package/dist/types/integrations.js.map +1 -0
  41. package/dist/types/messages.d.ts +570 -0
  42. package/dist/types/messages.d.ts.map +1 -0
  43. package/dist/types/messages.js +68 -0
  44. package/dist/types/messages.js.map +1 -0
  45. package/dist/types/provider.d.ts +16 -0
  46. package/dist/types/provider.d.ts.map +1 -0
  47. package/dist/types/provider.js +7 -0
  48. package/dist/types/provider.js.map +1 -0
  49. package/dist/types/skills.d.ts +13 -0
  50. package/dist/types/skills.d.ts.map +1 -0
  51. package/dist/types/skills.js +6 -0
  52. package/dist/types/skills.js.map +1 -0
  53. package/dist/version-hash.d.ts +8 -0
  54. package/dist/version-hash.d.ts.map +1 -0
  55. package/dist/version-hash.js +23 -0
  56. package/dist/version-hash.js.map +1 -0
  57. package/dist/version.d.ts +2 -0
  58. package/dist/version.d.ts.map +1 -0
  59. package/dist/version.js +16 -0
  60. package/dist/version.js.map +1 -0
  61. package/package.json +39 -0
@@ -0,0 +1,91 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
3
+ import { ToolListChangedNotificationSchema } from "@modelcontextprotocol/sdk/types.js";
4
+ import { VERSION } from "./version.js";
5
+ import { EventEmitter } from "node:events";
6
+ export class McpClient extends EventEmitter {
7
+ definition;
8
+ env;
9
+ logger;
10
+ client = null;
11
+ transport = null;
12
+ running = false;
13
+ constructor(definition, env, logger) {
14
+ super();
15
+ this.definition = definition;
16
+ this.env = env;
17
+ this.logger = logger;
18
+ }
19
+ async start() {
20
+ this.logger.info(`Starting MCP process for integration "${this.definition.id}"`, {
21
+ command: this.definition.command,
22
+ args: this.definition.args,
23
+ });
24
+ this.transport = new StdioClientTransport({
25
+ command: this.definition.command,
26
+ args: this.definition.args,
27
+ env: { ...process.env, ...this.env },
28
+ });
29
+ this.client = new Client({ name: `journal-gateway/${this.definition.id}`, version: VERSION }, { capabilities: {} });
30
+ this.transport.onclose = () => {
31
+ if (this.running) {
32
+ this.running = false;
33
+ const err = new Error(`MCP process for integration "${this.definition.id}" exited unexpectedly`);
34
+ this.logger.error(err.message);
35
+ this.emit("crash", err);
36
+ }
37
+ };
38
+ await this.client.connect(this.transport);
39
+ this.running = true;
40
+ this.client.setNotificationHandler(ToolListChangedNotificationSchema, async () => {
41
+ this.logger.info(`MCP server "${this.definition.id}" reported tools changed`);
42
+ this.emit("tools_changed");
43
+ });
44
+ this.logger.info(`MCP process for integration "${this.definition.id}" started successfully`);
45
+ }
46
+ async listTools() {
47
+ if (!this.client)
48
+ throw new Error("MCP process not started");
49
+ const result = await this.client.listTools();
50
+ return result.tools.map((tool) => ({
51
+ name: tool.name,
52
+ description: tool.description ?? "",
53
+ inputSchema: tool.inputSchema,
54
+ }));
55
+ }
56
+ async callTool(name, args) {
57
+ if (!this.client)
58
+ throw new Error("MCP process not started");
59
+ const result = await this.client.callTool({ name, arguments: args });
60
+ const content = result.content.map((block) => {
61
+ if (block.type === "image") {
62
+ return {
63
+ type: "image",
64
+ data: block.data ?? "",
65
+ mimeType: block.mimeType ?? "image/png",
66
+ };
67
+ }
68
+ return { type: "text", text: block.text ?? "" };
69
+ });
70
+ return {
71
+ content,
72
+ isError: result.isError === true ? true : undefined,
73
+ };
74
+ }
75
+ async stop() {
76
+ this.running = false;
77
+ if (this.transport) {
78
+ await this.transport.close();
79
+ this.transport = null;
80
+ }
81
+ this.client = null;
82
+ this.logger.info(`MCP process for integration "${this.definition.id}" stopped`);
83
+ }
84
+ isRunning() {
85
+ return this.running;
86
+ }
87
+ get integrationId() {
88
+ return this.definition.id;
89
+ }
90
+ }
91
+ //# sourceMappingURL=mcp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { type Integration, type Skill, type ToolResult, type IntegrationProvider, type GatewayVersions } from "@journal.one/gateway-protocol";
2
+ import { EventEmitter } from "node:events";
3
+ import type { RuntimeConfig } from "./config.js";
4
+ export interface RuntimeEvents {
5
+ versions_changed: [];
6
+ }
7
+ export declare class Runtime extends EventEmitter<RuntimeEvents> implements IntegrationProvider {
8
+ private config;
9
+ private processes;
10
+ private logger;
11
+ private skillClient;
12
+ private mcpVersion;
13
+ private skillsVersion;
14
+ private changeDebounceTimer;
15
+ constructor(config: RuntimeConfig);
16
+ start(): Promise<void>;
17
+ getVersions(): GatewayVersions;
18
+ getTools(): Promise<Integration[]>;
19
+ getSkills(): Skill[];
20
+ callTool(integrationId: string, toolName: string, args: Record<string, unknown>): Promise<ToolResult>;
21
+ stop(): Promise<void>;
22
+ private scheduleChangeCheck;
23
+ private recomputeVersions;
24
+ }
25
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD,MAAM,WAAW,aAAa;IAC5B,gBAAgB,EAAE,EAAE,CAAC;CACtB;AAED,qBAAa,OAAQ,SAAQ,YAAY,CAAC,aAAa,CAAE,YAAW,mBAAmB;IAQzE,OAAO,CAAC,MAAM;IAP1B,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,mBAAmB,CAA8C;gBAErD,MAAM,EAAE,aAAa;IAMnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C5B,WAAW,IAAI,eAAe;IAOxB,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAmBxC,SAAS,IAAI,KAAK,EAAE;IAId,QAAQ,CACZ,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC;IAYhB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,OAAO,CAAC,mBAAmB;YAWb,iBAAiB;CAgBhC"}
@@ -0,0 +1,124 @@
1
+ import { IntegrationNotFoundError, } from "@journal.one/gateway-protocol";
2
+ import { EventEmitter } from "node:events";
3
+ import { Logger } from "./common/logger.js";
4
+ import { McpClient } from "./mcp-client.js";
5
+ import { SkillClient } from "./skill-client.js";
6
+ import { computeVersionHash } from "./version-hash.js";
7
+ export class Runtime extends EventEmitter {
8
+ config;
9
+ processes = new Map();
10
+ logger;
11
+ skillClient;
12
+ mcpVersion = null;
13
+ skillsVersion = null;
14
+ changeDebounceTimer = null;
15
+ constructor(config) {
16
+ super();
17
+ this.config = config;
18
+ this.logger = new Logger(config.logLevel);
19
+ this.skillClient = new SkillClient(config.skillsDir);
20
+ }
21
+ async start() {
22
+ this.logger.info("Starting runtime", {
23
+ mcpServers: this.config.mcpServers.map((s) => s.id),
24
+ ...(this.config.skillsDir ? { skillsDir: this.config.skillsDir } : {}),
25
+ });
26
+ for (const definition of this.config.mcpServers) {
27
+ const env = this.config.mcpEnvVars.get(definition.id) ?? {};
28
+ const mcpClient = new McpClient(definition, env, this.logger);
29
+ mcpClient.on("crash", (error) => {
30
+ this.logger.error(`Integration "${definition.id}" crashed`, {
31
+ error: error.message,
32
+ });
33
+ this.scheduleChangeCheck();
34
+ });
35
+ mcpClient.on("tools_changed", () => {
36
+ this.logger.info(`Integration "${definition.id}" tools changed`);
37
+ this.scheduleChangeCheck();
38
+ });
39
+ await mcpClient.start();
40
+ this.processes.set(definition.id, mcpClient);
41
+ }
42
+ await this.skillClient.load();
43
+ this.skillClient.on("skills_changed", () => {
44
+ this.logger.info("Skills changed on disk");
45
+ this.scheduleChangeCheck();
46
+ });
47
+ this.skillClient.startWatching();
48
+ // Compute initial versions
49
+ await this.recomputeVersions();
50
+ this.logger.info("Runtime started", {
51
+ integrationCount: this.processes.size,
52
+ });
53
+ }
54
+ getVersions() {
55
+ return {
56
+ mcpVersion: this.mcpVersion,
57
+ skillsVersion: this.skillsVersion,
58
+ };
59
+ }
60
+ async getTools() {
61
+ const integrations = [];
62
+ for (const definition of this.config.mcpServers) {
63
+ const mcpClient = this.processes.get(definition.id);
64
+ if (!mcpClient || !mcpClient.isRunning())
65
+ continue;
66
+ const tools = await mcpClient.listTools();
67
+ integrations.push({
68
+ id: definition.id,
69
+ name: definition.name,
70
+ description: definition.description,
71
+ tools,
72
+ });
73
+ }
74
+ return integrations;
75
+ }
76
+ getSkills() {
77
+ return this.skillClient.getSkills();
78
+ }
79
+ async callTool(integrationId, toolName, args) {
80
+ const mcpClient = this.processes.get(integrationId);
81
+ if (!mcpClient) {
82
+ throw new IntegrationNotFoundError(integrationId);
83
+ }
84
+ if (!mcpClient.isRunning()) {
85
+ throw new IntegrationNotFoundError(integrationId, "Integration process is not running");
86
+ }
87
+ return mcpClient.callTool(toolName, args);
88
+ }
89
+ async stop() {
90
+ this.logger.info("Stopping runtime");
91
+ if (this.changeDebounceTimer) {
92
+ clearTimeout(this.changeDebounceTimer);
93
+ this.changeDebounceTimer = null;
94
+ }
95
+ this.skillClient.stopWatching();
96
+ const stops = Array.from(this.processes.values()).map((p) => p.stop());
97
+ await Promise.allSettled(stops);
98
+ this.processes.clear();
99
+ this.logger.info("Runtime stopped");
100
+ }
101
+ scheduleChangeCheck() {
102
+ if (this.changeDebounceTimer)
103
+ clearTimeout(this.changeDebounceTimer);
104
+ this.changeDebounceTimer = setTimeout(async () => {
105
+ this.changeDebounceTimer = null;
106
+ const changed = await this.recomputeVersions();
107
+ if (changed) {
108
+ this.emit("versions_changed");
109
+ }
110
+ }, 500);
111
+ }
112
+ async recomputeVersions() {
113
+ const mcpIntegrations = await this.getTools();
114
+ const skillIntegrations = this.skillClient.getIntegrations();
115
+ const newMcpVersion = computeVersionHash(mcpIntegrations);
116
+ const newSkillsVersion = computeVersionHash(skillIntegrations);
117
+ const changed = newMcpVersion !== this.mcpVersion ||
118
+ newSkillsVersion !== this.skillsVersion;
119
+ this.mcpVersion = newMcpVersion;
120
+ this.skillsVersion = newSkillsVersion;
121
+ return changed;
122
+ }
123
+ }
124
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { EventEmitter } from "node:events";
2
+ import type { Skill, Integration } from "@journal.one/gateway-protocol";
3
+ export interface SkillClientEvents {
4
+ skills_changed: [];
5
+ }
6
+ export declare class SkillClient extends EventEmitter<SkillClientEvents> {
7
+ private skillsDir;
8
+ private skills;
9
+ private watcher;
10
+ private debounceTimer;
11
+ constructor(skillsDir: string | null);
12
+ load(): Promise<void>;
13
+ startWatching(): void;
14
+ stopWatching(): void;
15
+ getSkills(): Skill[];
16
+ getIntegrations(): Integration[];
17
+ }
18
+ //# sourceMappingURL=skill-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-client.d.ts","sourceRoot":"","sources":["../src/skill-client.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAExE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,EAAE,CAAC;CACpB;AAED,qBAAa,WAAY,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IAKlD,OAAO,CAAC,SAAS;IAJ7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,aAAa,CAA8C;gBAE/C,SAAS,EAAE,MAAM,GAAG,IAAI;IAItC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB3B,aAAa,IAAI,IAAI;IAerB,YAAY,IAAI,IAAI;IAWpB,SAAS,IAAI,KAAK,EAAE;IAIpB,eAAe,IAAI,WAAW,EAAE;CAYjC"}
@@ -0,0 +1,75 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { watch } from "node:fs";
3
+ import { join, basename } from "node:path";
4
+ import { EventEmitter } from "node:events";
5
+ export class SkillClient extends EventEmitter {
6
+ skillsDir;
7
+ skills = [];
8
+ watcher = null;
9
+ debounceTimer = null;
10
+ constructor(skillsDir) {
11
+ super();
12
+ this.skillsDir = skillsDir;
13
+ }
14
+ async load() {
15
+ if (!this.skillsDir) {
16
+ this.skills = [];
17
+ return;
18
+ }
19
+ let files;
20
+ try {
21
+ const entries = await readdir(this.skillsDir);
22
+ files = entries.filter((f) => f.endsWith(".md"));
23
+ }
24
+ catch {
25
+ this.skills = [];
26
+ return;
27
+ }
28
+ this.skills = await Promise.all(files.map(async (file) => ({
29
+ id: basename(file, ".md"),
30
+ content: await readFile(join(this.skillsDir, file), "utf-8"),
31
+ })));
32
+ }
33
+ startWatching() {
34
+ if (this.watcher || !this.skillsDir)
35
+ return;
36
+ this.watcher = watch(this.skillsDir, (eventType, filename) => {
37
+ if (!filename || !filename.endsWith(".md"))
38
+ return;
39
+ if (this.debounceTimer)
40
+ clearTimeout(this.debounceTimer);
41
+ this.debounceTimer = setTimeout(async () => {
42
+ this.debounceTimer = null;
43
+ await this.load();
44
+ this.emit("skills_changed");
45
+ }, 500);
46
+ });
47
+ }
48
+ stopWatching() {
49
+ if (this.debounceTimer) {
50
+ clearTimeout(this.debounceTimer);
51
+ this.debounceTimer = null;
52
+ }
53
+ if (this.watcher) {
54
+ this.watcher.close();
55
+ this.watcher = null;
56
+ }
57
+ }
58
+ getSkills() {
59
+ return this.skills;
60
+ }
61
+ getIntegrations() {
62
+ if (this.skills.length === 0)
63
+ return [];
64
+ return [
65
+ {
66
+ id: "skills",
67
+ name: "Skills",
68
+ description: `Loaded from ${this.skillsDir}`,
69
+ tools: [],
70
+ skills: this.skills,
71
+ },
72
+ ];
73
+ }
74
+ }
75
+ //# sourceMappingURL=skill-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-client.js","sourceRoot":"","sources":["../src/skill-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ export declare const GATEWAY_ERROR_CODES: readonly ["INTEGRATION_NOT_FOUND", "TOOL_NOT_FOUND", "EXECUTION_FAILED", "TIMEOUT"];
3
+ export type GatewayErrorCode = (typeof GATEWAY_ERROR_CODES)[number];
4
+ export declare const GatewayErrorCodeSchema: z.ZodEnum<["INTEGRATION_NOT_FOUND", "TOOL_NOT_FOUND", "EXECUTION_FAILED", "TIMEOUT"]>;
5
+ export declare const GatewayErrorSchema: z.ZodObject<{
6
+ code: z.ZodEnum<["INTEGRATION_NOT_FOUND", "TOOL_NOT_FOUND", "EXECUTION_FAILED", "TIMEOUT"]>;
7
+ message: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ code: "INTEGRATION_NOT_FOUND" | "TOOL_NOT_FOUND" | "EXECUTION_FAILED" | "TIMEOUT";
10
+ message: string;
11
+ }, {
12
+ code: "INTEGRATION_NOT_FOUND" | "TOOL_NOT_FOUND" | "EXECUTION_FAILED" | "TIMEOUT";
13
+ message: string;
14
+ }>;
15
+ export type GatewayError = z.infer<typeof GatewayErrorSchema>;
16
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB,qFAKtB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,eAAO,MAAM,sBAAsB,uFAA8B,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;;;;;;;EAG7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ export const GATEWAY_ERROR_CODES = [
3
+ "INTEGRATION_NOT_FOUND",
4
+ "TOOL_NOT_FOUND",
5
+ "EXECUTION_FAILED",
6
+ "TIMEOUT",
7
+ ];
8
+ export const GatewayErrorCodeSchema = z.enum(GATEWAY_ERROR_CODES);
9
+ export const GatewayErrorSchema = z.object({
10
+ code: GatewayErrorCodeSchema,
11
+ message: z.string(),
12
+ });
13
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/types/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,uBAAuB;IACvB,gBAAgB;IAChB,kBAAkB;IAClB,SAAS;CACD,CAAC;AAIX,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AAElE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,sBAAsB;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { GATEWAY_ERROR_CODES, GatewayErrorCodeSchema, GatewayErrorSchema, type GatewayError, type GatewayErrorCode, } from "./errors.js";
2
+ export { SkillSchema, type Skill } from "./skills.js";
3
+ export { ToolDefinitionSchema, IntegrationSchema, TextContentSchema, ImageContentSchema, ContentBlockSchema, ToolResultSchema, type ToolDefinition, type Integration, type TextContent, type ImageContent, type ContentBlock, type ToolResult, } from "./integrations.js";
4
+ export { AuthenticateMessageSchema, RegisterMessageSchema, ToolResultMessageSchema, ToolErrorMessageSchema, PongMessageSchema, GatewayMessageSchema, AuthenticatedMessageSchema, AuthErrorMessageSchema, RegisteredMessageSchema, ToolCallMessageSchema, PingMessageSchema, ServiceMessageSchema, type AuthenticateMessage, type RegisterMessage, type ToolResultMessage, type ToolErrorMessage, type PongMessage, type GatewayMessage, type AuthenticatedMessage, type AuthErrorMessage, type RegisteredMessage, type ToolCallMessage, type PingMessage, type ServiceMessage, } from "./messages.js";
5
+ export type { IntegrationProvider, GatewayConfig } from "./provider.js";
6
+ export { IntegrationNotFoundError } from "./provider.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { GATEWAY_ERROR_CODES, GatewayErrorCodeSchema, GatewayErrorSchema, } from "./errors.js";
2
+ export { SkillSchema } from "./skills.js";
3
+ export { ToolDefinitionSchema, IntegrationSchema, TextContentSchema, ImageContentSchema, ContentBlockSchema, ToolResultSchema, } from "./integrations.js";
4
+ export { AuthenticateMessageSchema, RegisterMessageSchema, ToolResultMessageSchema, ToolErrorMessageSchema, PongMessageSchema, GatewayMessageSchema, AuthenticatedMessageSchema, AuthErrorMessageSchema, RegisteredMessageSchema, ToolCallMessageSchema, PingMessageSchema, ServiceMessageSchema, } from "./messages.js";
5
+ export { IntegrationNotFoundError } from "./provider.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,GAGnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GAOjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,GAarB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,165 @@
1
+ import { z } from "zod";
2
+ export declare const ToolDefinitionSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ description: z.ZodString;
5
+ inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
6
+ }, "strip", z.ZodTypeAny, {
7
+ name: string;
8
+ description: string;
9
+ inputSchema: Record<string, unknown>;
10
+ }, {
11
+ name: string;
12
+ description: string;
13
+ inputSchema: Record<string, unknown>;
14
+ }>;
15
+ export type ToolDefinition = z.infer<typeof ToolDefinitionSchema>;
16
+ export declare const IntegrationSchema: z.ZodObject<{
17
+ id: z.ZodString;
18
+ name: z.ZodString;
19
+ description: z.ZodString;
20
+ tools: z.ZodArray<z.ZodObject<{
21
+ name: z.ZodString;
22
+ description: z.ZodString;
23
+ inputSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
24
+ }, "strip", z.ZodTypeAny, {
25
+ name: string;
26
+ description: string;
27
+ inputSchema: Record<string, unknown>;
28
+ }, {
29
+ name: string;
30
+ description: string;
31
+ inputSchema: Record<string, unknown>;
32
+ }>, "many">;
33
+ skills: z.ZodOptional<z.ZodArray<z.ZodObject<{
34
+ id: z.ZodString;
35
+ content: z.ZodString;
36
+ }, "strip", z.ZodTypeAny, {
37
+ id: string;
38
+ content: string;
39
+ }, {
40
+ id: string;
41
+ content: string;
42
+ }>, "many">>;
43
+ }, "strip", z.ZodTypeAny, {
44
+ id: string;
45
+ name: string;
46
+ description: string;
47
+ tools: {
48
+ name: string;
49
+ description: string;
50
+ inputSchema: Record<string, unknown>;
51
+ }[];
52
+ skills?: {
53
+ id: string;
54
+ content: string;
55
+ }[] | undefined;
56
+ }, {
57
+ id: string;
58
+ name: string;
59
+ description: string;
60
+ tools: {
61
+ name: string;
62
+ description: string;
63
+ inputSchema: Record<string, unknown>;
64
+ }[];
65
+ skills?: {
66
+ id: string;
67
+ content: string;
68
+ }[] | undefined;
69
+ }>;
70
+ export type Integration = z.infer<typeof IntegrationSchema>;
71
+ export declare const TextContentSchema: z.ZodObject<{
72
+ type: z.ZodLiteral<"text">;
73
+ text: z.ZodString;
74
+ }, "strip", z.ZodTypeAny, {
75
+ type: "text";
76
+ text: string;
77
+ }, {
78
+ type: "text";
79
+ text: string;
80
+ }>;
81
+ export type TextContent = z.infer<typeof TextContentSchema>;
82
+ export declare const ImageContentSchema: z.ZodObject<{
83
+ type: z.ZodLiteral<"image">;
84
+ data: z.ZodString;
85
+ mimeType: z.ZodString;
86
+ }, "strip", z.ZodTypeAny, {
87
+ type: "image";
88
+ data: string;
89
+ mimeType: string;
90
+ }, {
91
+ type: "image";
92
+ data: string;
93
+ mimeType: string;
94
+ }>;
95
+ export type ImageContent = z.infer<typeof ImageContentSchema>;
96
+ export declare const ContentBlockSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
97
+ type: z.ZodLiteral<"text">;
98
+ text: z.ZodString;
99
+ }, "strip", z.ZodTypeAny, {
100
+ type: "text";
101
+ text: string;
102
+ }, {
103
+ type: "text";
104
+ text: string;
105
+ }>, z.ZodObject<{
106
+ type: z.ZodLiteral<"image">;
107
+ data: z.ZodString;
108
+ mimeType: z.ZodString;
109
+ }, "strip", z.ZodTypeAny, {
110
+ type: "image";
111
+ data: string;
112
+ mimeType: string;
113
+ }, {
114
+ type: "image";
115
+ data: string;
116
+ mimeType: string;
117
+ }>]>;
118
+ export type ContentBlock = z.infer<typeof ContentBlockSchema>;
119
+ export declare const ToolResultSchema: z.ZodObject<{
120
+ content: z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
121
+ type: z.ZodLiteral<"text">;
122
+ text: z.ZodString;
123
+ }, "strip", z.ZodTypeAny, {
124
+ type: "text";
125
+ text: string;
126
+ }, {
127
+ type: "text";
128
+ text: string;
129
+ }>, z.ZodObject<{
130
+ type: z.ZodLiteral<"image">;
131
+ data: z.ZodString;
132
+ mimeType: z.ZodString;
133
+ }, "strip", z.ZodTypeAny, {
134
+ type: "image";
135
+ data: string;
136
+ mimeType: string;
137
+ }, {
138
+ type: "image";
139
+ data: string;
140
+ mimeType: string;
141
+ }>]>, "many">;
142
+ isError: z.ZodOptional<z.ZodBoolean>;
143
+ }, "strip", z.ZodTypeAny, {
144
+ content: ({
145
+ type: "text";
146
+ text: string;
147
+ } | {
148
+ type: "image";
149
+ data: string;
150
+ mimeType: string;
151
+ })[];
152
+ isError?: boolean | undefined;
153
+ }, {
154
+ content: ({
155
+ type: "text";
156
+ text: string;
157
+ } | {
158
+ type: "image";
159
+ data: string;
160
+ mimeType: string;
161
+ })[];
162
+ isError?: boolean | undefined;
163
+ }>;
164
+ export type ToolResult = z.infer<typeof ToolResultSchema>;
165
+ //# sourceMappingURL=integrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/types/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;EAG5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAI7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;IAG7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import { SkillSchema } from "./skills.js";
3
+ export const ToolDefinitionSchema = z.object({
4
+ name: z.string(),
5
+ description: z.string(),
6
+ inputSchema: z.record(z.unknown()),
7
+ });
8
+ export const IntegrationSchema = z.object({
9
+ id: z.string(),
10
+ name: z.string(),
11
+ description: z.string(),
12
+ tools: z.array(ToolDefinitionSchema),
13
+ skills: z.array(SkillSchema).optional(),
14
+ });
15
+ export const TextContentSchema = z.object({
16
+ type: z.literal("text"),
17
+ text: z.string(),
18
+ });
19
+ export const ImageContentSchema = z.object({
20
+ type: z.literal("image"),
21
+ data: z.string(),
22
+ mimeType: z.string(),
23
+ });
24
+ export const ContentBlockSchema = z.discriminatedUnion("type", [
25
+ TextContentSchema,
26
+ ImageContentSchema,
27
+ ]);
28
+ export const ToolResultSchema = z.object({
29
+ content: z.array(ContentBlockSchema),
30
+ isError: z.boolean().optional(),
31
+ });
32
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/types/integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACnC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACpC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC7D,iBAAiB;IACjB,kBAAkB;CACnB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC"}