@forestadmin/agent 1.85.1 → 1.86.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/embedded-workflow-executor.js +26 -12
- package/dist/types.d.ts +9 -3
- package/dist/types.js +1 -1
- package/package.json +1 -1
|
@@ -37,7 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
const path_1 = __importDefault(require("path"));
|
|
40
|
-
/** Default loopback port for an embedded workflow executor
|
|
40
|
+
/** Default loopback port for an embedded workflow executor. */
|
|
41
41
|
const DEFAULT_EMBEDDED_EXECUTOR_PORT = 3400;
|
|
42
42
|
/**
|
|
43
43
|
* Serialize the executor's structured log context onto the message. The agent's logger only
|
|
@@ -84,7 +84,11 @@ class EmbeddedWorkflowExecutor {
|
|
|
84
84
|
throw new Error('Cannot use addWorkflowExecutor together with the workflowExecutorUrl option: the former ' +
|
|
85
85
|
'embeds an executor in-process, the latter targets a remote one. Choose one.');
|
|
86
86
|
}
|
|
87
|
-
|
|
87
|
+
if (embedOptions.inMemory && embedOptions.database) {
|
|
88
|
+
throw new Error('addWorkflowExecutor: `inMemory` and `database` are mutually exclusive. The in-memory run ' +
|
|
89
|
+
'store persists nothing; drop one of the two options.');
|
|
90
|
+
}
|
|
91
|
+
const port = embedOptions.port ?? DEFAULT_EMBEDDED_EXECUTOR_PORT;
|
|
88
92
|
this.config = { ...embedOptions, port };
|
|
89
93
|
return `http://127.0.0.1:${port}`;
|
|
90
94
|
}
|
|
@@ -102,13 +106,8 @@ class EmbeddedWorkflowExecutor {
|
|
|
102
106
|
'the agent runs on its own server (mountOnStandaloneServer). When mounting on Express, ' +
|
|
103
107
|
'Fastify or NestJS, pass `agentUrl` to addWorkflowExecutor().');
|
|
104
108
|
}
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
throw new Error('Embedded workflow executor requires a database to persist run state. Pass `database` to ' +
|
|
108
|
-
'addWorkflowExecutor() or set the DATABASE_URL environment variable.');
|
|
109
|
-
}
|
|
110
|
-
const { buildDatabaseExecutor } = await this.importPackage();
|
|
111
|
-
this.executor = buildDatabaseExecutor({
|
|
109
|
+
const { buildDatabaseExecutor, buildInMemoryExecutor } = await this.importPackage();
|
|
110
|
+
const commonOptions = {
|
|
112
111
|
envSecret: this.options.envSecret,
|
|
113
112
|
authSecret: this.options.authSecret,
|
|
114
113
|
forestServerUrl: this.options.forestServerUrl,
|
|
@@ -120,8 +119,23 @@ class EmbeddedWorkflowExecutor {
|
|
|
120
119
|
// Embedded: the host process owns SIGTERM/SIGINT; the executor must not exit it. agent.stop()
|
|
121
120
|
// drains the executor explicitly.
|
|
122
121
|
manageProcessSignals: false,
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
};
|
|
123
|
+
if (config.inMemory) {
|
|
124
|
+
this.options.logger('Warn', formatLog('Using an in-memory run store: workflow runs are kept in memory and lost on restart. ' +
|
|
125
|
+
'Pass a `database` to addWorkflowExecutor() to persist them in production.'));
|
|
126
|
+
this.executor = buildInMemoryExecutor(commonOptions);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
const { database } = config;
|
|
130
|
+
if (!database) {
|
|
131
|
+
throw new Error('Embedded workflow executor requires a database to persist run state. Pass `database` ' +
|
|
132
|
+
'to addWorkflowExecutor(), or use `inMemory: true`.');
|
|
133
|
+
}
|
|
134
|
+
this.executor = buildDatabaseExecutor({
|
|
135
|
+
...commonOptions,
|
|
136
|
+
database: database,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
125
139
|
await this.executor.start();
|
|
126
140
|
this.options.logger('Info', `Embedded workflow executor started (loopback port ${config.port})`);
|
|
127
141
|
}
|
|
@@ -155,4 +169,4 @@ class EmbeddedWorkflowExecutor {
|
|
|
155
169
|
}
|
|
156
170
|
}
|
|
157
171
|
exports.default = EmbeddedWorkflowExecutor;
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWQtd29ya2Zsb3ctZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZW1iZWRkZWQtd29ya2Zsb3ctZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxnREFBd0I7QUFFeEIsK0RBQStEO0FBQy9ELE1BQU0sOEJBQThCLEdBQUcsSUFBSSxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxPQUFlLEVBQUUsT0FBaUM7SUFDbkUsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyx1QkFBdUIsT0FBTyxFQUFFLENBQUM7SUFFM0YsSUFBSSxDQUFDO1FBQ0gsT0FBTyx1QkFBdUIsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyx1QkFBdUIsT0FBTywyQkFBMkIsQ0FBQztJQUNuRSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLElBQWE7SUFDdEMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFckUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFxQix3QkFBd0I7SUFJM0MsWUFBNkIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFIdEQsV0FBTSxHQUE2RCxJQUFJLENBQUM7UUFDeEUsYUFB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
|
package/dist/types.d.ts
CHANGED
|
@@ -60,10 +60,16 @@ export type AgentOptions = {
|
|
|
60
60
|
* through `agent.addWorkflowExecutor()`.
|
|
61
61
|
*/
|
|
62
62
|
export type WorkflowExecutorEmbedOptions = {
|
|
63
|
+
/**
|
|
64
|
+
* Use an in-memory run store instead of a database. No database is required, but runs are lost
|
|
65
|
+
* when the process restarts, so it is not meant for production. Mutually exclusive with
|
|
66
|
+
* `database`.
|
|
67
|
+
*/
|
|
68
|
+
inMemory?: boolean;
|
|
63
69
|
/**
|
|
64
70
|
* Database connection used to persist workflow run state. Accepts a connection URI or a
|
|
65
|
-
* Sequelize options object.
|
|
66
|
-
*
|
|
71
|
+
* Sequelize options object. The agent throws at startup if it is omitted (unless `inMemory` is
|
|
72
|
+
* set).
|
|
67
73
|
*/
|
|
68
74
|
database?: {
|
|
69
75
|
uri?: string;
|
|
@@ -78,7 +84,7 @@ export type WorkflowExecutorEmbedOptions = {
|
|
|
78
84
|
agentUrl?: string;
|
|
79
85
|
/**
|
|
80
86
|
* Loopback port the embedded executor listens on; the agent proxies to it internally.
|
|
81
|
-
* Defaults to
|
|
87
|
+
* Defaults to `3400`.
|
|
82
88
|
*/
|
|
83
89
|
port?: number;
|
|
84
90
|
/** Interval in seconds at which the executor polls the orchestrator for pending steps. */
|
package/dist/types.js
CHANGED
|
@@ -22,4 +22,4 @@ var RouteType;
|
|
|
22
22
|
RouteType[RouteType["Authentication"] = 3] = "Authentication";
|
|
23
23
|
RouteType[RouteType["PrivateRoute"] = 4] = "PrivateRoute";
|
|
24
24
|
})(RouteType || (exports.RouteType = RouteType = {}));
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBbUdBLElBQVksUUFVWDtBQVZELFdBQVksUUFBUTtJQUNsQixxREFBZ0IsQ0FBQTtJQUNoQix5REFBa0IsQ0FBQTtJQUNsQixtREFBZSxDQUFBO0lBQ2YsaURBQWMsQ0FBQTtJQUNkLDJEQUFtQixDQUFBO0lBQ25CLCtEQUFxQixDQUFBO0lBQ3JCLHVFQUF5QixDQUFBO0lBQ3pCLG1EQUFlLENBQUE7SUFDZixxQ0FBUSxDQUFBO0FBQ1YsQ0FBQyxFQVZXLFFBQVEsd0JBQVIsUUFBUSxRQVVuQjtBQUVELElBQVksU0FPWDtBQVBELFdBQVksU0FBUztJQUNuQixpR0FBaUc7SUFDakcsMkRBQWlCLENBQUE7SUFDakIseURBQWdCLENBQUE7SUFDaEIsdURBQWUsQ0FBQTtJQUNmLDZEQUFrQixDQUFBO0lBQ2xCLHlEQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFQVyxTQUFTLHlCQUFULFNBQVMsUUFPcEIifQ==
|