@fsai-flow/workflow 0.0.1
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/.eslintrc.json +33 -0
- package/README.md +11 -0
- package/dist/README.md +11 -0
- package/dist/package.json +42 -0
- package/dist/src/index.d.ts +21 -0
- package/dist/src/index.js +33 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/Constants.d.ts +68 -0
- package/dist/src/lib/Constants.js +106 -0
- package/dist/src/lib/Constants.js.map +1 -0
- package/dist/src/lib/DeferredPromise.d.ts +6 -0
- package/dist/src/lib/DeferredPromise.js +11 -0
- package/dist/src/lib/DeferredPromise.js.map +1 -0
- package/dist/src/lib/Expression.d.ts +65 -0
- package/dist/src/lib/Expression.js +215 -0
- package/dist/src/lib/Expression.js.map +1 -0
- package/dist/src/lib/Interfaces.d.ts +1569 -0
- package/dist/src/lib/Interfaces.js +44 -0
- package/dist/src/lib/Interfaces.js.map +1 -0
- package/dist/src/lib/LoggerProxy.d.ts +9 -0
- package/dist/src/lib/LoggerProxy.js +40 -0
- package/dist/src/lib/LoggerProxy.js.map +1 -0
- package/dist/src/lib/MetadataUtils.d.ts +4 -0
- package/dist/src/lib/MetadataUtils.js +27 -0
- package/dist/src/lib/MetadataUtils.js.map +1 -0
- package/dist/src/lib/NodeErrors.d.ts +82 -0
- package/dist/src/lib/NodeErrors.js +289 -0
- package/dist/src/lib/NodeErrors.js.map +1 -0
- package/dist/src/lib/NodeHelpers.d.ts +198 -0
- package/dist/src/lib/NodeHelpers.js +1348 -0
- package/dist/src/lib/NodeHelpers.js.map +1 -0
- package/dist/src/lib/ObservableObject.d.ts +5 -0
- package/dist/src/lib/ObservableObject.js +61 -0
- package/dist/src/lib/ObservableObject.js.map +1 -0
- package/dist/src/lib/RoutingNode.d.ts +18 -0
- package/dist/src/lib/RoutingNode.js +508 -0
- package/dist/src/lib/RoutingNode.js.map +1 -0
- package/dist/src/lib/TelemetryHelpers.d.ts +3 -0
- package/dist/src/lib/TelemetryHelpers.js +69 -0
- package/dist/src/lib/TelemetryHelpers.js.map +1 -0
- package/dist/src/lib/TypeValidation.d.ts +21 -0
- package/dist/src/lib/TypeValidation.js +385 -0
- package/dist/src/lib/TypeValidation.js.map +1 -0
- package/dist/src/lib/VersionedNodeType.d.ts +9 -0
- package/dist/src/lib/VersionedNodeType.js +26 -0
- package/dist/src/lib/VersionedNodeType.js.map +1 -0
- package/dist/src/lib/Workflow.d.ts +248 -0
- package/dist/src/lib/Workflow.js +901 -0
- package/dist/src/lib/Workflow.js.map +1 -0
- package/dist/src/lib/WorkflowDataProxy.d.ts +87 -0
- package/dist/src/lib/WorkflowDataProxy.js +556 -0
- package/dist/src/lib/WorkflowDataProxy.js.map +1 -0
- package/dist/src/lib/WorkflowErrors.d.ts +9 -0
- package/dist/src/lib/WorkflowErrors.js +18 -0
- package/dist/src/lib/WorkflowErrors.js.map +1 -0
- package/dist/src/lib/WorkflowHooks.d.ts +11 -0
- package/dist/src/lib/WorkflowHooks.js +34 -0
- package/dist/src/lib/WorkflowHooks.js.map +1 -0
- package/dist/src/lib/errors/base/base.error.d.ts +30 -0
- package/dist/src/lib/errors/base/base.error.js +45 -0
- package/dist/src/lib/errors/base/base.error.js.map +1 -0
- package/dist/src/lib/errors/base/operational.error.d.ts +15 -0
- package/dist/src/lib/errors/base/operational.error.js +19 -0
- package/dist/src/lib/errors/base/operational.error.js.map +1 -0
- package/dist/src/lib/errors/error.types.d.ts +11 -0
- package/dist/src/lib/errors/error.types.js +3 -0
- package/dist/src/lib/errors/error.types.js.map +1 -0
- package/dist/src/lib/errors/index.d.ts +1 -0
- package/dist/src/lib/errors/index.js +6 -0
- package/dist/src/lib/errors/index.js.map +1 -0
- package/dist/src/lib/result.d.ts +19 -0
- package/dist/src/lib/result.js +36 -0
- package/dist/src/lib/result.js.map +1 -0
- package/dist/src/lib/utils.d.ts +50 -0
- package/dist/src/lib/utils.js +110 -0
- package/dist/src/lib/utils.js.map +1 -0
- package/eslint.config.js +19 -0
- package/jest.config.ts +10 -0
- package/package.json +40 -0
- package/project.json +19 -0
- package/src/index.ts +33 -0
- package/src/lib/Constants.ts +124 -0
- package/src/lib/DeferredPromise.ts +14 -0
- package/src/lib/Expression.ts +375 -0
- package/src/lib/Interfaces.ts +2229 -0
- package/src/lib/LoggerProxy.ts +43 -0
- package/src/lib/MetadataUtils.ts +34 -0
- package/src/lib/NodeErrors.ts +332 -0
- package/src/lib/NodeHelpers.ts +1666 -0
- package/src/lib/ObservableObject.ts +77 -0
- package/src/lib/RoutingNode.ts +862 -0
- package/src/lib/TelemetryHelpers.ts +86 -0
- package/src/lib/TypeValidation.ts +431 -0
- package/src/lib/VersionedNodeType.ts +30 -0
- package/src/lib/Workflow.ts +1266 -0
- package/src/lib/WorkflowDataProxy.ts +708 -0
- package/src/lib/WorkflowErrors.ts +18 -0
- package/src/lib/WorkflowHooks.ts +51 -0
- package/src/lib/errors/base/base.error.ts +68 -0
- package/src/lib/errors/base/operational.error.ts +21 -0
- package/src/lib/errors/error.types.ts +14 -0
- package/src/lib/errors/index.ts +1 -0
- package/src/lib/result.ts +34 -0
- package/src/lib/utils.ts +132 -0
- package/tests/Helpers.ts +667 -0
- package/tests/NodeHelpers.test.ts +3053 -0
- package/tests/ObservableObject.test.ts +171 -0
- package/tests/RoutingNode.test.ts +1680 -0
- package/tests/Workflow.test.ts +1284 -0
- package/tests/WorkflowDataProxy.test.ts +199 -0
- package/tsconfig.json +27 -0
- package/tsconfig.lib.json +11 -0
- package/tsconfig.spec.json +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowHooks.js","sourceRoot":"","sources":["../../../src/lib/WorkflowHooks.ts"],"names":[],"mappings":";;;AAQA,MAAa,aAAa;IACzB,IAAI,CAAsB;IAE1B,YAAY,CAAgB;IAE5B,WAAW,CAAS;IAEpB,SAAS,CAAU;IAEnB,OAAO,CAAU;IAEjB,aAAa,CAAwB;IAErC,YACC,aAAoC,EACpC,IAAyB,EACzB,WAAmB,EACnB,YAA2B,EAC3B,kBAAqD;QAErD,2FAA2F;QAC3F,kBAAkB,GAAG,kBAAkB,IAAI,EAAE,CAAC;QAE9C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC;IAC3C,CAAC;IAED,iHAAiH;IACjH,KAAK,CAAC,oBAAoB,CAAC,QAAgB,EAAE,UAAiB;QAC7D,6BAA6B;QAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC/F,0FAA0F;YAC1F,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAE,EAAE,CAAC;gBAC1D,4CAA4C;gBAC5C,MAAM,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC5C,CAAC;QACF,CAAC;IACF,CAAC;CACD;AA1CD,sCA0CC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Event } from '@sentry/node';
|
|
2
|
+
import type { ErrorTags, ErrorLevel, ReportingOptions } from '../error.types';
|
|
3
|
+
export type BaseErrorOptions = {
|
|
4
|
+
description?: undefined | null;
|
|
5
|
+
} & ErrorOptions & ReportingOptions;
|
|
6
|
+
interface ErrorOptions {
|
|
7
|
+
cause?: unknown;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Base class for all errors
|
|
11
|
+
*/
|
|
12
|
+
export declare abstract class BaseError extends Error {
|
|
13
|
+
/**
|
|
14
|
+
* Error level. Defines which level the error should be logged/reported
|
|
15
|
+
* @default 'error'
|
|
16
|
+
*/
|
|
17
|
+
level: ErrorLevel;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the error should be reported to Sentry.
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
readonly shouldReport: boolean;
|
|
23
|
+
readonly description: string | null | undefined;
|
|
24
|
+
readonly tags: ErrorTags;
|
|
25
|
+
readonly extra?: Event['extra'];
|
|
26
|
+
readonly packageName?: string;
|
|
27
|
+
readonly cause?: unknown;
|
|
28
|
+
constructor(message: string, { level, description, shouldReport, tags, extra, ...rest }?: BaseErrorOptions);
|
|
29
|
+
}
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseError = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const callsites_1 = tslib_1.__importDefault(require("callsites"));
|
|
6
|
+
/**
|
|
7
|
+
* Base class for all errors
|
|
8
|
+
*/
|
|
9
|
+
class BaseError extends Error {
|
|
10
|
+
/**
|
|
11
|
+
* Error level. Defines which level the error should be logged/reported
|
|
12
|
+
* @default 'error'
|
|
13
|
+
*/
|
|
14
|
+
level;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the error should be reported to Sentry.
|
|
17
|
+
* @default true
|
|
18
|
+
*/
|
|
19
|
+
shouldReport;
|
|
20
|
+
description;
|
|
21
|
+
tags;
|
|
22
|
+
extra;
|
|
23
|
+
packageName;
|
|
24
|
+
cause;
|
|
25
|
+
constructor(message, { level = 'error', description, shouldReport, tags = {}, extra, ...rest } = {}) {
|
|
26
|
+
super(message);
|
|
27
|
+
if (rest.cause !== undefined) {
|
|
28
|
+
this.cause = rest.cause;
|
|
29
|
+
}
|
|
30
|
+
this.level = level;
|
|
31
|
+
this.shouldReport = shouldReport ?? (level === 'error' || level === 'fatal');
|
|
32
|
+
this.description = description;
|
|
33
|
+
this.tags = tags;
|
|
34
|
+
this.extra = extra;
|
|
35
|
+
try {
|
|
36
|
+
const filePath = (0, callsites_1.default)()[2].getFileName() ?? '';
|
|
37
|
+
const match = /packages\/([^\/]+)\//.exec(filePath)?.[1];
|
|
38
|
+
if (match)
|
|
39
|
+
this.tags['packageName'] = match;
|
|
40
|
+
}
|
|
41
|
+
catch { }
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.BaseError = BaseError;
|
|
45
|
+
//# sourceMappingURL=base.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.error.js","sourceRoot":"","sources":["../../../../../src/lib/errors/base/base.error.ts"],"names":[],"mappings":";;;;AACA,kEAAkC;AAUlC;;GAEG;AACH,MAAsB,SAAU,SAAQ,KAAK;IAC5C;;;OAGG;IACH,KAAK,CAAa;IAElB;;;OAGG;IACM,YAAY,CAAU;IAEtB,WAAW,CAA4B;IAEvC,IAAI,CAAY;IAEhB,KAAK,CAAkB;IAEvB,WAAW,CAAU;IAErB,KAAK,CAAW;IAEzB,YACC,OAAe,EACf,EACC,KAAK,GAAG,OAAO,EACf,WAAW,EACX,YAAY,EACZ,IAAI,GAAG,EAAE,EACT,KAAK,EACL,GAAG,IAAI,KACc,EAAE;QAExB,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC;QAC7E,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAA,mBAAS,GAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzD,IAAI,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACX,CAAC;CACD;AArDD,8BAqDC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { BaseErrorOptions } from './base.error';
|
|
2
|
+
import { BaseError } from './base.error';
|
|
3
|
+
export type OperationalErrorOptions = Omit<BaseErrorOptions, 'level'> & {
|
|
4
|
+
level?: 'info' | 'warning' | 'error';
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Error that indicates a transient issue, like a network request failing,
|
|
8
|
+
* a database query timing out, etc. These are expected to happen, are
|
|
9
|
+
* transient by nature and should be handled gracefully.
|
|
10
|
+
*
|
|
11
|
+
* Default level: warning
|
|
12
|
+
*/
|
|
13
|
+
export declare class OperationalError extends BaseError {
|
|
14
|
+
constructor(message: string, opts?: OperationalErrorOptions);
|
|
15
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperationalError = void 0;
|
|
4
|
+
const base_error_1 = require("./base.error");
|
|
5
|
+
/**
|
|
6
|
+
* Error that indicates a transient issue, like a network request failing,
|
|
7
|
+
* a database query timing out, etc. These are expected to happen, are
|
|
8
|
+
* transient by nature and should be handled gracefully.
|
|
9
|
+
*
|
|
10
|
+
* Default level: warning
|
|
11
|
+
*/
|
|
12
|
+
class OperationalError extends base_error_1.BaseError {
|
|
13
|
+
constructor(message, opts = {}) {
|
|
14
|
+
opts.level = opts.level ?? 'warning';
|
|
15
|
+
super(message, opts);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.OperationalError = OperationalError;
|
|
19
|
+
//# sourceMappingURL=operational.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operational.error.js","sourceRoot":"","sources":["../../../../../src/lib/errors/base/operational.error.ts"],"names":[],"mappings":";;;AACA,6CAAyC;AAMzC;;;;;;GAMG;AACH,MAAa,gBAAiB,SAAQ,sBAAS;IAC9C,YAAY,OAAe,EAAE,OAAgC,EAAE;QAC9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;QAErC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;CACD;AAND,4CAMC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Event } from '@sentry/node';
|
|
2
|
+
export type ErrorLevel = 'fatal' | 'error' | 'warning' | 'info';
|
|
3
|
+
export type ErrorTags = NonNullable<Event['tags']>;
|
|
4
|
+
export type ReportingOptions = {
|
|
5
|
+
/** Whether the error should be reported to Sentry */
|
|
6
|
+
shouldReport?: boolean;
|
|
7
|
+
level?: ErrorLevel;
|
|
8
|
+
tags?: ErrorTags;
|
|
9
|
+
extra?: Event['extra'];
|
|
10
|
+
executionId?: string;
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.types.js","sourceRoot":"","sources":["../../../../src/lib/errors/error.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { OperationalError, type OperationalErrorOptions } from './base/operational.error';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperationalError = void 0;
|
|
4
|
+
var operational_error_1 = require("./base/operational.error");
|
|
5
|
+
Object.defineProperty(exports, "OperationalError", { enumerable: true, get: function () { return operational_error_1.OperationalError; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/errors/index.ts"],"names":[],"mappings":";;;AAAA,8DAA0F;AAAjF,qHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type ResultOk<T> = {
|
|
2
|
+
ok: true;
|
|
3
|
+
result: T;
|
|
4
|
+
};
|
|
5
|
+
export type ResultError<E> = {
|
|
6
|
+
ok: false;
|
|
7
|
+
error: E;
|
|
8
|
+
};
|
|
9
|
+
export type Result<T, E> = ResultOk<T> | ResultError<E>;
|
|
10
|
+
export declare const createResultOk: <T>(data: T) => ResultOk<T>;
|
|
11
|
+
export declare const createResultError: <E = unknown>(error: E) => ResultError<E>;
|
|
12
|
+
export declare function ensureError(error: unknown): Error;
|
|
13
|
+
/**
|
|
14
|
+
* Executes the given function and converts it to a Result object.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const result = toResult(() => fs.writeFileSync('file.txt', 'Hello, World!'));
|
|
18
|
+
*/
|
|
19
|
+
export declare const toResult: <T, E extends Error = Error>(fn: () => T) => Result<T, E>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toResult = exports.createResultError = exports.createResultOk = void 0;
|
|
4
|
+
exports.ensureError = ensureError;
|
|
5
|
+
const createResultOk = (data) => ({
|
|
6
|
+
ok: true,
|
|
7
|
+
result: data,
|
|
8
|
+
});
|
|
9
|
+
exports.createResultOk = createResultOk;
|
|
10
|
+
const createResultError = (error) => ({
|
|
11
|
+
ok: false,
|
|
12
|
+
error,
|
|
13
|
+
});
|
|
14
|
+
exports.createResultError = createResultError;
|
|
15
|
+
function ensureError(error) {
|
|
16
|
+
return error instanceof Error
|
|
17
|
+
? error
|
|
18
|
+
: new Error('Error that was not an instance of Error was thrown, cause: ' + error);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Executes the given function and converts it to a Result object.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* const result = toResult(() => fs.writeFileSync('file.txt', 'Hello, World!'));
|
|
25
|
+
*/
|
|
26
|
+
const toResult = (fn) => {
|
|
27
|
+
try {
|
|
28
|
+
return (0, exports.createResultOk)(fn());
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
const error = ensureError(e);
|
|
32
|
+
return (0, exports.createResultError)(error);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.toResult = toResult;
|
|
36
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/lib/result.ts"],"names":[],"mappings":";;;AAcA,kCAIC;AAdM,MAAM,cAAc,GAAG,CAAI,IAAO,EAAe,EAAE,CAAC,CAAC;IAC3D,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,IAAI;CACZ,CAAC,CAAC;AAHU,QAAA,cAAc,kBAGxB;AAEI,MAAM,iBAAiB,GAAG,CAAc,KAAQ,EAAkB,EAAE,CAAC,CAAC;IAC5E,EAAE,EAAE,KAAK;IACT,KAAK;CACL,CAAC,CAAC;AAHU,QAAA,iBAAiB,qBAG3B;AAEH,SAAgB,WAAW,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,KAAK;QAC5B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,IAAI,KAAK,CAAC,6DAA6D,GAAG,KAAK,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACI,MAAM,QAAQ,GAAG,CAA6B,EAAW,EAAgB,EAAE;IACjF,IAAI,CAAC;QACJ,OAAO,IAAA,sBAAc,EAAI,EAAE,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAA,yBAAiB,EAAI,KAAU,CAAC,CAAC;IACzC,CAAC;AACF,CAAC,CAAC;AAPW,QAAA,QAAQ,YAOnB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { IDisplayOptions, INodeProperties } from './Interfaces';
|
|
2
|
+
export declare function updateDisplayOptions(displayOptions: IDisplayOptions, properties: INodeProperties[]): {
|
|
3
|
+
displayOptions: IDisplayOptions;
|
|
4
|
+
displayName: string;
|
|
5
|
+
name: string;
|
|
6
|
+
type: import("./Interfaces").NodePropertyTypes;
|
|
7
|
+
typeOptions?: import("./Interfaces").INodePropertyTypeOptions;
|
|
8
|
+
default: import("./Interfaces").NodeParameterValue | import("./Interfaces").INodeParameters | import("./Interfaces").INodeParameters[] | import("./Interfaces").NodeParameterValue[];
|
|
9
|
+
description?: string;
|
|
10
|
+
hint?: string;
|
|
11
|
+
options?: Array<import("./Interfaces").INodePropertyOptions | INodeProperties | import("./Interfaces").INodePropertyCollection>;
|
|
12
|
+
placeholder?: string;
|
|
13
|
+
isNodeSetting?: boolean;
|
|
14
|
+
noDataExpression?: boolean;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
routing?: import("./Interfaces").INodePropertyRouting;
|
|
17
|
+
modes?: import("./Interfaces").INodePropertyMode[];
|
|
18
|
+
validateType?: import("./Interfaces").FieldType;
|
|
19
|
+
ignoreValidationDuringExecution?: boolean;
|
|
20
|
+
disabledOptions?: {
|
|
21
|
+
show?: {
|
|
22
|
+
[key: string]: Array<import("./Interfaces").NodeParameterValue | import("./Interfaces").DisplayCondition> | import("./Interfaces").NodeParameterValue[] | undefined;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
}[];
|
|
26
|
+
export declare function randomInt(max: number): number;
|
|
27
|
+
export declare function randomInt(min: number, max: number): number;
|
|
28
|
+
type MutuallyExclusive<T, U> = (T & {
|
|
29
|
+
[k in Exclude<keyof U, keyof T>]?: never;
|
|
30
|
+
}) | (U & {
|
|
31
|
+
[k in Exclude<keyof T, keyof U>]?: never;
|
|
32
|
+
});
|
|
33
|
+
type JSONParseOptions<T> = {
|
|
34
|
+
acceptJSObject?: boolean;
|
|
35
|
+
} & MutuallyExclusive<{
|
|
36
|
+
errorMessage?: string;
|
|
37
|
+
}, {
|
|
38
|
+
fallbackValue?: T;
|
|
39
|
+
}>;
|
|
40
|
+
export declare const jsonParse: <T>(jsonString: string, options?: JSONParseOptions<T>) => T;
|
|
41
|
+
type JSONStringifyOptions = {
|
|
42
|
+
replaceCircularRefs?: boolean;
|
|
43
|
+
};
|
|
44
|
+
export declare const replaceCircularReferences: <T>(value: T, knownObjects?: WeakSet<object>) => T;
|
|
45
|
+
export declare const jsonStringify: (obj: unknown, options?: JSONStringifyOptions) => string;
|
|
46
|
+
/**
|
|
47
|
+
* Checks if a value is an object with a specific key and provides a type guard for the key.
|
|
48
|
+
*/
|
|
49
|
+
export declare function hasKey<T extends PropertyKey>(value: unknown, key: T): value is Record<T, unknown>;
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsonStringify = exports.replaceCircularReferences = exports.jsonParse = void 0;
|
|
4
|
+
exports.updateDisplayOptions = updateDisplayOptions;
|
|
5
|
+
exports.randomInt = randomInt;
|
|
6
|
+
exports.hasKey = hasKey;
|
|
7
|
+
const esprima_next_1 = require("esprima-next");
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
function updateDisplayOptions(displayOptions, properties) {
|
|
10
|
+
return properties.map((nodeProperty) => {
|
|
11
|
+
return {
|
|
12
|
+
...nodeProperty,
|
|
13
|
+
displayOptions: (0, lodash_1.merge)({}, nodeProperty.displayOptions, displayOptions),
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generates a random integer within a specified range.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} min - The lower bound of the range. If `max` is not provided, this value is used as the upper bound and the lower bound is set to 0.
|
|
21
|
+
* @param {number} [max] - The upper bound of the range, not inclusive.
|
|
22
|
+
* @returns {number} A random integer within the specified range.
|
|
23
|
+
*/
|
|
24
|
+
function randomInt(min, max) {
|
|
25
|
+
if (max === undefined) {
|
|
26
|
+
max = min;
|
|
27
|
+
min = 0;
|
|
28
|
+
}
|
|
29
|
+
return min + (crypto.getRandomValues(new Uint32Array(1))[0] % (max - min));
|
|
30
|
+
}
|
|
31
|
+
const jsonParse = (jsonString, options) => {
|
|
32
|
+
try {
|
|
33
|
+
return JSON.parse(jsonString);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (options?.acceptJSObject) {
|
|
37
|
+
try {
|
|
38
|
+
const jsonStringCleaned = parseJSObject(jsonString);
|
|
39
|
+
return jsonStringCleaned;
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
// Ignore this error and return the original error or the fallback value
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (options?.fallbackValue !== undefined) {
|
|
46
|
+
if (options.fallbackValue instanceof Function) {
|
|
47
|
+
return options.fallbackValue();
|
|
48
|
+
}
|
|
49
|
+
return options.fallbackValue;
|
|
50
|
+
}
|
|
51
|
+
else if (options?.errorMessage) {
|
|
52
|
+
// TODO REFACTOR: Use ApplicationError from offical @fsai-flow/workflow repo
|
|
53
|
+
throw new Error(options.errorMessage);
|
|
54
|
+
}
|
|
55
|
+
throw error;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.jsonParse = jsonParse;
|
|
59
|
+
const replaceCircularReferences = (value, knownObjects = new WeakSet()) => {
|
|
60
|
+
if (typeof value !== 'object' || value === null || value instanceof RegExp)
|
|
61
|
+
return value;
|
|
62
|
+
if ('toJSON' in value && typeof value.toJSON === 'function')
|
|
63
|
+
return value.toJSON();
|
|
64
|
+
if (knownObjects.has(value))
|
|
65
|
+
return '[Circular Reference]';
|
|
66
|
+
knownObjects.add(value);
|
|
67
|
+
const copy = (Array.isArray(value) ? [] : {});
|
|
68
|
+
for (const key in value) {
|
|
69
|
+
copy[key] = (0, exports.replaceCircularReferences)(value[key], knownObjects);
|
|
70
|
+
}
|
|
71
|
+
knownObjects.delete(value);
|
|
72
|
+
return copy;
|
|
73
|
+
};
|
|
74
|
+
exports.replaceCircularReferences = replaceCircularReferences;
|
|
75
|
+
const jsonStringify = (obj, options = {}) => {
|
|
76
|
+
return JSON.stringify(options?.replaceCircularRefs ? (0, exports.replaceCircularReferences)(obj) : obj);
|
|
77
|
+
};
|
|
78
|
+
exports.jsonStringify = jsonStringify;
|
|
79
|
+
function syntaxNodeToValue(expression) {
|
|
80
|
+
switch (expression?.type) {
|
|
81
|
+
case esprima_next_1.Syntax.ObjectExpression:
|
|
82
|
+
return Object.fromEntries(expression.properties
|
|
83
|
+
.filter((prop) => prop.type === esprima_next_1.Syntax.Property)
|
|
84
|
+
.map(({ key, value }) => [syntaxNodeToValue(key), syntaxNodeToValue(value)]));
|
|
85
|
+
case esprima_next_1.Syntax.Identifier:
|
|
86
|
+
return expression.name;
|
|
87
|
+
case esprima_next_1.Syntax.Literal:
|
|
88
|
+
return expression.value;
|
|
89
|
+
case esprima_next_1.Syntax.ArrayExpression:
|
|
90
|
+
return expression.elements.map((exp) => syntaxNodeToValue(exp));
|
|
91
|
+
default:
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Parse any JavaScript ObjectExpression, including:
|
|
97
|
+
* - single quoted keys
|
|
98
|
+
* - unquoted keys
|
|
99
|
+
*/
|
|
100
|
+
function parseJSObject(objectAsString) {
|
|
101
|
+
const jsExpression = (0, esprima_next_1.parse)(`(${objectAsString})`).body.find((node) => node.type === esprima_next_1.Syntax.ExpressionStatement && node.expression.type === esprima_next_1.Syntax.ObjectExpression);
|
|
102
|
+
return syntaxNodeToValue(jsExpression?.expression);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Checks if a value is an object with a specific key and provides a type guard for the key.
|
|
106
|
+
*/
|
|
107
|
+
function hasKey(value, key) {
|
|
108
|
+
return value !== null && typeof value === 'object' && value.hasOwnProperty(key);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const baseConfig = require('../../eslint.config.js');
|
|
2
|
+
|
|
3
|
+
module.exports = [
|
|
4
|
+
...baseConfig,
|
|
5
|
+
{
|
|
6
|
+
files: ['**/*.json'],
|
|
7
|
+
rules: {
|
|
8
|
+
'@nx/dependency-checks': [
|
|
9
|
+
'error',
|
|
10
|
+
{
|
|
11
|
+
ignoredFiles: ['{projectRoot}/eslint.config.{js,cjs,mjs}'],
|
|
12
|
+
},
|
|
13
|
+
],
|
|
14
|
+
},
|
|
15
|
+
languageOptions: {
|
|
16
|
+
parser: require('jsonc-eslint-parser'),
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
];
|
package/jest.config.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
displayName: 'workflow',
|
|
3
|
+
preset: '../../jest.preset.js',
|
|
4
|
+
testEnvironment: 'node',
|
|
5
|
+
transform: {
|
|
6
|
+
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
|
|
7
|
+
},
|
|
8
|
+
moduleFileExtensions: ['ts', 'js', 'html'],
|
|
9
|
+
coverageDirectory: '../../coverage/libs/workflow',
|
|
10
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fsai-flow/workflow",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"license": "PolyForm Noncommercial License 1.0.0",
|
|
5
|
+
"dependencies": {
|
|
6
|
+
"form-data": "^4.0.1",
|
|
7
|
+
"jmespath": "^0.16.0",
|
|
8
|
+
"esprima-next": "5.8.4",
|
|
9
|
+
"lodash.get": "^4.4.2",
|
|
10
|
+
"lodash.isequal": "^4.5.0",
|
|
11
|
+
"lodash.merge": "^4.6.2",
|
|
12
|
+
"luxon": "^3.5.0",
|
|
13
|
+
"riot-tmpl": "^3.0.8",
|
|
14
|
+
"tslib": "^2.3.0",
|
|
15
|
+
"@sentry/node": "^9.15.0",
|
|
16
|
+
"callsites": "^3.1.0",
|
|
17
|
+
"xml2js": "^0.6.2"
|
|
18
|
+
},
|
|
19
|
+
"scripts": {
|
|
20
|
+
"release": "npm build && npm publish --access public"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/express": "^5.0.0",
|
|
24
|
+
"@types/jmespath": "^0.15.2",
|
|
25
|
+
"@types/lodash": "^4.17.13",
|
|
26
|
+
"@types/lodash.get": "^4.4.9",
|
|
27
|
+
"@types/lodash.isequal": "^4.5.8",
|
|
28
|
+
"@types/lodash.merge": "^4.6.9",
|
|
29
|
+
"@types/luxon": "^3.4.2",
|
|
30
|
+
"@types/xml2js": "^0.4.14",
|
|
31
|
+
"@typescript-eslint/eslint-plugin": "^8.18.0",
|
|
32
|
+
"@typescript-eslint/parser": "^8.18.0",
|
|
33
|
+
"eslint": "^9.15.0",
|
|
34
|
+
"eslint-friendly-formatter": "^4.0.1",
|
|
35
|
+
"jsonc-eslint-parser": "^2.4.0"
|
|
36
|
+
},
|
|
37
|
+
"type": "commonjs",
|
|
38
|
+
"main": "./dist/src/index.js",
|
|
39
|
+
"typings": "./dist/src/index.d.ts"
|
|
40
|
+
}
|
package/project.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "workflow",
|
|
3
|
+
"$schema": "../../node_modules/nx/schemas/project-schema.json",
|
|
4
|
+
"sourceRoot": "libs/workflow/src",
|
|
5
|
+
"projectType": "library",
|
|
6
|
+
"tags": [],
|
|
7
|
+
"targets": {
|
|
8
|
+
"build": {
|
|
9
|
+
"executor": "@nx/js:tsc",
|
|
10
|
+
"outputs": ["{options.outputPath}"],
|
|
11
|
+
"options": {
|
|
12
|
+
"outputPath": "libs/workflow/dist",
|
|
13
|
+
"main": "libs/workflow/src/index.ts",
|
|
14
|
+
"tsConfig": "libs/workflow/tsconfig.lib.json",
|
|
15
|
+
"assets": ["libs/workflow/*.md"]
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import * as LoggerProxy from './lib/LoggerProxy';
|
|
2
|
+
import * as NodeHelpers from './lib/NodeHelpers';
|
|
3
|
+
import * as ObservableObject from './lib/ObservableObject';
|
|
4
|
+
|
|
5
|
+
export * from './lib/MetadataUtils';
|
|
6
|
+
|
|
7
|
+
export * from './lib/errors'
|
|
8
|
+
export * from './lib/DeferredPromise';
|
|
9
|
+
export * from './lib/Interfaces';
|
|
10
|
+
export * from './lib/Expression';
|
|
11
|
+
export * from './lib/NodeErrors';
|
|
12
|
+
export * from './lib/Constants';
|
|
13
|
+
export * from './lib/NodeHelpers';
|
|
14
|
+
export * as TelemetryHelpers from './lib/TelemetryHelpers';
|
|
15
|
+
export * from './lib/RoutingNode';
|
|
16
|
+
export * from './lib/Workflow';
|
|
17
|
+
export * from './lib/TypeValidation';
|
|
18
|
+
export * from './lib/WorkflowDataProxy';
|
|
19
|
+
export * from './lib/WorkflowErrors';
|
|
20
|
+
export * from './lib/WorkflowHooks';
|
|
21
|
+
export * from './lib/result';
|
|
22
|
+
export {
|
|
23
|
+
LoggerProxy,
|
|
24
|
+
NodeHelpers,
|
|
25
|
+
ObservableObject
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
updateDisplayOptions,
|
|
29
|
+
randomInt,
|
|
30
|
+
jsonParse,
|
|
31
|
+
jsonStringify,
|
|
32
|
+
replaceCircularReferences,
|
|
33
|
+
} from './lib/utils';
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { NodeConnectionType, NodeConnectionTypes } from "./Interfaces";
|
|
2
|
+
|
|
3
|
+
export const DIGITS = '0123456789';
|
|
4
|
+
export const UPPERCASE_LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
5
|
+
export const LOWERCASE_LETTERS = UPPERCASE_LETTERS.toLowerCase();
|
|
6
|
+
export const ALPHABET = [DIGITS, UPPERCASE_LETTERS, LOWERCASE_LETTERS].join('');
|
|
7
|
+
|
|
8
|
+
export const BINARY_ENCODING = 'base64';
|
|
9
|
+
export const WAIT_INDEFINITELY = new Date('3000-01-01T00:00:00.000Z');
|
|
10
|
+
|
|
11
|
+
export const LOG_LEVELS = ['silent', 'error', 'warn', 'info', 'debug'] as const;
|
|
12
|
+
|
|
13
|
+
export const CODE_LANGUAGES = ['javaScript', 'python'] as const;
|
|
14
|
+
export const CODE_EXECUTION_MODES = ['runOnceForAllItems', 'runOnceForEachItem'] as const;
|
|
15
|
+
|
|
16
|
+
// Arbitrary value to represent an empty credential value
|
|
17
|
+
export const CREDENTIAL_EMPTY_VALUE = '__n8n_EMPTY_VALUE_7b1af746-3729-4c60-9b9b-e08eb29e58da';
|
|
18
|
+
|
|
19
|
+
export const FORM_TRIGGER_PATH_IDENTIFIER = 'n8n-form';
|
|
20
|
+
|
|
21
|
+
export const UNKNOWN_ERROR_MESSAGE = 'There was an unknown issue while executing the node';
|
|
22
|
+
export const UNKNOWN_ERROR_DESCRIPTION =
|
|
23
|
+
'Double-check the node configuration and the service it connects to. Check the error details below and refer to the <a href="https://docs.n8n.io" target="_blank">n8n documentation</a> to troubleshoot the issue.';
|
|
24
|
+
export const UNKNOWN_ERROR_MESSAGE_CRED = 'UNKNOWN ERROR';
|
|
25
|
+
|
|
26
|
+
//n8n-nodes-base
|
|
27
|
+
export const STICKY_NODE_TYPE = 'n8n-nodes-base.stickyNote';
|
|
28
|
+
export const NO_OP_NODE_TYPE = 'n8n-nodes-base.noOp';
|
|
29
|
+
export const HTTP_REQUEST_NODE_TYPE = 'n8n-nodes-base.httpRequest';
|
|
30
|
+
export const WEBHOOK_NODE_TYPE = 'n8n-nodes-base.webhook';
|
|
31
|
+
export const MANUAL_TRIGGER_NODE_TYPE = 'n8n-nodes-base.manualTrigger';
|
|
32
|
+
export const ERROR_TRIGGER_NODE_TYPE = 'n8n-nodes-base.errorTrigger';
|
|
33
|
+
export const START_NODE_TYPE = 'n8n-nodes-base.start';
|
|
34
|
+
export const EXECUTE_WORKFLOW_NODE_TYPE = 'n8n-nodes-base.executeWorkflow';
|
|
35
|
+
export const EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE = 'n8n-nodes-base.executeWorkflowTrigger';
|
|
36
|
+
export const CODE_NODE_TYPE = 'n8n-nodes-base.code';
|
|
37
|
+
export const FUNCTION_NODE_TYPE = 'n8n-nodes-base.function';
|
|
38
|
+
export const FUNCTION_ITEM_NODE_TYPE = 'n8n-nodes-base.functionItem';
|
|
39
|
+
export const MERGE_NODE_TYPE = 'n8n-nodes-base.merge';
|
|
40
|
+
export const AI_TRANSFORM_NODE_TYPE = 'n8n-nodes-base.aiTransform';
|
|
41
|
+
export const FORM_NODE_TYPE = 'n8n-nodes-base.form';
|
|
42
|
+
export const FORM_TRIGGER_NODE_TYPE = 'n8n-nodes-base.formTrigger';
|
|
43
|
+
export const CHAT_TRIGGER_NODE_TYPE = '@n8n/n8n-nodes-langchain.chatTrigger';
|
|
44
|
+
export const WAIT_NODE_TYPE = 'n8n-nodes-base.wait';
|
|
45
|
+
|
|
46
|
+
export const ConnectionTypeDisplayNames: { [key in NodeConnectionType]: string } = {
|
|
47
|
+
[NodeConnectionTypes.Main]: 'Main',
|
|
48
|
+
[NodeConnectionTypes.AiAgent]: 'IA Agent',
|
|
49
|
+
[NodeConnectionTypes.AiChain]: 'Chain',
|
|
50
|
+
[NodeConnectionTypes.AiDocument]: 'Document',
|
|
51
|
+
[NodeConnectionTypes.AiEmbedding]: 'Embedding',
|
|
52
|
+
[NodeConnectionTypes.AiLanguageModel]: 'Model',
|
|
53
|
+
[NodeConnectionTypes.AiMemory]: 'Memory',
|
|
54
|
+
[NodeConnectionTypes.AiOutputParser]: 'Output Parser',
|
|
55
|
+
[NodeConnectionTypes.AiRetriever]: 'Retriever',
|
|
56
|
+
[NodeConnectionTypes.AiTextSplitter]: 'Text Splitter',
|
|
57
|
+
[NodeConnectionTypes.AiTool]: 'Tool',
|
|
58
|
+
[NodeConnectionTypes.AiVectorStore]: 'Vector Store',
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export const STARTING_NODE_TYPES = [
|
|
62
|
+
MANUAL_TRIGGER_NODE_TYPE,
|
|
63
|
+
EXECUTE_WORKFLOW_TRIGGER_NODE_TYPE,
|
|
64
|
+
ERROR_TRIGGER_NODE_TYPE,
|
|
65
|
+
START_NODE_TYPE,
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
export const SCRIPTING_NODE_TYPES = [
|
|
69
|
+
FUNCTION_NODE_TYPE,
|
|
70
|
+
FUNCTION_ITEM_NODE_TYPE,
|
|
71
|
+
CODE_NODE_TYPE,
|
|
72
|
+
AI_TRANSFORM_NODE_TYPE,
|
|
73
|
+
];
|
|
74
|
+
|
|
75
|
+
export const ADD_FORM_NOTICE = 'addFormPage';
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Nodes whose parameter values may refer to other nodes without expressions.
|
|
79
|
+
* Their content may need to be updated when the referenced node is renamed.
|
|
80
|
+
*/
|
|
81
|
+
export const NODES_WITH_RENAMABLE_CONTENT = new Set([
|
|
82
|
+
CODE_NODE_TYPE,
|
|
83
|
+
FUNCTION_NODE_TYPE,
|
|
84
|
+
FUNCTION_ITEM_NODE_TYPE,
|
|
85
|
+
AI_TRANSFORM_NODE_TYPE,
|
|
86
|
+
]);
|
|
87
|
+
|
|
88
|
+
//@n8n/n8n-nodes-langchain
|
|
89
|
+
export const MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.manualChatTrigger';
|
|
90
|
+
export const AGENT_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.agent';
|
|
91
|
+
export const CHAIN_LLM_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.chainLlm';
|
|
92
|
+
export const OPENAI_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.openAi';
|
|
93
|
+
export const CHAIN_SUMMARIZATION_LANGCHAIN_NODE_TYPE =
|
|
94
|
+
'@n8n/n8n-nodes-langchain.chainSummarization';
|
|
95
|
+
export const CODE_TOOL_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.toolCode';
|
|
96
|
+
export const WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.toolWorkflow';
|
|
97
|
+
export const HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE = '@n8n/n8n-nodes-langchain.toolHttpRequest';
|
|
98
|
+
|
|
99
|
+
export const LANGCHAIN_CUSTOM_TOOLS = [
|
|
100
|
+
CODE_TOOL_LANGCHAIN_NODE_TYPE,
|
|
101
|
+
WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE,
|
|
102
|
+
HTTP_REQUEST_TOOL_LANGCHAIN_NODE_TYPE,
|
|
103
|
+
];
|
|
104
|
+
|
|
105
|
+
export const SEND_AND_WAIT_OPERATION = 'sendAndWait';
|
|
106
|
+
export const AI_TRANSFORM_CODE_GENERATED_FOR_PROMPT = 'codeGeneratedForPrompt';
|
|
107
|
+
export const AI_TRANSFORM_JS_CODE = 'jsCode';
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Key for an item standing in for a manual execution data item too large to be
|
|
111
|
+
* sent live via pubsub. See {@link TRIMMED_TASK_DATA_CONNECTIONS} in constants
|
|
112
|
+
* in `cli` package.
|
|
113
|
+
*/
|
|
114
|
+
export const TRIMMED_TASK_DATA_CONNECTIONS_KEY = '__isTrimmedManualExecutionDataItem';
|
|
115
|
+
|
|
116
|
+
export const OPEN_AI_API_CREDENTIAL_TYPE = 'openAiApi';
|
|
117
|
+
export const FREE_AI_CREDITS_ERROR_TYPE = 'free_ai_credits_request_error';
|
|
118
|
+
export const FREE_AI_CREDITS_USED_ALL_CREDITS_ERROR_CODE = 400;
|
|
119
|
+
|
|
120
|
+
export const FROM_AI_AUTO_GENERATED_MARKER = '/*n8n-auto-generated-fromAI-override*/';
|
|
121
|
+
|
|
122
|
+
export const PROJECT_ROOT = '0';
|
|
123
|
+
|
|
124
|
+
export const WAITING_FORMS_EXECUTION_STATUS = 'n8n-execution-status';
|