@shipfox/api-agent 5.0.0 → 7.1.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +43 -0
- package/dist/core/custom-model-provider-config-service.d.ts +4 -0
- package/dist/core/custom-model-provider-config-service.d.ts.map +1 -1
- package/dist/core/custom-model-provider-config-service.js +36 -17
- package/dist/core/custom-model-provider-config-service.js.map +1 -1
- package/dist/core/model-provider-config-service.d.ts +4 -0
- package/dist/core/model-provider-config-service.d.ts.map +1 -1
- package/dist/core/model-provider-config-service.js +27 -9
- package/dist/core/model-provider-config-service.js.map +1 -1
- package/dist/core/resolve-runtime-credentials.d.ts +6 -2
- package/dist/core/resolve-runtime-credentials.d.ts.map +1 -1
- package/dist/core/resolve-runtime-credentials.js +10 -5
- package/dist/core/resolve-runtime-credentials.js.map +1 -1
- package/dist/core/secrets-client.d.ts +4 -0
- package/dist/core/secrets-client.d.ts.map +1 -0
- package/dist/core/secrets-client.js +6 -0
- package/dist/core/secrets-client.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -13
- package/dist/index.js.map +1 -1
- package/dist/presentation/e2eRoutes/create-model-provider.d.ts +2 -1
- package/dist/presentation/e2eRoutes/create-model-provider.d.ts.map +1 -1
- package/dist/presentation/e2eRoutes/create-model-provider.js +46 -45
- package/dist/presentation/e2eRoutes/create-model-provider.js.map +1 -1
- package/dist/presentation/e2eRoutes/index.d.ts +2 -0
- package/dist/presentation/e2eRoutes/index.d.ts.map +1 -1
- package/dist/presentation/e2eRoutes/index.js +9 -6
- package/dist/presentation/e2eRoutes/index.js.map +1 -1
- package/dist/presentation/index.d.ts +1 -1
- package/dist/presentation/index.d.ts.map +1 -1
- package/dist/presentation/index.js +1 -1
- package/dist/presentation/index.js.map +1 -1
- package/dist/presentation/inter-module.d.ts +7 -0
- package/dist/presentation/inter-module.d.ts.map +1 -0
- package/dist/presentation/inter-module.js +45 -0
- package/dist/presentation/inter-module.js.map +1 -0
- package/dist/presentation/routes/create-custom-model-provider.d.ts +2 -1
- package/dist/presentation/routes/create-custom-model-provider.d.ts.map +1 -1
- package/dist/presentation/routes/create-custom-model-provider.js +39 -35
- package/dist/presentation/routes/create-custom-model-provider.js.map +1 -1
- package/dist/presentation/routes/delete-model-provider-config.d.ts +2 -1
- package/dist/presentation/routes/delete-model-provider-config.d.ts.map +1 -1
- package/dist/presentation/routes/delete-model-provider-config.js +33 -29
- package/dist/presentation/routes/delete-model-provider-config.js.map +1 -1
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.d.ts +2 -1
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.d.ts.map +1 -1
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.js +32 -28
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.js.map +1 -1
- package/dist/presentation/routes/errors.d.ts.map +1 -1
- package/dist/presentation/routes/errors.js +13 -12
- package/dist/presentation/routes/errors.js.map +1 -1
- package/dist/presentation/routes/index.d.ts +2 -0
- package/dist/presentation/routes/index.d.ts.map +1 -1
- package/dist/presentation/routes/index.js +32 -29
- package/dist/presentation/routes/index.js.map +1 -1
- package/dist/presentation/routes/update-custom-model-provider.d.ts +2 -1
- package/dist/presentation/routes/update-custom-model-provider.d.ts.map +1 -1
- package/dist/presentation/routes/update-custom-model-provider.js +41 -37
- package/dist/presentation/routes/update-custom-model-provider.js.map +1 -1
- package/dist/presentation/routes/upsert-model-provider-config.d.ts +2 -1
- package/dist/presentation/routes/upsert-model-provider-config.d.ts.map +1 -1
- package/dist/presentation/routes/upsert-model-provider-config.js +46 -42
- package/dist/presentation/routes/upsert-model-provider-config.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +12 -18
- package/src/core/custom-model-provider-config-service.ts +63 -35
- package/src/core/model-provider-config-service.test.ts +1 -3
- package/src/core/model-provider-config-service.ts +31 -16
- package/src/core/resolve-runtime-credentials.test.ts +3 -3
- package/src/core/resolve-runtime-credentials.ts +22 -8
- package/src/core/secrets-client.ts +13 -0
- package/src/index.ts +13 -8
- package/src/presentation/e2eRoutes/create-model-provider.ts +41 -39
- package/src/presentation/e2eRoutes/index.ts +6 -4
- package/src/presentation/index.ts +1 -1
- package/src/presentation/inter-module.ts +78 -0
- package/src/presentation/routes/create-custom-model-provider.ts +36 -30
- package/src/presentation/routes/delete-model-provider-config.ts +25 -22
- package/src/presentation/routes/discover-custom-model-provider-models-by-slug.ts +31 -25
- package/src/presentation/routes/errors.ts +11 -11
- package/src/presentation/routes/index.ts +32 -27
- package/src/presentation/routes/model-provider-config.test.ts +1 -1
- package/src/presentation/routes/update-custom-model-provider.ts +40 -34
- package/src/presentation/routes/upsert-model-provider-config.ts +43 -37
- package/test/fixtures/secrets-client.ts +80 -0
- package/test/globalSetup.ts +0 -9
- package/test/setup.ts +8 -0
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AgentSecretsClient } from '#core/secrets-client.js';
|
|
2
|
+
export declare function createDeleteModelProviderConfigRoute(secrets: AgentSecretsClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
2
3
|
//# sourceMappingURL=delete-model-provider-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-model-provider-config.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/delete-model-provider-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-model-provider-config.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/delete-model-provider-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAEhE,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,kBAAkB,mDA0B/E"}
|
|
@@ -3,36 +3,40 @@ import { requireWorkspaceAccess } from '@shipfox/api-auth-context';
|
|
|
3
3
|
import { ClientError, defineRoute } from '@shipfox/node-fastify';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { deleteModelProviderConfig } from '#core/index.js';
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
status: 404
|
|
6
|
+
export function createDeleteModelProviderConfigRoute(secrets) {
|
|
7
|
+
return defineRoute({
|
|
8
|
+
method: 'DELETE',
|
|
9
|
+
path: '/model-providers/:providerId',
|
|
10
|
+
description: 'Delete a model provider configuration for a workspace',
|
|
11
|
+
schema: {
|
|
12
|
+
params: z.object({
|
|
13
|
+
workspaceId: z.string().uuid(),
|
|
14
|
+
providerId: modelProviderRefSchema
|
|
15
|
+
}),
|
|
16
|
+
response: {
|
|
17
|
+
204: z.void()
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
handler: async (request, reply)=>{
|
|
21
|
+
const { workspaceId, providerId } = request.params;
|
|
22
|
+
requireWorkspaceAccess({
|
|
23
|
+
request,
|
|
24
|
+
workspaceId
|
|
25
|
+
});
|
|
26
|
+
const deleted = await deleteModelProviderConfig({
|
|
27
|
+
workspaceId,
|
|
28
|
+
providerId
|
|
29
|
+
}, {
|
|
30
|
+
secrets
|
|
32
31
|
});
|
|
32
|
+
if (!deleted) {
|
|
33
|
+
throw new ClientError('Model provider configuration not found', 'not-found', {
|
|
34
|
+
status: 404
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
reply.code(204);
|
|
33
38
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
});
|
|
39
|
+
});
|
|
40
|
+
}
|
|
37
41
|
|
|
38
42
|
//# sourceMappingURL=delete-model-provider-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/delete-model-provider-config.ts"],"sourcesContent":["import {modelProviderRefSchema} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {deleteModelProviderConfig} from '#core/index.js';\n\nexport
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/delete-model-provider-config.ts"],"sourcesContent":["import {modelProviderRefSchema} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {ClientError, defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {deleteModelProviderConfig} from '#core/index.js';\nimport type {AgentSecretsClient} from '#core/secrets-client.js';\n\nexport function createDeleteModelProviderConfigRoute(secrets: AgentSecretsClient) {\n return defineRoute({\n method: 'DELETE',\n path: '/model-providers/:providerId',\n description: 'Delete a model provider configuration for a workspace',\n schema: {\n params: z.object({\n workspaceId: z.string().uuid(),\n providerId: modelProviderRefSchema,\n }),\n response: {\n 204: z.void(),\n },\n },\n handler: async (request, reply) => {\n const {workspaceId, providerId} = request.params;\n requireWorkspaceAccess({request, workspaceId});\n\n const deleted = await deleteModelProviderConfig({workspaceId, providerId}, {secrets});\n if (!deleted) {\n throw new ClientError('Model provider configuration not found', 'not-found', {status: 404});\n }\n\n reply.code(204);\n },\n });\n}\n"],"names":["modelProviderRefSchema","requireWorkspaceAccess","ClientError","defineRoute","z","deleteModelProviderConfig","createDeleteModelProviderConfigRoute","secrets","method","path","description","schema","params","object","workspaceId","string","uuid","providerId","response","void","handler","request","reply","deleted","status","code"],"mappings":"AAAA,SAAQA,sBAAsB,QAAO,yBAAyB;AAC9D,SAAQC,sBAAsB,QAAO,4BAA4B;AACjE,SAAQC,WAAW,EAAEC,WAAW,QAAO,wBAAwB;AAC/D,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,yBAAyB,QAAO,iBAAiB;AAGzD,OAAO,SAASC,qCAAqCC,OAA2B;IAC9E,OAAOJ,YAAY;QACjBK,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQR,EAAES,MAAM,CAAC;gBACfC,aAAaV,EAAEW,MAAM,GAAGC,IAAI;gBAC5BC,YAAYjB;YACd;YACAkB,UAAU;gBACR,KAAKd,EAAEe,IAAI;YACb;QACF;QACAC,SAAS,OAAOC,SAASC;YACvB,MAAM,EAACR,WAAW,EAAEG,UAAU,EAAC,GAAGI,QAAQT,MAAM;YAChDX,uBAAuB;gBAACoB;gBAASP;YAAW;YAE5C,MAAMS,UAAU,MAAMlB,0BAA0B;gBAACS;gBAAaG;YAAU,GAAG;gBAACV;YAAO;YACnF,IAAI,CAACgB,SAAS;gBACZ,MAAM,IAAIrB,YAAY,0CAA0C,aAAa;oBAACsB,QAAQ;gBAAG;YAC3F;YAEAF,MAAMG,IAAI,CAAC;QACb;IACF;AACF"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AgentSecretsClient } from '#core/secrets-client.js';
|
|
2
|
+
export declare function createDiscoverCustomModelProviderModelsBySlugRoute(secrets: AgentSecretsClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
2
3
|
//# sourceMappingURL=discover-custom-model-provider-models-by-slug.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover-custom-model-provider-models-by-slug.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/discover-custom-model-provider-models-by-slug.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discover-custom-model-provider-models-by-slug.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/discover-custom-model-provider-models-by-slug.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAGhE,wBAAgB,kDAAkD,CAAC,OAAO,EAAE,kBAAkB,mDAgC7F"}
|
|
@@ -4,34 +4,38 @@ import { defineRoute } from '@shipfox/node-fastify';
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { discoverCustomModelProviderModels, resolveCustomModelProviderDiscoveryParams } from '#core/index.js';
|
|
6
6
|
import { translateModelProviderRouteError } from './errors.js';
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
7
|
+
export function createDiscoverCustomModelProviderModelsBySlugRoute(secrets) {
|
|
8
|
+
return defineRoute({
|
|
9
|
+
method: 'POST',
|
|
10
|
+
path: '/custom-model-providers/:slug/discover-models',
|
|
11
|
+
description: 'Discover models for a stored custom model provider configuration',
|
|
12
|
+
schema: {
|
|
13
|
+
params: z.object({
|
|
14
|
+
workspaceId: z.string().uuid(),
|
|
15
|
+
slug: modelProviderRefSchema
|
|
16
|
+
}),
|
|
17
|
+
body: discoverCustomModelProviderModelsBySlugBodySchema,
|
|
18
|
+
response: {
|
|
19
|
+
200: discoverCustomModelProviderModelsResponseSchema
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
errorHandler: translateModelProviderRouteError,
|
|
23
|
+
handler: async (request)=>{
|
|
24
|
+
const { workspaceId, slug } = request.params;
|
|
25
|
+
requireWorkspaceAccess({
|
|
26
|
+
request,
|
|
27
|
+
workspaceId
|
|
28
|
+
});
|
|
29
|
+
const discoveryParams = await resolveCustomModelProviderDiscoveryParams({
|
|
30
|
+
workspaceId,
|
|
31
|
+
providerId: slug,
|
|
32
|
+
body: request.body ?? {}
|
|
33
|
+
}, {
|
|
34
|
+
secrets
|
|
35
|
+
});
|
|
36
|
+
return await discoverCustomModelProviderModels(discoveryParams);
|
|
19
37
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
handler: async (request)=>{
|
|
23
|
-
const { workspaceId, slug } = request.params;
|
|
24
|
-
requireWorkspaceAccess({
|
|
25
|
-
request,
|
|
26
|
-
workspaceId
|
|
27
|
-
});
|
|
28
|
-
const discoveryParams = await resolveCustomModelProviderDiscoveryParams({
|
|
29
|
-
workspaceId,
|
|
30
|
-
providerId: slug,
|
|
31
|
-
body: request.body ?? {}
|
|
32
|
-
});
|
|
33
|
-
return await discoverCustomModelProviderModels(discoveryParams);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
36
40
|
|
|
37
41
|
//# sourceMappingURL=discover-custom-model-provider-models-by-slug.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/discover-custom-model-provider-models-by-slug.ts"],"sourcesContent":["import {\n discoverCustomModelProviderModelsBySlugBodySchema,\n discoverCustomModelProviderModelsResponseSchema,\n modelProviderRefSchema,\n} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {\n discoverCustomModelProviderModels,\n resolveCustomModelProviderDiscoveryParams,\n} from '#core/index.js';\nimport {translateModelProviderRouteError} from './errors.js';\n\nexport
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/discover-custom-model-provider-models-by-slug.ts"],"sourcesContent":["import {\n discoverCustomModelProviderModelsBySlugBodySchema,\n discoverCustomModelProviderModelsResponseSchema,\n modelProviderRefSchema,\n} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {\n discoverCustomModelProviderModels,\n resolveCustomModelProviderDiscoveryParams,\n} from '#core/index.js';\nimport type {AgentSecretsClient} from '#core/secrets-client.js';\nimport {translateModelProviderRouteError} from './errors.js';\n\nexport function createDiscoverCustomModelProviderModelsBySlugRoute(secrets: AgentSecretsClient) {\n return defineRoute({\n method: 'POST',\n path: '/custom-model-providers/:slug/discover-models',\n description: 'Discover models for a stored custom model provider configuration',\n schema: {\n params: z.object({\n workspaceId: z.string().uuid(),\n slug: modelProviderRefSchema,\n }),\n body: discoverCustomModelProviderModelsBySlugBodySchema,\n response: {\n 200: discoverCustomModelProviderModelsResponseSchema,\n },\n },\n errorHandler: translateModelProviderRouteError,\n handler: async (request) => {\n const {workspaceId, slug} = request.params;\n requireWorkspaceAccess({request, workspaceId});\n\n const discoveryParams = await resolveCustomModelProviderDiscoveryParams(\n {\n workspaceId,\n providerId: slug,\n body: request.body ?? {},\n },\n {secrets},\n );\n\n return await discoverCustomModelProviderModels(discoveryParams);\n },\n });\n}\n"],"names":["discoverCustomModelProviderModelsBySlugBodySchema","discoverCustomModelProviderModelsResponseSchema","modelProviderRefSchema","requireWorkspaceAccess","defineRoute","z","discoverCustomModelProviderModels","resolveCustomModelProviderDiscoveryParams","translateModelProviderRouteError","createDiscoverCustomModelProviderModelsBySlugRoute","secrets","method","path","description","schema","params","object","workspaceId","string","uuid","slug","body","response","errorHandler","handler","request","discoveryParams","providerId"],"mappings":"AAAA,SACEA,iDAAiD,EACjDC,+CAA+C,EAC/CC,sBAAsB,QACjB,yBAAyB;AAChC,SAAQC,sBAAsB,QAAO,4BAA4B;AACjE,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SACEC,iCAAiC,EACjCC,yCAAyC,QACpC,iBAAiB;AAExB,SAAQC,gCAAgC,QAAO,cAAc;AAE7D,OAAO,SAASC,mDAAmDC,OAA2B;IAC5F,OAAON,YAAY;QACjBO,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQV,EAAEW,MAAM,CAAC;gBACfC,aAAaZ,EAAEa,MAAM,GAAGC,IAAI;gBAC5BC,MAAMlB;YACR;YACAmB,MAAMrB;YACNsB,UAAU;gBACR,KAAKrB;YACP;QACF;QACAsB,cAAcf;QACdgB,SAAS,OAAOC;YACd,MAAM,EAACR,WAAW,EAAEG,IAAI,EAAC,GAAGK,QAAQV,MAAM;YAC1CZ,uBAAuB;gBAACsB;gBAASR;YAAW;YAE5C,MAAMS,kBAAkB,MAAMnB,0CAC5B;gBACEU;gBACAU,YAAYP;gBACZC,MAAMI,QAAQJ,IAAI,IAAI,CAAC;YACzB,GACA;gBAACX;YAAO;YAGV,OAAO,MAAMJ,kCAAkCoB;QACjD;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/errors.ts"],"names":[],"mappings":"AAiBA,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAwGtE"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { getModelProviderCredentialKeys } from '@shipfox/api-agent-dto';
|
|
2
|
-
import {
|
|
2
|
+
import { secretsInterModuleContract } from '@shipfox/api-secrets-dto/inter-module';
|
|
3
|
+
import { isInterModuleKnownError } from '@shipfox/inter-module';
|
|
3
4
|
import { EgressDeniedError } from '@shipfox/node-egress-guard';
|
|
4
5
|
import { ClientError } from '@shipfox/node-fastify';
|
|
5
6
|
import { CustomModelProviderConfigNotFoundError, CustomModelProviderSlugCollisionError, CustomModelProviderStoredSecretBaseUrlChangeError, InvalidAgentModelError, InvalidCredentialFieldsError, InvalidCustomModelProviderHeaderKeepError, ModelProviderConfigNotFoundError, ModelProviderValidationError, UnsupportedModelProviderError } from '#core/index.js';
|
|
@@ -90,19 +91,19 @@ export function translateModelProviderRouteError(error) {
|
|
|
90
91
|
}
|
|
91
92
|
});
|
|
92
93
|
}
|
|
93
|
-
if (error
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
throw new ClientError(
|
|
94
|
+
if (isInterModuleKnownError(secretsInterModuleContract.methods.setSecrets, error)) {
|
|
95
|
+
if (error.code === 'workspace-secret-cap-exceeded') {
|
|
96
|
+
throw new ClientError('Workspace secret cap exceeded', 'workspace-secret-cap-exceeded', {
|
|
97
|
+
status: 409,
|
|
98
|
+
details: {
|
|
99
|
+
cap: error.details.cap
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
throw new ClientError('Secret value is too large', 'value-too-large', {
|
|
103
104
|
status: 400,
|
|
104
105
|
details: {
|
|
105
|
-
max_bytes: error.maxBytes
|
|
106
|
+
max_bytes: error.details.maxBytes
|
|
106
107
|
}
|
|
107
108
|
});
|
|
108
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/errors.ts"],"sourcesContent":["import {getModelProviderCredentialKeys} from '@shipfox/api-agent-dto';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/errors.ts"],"sourcesContent":["import {getModelProviderCredentialKeys} from '@shipfox/api-agent-dto';\nimport {secretsInterModuleContract} from '@shipfox/api-secrets-dto/inter-module';\nimport {isInterModuleKnownError} from '@shipfox/inter-module';\nimport {EgressDeniedError} from '@shipfox/node-egress-guard';\nimport {ClientError} from '@shipfox/node-fastify';\nimport {\n CustomModelProviderConfigNotFoundError,\n CustomModelProviderSlugCollisionError,\n CustomModelProviderStoredSecretBaseUrlChangeError,\n InvalidAgentModelError,\n InvalidCredentialFieldsError,\n InvalidCustomModelProviderHeaderKeepError,\n ModelProviderConfigNotFoundError,\n ModelProviderValidationError,\n UnsupportedModelProviderError,\n} from '#core/index.js';\n\nexport function translateModelProviderRouteError(error: unknown): never {\n if (error instanceof ModelProviderValidationError) {\n throw new ClientError(error.sanitizedMessage, 'provider-validation-failed', {\n status: 422,\n details: {\n provider_id: error.providerId,\n message: error.sanitizedMessage,\n },\n });\n }\n\n if (error instanceof EgressDeniedError) {\n throw new ClientError('Egress denied', 'egress-denied', {\n status: 400,\n details: {\n reason: error.reason,\n target: error.target,\n },\n });\n }\n\n if (error instanceof CustomModelProviderSlugCollisionError) {\n throw new ClientError('Custom model provider slug already exists', 'slug-collision', {\n status: 409,\n details: {provider_id: error.providerId},\n });\n }\n\n if (error instanceof CustomModelProviderConfigNotFoundError) {\n throw new ClientError('Custom model provider configuration not found', 'not-found', {\n status: 404,\n details: {provider_id: error.providerId},\n });\n }\n\n if (error instanceof InvalidCustomModelProviderHeaderKeepError) {\n throw new ClientError('Invalid kept secret header', 'invalid-header-keep', {\n status: 422,\n details: {provider_id: error.providerId, name: error.headerName},\n });\n }\n\n if (error instanceof CustomModelProviderStoredSecretBaseUrlChangeError) {\n throw new ClientError(\n 'Stored custom model provider secrets cannot be reused with a changed base URL',\n 'stored-secret-base-url-changed',\n {\n status: 422,\n details: {provider_id: error.providerId},\n },\n );\n }\n\n if (error instanceof InvalidCredentialFieldsError) {\n throw new ClientError('Invalid credential fields', 'invalid-credential-fields', {\n status: 422,\n details: {\n provider_id: error.providerId,\n expected_keys: getModelProviderCredentialKeys(error.providerId) ?? [],\n },\n });\n }\n\n if (error instanceof InvalidAgentModelError) {\n throw new ClientError('Invalid agent model', 'invalid-agent-model', {\n status: 422,\n details: {\n harness: error.harness,\n provider_id: error.providerId,\n model: error.model,\n },\n });\n }\n\n if (error instanceof UnsupportedModelProviderError) {\n throw new ClientError('Provider is not supported', 'provider-unsupported', {\n status: 422,\n details: {provider_id: error.providerId},\n });\n }\n\n if (error instanceof ModelProviderConfigNotFoundError) {\n throw new ClientError('Provider is not configured', 'provider-not-configured', {\n status: 422,\n details: {\n provider_id: error.providerId,\n },\n });\n }\n\n if (isInterModuleKnownError(secretsInterModuleContract.methods.setSecrets, error)) {\n if (error.code === 'workspace-secret-cap-exceeded') {\n throw new ClientError('Workspace secret cap exceeded', 'workspace-secret-cap-exceeded', {\n status: 409,\n details: {cap: error.details.cap},\n });\n }\n throw new ClientError('Secret value is too large', 'value-too-large', {\n status: 400,\n details: {max_bytes: error.details.maxBytes},\n });\n }\n\n throw error;\n}\n"],"names":["getModelProviderCredentialKeys","secretsInterModuleContract","isInterModuleKnownError","EgressDeniedError","ClientError","CustomModelProviderConfigNotFoundError","CustomModelProviderSlugCollisionError","CustomModelProviderStoredSecretBaseUrlChangeError","InvalidAgentModelError","InvalidCredentialFieldsError","InvalidCustomModelProviderHeaderKeepError","ModelProviderConfigNotFoundError","ModelProviderValidationError","UnsupportedModelProviderError","translateModelProviderRouteError","error","sanitizedMessage","status","details","provider_id","providerId","message","reason","target","name","headerName","expected_keys","harness","model","methods","setSecrets","code","cap","max_bytes","maxBytes"],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
import type { RouteGroup } from '@shipfox/node-fastify';
|
|
2
|
+
import type { AgentSecretsClient } from '#core/secrets-client.js';
|
|
3
|
+
export declare function createAgentRoutes(secrets: AgentSecretsClient): RouteGroup[];
|
|
2
4
|
export declare const agentRoutes: RouteGroup[];
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAahE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,EAAE,CAwB3E;AAED,eAAO,MAAM,WAAW,cAAgE,CAAC"}
|
|
@@ -1,39 +1,42 @@
|
|
|
1
1
|
import { AUTH_USER } from '@shipfox/api-auth-context';
|
|
2
2
|
import { createCustomModelProviderRoute } from './create-custom-model-provider.js';
|
|
3
|
-
import {
|
|
3
|
+
import { createDeleteModelProviderConfigRoute } from './delete-model-provider-config.js';
|
|
4
4
|
import { discoverCustomModelProviderModelsRoute } from './discover-custom-model-provider-models.js';
|
|
5
|
-
import {
|
|
5
|
+
import { createDiscoverCustomModelProviderModelsBySlugRoute } from './discover-custom-model-provider-models-by-slug.js';
|
|
6
6
|
import { listModelProviderCatalogRoute } from './list-model-provider-catalog.js';
|
|
7
7
|
import { listModelProviderConfigsRoute } from './list-model-provider-configs.js';
|
|
8
8
|
import { setDefaultHarnessRoute } from './set-default-harness.js';
|
|
9
9
|
import { setDefaultModelProviderRoute } from './set-default-model-provider.js';
|
|
10
|
-
import {
|
|
10
|
+
import { createUpdateCustomModelProviderRoute } from './update-custom-model-provider.js';
|
|
11
11
|
import { updateModelProviderDefaultModelRoute } from './update-model-provider-default-model.js';
|
|
12
|
-
import {
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
12
|
+
import { createUpsertModelProviderConfigRoute } from './upsert-model-provider-config.js';
|
|
13
|
+
export function createAgentRoutes(secrets) {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
prefix: '/workspaces/:workspaceId/agent',
|
|
17
|
+
auth: AUTH_USER,
|
|
18
|
+
routes: [
|
|
19
|
+
listModelProviderConfigsRoute,
|
|
20
|
+
createCustomModelProviderRoute(secrets),
|
|
21
|
+
discoverCustomModelProviderModelsRoute,
|
|
22
|
+
createDiscoverCustomModelProviderModelsBySlugRoute(secrets),
|
|
23
|
+
createUpdateCustomModelProviderRoute(secrets),
|
|
24
|
+
createUpsertModelProviderConfigRoute(secrets),
|
|
25
|
+
updateModelProviderDefaultModelRoute,
|
|
26
|
+
createDeleteModelProviderConfigRoute(secrets),
|
|
27
|
+
setDefaultHarnessRoute,
|
|
28
|
+
setDefaultModelProviderRoute
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
prefix: '/agent',
|
|
33
|
+
auth: AUTH_USER,
|
|
34
|
+
routes: [
|
|
35
|
+
listModelProviderCatalogRoute
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
export const agentRoutes = createAgentRoutes(undefined);
|
|
38
41
|
|
|
39
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/index.ts"],"sourcesContent":["import {AUTH_USER} from '@shipfox/api-auth-context';\nimport type {RouteGroup} from '@shipfox/node-fastify';\nimport {createCustomModelProviderRoute} from './create-custom-model-provider.js';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/index.ts"],"sourcesContent":["import {AUTH_USER} from '@shipfox/api-auth-context';\nimport type {RouteGroup} from '@shipfox/node-fastify';\nimport type {AgentSecretsClient} from '#core/secrets-client.js';\nimport {createCustomModelProviderRoute} from './create-custom-model-provider.js';\nimport {createDeleteModelProviderConfigRoute} from './delete-model-provider-config.js';\nimport {discoverCustomModelProviderModelsRoute} from './discover-custom-model-provider-models.js';\nimport {createDiscoverCustomModelProviderModelsBySlugRoute} from './discover-custom-model-provider-models-by-slug.js';\nimport {listModelProviderCatalogRoute} from './list-model-provider-catalog.js';\nimport {listModelProviderConfigsRoute} from './list-model-provider-configs.js';\nimport {setDefaultHarnessRoute} from './set-default-harness.js';\nimport {setDefaultModelProviderRoute} from './set-default-model-provider.js';\nimport {createUpdateCustomModelProviderRoute} from './update-custom-model-provider.js';\nimport {updateModelProviderDefaultModelRoute} from './update-model-provider-default-model.js';\nimport {createUpsertModelProviderConfigRoute} from './upsert-model-provider-config.js';\n\nexport function createAgentRoutes(secrets: AgentSecretsClient): RouteGroup[] {\n return [\n {\n prefix: '/workspaces/:workspaceId/agent',\n auth: AUTH_USER,\n routes: [\n listModelProviderConfigsRoute,\n createCustomModelProviderRoute(secrets),\n discoverCustomModelProviderModelsRoute,\n createDiscoverCustomModelProviderModelsBySlugRoute(secrets),\n createUpdateCustomModelProviderRoute(secrets),\n createUpsertModelProviderConfigRoute(secrets),\n updateModelProviderDefaultModelRoute,\n createDeleteModelProviderConfigRoute(secrets),\n setDefaultHarnessRoute,\n setDefaultModelProviderRoute,\n ],\n },\n {\n prefix: '/agent',\n auth: AUTH_USER,\n routes: [listModelProviderCatalogRoute],\n },\n ];\n}\n\nexport const agentRoutes = createAgentRoutes(undefined as unknown as AgentSecretsClient);\n"],"names":["AUTH_USER","createCustomModelProviderRoute","createDeleteModelProviderConfigRoute","discoverCustomModelProviderModelsRoute","createDiscoverCustomModelProviderModelsBySlugRoute","listModelProviderCatalogRoute","listModelProviderConfigsRoute","setDefaultHarnessRoute","setDefaultModelProviderRoute","createUpdateCustomModelProviderRoute","updateModelProviderDefaultModelRoute","createUpsertModelProviderConfigRoute","createAgentRoutes","secrets","prefix","auth","routes","agentRoutes","undefined"],"mappings":"AAAA,SAAQA,SAAS,QAAO,4BAA4B;AAGpD,SAAQC,8BAA8B,QAAO,oCAAoC;AACjF,SAAQC,oCAAoC,QAAO,oCAAoC;AACvF,SAAQC,sCAAsC,QAAO,6CAA6C;AAClG,SAAQC,kDAAkD,QAAO,qDAAqD;AACtH,SAAQC,6BAA6B,QAAO,mCAAmC;AAC/E,SAAQC,6BAA6B,QAAO,mCAAmC;AAC/E,SAAQC,sBAAsB,QAAO,2BAA2B;AAChE,SAAQC,4BAA4B,QAAO,kCAAkC;AAC7E,SAAQC,oCAAoC,QAAO,oCAAoC;AACvF,SAAQC,oCAAoC,QAAO,2CAA2C;AAC9F,SAAQC,oCAAoC,QAAO,oCAAoC;AAEvF,OAAO,SAASC,kBAAkBC,OAA2B;IAC3D,OAAO;QACL;YACEC,QAAQ;YACRC,MAAMf;YACNgB,QAAQ;gBACNV;gBACAL,+BAA+BY;gBAC/BV;gBACAC,mDAAmDS;gBACnDJ,qCAAqCI;gBACrCF,qCAAqCE;gBACrCH;gBACAR,qCAAqCW;gBACrCN;gBACAC;aACD;QACH;QACA;YACEM,QAAQ;YACRC,MAAMf;YACNgB,QAAQ;gBAACX;aAA8B;QACzC;KACD;AACH;AAEA,OAAO,MAAMY,cAAcL,kBAAkBM,WAA4C"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AgentSecretsClient } from '#core/secrets-client.js';
|
|
2
|
+
export declare function createUpdateCustomModelProviderRoute(secrets: AgentSecretsClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
2
3
|
//# sourceMappingURL=update-custom-model-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-custom-model-provider.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/update-custom-model-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update-custom-model-provider.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/update-custom-model-provider.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAIhE,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,kBAAkB,mDA0C/E"}
|
|
@@ -5,43 +5,47 @@ import { z } from 'zod';
|
|
|
5
5
|
import { updateCustomModelProviderConfig } from '#core/index.js';
|
|
6
6
|
import { toCustomModelProviderConfigDto } from '#presentation/dto/index.js';
|
|
7
7
|
import { translateModelProviderRouteError } from './errors.js';
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
8
|
+
export function createUpdateCustomModelProviderRoute(secrets) {
|
|
9
|
+
return defineRoute({
|
|
10
|
+
method: 'PUT',
|
|
11
|
+
path: '/custom-model-providers/:slug',
|
|
12
|
+
description: 'Update a custom model provider configuration for a workspace',
|
|
13
|
+
schema: {
|
|
14
|
+
params: z.object({
|
|
15
|
+
workspaceId: z.string().uuid(),
|
|
16
|
+
slug: modelProviderRefSchema
|
|
17
|
+
}),
|
|
18
|
+
body: updateCustomModelProviderBodySchema,
|
|
19
|
+
response: {
|
|
20
|
+
200: customModelProviderConfigDtoSchema
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
errorHandler: translateModelProviderRouteError,
|
|
24
|
+
handler: async (request, reply)=>{
|
|
25
|
+
const { workspaceId, slug } = request.params;
|
|
26
|
+
const abortController = new AbortController();
|
|
27
|
+
let responseFinished = false;
|
|
28
|
+
reply.raw.on('finish', ()=>{
|
|
29
|
+
responseFinished = true;
|
|
30
|
+
});
|
|
31
|
+
reply.raw.on('close', ()=>{
|
|
32
|
+
if (!responseFinished) abortController.abort();
|
|
33
|
+
});
|
|
34
|
+
requireWorkspaceAccess({
|
|
35
|
+
request,
|
|
36
|
+
workspaceId
|
|
37
|
+
});
|
|
38
|
+
const config = await updateCustomModelProviderConfig({
|
|
39
|
+
workspaceId,
|
|
40
|
+
providerId: slug,
|
|
41
|
+
body: request.body,
|
|
42
|
+
signal: abortController.signal
|
|
43
|
+
}, {
|
|
44
|
+
secrets
|
|
45
|
+
});
|
|
46
|
+
return toCustomModelProviderConfigDto(config);
|
|
20
47
|
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
handler: async (request, reply)=>{
|
|
24
|
-
const { workspaceId, slug } = request.params;
|
|
25
|
-
const abortController = new AbortController();
|
|
26
|
-
let responseFinished = false;
|
|
27
|
-
reply.raw.on('finish', ()=>{
|
|
28
|
-
responseFinished = true;
|
|
29
|
-
});
|
|
30
|
-
reply.raw.on('close', ()=>{
|
|
31
|
-
if (!responseFinished) abortController.abort();
|
|
32
|
-
});
|
|
33
|
-
requireWorkspaceAccess({
|
|
34
|
-
request,
|
|
35
|
-
workspaceId
|
|
36
|
-
});
|
|
37
|
-
const config = await updateCustomModelProviderConfig({
|
|
38
|
-
workspaceId,
|
|
39
|
-
providerId: slug,
|
|
40
|
-
body: request.body,
|
|
41
|
-
signal: abortController.signal
|
|
42
|
-
});
|
|
43
|
-
return toCustomModelProviderConfigDto(config);
|
|
44
|
-
}
|
|
45
|
-
});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
46
50
|
|
|
47
51
|
//# sourceMappingURL=update-custom-model-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/presentation/routes/update-custom-model-provider.ts"],"sourcesContent":["import {\n customModelProviderConfigDtoSchema,\n modelProviderRefSchema,\n updateCustomModelProviderBodySchema,\n} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {updateCustomModelProviderConfig} from '#core/index.js';\nimport {toCustomModelProviderConfigDto} from '#presentation/dto/index.js';\nimport {translateModelProviderRouteError} from './errors.js';\n\nexport
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/update-custom-model-provider.ts"],"sourcesContent":["import {\n customModelProviderConfigDtoSchema,\n modelProviderRefSchema,\n updateCustomModelProviderBodySchema,\n} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {updateCustomModelProviderConfig} from '#core/index.js';\nimport type {AgentSecretsClient} from '#core/secrets-client.js';\nimport {toCustomModelProviderConfigDto} from '#presentation/dto/index.js';\nimport {translateModelProviderRouteError} from './errors.js';\n\nexport function createUpdateCustomModelProviderRoute(secrets: AgentSecretsClient) {\n return defineRoute({\n method: 'PUT',\n path: '/custom-model-providers/:slug',\n description: 'Update a custom model provider configuration for a workspace',\n schema: {\n params: z.object({\n workspaceId: z.string().uuid(),\n slug: modelProviderRefSchema,\n }),\n body: updateCustomModelProviderBodySchema,\n response: {\n 200: customModelProviderConfigDtoSchema,\n },\n },\n errorHandler: translateModelProviderRouteError,\n handler: async (request, reply) => {\n const {workspaceId, slug} = request.params;\n const abortController = new AbortController();\n let responseFinished = false;\n reply.raw.on('finish', () => {\n responseFinished = true;\n });\n reply.raw.on('close', () => {\n if (!responseFinished) abortController.abort();\n });\n\n requireWorkspaceAccess({request, workspaceId});\n\n const config = await updateCustomModelProviderConfig(\n {\n workspaceId,\n providerId: slug,\n body: request.body,\n signal: abortController.signal,\n },\n {secrets},\n );\n\n return toCustomModelProviderConfigDto(config);\n },\n });\n}\n"],"names":["customModelProviderConfigDtoSchema","modelProviderRefSchema","updateCustomModelProviderBodySchema","requireWorkspaceAccess","defineRoute","z","updateCustomModelProviderConfig","toCustomModelProviderConfigDto","translateModelProviderRouteError","createUpdateCustomModelProviderRoute","secrets","method","path","description","schema","params","object","workspaceId","string","uuid","slug","body","response","errorHandler","handler","request","reply","abortController","AbortController","responseFinished","raw","on","abort","config","providerId","signal"],"mappings":"AAAA,SACEA,kCAAkC,EAClCC,sBAAsB,EACtBC,mCAAmC,QAC9B,yBAAyB;AAChC,SAAQC,sBAAsB,QAAO,4BAA4B;AACjE,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,+BAA+B,QAAO,iBAAiB;AAE/D,SAAQC,8BAA8B,QAAO,6BAA6B;AAC1E,SAAQC,gCAAgC,QAAO,cAAc;AAE7D,OAAO,SAASC,qCAAqCC,OAA2B;IAC9E,OAAON,YAAY;QACjBO,QAAQ;QACRC,MAAM;QACNC,aAAa;QACbC,QAAQ;YACNC,QAAQV,EAAEW,MAAM,CAAC;gBACfC,aAAaZ,EAAEa,MAAM,GAAGC,IAAI;gBAC5BC,MAAMnB;YACR;YACAoB,MAAMnB;YACNoB,UAAU;gBACR,KAAKtB;YACP;QACF;QACAuB,cAAcf;QACdgB,SAAS,OAAOC,SAASC;YACvB,MAAM,EAACT,WAAW,EAAEG,IAAI,EAAC,GAAGK,QAAQV,MAAM;YAC1C,MAAMY,kBAAkB,IAAIC;YAC5B,IAAIC,mBAAmB;YACvBH,MAAMI,GAAG,CAACC,EAAE,CAAC,UAAU;gBACrBF,mBAAmB;YACrB;YACAH,MAAMI,GAAG,CAACC,EAAE,CAAC,SAAS;gBACpB,IAAI,CAACF,kBAAkBF,gBAAgBK,KAAK;YAC9C;YAEA7B,uBAAuB;gBAACsB;gBAASR;YAAW;YAE5C,MAAMgB,SAAS,MAAM3B,gCACnB;gBACEW;gBACAiB,YAAYd;gBACZC,MAAMI,QAAQJ,IAAI;gBAClBc,QAAQR,gBAAgBQ,MAAM;YAChC,GACA;gBAACzB;YAAO;YAGV,OAAOH,+BAA+B0B;QACxC;IACF;AACF"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AgentSecretsClient } from '#core/secrets-client.js';
|
|
2
|
+
export declare function createUpsertModelProviderConfigRoute(secrets: AgentSecretsClient): import("@shipfox/node-fastify").RouteDefinition;
|
|
2
3
|
//# sourceMappingURL=upsert-model-provider-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert-model-provider-config.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/upsert-model-provider-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upsert-model-provider-config.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/upsert-model-provider-config.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAIhE,wBAAgB,oCAAoC,CAAC,OAAO,EAAE,kBAAkB,mDA6C/E"}
|