@elastic.io/mcp 1.0.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 (155) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +171 -0
  3. package/dist/api/client.d.ts +12 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +124 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/jsonapi.d.ts +28 -0
  8. package/dist/api/jsonapi.d.ts.map +1 -0
  9. package/dist/api/jsonapi.js +45 -0
  10. package/dist/api/jsonapi.js.map +1 -0
  11. package/dist/api/logger.d.ts +9 -0
  12. package/dist/api/logger.d.ts.map +1 -0
  13. package/dist/api/logger.js +46 -0
  14. package/dist/api/logger.js.map +1 -0
  15. package/dist/api/samples.d.ts +21 -0
  16. package/dist/api/samples.d.ts.map +1 -0
  17. package/dist/api/samples.js +465 -0
  18. package/dist/api/samples.js.map +1 -0
  19. package/dist/config.d.ts +16 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +49 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/embeddings/factory.d.ts +7 -0
  24. package/dist/embeddings/factory.d.ts.map +1 -0
  25. package/dist/embeddings/factory.js +25 -0
  26. package/dist/embeddings/factory.js.map +1 -0
  27. package/dist/embeddings/google.d.ts +19 -0
  28. package/dist/embeddings/google.d.ts.map +1 -0
  29. package/dist/embeddings/google.js +132 -0
  30. package/dist/embeddings/google.js.map +1 -0
  31. package/dist/embeddings/types.d.ts +27 -0
  32. package/dist/embeddings/types.d.ts.map +1 -0
  33. package/dist/embeddings/types.js +2 -0
  34. package/dist/embeddings/types.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +226 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/paths.d.ts +3 -0
  40. package/dist/paths.d.ts.map +1 -0
  41. package/dist/paths.js +10 -0
  42. package/dist/paths.js.map +1 -0
  43. package/dist/server.d.ts +29 -0
  44. package/dist/server.d.ts.map +1 -0
  45. package/dist/server.js +361 -0
  46. package/dist/server.js.map +1 -0
  47. package/dist/tools/confirmation.d.ts +41 -0
  48. package/dist/tools/confirmation.d.ts.map +1 -0
  49. package/dist/tools/confirmation.js +120 -0
  50. package/dist/tools/confirmation.js.map +1 -0
  51. package/dist/tools/constants.d.ts +31 -0
  52. package/dist/tools/constants.d.ts.map +1 -0
  53. package/dist/tools/constants.js +85 -0
  54. package/dist/tools/constants.js.map +1 -0
  55. package/dist/tools/definitions.d.ts +3 -0
  56. package/dist/tools/definitions.d.ts.map +1 -0
  57. package/dist/tools/definitions.js +883 -0
  58. package/dist/tools/definitions.js.map +1 -0
  59. package/dist/tools/handlers/auth.d.ts +3 -0
  60. package/dist/tools/handlers/auth.d.ts.map +1 -0
  61. package/dist/tools/handlers/auth.js +540 -0
  62. package/dist/tools/handlers/auth.js.map +1 -0
  63. package/dist/tools/handlers/component.d.ts +3 -0
  64. package/dist/tools/handlers/component.d.ts.map +1 -0
  65. package/dist/tools/handlers/component.js +145 -0
  66. package/dist/tools/handlers/component.js.map +1 -0
  67. package/dist/tools/handlers/data-sample.d.ts +3 -0
  68. package/dist/tools/handlers/data-sample.d.ts.map +1 -0
  69. package/dist/tools/handlers/data-sample.js +51 -0
  70. package/dist/tools/handlers/data-sample.js.map +1 -0
  71. package/dist/tools/handlers/dynamic.d.ts +3 -0
  72. package/dist/tools/handlers/dynamic.d.ts.map +1 -0
  73. package/dist/tools/handlers/dynamic.js +110 -0
  74. package/dist/tools/handlers/dynamic.js.map +1 -0
  75. package/dist/tools/handlers/flow.d.ts +9 -0
  76. package/dist/tools/handlers/flow.d.ts.map +1 -0
  77. package/dist/tools/handlers/flow.js +899 -0
  78. package/dist/tools/handlers/flow.js.map +1 -0
  79. package/dist/tools/handlers/log.d.ts +3 -0
  80. package/dist/tools/handlers/log.d.ts.map +1 -0
  81. package/dist/tools/handlers/log.js +61 -0
  82. package/dist/tools/handlers/log.js.map +1 -0
  83. package/dist/tools/handlers/organization.d.ts +3 -0
  84. package/dist/tools/handlers/organization.d.ts.map +1 -0
  85. package/dist/tools/handlers/organization.js +39 -0
  86. package/dist/tools/handlers/organization.js.map +1 -0
  87. package/dist/tools/handlers/raw.d.ts +3 -0
  88. package/dist/tools/handlers/raw.d.ts.map +1 -0
  89. package/dist/tools/handlers/raw.js +77 -0
  90. package/dist/tools/handlers/raw.js.map +1 -0
  91. package/dist/tools/handlers/search.d.ts +3 -0
  92. package/dist/tools/handlers/search.d.ts.map +1 -0
  93. package/dist/tools/handlers/search.js +82 -0
  94. package/dist/tools/handlers/search.js.map +1 -0
  95. package/dist/tools/handlers/session.d.ts +3 -0
  96. package/dist/tools/handlers/session.d.ts.map +1 -0
  97. package/dist/tools/handlers/session.js +15 -0
  98. package/dist/tools/handlers/session.js.map +1 -0
  99. package/dist/tools/handlers.d.ts +12 -0
  100. package/dist/tools/handlers.d.ts.map +1 -0
  101. package/dist/tools/handlers.js +197 -0
  102. package/dist/tools/handlers.js.map +1 -0
  103. package/dist/tools/helpers.d.ts +45 -0
  104. package/dist/tools/helpers.d.ts.map +1 -0
  105. package/dist/tools/helpers.js +195 -0
  106. package/dist/tools/helpers.js.map +1 -0
  107. package/dist/tools/types.d.ts +32 -0
  108. package/dist/tools/types.d.ts.map +1 -0
  109. package/dist/tools/types.js +2 -0
  110. package/dist/tools/types.js.map +1 -0
  111. package/dist/tools/validation.d.ts +24 -0
  112. package/dist/tools/validation.d.ts.map +1 -0
  113. package/dist/tools/validation.js +748 -0
  114. package/dist/tools/validation.js.map +1 -0
  115. package/dist/types/index.d.ts +47 -0
  116. package/dist/types/index.d.ts.map +1 -0
  117. package/dist/types/index.js +2 -0
  118. package/dist/types/index.js.map +1 -0
  119. package/dist/vectorstore/factory.d.ts +7 -0
  120. package/dist/vectorstore/factory.d.ts.map +1 -0
  121. package/dist/vectorstore/factory.js +25 -0
  122. package/dist/vectorstore/factory.js.map +1 -0
  123. package/dist/vectorstore/qdrant.d.ts +11 -0
  124. package/dist/vectorstore/qdrant.d.ts.map +1 -0
  125. package/dist/vectorstore/qdrant.js +107 -0
  126. package/dist/vectorstore/qdrant.js.map +1 -0
  127. package/dist/vectorstore/types.d.ts +28 -0
  128. package/dist/vectorstore/types.d.ts.map +1 -0
  129. package/dist/vectorstore/types.js +2 -0
  130. package/dist/vectorstore/types.js.map +1 -0
  131. package/package.json +51 -0
  132. package/resources/docs/component-test-scenarios.md +2468 -0
  133. package/resources/docs/credential-validation-gaps.md +35 -0
  134. package/resources/docs/debug-issues.md +71 -0
  135. package/resources/docs/deployment-and-scaling.md +136 -0
  136. package/resources/docs/flow-building-guide.md +565 -0
  137. package/resources/docs/packaging-plan.md +84 -0
  138. package/resources/docs/standardized-components-guide.md +66 -0
  139. package/resources/docs/system-instructions.md +177 -0
  140. package/resources/docs/unique-components.md +60 -0
  141. package/resources/docs/verified-creds-flow-ids.md +193 -0
  142. package/resources/flow-examples/batch-flow-1-collect.json +51 -0
  143. package/resources/flow-examples/batch-flow-2-process.json +70 -0
  144. package/resources/flow-examples/code-component-transform.json +65 -0
  145. package/resources/flow-examples/code-component-trigger.json +52 -0
  146. package/resources/flow-examples/code-component-with-credentials-trigger.json +53 -0
  147. package/resources/flow-examples/code-component-with-credentials.json +67 -0
  148. package/resources/flow-examples/filter-step.json +63 -0
  149. package/resources/flow-examples/polling-sync-trigger.json +50 -0
  150. package/resources/flow-examples/router-branching.json +94 -0
  151. package/resources/flow-examples/splitter-re-assemble.json +72 -0
  152. package/resources/flow-examples/splitter-split.json +68 -0
  153. package/resources/flow-examples/timer-query-action-sync.json +68 -0
  154. package/resources/flow-examples/webhook-async-sync.json +49 -0
  155. package/resources/flow-examples/webhook-request-reply.json +63 -0
