@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.
- package/LICENSE +191 -0
- package/README.md +173 -0
- package/README.npm.md +173 -0
- package/dist/api/client.d.ts +12 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +129 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/jsonapi.d.ts +21 -0
- package/dist/api/jsonapi.d.ts.map +1 -0
- package/dist/api/jsonapi.js +32 -0
- package/dist/api/jsonapi.js.map +1 -0
- package/dist/api/logger.d.ts +8 -0
- package/dist/api/logger.d.ts.map +1 -0
- package/dist/api/logger.js +43 -0
- package/dist/api/logger.js.map +1 -0
- package/dist/api/samples.d.ts +15 -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/api/verification.d.ts +6 -0
- package/dist/api/verification.d.ts.map +1 -0
- package/dist/api/verification.js +71 -0
- package/dist/api/verification.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +9 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +15 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +44 -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 +227 -0
- package/dist/index.js.map +1 -0
- package/dist/paths.d.ts +2 -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 +385 -0
- package/dist/server.js.map +1 -0
- package/dist/setup.d.ts +3 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +338 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/confirmation.d.ts +37 -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 +28 -0
- package/dist/tools/constants.d.ts.map +1 -0
- package/dist/tools/constants.js +92 -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 +915 -0
- package/dist/tools/definitions.js.map +1 -0
- package/dist/tools/flow-build.d.ts +18 -0
- package/dist/tools/flow-build.d.ts.map +1 -0
- package/dist/tools/flow-build.js +295 -0
- package/dist/tools/flow-build.js.map +1 -0
- package/dist/tools/flow-evidence.d.ts +62 -0
- package/dist/tools/flow-evidence.d.ts.map +1 -0
- package/dist/tools/flow-evidence.js +128 -0
- package/dist/tools/flow-evidence.js.map +1 -0
- package/dist/tools/flow-state-machine.d.ts +69 -0
- package/dist/tools/flow-state-machine.d.ts.map +1 -0
- package/dist/tools/flow-state-machine.js +292 -0
- package/dist/tools/flow-state-machine.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 +410 -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 +165 -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 +83 -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 +139 -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 +427 -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 +92 -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 +80 -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 +105 -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 +22 -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 +202 -0
- package/dist/tools/handlers.js.map +1 -0
- package/dist/tools/helpers.d.ts +44 -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 +39 -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 +35 -0
- package/dist/tools/validation.d.ts.map +1 -0
- package/dist/tools/validation.js +800 -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 +66 -0
- package/resources/docs/flow-building-guide.md +581 -0
- package/resources/docs/rest-api-pagination.md +58 -0
- package/resources/docs/standardized-components-guide.md +66 -0
- package/resources/docs/system-instructions.md +207 -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,195 @@
|
|
|
1
|
+
import { randomBytes } from 'crypto';
|
|
2
|
+
import { MAX_RESPONSE_LENGTH, ENUM_PRUNE_THRESHOLD, ENUM_PRUNE_KEEP } from './constants.js';
|
|
3
|
+
const INVISIBLE_CHARS_RE = /[\u200B-\u200F\u2028-\u202F\u2060-\u206F\u0489\u1AB0-\u1AFF\u1DC0-\u1DFF\u20D0-\u20FF\uFE00-\uFE0F\uFE20-\uFE2F]|[\u0300-\u036F]|\uFEFF|\uDB40[\uDC01-\uDC7F]|\uD834[\uDD67-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDD90\uDD91\uDDA0-\uDDA6]/g;
|
|
4
|
+
const SAFE_ID_RE = /^[a-zA-Z0-9_-]{1,128}$/;
|
|
5
|
+
const SENSITIVE_KEYS = ['password', 'apikey', 'api_key', 'accesskey', 'privatekey', 'token', 'secret', 'auth', 'credentials', 'passphrase', 'authorization'];
|
|
6
|
+
/**
|
|
7
|
+
* Extract the plain ID string from a credential/secret reference,
|
|
8
|
+
* which may be a plain string or an object like { secretId: "..." } / { credentialId: "..." }.
|
|
9
|
+
*/
|
|
10
|
+
export function resolveCredentialId(value) {
|
|
11
|
+
if (!value)
|
|
12
|
+
return null;
|
|
13
|
+
if (typeof value === 'string')
|
|
14
|
+
return value;
|
|
15
|
+
if (typeof value === 'object') {
|
|
16
|
+
return value.secretId || value.credentialId || null;
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
export function maskSensitiveData(obj) {
|
|
21
|
+
if (obj === null || typeof obj !== 'object') {
|
|
22
|
+
return obj;
|
|
23
|
+
}
|
|
24
|
+
if (Array.isArray(obj)) {
|
|
25
|
+
return obj.map(item => maskSensitiveData(item));
|
|
26
|
+
}
|
|
27
|
+
const masked = {};
|
|
28
|
+
for (const k of Object.keys(obj)) {
|
|
29
|
+
const isSensitive = SENSITIVE_KEYS.some(sKey => k.toLowerCase().includes(sKey));
|
|
30
|
+
if (isSensitive) {
|
|
31
|
+
masked[k] = '*** REDACTED ***';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
masked[k] = maskSensitiveData(obj[k]);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return masked;
|
|
38
|
+
}
|
|
39
|
+
function assertSafeId(value, name) {
|
|
40
|
+
if (!SAFE_ID_RE.test(value)) {
|
|
41
|
+
throw new Error(`Invalid ${name}: must contain only alphanumeric characters, hyphens, or underscores.`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function validateIdParams(args) {
|
|
45
|
+
if (!args || typeof args !== 'object')
|
|
46
|
+
return;
|
|
47
|
+
for (const key of Object.keys(args)) {
|
|
48
|
+
if (key.endsWith('Id') && typeof args[key] === 'string') {
|
|
49
|
+
assertSafeId(args[key], key);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function sanitizeInput(args) {
|
|
54
|
+
if (typeof args === 'string') {
|
|
55
|
+
return args.replace(INVISIBLE_CHARS_RE, '');
|
|
56
|
+
}
|
|
57
|
+
if (Array.isArray(args)) {
|
|
58
|
+
return args.map(sanitizeInput);
|
|
59
|
+
}
|
|
60
|
+
if (args !== null && typeof args === 'object') {
|
|
61
|
+
const cleaned = {};
|
|
62
|
+
for (const key of Object.keys(args)) {
|
|
63
|
+
cleaned[key] = sanitizeInput(args[key]);
|
|
64
|
+
}
|
|
65
|
+
return cleaned;
|
|
66
|
+
}
|
|
67
|
+
return args;
|
|
68
|
+
}
|
|
69
|
+
export function formatResult(data) {
|
|
70
|
+
if (data === undefined || data === null) {
|
|
71
|
+
return '';
|
|
72
|
+
}
|
|
73
|
+
let text;
|
|
74
|
+
if (typeof data === 'string') {
|
|
75
|
+
text = data;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
try {
|
|
79
|
+
text = JSON.stringify(data);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// Handle circular references from kitsu-core deserialization
|
|
83
|
+
const seen = new WeakSet();
|
|
84
|
+
text = JSON.stringify(data, (_key, value) => {
|
|
85
|
+
if (typeof value === 'object' && value !== null) {
|
|
86
|
+
if (seen.has(value))
|
|
87
|
+
return '[Circular]';
|
|
88
|
+
seen.add(value);
|
|
89
|
+
}
|
|
90
|
+
return value;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
text = text.replace(INVISIBLE_CHARS_RE, '');
|
|
95
|
+
if (text.length > MAX_RESPONSE_LENGTH) {
|
|
96
|
+
text = text.slice(0, MAX_RESPONSE_LENGTH) + `\n... [TRUNCATED: response exceeded ${MAX_RESPONSE_LENGTH} characters. Use filters or pagination to narrow results.]`;
|
|
97
|
+
}
|
|
98
|
+
const nonce = randomBytes(8).toString('hex');
|
|
99
|
+
const beginMarker = `[BEGIN EXTERNAL DATA ${nonce}]`;
|
|
100
|
+
const endMarker = `[END EXTERNAL DATA ${nonce}]`;
|
|
101
|
+
text = text
|
|
102
|
+
.replace(/\[BEGIN EXTERNAL DATA/g, '[BEGIN EXTERNAL DATA (escaped)')
|
|
103
|
+
.replace(/\[END EXTERNAL DATA/g, '[END EXTERNAL DATA (escaped)');
|
|
104
|
+
return `${beginMarker}\n${text}\n${endMarker}`;
|
|
105
|
+
}
|
|
106
|
+
export function textResult(data) {
|
|
107
|
+
return { content: [{ type: 'text', text: formatResult(data) }] };
|
|
108
|
+
}
|
|
109
|
+
export function structuredError(error, hint, requiredTool) {
|
|
110
|
+
const payload = { error, hint };
|
|
111
|
+
if (requiredTool) {
|
|
112
|
+
payload.required_tool = requiredTool;
|
|
113
|
+
}
|
|
114
|
+
return { isError: true, content: [{ type: 'text', text: formatResult(payload) }] };
|
|
115
|
+
}
|
|
116
|
+
export function listResult(data) {
|
|
117
|
+
const count = Array.isArray(data) ? data.length : (data && typeof data === 'object' && Array.isArray(data.credentials)) ? data.credentials.length : (data && typeof data === 'object' && Array.isArray(data.secrets)) ? data.secrets.length : (data && typeof data === 'object' && Array.isArray(data.components)) ? data.components.length : 0;
|
|
118
|
+
const header = `Showing ${count} result${count !== 1 ? 's' : ''}. Note: this endpoint does not support pagination — all available results are shown.\n\n`;
|
|
119
|
+
return { content: [{ type: 'text', text: formatResult(header + JSON.stringify(data)) }] };
|
|
120
|
+
}
|
|
121
|
+
export function paginatedResult(data, meta, pageSize) {
|
|
122
|
+
const count = Array.isArray(data) ? data.length : 0;
|
|
123
|
+
if (meta && meta.totalPages > 1) {
|
|
124
|
+
const paginationHeader = `Page ${meta.page} of ${meta.totalPages} (showing ${count} of ${meta.total} total results). Use pageNumber to load other pages.\n\n`;
|
|
125
|
+
return { content: [{ type: 'text', text: formatResult(paginationHeader + JSON.stringify(data)) }] };
|
|
126
|
+
}
|
|
127
|
+
// Fallback: if returned exactly pageSize items, there are likely more pages
|
|
128
|
+
if (Array.isArray(data) && pageSize && count >= pageSize) {
|
|
129
|
+
const page = meta?.page || 1;
|
|
130
|
+
const paginationHeader = `Page ${page} (showing ${count} results — there may be more pages available, use pageNumber to load next pages)\n\n`;
|
|
131
|
+
return { content: [{ type: 'text', text: formatResult(paginationHeader + JSON.stringify(data)) }] };
|
|
132
|
+
}
|
|
133
|
+
return textResult(data);
|
|
134
|
+
}
|
|
135
|
+
export function pruneMetadataResult(data) {
|
|
136
|
+
if (!data || typeof data !== 'object') {
|
|
137
|
+
return data;
|
|
138
|
+
}
|
|
139
|
+
const pruneSchema = (schema) => {
|
|
140
|
+
if (!schema || typeof schema !== 'object') {
|
|
141
|
+
return schema;
|
|
142
|
+
}
|
|
143
|
+
if (Array.isArray(schema)) {
|
|
144
|
+
return schema.map(pruneSchema);
|
|
145
|
+
}
|
|
146
|
+
const pruned = {};
|
|
147
|
+
for (const key of Object.keys(schema)) {
|
|
148
|
+
const val = schema[key];
|
|
149
|
+
if (key === 'enum' && Array.isArray(val)) {
|
|
150
|
+
if (val.length > ENUM_PRUNE_THRESHOLD) {
|
|
151
|
+
pruned[key] = [
|
|
152
|
+
...val.slice(0, ENUM_PRUNE_KEEP),
|
|
153
|
+
`... and ${val.length - ENUM_PRUNE_KEEP} more items`
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
pruned[key] = val;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
else if (typeof val === 'object' && val !== null) {
|
|
161
|
+
pruned[key] = pruneSchema(val);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
pruned[key] = val;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return pruned;
|
|
168
|
+
};
|
|
169
|
+
if (data.result && data.result.data) {
|
|
170
|
+
if (data.result.data.in) {
|
|
171
|
+
data.result.data.in = pruneSchema(data.result.data.in);
|
|
172
|
+
}
|
|
173
|
+
if (data.result.data.out) {
|
|
174
|
+
data.result.data.out = pruneSchema(data.result.data.out);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else if (data.result) {
|
|
178
|
+
if (data.result.in) {
|
|
179
|
+
data.result.in = pruneSchema(data.result.in);
|
|
180
|
+
}
|
|
181
|
+
if (data.result.out) {
|
|
182
|
+
data.result.out = pruneSchema(data.result.out);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else if (data.in || data.out) {
|
|
186
|
+
if (data.in) {
|
|
187
|
+
data.in = pruneSchema(data.in);
|
|
188
|
+
}
|
|
189
|
+
if (data.out) {
|
|
190
|
+
data.out = pruneSchema(data.out);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return data;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/tools/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
export interface DiscoveryState {
|
|
3
|
+
components: Set<string>;
|
|
4
|
+
credentials: Set<string>;
|
|
5
|
+
/** Maps secret ID to its state (e.g. 'ready', 'error') */
|
|
6
|
+
secrets: Map<string, string>;
|
|
7
|
+
/** Component IDs that require credentials/secrets (have non-empty credentials.fields) */
|
|
8
|
+
componentsRequiringAuth: Set<string>;
|
|
9
|
+
/** Maps component ID to its latestVersionId for data sample creation */
|
|
10
|
+
componentVersions: Map<string, string>;
|
|
11
|
+
/** Flow IDs that have been inspected via get_flow (Playbook B: inspect before update) */
|
|
12
|
+
inspectedFlows: Set<string>;
|
|
13
|
+
/** Tracks credential/secret verification results: id → { ok, error? } */
|
|
14
|
+
credentialVerifications: Map<string, {
|
|
15
|
+
ok: boolean;
|
|
16
|
+
error?: string;
|
|
17
|
+
}>;
|
|
18
|
+
/** Whether the flow-building-guide resource has been read this session */
|
|
19
|
+
flowBuildingGuideRead: boolean;
|
|
20
|
+
/** Tracks dynamic metadata retrievals: "componentId:actionOrTriggerName" combos */
|
|
21
|
+
dynamicMetadataRetrieved: Set<string>;
|
|
22
|
+
/** Tracks which component actions/triggers have dynamicMetadata: true (from get_component) */
|
|
23
|
+
dynamicMetadataComponents: Set<string>;
|
|
24
|
+
/** Tracks component:action pairs with static metadata.in/metadata.out (from get_component) */
|
|
25
|
+
staticMetadataAvailable: Set<string>;
|
|
26
|
+
}
|
|
27
|
+
interface ToolContext {
|
|
28
|
+
client: AxiosInstance;
|
|
29
|
+
discoveryState: DiscoveryState;
|
|
30
|
+
}
|
|
31
|
+
export type ToolHandler = (args: any, context: ToolContext) => Promise<{
|
|
32
|
+
content: Array<{
|
|
33
|
+
type: 'text';
|
|
34
|
+
text: string;
|
|
35
|
+
}>;
|
|
36
|
+
isError?: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,0DAA0D;IAC1D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,yFAAyF;IACzF,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,wEAAwE;IACxE,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,yFAAyF;IACzF,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,yEAAyE;IACzE,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,0EAA0E;IAC1E,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mFAAmF;IACnF,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,8FAA8F;IAC9F,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,8FAA8F;IAC9F,uBAAuB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,WAAW,KACjB,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
import { DiscoveryState } from './types.js';
|
|
3
|
+
export { DEPRECATED_COMPONENTS, DEPRECATED_ACTIONS, DEPRECATED_COMPONENT_ACTIONS, getDeprecatedActionReplacement } from './constants.js';
|
|
4
|
+
interface StepStatus {
|
|
5
|
+
stepId: string;
|
|
6
|
+
name: string;
|
|
7
|
+
component: string;
|
|
8
|
+
status: 'OK' | 'ERROR' | 'WARNING';
|
|
9
|
+
issues: string[];
|
|
10
|
+
}
|
|
11
|
+
export interface HealthCheckResult {
|
|
12
|
+
errors: string[];
|
|
13
|
+
warnings: string[];
|
|
14
|
+
stepStatuses?: StepStatus[];
|
|
15
|
+
}
|
|
16
|
+
export declare function checkFlowLifecycle(flowId: string, discoveryState: DiscoveryState, existingFlow: any | null, _operation: 'update_flow' | 'update_flow_draft'): string[];
|
|
17
|
+
export declare function checkFlowBuildingGuideRead(discoveryState: DiscoveryState): string[];
|
|
18
|
+
export declare function validateFlowGraph(body: any): {
|
|
19
|
+
errors: string[];
|
|
20
|
+
warnings: string[];
|
|
21
|
+
};
|
|
22
|
+
export declare function checkDiscoveryState(body: any, discoveryState: DiscoveryState, existingFlow?: any): {
|
|
23
|
+
errors: string[];
|
|
24
|
+
warnings: string[];
|
|
25
|
+
};
|
|
26
|
+
export declare function checkMapperMetadataRetrieved(body: any, discoveryState: DiscoveryState, workspaceId?: string): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Runtime health check for a flow — validates credentials, required fields, URLs, and field values.
|
|
29
|
+
* Runs after create_flow/update_flow and before start_flow to catch config issues
|
|
30
|
+
* that would show as red indicators in the UI.
|
|
31
|
+
*/
|
|
32
|
+
export declare function healthCheckFlow(flow: any, client: AxiosInstance, discoveryState?: DiscoveryState): Promise<HealthCheckResult>;
|
|
33
|
+
/** Format health check results as a readable string to append to tool response */
|
|
34
|
+
export declare function formatHealthCheck(result: HealthCheckResult): string;
|
|
35
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/tools/validation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAe5C,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEzI,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;CAC7B;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,GAAG,GAAG,IAAI,EACxB,UAAU,EAAE,aAAa,GAAG,mBAAmB,GAC9C,MAAM,EAAE,CAuBV;AAED,wBAAgB,0BAA0B,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM,EAAE,CASnF;AA2dD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAmBrF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,GAAG,GAAG;IAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA4H3I;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,GAAG,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,SAAK,GAAG,MAAM,EAAE,CAmBlH;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,aAAa,EACrB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAmN5B;AAWD,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAoCnE"}
|