@forestadmin/agent 1.100.7 → 1.102.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 +24 -3
- package/dist/types.d.ts +14 -3
- package/dist/types.js +1 -1
- package/package.json +5 -5
|
@@ -89,10 +89,31 @@ class EmbeddedWorkflowExecutor {
|
|
|
89
89
|
'store persists nothing; drop one of the two options.');
|
|
90
90
|
}
|
|
91
91
|
const { ai } = embedOptions;
|
|
92
|
-
if (ai && (!ai.provider || !ai.model
|
|
93
|
-
throw new Error('addWorkflowExecutor: `ai` requires `provider
|
|
92
|
+
if (ai && (!ai.provider || !ai.model)) {
|
|
93
|
+
throw new Error('addWorkflowExecutor: `ai` requires `provider` and `model` together. ' +
|
|
94
94
|
'Omit `ai` entirely to use Forest’s AI server.');
|
|
95
95
|
}
|
|
96
|
+
// The CLI refuses this outright; without the same check here a JS caller ships a key believing
|
|
97
|
+
// it authenticates, while ChatBedrockConverse drops it and falls back to the ambient IAM role.
|
|
98
|
+
if (ai?.provider === 'bedrock' && ai.apiKey) {
|
|
99
|
+
throw new Error('addWorkflowExecutor: `apiKey` is not used with provider `bedrock`: credentials come from ' +
|
|
100
|
+
'the AWS credential chain (IAM role, AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY, shared ' +
|
|
101
|
+
'profile). Remove it.');
|
|
102
|
+
}
|
|
103
|
+
if (ai && ai.provider !== 'bedrock' && !ai.apiKey) {
|
|
104
|
+
throw new Error(`addWorkflowExecutor: \`ai\` requires \`apiKey\` for provider '${ai.provider}'. ` +
|
|
105
|
+
'Only `bedrock` reads its credentials from the AWS credential chain.');
|
|
106
|
+
}
|
|
107
|
+
// ChatBedrockConverse demands a region at construction and reads AWS_DEFAULT_REGION only, so
|
|
108
|
+
// the AWS SDK below it never gets to resolve one from the shared profile — a deployment that
|
|
109
|
+
// sets the region the ordinary way still has none.
|
|
110
|
+
if (ai?.provider === 'bedrock' &&
|
|
111
|
+
!ai.region &&
|
|
112
|
+
!process.env.AWS_REGION &&
|
|
113
|
+
!process.env.AWS_DEFAULT_REGION) {
|
|
114
|
+
throw new Error('addWorkflowExecutor: `ai` with provider `bedrock` requires `region`, AWS_REGION or ' +
|
|
115
|
+
'AWS_DEFAULT_REGION.');
|
|
116
|
+
}
|
|
96
117
|
const port = embedOptions.port ?? DEFAULT_EMBEDDED_EXECUTOR_PORT;
|
|
97
118
|
this.config = { ...embedOptions, port };
|
|
98
119
|
return `http://127.0.0.1:${port}`;
|
|
@@ -175,4 +196,4 @@ class EmbeddedWorkflowExecutor {
|
|
|
175
196
|
}
|
|
176
197
|
}
|
|
177
198
|
exports.default = EmbeddedWorkflowExecutor;
|
|
178
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
199
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1iZWRkZWQtd29ya2Zsb3ctZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZW1iZWRkZWQtd29ya2Zsb3ctZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxnREFBd0I7QUFFeEIsK0RBQStEO0FBQy9ELE1BQU0sOEJBQThCLEdBQUcsSUFBSSxDQUFDO0FBRTVDOzs7O0dBSUc7QUFDSCxTQUFTLFNBQVMsQ0FBQyxPQUFlLEVBQUUsT0FBaUM7SUFDbkUsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQUUsT0FBTyx1QkFBdUIsT0FBTyxFQUFFLENBQUM7SUFFM0YsSUFBSSxDQUFDO1FBQ0gsT0FBTyx1QkFBdUIsT0FBTyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyx1QkFBdUIsT0FBTywyQkFBMkIsQ0FBQztJQUNuRSxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLGlCQUFpQixDQUFDLElBQWE7SUFDdEMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxJQUFJO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFFckUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDakQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFxQix3QkFBd0I7SUFJM0MsWUFBNkIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFIdEQsV0FBTSxHQUE2RCxJQUFJLENBQUM7UUFDeEUsYUFB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
|
package/dist/types.d.ts
CHANGED
|
@@ -136,13 +136,19 @@ export type WorkflowExecutorEmbedOptions = Omit<WorkflowExecutorTuningOptions, '
|
|
|
136
136
|
*/
|
|
137
137
|
port?: number;
|
|
138
138
|
/**
|
|
139
|
-
* Bring your own AI provider instead of Forest's AI server.
|
|
140
|
-
*
|
|
139
|
+
* Bring your own AI provider instead of Forest's AI server. Omit `ai` entirely to keep using
|
|
140
|
+
* Forest's server. `bedrock` takes no `apiKey`: credentials come from the AWS credential chain
|
|
141
|
+
* (IAM role, AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY, shared profile). `region` falls back to
|
|
142
|
+
* AWS_REGION / AWS_DEFAULT_REGION, but never to the profile's own `region`.
|
|
141
143
|
*/
|
|
142
144
|
ai?: {
|
|
143
145
|
provider: 'anthropic' | 'openai';
|
|
144
146
|
model: string;
|
|
145
147
|
apiKey: string;
|
|
148
|
+
} | {
|
|
149
|
+
provider: 'bedrock';
|
|
150
|
+
model: string;
|
|
151
|
+
region?: string;
|
|
146
152
|
};
|
|
147
153
|
/**
|
|
148
154
|
* HKDF secret encrypting OAuth-protected MCP connector credentials at rest. Only needed if you
|
|
@@ -167,7 +173,12 @@ export type BffEmbedOptions = {
|
|
|
167
173
|
*/
|
|
168
174
|
tokenEncryptionKey?: string;
|
|
169
175
|
/**
|
|
170
|
-
*
|
|
176
|
+
* Origins (scheme + host + port) allowed to call the BFF from a browser. An entry may carry a
|
|
177
|
+
* single `*` as its leading host label — `https://*.apps.zdusercontent.com` — which matches
|
|
178
|
+
* exactly one DNS label there, and never the scheme or the port. The host left after `*.` must
|
|
179
|
+
* be at least two non-empty labels, so `https://*.com` is refused; a two-label public suffix
|
|
180
|
+
* such as `https://*.co.uk` is not, and would allow every site under it. Any other `*` shape is
|
|
181
|
+
* refused and warned about at startup.
|
|
171
182
|
* Empty means no cross-origin browser access at all, which for a backend-for-frontend is
|
|
172
183
|
* almost always a mistake — the BFF warns about it at startup.
|
|
173
184
|
*/
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNE5BLElBQVksUUFVWDtBQVZELFdBQVksUUFBUTtJQUNsQixxREFBZ0IsQ0FBQTtJQUNoQix5REFBa0IsQ0FBQTtJQUNsQixtREFBZSxDQUFBO0lBQ2YsaURBQWMsQ0FBQTtJQUNkLDJEQUFtQixDQUFBO0lBQ25CLCtEQUFxQixDQUFBO0lBQ3JCLHVFQUF5QixDQUFBO0lBQ3pCLG1EQUFlLENBQUE7SUFDZixxQ0FBUSxDQUFBO0FBQ1YsQ0FBQyxFQVZXLFFBQVEsd0JBQVIsUUFBUSxRQVVuQjtBQUVELElBQVksU0FPWDtBQVBELFdBQVksU0FBUztJQUNuQixpR0FBaUc7SUFDakcsMkRBQWlCLENBQUE7SUFDakIseURBQWdCLENBQUE7SUFDaEIsdURBQWUsQ0FBQTtJQUNmLDZEQUFrQixDQUFBO0lBQ2xCLHlEQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFQVyxTQUFTLHlCQUFULFNBQVMsUUFPcEIifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/agent",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.102.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@fastify/express": "^1.1.0",
|
|
52
|
-
"@forestadmin/agent-bff": "1.
|
|
52
|
+
"@forestadmin/agent-bff": "1.31.0",
|
|
53
53
|
"@forestadmin/datasource-sql": "1.17.14",
|
|
54
|
-
"@forestadmin/workflow-executor": "1.
|
|
54
|
+
"@forestadmin/workflow-executor": "1.29.0",
|
|
55
55
|
"@nestjs/common": "^11.1.24",
|
|
56
56
|
"@nestjs/core": "^11.1.24",
|
|
57
57
|
"@nestjs/platform-express": "^11.1.24",
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
77
|
"@fastify/express": "^1.1.0 || ^2.0.0 || ^3.0.0 || ^4.0.0",
|
|
78
|
-
"@forestadmin/agent-bff": "1.
|
|
79
|
-
"@forestadmin/workflow-executor": "1.
|
|
78
|
+
"@forestadmin/agent-bff": "1.31.0",
|
|
79
|
+
"@forestadmin/workflow-executor": "1.29.0"
|
|
80
80
|
},
|
|
81
81
|
"peerDependenciesMeta": {
|
|
82
82
|
"@fastify/express": {
|