@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,83 @@
1
+ import { deserializeJsonApi } from '../../api/jsonapi.js';
2
+ import { textResult } from '../helpers.js';
3
+ import { inspectFlow, validateSample } from '../flow-build.js';
4
+ import { requireRevision } from '../flow-state-machine.js';
5
+ import { evidence, isPassthroughNode } from '../flow-evidence.js';
6
+ export const dataSampleHandlers = {
7
+ get_data_sample: async (args, { client, discoveryState }) => {
8
+ const { dataSampleId, flowId, stepId } = args;
9
+ const response = await client.get(`/data-samples/${dataSampleId}`);
10
+ const data = deserializeJsonApi(response.data) ?? response.data;
11
+ // Mark sample as confirmed in state machine if flowId and stepId provided
12
+ if (flowId && stepId && data) {
13
+ const current = await inspectFlow(client, discoveryState, flowId);
14
+ const node = (current.draft || current.flow).graph?.nodes?.find((n) => n.id === stepId);
15
+ if (!node)
16
+ throw new Error(`Step ${stepId} does not exist in the flow.`);
17
+ // Passthrough/service nodes (e.g. Router) have selected_data_samples stripped
18
+ // by the platform API — skip the attachment check for them.
19
+ if (!isPassthroughNode(node) && !node.selected_data_samples?.includes(dataSampleId)) {
20
+ throw new Error('Sample is not attached to this flow step.');
21
+ }
22
+ if (!isPassthroughNode(node)) {
23
+ validateSample(discoveryState, flowId, current, stepId, data);
24
+ }
25
+ }
26
+ return textResult(data);
27
+ },
28
+ create_data_sample: async (args, { client, discoveryState }) => {
29
+ const { workspaceId, componentId, componentVersion, method, body, flowId, stepId } = args;
30
+ let current;
31
+ if (flowId || stepId) {
32
+ if (!flowId || !stepId)
33
+ throw new Error('Provide both flowId and stepId.');
34
+ current = await inspectFlow(client, discoveryState, flowId);
35
+ requireRevision(current, args.expectedRevision);
36
+ }
37
+ const payload = {
38
+ data: {
39
+ type: 'data-sample',
40
+ attributes: {
41
+ result: { body },
42
+ method
43
+ },
44
+ relationships: {
45
+ component: {
46
+ data: { id: componentId, type: 'component' }
47
+ },
48
+ component_version: {
49
+ data: { id: componentVersion, type: 'component-version' }
50
+ },
51
+ workspace: {
52
+ data: { id: workspaceId, type: 'workspace' }
53
+ }
54
+ }
55
+ }
56
+ };
57
+ const response = await client.post('/data-samples', payload);
58
+ const data = deserializeJsonApi(response.data) ?? response.data;
59
+ // Mark sample as confirmed in state machine if flowId and stepId provided
60
+ if (flowId && stepId && data?.id) {
61
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
62
+ validateSample(discoveryState, flowId, current, stepId, data);
63
+ // Evidence is usable only after this ID is attached to the matching draft step.
64
+ }
65
+ return textResult(data);
66
+ },
67
+ update_data_sample: async (args, { client, discoveryState }) => {
68
+ const { dataSampleId, body } = args;
69
+ const payload = {
70
+ data: {
71
+ type: 'data-sample',
72
+ attributes: {
73
+ result: { body }
74
+ }
75
+ }
76
+ };
77
+ evidence(discoveryState).samples.delete(dataSampleId);
78
+ const response = await client.patch(`/data-samples/${dataSampleId}`, payload);
79
+ const data = deserializeJsonApi(response.data) ?? response.data;
80
+ return textResult(data);
81
+ }
82
+ };
83
+ //# sourceMappingURL=data-sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sample.js","sourceRoot":"","sources":["../../../src/tools/handlers/data-sample.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ToolHandler } from '../types.js';
2
+ export declare const dynamicHandlers: Record<string, ToolHandler>;
3
+ //# sourceMappingURL=dynamic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/dynamic.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAwC1C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAmHvD,CAAC"}
@@ -0,0 +1,139 @@
1
+ import { deserializeJsonApi } from '../../api/jsonapi.js';
2
+ import { textResult, pruneMetadataResult } from '../helpers.js';
3
+ import { evidence, executionResult, metadataKey, resolvedVersion } from '../flow-evidence.js';
4
+ import { isNotReady } from '../../api/verification.js';
5
+ function buildAuthRelationships(workspaceId, credentialId, secretId) {
6
+ const relationships = {
7
+ workspace: {
8
+ data: {
9
+ id: workspaceId,
10
+ type: 'workspace'
11
+ }
12
+ }
13
+ };
14
+ if (secretId) {
15
+ relationships.secret = {
16
+ data: {
17
+ id: secretId,
18
+ type: 'secret'
19
+ }
20
+ };
21
+ }
22
+ else if (credentialId) {
23
+ relationships.credential = {
24
+ data: {
25
+ id: credentialId,
26
+ // CRITICAL API NOTE: The elastic.io v2 API dynamic select-model and dynamic-metadata endpoints
27
+ // explicitly require the authorization credential payload to use type: 'secret' instead of 'credential'.
28
+ // Passing type: 'credential' will trigger a 400 Bad Request error from the backend.
29
+ type: 'secret'
30
+ }
31
+ };
32
+ }
33
+ return relationships;
34
+ }
35
+ export const dynamicHandlers = {
36
+ init_dynamic_metadata: async (args, { client, discoveryState }) => {
37
+ const { workspaceId, componentId, versionId: requestedVersion = 'latest', actionOrTriggerName, credentialId, secretId, fields = {} } = args;
38
+ const versionId = resolvedVersion(discoveryState, componentId, requestedVersion);
39
+ const key = metadataKey({ workspaceId, componentId, versionId, actionOrTriggerName, credentialId, secretId, fields });
40
+ evidence(discoveryState).metadata.set(key, { status: 'PENDING' });
41
+ const relationships = buildAuthRelationships(workspaceId, credentialId, secretId);
42
+ const requestBody = {
43
+ data: {
44
+ type: 'dynamic-metadata',
45
+ attributes: {
46
+ module: actionOrTriggerName,
47
+ fields
48
+ },
49
+ relationships
50
+ }
51
+ };
52
+ const url = `/components/${componentId}/versions/${versionId}/dynamic-metadata`;
53
+ const response = await client.post(url, requestBody);
54
+ const data = deserializeJsonApi(response.data);
55
+ if (!data?.id) {
56
+ evidence(discoveryState).metadata.set(key, { status: 'FAILED', error: 'No execution ID returned.' });
57
+ throw new Error('Metadata request returned no execution ID.');
58
+ }
59
+ evidence(discoveryState).metadata.set(key, { status: 'PENDING', executionId: data.id });
60
+ evidence(discoveryState).executions.set(data.id, { kind: 'metadata', key });
61
+ return textResult(data);
62
+ },
63
+ init_dynamic_select_model: async (args, { client }) => {
64
+ const { workspaceId, componentId, versionId = 'latest', actionOrTriggerName, methodName, credentialId, secretId, fields = {} } = args;
65
+ if (!credentialId && !secretId) {
66
+ throw new Error("Either credentialId or secretId must be provided to authorize the select model request.");
67
+ }
68
+ const relationships = buildAuthRelationships(workspaceId, credentialId, secretId);
69
+ const requestBody = {
70
+ data: {
71
+ type: 'select-model',
72
+ attributes: {
73
+ module: actionOrTriggerName,
74
+ method: methodName,
75
+ fields
76
+ },
77
+ relationships
78
+ }
79
+ };
80
+ const url = `/components/${componentId}/versions/${versionId}/select-model`;
81
+ const response = await client.post(url, requestBody);
82
+ const data = deserializeJsonApi(response.data);
83
+ return textResult(data);
84
+ },
85
+ get_scheduled_execution_result: async (args, { client, discoveryState }) => {
86
+ const { executionId, poll = true } = args;
87
+ const url = `/exec/result/${executionId}`;
88
+ const maxAttempts = poll ? 5 : 1;
89
+ const delayMs = 3000;
90
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
91
+ try {
92
+ const response = await client.get(url);
93
+ const data = deserializeJsonApi(response.data);
94
+ const parsed = executionResult(response.data);
95
+ if (parsed.status === 'PENDING')
96
+ throw new Error('Result is not ready yet');
97
+ const pending = evidence(discoveryState).executions.get(executionId);
98
+ if (pending?.kind === 'metadata') {
99
+ const current = evidence(discoveryState).metadata.get(pending.key);
100
+ const schema = structuredClone(parsed.value);
101
+ const valid = parsed.status === 'VERIFIED' && schema && typeof schema === 'object'
102
+ && ['in', 'out'].some(k => schema[k] && typeof schema[k] === 'object');
103
+ // An older completion must not replace a newer request for the same configuration.
104
+ if (current?.executionId === executionId) {
105
+ evidence(discoveryState).metadata.set(pending.key, valid
106
+ ? { status: 'VERIFIED', schema, executionId }
107
+ : { status: 'FAILED', executionId, error: parsed.error || 'Metadata result has no input/output schema.' });
108
+ if (valid)
109
+ discoveryState.dynamicMetadataRetrieved.add(pending.key);
110
+ }
111
+ evidence(discoveryState).executions.delete(executionId);
112
+ if (!valid)
113
+ return { ...textResult({ status: 'error', message: parsed.error || 'Invalid metadata schema.' }), isError: true };
114
+ }
115
+ if (parsed.status !== 'VERIFIED')
116
+ return { ...textResult({ status: 'error', message: parsed.error }), isError: true };
117
+ return textResult(pruneMetadataResult(data));
118
+ }
119
+ catch (err) {
120
+ if (!isNotReady(err)) {
121
+ const pending = evidence(discoveryState).executions.get(executionId);
122
+ if (pending && evidence(discoveryState).metadata.get(pending.key)?.executionId === executionId) {
123
+ evidence(discoveryState).metadata.set(pending.key, { status: 'FAILED', executionId, error: err.message });
124
+ }
125
+ throw err;
126
+ }
127
+ }
128
+ if (attempt < maxAttempts) {
129
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
130
+ }
131
+ }
132
+ return textResult({
133
+ id: executionId,
134
+ status: 'pending',
135
+ message: 'The execution result is not ready yet. Please wait 2-3 seconds and check again.'
136
+ });
137
+ }
138
+ };
139
+ //# sourceMappingURL=dynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../../../src/tools/handlers/dynamic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { ToolHandler } from '../types.js';
2
+ /**
3
+ * Full domino-effect impact analysis for flow graph changes.
4
+ * Compares existing flow/draft graph with new body and returns a formatted
5
+ * impact report, or null if there are no changes to report.
6
+ */
7
+ export declare function analyzeFlowImpact(existingFlow: any, body: any, newNodes?: any[]): string | null;
8
+ export declare const flowHandlers: Record<string, ToolHandler>;
9
+ //# sourceMappingURL=flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/flow.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CA4M/F;AAED,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAwMpD,CAAC"}