@@ -0,0 +1,145 @@
1
+ import { deserializeJsonApi } from '../../api/jsonapi.js';
2
+ import { logger } from '../../api/logger.js';
3
+ import { textResult, listResult } from '../helpers.js';
4
+ import { DEPRECATED_COMPONENTS } from '../validation.js';
5
+ export const componentHandlers = {
6
+ get_component: async (args, { client, discoveryState }) => {
7
+ const { componentId, actionOrTriggerId } = args;
8
+ discoveryState.components.add(componentId);
9
+ const response = await client.get(`/components/${componentId}`);
10
+ const component = deserializeJsonApi(response.data);
11
+ let title = component.name || component.title || '';
12
+ let description = '';
13
+ let actions = {};
14
+ let triggers = {};
15
+ let commandPrefix = '';
16
+ let credentials = undefined;
17
+ let authClientTypes = undefined;
18
+ const latestVersionId = component.latest_version?.id || component.latest_version?.data?.id || '';
19
+ if (latestVersionId) {
20
+ discoveryState.componentVersions.set(componentId, latestVersionId);
21
+ }
22
+ try {
23
+ const descResponse = await client.get(`/components/${componentId}/versions/latest/descriptor`);
24
+ const descriptor = deserializeJsonApi(descResponse.data);
25
+ if (descriptor) {
26
+ title = descriptor.title || title;
27
+ description = descriptor.description || '';
28
+ actions = descriptor.actions || {};
29
+ triggers = descriptor.triggers || {};
30
+ credentials = descriptor.credentials || undefined;
31
+ authClientTypes = descriptor.authClientTypes || descriptor.credentials?.authClientTypes || undefined;
32
+ if (!authClientTypes && credentials?.fields) {
33
+ for (const key of Object.keys(credentials.fields)) {
34
+ const field = credentials.fields[key];
35
+ if (field?.viewClass === 'OAuthFieldView') {
36
+ authClientTypes = ['oauth2'];
37
+ break;
38
+ }
39
+ else if (field?.viewClass === 'HTTPAuthView') {
40
+ authClientTypes = ['noauth', 'basic', 'api_key', 'oauth2'];
41
+ break;
42
+ }
43
+ }
44
+ }
45
+ const team = descriptor.team_name || component.team_name || '';
46
+ const repo = descriptor.repo_name || descriptor.name || component.name || '';
47
+ if (team && repo) {
48
+ commandPrefix = `${team}/${repo}`;
49
+ }
50
+ }
51
+ }
52
+ catch (err) {
53
+ logger.warn(`[get_component] Failed to fetch descriptor for component ${componentId}: ${err instanceof Error ? err.message : String(err)}`);
54
+ }
55
+ // Track whether this component requires authentication
56
+ const hasCredentialFields = credentials?.fields && Object.keys(credentials.fields).length > 0;
57
+ if (hasCredentialFields) {
58
+ discoveryState.componentsRequiringAuth.add(componentId);
59
+ }
60
+ if (actionOrTriggerId) {
61
+ const filteredActions = {};
62
+ const filteredTriggers = {};
63
+ if (actions[actionOrTriggerId]) {
64
+ filteredActions[actionOrTriggerId] = actions[actionOrTriggerId];
65
+ }
66
+ if (triggers[actionOrTriggerId]) {
67
+ filteredTriggers[actionOrTriggerId] = triggers[actionOrTriggerId];
68
+ }
69
+ actions = filteredActions;
70
+ triggers = filteredTriggers;
71
+ }
72
+ const componentName = component.team_name && component.name ? `${component.team_name}/${component.name}` : (component.name || component.title || '');
73
+ const resultPayload = {
74
+ id: component.id,
75
+ name: componentName,
76
+ title: title,
77
+ description,
78
+ commandPrefix,
79
+ latestVersionId,
80
+ credentials,
81
+ authClientTypes,
82
+ actions,
83
+ triggers
84
+ };
85
+ if (!actionOrTriggerId) {
86
+ resultPayload.notice = "OPTIMIZATION TIP: You requested the full component descriptor which has a large token footprint. In the future, pass the optional 'actionOrTriggerId' parameter to filter only the actions/triggers you need.";
87
+ }
88
+ // Check for deprecated component
89
+ const successor = DEPRECATED_COMPONENTS[componentName] || DEPRECATED_COMPONENTS[commandPrefix];
90
+ if (successor) {
91
+ resultPayload.deprecation_warning =
92
+ `WARNING: Component '${componentName}' is DEPRECATED. ` +
93
+ `Use '${successor}' instead. ` +
94
+ `Do NOT use this component for new flows — find and use the recommended replacement via list_components.`;
95
+ }
96
+ return textResult(resultPayload);
97
+ },
98
+ list_components: async (args, { client }) => {
99
+ const { workspaceId, search } = args;
100
+ let url = `/workspaces/${workspaceId}/components`;
101
+ const response = await client.get(url);
102
+ const rawData = deserializeJsonApi(response.data);
103
+ let compList = Array.isArray(rawData) ? rawData : (rawData ? [rawData] : []);
104
+ const rawIncluded = response.data.included && Array.isArray(response.data.included) ? response.data.included : [];
105
+ const summary = compList.map((comp) => {
106
+ const latestVersionId = comp.latest_version?.id || comp.latest_version;
107
+ let description = '';
108
+ if (latestVersionId) {
109
+ const descriptor = rawIncluded.find((item) => item.type === 'descriptor' && item.id === latestVersionId);
110
+ if (descriptor?.attributes?.description) {
111
+ description = descriptor.attributes.description;
112
+ }
113
+ }
114
+ const componentName = comp.team_name && comp.name ? `${comp.team_name}/${comp.name}` : (comp.name || 'unknown');
115
+ const entry = {
116
+ id: comp.id,
117
+ name: componentName,
118
+ description
119
+ };
120
+ if (DEPRECATED_COMPONENTS[componentName]) {
121
+ entry.deprecated = true;
122
+ entry.successor = DEPRECATED_COMPONENTS[componentName];
123
+ }
124
+ return entry;
125
+ });
126
+ let filteredSummary = summary;
127
+ if (search) {
128
+ const query = search.toLowerCase();
129
+ filteredSummary = summary.filter((comp) => {
130
+ const name = (comp.name || '').toLowerCase();
131
+ const desc = (comp.description || '').toLowerCase();
132
+ return name.includes(query) || desc.includes(query);
133
+ });
134
+ }
135
+ let result = filteredSummary;
136
+ if (search && filteredSummary.length > 1) {
137
+ result = {
138
+ warning: "CRITICAL: Multiple matching components found. You are strictly PROHIBITED from choosing one, guessing, or calling any other tools (like list_credentials, list_secrets, get_component, or search_flow_samples) to proceed. You must stop immediately and ask the user to clarify which component they want to use.",
139
+ components: filteredSummary
140
+ };
141
+ }
142
+ return listResult(result);
143
+ }
144
+ };
145
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../src/tools/handlers/component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ToolHandler } from '../types.js';
2
+ export declare const dataSampleHandlers: Record<string, ToolHandler>;
3
+ //# sourceMappingURL=data-sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-sample.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/data-sample.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAiD1D,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { deserializeJsonApi } from '../../api/jsonapi.js';
2
+ import { textResult } from '../helpers.js';
3
+ export const dataSampleHandlers = {
4
+ get_data_sample: async (args, { client }) => {
5
+ const { dataSampleId } = args;
6
+ const response = await client.get(`/data-samples/${dataSampleId}`);
7
+ const data = deserializeJsonApi(response.data) ?? response.data;
8
+ return textResult(data);
9
+ },
10
+ create_data_sample: async (args, { client }) => {
11
+ const { workspaceId, componentId, componentVersion, method, body } = args;
12
+ const payload = {
13
+ data: {
14
+ type: 'data-sample',
15
+ attributes: {
16
+ result: { body },
17
+ method
18
+ },
19
+ relationships: {
20
+ component: {
21
+ data: { id: componentId, type: 'component' }
22
+ },
23
+ component_version: {
24
+ data: { id: componentVersion, type: 'component-version' }
25
+ },
26
+ workspace: {
27
+ data: { id: workspaceId, type: 'workspace' }
28
+ }
29
+ }
30
+ }
31
+ };
32
+ const response = await client.post('/data-samples', payload);
33
+ const data = deserializeJsonApi(response.data) ?? response.data;
34
+ return textResult(data);
35
+ },
36
+ update_data_sample: async (args, { client }) => {
37
+ const { dataSampleId, body } = args;
38
+ const payload = {
39
+ data: {
40
+ type: 'data-sample',
41
+ attributes: {
42
+ result: { body }
43
+ }
44
+ }
45
+ };
46
+ const response = await client.patch(`/data-samples/${dataSampleId}`, payload);
47
+ const data = deserializeJsonApi(response.data) ?? response.data;
48
+ return textResult(data);
49
+ }
50
+ };
51
+ //# 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":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,CAAC,MAAM,kBAAkB,GAAgC;IAC7D,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,YAAY,EAAE,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;QAChE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC1E,MAAM,OAAO,GAAG;YACd,IAAI,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE;oBAChB,MAAM;iBACP;gBACD,aAAa,EAAE;oBACb,SAAS,EAAE;wBACT,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;qBAC7C;oBACD,iBAAiB,EAAE;wBACjB,IAAI,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,mBAAmB,EAAE;qBAC1D;oBACD,SAAS,EAAE;wBACT,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE;qBAC7C;iBACF;aACF;SACF,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;QAChE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7C,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,OAAO,GAAG;YACd,IAAI,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE;iBACjB;aACF;SACF,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,iBAAiB,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;QAChE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF,CAAC"}
@@ -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;AAsC1C,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA8FvD,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { deserializeJsonApi } from '../../api/jsonapi.js';
2
+ import { textResult, pruneMetadataResult } from '../helpers.js';
3
+ function buildAuthRelationships(workspaceId, credentialId, secretId) {
4
+ const relationships = {
5
+ workspace: {
6
+ data: {
7
+ id: workspaceId,
8
+ type: 'workspace'
9
+ }
10
+ }
11
+ };
12
+ if (secretId) {
13
+ relationships.secret = {
14
+ data: {
15
+ id: secretId,
16
+ type: 'secret'
17
+ }
18
+ };
19
+ }
20
+ else if (credentialId) {
21
+ relationships.credential = {
22
+ data: {
23
+ id: credentialId,
24
+ // CRITICAL API NOTE: The elastic.io v2 API dynamic select-model and dynamic-metadata endpoints
25
+ // explicitly require the authorization credential payload to use type: 'secret' instead of 'credential'.
26
+ // Passing type: 'credential' will trigger a 400 Bad Request error from the backend.
27
+ type: 'secret'
28
+ }
29
+ };
30
+ }
31
+ return relationships;
32
+ }
33
+ export const dynamicHandlers = {
34
+ init_dynamic_metadata: async (args, { client }) => {
35
+ const { workspaceId, componentId, versionId = 'latest', actionOrTriggerName, credentialId, secretId, fields = {} } = args;
36
+ if (!credentialId && !secretId) {
37
+ throw new Error("Either credentialId or secretId must be provided to authorize the dynamic metadata request.");
38
+ }
39
+ const relationships = buildAuthRelationships(workspaceId, credentialId, secretId);
40
+ const requestBody = {
41
+ data: {
42
+ type: 'dynamic-metadata',
43
+ attributes: {
44
+ module: actionOrTriggerName,
45
+ fields
46
+ },
47
+ relationships
48
+ }
49
+ };
50
+ const url = `/components/${componentId}/versions/${versionId}/dynamic-metadata`;
51
+ const response = await client.post(url, requestBody);
52
+ const data = deserializeJsonApi(response.data);
53
+ return textResult(data);
54
+ },
55
+ init_dynamic_select_model: async (args, { client }) => {
56
+ const { workspaceId, componentId, versionId = 'latest', actionOrTriggerName, methodName, credentialId, secretId, fields = {} } = args;
57
+ if (!credentialId && !secretId) {
58
+ throw new Error("Either credentialId or secretId must be provided to authorize the select model request.");
59
+ }
60
+ const relationships = buildAuthRelationships(workspaceId, credentialId, secretId);
61
+ const requestBody = {
62
+ data: {
63
+ type: 'select-model',
64
+ attributes: {
65
+ module: actionOrTriggerName,
66
+ method: methodName,
67
+ fields
68
+ },
69
+ relationships
70
+ }
71
+ };
72
+ const url = `/components/${componentId}/versions/${versionId}/select-model`;
73
+ const response = await client.post(url, requestBody);
74
+ const data = deserializeJsonApi(response.data);
75
+ return textResult(data);
76
+ },
77
+ get_scheduled_execution_result: async (args, { client }) => {
78
+ const { executionId, poll = true } = args;
79
+ const url = `/exec/result/${executionId}`;
80
+ const maxAttempts = poll ? 5 : 1;
81
+ const delayMs = 3000;
82
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
83
+ try {
84
+ const response = await client.get(url);
85
+ let data = deserializeJsonApi(response.data);
86
+ const isPending = data && typeof data.status === 'string' && data.status.toLowerCase().includes('pending');
87
+ if (!isPending) {
88
+ data = pruneMetadataResult(data);
89
+ return textResult(data);
90
+ }
91
+ }
92
+ catch (err) {
93
+ const isNotReady = err.message && (err.message.includes('409') ||
94
+ err.message.includes('Result is not ready yet'));
95
+ if (!isNotReady) {
96
+ throw err;
97
+ }
98
+ }
99
+ if (attempt < maxAttempts) {
100
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
101
+ }
102
+ }
103
+ return textResult({
104
+ id: executionId,
105
+ status: 'pending',
106
+ message: 'The execution result is not ready yet. Please wait 2-3 seconds and check again.'
107
+ });
108
+ }
109
+ };
110
+ //# 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":"AAKA,OAAO,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAG1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,GAAG,IAAI,CA4M/F;AAiVD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA6apD,CAAC"}