@mastra/factory 0.20.0-alpha.10 → 0.21.0-alpha.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/factory.d.ts +10 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +6 -3
- package/dist/factory.js.map +1 -1
- package/dist/routes/automation-runs.js +1 -1
- package/dist/routes/config.d.ts +25 -3
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/config.js +53 -11
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/oauth.js +1 -1
- package/dist/routes/projects.js +1 -1
- package/dist/routes/surface.d.ts +2 -0
- package/dist/routes/surface.d.ts.map +1 -1
- package/dist/routes/surface.js +2 -1
- package/dist/routes/surface.js.map +1 -1
- package/dist/routes/tenant-credentials.d.ts +7 -3
- package/dist/routes/tenant-credentials.d.ts.map +1 -1
- package/dist/routes/tenant-credentials.js +16 -4
- package/dist/routes/tenant-credentials.js.map +1 -1
- package/dist/routes/work-items.js +1 -1
- package/dist/session/factory-session.js +1 -1
- package/dist/session/memory-settings-hydration.js +1 -1
- package/dist/session/work-item-repository.d.ts.map +1 -1
- package/dist/session/work-item-repository.js +46 -35
- package/dist/session/work-item-repository.js.map +1 -1
- package/package.json +9 -9
package/dist/routes/config.d.ts
CHANGED
|
@@ -24,8 +24,10 @@ import type { RouteDependencies } from './route.js';
|
|
|
24
24
|
* Where a provider's active credential comes from, as seen by the caller.
|
|
25
25
|
* Local mode reports `oauth`/`stored` (server-global `auth.json`); tenant mode
|
|
26
26
|
* reports the scoped variants (`oauth-user`/`stored-user`/`stored-org`).
|
|
27
|
+
* `deployment` (tenant mode) marks a provider the operator opted in to run on
|
|
28
|
+
* the server process's own credentials (e.g. Amazon Bedrock's AWS chain).
|
|
27
29
|
*/
|
|
28
|
-
export type ProviderCredentialSource = 'oauth' | 'stored' | 'env' | 'none' | 'oauth-user' | 'oauth-org' | 'stored-user' | 'stored-org';
|
|
30
|
+
export type ProviderCredentialSource = 'deployment' | 'oauth' | 'stored' | 'env' | 'none' | 'oauth-user' | 'oauth-org' | 'stored-user' | 'stored-org';
|
|
29
31
|
/** A model provider with the current source of its credentials. */
|
|
30
32
|
export interface ProviderInfo {
|
|
31
33
|
provider: string;
|
|
@@ -114,10 +116,11 @@ interface ModelCatalog {
|
|
|
114
116
|
* *caller's* tenant rows with user > org precedence and the server-global
|
|
115
117
|
* `authStorage` is ignored; otherwise the local `auth.json` view is reported.
|
|
116
118
|
*/
|
|
117
|
-
export declare function listProviders({ controller, authStorage, tenantCredentials, }: {
|
|
119
|
+
export declare function listProviders({ controller, authStorage, tenantCredentials, deploymentProviders, }: {
|
|
118
120
|
controller: ModelCatalog;
|
|
119
121
|
authStorage?: AuthStorage;
|
|
120
122
|
tenantCredentials?: CredentialRecord[];
|
|
123
|
+
deploymentProviders?: ReadonlySet<string>;
|
|
121
124
|
}): Promise<ProviderInfo[]>;
|
|
122
125
|
/** A user-defined OpenAI-compatible provider, with key presence (never the key). */
|
|
123
126
|
export interface CustomProviderInfo {
|
|
@@ -127,15 +130,29 @@ export interface CustomProviderInfo {
|
|
|
127
130
|
hasApiKey: boolean;
|
|
128
131
|
models: string[];
|
|
129
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Providers whose credentials can only come from the server process (Amazon
|
|
135
|
+
* Bedrock authenticates through the AWS credential chain). In tenant mode they
|
|
136
|
+
* are usable only when the operator lists them in
|
|
137
|
+
* `MastraFactoryConfig.deploymentModelProviders`.
|
|
138
|
+
*/
|
|
139
|
+
export declare const DEPLOYMENT_MODEL_PROVIDERS: readonly string[];
|
|
140
|
+
export declare function isDeploymentModelProvider(provider: string): boolean;
|
|
141
|
+
/**
|
|
142
|
+
* Normalize the operator's `deploymentModelProviders` list. Unsupported ids are
|
|
143
|
+
* ignored with a warning rather than failing boot.
|
|
144
|
+
*/
|
|
145
|
+
export declare function resolveDeploymentModelProviders(providers: readonly string[] | undefined): ReadonlySet<string>;
|
|
130
146
|
/**
|
|
131
147
|
* Compute which providers the user can reach, mirroring the TUI's
|
|
132
148
|
* `/models-pack` access derivation: OAuth/api-key from the credential store for
|
|
133
149
|
* the named providers, plus any other provider that has a usable key.
|
|
134
150
|
*/
|
|
135
|
-
export declare function buildProviderAccess({ controller, authStorage, tenantCredentials, }: {
|
|
151
|
+
export declare function buildProviderAccess({ controller, authStorage, tenantCredentials, deploymentProviders, }: {
|
|
136
152
|
controller: ModelCatalog;
|
|
137
153
|
authStorage?: AuthStorage;
|
|
138
154
|
tenantCredentials?: CredentialRecord[];
|
|
155
|
+
deploymentProviders?: ReadonlySet<string>;
|
|
139
156
|
}): Promise<ProviderAccess>;
|
|
140
157
|
/** Per-user default model context for the current request. */
|
|
141
158
|
export interface ModelDefaultsContext {
|
|
@@ -203,6 +220,11 @@ export interface ConfigRoutesDeps extends RouteDependencies {
|
|
|
203
220
|
onCustomProvidersChanged?: (tenant: {
|
|
204
221
|
orgId: string;
|
|
205
222
|
}) => void;
|
|
223
|
+
/**
|
|
224
|
+
* Tenant mode: providers the operator opted in to run on the server process's
|
|
225
|
+
* own credentials (see `DEPLOYMENT_MODEL_PROVIDERS`).
|
|
226
|
+
*/
|
|
227
|
+
deploymentProviders?: ReadonlySet<string>;
|
|
206
228
|
/**
|
|
207
229
|
* Path of the server's settings.json backing the deployment-scoped thinking
|
|
208
230
|
* defaults. Defaults to the standard app-data location; injectable for tests.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,mCAAmC,CAAC;AAQ7F,OAAO,KAAK,EAAyB,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/routes/config.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/config.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { WEB_OAUTH_FLOW_KINDS, getAuthProviderId, listTenantCredentialsForRequest, resolveCredentialContext, tenantOrgId } from "./provider-credentials.js";
|
|
2
|
-
import { Route } from "./route.js";
|
|
3
2
|
import { factoryMemorySettingsUserId } from "../storage/domains/memory-settings/base.js";
|
|
4
3
|
import { applyStoredMemorySettings } from "../session/memory-settings-hydration.js";
|
|
5
4
|
import { seedPersonalOmDefaults } from "./om-seed.js";
|
|
5
|
+
import { Route } from "./route.js";
|
|
6
6
|
import { registerApiRoute } from "@mastra/core/server";
|
|
7
7
|
import { z } from "zod";
|
|
8
|
-
import { resolveProviderOMDefault } from "@mastra/code-sdk/onboarding/packs";
|
|
9
8
|
import { DEFAULT_OM_MODEL_ID } from "@mastra/code-sdk/constants";
|
|
9
|
+
import { resolveProviderOMDefault } from "@mastra/code-sdk/onboarding/packs";
|
|
10
10
|
import { THINKING_LEVEL_VALUES, getCustomProviderId, isThinkingLevelSetting, loadSettings, saveSettings } from "@mastra/code-sdk/onboarding/settings";
|
|
11
|
+
import { AMAZON_BEDROCK_GATEWAY_ID } from "@mastra/code-sdk/providers/amazon-bedrock-gateway";
|
|
11
12
|
//#region src/routes/config.ts
|
|
12
13
|
/** Widen a route-local Hono context to the plain `Context` the auth helpers take. */
|
|
13
14
|
function loose(c) {
|
|
@@ -22,11 +23,18 @@ function loose(c) {
|
|
|
22
23
|
* *caller's* tenant rows with user > org precedence and the server-global
|
|
23
24
|
* `authStorage` is ignored; otherwise the local `auth.json` view is reported.
|
|
24
25
|
*/
|
|
25
|
-
async function listProviders({ controller, authStorage, tenantCredentials }) {
|
|
26
|
+
async function listProviders({ controller, authStorage, tenantCredentials, deploymentProviders }) {
|
|
26
27
|
const models = await controller.listAvailableModels();
|
|
27
28
|
const seen = /* @__PURE__ */ new Map();
|
|
28
29
|
for (const model of models) {
|
|
29
30
|
if (seen.has(model.provider)) continue;
|
|
31
|
+
if (tenantCredentials && isDeploymentModelProvider(model.provider)) {
|
|
32
|
+
if (deploymentProviders?.has(model.provider) && models.some((m) => m.provider === model.provider && m.hasApiKey)) seen.set(model.provider, {
|
|
33
|
+
provider: model.provider,
|
|
34
|
+
source: "deployment"
|
|
35
|
+
});
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
30
38
|
const authProviderId = getAuthProviderId(model.provider);
|
|
31
39
|
let source = "none";
|
|
32
40
|
let orgKey;
|
|
@@ -120,16 +128,41 @@ function parseCustomProviderBody(body) {
|
|
|
120
128
|
};
|
|
121
129
|
}
|
|
122
130
|
/**
|
|
131
|
+
* Providers whose credentials can only come from the server process (Amazon
|
|
132
|
+
* Bedrock authenticates through the AWS credential chain). In tenant mode they
|
|
133
|
+
* are usable only when the operator lists them in
|
|
134
|
+
* `MastraFactoryConfig.deploymentModelProviders`.
|
|
135
|
+
*/
|
|
136
|
+
const DEPLOYMENT_MODEL_PROVIDERS = [AMAZON_BEDROCK_GATEWAY_ID];
|
|
137
|
+
function isDeploymentModelProvider(provider) {
|
|
138
|
+
return DEPLOYMENT_MODEL_PROVIDERS.includes(provider);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Normalize the operator's `deploymentModelProviders` list. Unsupported ids are
|
|
142
|
+
* ignored with a warning rather than failing boot.
|
|
143
|
+
*/
|
|
144
|
+
function resolveDeploymentModelProviders(providers) {
|
|
145
|
+
const resolved = /* @__PURE__ */ new Set();
|
|
146
|
+
for (const raw of providers ?? []) {
|
|
147
|
+
const provider = raw.trim();
|
|
148
|
+
if (!provider) continue;
|
|
149
|
+
if (isDeploymentModelProvider(provider)) resolved.add(provider);
|
|
150
|
+
else console.warn(`[factory] Ignoring deployment model provider "${provider}". Supported: ${DEPLOYMENT_MODEL_PROVIDERS.join(", ")}.`);
|
|
151
|
+
}
|
|
152
|
+
return resolved;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
123
155
|
* Compute which providers the user can reach, mirroring the TUI's
|
|
124
156
|
* `/models-pack` access derivation: OAuth/api-key from the credential store for
|
|
125
157
|
* the named providers, plus any other provider that has a usable key.
|
|
126
158
|
*/
|
|
127
|
-
async function buildProviderAccess({ controller, authStorage, tenantCredentials }) {
|
|
159
|
+
async function buildProviderAccess({ controller, authStorage, tenantCredentials, deploymentProviders }) {
|
|
128
160
|
const models = await controller.listAvailableModels();
|
|
129
161
|
const hasModelKey = (provider) => models.some((m) => m.provider === provider && m.hasApiKey);
|
|
130
162
|
const accessLevel = (provider) => {
|
|
131
163
|
const authProviderId = getAuthProviderId(provider);
|
|
132
164
|
if (tenantCredentials) {
|
|
165
|
+
if (isDeploymentModelProvider(provider)) return deploymentProviders?.has(provider) && hasModelKey(provider) ? "apikey" : false;
|
|
133
166
|
const userRec = tenantCredentials.find((r) => r.scope === "user" && r.provider === authProviderId);
|
|
134
167
|
const orgRec = tenantCredentials.find((r) => r.scope === "org" && r.provider === authProviderId);
|
|
135
168
|
const credential = userRec?.credential ?? orgRec?.credential;
|
|
@@ -273,7 +306,7 @@ async function persistMemorySettings(context, patch, fillIfUnset) {
|
|
|
273
306
|
var ConfigRoutes = class extends Route {
|
|
274
307
|
routes() {
|
|
275
308
|
const options = this.deps;
|
|
276
|
-
const { controller, authStorage, auth } = options;
|
|
309
|
+
const { controller, authStorage, auth, deploymentProviders } = options;
|
|
277
310
|
const onCredentialsChanged = options.onCredentialsChanged ?? (() => {});
|
|
278
311
|
const onCustomProvidersChanged = options.onCustomProvidersChanged ?? (() => {});
|
|
279
312
|
const factoryOmFallback = async (factoryProjectId) => {
|
|
@@ -308,7 +341,8 @@ var ConfigRoutes = class extends Route {
|
|
|
308
341
|
providers: await listProviders({
|
|
309
342
|
controller,
|
|
310
343
|
authStorage: tenantCredentials ? void 0 : authStorage,
|
|
311
|
-
tenantCredentials
|
|
344
|
+
tenantCredentials,
|
|
345
|
+
deploymentProviders
|
|
312
346
|
}),
|
|
313
347
|
...orgKeyAdmin !== void 0 ? { orgKeyAdmin } : {}
|
|
314
348
|
});
|
|
@@ -340,6 +374,10 @@ var ConfigRoutes = class extends Route {
|
|
|
340
374
|
const scope = body.scope === "org" ? "org" : "user";
|
|
341
375
|
try {
|
|
342
376
|
if (ctx.mode === "tenant") {
|
|
377
|
+
if (isDeploymentModelProvider(provider)) return c.json({
|
|
378
|
+
error: "provider_configured_by_deployment",
|
|
379
|
+
message: `${provider} is configured by the Factory deployment (credentials on the server), not per account.`
|
|
380
|
+
}, 400);
|
|
343
381
|
if (scope === "org" && !await auth.isOrganizationAdmin(loose(c), ctx.orgId)) return c.json({ error: "organization_admin_required" }, 403);
|
|
344
382
|
const tenant = scope === "org" ? { orgId: ctx.orgId } : {
|
|
345
383
|
orgId: ctx.orgId,
|
|
@@ -358,7 +396,8 @@ var ConfigRoutes = class extends Route {
|
|
|
358
396
|
const records = await ctx.storage.listCredentials(ctx.orgId, ctx.userId);
|
|
359
397
|
const providers = await listProviders({
|
|
360
398
|
controller,
|
|
361
|
-
tenantCredentials: records
|
|
399
|
+
tenantCredentials: records,
|
|
400
|
+
deploymentProviders
|
|
362
401
|
});
|
|
363
402
|
return c.json({
|
|
364
403
|
ok: true,
|
|
@@ -404,7 +443,8 @@ var ConfigRoutes = class extends Route {
|
|
|
404
443
|
const records = await ctx.storage.listCredentials(ctx.orgId, ctx.userId);
|
|
405
444
|
const providers = await listProviders({
|
|
406
445
|
controller,
|
|
407
|
-
tenantCredentials: records
|
|
446
|
+
tenantCredentials: records,
|
|
447
|
+
deploymentProviders
|
|
408
448
|
});
|
|
409
449
|
return c.json({
|
|
410
450
|
ok: true,
|
|
@@ -522,7 +562,8 @@ var ConfigRoutes = class extends Route {
|
|
|
522
562
|
const [models, access] = await Promise.all([controller.listAvailableModels(), buildProviderAccess({
|
|
523
563
|
controller,
|
|
524
564
|
authStorage: tenantCredentials ? void 0 : authStorage,
|
|
525
|
-
tenantCredentials
|
|
565
|
+
tenantCredentials,
|
|
566
|
+
deploymentProviders
|
|
526
567
|
})]);
|
|
527
568
|
const catalog = models.filter((m) => canUseModelProvider(access, m.provider) && typeof m.id === "string").map((m) => ({
|
|
528
569
|
id: m.id,
|
|
@@ -728,7 +769,8 @@ var ConfigRoutes = class extends Route {
|
|
|
728
769
|
if (!(await buildProviderAccess({
|
|
729
770
|
controller,
|
|
730
771
|
authStorage: tenantCredentials ? void 0 : authStorage,
|
|
731
|
-
tenantCredentials
|
|
772
|
+
tenantCredentials,
|
|
773
|
+
deploymentProviders
|
|
732
774
|
}))[providerId]) return c.json({ error: `Provider "${providerId}" is not configured` }, 400);
|
|
733
775
|
const modelId = resolveProviderOMDefault(providerId, factoryModelId).modelId;
|
|
734
776
|
const record = await context.storage.patch({
|
|
@@ -932,6 +974,6 @@ var ConfigRoutes = class extends Route {
|
|
|
932
974
|
}
|
|
933
975
|
};
|
|
934
976
|
//#endregion
|
|
935
|
-
export { ConfigRoutes, buildProviderAccess, listProviders, readOMConfig };
|
|
977
|
+
export { ConfigRoutes, DEPLOYMENT_MODEL_PROVIDERS, buildProviderAccess, isDeploymentModelProvider, listProviders, readOMConfig, resolveDeploymentModelProviders };
|
|
936
978
|
|
|
937
979
|
//# sourceMappingURL=config.js.map
|