@forestadmin/workflow-executor 1.1.5 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/console-logger.d.ts +2 -6
- package/dist/adapters/console-logger.js +21 -12
- package/dist/adapters/forest-server-workflow-port.d.ts +3 -2
- package/dist/adapters/forest-server-workflow-port.js +4 -4
- package/dist/adapters/forestadmin-client-activity-log-port.js +4 -4
- package/dist/adapters/pretty-logger.d.ts +2 -8
- package/dist/adapters/pretty-logger.js +35 -28
- package/dist/adapters/with-retry.js +2 -2
- package/dist/build-workflow-executor.d.ts +2 -1
- package/dist/build-workflow-executor.js +8 -8
- package/dist/cli-core.d.ts +2 -2
- package/dist/cli-core.js +22 -9
- package/dist/defaults.d.ts +2 -0
- package/dist/defaults.js +3 -2
- package/dist/errors.d.ts +12 -7
- package/dist/errors.js +30 -13
- package/dist/executors/base-step-executor.js +8 -8
- package/dist/executors/load-related-record-step-executor.js +2 -2
- package/dist/executors/mcp-step-executor.js +3 -3
- package/dist/executors/step-executor-factory.js +2 -2
- package/dist/http/bearer-claims.d.ts +6 -0
- package/dist/http/bearer-claims.js +11 -0
- package/dist/http/executor-http-server.js +58 -68
- package/dist/http/http-errors.d.ts +39 -0
- package/dist/http/http-errors.js +82 -0
- package/dist/ports/logger-port.d.ts +2 -5
- package/dist/ports/workflow-port.d.ts +4 -2
- package/dist/remote-tool-fetcher.js +3 -3
- package/dist/runner.js +23 -23
- package/dist/stores/database-store.js +3 -3
- package/package.json +1 -1
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import type { Logger } from '../ports/logger-port';
|
|
2
|
-
export default
|
|
3
|
-
error(message: string, context: Record<string, unknown>): void;
|
|
4
|
-
warn(message: string, context: Record<string, unknown>): void;
|
|
5
|
-
info(message: string, context: Record<string, unknown>): void;
|
|
6
|
-
}
|
|
1
|
+
import type { Logger, LoggerLevel } from '../ports/logger-port';
|
|
2
|
+
export default function createConsoleLogger(minLevel?: LoggerLevel): Logger;
|
|
7
3
|
//# sourceMappingURL=console-logger.d.ts.map
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
exports.default = createConsoleLogger;
|
|
4
|
+
const ORDER = ['Debug', 'Info', 'Warn', 'Error'];
|
|
5
|
+
function createConsoleLogger(minLevel = 'Info') {
|
|
6
|
+
const minIndex = ORDER.indexOf(minLevel);
|
|
7
|
+
return (level, message, context) => {
|
|
8
|
+
if (ORDER.indexOf(level) < minIndex)
|
|
9
|
+
return;
|
|
10
|
+
const payload = JSON.stringify({
|
|
11
|
+
level,
|
|
12
|
+
message,
|
|
13
|
+
timestamp: new Date().toISOString(),
|
|
14
|
+
...(context ?? {}),
|
|
15
|
+
});
|
|
16
|
+
if (level === 'Error')
|
|
17
|
+
console.error(payload);
|
|
18
|
+
else if (level === 'Warn')
|
|
19
|
+
console.warn(payload);
|
|
20
|
+
else
|
|
21
|
+
console.info(payload);
|
|
22
|
+
};
|
|
13
23
|
}
|
|
14
|
-
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvY29uc29sZS1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFxQixhQUFhO0lBQ2hDLEtBQUssQ0FBQyxPQUFlLEVBQUUsT0FBZ0M7UUFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBZSxFQUFFLE9BQWdDO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQWUsRUFBRSxPQUFnQztRQUNwRCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztDQUNGO0FBWkQsZ0NBWUMifQ==
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc29sZS1sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvY29uc29sZS1sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxzQ0FpQkM7QUFuQkQsTUFBTSxLQUFLLEdBQWtCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFFaEUsU0FBd0IsbUJBQW1CLENBQUMsV0FBd0IsTUFBTTtJQUN4RSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXpDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxRQUFRO1lBQUUsT0FBTztRQUU1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQzdCLEtBQUs7WUFDTCxPQUFPO1lBQ1AsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1lBQ25DLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO1NBQ25CLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxLQUFLLE9BQU87WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3pDLElBQUksS0FBSyxLQUFLLE1BQU07WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztZQUM1QyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { Logger } from '../ports/logger-port';
|
|
2
2
|
import type { AvailableRunDispatch, AvailableRunsBatch, WorkflowPort } from '../ports/workflow-port';
|
|
3
|
-
import type { StepUser } from '../types/execution-context';
|
|
4
3
|
import type { CollectionSchema } from '../types/validated/collection';
|
|
5
4
|
import type { StepOutcome } from '../types/validated/step-outcome';
|
|
6
5
|
import type { ToolConfig } from '@forestadmin/ai-proxy';
|
|
@@ -19,7 +18,9 @@ export default class ForestServerWorkflowPort implements WorkflowPort {
|
|
|
19
18
|
updateStepExecution(runId: string, stepOutcome: StepOutcome): Promise<AvailableRunDispatch | null>;
|
|
20
19
|
getCollectionSchema(collectionName: string, runId: string): Promise<CollectionSchema>;
|
|
21
20
|
getMcpServerConfigs(): Promise<Record<string, ToolConfig>>;
|
|
22
|
-
hasRunAccess(runId: string, user:
|
|
21
|
+
hasRunAccess(runId: string, user: {
|
|
22
|
+
id: number;
|
|
23
|
+
}): Promise<boolean>;
|
|
23
24
|
private callPort;
|
|
24
25
|
}
|
|
25
26
|
//# sourceMappingURL=forest-server-workflow-port.d.ts.map
|
|
@@ -27,7 +27,7 @@ function stripReferenceKey(name) {
|
|
|
27
27
|
class ForestServerWorkflowPort {
|
|
28
28
|
constructor(params) {
|
|
29
29
|
this.options = { envSecret: params.envSecret, forestServerUrl: params.forestServerUrl };
|
|
30
|
-
this.logger = params.logger ??
|
|
30
|
+
this.logger = params.logger ?? (0, console_logger_1.default)();
|
|
31
31
|
}
|
|
32
32
|
async getAvailableRuns() {
|
|
33
33
|
const runs = await this.callPort('getAvailableRuns', () => forestadmin_client_1.ServerUtils.query(this.options, 'get', ROUTES.pendingRuns));
|
|
@@ -44,7 +44,7 @@ class ForestServerWorkflowPort {
|
|
|
44
44
|
malformed.push(this.toMalformedInfo(run, error));
|
|
45
45
|
}
|
|
46
46
|
else {
|
|
47
|
-
this.logger
|
|
47
|
+
this.logger('Error', 'Failed to hydrate pending run — unexpected error', {
|
|
48
48
|
runId: run.id,
|
|
49
49
|
error: (0, errors_1.extractErrorMessage)(error),
|
|
50
50
|
});
|
|
@@ -107,7 +107,7 @@ class ForestServerWorkflowPort {
|
|
|
107
107
|
catch (error) {
|
|
108
108
|
// The outcome was recorded server-side; only the chain parse failed. Fall back to the
|
|
109
109
|
// next poll cycle — don't let a malformed chain response mask the successful update.
|
|
110
|
-
this.logger
|
|
110
|
+
this.logger('Error', 'Failed to parse chained next step from /update-step response', {
|
|
111
111
|
runId: String(run.id),
|
|
112
112
|
error: (0, errors_1.extractErrorMessage)(error),
|
|
113
113
|
});
|
|
@@ -160,4 +160,4 @@ class ForestServerWorkflowPort {
|
|
|
160
160
|
}
|
|
161
161
|
}
|
|
162
162
|
exports.default = ForestServerWorkflowPort;
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LXNlcnZlci13b3JrZmxvdy1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXJzL2ZvcmVzdC1zZXJ2ZXItd29ya2Zsb3ctcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLHdFQUE4RDtBQUM5RCw2QkFBd0I7QUFFeEIsc0VBQW1EO0FBQ25ELGtHQUFzRTtBQUN0RSw4R0FBdUU7QUFDdkUsOERBQXFDO0FBQ3JDLHNDQU9tQjtBQUNuQiw4REFBdUU7QUFFdkUsTUFBTSxNQUFNLEdBQUc7SUFDYixXQUFXLEVBQUUsd0NBQXdDO0lBQ3JELFlBQVksRUFBRSxDQUFDLEtBQWEsRUFBRSxFQUFFLENBQzlCLDRDQUE0QyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN6RSxVQUFVLEVBQUUsd0NBQXdDO0lBQ3BELGdCQUFnQixFQUFFLENBQUMsY0FBc0IsRUFBRSxLQUFhLEVBQUUsRUFBRSxDQUMxRCxnREFBZ0Qsa0JBQWtCLENBQ2hFLGNBQWMsQ0FDZixVQUFVLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3hDLFdBQVcsRUFBRSxDQUFDLEtBQWEsRUFBRSxNQUFjLEVBQUUsRUFBRSxDQUM3QyxrQ0FBa0Msa0JBQWtCLENBQUMsS0FBSyxDQUFDLHdCQUF3QixNQUFNLEVBQUU7SUFDN0YsZ0JBQWdCLEVBQUUsd0NBQXdDO0NBQzNELENBQUM7QUFFRiw4RkFBOEY7QUFDOUYscUdBQXFHO0FBQ3JHLFNBQVMsaUJBQWlCLENBQUMsSUFBd0I7SUFDakQsT0FBTyxJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUMzRSxDQUFDO0FBRUQsTUFBcUIsd0JBQXdCO0lBSTNDLFlBQVksTUFB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
|
|
@@ -30,7 +30,7 @@ class ForestadminClientActivityLogPort {
|
|
|
30
30
|
return { id: response.id, index: response.attributes.index };
|
|
31
31
|
}
|
|
32
32
|
catch (cause) {
|
|
33
|
-
this.logger
|
|
33
|
+
this.logger('Error', 'activity log create failed', {
|
|
34
34
|
action: args.action,
|
|
35
35
|
collectionId: args.collectionId,
|
|
36
36
|
status: cause.status,
|
|
@@ -49,7 +49,7 @@ class ForestadminClientActivityLogPort {
|
|
|
49
49
|
}), { logger: this.logger, extraRetryStatuses: [404] });
|
|
50
50
|
}
|
|
51
51
|
catch (err) {
|
|
52
|
-
this.logger
|
|
52
|
+
this.logger('Error', 'activity log mark-as-completed failed', {
|
|
53
53
|
handleId: handle.id,
|
|
54
54
|
error: (0, errors_1.extractErrorMessage)(err),
|
|
55
55
|
});
|
|
@@ -66,7 +66,7 @@ class ForestadminClientActivityLogPort {
|
|
|
66
66
|
}), { logger: this.logger, extraRetryStatuses: [404] });
|
|
67
67
|
}
|
|
68
68
|
catch (err) {
|
|
69
|
-
this.logger
|
|
69
|
+
this.logger('Error', 'activity log mark-as-failed failed', {
|
|
70
70
|
handleId: handle.id,
|
|
71
71
|
error: (0, errors_1.extractErrorMessage)(err),
|
|
72
72
|
});
|
|
@@ -75,4 +75,4 @@ class ForestadminClientActivityLogPort {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
exports.default = ForestadminClientActivityLogPort;
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0YWRtaW4tY2xpZW50LWFjdGl2aXR5LWxvZy1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FkYXB0ZXJzL2ZvcmVzdGFkbWluLWNsaWVudC1hY3Rpdml0eS1sb2ctcG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVNBLGlFQUEyRDtBQUMzRCw4REFBcUM7QUFDckMsc0NBQTBFO0FBRTFFLE1BQXFCLGdDQUFnQztJQUNuRCxZQUNtQixPQUFxQyxFQUNyQyxNQUFjLEVBQ2QsaUJBQXlCLEVBQ3pCLE9BQTJCO1FBSDNCLFlBQU8sR0FBUCxPQUFPLENBQThCO1FBQ3JDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQVE7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBb0I7SUFDM0MsQ0FBQztJQUVKLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBMkI7UUFDN0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLG9CQUFTLEVBQzlCLHFCQUFxQixFQUNyQixHQUFHLEVBQUUsQ0FDSCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO2dCQUM3QixpQkFBaUIsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2dCQUN6QyxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNmLDJFQUEyRTtnQkFDM0Usa0ZBQWtGO2dCQUNsRixjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQ2pDLGlGQUFpRjtnQkFDakYsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLHdDQUFpQixFQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDOUUs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
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
import type { Logger } from '../ports/logger-port';
|
|
2
|
-
export default
|
|
3
|
-
info(message: string, context: Record<string, unknown>): void;
|
|
4
|
-
warn(message: string, context: Record<string, unknown>): void;
|
|
5
|
-
error(message: string, context: Record<string, unknown>): void;
|
|
6
|
-
private format;
|
|
7
|
-
private formatContext;
|
|
8
|
-
}
|
|
1
|
+
import type { Logger, LoggerLevel } from '../ports/logger-port';
|
|
2
|
+
export default function createPrettyLogger(minLevel?: LoggerLevel): Logger;
|
|
9
3
|
//# sourceMappingURL=pretty-logger.d.ts.map
|
|
@@ -3,35 +3,42 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = createPrettyLogger;
|
|
6
7
|
const picocolors_1 = __importDefault(require("picocolors"));
|
|
8
|
+
const ORDER = ['Debug', 'Info', 'Warn', 'Error'];
|
|
9
|
+
const LABEL = {
|
|
10
|
+
Debug: picocolors_1.default.blue('debug'),
|
|
11
|
+
Info: picocolors_1.default.cyan('info '),
|
|
12
|
+
Warn: picocolors_1.default.yellow('warn '),
|
|
13
|
+
Error: picocolors_1.default.red('error'),
|
|
14
|
+
};
|
|
15
|
+
function formatContext(context) {
|
|
16
|
+
const parts = Object.entries(context).map(([key, value]) => `${key}=${JSON.stringify(value)}`);
|
|
17
|
+
if (parts.length === 0)
|
|
18
|
+
return '';
|
|
19
|
+
return picocolors_1.default.dim(parts.join(' '));
|
|
20
|
+
}
|
|
21
|
+
function format(level, message, context) {
|
|
22
|
+
const timestamp = picocolors_1.default.dim(new Date().toISOString().substring(11, 19));
|
|
23
|
+
const contextStr = formatContext(context);
|
|
24
|
+
return contextStr
|
|
25
|
+
? `${timestamp} ${LABEL[level]} ${message} ${contextStr}`
|
|
26
|
+
: `${timestamp} ${LABEL[level]} ${message}`;
|
|
27
|
+
}
|
|
7
28
|
// Colorized logger for TTY/dev. Pair with ConsoleLogger for piped output.
|
|
8
29
|
// CLI auto-picks via process.stdout.isTTY + --pretty/--json flags. NO_COLOR is honored.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
format(level, message, context) {
|
|
23
|
-
const timestamp = picocolors_1.default.dim(new Date().toISOString().substring(11, 19));
|
|
24
|
-
const contextStr = this.formatContext(context);
|
|
25
|
-
return contextStr
|
|
26
|
-
? `${timestamp} ${level} ${message} ${contextStr}`
|
|
27
|
-
: `${timestamp} ${level} ${message}`;
|
|
28
|
-
}
|
|
29
|
-
formatContext(context) {
|
|
30
|
-
const parts = Object.entries(context).map(([key, value]) => `${key}=${JSON.stringify(value)}`);
|
|
31
|
-
if (parts.length === 0)
|
|
32
|
-
return '';
|
|
33
|
-
return picocolors_1.default.dim(parts.join(' '));
|
|
34
|
-
}
|
|
30
|
+
function createPrettyLogger(minLevel = 'Info') {
|
|
31
|
+
const minIndex = ORDER.indexOf(minLevel);
|
|
32
|
+
return (level, message, context) => {
|
|
33
|
+
if (ORDER.indexOf(level) < minIndex)
|
|
34
|
+
return;
|
|
35
|
+
const line = format(level, message, context ?? {});
|
|
36
|
+
if (level === 'Error')
|
|
37
|
+
console.error(line);
|
|
38
|
+
else if (level === 'Warn')
|
|
39
|
+
console.warn(line);
|
|
40
|
+
else
|
|
41
|
+
console.info(line);
|
|
42
|
+
};
|
|
35
43
|
}
|
|
36
|
-
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHR5LWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9wcmV0dHktbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBRUEsNERBQTRCO0FBRTVCLDBFQUEwRTtBQUMxRSx3RkFBd0Y7QUFDeEYsTUFBcUIsWUFBWTtJQUMvQixJQUFJLENBQUMsT0FBZSxFQUFFLE9BQWdDO1FBQ3BELHNDQUFzQztRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFlLEVBQUUsT0FBZ0M7UUFDcEQsc0NBQXNDO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxvQkFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWUsRUFBRSxPQUFnQztRQUNyRCxzQ0FBc0M7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBYSxFQUFFLE9BQWUsRUFBRSxPQUFnQztRQUM3RSxNQUFNLFNBQVMsR0FBRyxvQkFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRS9DLE9BQU8sVUFBVTtZQUNmLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxLQUFLLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRTtZQUNsRCxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxhQUFhLENBQUMsT0FBZ0M7UUFDcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0YsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVsQyxPQUFPLG9CQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUEvQkQsK0JBK0JDIn0=
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldHR5LWxvZ2dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy9wcmV0dHktbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBK0JBLHFDQVlDO0FBekNELDREQUE0QjtBQUU1QixNQUFNLEtBQUssR0FBa0IsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVoRSxNQUFNLEtBQUssR0FBZ0M7SUFDekMsS0FBSyxFQUFFLG9CQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN2QixJQUFJLEVBQUUsb0JBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLElBQUksRUFBRSxvQkFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDeEIsS0FBSyxFQUFFLG9CQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztDQUN2QixDQUFDO0FBRUYsU0FBUyxhQUFhLENBQUMsT0FBZ0M7SUFDckQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0YsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUVsQyxPQUFPLG9CQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsU0FBUyxNQUFNLENBQUMsS0FBa0IsRUFBRSxPQUFlLEVBQUUsT0FBZ0M7SUFDbkYsTUFBTSxTQUFTLEdBQUcsb0JBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckUsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTFDLE9BQU8sVUFBVTtRQUNmLENBQUMsQ0FBQyxHQUFHLFNBQVMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRTtRQUN6RCxDQUFDLENBQUMsR0FBRyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2hELENBQUM7QUFFRCwwRUFBMEU7QUFDMUUsd0ZBQXdGO0FBQ3hGLFNBQXdCLGtCQUFrQixDQUFDLFdBQXdCLE1BQU07SUFDdkUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6QyxPQUFPLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUNqQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsUUFBUTtZQUFFLE9BQU87UUFFNUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELElBQUksS0FBSyxLQUFLLE9BQU87WUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RDLElBQUksS0FBSyxLQUFLLE1BQU07WUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOztZQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -26,7 +26,7 @@ async function withRetry(label, fn, { logger, extraRetryStatuses = [] }) {
|
|
|
26
26
|
lastError = err;
|
|
27
27
|
if (!isRetryable(err, extraRetryStatuses) || attempt === RETRY_DELAYS_MS.length)
|
|
28
28
|
throw err;
|
|
29
|
-
logger
|
|
29
|
+
logger('Warn', `"${label}" failed, retrying`, {
|
|
30
30
|
attempt: attempt + 1,
|
|
31
31
|
status: err.status,
|
|
32
32
|
error: (0, errors_1.extractErrorMessage)(err),
|
|
@@ -37,4 +37,4 @@ async function withRetry(label, fn, { logger, extraRetryStatuses = [] }) {
|
|
|
37
37
|
}
|
|
38
38
|
throw lastError;
|
|
39
39
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1yZXRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZGFwdGVycy93aXRoLXJldHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0JBLDRCQXlCQztBQTNDRCxzQ0FBZ0Q7QUFFaEQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUssQ0FBQyxDQUFDO0FBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFakUsU0FBUyxLQUFLLENBQUMsRUFBVTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzNCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsR0FBWSxFQUFFLEtBQWU7SUFDaEQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEdBQTBCLENBQUM7SUFDOUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFN0MsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRSxDQUFDO0FBRWMsS0FBSyxVQUFVLFNBQVMsQ0FDckMsS0FBYSxFQUNiLEVBQW9CLEVBQ3BCLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixHQUFHLEVBQUUsRUFBcUQ7SUFFdEYsSUFBSSxTQUFrQixDQUFDO0lBRXZCLEtBQUssSUFBSSxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sSUFBSSxlQUFlLENBQUMsTUFBTSxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN0RSxJQUFJLENBQUM7WUFDSCw0Q0FBNEM7WUFDNUMsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsU0FBUyxHQUFHLEdBQUcsQ0FBQztZQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLE9BQU8sS0FBSyxlQUFlLENBQUMsTUFBTTtnQkFBRSxNQUFNLEdBQUcsQ0FBQztZQUMzRixNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxvQkFBb0IsRUFBRTtnQkFDNUMsT0FBTyxFQUFFLE9BQU8sR0FBRyxDQUFDO2dCQUNwQixNQUFNLEVBQUcsR0FBMkIsQ0FBQyxNQUFNO2dCQUMzQyxLQUFLLEVBQUUsSUFBQSw0QkFBbUIsRUFBQyxHQUFHLENBQUM7YUFDaEMsQ0FBQyxDQUFDO1lBQ0gsNENBQTRDO1lBQzVDLE1BQU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxTQUFTLENBQUM7QUFDbEIsQ0FBQyJ9
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Logger } from './ports/logger-port';
|
|
1
|
+
import type { Logger, LoggerLevel } from './ports/logger-port';
|
|
2
2
|
import type { RunnerState } from './runner';
|
|
3
3
|
import type { AiConfiguration } from '@forestadmin/ai-proxy';
|
|
4
4
|
import type { Options as SequelizeOptions } from 'sequelize';
|
|
@@ -16,6 +16,7 @@ export interface ExecutorOptions {
|
|
|
16
16
|
aiConfigurations?: AiConfiguration[];
|
|
17
17
|
pollingIntervalS?: number;
|
|
18
18
|
logger?: Logger;
|
|
19
|
+
loggerLevel?: LoggerLevel;
|
|
19
20
|
stopTimeoutS?: number;
|
|
20
21
|
stepTimeoutS?: number;
|
|
21
22
|
aiInvokeTimeoutS?: number;
|
|
@@ -28,7 +28,7 @@ function positiveOrDefault(value, fallback) {
|
|
|
28
28
|
}
|
|
29
29
|
function buildCommonDependencies(options) {
|
|
30
30
|
const forestServerUrl = options.forestServerUrl ?? defaults_1.DEFAULT_FOREST_SERVER_URL;
|
|
31
|
-
const logger = options.logger ??
|
|
31
|
+
const logger = options.logger ?? (0, console_logger_1.default)(options.loggerLevel ?? defaults_1.DEFAULT_LOGGER_LEVEL);
|
|
32
32
|
const workflowPort = new forest_server_workflow_port_1.default({
|
|
33
33
|
envSecret: options.envSecret,
|
|
34
34
|
forestServerUrl,
|
|
@@ -36,10 +36,10 @@ function buildCommonDependencies(options) {
|
|
|
36
36
|
});
|
|
37
37
|
const forceAiError = options.forceAiError && process.env.NODE_ENV !== 'production';
|
|
38
38
|
if (forceAiError) {
|
|
39
|
-
logger
|
|
39
|
+
logger('Info', 'FORCE_AI_ERROR is enabled — AI calls will always fail. Do not use in production.');
|
|
40
40
|
}
|
|
41
41
|
else if (options.forceAiError && process.env.NODE_ENV === 'production') {
|
|
42
|
-
logger
|
|
42
|
+
logger('Info', 'FORCE_AI_ERROR is set but ignored in production.');
|
|
43
43
|
}
|
|
44
44
|
let aiModelPort;
|
|
45
45
|
if (forceAiError) {
|
|
@@ -86,14 +86,14 @@ function createWorkflowExecutor(runner, server, logger) {
|
|
|
86
86
|
await server.stop();
|
|
87
87
|
}
|
|
88
88
|
catch (err) {
|
|
89
|
-
logger
|
|
89
|
+
logger('Error', 'HTTP server close failed during shutdown', {
|
|
90
90
|
error: err instanceof Error ? err.message : String(err),
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
await runner.stop();
|
|
94
94
|
};
|
|
95
95
|
const onSignal = async () => {
|
|
96
|
-
logger
|
|
96
|
+
logger('Info', 'Received shutdown signal, stopping gracefully...');
|
|
97
97
|
try {
|
|
98
98
|
if (!shutdownPromise)
|
|
99
99
|
shutdownPromise = shutdown();
|
|
@@ -101,7 +101,7 @@ function createWorkflowExecutor(runner, server, logger) {
|
|
|
101
101
|
process.exitCode = 0;
|
|
102
102
|
}
|
|
103
103
|
catch (error) {
|
|
104
|
-
logger
|
|
104
|
+
logger('Error', 'Graceful shutdown failed', {
|
|
105
105
|
error: error instanceof Error ? error.message : String(error),
|
|
106
106
|
});
|
|
107
107
|
process.exitCode = 1;
|
|
@@ -109,7 +109,7 @@ function createWorkflowExecutor(runner, server, logger) {
|
|
|
109
109
|
// Safety net: force exit if the event loop doesn't drain
|
|
110
110
|
// eslint-disable-next-line no-console
|
|
111
111
|
setTimeout(() => {
|
|
112
|
-
logger
|
|
112
|
+
logger('Error', 'Process did not exit after shutdown — forcing exit');
|
|
113
113
|
process.exit(process.exitCode ?? 1);
|
|
114
114
|
}, FORCE_EXIT_DELAY_S * 1000).unref();
|
|
115
115
|
};
|
|
@@ -172,4 +172,4 @@ function buildDatabaseExecutor(options) {
|
|
|
172
172
|
});
|
|
173
173
|
return createWorkflowExecutor(runner, server, deps.logger);
|
|
174
174
|
}
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtd29ya2Zsb3ctZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYnVpbGQtd29ya2Zsb3ctZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF1TUEsc0RBaUJDO0FBRUQsc0RBMEJDO0FBL09ELHdFQUFxRjtBQUNyRix5Q0FBc0M7QUFFdEMsaUdBQXNFO0FBQ3RFLHFGQUEyRDtBQUMzRCx1R0FBMkU7QUFDM0UsK0VBQTREO0FBQzVELHlHQUE4RTtBQUM5RSwySUFBOEc7QUFDOUcscUZBQTJEO0FBQzNELHlDQU9vQjtBQUNwQix1RkFBNkQ7QUFDN0Qsc0RBQThCO0FBQzlCLGtFQUF5QztBQUN6Qyw2RUFBb0Q7QUFDcEQsK0VBQXFEO0FBRXJELE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0FBZ0M3QiwyRkFBMkY7QUFDM0YsNkZBQTZGO0FBQzdGLFNBQVMsaUJBQWlCLENBQUMsS0FBeUIsRUFBRSxRQUFnQjtJQUNwRSxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO0FBQzdGLENBQUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLE9BQXdCO0lBQ3ZELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxlQUFlLElBQUksb0NBQXlCLENBQUM7SUFDN0UsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFBLHdCQUFtQixFQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksK0JBQW9CLENBQUMsQ0FBQztJQUVsRyxNQUFNLFlBQVksR0FBRyxJQUFJLHFDQUF3QixDQUFDO1FBQ2hELFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztRQUM1QixlQUFlO1FBQ2YsTUFBTTtLQUNQLENBQUMsQ0FBQztJQUVILE1BQU0sWUFBWSxH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
|
package/dist/cli-core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Logger } from './ports/logger-port';
|
|
1
|
+
import type { Logger, LoggerLevel } from './ports/logger-port';
|
|
2
2
|
import { type DatabaseExecutorOptions, type ExecutorOptions, type WorkflowExecutor } from './build-workflow-executor';
|
|
3
3
|
export interface CliArgs {
|
|
4
4
|
help: boolean;
|
|
@@ -17,7 +17,7 @@ export interface CliFactories {
|
|
|
17
17
|
buildDatabase: (options: DatabaseExecutorOptions) => WorkflowExecutor;
|
|
18
18
|
}
|
|
19
19
|
export declare function parseArgs(argv: string[]): CliArgs;
|
|
20
|
-
export declare function pickLogger(args: CliArgs, stdout?: NodeJS.WriteStream): Logger;
|
|
20
|
+
export declare function pickLogger(args: CliArgs, level: LoggerLevel, stdout?: NodeJS.WriteStream): Logger;
|
|
21
21
|
export declare function readEnvConfig(env: NodeJS.ProcessEnv, args: CliArgs): CliConfig;
|
|
22
22
|
export declare function printHelp(): void;
|
|
23
23
|
export declare function printVersion(): void;
|
package/dist/cli-core.js
CHANGED
|
@@ -17,6 +17,7 @@ const pretty_logger_1 = __importDefault(require("./adapters/pretty-logger"));
|
|
|
17
17
|
const defaults_1 = require("./defaults");
|
|
18
18
|
const errors_1 = require("./errors");
|
|
19
19
|
const POSITIVE_INT = zod_1.z.coerce.number().int().positive();
|
|
20
|
+
const LOGGER_LEVEL_SCHEMA = zod_1.z.enum(['Debug', 'Info', 'Warn', 'Error']);
|
|
20
21
|
function parsePositiveIntEnv(name, raw) {
|
|
21
22
|
if (!raw)
|
|
22
23
|
return undefined;
|
|
@@ -26,6 +27,15 @@ function parsePositiveIntEnv(name, raw) {
|
|
|
26
27
|
}
|
|
27
28
|
return parsed.data;
|
|
28
29
|
}
|
|
30
|
+
function parseLoggerLevelEnv(raw) {
|
|
31
|
+
if (!raw)
|
|
32
|
+
return undefined;
|
|
33
|
+
const parsed = LOGGER_LEVEL_SCHEMA.safeParse(raw);
|
|
34
|
+
if (!parsed.success) {
|
|
35
|
+
throw new errors_1.ConfigurationError(`LOG_LEVEL must be one of Debug, Info, Warn, Error (got "${raw}")`);
|
|
36
|
+
}
|
|
37
|
+
return parsed.data;
|
|
38
|
+
}
|
|
29
39
|
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require, global-require
|
|
30
40
|
const { version } = require('../package.json');
|
|
31
41
|
const BINARY_NAME = 'forest-workflow-executor';
|
|
@@ -64,12 +74,12 @@ function parseArgs(argv) {
|
|
|
64
74
|
}
|
|
65
75
|
// Priority: --json → Console; --pretty → Pretty; TTY → Pretty; else Console (piped/docker/k8s/CI).
|
|
66
76
|
// NO_COLOR is respected by picocolors so pretty output stays monochrome where ANSI is banned.
|
|
67
|
-
function pickLogger(args, stdout = process.stdout) {
|
|
77
|
+
function pickLogger(args, level, stdout = process.stdout) {
|
|
68
78
|
if (args.json)
|
|
69
|
-
return
|
|
79
|
+
return (0, console_logger_1.default)(level);
|
|
70
80
|
if (args.pretty)
|
|
71
|
-
return
|
|
72
|
-
return stdout.isTTY ?
|
|
81
|
+
return (0, pretty_logger_1.default)(level);
|
|
82
|
+
return stdout.isTTY ? (0, pretty_logger_1.default)(level) : (0, console_logger_1.default)(level);
|
|
73
83
|
}
|
|
74
84
|
function parseAiConfig(env) {
|
|
75
85
|
const { AI_PROVIDER, AI_MODEL, AI_API_KEY } = env;
|
|
@@ -115,6 +125,7 @@ function readEnvConfig(env, args) {
|
|
|
115
125
|
aiInvokeTimeoutS: parsePositiveIntEnv('AI_INVOKE_TIMEOUT_S', env.AI_INVOKE_TIMEOUT_S),
|
|
116
126
|
maxChainDepth: parsePositiveIntEnv('MAX_CHAIN_DEPTH', env.MAX_CHAIN_DEPTH),
|
|
117
127
|
schemaCacheTtlS: parsePositiveIntEnv('SCHEMA_CACHE_TTL_S', env.SCHEMA_CACHE_TTL_S),
|
|
128
|
+
loggerLevel: parseLoggerLevelEnv(env.LOG_LEVEL) ?? defaults_1.DEFAULT_LOGGER_LEVEL,
|
|
118
129
|
...(aiConfigurations && { aiConfigurations }),
|
|
119
130
|
...(env.FORCE_AI_ERROR === 'true' && { forceAiError: true }),
|
|
120
131
|
};
|
|
@@ -151,6 +162,7 @@ Optional environment variables:
|
|
|
151
162
|
AI_INVOKE_TIMEOUT_S Max duration of a single AI provider invocation in seconds (default: ${defaults_1.DEFAULT_AI_INVOKE_TIMEOUT_S})
|
|
152
163
|
MAX_CHAIN_DEPTH Max steps auto-executed per run before yielding (default: ${defaults_1.DEFAULT_MAX_CHAIN_DEPTH})
|
|
153
164
|
SCHEMA_CACHE_TTL_S Collection schema cache TTL in seconds (default: ${defaults_1.DEFAULT_SCHEMA_CACHE_TTL_S})
|
|
165
|
+
LOG_LEVEL Debug | Info | Warn | Error (default: ${defaults_1.DEFAULT_LOGGER_LEVEL})
|
|
154
166
|
NO_COLOR Set to any value to disable ANSI colors in pretty logs
|
|
155
167
|
FORCE_AI_ERROR Set to "true" to make every AI call fail (dev only, to test error paths)
|
|
156
168
|
|
|
@@ -177,12 +189,13 @@ function logStartup(logger, config) {
|
|
|
177
189
|
else {
|
|
178
190
|
aiLabel = 'server fallback';
|
|
179
191
|
}
|
|
180
|
-
logger
|
|
192
|
+
logger('Info', 'Workflow executor starting', {
|
|
181
193
|
mode,
|
|
182
194
|
forestServerUrl: opts.forestServerUrl ?? defaults_1.DEFAULT_FOREST_SERVER_URL,
|
|
183
195
|
agentUrl: opts.agentUrl,
|
|
184
196
|
httpPort: opts.httpPort,
|
|
185
197
|
pollingIntervalS: opts.pollingIntervalS ?? defaults_1.DEFAULT_POLLING_INTERVAL_S,
|
|
198
|
+
loggerLevel: opts.loggerLevel ?? defaults_1.DEFAULT_LOGGER_LEVEL,
|
|
186
199
|
aiConfig: aiLabel,
|
|
187
200
|
});
|
|
188
201
|
}
|
|
@@ -197,7 +210,7 @@ async function runCli(argv, env, factories) {
|
|
|
197
210
|
return null;
|
|
198
211
|
}
|
|
199
212
|
const config = readEnvConfig(env, args);
|
|
200
|
-
const logger = pickLogger(args);
|
|
213
|
+
const logger = pickLogger(args, config.executorOptions.loggerLevel ?? defaults_1.DEFAULT_LOGGER_LEVEL);
|
|
201
214
|
config.executorOptions.logger = logger;
|
|
202
215
|
logStartup(logger, config);
|
|
203
216
|
try {
|
|
@@ -213,16 +226,16 @@ async function runCli(argv, env, factories) {
|
|
|
213
226
|
executor = factories.buildDatabase(databaseOptions);
|
|
214
227
|
}
|
|
215
228
|
await executor.start();
|
|
216
|
-
logger
|
|
229
|
+
logger('Info', 'Workflow executor ready', {
|
|
217
230
|
url: `http://localhost:${config.executorOptions.httpPort}`,
|
|
218
231
|
});
|
|
219
232
|
return executor;
|
|
220
233
|
}
|
|
221
234
|
catch (error) {
|
|
222
|
-
logger
|
|
235
|
+
logger('Error', 'Workflow executor failed to start', {
|
|
223
236
|
error: (0, errors_1.extractErrorMessage)(error),
|
|
224
237
|
});
|
|
225
238
|
throw error;
|
|
226
239
|
}
|
|
227
240
|
}
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
241
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY2xpLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjs7Ozs7QUFnRi9CLDhCQWtDQztBQUlELGdDQVNDO0FBNkJELHNDQXVDQztBQUVELDhCQXNDQztBQUVELG9DQUVDO0FBRUQsZ0NBcUJDO0FBRUQsd0JBa0RDO0FBclRELDZCQUF3QjtBQUV4QiwrRUFBNEQ7QUFDNUQsNkVBQTBEO0FBTTFELHlDQVVvQjtBQUNwQixxQ0FBbUU7QUFFbkUsTUFBTSxZQUFZLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztBQUN4RCxNQUFNLG1CQUFtQixHQUFHLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBRXZFLFNBQVMsbUJBQW1CLENBQUMsSUFBWSxFQUFFLEdBQXVCO0lBQ2hFLElBQUksQ0FBQyxHQUFHO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFM0IsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSwyQkFBa0IsQ0FBQyxHQUFHLElBQUkscUNBQXFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEYsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxHQUF1QjtJQUNsRCxJQUFJLENBQUMsR0FBRztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRTNCLE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVsRCxJQUFJLENBQUMsTUFBTSxD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
|
package/dist/defaults.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { LoggerLevel } from './ports/logger-port';
|
|
1
2
|
export declare const DEFAULT_HTTP_PORT = 3400;
|
|
2
3
|
export declare const DEFAULT_FOREST_SERVER_URL = "https://api.forestadmin.com";
|
|
3
4
|
export declare const DEFAULT_POLLING_INTERVAL_S = 30;
|
|
@@ -6,4 +7,5 @@ export declare const DEFAULT_AI_INVOKE_TIMEOUT_S = 30;
|
|
|
6
7
|
export declare const DEFAULT_STOP_TIMEOUT_S = 30;
|
|
7
8
|
export declare const DEFAULT_MAX_CHAIN_DEPTH = 50;
|
|
8
9
|
export declare const DEFAULT_SCHEMA_CACHE_TTL_S: number;
|
|
10
|
+
export declare const DEFAULT_LOGGER_LEVEL: LoggerLevel;
|
|
9
11
|
//# sourceMappingURL=defaults.d.ts.map
|
package/dist/defaults.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_SCHEMA_CACHE_TTL_S = exports.DEFAULT_MAX_CHAIN_DEPTH = exports.DEFAULT_STOP_TIMEOUT_S = exports.DEFAULT_AI_INVOKE_TIMEOUT_S = exports.DEFAULT_STEP_TIMEOUT_S = exports.DEFAULT_POLLING_INTERVAL_S = exports.DEFAULT_FOREST_SERVER_URL = exports.DEFAULT_HTTP_PORT = void 0;
|
|
3
|
+
exports.DEFAULT_LOGGER_LEVEL = exports.DEFAULT_SCHEMA_CACHE_TTL_S = exports.DEFAULT_MAX_CHAIN_DEPTH = exports.DEFAULT_STOP_TIMEOUT_S = exports.DEFAULT_AI_INVOKE_TIMEOUT_S = exports.DEFAULT_STEP_TIMEOUT_S = exports.DEFAULT_POLLING_INTERVAL_S = exports.DEFAULT_FOREST_SERVER_URL = exports.DEFAULT_HTTP_PORT = void 0;
|
|
4
4
|
exports.DEFAULT_HTTP_PORT = 3400;
|
|
5
5
|
exports.DEFAULT_FOREST_SERVER_URL = 'https://api.forestadmin.com';
|
|
6
6
|
exports.DEFAULT_POLLING_INTERVAL_S = 30;
|
|
@@ -9,4 +9,5 @@ exports.DEFAULT_AI_INVOKE_TIMEOUT_S = 30;
|
|
|
9
9
|
exports.DEFAULT_STOP_TIMEOUT_S = 30;
|
|
10
10
|
exports.DEFAULT_MAX_CHAIN_DEPTH = 50;
|
|
11
11
|
exports.DEFAULT_SCHEMA_CACHE_TTL_S = 10 * 60;
|
|
12
|
-
|
|
12
|
+
exports.DEFAULT_LOGGER_LEVEL = 'Info';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGVmYXVsdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRWEsUUFBQSxpQkFBaUIsR0FBRyxJQUFJLENBQUM7QUFDekIsUUFBQSx5QkFBeUIsR0FBRyw2QkFBNkIsQ0FBQztBQUMxRCxRQUFBLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztBQUNoQyxRQUFBLHNCQUFzQixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDaEMsUUFBQSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFDakMsUUFBQSxzQkFBc0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFDN0IsUUFBQSwwQkFBMEIsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3JDLFFBQUEsb0JBQW9CLEdBQWdCLE1BQU0sQ0FBQyJ9
|