@elastic.io/mcp 1.0.0-beta

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 (174) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +173 -0
  3. package/README.npm.md +173 -0
  4. package/dist/api/client.d.ts +12 -0
  5. package/dist/api/client.d.ts.map +1 -0
  6. package/dist/api/client.js +129 -0
  7. package/dist/api/client.js.map +1 -0
  8. package/dist/api/jsonapi.d.ts +21 -0
  9. package/dist/api/jsonapi.d.ts.map +1 -0
  10. package/dist/api/jsonapi.js +32 -0
  11. package/dist/api/jsonapi.js.map +1 -0
  12. package/dist/api/logger.d.ts +8 -0
  13. package/dist/api/logger.d.ts.map +1 -0
  14. package/dist/api/logger.js +43 -0
  15. package/dist/api/logger.js.map +1 -0
  16. package/dist/api/samples.d.ts +15 -0
  17. package/dist/api/samples.d.ts.map +1 -0
  18. package/dist/api/samples.js +465 -0
  19. package/dist/api/samples.js.map +1 -0
  20. package/dist/api/verification.d.ts +6 -0
  21. package/dist/api/verification.d.ts.map +1 -0
  22. package/dist/api/verification.js +71 -0
  23. package/dist/api/verification.js.map +1 -0
  24. package/dist/cli.d.ts +3 -0
  25. package/dist/cli.d.ts.map +1 -0
  26. package/dist/cli.js +9 -0
  27. package/dist/cli.js.map +1 -0
  28. package/dist/config.d.ts +15 -0
  29. package/dist/config.d.ts.map +1 -0
  30. package/dist/config.js +44 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/embeddings/factory.d.ts +7 -0
  33. package/dist/embeddings/factory.d.ts.map +1 -0
  34. package/dist/embeddings/factory.js +25 -0
  35. package/dist/embeddings/factory.js.map +1 -0
  36. package/dist/embeddings/google.d.ts +19 -0
  37. package/dist/embeddings/google.d.ts.map +1 -0
  38. package/dist/embeddings/google.js +132 -0
  39. package/dist/embeddings/google.js.map +1 -0
  40. package/dist/embeddings/types.d.ts +27 -0
  41. package/dist/embeddings/types.d.ts.map +1 -0
  42. package/dist/embeddings/types.js +2 -0
  43. package/dist/embeddings/types.js.map +1 -0
  44. package/dist/index.d.ts +3 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +227 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/paths.d.ts +2 -0
  49. package/dist/paths.d.ts.map +1 -0
  50. package/dist/paths.js +10 -0
  51. package/dist/paths.js.map +1 -0
  52. package/dist/server.d.ts +29 -0
  53. package/dist/server.d.ts.map +1 -0
  54. package/dist/server.js +385 -0
  55. package/dist/server.js.map +1 -0
  56. package/dist/setup.d.ts +3 -0
  57. package/dist/setup.d.ts.map +1 -0
  58. package/dist/setup.js +338 -0
  59. package/dist/setup.js.map +1 -0
  60. package/dist/tools/confirmation.d.ts +37 -0
  61. package/dist/tools/confirmation.d.ts.map +1 -0
  62. package/dist/tools/confirmation.js +120 -0
  63. package/dist/tools/confirmation.js.map +1 -0
  64. package/dist/tools/constants.d.ts +28 -0
  65. package/dist/tools/constants.d.ts.map +1 -0
  66. package/dist/tools/constants.js +92 -0
  67. package/dist/tools/constants.js.map +1 -0
  68. package/dist/tools/definitions.d.ts +3 -0
  69. package/dist/tools/definitions.d.ts.map +1 -0
  70. package/dist/tools/definitions.js +915 -0
  71. package/dist/tools/definitions.js.map +1 -0
  72. package/dist/tools/flow-build.d.ts +18 -0
  73. package/dist/tools/flow-build.d.ts.map +1 -0
  74. package/dist/tools/flow-build.js +295 -0
  75. package/dist/tools/flow-build.js.map +1 -0
  76. package/dist/tools/flow-evidence.d.ts +62 -0
  77. package/dist/tools/flow-evidence.d.ts.map +1 -0
  78. package/dist/tools/flow-evidence.js +128 -0
  79. package/dist/tools/flow-evidence.js.map +1 -0
  80. package/dist/tools/flow-state-machine.d.ts +69 -0
  81. package/dist/tools/flow-state-machine.d.ts.map +1 -0
  82. package/dist/tools/flow-state-machine.js +292 -0
  83. package/dist/tools/flow-state-machine.js.map +1 -0
  84. package/dist/tools/handlers/auth.d.ts +3 -0
  85. package/dist/tools/handlers/auth.d.ts.map +1 -0
  86. package/dist/tools/handlers/auth.js +410 -0
  87. package/dist/tools/handlers/auth.js.map +1 -0
  88. package/dist/tools/handlers/component.d.ts +3 -0
  89. package/dist/tools/handlers/component.d.ts.map +1 -0
  90. package/dist/tools/handlers/component.js +165 -0
  91. package/dist/tools/handlers/component.js.map +1 -0
  92. package/dist/tools/handlers/data-sample.d.ts +3 -0
  93. package/dist/tools/handlers/data-sample.d.ts.map +1 -0
  94. package/dist/tools/handlers/data-sample.js +83 -0
  95. package/dist/tools/handlers/data-sample.js.map +1 -0
  96. package/dist/tools/handlers/dynamic.d.ts +3 -0
  97. package/dist/tools/handlers/dynamic.d.ts.map +1 -0
  98. package/dist/tools/handlers/dynamic.js +139 -0
  99. package/dist/tools/handlers/dynamic.js.map +1 -0
  100. package/dist/tools/handlers/flow.d.ts +9 -0
  101. package/dist/tools/handlers/flow.d.ts.map +1 -0
  102. package/dist/tools/handlers/flow.js +427 -0
  103. package/dist/tools/handlers/flow.js.map +1 -0
  104. package/dist/tools/handlers/log.d.ts +3 -0
  105. package/dist/tools/handlers/log.d.ts.map +1 -0
  106. package/dist/tools/handlers/log.js +92 -0
  107. package/dist/tools/handlers/log.js.map +1 -0
  108. package/dist/tools/handlers/organization.d.ts +3 -0
  109. package/dist/tools/handlers/organization.d.ts.map +1 -0
  110. package/dist/tools/handlers/organization.js +39 -0
  111. package/dist/tools/handlers/organization.js.map +1 -0
  112. package/dist/tools/handlers/raw.d.ts +3 -0
  113. package/dist/tools/handlers/raw.d.ts.map +1 -0
  114. package/dist/tools/handlers/raw.js +80 -0
  115. package/dist/tools/handlers/raw.js.map +1 -0
  116. package/dist/tools/handlers/search.d.ts +3 -0
  117. package/dist/tools/handlers/search.d.ts.map +1 -0
  118. package/dist/tools/handlers/search.js +105 -0
  119. package/dist/tools/handlers/search.js.map +1 -0
  120. package/dist/tools/handlers/session.d.ts +3 -0
  121. package/dist/tools/handlers/session.d.ts.map +1 -0
  122. package/dist/tools/handlers/session.js +22 -0
  123. package/dist/tools/handlers/session.js.map +1 -0
  124. package/dist/tools/handlers.d.ts +12 -0
  125. package/dist/tools/handlers.d.ts.map +1 -0
  126. package/dist/tools/handlers.js +202 -0
  127. package/dist/tools/handlers.js.map +1 -0
  128. package/dist/tools/helpers.d.ts +44 -0
  129. package/dist/tools/helpers.d.ts.map +1 -0
  130. package/dist/tools/helpers.js +195 -0
  131. package/dist/tools/helpers.js.map +1 -0
  132. package/dist/tools/types.d.ts +39 -0
  133. package/dist/tools/types.d.ts.map +1 -0
  134. package/dist/tools/types.js +2 -0
  135. package/dist/tools/types.js.map +1 -0
  136. package/dist/tools/validation.d.ts +35 -0
  137. package/dist/tools/validation.d.ts.map +1 -0
  138. package/dist/tools/validation.js +800 -0
  139. package/dist/tools/validation.js.map +1 -0
  140. package/dist/types/index.d.ts +47 -0
  141. package/dist/types/index.d.ts.map +1 -0
  142. package/dist/types/index.js +2 -0
  143. package/dist/types/index.js.map +1 -0
  144. package/dist/vectorstore/factory.d.ts +7 -0
  145. package/dist/vectorstore/factory.d.ts.map +1 -0
  146. package/dist/vectorstore/factory.js +25 -0
  147. package/dist/vectorstore/factory.js.map +1 -0
  148. package/dist/vectorstore/qdrant.d.ts +11 -0
  149. package/dist/vectorstore/qdrant.d.ts.map +1 -0
  150. package/dist/vectorstore/qdrant.js +107 -0
  151. package/dist/vectorstore/qdrant.js.map +1 -0
  152. package/dist/vectorstore/types.d.ts +28 -0
  153. package/dist/vectorstore/types.d.ts.map +1 -0
  154. package/dist/vectorstore/types.js +2 -0
  155. package/dist/vectorstore/types.js.map +1 -0
  156. package/package.json +66 -0
  157. package/resources/docs/flow-building-guide.md +581 -0
  158. package/resources/docs/rest-api-pagination.md +58 -0
  159. package/resources/docs/standardized-components-guide.md +66 -0
  160. package/resources/docs/system-instructions.md +207 -0
  161. package/resources/flow-examples/batch-flow-1-collect.json +51 -0
  162. package/resources/flow-examples/batch-flow-2-process.json +70 -0
  163. package/resources/flow-examples/code-component-transform.json +65 -0
  164. package/resources/flow-examples/code-component-trigger.json +52 -0
  165. package/resources/flow-examples/code-component-with-credentials-trigger.json +53 -0
  166. package/resources/flow-examples/code-component-with-credentials.json +67 -0
  167. package/resources/flow-examples/filter-step.json +63 -0
  168. package/resources/flow-examples/polling-sync-trigger.json +50 -0
  169. package/resources/flow-examples/router-branching.json +94 -0
  170. package/resources/flow-examples/splitter-re-assemble.json +72 -0
  171. package/resources/flow-examples/splitter-split.json +68 -0
  172. package/resources/flow-examples/timer-query-action-sync.json +68 -0
  173. package/resources/flow-examples/webhook-async-sync.json +49 -0
  174. package/resources/flow-examples/webhook-request-reply.json +63 -0
