@forestadmin/workflow-executor 1.0.0 → 1.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.
@@ -0,0 +1,12 @@
1
+ export declare const MINIMUM_NODE_VERSION: string;
2
+ export declare function isSupportedNodeVersion(currentVersion: string, minimumVersion?: string): boolean;
3
+ export declare function unsupportedNodeVersionMessage(currentVersion: string, minimumVersion?: string): string;
4
+ interface CheckNodeVersionDeps {
5
+ currentVersion?: string;
6
+ minimumVersion?: string;
7
+ printError?: (message: string) => void;
8
+ exit?: (code: number) => void;
9
+ }
10
+ export default function checkNodeVersion(deps?: CheckNodeVersionDeps): void;
11
+ export {};
12
+ //# sourceMappingURL=check-node-version.d.ts.map
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MINIMUM_NODE_VERSION = void 0;
4
+ exports.isSupportedNodeVersion = isSupportedNodeVersion;
5
+ exports.unsupportedNodeVersionMessage = unsupportedNodeVersionMessage;
6
+ exports.default = checkNodeVersion;
7
+ function parseVersion(version) {
8
+ const [major = 0, minor = 0, patch = 0] = (version.match(/\d+/g) ?? []).map(Number);
9
+ return [major, minor, patch];
10
+ }
11
+ // Single source of truth for the floor: read it from package.json `engines.node` so the runtime
12
+ // guard can't drift from the version npm enforces at install time.
13
+ // eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require, global-require
14
+ const { engines } = require('../package.json');
15
+ exports.MINIMUM_NODE_VERSION = (engines?.node ?? '').replace(/^\D*/, '');
16
+ function isSupportedNodeVersion(currentVersion, minimumVersion = exports.MINIMUM_NODE_VERSION) {
17
+ const [curMajor, curMinor, curPatch] = parseVersion(currentVersion);
18
+ const [minMajor, minMinor, minPatch] = parseVersion(minimumVersion);
19
+ if (curMajor !== minMajor)
20
+ return curMajor > minMajor;
21
+ if (curMinor !== minMinor)
22
+ return curMinor > minMinor;
23
+ return curPatch >= minPatch;
24
+ }
25
+ function unsupportedNodeVersionMessage(currentVersion, minimumVersion = exports.MINIMUM_NODE_VERSION) {
26
+ return (`The Forest workflow executor requires Node.js ${minimumVersion} or higher, ` +
27
+ `but the current version is ${currentVersion}. Please upgrade Node.js to continue.`);
28
+ }
29
+ function checkNodeVersion(deps = {}) {
30
+ const { currentVersion = process.version, minimumVersion = exports.MINIMUM_NODE_VERSION, printError = (message) => {
31
+ process.stderr.write(`${message}\n`);
32
+ }, exit = (code) => process.exit(code), } = deps;
33
+ if (isSupportedNodeVersion(currentVersion, minimumVersion))
34
+ return;
35
+ printError(unsupportedNodeVersionMessage(currentVersion, minimumVersion));
36
+ exit(1);
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2stbm9kZS12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NoZWNrLW5vZGUtdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFhQSx3REFXQztBQUVELHNFQVFDO0FBU0QsbUNBY0M7QUF6REQsU0FBUyxZQUFZLENBQUMsT0FBZTtJQUNuQyxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBGLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRCxnR0FBZ0c7QUFDaEcsbUVBQW1FO0FBQ25FLHlHQUF5RztBQUN6RyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFvQyxDQUFDO0FBRXJFLFFBQUEsb0JBQW9CLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFFOUUsU0FBZ0Isc0JBQXNCLENBQ3BDLGNBQXNCLEVBQ3RCLGlCQUF5Qiw0QkFBb0I7SUFFN0MsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxHQUFHLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVwRSxJQUFJLFFBQVEsS0FBSyxRQUFRO1FBQUUsT0FBTyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3RELElBQUksUUFBUSxLQUFLLFFBQVE7UUFBRSxPQUFPLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFFdEQsT0FBTyxRQUFRLElBQUksUUFBUSxDQUFDO0FBQzlCLENBQUM7QUFFRCxTQUFnQiw2QkFBNkIsQ0FDM0MsY0FBc0IsRUFDdEIsaUJBQXlCLDRCQUFvQjtJQUU3QyxPQUFPLENBQ0wsaURBQWlELGNBQWMsY0FBYztRQUM3RSw4QkFBOEIsY0FBYyx1Q0FBdUMsQ0FDcEYsQ0FBQztBQUNKLENBQUM7QUFTRCxTQUF3QixnQkFBZ0IsQ0FBQyxPQUE2QixFQUFFO0lBQ3RFLE1BQU0sRUFDSixjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFDaEMsY0FBYyxHQUFHLDRCQUFvQixFQUNyQyxVQUFVLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRTtRQUMvQixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxFQUNELElBQUksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FDNUMsR0FBRyxJQUFJLENBQUM7SUFFVCxJQUFJLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUM7UUFBRSxPQUFPO0lBRW5FLFVBQVUsQ0FBQyw2QkFBNkIsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMxRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDVixDQUFDIn0=
package/dist/cli.js CHANGED
@@ -1,17 +1,63 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  /* eslint-disable no-console */
4
+ // CLI entrypoint with side effects, not unit-testable; the guard and run wiring it composes are
5
+ // unit-tested in check-node-version and cli-core.
6
+ /* istanbul ignore file */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ var __importDefault = (this && this.__importDefault) || function (mod) {
41
+ return (mod && mod.__esModule) ? mod : { "default": mod };
42
+ };
4
43
  Object.defineProperty(exports, "__esModule", { value: true });
5
- const build_workflow_executor_1 = require("./build-workflow-executor");
6
- const cli_core_1 = require("./cli-core");
7
- const errors_1 = require("./errors");
44
+ const check_node_version_1 = __importDefault(require("./check-node-version"));
45
+ // Run the guard before the rest of the CLI loads. The heavy modules are imported dynamically so
46
+ // they are evaluated only after the guard: a static import would load koa / @langchain/openai
47
+ // first and crash cryptically on an old runtime, before the guard could report.
48
+ (0, check_node_version_1.default)();
8
49
  if (require.main === module) {
9
- (0, cli_core_1.runCli)(process.argv.slice(2), process.env, {
10
- buildDatabase: build_workflow_executor_1.buildDatabaseExecutor,
11
- buildInMemory: build_workflow_executor_1.buildInMemoryExecutor,
12
- }).catch((err) => {
13
- console.error(`Error: ${(0, errors_1.extractErrorMessage)(err)}`);
14
- process.exit(1);
15
- });
50
+ void (async () => {
51
+ const { buildDatabaseExecutor, buildInMemoryExecutor } = await Promise.resolve().then(() => __importStar(require('./build-workflow-executor')));
52
+ const { runCli } = await Promise.resolve().then(() => __importStar(require('./cli-core')));
53
+ const { extractErrorMessage } = await Promise.resolve().then(() => __importStar(require('./errors')));
54
+ runCli(process.argv.slice(2), process.env, {
55
+ buildDatabase: buildDatabaseExecutor,
56
+ buildInMemory: buildInMemoryExecutor,
57
+ }).catch((err) => {
58
+ console.error(`Error: ${extractErrorMessage(err)}`);
59
+ process.exit(1);
60
+ });
61
+ })();
16
62
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtCQUErQjs7QUFFL0IsdUVBQXlGO0FBQ3pGLHlDQUFvQztBQUNwQyxxQ0FBK0M7QUFFL0MsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO0lBQzVCLElBQUEsaUJBQU0sRUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ3pDLGFBQWEsRUFBRSwrQ0FBcUI7UUFDcEMsYUFBYSxFQUFFLCtDQUFxQjtLQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBWSxFQUFFLEVBQUU7UUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUEsNEJBQW1CLEVBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLCtCQUErQjtBQUMvQixnR0FBZ0c7QUFDaEcsa0RBQWtEO0FBQ2xELDBCQUEwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFMUIsOEVBQW9EO0FBRXBELGdHQUFnRztBQUNoRyw4RkFBOEY7QUFDOUYsZ0ZBQWdGO0FBQ2hGLElBQUEsNEJBQWdCLEdBQUUsQ0FBQztBQUVuQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7SUFDNUIsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2YsTUFBTSxFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLEdBQUcsd0RBQ3ZELDJCQUEyQixHQUM1QixDQUFDO1FBQ0YsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLHdEQUFhLFlBQVksR0FBQyxDQUFDO1FBQzlDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxHQUFHLHdEQUFhLFVBQVUsR0FBQyxDQUFDO1FBRXpELE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3pDLGFBQWEsRUFBRSxxQkFBcUI7WUFDcEMsYUFBYSxFQUFFLHFCQUFxQjtTQUNyQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBWSxFQUFFLEVBQUU7WUFDeEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNQLENBQUMifQ==
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "@forestadmin/workflow-executor",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "main": "dist/index.js",
5
5
  "bin": {
6
6
  "forest-workflow-executor": "dist/cli.js"
7
7
  },
8
8
  "license": "GPL-3.0",
9
+ "engines": {
10
+ "node": ">=22.12.0"
11
+ },
9
12
  "publishConfig": {
10
13
  "access": "public"
11
14
  },
@@ -26,9 +29,9 @@
26
29
  "test": "jest"
27
30
  },
28
31
  "dependencies": {
29
- "@forestadmin/agent-client": "1.5.10",
30
- "@forestadmin/ai-proxy": "1.10.1",
31
- "@forestadmin/forestadmin-client": "1.39.9",
32
+ "@forestadmin/agent-client": "1.6.1",
33
+ "@forestadmin/ai-proxy": "1.11.1",
34
+ "@forestadmin/forestadmin-client": "1.40.1",
32
35
  "@koa/bodyparser": "^6.1.0",
33
36
  "@koa/router": "^13.1.0",
34
37
  "jsonwebtoken": "^9.0.3",