@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.
- package/LICENSE +191 -0
- package/README.md +171 -0
- package/dist/api/client.d.ts +12 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +124 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/jsonapi.d.ts +28 -0
- package/dist/api/jsonapi.d.ts.map +1 -0
- package/dist/api/jsonapi.js +45 -0
- package/dist/api/jsonapi.js.map +1 -0
- package/dist/api/logger.d.ts +9 -0
- package/dist/api/logger.d.ts.map +1 -0
- package/dist/api/logger.js +46 -0
- package/dist/api/logger.js.map +1 -0
- package/dist/api/samples.d.ts +21 -0
- package/dist/api/samples.d.ts.map +1 -0
- package/dist/api/samples.js +465 -0
- package/dist/api/samples.js.map +1 -0
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +49 -0
- package/dist/config.js.map +1 -0
- package/dist/embeddings/factory.d.ts +7 -0
- package/dist/embeddings/factory.d.ts.map +1 -0
- package/dist/embeddings/factory.js +25 -0
- package/dist/embeddings/factory.js.map +1 -0
- package/dist/embeddings/google.d.ts +19 -0
- package/dist/embeddings/google.d.ts.map +1 -0
- package/dist/embeddings/google.js +132 -0
- package/dist/embeddings/google.js.map +1 -0
- package/dist/embeddings/types.d.ts +27 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/embeddings/types.js +2 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +226 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +3 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +10 -0
- package/dist/paths.js.map +1 -0
- package/dist/server.d.ts +29 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +361 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/confirmation.d.ts +41 -0
- package/dist/tools/confirmation.d.ts.map +1 -0
- package/dist/tools/confirmation.js +120 -0
- package/dist/tools/confirmation.js.map +1 -0
- package/dist/tools/constants.d.ts +31 -0
- package/dist/tools/constants.d.ts.map +1 -0
- package/dist/tools/constants.js +85 -0
- package/dist/tools/constants.js.map +1 -0
- package/dist/tools/definitions.d.ts +3 -0
- package/dist/tools/definitions.d.ts.map +1 -0
- package/dist/tools/definitions.js +883 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/handlers/auth.d.ts +3 -0
- package/dist/tools/handlers/auth.d.ts.map +1 -0
- package/dist/tools/handlers/auth.js +540 -0
- package/dist/tools/handlers/auth.js.map +1 -0
- package/dist/tools/handlers/component.d.ts +3 -0
- package/dist/tools/handlers/component.d.ts.map +1 -0
- package/dist/tools/handlers/component.js +145 -0
- package/dist/tools/handlers/component.js.map +1 -0
- package/dist/tools/handlers/data-sample.d.ts +3 -0
- package/dist/tools/handlers/data-sample.d.ts.map +1 -0
- package/dist/tools/handlers/data-sample.js +51 -0
- package/dist/tools/handlers/data-sample.js.map +1 -0
- package/dist/tools/handlers/dynamic.d.ts +3 -0
- package/dist/tools/handlers/dynamic.d.ts.map +1 -0
- package/dist/tools/handlers/dynamic.js +110 -0
- package/dist/tools/handlers/dynamic.js.map +1 -0
- package/dist/tools/handlers/flow.d.ts +9 -0
- package/dist/tools/handlers/flow.d.ts.map +1 -0
- package/dist/tools/handlers/flow.js +899 -0
- package/dist/tools/handlers/flow.js.map +1 -0
- package/dist/tools/handlers/log.d.ts +3 -0
- package/dist/tools/handlers/log.d.ts.map +1 -0
- package/dist/tools/handlers/log.js +61 -0
- package/dist/tools/handlers/log.js.map +1 -0
- package/dist/tools/handlers/organization.d.ts +3 -0
- package/dist/tools/handlers/organization.d.ts.map +1 -0
- package/dist/tools/handlers/organization.js +39 -0
- package/dist/tools/handlers/organization.js.map +1 -0
- package/dist/tools/handlers/raw.d.ts +3 -0
- package/dist/tools/handlers/raw.d.ts.map +1 -0
- package/dist/tools/handlers/raw.js +77 -0
- package/dist/tools/handlers/raw.js.map +1 -0
- package/dist/tools/handlers/search.d.ts +3 -0
- package/dist/tools/handlers/search.d.ts.map +1 -0
- package/dist/tools/handlers/search.js +82 -0
- package/dist/tools/handlers/search.js.map +1 -0
- package/dist/tools/handlers/session.d.ts +3 -0
- package/dist/tools/handlers/session.d.ts.map +1 -0
- package/dist/tools/handlers/session.js +15 -0
- package/dist/tools/handlers/session.js.map +1 -0
- package/dist/tools/handlers.d.ts +12 -0
- package/dist/tools/handlers.d.ts.map +1 -0
- package/dist/tools/handlers.js +197 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/helpers.d.ts +45 -0
- package/dist/tools/helpers.d.ts.map +1 -0
- package/dist/tools/helpers.js +195 -0
- package/dist/tools/helpers.js.map +1 -0
- package/dist/tools/types.d.ts +32 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/validation.d.ts +24 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js +748 -0
- package/dist/tools/validation.js.map +1 -0
- package/dist/types/index.d.ts +47 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/vectorstore/factory.d.ts +7 -0
- package/dist/vectorstore/factory.d.ts.map +1 -0
- package/dist/vectorstore/factory.js +25 -0
- package/dist/vectorstore/factory.js.map +1 -0
- package/dist/vectorstore/qdrant.d.ts +11 -0
- package/dist/vectorstore/qdrant.d.ts.map +1 -0
- package/dist/vectorstore/qdrant.js +107 -0
- package/dist/vectorstore/qdrant.js.map +1 -0
- package/dist/vectorstore/types.d.ts +28 -0
- package/dist/vectorstore/types.d.ts.map +1 -0
- package/dist/vectorstore/types.js +2 -0
- package/dist/vectorstore/types.js.map +1 -0
- package/package.json +51 -0
- package/resources/docs/component-test-scenarios.md +2468 -0
- package/resources/docs/credential-validation-gaps.md +35 -0
- package/resources/docs/debug-issues.md +71 -0
- package/resources/docs/deployment-and-scaling.md +136 -0
- package/resources/docs/flow-building-guide.md +565 -0
- package/resources/docs/packaging-plan.md +84 -0
- package/resources/docs/standardized-components-guide.md +66 -0
- package/resources/docs/system-instructions.md +177 -0
- package/resources/docs/unique-components.md +60 -0
- package/resources/docs/verified-creds-flow-ids.md +193 -0
- package/resources/flow-examples/batch-flow-1-collect.json +51 -0
- package/resources/flow-examples/batch-flow-2-process.json +70 -0
- package/resources/flow-examples/code-component-transform.json +65 -0
- package/resources/flow-examples/code-component-trigger.json +52 -0
- package/resources/flow-examples/code-component-with-credentials-trigger.json +53 -0
- package/resources/flow-examples/code-component-with-credentials.json +67 -0
- package/resources/flow-examples/filter-step.json +63 -0
- package/resources/flow-examples/polling-sync-trigger.json +50 -0
- package/resources/flow-examples/router-branching.json +94 -0
- package/resources/flow-examples/splitter-re-assemble.json +72 -0
- package/resources/flow-examples/splitter-split.json +68 -0
- package/resources/flow-examples/timer-query-action-sync.json +68 -0
- package/resources/flow-examples/webhook-async-sync.json +49 -0
- 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":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGzD,MAAM,CAAC,MAAM,iBAAiB,GAAgC;IAC5D,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE;QACxD,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAChD,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,WAAW,EAAE,CAAC,CAAC;QAEhE,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,OAAO,GAAwB,EAAE,CAAC;QACtC,IAAI,QAAQ,GAAwB,EAAE,CAAC;QACvC,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,WAAW,GAAQ,SAAS,CAAC;QACjC,IAAI,eAAe,GAAQ,SAAS,CAAC;QACrC,MAAM,eAAe,GAAG,SAAS,CAAC,cAAc,EAAE,EAAE,IAAI,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;QACjG,IAAI,eAAe,EAAE,CAAC;YACpB,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,WAAW,6BAA6B,CAAC,CAAC;YAC/F,MAAM,UAAU,GAAG,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,KAAK,CAAC;gBAClC,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,EAAE,CAAC;gBAC3C,OAAO,GAAG,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACrC,WAAW,GAAG,UAAU,CAAC,WAAW,IAAI,SAAS,CAAC;gBAClD,eAAe,GAAG,UAAU,CAAC,eAAe,IAAI,UAAU,CAAC,WAAW,EAAE,eAAe,IAAI,SAAS,CAAC;gBAErG,IAAI,CAAC,eAAe,IAAI,WAAW,EAAE,MAAM,EAAE,CAAC;oBAC5C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBACtC,IAAI,KAAK,EAAE,SAAS,KAAK,gBAAgB,EAAE,CAAC;4BAC1C,eAAe,GAAG,CAAC,QAAQ,CAAC,CAAC;4BAC7B,MAAM;wBACR,CAAC;6BAAM,IAAI,KAAK,EAAE,SAAS,KAAK,cAAc,EAAE,CAAC;4BAC/C,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;4BAC3D,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;gBAC7E,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;oBACjB,aAAa,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,4DAA4D,WAAW,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9I,CAAC;QAED,uDAAuD;QACvD,MAAM,mBAAmB,GAAG,WAAW,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9F,IAAI,mBAAmB,EAAE,CAAC;YACxB,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,eAAe,GAAwB,EAAE,CAAC;YAChD,MAAM,gBAAgB,GAAwB,EAAE,CAAC;YAEjD,IAAI,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC/B,eAAe,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAChC,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACpE,CAAC;YAED,OAAO,GAAG,eAAe,CAAC;YAC1B,QAAQ,GAAG,gBAAgB,CAAC;QAC9B,CAAC;QAED,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAErJ,MAAM,aAAa,GAAQ;YACzB,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,KAAK;YACZ,WAAW;YACX,aAAa;YACb,eAAe;YACf,WAAW;YACX,eAAe;YACf,OAAO;YACP,QAAQ;SACT,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,aAAa,CAAC,MAAM,GAAG,+MAA+M,CAAC;QACzO,CAAC;QAED,iCAAiC;QACjC,MAAM,SAAS,GAAG,qBAAqB,CAAC,aAAa,CAAC,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAC/F,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,CAAC,mBAAmB;gBAC/B,uBAAuB,aAAa,mBAAmB;oBACvD,QAAQ,SAAS,aAAa;oBAC9B,yGAAyG,CAAC;QAC9G,CAAC;QAED,OAAO,UAAU,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC;IAED,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1C,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QACrC,IAAI,GAAG,GAAG,eAAe,WAAW,aAAa,CAAC;QAElD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE7E,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAClH,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;YACzC,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC;YAEvE,IAAI,WAAW,GAAG,EAAE,CAAC;YACrB,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CACjC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,EAAE,KAAK,eAAe,CACzE,CAAC;gBACF,IAAI,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;oBACxC,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;gBAClD,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAEhH,MAAM,KAAK,GAAQ;gBACjB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,IAAI,EAAE,aAAa;gBACnB,WAAW;aACZ,CAAC;YACF,IAAI,qBAAqB,CAAC,aAAa,CAAC,EAAE,CAAC;gBACzC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACxB,KAAK,CAAC,SAAS,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,IAAI,eAAe,GAAG,OAAO,CAAC;QAC9B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACnC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;gBAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACpD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,GAAQ,eAAe,CAAC;QAClC,IAAI,MAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,GAAG;gBACP,OAAO,EAAE,oTAAoT;gBAC7T,UAAU,EAAE,eAAe;aAC5B,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
|
|
@@ -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 @@
|
|
|
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"}
|