@forestadmin/workflow-executor 1.6.0 → 1.7.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/README.md +25 -121
- package/dist/adapters/ai-client-adapter.d.ts +2 -2
- package/dist/adapters/ai-client-adapter.js +2 -2
- package/dist/adapters/server-ai-adapter.d.ts +3 -2
- package/dist/adapters/server-ai-adapter.js +11 -4
- package/dist/executors/base-step-executor.js +6 -1
- package/dist/executors/step-executor-factory.js +5 -2
- package/dist/http/executor-http-server.js +7 -1
- package/dist/ports/ai-model-port.d.ts +5 -1
- package/dist/stores/database-store.d.ts +1 -0
- package/dist/stores/database-store.js +76 -40
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -6,142 +6,46 @@ The executor polls the Forest orchestrator for pending steps, runs them locally
|
|
|
6
6
|
(with access to your data via the Forest agent), and reports results back. No
|
|
7
7
|
client data ever leaves your infrastructure.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## Prerequisites
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Make sure you are on the latest version of your Forest Admin agent (Node.js/JS or Ruby), then add `workflowExecutorUrl` to your agent config:
|
|
12
12
|
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
| Variable | Required | Default | Description |
|
|
20
|
-
|----------|----------|---------|-------------|
|
|
21
|
-
| `FOREST_ENV_SECRET` | ✓ | — | Forest Admin project environment secret |
|
|
22
|
-
| `FOREST_AUTH_SECRET` | ✓ | — | JWT signing secret (shared with your agent) |
|
|
23
|
-
| `AGENT_URL` | ✓ | — | URL of your running Forest Admin agent |
|
|
24
|
-
| `DATABASE_URL` | ✓* | — | Postgres connection string (*not needed with `--in-memory`) |
|
|
25
|
-
| `DATABASE_SSL` | — | `false` | Set to `true` to connect over TLS (managed databases like RDS often require it). Encrypts without verifying the server certificate. |
|
|
26
|
-
| `HTTP_PORT` | — | `3400` | Port for the executor HTTP server |
|
|
27
|
-
| `FOREST_SERVER_URL` | — | `https://api.forestadmin.com` | Orchestrator URL |
|
|
28
|
-
| `POLLING_INTERVAL_S` | — | `30` | Poll cadence for pending steps |
|
|
29
|
-
| `STOP_TIMEOUT_S` | — | `30` | Graceful shutdown deadline |
|
|
30
|
-
|
|
31
|
-
> **Database schema** — On Postgres, the executor keeps its table and its migration
|
|
32
|
-
> registry in a dedicated `forest` schema (created automatically). It is therefore
|
|
33
|
-
> safe to point `DATABASE_URL` at a database shared with your agent/server: nothing
|
|
34
|
-
> is created in `public`.
|
|
35
|
-
|
|
36
|
-
Optional AI configuration (all-or-nothing — falls back to server AI if any is missing):
|
|
37
|
-
|
|
38
|
-
| Variable | Description |
|
|
39
|
-
|----------|-------------|
|
|
40
|
-
| `AI_PROVIDER` | `anthropic` or `openai` |
|
|
41
|
-
| `AI_MODEL` | Model name (e.g. `claude-sonnet-4-6`) |
|
|
42
|
-
| `AI_API_KEY` | Provider API key |
|
|
43
|
-
|
|
44
|
-
### Run
|
|
45
|
-
|
|
46
|
-
```bash
|
|
47
|
-
forest-workflow-executor
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
You should see (pretty format when stdout is a TTY):
|
|
51
|
-
|
|
52
|
-
```
|
|
53
|
-
13:33:42 info Workflow executor starting mode="database" forestServerUrl="https://api.forestadmin.com" agentUrl="http://localhost:3351" httpPort=3400 pollingIntervalS=5 aiConfig="server fallback"
|
|
54
|
-
13:33:42 info Workflow executor ready url="http://localhost:3400"
|
|
55
|
-
13:33:47 info Poll cycle completed fetched=0 dispatching=0
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
When stdout is piped, redirected or inside a container, logs are emitted as
|
|
59
|
-
structured JSON instead — ready to be ingested by Datadog, CloudWatch, Loki, etc.:
|
|
60
|
-
|
|
61
|
-
```json
|
|
62
|
-
{"message":"Workflow executor ready","timestamp":"2026-04-20T13:33:42.000Z","url":"http://localhost:3400"}
|
|
63
|
-
{"message":"Poll cycle completed","timestamp":"2026-04-20T13:33:47.000Z","fetched":0,"dispatching":0}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Log format overrides
|
|
67
|
-
|
|
68
|
-
| Flag | Behavior |
|
|
69
|
-
|------|----------|
|
|
70
|
-
| `--pretty` | Force colorized human-readable logs |
|
|
71
|
-
| `--json` | Force structured JSON logs |
|
|
72
|
-
| (none) | Auto-detect: pretty when stdout is a TTY, JSON otherwise |
|
|
73
|
-
|
|
74
|
-
Setting `NO_COLOR=1` disables ANSI codes while keeping the pretty format.
|
|
75
|
-
|
|
76
|
-
### Health check
|
|
77
|
-
|
|
78
|
-
```bash
|
|
79
|
-
curl http://localhost:3400/health
|
|
80
|
-
# → {"state":"running"}
|
|
13
|
+
```js
|
|
14
|
+
createAgent({
|
|
15
|
+
// ...
|
|
16
|
+
workflowExecutorUrl: 'http://localhost:3400',
|
|
17
|
+
})
|
|
81
18
|
```
|
|
82
19
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
Send `SIGTERM` or `SIGINT`. The executor drains in-flight steps, closes the HTTP
|
|
86
|
-
server, and exits with code `0`. Steps that don't drain within `STOP_TIMEOUT_S`
|
|
87
|
-
are force-killed and the process exits with code `1`.
|
|
20
|
+
---
|
|
88
21
|
|
|
89
|
-
|
|
22
|
+
## Quick Setup
|
|
90
23
|
|
|
91
|
-
|
|
92
|
-
|------|---------|
|
|
93
|
-
| `0` | Graceful shutdown |
|
|
94
|
-
| `1` | Startup error (missing env, invalid config) or forced shutdown |
|
|
24
|
+
### In-memory (no database)
|
|
95
25
|
|
|
96
|
-
|
|
26
|
+
For testing — state is lost on restart, not for production:
|
|
97
27
|
|
|
98
28
|
```bash
|
|
99
|
-
|
|
29
|
+
FOREST_ENV_SECRET="your-env-secret" \
|
|
30
|
+
FOREST_AUTH_SECRET="your-auth-secret" \
|
|
31
|
+
AGENT_URL="https://your-agent-url" \
|
|
32
|
+
npx @forestadmin/workflow-executor --in-memory
|
|
100
33
|
```
|
|
101
34
|
|
|
102
|
-
|
|
35
|
+
### With a database
|
|
103
36
|
|
|
104
|
-
|
|
37
|
+
For production — requires a Postgres database:
|
|
105
38
|
|
|
106
39
|
```bash
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
If you prefer embedding the executor in your own Node entry point:
|
|
113
|
-
|
|
114
|
-
```ts
|
|
115
|
-
import { buildDatabaseExecutor } from '@forestadmin/workflow-executor';
|
|
116
|
-
|
|
117
|
-
const executor = buildDatabaseExecutor({
|
|
118
|
-
envSecret: process.env.FOREST_ENV_SECRET!,
|
|
119
|
-
authSecret: process.env.FOREST_AUTH_SECRET!,
|
|
120
|
-
agentUrl: process.env.AGENT_URL!,
|
|
121
|
-
httpPort: 3400,
|
|
122
|
-
database: { uri: process.env.DATABASE_URL! },
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
await executor.start();
|
|
126
|
-
// SIGTERM / SIGINT handling is built in
|
|
40
|
+
FOREST_ENV_SECRET="your-env-secret" \
|
|
41
|
+
FOREST_AUTH_SECRET="your-auth-secret" \
|
|
42
|
+
AGENT_URL="https://your-agent-url" \
|
|
43
|
+
DATABASE_URL="postgres://user:pass@localhost:5432/mydb" \
|
|
44
|
+
npx @forestadmin/workflow-executor
|
|
127
45
|
```
|
|
128
46
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
## Dev with the example scaffold
|
|
132
|
-
|
|
133
|
-
The `example/` folder contains a docker-compose setup with Postgres + a ready
|
|
134
|
-
`index.ts` entrypoint that loads `.env` via `dotenv`. Use it for local development
|
|
135
|
-
only — not for production deployments.
|
|
136
|
-
|
|
137
|
-
```bash
|
|
138
|
-
cd example
|
|
139
|
-
docker compose up -d
|
|
140
|
-
cp .env.example .env # fill in your secrets
|
|
141
|
-
npx tsx index.ts
|
|
142
|
-
```
|
|
47
|
+
**Where to find your credentials:**
|
|
143
48
|
|
|
144
|
-
|
|
49
|
+
Both values are already in your agent's environment variables. `FOREST_ENV_SECRET` can also be found in [app.forestadmin.com](https://app.forestadmin.com) → **Settings** → **Environments** → click your environment. `FOREST_AUTH_SECRET` is defined on your side only and is not available in the Forest Admin UI.
|
|
145
50
|
|
|
146
|
-
|
|
147
|
-
principles, privacy boundaries, and extension points.
|
|
51
|
+
`AGENT_URL` is the URL where your Forest Admin agent is running (e.g. `http://localhost:3351`).
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { AiModelPort } from '../ports/ai-model-port';
|
|
1
|
+
import type { AiModelPort, GetModelOptions } from '../ports/ai-model-port';
|
|
2
2
|
import type { AiConfiguration, BaseChatModel, RemoteTool, ToolConfig } from '@forestadmin/ai-proxy';
|
|
3
3
|
export default class AiClientAdapter implements AiModelPort {
|
|
4
4
|
private readonly aiClient;
|
|
5
5
|
constructor(aiConfigurations: AiConfiguration[]);
|
|
6
|
-
getModel(aiConfigName?:
|
|
6
|
+
getModel({ aiConfigName }?: GetModelOptions): BaseChatModel;
|
|
7
7
|
loadRemoteTools(configs: Record<string, ToolConfig>): Promise<RemoteTool[]>;
|
|
8
8
|
closeConnections(): Promise<void>;
|
|
9
9
|
private callPort;
|
|
@@ -7,7 +7,7 @@ class AiClientAdapter {
|
|
|
7
7
|
const withRetries = aiConfigurations.map(c => ({ maxRetries: 2, ...c }));
|
|
8
8
|
this.aiClient = new ai_proxy_1.AiClient({ aiConfigurations: withRetries });
|
|
9
9
|
}
|
|
10
|
-
getModel(aiConfigName) {
|
|
10
|
+
getModel({ aiConfigName } = {}) {
|
|
11
11
|
try {
|
|
12
12
|
return this.aiClient.getModel(aiConfigName);
|
|
13
13
|
}
|
|
@@ -35,4 +35,4 @@ class AiClientAdapter {
|
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
exports.default = AiClientAdapter;
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWktY2xpZW50LWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvYWktY2xpZW50LWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxvREFBaUQ7QUFFakQsc0NBQW9FO0FBRXBFLE1BQXFCLGVBQWU7SUFHbEMsWUFBWSxnQkFBbUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFnQyxFQUFFLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQUUsWUFBWSxLQUFzQixFQUFFO1FBQzdDLElBQUksQ0FBQztZQUNILE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLEtBQUssWUFBWSw4QkFBcUI7Z0JBQUUsTUFBTSxLQUFLLENBQUM7WUFDeEQsTUFBTSxJQUFJLHlCQUFnQixDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNoRCxDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFtQztRQUNqRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFTyxLQUFLLENBQUMsUUFBUSxDQUFJLFNBQWlCLEVBQUUsRUFBb0I7UUFDL0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLEVBQUUsRUFBRSxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxLQUFLLFlBQVksOEJBQXFCO2dCQUFFLE1BQU0sS0FBSyxDQUFDO1lBQ3hELE1BQU0sSUFBSSx5QkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpDRCxrQ0FpQ0MifQ==
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import type { AiModelPort } from '../ports/ai-model-port';
|
|
1
|
+
import type { AiModelPort, GetModelOptions } from '../ports/ai-model-port';
|
|
2
2
|
import type { BaseChatModel, RemoteTool, ToolConfig } from '@forestadmin/ai-proxy';
|
|
3
3
|
export interface ServerAiAdapterOptions {
|
|
4
4
|
forestServerUrl: string;
|
|
5
5
|
envSecret: string;
|
|
6
6
|
}
|
|
7
7
|
export default class ServerAiAdapter implements AiModelPort {
|
|
8
|
+
private readonly options;
|
|
8
9
|
private readonly aiClient;
|
|
9
10
|
constructor(options: ServerAiAdapterOptions);
|
|
10
|
-
getModel(): BaseChatModel;
|
|
11
|
+
getModel({ userId }?: GetModelOptions): BaseChatModel;
|
|
11
12
|
loadRemoteTools(configs: Record<string, ToolConfig>): Promise<RemoteTool[]>;
|
|
12
13
|
closeConnections(): Promise<void>;
|
|
13
14
|
private static buildProxyConfiguration;
|
|
@@ -4,13 +4,17 @@ const ai_proxy_1 = require("@forestadmin/ai-proxy");
|
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
5
|
class ServerAiAdapter {
|
|
6
6
|
constructor(options) {
|
|
7
|
+
this.options = options;
|
|
7
8
|
this.aiClient = new ai_proxy_1.AiClient({
|
|
8
9
|
aiConfigurations: [ServerAiAdapter.buildProxyConfiguration(options)],
|
|
9
10
|
});
|
|
10
11
|
}
|
|
11
|
-
getModel() {
|
|
12
|
+
getModel({ userId } = {}) {
|
|
12
13
|
try {
|
|
13
|
-
|
|
14
|
+
const client = new ai_proxy_1.AiClient({
|
|
15
|
+
aiConfigurations: [ServerAiAdapter.buildProxyConfiguration(this.options, userId)],
|
|
16
|
+
});
|
|
17
|
+
return client.getModel();
|
|
14
18
|
}
|
|
15
19
|
catch (cause) {
|
|
16
20
|
if (cause instanceof errors_1.WorkflowExecutorError)
|
|
@@ -27,7 +31,7 @@ class ServerAiAdapter {
|
|
|
27
31
|
// Every call is routed to the Forest server's AI proxy, which picks the real provider/model.
|
|
28
32
|
// The model name is therefore a placeholder, and fetch is rewritten to hit the proxy with the
|
|
29
33
|
// env secret instead of an OpenAI Authorization header.
|
|
30
|
-
static buildProxyConfiguration({ forestServerUrl, envSecret,
|
|
34
|
+
static buildProxyConfiguration({ forestServerUrl, envSecret }, userId) {
|
|
31
35
|
const aiProxyUrl = `${forestServerUrl}/liana/v1/ai-proxy`;
|
|
32
36
|
return {
|
|
33
37
|
name: 'forest-server',
|
|
@@ -40,6 +44,9 @@ class ServerAiAdapter {
|
|
|
40
44
|
const headers = new Headers(init?.headers);
|
|
41
45
|
headers.delete('authorization');
|
|
42
46
|
headers.set('forest-secret-key', envSecret);
|
|
47
|
+
// Attributes AI usage to the triggering user (proxy route has no user context).
|
|
48
|
+
if (userId !== undefined)
|
|
49
|
+
headers.set('user-id', String(userId));
|
|
43
50
|
return fetch(aiProxyUrl, { ...init, headers });
|
|
44
51
|
},
|
|
45
52
|
},
|
|
@@ -57,4 +64,4 @@ class ServerAiAdapter {
|
|
|
57
64
|
}
|
|
58
65
|
}
|
|
59
66
|
exports.default = ServerAiAdapter;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLWFpLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRhcHRlcnMvc2VydmVyLWFpLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxvREFBaUQ7QUFFakQsc0NBQW9FO0FBT3BFLE1BQXFCLGVBQWU7SUFJbEMsWUFBWSxPQUErQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQztZQUMzQixnQkFBZ0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNyRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUSxDQUFDLEVBQUUsTUFBTSxLQUFzQixFQUFFO1FBQ3ZDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksbUJBQVEsQ0FBQztnQkFDMUIsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNsRixDQUFDLENBQUM7WUFFSCxPQUFPLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLElBQUksS0FBSyxZQUFZLDhCQUFxQjtnQkFBRSxNQUFNLEtBQUssQ0FBQztZQUN4RCxNQUFNLElBQUkseUJBQWdCLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQW1DO1FBQ2pELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELDZGQUE2RjtJQUM3Riw4RkFBOEY7SUFDOUYsd0RBQXdEO0lBQ2hELE1BQU0sQ0FBQyx1QkFBdUIsQ0FDcEMsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUEwQixFQUN0RCxNQUFlO1FBRWYsTUFBTSxVQUFVLEdBQUcsR0FBRyxlQUFlLG9CQUFvQixDQUFDO1FBRTFELE9BQU87WUFDTCxJQUFJLEVBQUUsZUFBZTtZQUNyQixRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsU0FBUztZQUNoQixVQUFVLEVBQUUsQ0FBQztZQUNiLGFBQWEsRUFBRTtnQkFDYixNQUFNLEVBQUUsUUFBUTtnQkFDaEIsS0FBSyxFQUFFLENBQUMsSUFBdUIsRUFBRSxJQUFrQixFQUFFLEVBQUU7b0JBQ3JELE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDM0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztvQkFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDNUMsZ0ZBQWdGO29CQUNoRixJQUFJLE1BQU0sS0FBSyxTQUFTO3dCQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUVqRSxPQUFPLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dCQUNqRCxDQUFDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRLENBQUksU0FBaUIsRUFBRSxFQUFvQjtRQUMvRCxJQUFJLENBQUM7WUFDSCxPQUFPLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDcEIsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixJQUFJLEtBQUssWUFBWSw4QkFBcUI7Z0JBQUUsTUFBTSxLQUFLLENBQUM7WUFDeEQsTUFBTSxJQUFJLHlCQUFnQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckVELGtDQXFFQyJ9
|
|
@@ -13,6 +13,11 @@ class BaseStepExecutor {
|
|
|
13
13
|
}
|
|
14
14
|
async execute() {
|
|
15
15
|
const { baseRecordRef } = this.context;
|
|
16
|
+
this.context.logger('Debug', 'Step context', {
|
|
17
|
+
...this.logCtx,
|
|
18
|
+
collection: baseRecordRef.collectionName,
|
|
19
|
+
stepInput: this.context.stepDefinition,
|
|
20
|
+
});
|
|
16
21
|
this.context.logger('Info', 'Step execution started', {
|
|
17
22
|
...this.logCtx,
|
|
18
23
|
collection: baseRecordRef.collectionName,
|
|
@@ -264,4 +269,4 @@ class BaseStepExecutor {
|
|
|
264
269
|
}
|
|
265
270
|
}
|
|
266
271
|
exports.default = BaseStepExecutor;
|
|
267
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9iYXNlLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSxvREFBc0Q7QUFFdEQsc0NBU21CO0FBQ25CLDhGQUErRDtBQUMvRCwwRkFBZ0U7QUFFaEUsTUFBOEIsZ0JBQWdCO0lBSzVDLFlBQVksT0FBZ0M7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLHdCQUF3QixFQUFFO1lBQ3BELEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDZCxVQUFVLEVBQUUsYUFBYSxDQUFDLGNBQWM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDO1lBQ0gseUZBQXlGO1lBQ3pGLHNFQUFzRTtZQUN0RSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTdDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGdEQUFnRCxFQUFFO29CQUM1RSxHQUFHLElBQUksQ0FBQyxNQUFNO29CQUNkLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU07aUJBQ2xDLENBQUMsQ0FBQztnQkFFSCxPQUFPLE1BQU0sQ0FBQztZQUNoQixDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFFM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLDBCQUEwQixFQUFFO2dCQUN0RCxHQUFHLElBQUksQ0FB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
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zdGVwLWV4ZWN1dG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9iYXNlLXN0ZXAtZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlQSxvREFBc0Q7QUFFdEQsc0NBU21CO0FBQ25CLDhGQUErRDtBQUMvRCwwRkFBZ0U7QUFFaEUsTUFBOEIsZ0JBQWdCO0lBSzVDLFlBQVksT0FBZ0M7UUFDMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1gsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRTtZQUMzQyxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQ2QsVUFBVSxFQUFFLGFBQWEsQ0FBQyxjQUFjO1lBQ3hDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7U0FDdkMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLHdCQUF3QixFQUFFO1lBQ3BELEdBQUcsSUFBSSxDQUFDLE1BQU07WUFDZCxVQUFVLEVBQUUsYUFBYSxDQUFDLGNBQWM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDO1lBQ0gseUZBQXlGO1lBQ3pGLHNFQUFzRTtZQUN0RSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBRTdDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLGdEQUFnRCxFQUFFO29CQUM1RSxHQUFHLElBQUksQ0FBQyxNQUFNO29CQUNkLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU07aUJBQ2xDLENB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
|
|
@@ -78,7 +78,10 @@ class StepExecutorFactory {
|
|
|
78
78
|
stepDefinition: step.stepDefinition,
|
|
79
79
|
previousSteps: step.previousSteps,
|
|
80
80
|
user: step.user,
|
|
81
|
-
model: cfg.aiModelPort.getModel(
|
|
81
|
+
model: cfg.aiModelPort.getModel({
|
|
82
|
+
aiConfigName: step.stepDefinition.aiConfigName,
|
|
83
|
+
userId: step.user.id,
|
|
84
|
+
}),
|
|
82
85
|
agent: new agent_with_log_1.default({
|
|
83
86
|
agentPort: cfg.agentPort,
|
|
84
87
|
schemaResolver,
|
|
@@ -96,4 +99,4 @@ class StepExecutorFactory {
|
|
|
96
99
|
}
|
|
97
100
|
}
|
|
98
101
|
exports.default = StepExecutorFactory;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1leGVjdXRvci1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4ZWN1dG9ycy9zdGVwLWV4ZWN1dG9yLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF3QkEsc0NBS21CO0FBQ25CLHlFQUFnRDtBQUNoRCxrRUFBeUM7QUFDekMsc0VBQTRDO0FBQzVDLHdGQUE4RDtBQUM5RCxzRkFBNEQ7QUFDNUQsNEdBQWdGO0FBQ2hGLDRFQUFrRDtBQUNsRCw0RkFBaUU7QUFDakUsZ0hBQW9GO0FBQ3BGLGdHQUFxRTtBQUNyRSx3RUFBOEQ7QUFDOUQsa0VBQXdFO0FBYXhFLE1BQXFCLG1CQUFtQjtJQUN0QyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDakIsSUFBNEIsRUFDNUIsYUFBZ0MsRUFDaEMsZUFBZ0MsRUFDaEMsZ0JBQTBFLEVBQzFFLG1CQUE2QjtRQUU3QixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxtQkFBbUIsQ0FBQyxZQUFZLENBQzlDLElBQUksRUFDSixhQUFhLEVBQ2IsZUFBZSxFQUNmLG1CQUFtQixDQUNwQixDQUFDO1lBRUYsUUFBUSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNqQyxLQUFLLDBCQUFRLENBQUMsU0FBUztvQkFDckIsT0FBTyxJQUFJLGlDQUFxQixDQUFDLE9BQW9ELENBQUMsQ0FBQztnQkFDekYsS0FBSywwQkFBUSxDQUFDLFVBQVU7b0JBQ3RCLE9BQU8sSUFBSSxtQ0FBc0IsQ0FBQyxPQUFxRCxDQUFDLENBQUM7Z0JBQzNGLEtBQUssMEJBQVEsQ0FBQyxZQUFZO29CQUN4QixPQUFPLElBQUkscUNBQXdCLENBQ2pDLE9BQXVELENBQ3hELENBQUM7Z0JBQ0osS0FBSywwQkFBUSxDQUFDLGFBQWE7b0JBQ3pCLE9BQU8sSUFBSSw2Q0FBK0IsQ0FDeEMsT0FBd0QsQ0FDekQsQ0FBQztnQkFDSixLQUFLLDBCQUFRLENBQUMs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
|
|
@@ -13,12 +13,18 @@ const http_errors_1 = require("./http-errors");
|
|
|
13
13
|
const step_serializer_1 = __importDefault(require("./step-serializer"));
|
|
14
14
|
const console_logger_1 = __importDefault(require("../adapters/console-logger"));
|
|
15
15
|
const errors_1 = require("../errors");
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require, global-require
|
|
17
|
+
const { version } = require('../../package.json');
|
|
16
18
|
class ExecutorHttpServer {
|
|
17
19
|
constructor(options) {
|
|
18
20
|
this.server = null;
|
|
19
21
|
this.options = options;
|
|
20
22
|
this.logger = options.logger ?? (0, console_logger_1.default)();
|
|
21
23
|
this.app = new koa_1.default();
|
|
24
|
+
this.app.use(async (ctx, next) => {
|
|
25
|
+
ctx.set('X-Executor-Version', version);
|
|
26
|
+
await next();
|
|
27
|
+
});
|
|
22
28
|
// Error-translation middleware — the single place converting thrown errors (typed HTTP
|
|
23
29
|
// errors, domain errors via toHttpError, JWT 401) into HTTP responses. Handlers just throw.
|
|
24
30
|
this.app.use(async (ctx, next) => {
|
|
@@ -157,4 +163,4 @@ class ExecutorHttpServer {
|
|
|
157
163
|
}
|
|
158
164
|
}
|
|
159
165
|
exports.default = ExecutorHttpServer;
|
|
160
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3ItaHR0cC1zZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC9leGVjdXRvci1odHRwLXNlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUtBLGlFQUF5QztBQUN6Qyx5REFBaUM7QUFDakMsZ0RBQXdCO0FBQ3hCLDhDQUFzQjtBQUN0QixzREFBNkI7QUFFN0IsbURBQXdFO0FBQ3hFLCtDQUt1QjtBQUN2Qix3RUFBcUQ7QUFDckQsZ0ZBQTZEO0FBQzdELHNDQUFnRDtBQUVoRCx5R0FBeUc7QUFDekcsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBd0IsQ0FBQztBQVV6RSxNQUFxQixrQkFBa0I7SUFNckMsWUFBWSxPQUFrQztRQUZ0QyxXQUFNLEdBQWtCLElBQUksQ0FBQztRQUduQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBQSx3QkFBbUIsR0FBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxhQUFHLEVBQUUsQ0FBQztRQUVyQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQy9CLEdBQUcsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdkMsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUZBQXVGO1FBQ3ZGLDRGQUE0RjtRQUM1RixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQy9CLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ2YsQ0FBQztZQUFDLE9BQU8sR0FBWSxFQUFFLENBQUM7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
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { BaseChatModel, RemoteTool, ToolConfig } from '@forestadmin/ai-proxy';
|
|
2
|
+
export interface GetModelOptions {
|
|
3
|
+
aiConfigName?: string;
|
|
4
|
+
userId?: number;
|
|
5
|
+
}
|
|
2
6
|
export interface AiModelPort {
|
|
3
|
-
getModel(
|
|
7
|
+
getModel(options?: GetModelOptions): BaseChatModel;
|
|
4
8
|
loadRemoteTools(configs: Record<string, ToolConfig>): Promise<RemoteTool[]>;
|
|
5
9
|
closeConnections(): Promise<void>;
|
|
6
10
|
}
|
|
@@ -14,6 +14,7 @@ export default class DatabaseStore implements RunStore {
|
|
|
14
14
|
private get tableId();
|
|
15
15
|
private get tableReference();
|
|
16
16
|
init(logger?: Logger): Promise<void>;
|
|
17
|
+
private withMigrationLock;
|
|
17
18
|
getStepExecutions(runId: string): Promise<StepExecutionData[]>;
|
|
18
19
|
saveStepExecution(runId: string, stepExecution: StepExecutionData): Promise<void>;
|
|
19
20
|
close(logger?: Logger): Promise<void>;
|
|
@@ -5,6 +5,8 @@ const umzug_1 = require("umzug");
|
|
|
5
5
|
const errors_1 = require("../errors");
|
|
6
6
|
const TABLE_NAME = 'workflow_step_executions';
|
|
7
7
|
const DEFAULT_SCHEMA = 'forest';
|
|
8
|
+
// Must stay constant across releases, or an old and a new deploy could migrate concurrently.
|
|
9
|
+
const MIGRATION_ADVISORY_LOCK_KEY = 6438071259157;
|
|
8
10
|
class DatabaseStore {
|
|
9
11
|
constructor(options) {
|
|
10
12
|
this.sequelize = options.sequelize;
|
|
@@ -28,43 +30,50 @@ class DatabaseStore {
|
|
|
28
30
|
{
|
|
29
31
|
name: '001_create_workflow_step_executions',
|
|
30
32
|
up: async ({ context }) => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
33
|
+
// Atomic (table + indexes) and idempotent so a half-applied or already-applied run
|
|
34
|
+
// can't crash-loop boot.
|
|
35
|
+
await context.sequelize.transaction(async (transaction) => {
|
|
36
|
+
if (await context.tableExists(tableId, { transaction }))
|
|
37
|
+
return;
|
|
38
|
+
await context.createTable(tableId, {
|
|
39
|
+
id: {
|
|
40
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
41
|
+
primaryKey: true,
|
|
42
|
+
autoIncrement: true,
|
|
43
|
+
},
|
|
44
|
+
runId: {
|
|
45
|
+
type: sequelize_1.DataTypes.STRING(255),
|
|
46
|
+
allowNull: false,
|
|
47
|
+
field: 'run_id',
|
|
48
|
+
},
|
|
49
|
+
stepIndex: {
|
|
50
|
+
type: sequelize_1.DataTypes.INTEGER,
|
|
51
|
+
allowNull: false,
|
|
52
|
+
field: 'step_index',
|
|
53
|
+
},
|
|
54
|
+
data: {
|
|
55
|
+
type: sequelize_1.DataTypes.JSON,
|
|
56
|
+
allowNull: false,
|
|
57
|
+
},
|
|
58
|
+
createdAt: {
|
|
59
|
+
type: sequelize_1.DataTypes.DATE,
|
|
60
|
+
allowNull: false,
|
|
61
|
+
defaultValue: sequelize_1.DataTypes.NOW,
|
|
62
|
+
field: 'created_at',
|
|
63
|
+
},
|
|
64
|
+
updatedAt: {
|
|
65
|
+
type: sequelize_1.DataTypes.DATE,
|
|
66
|
+
allowNull: false,
|
|
67
|
+
defaultValue: sequelize_1.DataTypes.NOW,
|
|
68
|
+
field: 'updated_at',
|
|
69
|
+
},
|
|
70
|
+
}, { transaction });
|
|
71
|
+
await context.addIndex(tableId, ['run_id'], { name: 'idx_run_id', transaction });
|
|
72
|
+
await context.addIndex(tableId, ['run_id', 'step_index'], {
|
|
73
|
+
unique: true,
|
|
74
|
+
name: 'idx_run_id_step_index',
|
|
75
|
+
transaction,
|
|
76
|
+
});
|
|
68
77
|
});
|
|
69
78
|
},
|
|
70
79
|
down: async ({ context }) => {
|
|
@@ -81,10 +90,21 @@ class DatabaseStore {
|
|
|
81
90
|
});
|
|
82
91
|
return this.callPort('init', async () => {
|
|
83
92
|
try {
|
|
93
|
+
if (this.sequelize.getDialect() !== 'postgres') {
|
|
94
|
+
await umzug.up();
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// The migration lock holds one pool connection while umzug opens a second.
|
|
98
|
+
const { pool } = this.sequelize.connectionManager;
|
|
99
|
+
const poolMax = pool?.maxSize ?? 1;
|
|
100
|
+
if (poolMax < 2) {
|
|
101
|
+
throw new Error('workflow-executor requires pool.max >= 2 on Postgres: the migration lock holds one connection while migrations run on another');
|
|
102
|
+
}
|
|
103
|
+
// Schema in its own committed transaction so umzug (on other connections) sees it.
|
|
84
104
|
if (schema) {
|
|
85
|
-
await this.sequelize.query(`CREATE SCHEMA IF NOT EXISTS "${schema}"
|
|
105
|
+
await this.withMigrationLock(transaction => this.sequelize.query(`CREATE SCHEMA IF NOT EXISTS "${schema}"`, { transaction }));
|
|
86
106
|
}
|
|
87
|
-
await umzug.up();
|
|
107
|
+
await this.withMigrationLock(() => umzug.up());
|
|
88
108
|
}
|
|
89
109
|
catch (error) {
|
|
90
110
|
logger?.('Error', 'Database migration failed', {
|
|
@@ -94,6 +114,22 @@ class DatabaseStore {
|
|
|
94
114
|
}
|
|
95
115
|
});
|
|
96
116
|
}
|
|
117
|
+
// Serializes booting instances via a transaction-scoped advisory lock: auto-releases at commit
|
|
118
|
+
// and is pooler-safe (RDS Proxy / PgBouncer), unlike a session lock which would leak there.
|
|
119
|
+
async withMigrationLock(run) {
|
|
120
|
+
await this.sequelize.transaction(async (transaction) => {
|
|
121
|
+
// Stop a client idle-in-transaction timeout from killing this idle txn mid-migration,
|
|
122
|
+
// which would drop the lock.
|
|
123
|
+
await this.sequelize.query('SET LOCAL idle_in_transaction_session_timeout = 0', {
|
|
124
|
+
transaction,
|
|
125
|
+
});
|
|
126
|
+
await this.sequelize.query('SELECT pg_advisory_xact_lock($1)', {
|
|
127
|
+
bind: [MIGRATION_ADVISORY_LOCK_KEY],
|
|
128
|
+
transaction,
|
|
129
|
+
});
|
|
130
|
+
await run(transaction);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
97
133
|
async getStepExecutions(runId) {
|
|
98
134
|
return this.callPort('getStepExecutions', async () => {
|
|
99
135
|
const [rows] = await this.sequelize.query(`SELECT data FROM ${this.tableReference} WHERE run_id = :runId ORDER BY step_index ASC`, { replacements: { runId } });
|
|
@@ -136,4 +172,4 @@ class DatabaseStore {
|
|
|
136
172
|
}
|
|
137
173
|
}
|
|
138
174
|
exports.default = DatabaseStore;
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2Utc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RvcmVzL2RhdGFiYXNlLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0EseUNBQXNDO0FBQ3RDLGlDQUFnRDtBQUVoRCxzQ0FBMEY7QUFFMUYsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUM7QUFDOUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBRWhDLDZGQUE2RjtBQUM3RixNQUFNLDJCQUEyQixHQUFHLGFBQWlCLENBQUM7QUFPdEQsTUFBcUIsYUFBYTtJQUtoQyxZQUFZLE9BQTZCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxDQUFDO0lBRUQsSUFBWSxNQUFNO1FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxRQUFRO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFFL0QsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLElBQUksY0FBYyxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFZLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBQ25GLENBQUM7SUFFRCxJQUFZLGNBQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUM7SUFDOUUsQ0FBQztJQUVELEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBZTtRQUN4QixNQUFNLEVBQUUsTUFBTSxFQUFFLE9B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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/workflow-executor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"forest-workflow-executor": "dist/cli.js"
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"@types/koa": "^2.13.5",
|
|
48
48
|
"@types/koa__router": "^12.0.4",
|
|
49
49
|
"@types/sequelize": "^6.12.0",
|
|
50
|
+
"pg": "^8.8.0",
|
|
50
51
|
"sqlite3": "^6.0.1",
|
|
51
52
|
"supertest": "^7.1.3"
|
|
52
53
|
}
|