@@ -0,0 +1,129 @@
1
+ import axios from 'axios';
2
+ import { logger } from './logger.js';
3
+ import { maskSensitiveData } from '../tools/helpers.js';
4
+ const DEFAULT_BASE_URL = 'https://api.elastic.io/v2';
5
+ function formatPayloadForLog(data) {
6
+ if (!data)
7
+ return '';
8
+ try {
9
+ let parsedData = data;
10
+ let wasString = false;
11
+ if (typeof data === 'string') {
12
+ try {
13
+ parsedData = JSON.parse(data);
14
+ wasString = true;
15
+ }
16
+ catch {
17
+ // Raw string
18
+ }
19
+ }
20
+ const masked = maskSensitiveData(parsedData);
21
+ const str = wasString && typeof masked !== 'string' ? JSON.stringify(masked) : (typeof masked === 'object' ? JSON.stringify(masked) : String(masked));
22
+ if (str.length > 2000) {
23
+ return ` - Payload (truncated): ${str.substring(0, 2000)}... [truncated ${str.length - 2000} chars]`;
24
+ }
25
+ return ` - Payload: ${str}`;
26
+ }
27
+ catch {
28
+ return ' - Payload: [Error formatting payload]';
29
+ }
30
+ }
31
+ export class ElasticioApiError extends Error {
32
+ statusCode;
33
+ statusText;
34
+ errors;
35
+ constructor(statusCode, statusText, errors, message) {
36
+ super(message);
37
+ this.name = 'ElasticioApiError';
38
+ this.statusCode = statusCode;
39
+ this.statusText = statusText;
40
+ this.errors = errors;
41
+ Object.setPrototypeOf(this, ElasticioApiError.prototype);
42
+ }
43
+ }
44
+ export class ElasticioNetworkError extends Error {
45
+ constructor(message) {
46
+ super(message);
47
+ this.name = 'ElasticioNetworkError';
48
+ Object.setPrototypeOf(this, ElasticioNetworkError.prototype);
49
+ }
50
+ }
51
+ function ensureV2Suffix(url) {
52
+ return url.endsWith('/v2') ? url : `${url.replace(/\/+$/, '')}/v2`;
53
+ }
54
+ export function createElasticioClient(authHeader, apiBaseUrl) {
55
+ const baseURL = ensureV2Suffix(apiBaseUrl || process.env.ELASTICIO_API_BASE_URL || DEFAULT_BASE_URL);
56
+ const client = axios.create({
57
+ baseURL,
58
+ timeout: 30000,
59
+ maxRedirects: 0,
60
+ headers: {
61
+ 'Authorization': authHeader,
62
+ 'Content-Type': 'application/json',
63
+ 'Accept': 'application/json'
64
+ }
65
+ });
66
+ client.interceptors.request.use((config) => {
67
+ const dataStr = formatPayloadForLog(config.data);
68
+ logger.info(`[HTTP Request] ${config.method?.toUpperCase()} ${baseURL}${config.url || ''}${dataStr}`);
69
+ return config;
70
+ });
71
+ client.interceptors.response.use((response) => {
72
+ const dataStr = formatPayloadForLog(response.data);
73
+ logger.info(`[HTTP Response] ${response.status} ${response.statusText}${dataStr}`);
74
+ return response;
75
+ }, async (error) => {
76
+ const config = error.config;
77
+ if (config) {
78
+ const status = error.response ? error.response.status : null;
79
+ const isRateLimit = status === 429;
80
+ const isTransientError = status && status >= 500 && status <= 599;
81
+ const isNetworkOrTimeout = !error.response || error.code === 'ECONNABORTED' || error.code === 'ETIMEDOUT' || error.message?.includes('timeout') || error.message?.includes('Network Error');
82
+ const configWithRetry = config;
83
+ configWithRetry.__retryCount = configWithRetry.__retryCount || 0;
84
+ const maxRetries = 3;
85
+ // A timeout on a write is ambiguous: replaying POST/PATCH can duplicate effects.
86
+ const safeToRetry = ['get', 'head', 'options'].includes(String(config.method || 'get').toLowerCase());
87
+ if (safeToRetry && (isRateLimit || isTransientError || isNetworkOrTimeout) && configWithRetry.__retryCount < maxRetries) {
88
+ configWithRetry.__retryCount += 1;
89
+ const delay = Math.pow(2, configWithRetry.__retryCount) * 1000;
90
+ logger.warn(`[HTTP Retry] ${isNetworkOrTimeout ? 'Network/Timeout Error' : `Status ${status}`} on ${config.method?.toUpperCase()} ${config.url}. Retrying in ${delay / 1000}s (Attempt ${configWithRetry.__retryCount}/${maxRetries})...`);
91
+ await new Promise((resolve) => setTimeout(resolve, delay));
92
+ return client(config);
93
+ }
94
+ }
95
+ if (error.config && error.config.headers) {
96
+ for (const key of Object.keys(error.config.headers)) {
97
+ if (key.toLowerCase() === 'authorization') {
98
+ error.config.headers[key] = '*** REDACTED ***';
99
+ }
100
+ }
101
+ }
102
+ const status = error.response ? `${error.response.status} ${error.response.statusText}` : 'NETWORK_ERROR';
103
+ const errorDataStr = error.response?.data ? ` - Response: ${JSON.stringify(error.response.data)}` : '';
104
+ logger.error(`[HTTP Failure] Status: ${status} - URL: ${error.config?.url}${errorDataStr}`);
105
+ if (error.response && error.response.data && Array.isArray(error.response.data.errors)) {
106
+ const errors = error.response.data.errors;
107
+ const errorDetails = errors
108
+ .map((err) => {
109
+ const title = err.title ? `[${err.title}]` : '';
110
+ const detail = err.detail || '';
111
+ const pointer = err.source && err.source.pointer ? ` at ${err.source.pointer}` : '';
112
+ return `${title} ${detail}${pointer}`.trim();
113
+ })
114
+ .join('; ');
115
+ const msg = `elastic.io API Error (${error.response.status} ${error.response.statusText}): ${errorDetails}`;
116
+ logger.error(`[Unpacked API Error] ${msg}`);
117
+ throw new ElasticioApiError(error.response.status, error.response.statusText, errors, msg);
118
+ }
119
+ if (error.response) {
120
+ const fallbackMsg = `elastic.io API Request failed (${error.response.status} ${error.response.statusText})`;
121
+ logger.error(`[Unpacked HTTP Error] ${fallbackMsg}`);
122
+ throw new ElasticioApiError(error.response.status, error.response.statusText, [], fallbackMsg);
123
+ }
124
+ logger.error(`[Network Error] ${error.message}`);
125
+ throw new ElasticioNetworkError(error.message);
126
+ });
127
+ return client;
128
+ }
129
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ interface PaginationMeta {
2
+ page: number;
3
+ perPage: number;
4
+ totalPages: number;
5
+ total: number;
6
+ }
7
+ export interface DeserializedResult<T = any> {
8
+ data: T;
9
+ meta?: PaginationMeta;
10
+ }
11
+ /**
12
+ * Deserializes a JSON API response payload (with data, attributes, relationships, etc.)
13
+ * into a clean JavaScript object or array of objects.
14
+ */
15
+ export declare function deserializeJsonApi<T = any>(payload: any): T;
16
+ /**
17
+ * Deserializes a JSON API response and preserves pagination metadata.
18
+ */
19
+ export declare function deserializeWithMeta<T = any>(payload: any): DeserializedResult<T>;
20
+ export {};
21
+ //# sourceMappingURL=jsonapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonapi.d.ts","sourceRoot":"","sources":["../../src/api/jsonapi.ts"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAM3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAehF"}
@@ -0,0 +1,32 @@
1
+ import { deserialise } from 'kitsu-core';
2
+ /**
3
+ * Deserializes a JSON API response payload (with data, attributes, relationships, etc.)
4
+ * into a clean JavaScript object or array of objects.
5
+ */
6
+ export function deserializeJsonApi(payload) {
7
+ if (!payload || (typeof payload !== 'object')) {
8
+ return payload;
9
+ }
10
+ const result = deserialise(payload);
11
+ return result.data;
12
+ }
13
+ /**
14
+ * Deserializes a JSON API response and preserves pagination metadata.
15
+ */
16
+ export function deserializeWithMeta(payload) {
17
+ if (!payload || (typeof payload !== 'object')) {
18
+ return { data: payload };
19
+ }
20
+ const result = deserialise(payload);
21
+ const pageMeta = payload.meta?.page;
22
+ return {
23
+ data: result.data,
24
+ meta: pageMeta ? {
25
+ page: pageMeta.number || 1,
26
+ perPage: pageMeta.size || pageMeta.count || 0,
27
+ totalPages: Math.ceil((pageMeta.total_count || 0) / (pageMeta.size || 1)),
28
+ total: pageMeta.total_count || 0
29
+ } : undefined
30
+ };
31
+ }
32
+ //# sourceMappingURL=jsonapi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonapi.js","sourceRoot":"","sources":["../../src/api/jsonapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAczC;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAU,OAAY;IACtD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,IAAS,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAU,OAAY;IACvD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACpC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAS;QACtB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACf,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC;YAC1B,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC;YAC7C,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YACzE,KAAK,EAAE,QAAQ,CAAC,WAAW,IAAI,CAAC;SACjC,CAAC,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type LogLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';
2
+ export declare const logger: {
3
+ debug: (message: string, ...args: any[]) => void;
4
+ info: (message: string, ...args: any[]) => void;
5
+ warn: (message: string, ...args: any[]) => void;
6
+ error: (message: string, ...args: any[]) => void;
7
+ };
8
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/api/logger.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AA2C3D,eAAO,MAAM,MAAM;qBACA,MAAM,WAAW,GAAG,EAAE;oBACvB,MAAM,WAAW,GAAG,EAAE;oBACtB,MAAM,WAAW,GAAG,EAAE;qBACrB,MAAM,WAAW,GAAG,EAAE;CACxC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import fs from 'node:fs';
2
+ import process from 'node:process';
3
+ // Write to file only when LOG_FILE env var is set (for local development)
4
+ const LOG_FILE = process.env.LOG_FILE;
5
+ const LogLevels = {
6
+ DEBUG: 0,
7
+ INFO: 1,
8
+ WARN: 2,
9
+ ERROR: 3,
10
+ };
11
+ // Default log level is INFO, or can be overridden by LOG_LEVEL env var
12
+ const currentLevelName = process.env.LOG_LEVEL?.toUpperCase() || 'INFO';
13
+ const currentLevel = LogLevels[currentLevelName] !== undefined ? LogLevels[currentLevelName] : 1;
14
+ function writeLog(level, message, ...args) {
15
+ if (LogLevels[level] < currentLevel) {
16
+ return;
17
+ }
18
+ const timestamp = new Date().toISOString();
19
+ // Format message with optional args
20
+ let formattedMessage = message;
21
+ if (args.length > 0) {
22
+ formattedMessage += ' ' + args.map(arg => typeof arg === 'object' ? JSON.stringify(arg) : String(arg)).join(' ');
23
+ }
24
+ const formattedLine = `[${level}] ${formattedMessage}\n`;
25
+ if (LOG_FILE) {
26
+ try {
27
+ fs.appendFileSync(LOG_FILE, `[${timestamp}] ${formattedLine}`);
28
+ }
29
+ catch (err) {
30
+ process.stderr.write(`Failed to write to log file: ${String(err)}\n`);
31
+ }
32
+ }
33
+ // Stdio MCP transport uses stdout for protocol,
34
+ // so diagnostics always go to stderr.
35
+ process.stderr.write(formattedLine);
36
+ }
37
+ export const logger = {
38
+ debug: (message, ...args) => writeLog('DEBUG', message, ...args),
39
+ info: (message, ...args) => writeLog('INFO', message, ...args),
40
+ warn: (message, ...args) => writeLog('WARN', message, ...args),
41
+ error: (message, ...args) => writeLog('ERROR', message, ...args),
42
+ };
43
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/api/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,0EAA0E;AAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAItC,MAAM,SAAS,GAA6B;IAC1C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,uEAAuE;AACvE,MAAM,gBAAgB,GAAc,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,EAAe,IAAI,MAAM,CAAC;AAChG,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEjG,SAAS,QAAQ,CAAC,KAAe,EAAE,OAAe,EAAE,GAAG,IAAW;IAChE,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,oCAAoC;IACpC,IAAI,gBAAgB,GAAG,OAAO,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,gBAAgB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACvC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAC5D,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACd,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,KAAK,KAAK,gBAAgB,IAAI,CAAC;IAEzD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC;YACH,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,sCAAsC;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC/E,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC7E,IAAI,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC7E,KAAK,EAAE,CAAC,OAAe,EAAE,GAAG,IAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAChF,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare function formatFlowToMarkdown(flow: any): string;
2
+ /**
3
+ * Formats a single flow step configuration into Markdown.
4
+ */
5
+ export declare function formatStepToMarkdown(flow: any, stepId: string, config: any): string;
6
+ declare class IngestionQueue {
7
+ private queue;
8
+ private processing;
9
+ private purgedInCurrentSession;
10
+ enqueue(flows: any[], purge: boolean): Promise<void>;
11
+ private processNext;
12
+ }
13
+ export declare const ingestionQueue: IngestionQueue;
14
+ export {};
15
+ //# sourceMappingURL=samples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"samples.d.ts","sourceRoot":"","sources":["../../src/api/samples.ts"],"names":[],"mappings":"AA8EA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CA2ItD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,MAAM,CAyHnF;AAsID,cAAM,cAAc;IAClB,OAAO,CAAC,KAAK,CAAgG;IAC7G,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,sBAAsB,CAAS;IAEjC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAU5C,WAAW;CA6B1B;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}