@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,69 @@
|
|
|
1
|
+
import type { DiscoveryState } from './types.js';
|
|
2
|
+
declare enum FlowPhase {
|
|
3
|
+
INIT = "INIT",
|
|
4
|
+
DRAFT = "DRAFT",
|
|
5
|
+
READY_TO_PUBLISH = "READY_TO_PUBLISH",
|
|
6
|
+
PUBLISHED = "PUBLISHED"
|
|
7
|
+
}
|
|
8
|
+
export interface FlowSnapshot {
|
|
9
|
+
flow: any;
|
|
10
|
+
draft: any | null;
|
|
11
|
+
workspaceId: string;
|
|
12
|
+
revision: string;
|
|
13
|
+
publishedRevision: string;
|
|
14
|
+
runtime: 'UNKNOWN' | 'INACTIVE' | 'ACTIVE' | 'STARTING' | 'STOPPING';
|
|
15
|
+
}
|
|
16
|
+
export interface FlowState extends FlowSnapshot {
|
|
17
|
+
verification: {
|
|
18
|
+
status: 'NOT_RUN' | 'PENDING' | 'PASSED' | 'FAILED' | 'NO_DATA';
|
|
19
|
+
executionId?: string;
|
|
20
|
+
revision?: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
interface NextAction {
|
|
24
|
+
tool: string;
|
|
25
|
+
arguments: Record<string, any>;
|
|
26
|
+
}
|
|
27
|
+
export interface BuildBlocker {
|
|
28
|
+
code: string;
|
|
29
|
+
message: string;
|
|
30
|
+
stepId?: string;
|
|
31
|
+
edgeId?: string;
|
|
32
|
+
nextAction?: NextAction;
|
|
33
|
+
}
|
|
34
|
+
export interface BuildStatus {
|
|
35
|
+
flowId: string;
|
|
36
|
+
phase: FlowPhase;
|
|
37
|
+
revision: string;
|
|
38
|
+
publishedRevision: string;
|
|
39
|
+
runtime: FlowSnapshot['runtime'];
|
|
40
|
+
verification: FlowState['verification'];
|
|
41
|
+
readyToPublish: boolean;
|
|
42
|
+
blockers: BuildBlocker[];
|
|
43
|
+
nextActions: NextAction[];
|
|
44
|
+
}
|
|
45
|
+
export declare function getFlowState(discovery: DiscoveryState, flowId: string): FlowState | undefined;
|
|
46
|
+
export declare const EDITABLE_ATTRIBUTES: readonly ["name", "description", "type", "cron", "graph", "variables", "nodes_config", "container_config"];
|
|
47
|
+
export declare function flowAttributes(value: any): any;
|
|
48
|
+
export declare function configurationRevision(value: any, includeSamples?: boolean): string;
|
|
49
|
+
export declare function snapshot(flow: any, draft: any | null): FlowSnapshot;
|
|
50
|
+
export declare function reconcileFlow(discovery: DiscoveryState, flowId: string, current: FlowSnapshot): FlowState;
|
|
51
|
+
export declare function requireRevision(current: FlowSnapshot, expected?: string): void;
|
|
52
|
+
export declare function requireInactive(current: FlowSnapshot): void;
|
|
53
|
+
export declare function schemaErrors(schema: any, value: any): string[];
|
|
54
|
+
export declare function evaluateMapper(mapper: any, passthrough: Record<string, any>): Promise<any>;
|
|
55
|
+
/**
|
|
56
|
+
* Walk upstream from a passthrough node until a data-producing node is found.
|
|
57
|
+
* Returns the ancestor's sample (if verified) or its node ID (for blocker attribution).
|
|
58
|
+
*/
|
|
59
|
+
export declare function findDataProducingAncestor(nodes: any[], edges: any[], startNode: any, discovery: DiscoveryState, flowId: string, graph: any, visited?: Set<string>): {
|
|
60
|
+
nodeId: string;
|
|
61
|
+
sample?: import('./flow-evidence.js').SampleEvidence;
|
|
62
|
+
} | undefined;
|
|
63
|
+
/** Pure assessment: no platform writes, execution, or state transitions. */
|
|
64
|
+
export declare function assessGraph(discovery: DiscoveryState, flowId: string, workspaceId: string, attrs: any): Promise<BuildBlocker[]>;
|
|
65
|
+
export declare function getFlowBuildStatus(discovery: DiscoveryState, flowId: string): Promise<BuildStatus>;
|
|
66
|
+
export declare function markRunRequested(discovery: DiscoveryState, flowId: string, executionId?: string): void;
|
|
67
|
+
export declare function getFlowStatesReport(discovery: DiscoveryState): any[];
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=flow-state-machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-state-machine.d.ts","sourceRoot":"","sources":["../../src/tools/flow-state-machine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,aAAK,SAAS;IACZ,IAAI,SAAS;IAAE,KAAK,UAAU;IAAE,gBAAgB,qBAAqB;IAAE,SAAS,cAAc;CAC/F;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;CACtE;AACD,MAAM,WAAW,SAAU,SAAQ,YAAY;IAC7C,YAAY,EAAE;QAAE,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5H;AACD,UAAU,UAAU;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE;AACrE,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAAE;AAC1H,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,YAAY,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACxC,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAOD,wBAAgB,YAAY,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAA0C;AAExI,eAAO,MAAM,mBAAmB,4GAA6G,CAAC;AAC9I,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAM9C;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,cAAc,UAAO,GAAG,MAAM,CA0B/E;AACD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,GAAG,YAAY,CAOnE;AACD,wBAAgB,aAAa,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,SAAS,CAMzG;AACD,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAG9E;AACD,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAE3D;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,EAAE,CAM9D;AACD,wBAAsB,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAMhG;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAC1C,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EACrD,OAAO,cAAoB,GAC1B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,oBAAoB,EAAE,cAAc,CAAA;CAAE,GAAG,SAAS,CAgBtF;AAED,4EAA4E;AAC5E,wBAAsB,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CA6GrI;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAYxG;AACD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAItG;AACD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,cAAc,GAAG,GAAG,EAAE,CAEpE"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { descriptorFor, evidence, fingerprint, isPassthroughNode, nodeCredentialArgs, credentialKey, nodeMetadataKey, operation, schemaFor, selectedSample } from './flow-evidence.js';
|
|
2
|
+
import { validateFlowGraph } from './validation.js';
|
|
3
|
+
import jsonata from 'jsonata';
|
|
4
|
+
import { Ajv } from 'ajv';
|
|
5
|
+
var FlowPhase;
|
|
6
|
+
(function (FlowPhase) {
|
|
7
|
+
FlowPhase["INIT"] = "INIT";
|
|
8
|
+
FlowPhase["DRAFT"] = "DRAFT";
|
|
9
|
+
FlowPhase["READY_TO_PUBLISH"] = "READY_TO_PUBLISH";
|
|
10
|
+
FlowPhase["PUBLISHED"] = "PUBLISHED";
|
|
11
|
+
})(FlowPhase || (FlowPhase = {}));
|
|
12
|
+
const sessions = new WeakMap();
|
|
13
|
+
function states(discovery) {
|
|
14
|
+
let value = sessions.get(discovery);
|
|
15
|
+
if (!value) {
|
|
16
|
+
value = new Map();
|
|
17
|
+
sessions.set(discovery, value);
|
|
18
|
+
}
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
export function getFlowState(discovery, flowId) { return states(discovery).get(flowId); }
|
|
22
|
+
export const EDITABLE_ATTRIBUTES = ['name', 'description', 'type', 'cron', 'graph', 'variables', 'nodes_config', 'container_config'];
|
|
23
|
+
export function flowAttributes(value) {
|
|
24
|
+
const attrs = value?.data?.attributes || value?.attributes || value || {};
|
|
25
|
+
const result = Object.fromEntries(EDITABLE_ATTRIBUTES.filter(k => attrs[k] !== undefined).map(k => [k, structuredClone(attrs[k])]));
|
|
26
|
+
// JSON:API resource type "flow-draft" is not a flow type attribute — exclude it.
|
|
27
|
+
if (result.type === 'flow-draft')
|
|
28
|
+
delete result.type;
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
export function configurationRevision(value, includeSamples = true) {
|
|
32
|
+
const attrs = flowAttributes(value);
|
|
33
|
+
if (!includeSamples)
|
|
34
|
+
delete attrs.nodes_config;
|
|
35
|
+
delete attrs.type; // type is read-only and differs between draft/flow — exclude from fingerprint
|
|
36
|
+
delete attrs.cron; // scheduling metadata — not returned consistently in flow vs draft responses
|
|
37
|
+
// Normalize attributes the API may add/remove as defaults during publish.
|
|
38
|
+
// Remove empty scalars and empty objects so draft and published flow produce the same fingerprint.
|
|
39
|
+
for (const key of Object.keys(attrs)) {
|
|
40
|
+
if (key === 'graph' || key === 'name')
|
|
41
|
+
continue; // graph is normalized below; name is always meaningful
|
|
42
|
+
const v = attrs[key];
|
|
43
|
+
if (v === null || v === undefined || v === '') {
|
|
44
|
+
delete attrs[key];
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (typeof v === 'object' && !Array.isArray(v) && Object.keys(v).length === 0) {
|
|
48
|
+
delete attrs[key];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (attrs.graph) {
|
|
52
|
+
attrs.graph = {
|
|
53
|
+
nodes: (attrs.graph.nodes || []).map((n) => {
|
|
54
|
+
const { componentId, method, version } = operation(n);
|
|
55
|
+
return { id: n.id, name: n.name, componentId, method, version, fields: n.fields || {},
|
|
56
|
+
credential: nodeCredentialArgs('', n).credentialId || '', secret: nodeCredentialArgs('', n).secretId || '',
|
|
57
|
+
...(includeSamples ? { samples: n.selected_data_samples || [] } : {}) };
|
|
58
|
+
}).sort((a, b) => a.id.localeCompare(b.id)),
|
|
59
|
+
edges: (attrs.graph.edges || []).map((e) => ({ source: e.source, target: e.target, config: e.config || {} }))
|
|
60
|
+
.sort((a, b) => `${a.source}:${a.target}`.localeCompare(`${b.source}:${b.target}`)),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return fingerprint(attrs);
|
|
64
|
+
}
|
|
65
|
+
export function snapshot(flow, draft) {
|
|
66
|
+
if (!flow)
|
|
67
|
+
throw new Error('Flow response is empty; cannot determine lifecycle state.');
|
|
68
|
+
const rawStatus = String(flow.status || '').toUpperCase();
|
|
69
|
+
const runtime = ['INACTIVE', 'ACTIVE', 'STARTING', 'STOPPING'].includes(rawStatus) ? rawStatus : 'UNKNOWN';
|
|
70
|
+
return { flow, draft, workspaceId: flow.workspace?.id || flow.workspace?.data?.id || flow.workspace_id || '',
|
|
71
|
+
revision: fingerprint({ draft: !!draft, configuration: configurationRevision(draft || flow) }),
|
|
72
|
+
publishedRevision: configurationRevision(flow, false), runtime };
|
|
73
|
+
}
|
|
74
|
+
export function reconcileFlow(discovery, flowId, current) {
|
|
75
|
+
const old = getFlowState(discovery, flowId);
|
|
76
|
+
const state = { ...current, verification: old?.publishedRevision === current.publishedRevision
|
|
77
|
+
? old.verification : { status: 'NOT_RUN' } };
|
|
78
|
+
states(discovery).set(flowId, state);
|
|
79
|
+
return state;
|
|
80
|
+
}
|
|
81
|
+
export function requireRevision(current, expected) {
|
|
82
|
+
if (!expected)
|
|
83
|
+
throw new Error('expectedRevision is required. Call get_flow_build_status and use its revision.');
|
|
84
|
+
if (expected !== current.revision)
|
|
85
|
+
throw new Error('Draft revision conflict. Call get_flow_build_status, review the current graph, then retry with its revision.');
|
|
86
|
+
}
|
|
87
|
+
export function requireInactive(current) {
|
|
88
|
+
if (current.runtime !== 'INACTIVE')
|
|
89
|
+
throw new Error(`Flow runtime is ${current.runtime}; stop it and wait for INACTIVE before editing or publishing.`);
|
|
90
|
+
}
|
|
91
|
+
const ajv = new Ajv({ strict: false, allErrors: true, validateFormats: false });
|
|
92
|
+
export function schemaErrors(schema, value) {
|
|
93
|
+
if (!schema)
|
|
94
|
+
return [];
|
|
95
|
+
try {
|
|
96
|
+
const validate = ajv.compile(schema);
|
|
97
|
+
return validate(value) ? [] : (validate.errors || []).map(e => `${e.instancePath || '/'} ${e.message}`);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return []; /* Schema itself is invalid (e.g. required is not an array) — cannot validate against it */
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
export async function evaluateMapper(mapper, passthrough) {
|
|
104
|
+
if (typeof mapper === 'string')
|
|
105
|
+
return jsonata(mapper).evaluate({}, { getPassthrough: () => passthrough });
|
|
106
|
+
if (!mapper || typeof mapper !== 'object' || Array.isArray(mapper))
|
|
107
|
+
throw new Error('Mapper must be an object containing JSONata expressions.');
|
|
108
|
+
const result = {};
|
|
109
|
+
for (const [key, value] of Object.entries(mapper))
|
|
110
|
+
result[key] = await evaluateMapper(value, passthrough);
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Walk upstream from a passthrough node until a data-producing node is found.
|
|
115
|
+
* Returns the ancestor's sample (if verified) or its node ID (for blocker attribution).
|
|
116
|
+
*/
|
|
117
|
+
export function findDataProducingAncestor(nodes, edges, startNode, discovery, flowId, graph, visited = new Set()) {
|
|
118
|
+
visited.add(startNode.id);
|
|
119
|
+
const incomingEdges = edges.filter(e => e.target === startNode.id);
|
|
120
|
+
for (const edge of incomingEdges) {
|
|
121
|
+
if (visited.has(edge.source))
|
|
122
|
+
continue;
|
|
123
|
+
const parent = nodes.find(n => n.id === edge.source);
|
|
124
|
+
if (!parent)
|
|
125
|
+
continue;
|
|
126
|
+
if (isPassthroughNode(parent)) {
|
|
127
|
+
const result = findDataProducingAncestor(nodes, edges, parent, discovery, flowId, graph, visited);
|
|
128
|
+
if (result)
|
|
129
|
+
return result;
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const sample = selectedSample(discovery, flowId, graph, parent);
|
|
133
|
+
return { nodeId: parent.id, sample: sample || undefined };
|
|
134
|
+
}
|
|
135
|
+
return undefined;
|
|
136
|
+
}
|
|
137
|
+
/** Pure assessment: no platform writes, execution, or state transitions. */
|
|
138
|
+
export async function assessGraph(discovery, flowId, workspaceId, attrs) {
|
|
139
|
+
const blockers = [];
|
|
140
|
+
const graph = attrs?.graph;
|
|
141
|
+
const nodes = graph?.nodes || [];
|
|
142
|
+
const edges = graph?.edges || [];
|
|
143
|
+
if (!nodes.length)
|
|
144
|
+
return [{ code: 'EMPTY_GRAPH', message: 'Save a skeleton draft with at least one step.' }];
|
|
145
|
+
const structural = validateFlowGraph({ graph });
|
|
146
|
+
if (structural.errors.length)
|
|
147
|
+
return structural.errors.map(message => ({ code: 'INVALID_GRAPH', message }));
|
|
148
|
+
if (!workspaceId)
|
|
149
|
+
return [{ code: 'UNKNOWN_WORKSPACE', message: 'Flow workspace could not be determined.' }];
|
|
150
|
+
const add = (code, message, node, nextAction) => blockers.push({ code, message, stepId: node.id, nextAction });
|
|
151
|
+
for (const node of nodes) {
|
|
152
|
+
const op = operation(node);
|
|
153
|
+
const descriptor = descriptorFor(discovery, node);
|
|
154
|
+
if (!descriptor) {
|
|
155
|
+
add('DESCRIPTOR_REQUIRED', 'Inspect the descriptor for the pinned component version.', node, { tool: 'get_component', arguments: { componentId: op.componentId, versionId: op.version } });
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
const root = !edges.some(e => e.target === node.id);
|
|
159
|
+
const def = root ? descriptor.triggers?.[op.method] : descriptor.actions?.[op.method];
|
|
160
|
+
if (!def) {
|
|
161
|
+
add('INVALID_OPERATION', `Operation ${op.method} is not a ${root ? 'trigger' : 'action'} in this component version.`, node);
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (def.deprecated)
|
|
165
|
+
add('DEPRECATED_OPERATION', 'Choose a supported operation.', node);
|
|
166
|
+
for (const [key, field] of Object.entries(def.fields || {})) {
|
|
167
|
+
if (field.required && (node.fields?.[key] === undefined || node.fields[key] === null || node.fields[key] === '')) {
|
|
168
|
+
add('REQUIRED_FIELD', `Configure field ${key}.`, node);
|
|
169
|
+
}
|
|
170
|
+
if (field.model && typeof field.model === 'object' && node.fields?.[key] !== undefined && !(node.fields[key] in field.model)) {
|
|
171
|
+
add('INVALID_OPTION', `Field ${key} is not an allowed option.`, node);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const authArgs = nodeCredentialArgs(workspaceId, node);
|
|
175
|
+
const authRequired = Object.keys(descriptor.credentials?.fields || {}).length > 0;
|
|
176
|
+
if (authArgs.credentialId || authArgs.secretId) {
|
|
177
|
+
const auth = evidence(discovery).credentials.get(credentialKey(authArgs));
|
|
178
|
+
if (!auth?.ok || auth.status !== 'VERIFIED' || !auth.checkedAt || Date.now() - auth.checkedAt > 300_000) {
|
|
179
|
+
add('CREDENTIALS_UNVERIFIED', auth?.error || 'Verify this connection for the pinned component version.', node, { tool: 'init_verify_credentials', arguments: authArgs });
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else if (authRequired)
|
|
183
|
+
add('CREDENTIALS_MISSING', 'Select a credential or secret for this step.', node);
|
|
184
|
+
if (def.dynamicMetadata) {
|
|
185
|
+
const meta = evidence(discovery).metadata.get(nodeMetadataKey(workspaceId, node));
|
|
186
|
+
if (meta?.status !== 'VERIFIED') {
|
|
187
|
+
add(meta?.status === 'PENDING' ? 'METADATA_PENDING' : 'METADATA_REQUIRED', meta?.error || 'Retrieve metadata for this exact configuration.', node, meta?.status === 'PENDING' && meta.executionId
|
|
188
|
+
? { tool: 'get_scheduled_execution_result', arguments: { executionId: meta.executionId } }
|
|
189
|
+
: { tool: 'init_dynamic_metadata', arguments: { ...authArgs, actionOrTriggerName: op.method, fields: node.fields || {} } });
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Every non-passthrough step must have a verified data sample before publish.
|
|
193
|
+
if (!isPassthroughNode(node)) {
|
|
194
|
+
const sample = selectedSample(discovery, flowId, graph, node);
|
|
195
|
+
if (!sample) {
|
|
196
|
+
const selectedId = node.selected_data_samples?.[0];
|
|
197
|
+
add('SAMPLE_REQUIRED', 'Retrieve or create a data sample for this step.', node, selectedId
|
|
198
|
+
? { tool: 'get_data_sample', arguments: { flowId, stepId: node.id, dataSampleId: selectedId } }
|
|
199
|
+
: { tool: 'debug_flow_step', arguments: { flowId, stepId: node.id, workspaceId, componentId: op.componentId,
|
|
200
|
+
command: node.command, fields: node.fields || {}, ...(authArgs.credentialId ? { credentialsId: authArgs.credentialId } : {}),
|
|
201
|
+
...(authArgs.secretId ? { secretId: authArgs.secretId } : {}) } });
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
for (const edge of edges) {
|
|
206
|
+
const target = nodes.find(n => n.id === edge.target);
|
|
207
|
+
const schema = schemaFor(discovery, workspaceId, target)?.in;
|
|
208
|
+
const mapper = edge.config?.mapper;
|
|
209
|
+
const requiresMapper = (schema?.required?.length || Object.keys(schema?.properties || {}).length || schema?.minProperties || 0) > 0;
|
|
210
|
+
if (!mapper) {
|
|
211
|
+
if (requiresMapper)
|
|
212
|
+
blockers.push({ code: 'MAPPER_REQUIRED', message: 'Configure the target input mapper.', edgeId: `${edge.source}:${edge.target}`, stepId: target.id });
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
const expression = JSON.stringify(mapper);
|
|
216
|
+
const refs = new Set([...expression.matchAll(/\$getPassthrough\(\)\.([\w-]+)/g)].map(m => m[1]));
|
|
217
|
+
const passthrough = {};
|
|
218
|
+
let missing = false;
|
|
219
|
+
for (const id of refs) {
|
|
220
|
+
const source = nodes.find(n => n.id === id);
|
|
221
|
+
if (!source)
|
|
222
|
+
continue;
|
|
223
|
+
// Passthrough/service nodes (e.g. Router) don't hold samples — the platform
|
|
224
|
+
// strips selected_data_samples from their API representation. Walk upstream
|
|
225
|
+
// to find the nearest data-producing ancestor and use its sample instead.
|
|
226
|
+
if (isPassthroughNode(source)) {
|
|
227
|
+
const ancestor = findDataProducingAncestor(nodes, edges, source, discovery, flowId, graph);
|
|
228
|
+
if (ancestor?.sample) {
|
|
229
|
+
passthrough[id] = { body: ancestor.sample.body };
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
// No ancestor sample found — still not a blocker on the passthrough node itself;
|
|
233
|
+
// the blocker (if any) will be raised on the ancestor that needs a sample.
|
|
234
|
+
if (ancestor?.nodeId)
|
|
235
|
+
continue;
|
|
236
|
+
// Passthrough with no upstream edge at all — skip silently.
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
const sample = selectedSample(discovery, flowId, graph, source);
|
|
240
|
+
if (!sample) {
|
|
241
|
+
missing = true;
|
|
242
|
+
const selectedId = source?.selected_data_samples?.[0];
|
|
243
|
+
blockers.push({ code: 'SOURCE_SAMPLE_REQUIRED', message: `Validate a current sample from ${id} to evaluate this mapper.`, stepId: id,
|
|
244
|
+
nextAction: selectedId ? { tool: 'get_data_sample', arguments: { flowId, stepId: id, dataSampleId: selectedId } } : undefined });
|
|
245
|
+
}
|
|
246
|
+
else
|
|
247
|
+
passthrough[id] = { body: sample.body };
|
|
248
|
+
}
|
|
249
|
+
if (missing)
|
|
250
|
+
continue;
|
|
251
|
+
try {
|
|
252
|
+
const mapped = await evaluateMapper(mapper, passthrough);
|
|
253
|
+
const errors = schemaErrors(schema, mapped);
|
|
254
|
+
// Undefined required mapping values are never silently accepted when a schema is absent.
|
|
255
|
+
const undefinedValues = (obj) => obj === undefined || (obj && typeof obj === 'object' && Object.values(obj).some(undefinedValues));
|
|
256
|
+
if (undefinedValues(mapped))
|
|
257
|
+
errors.push('Mapper contains an expression that resolves to undefined.');
|
|
258
|
+
for (const message of errors)
|
|
259
|
+
blockers.push({ code: 'INVALID_MAPPING', message, edgeId: `${edge.source}:${edge.target}` });
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
blockers.push({ code: 'INVALID_MAPPING', message: error.message, edgeId: `${edge.source}:${edge.target}` });
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return blockers;
|
|
266
|
+
}
|
|
267
|
+
export async function getFlowBuildStatus(discovery, flowId) {
|
|
268
|
+
const state = getFlowState(discovery, flowId);
|
|
269
|
+
if (!state)
|
|
270
|
+
throw new Error('Flow state is unknown. Call get_flow first.');
|
|
271
|
+
const attrs = flowAttributes(state.draft || state.flow);
|
|
272
|
+
const blockers = await assessGraph(discovery, flowId, state.workspaceId, attrs);
|
|
273
|
+
if (!state.draft)
|
|
274
|
+
blockers.unshift({ code: 'NO_DRAFT', message: 'Save a draft before publishing.' });
|
|
275
|
+
if (state.runtime !== 'INACTIVE')
|
|
276
|
+
blockers.unshift({ code: 'FLOW_NOT_INACTIVE', message: `Flow runtime is ${state.runtime}.`,
|
|
277
|
+
nextAction: state.runtime === 'ACTIVE' ? { tool: 'stop_flow', arguments: { flowId } } : { tool: 'get_flow', arguments: { flowId } } });
|
|
278
|
+
const ready = blockers.length === 0;
|
|
279
|
+
return { flowId, phase: !attrs.graph?.nodes?.length ? FlowPhase.INIT : !state.draft ? FlowPhase.PUBLISHED : ready ? FlowPhase.READY_TO_PUBLISH : FlowPhase.DRAFT,
|
|
280
|
+
revision: state.revision, publishedRevision: state.publishedRevision, runtime: state.runtime, verification: state.verification,
|
|
281
|
+
readyToPublish: ready, blockers, nextActions: [...new Map(blockers.filter(b => b.nextAction).map(b => [fingerprint(b.nextAction), b.nextAction])).values()] };
|
|
282
|
+
}
|
|
283
|
+
export function markRunRequested(discovery, flowId, executionId) {
|
|
284
|
+
const state = getFlowState(discovery, flowId);
|
|
285
|
+
if (!state)
|
|
286
|
+
throw new Error('Flow state is unknown.');
|
|
287
|
+
state.verification = { status: 'PENDING', revision: state.publishedRevision, executionId };
|
|
288
|
+
}
|
|
289
|
+
export function getFlowStatesReport(discovery) {
|
|
290
|
+
return [...states(discovery)].map(([flowId, state]) => ({ flowId, revision: state.revision, runtime: state.runtime, verification: state.verification }));
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=flow-state-machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-state-machine.js","sourceRoot":"","sources":["../../src/tools/flow-state-machine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/auth.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAsbpD,CAAC"}
|