@shipfox/api-agent 2.0.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 +2 -0
- package/.turbo/turbo-type$colon$emit.log +1 -0
- package/.turbo/turbo-type.log +1 -0
- package/CHANGELOG.md +105 -0
- package/LICENSE +21 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +60 -0
- package/dist/config.js.map +1 -0
- package/dist/core/credential-fingerprints.d.ts +10 -0
- package/dist/core/credential-fingerprints.d.ts.map +1 -0
- package/dist/core/credential-fingerprints.js +65 -0
- package/dist/core/credential-fingerprints.js.map +1 -0
- package/dist/core/custom-model-provider-config-service.d.ts +26 -0
- package/dist/core/custom-model-provider-config-service.d.ts.map +1 -0
- package/dist/core/custom-model-provider-config-service.js +390 -0
- package/dist/core/custom-model-provider-config-service.js.map +1 -0
- package/dist/core/custom-provider-url.d.ts +4 -0
- package/dist/core/custom-provider-url.d.ts.map +1 -0
- package/dist/core/custom-provider-url.js +23 -0
- package/dist/core/custom-provider-url.js.map +1 -0
- package/dist/core/discover-custom-model-provider-models.d.ts +3 -0
- package/dist/core/discover-custom-model-provider-models.d.ts.map +1 -0
- package/dist/core/discover-custom-model-provider-models.js +122 -0
- package/dist/core/discover-custom-model-provider-models.js.map +1 -0
- package/dist/core/entities/agent-workspace-settings.d.ts +9 -0
- package/dist/core/entities/agent-workspace-settings.d.ts.map +1 -0
- package/dist/core/entities/agent-workspace-settings.js +3 -0
- package/dist/core/entities/agent-workspace-settings.js.map +1 -0
- package/dist/core/entities/model-provider-config.d.ts +19 -0
- package/dist/core/entities/model-provider-config.d.ts.map +1 -0
- package/dist/core/entities/model-provider-config.js +3 -0
- package/dist/core/entities/model-provider-config.js.map +1 -0
- package/dist/core/errors.d.ts +62 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +80 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/harness/claude.d.ts +6 -0
- package/dist/core/harness/claude.d.ts.map +1 -0
- package/dist/core/harness/claude.js +104 -0
- package/dist/core/harness/claude.js.map +1 -0
- package/dist/core/harness/index.d.ts +4 -0
- package/dist/core/harness/index.d.ts.map +1 -0
- package/dist/core/harness/index.js +5 -0
- package/dist/core/harness/index.js.map +1 -0
- package/dist/core/harness/pi.d.ts +6 -0
- package/dist/core/harness/pi.d.ts.map +1 -0
- package/dist/core/harness/pi.js +16 -0
- package/dist/core/harness/pi.js.map +1 -0
- package/dist/core/harness/registry.d.ts +22 -0
- package/dist/core/harness/registry.d.ts.map +1 -0
- package/dist/core/harness/registry.js +46 -0
- package/dist/core/harness/registry.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/model-provider-catalog.d.ts +3 -0
- package/dist/core/model-provider-catalog.d.ts.map +1 -0
- package/dist/core/model-provider-catalog.js +25 -0
- package/dist/core/model-provider-catalog.js.map +1 -0
- package/dist/core/model-provider-config-service.d.ts +32 -0
- package/dist/core/model-provider-config-service.d.ts.map +1 -0
- package/dist/core/model-provider-config-service.js +133 -0
- package/dist/core/model-provider-config-service.js.map +1 -0
- package/dist/core/model-provider-validation.d.ts +31 -0
- package/dist/core/model-provider-validation.d.ts.map +1 -0
- package/dist/core/model-provider-validation.js +220 -0
- package/dist/core/model-provider-validation.js.map +1 -0
- package/dist/core/resolve-agent-config.d.ts +32 -0
- package/dist/core/resolve-agent-config.d.ts.map +1 -0
- package/dist/core/resolve-agent-config.js +143 -0
- package/dist/core/resolve-agent-config.js.map +1 -0
- package/dist/core/resolve-runtime-credentials.d.ts +21 -0
- package/dist/core/resolve-runtime-credentials.d.ts.map +1 -0
- package/dist/core/resolve-runtime-credentials.js +101 -0
- package/dist/core/resolve-runtime-credentials.js.map +1 -0
- package/dist/core/workspace-agent-defaults-resolver.d.ts +3 -0
- package/dist/core/workspace-agent-defaults-resolver.d.ts.map +1 -0
- package/dist/core/workspace-agent-defaults-resolver.js +26 -0
- package/dist/core/workspace-agent-defaults-resolver.js.map +1 -0
- package/dist/db/agent-defaults-snapshot.d.ts +9 -0
- package/dist/db/agent-defaults-snapshot.d.ts.map +1 -0
- package/dist/db/agent-defaults-snapshot.js +24 -0
- package/dist/db/agent-defaults-snapshot.js.map +1 -0
- package/dist/db/agent-workspace-settings.d.ts +12 -0
- package/dist/db/agent-workspace-settings.d.ts.map +1 -0
- package/dist/db/agent-workspace-settings.js +53 -0
- package/dist/db/agent-workspace-settings.js.map +1 -0
- package/dist/db/db.d.ts +771 -0
- package/dist/db/db.d.ts.map +1 -0
- package/dist/db/db.js +20 -0
- package/dist/db/db.js.map +1 -0
- package/dist/db/index.d.ts +9 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +11 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/model-provider-configs.d.ts +38 -0
- package/dist/db/model-provider-configs.d.ts.map +1 -0
- package/dist/db/model-provider-configs.js +159 -0
- package/dist/db/model-provider-configs.js.map +1 -0
- package/dist/db/schema/agent-workspace-settings.d.ts +97 -0
- package/dist/db/schema/agent-workspace-settings.d.ts.map +1 -0
- package/dist/db/schema/agent-workspace-settings.js +26 -0
- package/dist/db/schema/agent-workspace-settings.js.map +1 -0
- package/dist/db/schema/common.d.ts +2 -0
- package/dist/db/schema/common.d.ts.map +1 -0
- package/dist/db/schema/common.js +4 -0
- package/dist/db/schema/common.js.map +1 -0
- package/dist/db/schema/model-provider-configs.d.ts +296 -0
- package/dist/db/schema/model-provider-configs.d.ts.map +1 -0
- package/dist/db/schema/model-provider-configs.js +52 -0
- package/dist/db/schema/model-provider-configs.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +3 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/instance.d.ts +10 -0
- package/dist/metrics/instance.d.ts.map +1 -0
- package/dist/metrics/instance.js +10 -0
- package/dist/metrics/instance.js.map +1 -0
- package/dist/presentation/dto/index.d.ts +2 -0
- package/dist/presentation/dto/index.d.ts.map +1 -0
- package/dist/presentation/dto/index.js +3 -0
- package/dist/presentation/dto/index.js.map +1 -0
- package/dist/presentation/dto/model-provider-config.d.ts +6 -0
- package/dist/presentation/dto/model-provider-config.d.ts.map +1 -0
- package/dist/presentation/dto/model-provider-config.js +32 -0
- package/dist/presentation/dto/model-provider-config.js.map +1 -0
- package/dist/presentation/e2eRoutes/create-model-provider.d.ts +2 -0
- package/dist/presentation/e2eRoutes/create-model-provider.d.ts.map +1 -0
- package/dist/presentation/e2eRoutes/create-model-provider.js +66 -0
- package/dist/presentation/e2eRoutes/create-model-provider.js.map +1 -0
- package/dist/presentation/e2eRoutes/index.d.ts +3 -0
- package/dist/presentation/e2eRoutes/index.d.ts.map +1 -0
- package/dist/presentation/e2eRoutes/index.js +9 -0
- package/dist/presentation/e2eRoutes/index.js.map +1 -0
- package/dist/presentation/index.d.ts +2 -0
- package/dist/presentation/index.d.ts.map +1 -0
- package/dist/presentation/index.js +3 -0
- package/dist/presentation/index.js.map +1 -0
- package/dist/presentation/routes/create-custom-model-provider.d.ts +2 -0
- package/dist/presentation/routes/create-custom-model-provider.d.ts.map +1 -0
- package/dist/presentation/routes/create-custom-model-provider.js +45 -0
- package/dist/presentation/routes/create-custom-model-provider.js.map +1 -0
- package/dist/presentation/routes/delete-model-provider-config.d.ts +2 -0
- package/dist/presentation/routes/delete-model-provider-config.d.ts.map +1 -0
- package/dist/presentation/routes/delete-model-provider-config.js +38 -0
- package/dist/presentation/routes/delete-model-provider-config.js.map +1 -0
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.d.ts +2 -0
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.d.ts.map +1 -0
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.js +37 -0
- package/dist/presentation/routes/discover-custom-model-provider-models-by-slug.js.map +1 -0
- package/dist/presentation/routes/discover-custom-model-provider-models.d.ts +2 -0
- package/dist/presentation/routes/discover-custom-model-provider-models.d.ts.map +1 -0
- package/dist/presentation/routes/discover-custom-model-provider-models.js +31 -0
- package/dist/presentation/routes/discover-custom-model-provider-models.js.map +1 -0
- package/dist/presentation/routes/errors.d.ts +2 -0
- package/dist/presentation/routes/errors.d.ts.map +1 -0
- package/dist/presentation/routes/errors.js +112 -0
- package/dist/presentation/routes/errors.js.map +1 -0
- package/dist/presentation/routes/index.d.ts +3 -0
- package/dist/presentation/routes/index.d.ts.map +1 -0
- package/dist/presentation/routes/index.js +39 -0
- package/dist/presentation/routes/index.js.map +1 -0
- package/dist/presentation/routes/list-model-provider-catalog.d.ts +2 -0
- package/dist/presentation/routes/list-model-provider-catalog.d.ts.map +1 -0
- package/dist/presentation/routes/list-model-provider-catalog.js +18 -0
- package/dist/presentation/routes/list-model-provider-catalog.js.map +1 -0
- package/dist/presentation/routes/list-model-provider-configs.d.ts +2 -0
- package/dist/presentation/routes/list-model-provider-configs.d.ts.map +1 -0
- package/dist/presentation/routes/list-model-provider-configs.js +37 -0
- package/dist/presentation/routes/list-model-provider-configs.js.map +1 -0
- package/dist/presentation/routes/set-default-harness.d.ts +2 -0
- package/dist/presentation/routes/set-default-harness.d.ts.map +1 -0
- package/dist/presentation/routes/set-default-harness.js +38 -0
- package/dist/presentation/routes/set-default-harness.js.map +1 -0
- package/dist/presentation/routes/set-default-model-provider.d.ts +2 -0
- package/dist/presentation/routes/set-default-model-provider.d.ts.map +1 -0
- package/dist/presentation/routes/set-default-model-provider.js +48 -0
- package/dist/presentation/routes/set-default-model-provider.js.map +1 -0
- package/dist/presentation/routes/update-custom-model-provider.d.ts +2 -0
- package/dist/presentation/routes/update-custom-model-provider.d.ts.map +1 -0
- package/dist/presentation/routes/update-custom-model-provider.js +47 -0
- package/dist/presentation/routes/update-custom-model-provider.js.map +1 -0
- package/dist/presentation/routes/update-model-provider-default-model.d.ts +2 -0
- package/dist/presentation/routes/update-model-provider-default-model.d.ts.map +1 -0
- package/dist/presentation/routes/update-model-provider-default-model.js +38 -0
- package/dist/presentation/routes/update-model-provider-default-model.js.map +1 -0
- package/dist/presentation/routes/upsert-model-provider-config.d.ts +2 -0
- package/dist/presentation/routes/upsert-model-provider-config.d.ts.map +1 -0
- package/dist/presentation/routes/upsert-model-provider-config.js +52 -0
- package/dist/presentation/routes/upsert-model-provider-config.js.map +1 -0
- package/dist/tsconfig.test.tsbuildinfo +1 -0
- package/drizzle/0000_daffy_leopardon.sql +28 -0
- package/drizzle/0001_default_harness.sql +1 -0
- package/drizzle/meta/0000_snapshot.json +199 -0
- package/drizzle/meta/0001_snapshot.json +205 -0
- package/drizzle/meta/_journal.json +20 -0
- package/drizzle.config.ts +7 -0
- package/package.json +109 -0
- package/src/config.test.ts +118 -0
- package/src/config.ts +75 -0
- package/src/core/catalog-registry.test.ts +48 -0
- package/src/core/credential-fingerprints.test.ts +34 -0
- package/src/core/credential-fingerprints.ts +84 -0
- package/src/core/custom-model-provider-config-service.ts +537 -0
- package/src/core/custom-provider-url.ts +24 -0
- package/src/core/discover-custom-model-provider-models.ts +147 -0
- package/src/core/entities/agent-workspace-settings.ts +9 -0
- package/src/core/entities/model-provider-config.ts +25 -0
- package/src/core/errors.ts +139 -0
- package/src/core/harness/claude.ts +75 -0
- package/src/core/harness/index.ts +19 -0
- package/src/core/harness/pi.ts +18 -0
- package/src/core/harness/registry.test.ts +281 -0
- package/src/core/harness/registry.ts +108 -0
- package/src/core/index.ts +56 -0
- package/src/core/model-provider-catalog.ts +33 -0
- package/src/core/model-provider-config-service.test.ts +940 -0
- package/src/core/model-provider-config-service.ts +207 -0
- package/src/core/model-provider-validation.test.ts +354 -0
- package/src/core/model-provider-validation.ts +276 -0
- package/src/core/resolve-agent-config.test.ts +441 -0
- package/src/core/resolve-agent-config.ts +272 -0
- package/src/core/resolve-runtime-credentials.test.ts +316 -0
- package/src/core/resolve-runtime-credentials.ts +147 -0
- package/src/core/workspace-agent-defaults-resolver.ts +42 -0
- package/src/db/agent-defaults-snapshot.ts +49 -0
- package/src/db/agent-workspace-settings.test.ts +111 -0
- package/src/db/agent-workspace-settings.ts +92 -0
- package/src/db/db.ts +20 -0
- package/src/db/index.ts +29 -0
- package/src/db/model-provider-configs.test.ts +281 -0
- package/src/db/model-provider-configs.ts +230 -0
- package/src/db/schema/agent-workspace-settings.ts +27 -0
- package/src/db/schema/common.ts +3 -0
- package/src/db/schema/model-provider-configs.ts +80 -0
- package/src/index.ts +43 -0
- package/src/metrics/index.ts +1 -0
- package/src/metrics/instance.ts +18 -0
- package/src/presentation/dto/index.ts +5 -0
- package/src/presentation/dto/model-provider-config.ts +41 -0
- package/src/presentation/e2eRoutes/create-model-provider.test.ts +47 -0
- package/src/presentation/e2eRoutes/create-model-provider.ts +61 -0
- package/src/presentation/e2eRoutes/index.ts +7 -0
- package/src/presentation/index.ts +1 -0
- package/src/presentation/routes/create-custom-model-provider.ts +45 -0
- package/src/presentation/routes/delete-model-provider-config.ts +31 -0
- package/src/presentation/routes/discover-custom-model-provider-models-by-slug.ts +42 -0
- package/src/presentation/routes/discover-custom-model-provider-models.ts +29 -0
- package/src/presentation/routes/errors.ts +122 -0
- package/src/presentation/routes/index.ts +37 -0
- package/src/presentation/routes/list-model-provider-catalog.ts +15 -0
- package/src/presentation/routes/list-model-provider-configs.ts +33 -0
- package/src/presentation/routes/model-provider-catalog.test.ts +73 -0
- package/src/presentation/routes/model-provider-config.test.ts +807 -0
- package/src/presentation/routes/set-default-harness.ts +33 -0
- package/src/presentation/routes/set-default-model-provider.ts +47 -0
- package/src/presentation/routes/update-custom-model-provider.ts +50 -0
- package/src/presentation/routes/update-model-provider-default-model.ts +40 -0
- package/src/presentation/routes/upsert-model-provider-config.ts +53 -0
- package/test/env.ts +8 -0
- package/test/globalSetup.ts +25 -0
- package/test/setup.ts +17 -0
- package/tsconfig.build.json +9 -0
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +3 -0
- package/tsconfig.test.json +8 -0
- package/vitest.config.ts +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/presentation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,IAAI,MAAM,EAAC,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/presentation/index.ts"],"sourcesContent":["export {agentRoutes as routes} from './routes/index.js';\n"],"names":["agentRoutes","routes"],"mappings":"AAAA,SAAQA,eAAeC,MAAM,QAAO,oBAAoB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-custom-model-provider.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/create-custom-model-provider.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,8BAA8B,iDAiCzC,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createCustomModelProviderBodySchema, customModelProviderConfigDtoSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { requireWorkspaceAccess } from '@shipfox/api-auth-context';
|
|
3
|
+
import { defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { createCustomModelProviderConfig } from '#core/index.js';
|
|
6
|
+
import { toCustomModelProviderConfigDto } from '#presentation/dto/index.js';
|
|
7
|
+
import { translateModelProviderRouteError } from './errors.js';
|
|
8
|
+
export const createCustomModelProviderRoute = defineRoute({
|
|
9
|
+
method: 'POST',
|
|
10
|
+
path: '/custom-model-providers',
|
|
11
|
+
description: 'Create a custom model provider configuration for a workspace',
|
|
12
|
+
schema: {
|
|
13
|
+
params: z.object({
|
|
14
|
+
workspaceId: z.string().uuid()
|
|
15
|
+
}),
|
|
16
|
+
body: createCustomModelProviderBodySchema,
|
|
17
|
+
response: {
|
|
18
|
+
200: customModelProviderConfigDtoSchema
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
errorHandler: translateModelProviderRouteError,
|
|
22
|
+
handler: async (request, reply)=>{
|
|
23
|
+
const { workspaceId } = request.params;
|
|
24
|
+
const abortController = new AbortController();
|
|
25
|
+
let responseFinished = false;
|
|
26
|
+
reply.raw.on('finish', ()=>{
|
|
27
|
+
responseFinished = true;
|
|
28
|
+
});
|
|
29
|
+
reply.raw.on('close', ()=>{
|
|
30
|
+
if (!responseFinished) abortController.abort();
|
|
31
|
+
});
|
|
32
|
+
requireWorkspaceAccess({
|
|
33
|
+
request,
|
|
34
|
+
workspaceId
|
|
35
|
+
});
|
|
36
|
+
const config = await createCustomModelProviderConfig({
|
|
37
|
+
workspaceId,
|
|
38
|
+
body: request.body,
|
|
39
|
+
signal: abortController.signal
|
|
40
|
+
});
|
|
41
|
+
return toCustomModelProviderConfigDto(config);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=create-custom-model-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/create-custom-model-provider.ts"],"sourcesContent":["import {\n createCustomModelProviderBodySchema,\n customModelProviderConfigDtoSchema,\n} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {createCustomModelProviderConfig} from '#core/index.js';\nimport {toCustomModelProviderConfigDto} from '#presentation/dto/index.js';\nimport {translateModelProviderRouteError} from './errors.js';\n\nexport const createCustomModelProviderRoute = defineRoute({\n method: 'POST',\n path: '/custom-model-providers',\n description: 'Create a custom model provider configuration for a workspace',\n schema: {\n params: z.object({workspaceId: z.string().uuid()}),\n body: createCustomModelProviderBodySchema,\n response: {\n 200: customModelProviderConfigDtoSchema,\n },\n },\n errorHandler: translateModelProviderRouteError,\n handler: async (request, reply) => {\n const {workspaceId} = 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 createCustomModelProviderConfig({\n workspaceId,\n body: request.body,\n signal: abortController.signal,\n });\n\n return toCustomModelProviderConfigDto(config);\n },\n});\n"],"names":["createCustomModelProviderBodySchema","customModelProviderConfigDtoSchema","requireWorkspaceAccess","defineRoute","z","createCustomModelProviderConfig","toCustomModelProviderConfigDto","translateModelProviderRouteError","createCustomModelProviderRoute","method","path","description","schema","params","object","workspaceId","string","uuid","body","response","errorHandler","handler","request","reply","abortController","AbortController","responseFinished","raw","on","abort","config","signal"],"mappings":"AAAA,SACEA,mCAAmC,EACnCC,kCAAkC,QAC7B,yBAAyB;AAChC,SAAQC,sBAAsB,QAAO,4BAA4B;AACjE,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,+BAA+B,QAAO,iBAAiB;AAC/D,SAAQC,8BAA8B,QAAO,6BAA6B;AAC1E,SAAQC,gCAAgC,QAAO,cAAc;AAE7D,OAAO,MAAMC,iCAAiCL,YAAY;IACxDM,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,QAAQT,EAAEU,MAAM,CAAC;YAACC,aAAaX,EAAEY,MAAM,GAAGC,IAAI;QAAE;QAChDC,MAAMlB;QACNmB,UAAU;YACR,KAAKlB;QACP;IACF;IACAmB,cAAcb;IACdc,SAAS,OAAOC,SAASC;QACvB,MAAM,EAACR,WAAW,EAAC,GAAGO,QAAQT,MAAM;QACpC,MAAMW,kBAAkB,IAAIC;QAC5B,IAAIC,mBAAmB;QACvBH,MAAMI,GAAG,CAACC,EAAE,CAAC,UAAU;YACrBF,mBAAmB;QACrB;QACAH,MAAMI,GAAG,CAACC,EAAE,CAAC,SAAS;YACpB,IAAI,CAACF,kBAAkBF,gBAAgBK,KAAK;QAC9C;QAEA3B,uBAAuB;YAACoB;YAASP;QAAW;QAE5C,MAAMe,SAAS,MAAMzB,gCAAgC;YACnDU;YACAG,MAAMI,QAAQJ,IAAI;YAClBa,QAAQP,gBAAgBO,MAAM;QAChC;QAEA,OAAOzB,+BAA+BwB;IACxC;AACF,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-model-provider-config.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/delete-model-provider-config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,8BAA8B,iDAwBzC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { modelProviderRefSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { requireWorkspaceAccess } from '@shipfox/api-auth-context';
|
|
3
|
+
import { ClientError, defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { deleteModelProviderConfig } from '#core/index.js';
|
|
6
|
+
export const deleteModelProviderConfigRoute = defineRoute({
|
|
7
|
+
method: 'DELETE',
|
|
8
|
+
path: '/model-providers/:providerId',
|
|
9
|
+
description: 'Delete a model provider configuration for a workspace',
|
|
10
|
+
schema: {
|
|
11
|
+
params: z.object({
|
|
12
|
+
workspaceId: z.string().uuid(),
|
|
13
|
+
providerId: modelProviderRefSchema
|
|
14
|
+
}),
|
|
15
|
+
response: {
|
|
16
|
+
204: z.void()
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
handler: async (request, reply)=>{
|
|
20
|
+
const { workspaceId, providerId } = request.params;
|
|
21
|
+
requireWorkspaceAccess({
|
|
22
|
+
request,
|
|
23
|
+
workspaceId
|
|
24
|
+
});
|
|
25
|
+
const deleted = await deleteModelProviderConfig({
|
|
26
|
+
workspaceId,
|
|
27
|
+
providerId
|
|
28
|
+
});
|
|
29
|
+
if (!deleted) {
|
|
30
|
+
throw new ClientError('Model provider configuration not found', 'not-found', {
|
|
31
|
+
status: 404
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
reply.code(204);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=delete-model-provider-config.js.map
|
|
@@ -0,0 +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 const deleteModelProviderConfigRoute = 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});\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"],"names":["modelProviderRefSchema","requireWorkspaceAccess","ClientError","defineRoute","z","deleteModelProviderConfig","deleteModelProviderConfigRoute","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;AAEzD,OAAO,MAAMC,iCAAiCH,YAAY;IACxDI,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,QAAQP,EAAEQ,MAAM,CAAC;YACfC,aAAaT,EAAEU,MAAM,GAAGC,IAAI;YAC5BC,YAAYhB;QACd;QACAiB,UAAU;YACR,KAAKb,EAAEc,IAAI;QACb;IACF;IACAC,SAAS,OAAOC,SAASC;QACvB,MAAM,EAACR,WAAW,EAAEG,UAAU,EAAC,GAAGI,QAAQT,MAAM;QAChDV,uBAAuB;YAACmB;YAASP;QAAW;QAE5C,MAAMS,UAAU,MAAMjB,0BAA0B;YAACQ;YAAaG;QAAU;QACxE,IAAI,CAACM,SAAS;YACZ,MAAM,IAAIpB,YAAY,0CAA0C,aAAa;gBAACqB,QAAQ;YAAG;QAC3F;QAEAF,MAAMG,IAAI,CAAC;IACb;AACF,GAAG"}
|
|
@@ -0,0 +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":"AAcA,eAAO,MAAM,4CAA4C,iDA2BvD,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { discoverCustomModelProviderModelsBySlugBodySchema, discoverCustomModelProviderModelsResponseSchema, modelProviderRefSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { requireWorkspaceAccess } from '@shipfox/api-auth-context';
|
|
3
|
+
import { defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { discoverCustomModelProviderModels, resolveCustomModelProviderDiscoveryParams } from '#core/index.js';
|
|
6
|
+
import { translateModelProviderRouteError } from './errors.js';
|
|
7
|
+
export const discoverCustomModelProviderModelsBySlugRoute = defineRoute({
|
|
8
|
+
method: 'POST',
|
|
9
|
+
path: '/custom-model-providers/:slug/discover-models',
|
|
10
|
+
description: 'Discover models for a stored custom model provider configuration',
|
|
11
|
+
schema: {
|
|
12
|
+
params: z.object({
|
|
13
|
+
workspaceId: z.string().uuid(),
|
|
14
|
+
slug: modelProviderRefSchema
|
|
15
|
+
}),
|
|
16
|
+
body: discoverCustomModelProviderModelsBySlugBodySchema,
|
|
17
|
+
response: {
|
|
18
|
+
200: discoverCustomModelProviderModelsResponseSchema
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
errorHandler: translateModelProviderRouteError,
|
|
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
|
+
});
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=discover-custom-model-provider-models-by-slug.js.map
|
|
@@ -0,0 +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 const discoverCustomModelProviderModelsBySlugRoute = 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 workspaceId,\n providerId: slug,\n body: request.body ?? {},\n });\n\n return await discoverCustomModelProviderModels(discoveryParams);\n },\n});\n"],"names":["discoverCustomModelProviderModelsBySlugBodySchema","discoverCustomModelProviderModelsResponseSchema","modelProviderRefSchema","requireWorkspaceAccess","defineRoute","z","discoverCustomModelProviderModels","resolveCustomModelProviderDiscoveryParams","translateModelProviderRouteError","discoverCustomModelProviderModelsBySlugRoute","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;AACxB,SAAQC,gCAAgC,QAAO,cAAc;AAE7D,OAAO,MAAMC,+CAA+CL,YAAY;IACtEM,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,QAAQT,EAAEU,MAAM,CAAC;YACfC,aAAaX,EAAEY,MAAM,GAAGC,IAAI;YAC5BC,MAAMjB;QACR;QACAkB,MAAMpB;QACNqB,UAAU;YACR,KAAKpB;QACP;IACF;IACAqB,cAAcd;IACde,SAAS,OAAOC;QACd,MAAM,EAACR,WAAW,EAAEG,IAAI,EAAC,GAAGK,QAAQV,MAAM;QAC1CX,uBAAuB;YAACqB;YAASR;QAAW;QAE5C,MAAMS,kBAAkB,MAAMlB,0CAA0C;YACtES;YACAU,YAAYP;YACZC,MAAMI,QAAQJ,IAAI,IAAI,CAAC;QACzB;QAEA,OAAO,MAAMd,kCAAkCmB;IACjD;AACF,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover-custom-model-provider-models.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/discover-custom-model-provider-models.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,sCAAsC,iDAkBjD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { discoverCustomModelProviderModelsBodySchema, discoverCustomModelProviderModelsResponseSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { requireWorkspaceAccess } from '@shipfox/api-auth-context';
|
|
3
|
+
import { defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { discoverCustomModelProviderModels } from '#core/index.js';
|
|
6
|
+
import { translateModelProviderRouteError } from './errors.js';
|
|
7
|
+
export const discoverCustomModelProviderModelsRoute = defineRoute({
|
|
8
|
+
method: 'POST',
|
|
9
|
+
path: '/custom-model-providers/discover-models',
|
|
10
|
+
description: 'Discover models exposed by a custom model provider endpoint',
|
|
11
|
+
schema: {
|
|
12
|
+
params: z.object({
|
|
13
|
+
workspaceId: z.string().uuid()
|
|
14
|
+
}),
|
|
15
|
+
body: discoverCustomModelProviderModelsBodySchema,
|
|
16
|
+
response: {
|
|
17
|
+
200: discoverCustomModelProviderModelsResponseSchema
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
errorHandler: translateModelProviderRouteError,
|
|
21
|
+
handler: async (request)=>{
|
|
22
|
+
const { workspaceId } = request.params;
|
|
23
|
+
requireWorkspaceAccess({
|
|
24
|
+
request,
|
|
25
|
+
workspaceId
|
|
26
|
+
});
|
|
27
|
+
return await discoverCustomModelProviderModels(request.body);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=discover-custom-model-provider-models.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/discover-custom-model-provider-models.ts"],"sourcesContent":["import {\n discoverCustomModelProviderModelsBodySchema,\n discoverCustomModelProviderModelsResponseSchema,\n} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {discoverCustomModelProviderModels} from '#core/index.js';\nimport {translateModelProviderRouteError} from './errors.js';\n\nexport const discoverCustomModelProviderModelsRoute = defineRoute({\n method: 'POST',\n path: '/custom-model-providers/discover-models',\n description: 'Discover models exposed by a custom model provider endpoint',\n schema: {\n params: z.object({workspaceId: z.string().uuid()}),\n body: discoverCustomModelProviderModelsBodySchema,\n response: {\n 200: discoverCustomModelProviderModelsResponseSchema,\n },\n },\n errorHandler: translateModelProviderRouteError,\n handler: async (request) => {\n const {workspaceId} = request.params;\n requireWorkspaceAccess({request, workspaceId});\n\n return await discoverCustomModelProviderModels(request.body);\n },\n});\n"],"names":["discoverCustomModelProviderModelsBodySchema","discoverCustomModelProviderModelsResponseSchema","requireWorkspaceAccess","defineRoute","z","discoverCustomModelProviderModels","translateModelProviderRouteError","discoverCustomModelProviderModelsRoute","method","path","description","schema","params","object","workspaceId","string","uuid","body","response","errorHandler","handler","request"],"mappings":"AAAA,SACEA,2CAA2C,EAC3CC,+CAA+C,QAC1C,yBAAyB;AAChC,SAAQC,sBAAsB,QAAO,4BAA4B;AACjE,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,iCAAiC,QAAO,iBAAiB;AACjE,SAAQC,gCAAgC,QAAO,cAAc;AAE7D,OAAO,MAAMC,yCAAyCJ,YAAY;IAChEK,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,QAAQR,EAAES,MAAM,CAAC;YAACC,aAAaV,EAAEW,MAAM,GAAGC,IAAI;QAAE;QAChDC,MAAMjB;QACNkB,UAAU;YACR,KAAKjB;QACP;IACF;IACAkB,cAAcb;IACdc,SAAS,OAAOC;QACd,MAAM,EAACP,WAAW,EAAC,GAAGO,QAAQT,MAAM;QACpCV,uBAAuB;YAACmB;YAASP;QAAW;QAE5C,OAAO,MAAMT,kCAAkCgB,QAAQJ,IAAI;IAC7D;AACF,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/errors.ts"],"names":[],"mappings":"AAgBA,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAyGtE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { getModelProviderCredentialKeys } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { SecretValueTooLargeError, WorkspaceSecretCapExceededError } from '@shipfox/api-secrets';
|
|
3
|
+
import { EgressDeniedError } from '@shipfox/node-egress-guard';
|
|
4
|
+
import { ClientError } from '@shipfox/node-fastify';
|
|
5
|
+
import { CustomModelProviderConfigNotFoundError, CustomModelProviderSlugCollisionError, CustomModelProviderStoredSecretBaseUrlChangeError, InvalidAgentModelError, InvalidCredentialFieldsError, InvalidCustomModelProviderHeaderKeepError, ModelProviderConfigNotFoundError, ModelProviderValidationError, UnsupportedModelProviderError } from '#core/index.js';
|
|
6
|
+
export function translateModelProviderRouteError(error) {
|
|
7
|
+
if (error instanceof ModelProviderValidationError) {
|
|
8
|
+
throw new ClientError(error.sanitizedMessage, 'provider-validation-failed', {
|
|
9
|
+
status: 422,
|
|
10
|
+
details: {
|
|
11
|
+
provider_id: error.providerId,
|
|
12
|
+
message: error.sanitizedMessage
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
if (error instanceof EgressDeniedError) {
|
|
17
|
+
throw new ClientError('Egress denied', 'egress-denied', {
|
|
18
|
+
status: 400,
|
|
19
|
+
details: {
|
|
20
|
+
reason: error.reason,
|
|
21
|
+
target: error.target
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
if (error instanceof CustomModelProviderSlugCollisionError) {
|
|
26
|
+
throw new ClientError('Custom model provider slug already exists', 'slug-collision', {
|
|
27
|
+
status: 409,
|
|
28
|
+
details: {
|
|
29
|
+
provider_id: error.providerId
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
if (error instanceof CustomModelProviderConfigNotFoundError) {
|
|
34
|
+
throw new ClientError('Custom model provider configuration not found', 'not-found', {
|
|
35
|
+
status: 404,
|
|
36
|
+
details: {
|
|
37
|
+
provider_id: error.providerId
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
if (error instanceof InvalidCustomModelProviderHeaderKeepError) {
|
|
42
|
+
throw new ClientError('Invalid kept secret header', 'invalid-header-keep', {
|
|
43
|
+
status: 422,
|
|
44
|
+
details: {
|
|
45
|
+
provider_id: error.providerId,
|
|
46
|
+
name: error.headerName
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
if (error instanceof CustomModelProviderStoredSecretBaseUrlChangeError) {
|
|
51
|
+
throw new ClientError('Stored custom model provider secrets cannot be reused with a changed base URL', 'stored-secret-base-url-changed', {
|
|
52
|
+
status: 422,
|
|
53
|
+
details: {
|
|
54
|
+
provider_id: error.providerId
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (error instanceof InvalidCredentialFieldsError) {
|
|
59
|
+
throw new ClientError('Invalid credential fields', 'invalid-credential-fields', {
|
|
60
|
+
status: 422,
|
|
61
|
+
details: {
|
|
62
|
+
provider_id: error.providerId,
|
|
63
|
+
expected_keys: getModelProviderCredentialKeys(error.providerId) ?? []
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (error instanceof InvalidAgentModelError) {
|
|
68
|
+
throw new ClientError('Invalid agent model', 'invalid-agent-model', {
|
|
69
|
+
status: 422,
|
|
70
|
+
details: {
|
|
71
|
+
harness: error.harness,
|
|
72
|
+
provider_id: error.providerId,
|
|
73
|
+
model: error.model
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (error instanceof UnsupportedModelProviderError) {
|
|
78
|
+
throw new ClientError('Provider is not supported', 'provider-unsupported', {
|
|
79
|
+
status: 422,
|
|
80
|
+
details: {
|
|
81
|
+
provider_id: error.providerId
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (error instanceof ModelProviderConfigNotFoundError) {
|
|
86
|
+
throw new ClientError('Provider is not configured', 'provider-not-configured', {
|
|
87
|
+
status: 422,
|
|
88
|
+
details: {
|
|
89
|
+
provider_id: error.providerId
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (error instanceof WorkspaceSecretCapExceededError) {
|
|
94
|
+
throw new ClientError('Workspace secret cap exceeded', 'workspace-secret-cap-exceeded', {
|
|
95
|
+
status: 409,
|
|
96
|
+
details: {
|
|
97
|
+
cap: error.cap
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
if (error instanceof SecretValueTooLargeError) {
|
|
102
|
+
throw new ClientError(error.message, 'value-too-large', {
|
|
103
|
+
status: 400,
|
|
104
|
+
details: {
|
|
105
|
+
max_bytes: error.maxBytes
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
throw error;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/errors.ts"],"sourcesContent":["import {getModelProviderCredentialKeys} from '@shipfox/api-agent-dto';\nimport {SecretValueTooLargeError, WorkspaceSecretCapExceededError} from '@shipfox/api-secrets';\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 (error instanceof WorkspaceSecretCapExceededError) {\n throw new ClientError('Workspace secret cap exceeded', 'workspace-secret-cap-exceeded', {\n status: 409,\n details: {cap: error.cap},\n });\n }\n\n if (error instanceof SecretValueTooLargeError) {\n throw new ClientError(error.message, 'value-too-large', {\n status: 400,\n details: {max_bytes: error.maxBytes},\n });\n }\n\n throw error;\n}\n"],"names":["getModelProviderCredentialKeys","SecretValueTooLargeError","WorkspaceSecretCapExceededError","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","cap","max_bytes","maxBytes"],"mappings":"AAAA,SAAQA,8BAA8B,QAAO,yBAAyB;AACtE,SAAQC,wBAAwB,EAAEC,+BAA+B,QAAO,uBAAuB;AAC/F,SAAQC,iBAAiB,QAAO,6BAA6B;AAC7D,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SACEC,sCAAsC,EACtCC,qCAAqC,EACrCC,iDAAiD,EACjDC,sBAAsB,EACtBC,4BAA4B,EAC5BC,yCAAyC,EACzCC,gCAAgC,EAChCC,4BAA4B,EAC5BC,6BAA6B,QACxB,iBAAiB;AAExB,OAAO,SAASC,iCAAiCC,KAAc;IAC7D,IAAIA,iBAAiBH,8BAA8B;QACjD,MAAM,IAAIR,YAAYW,MAAMC,gBAAgB,EAAE,8BAA8B;YAC1EC,QAAQ;YACRC,SAAS;gBACPC,aAAaJ,MAAMK,UAAU;gBAC7BC,SAASN,MAAMC,gBAAgB;YACjC;QACF;IACF;IAEA,IAAID,iBAAiBZ,mBAAmB;QACtC,MAAM,IAAIC,YAAY,iBAAiB,iBAAiB;YACtDa,QAAQ;YACRC,SAAS;gBACPI,QAAQP,MAAMO,MAAM;gBACpBC,QAAQR,MAAMQ,MAAM;YACtB;QACF;IACF;IAEA,IAAIR,iBAAiBT,uCAAuC;QAC1D,MAAM,IAAIF,YAAY,6CAA6C,kBAAkB;YACnFa,QAAQ;YACRC,SAAS;gBAACC,aAAaJ,MAAMK,UAAU;YAAA;QACzC;IACF;IAEA,IAAIL,iBAAiBV,wCAAwC;QAC3D,MAAM,IAAID,YAAY,iDAAiD,aAAa;YAClFa,QAAQ;YACRC,SAAS;gBAACC,aAAaJ,MAAMK,UAAU;YAAA;QACzC;IACF;IAEA,IAAIL,iBAAiBL,2CAA2C;QAC9D,MAAM,IAAIN,YAAY,8BAA8B,uBAAuB;YACzEa,QAAQ;YACRC,SAAS;gBAACC,aAAaJ,MAAMK,UAAU;gBAAEI,MAAMT,MAAMU,UAAU;YAAA;QACjE;IACF;IAEA,IAAIV,iBAAiBR,mDAAmD;QACtE,MAAM,IAAIH,YACR,iFACA,kCACA;YACEa,QAAQ;YACRC,SAAS;gBAACC,aAAaJ,MAAMK,UAAU;YAAA;QACzC;IAEJ;IAEA,IAAIL,iBAAiBN,8BAA8B;QACjD,MAAM,IAAIL,YAAY,6BAA6B,6BAA6B;YAC9Ea,QAAQ;YACRC,SAAS;gBACPC,aAAaJ,MAAMK,UAAU;gBAC7BM,eAAe1B,+BAA+Be,MAAMK,UAAU,KAAK,EAAE;YACvE;QACF;IACF;IAEA,IAAIL,iBAAiBP,wBAAwB;QAC3C,MAAM,IAAIJ,YAAY,uBAAuB,uBAAuB;YAClEa,QAAQ;YACRC,SAAS;gBACPS,SAASZ,MAAMY,OAAO;gBACtBR,aAAaJ,MAAMK,UAAU;gBAC7BQ,OAAOb,MAAMa,KAAK;YACpB;QACF;IACF;IAEA,IAAIb,iBAAiBF,+BAA+B;QAClD,MAAM,IAAIT,YAAY,6BAA6B,wBAAwB;YACzEa,QAAQ;YACRC,SAAS;gBAACC,aAAaJ,MAAMK,UAAU;YAAA;QACzC;IACF;IAEA,IAAIL,iBAAiBJ,kCAAkC;QACrD,MAAM,IAAIP,YAAY,8BAA8B,2BAA2B;YAC7Ea,QAAQ;YACRC,SAAS;gBACPC,aAAaJ,MAAMK,UAAU;YAC/B;QACF;IACF;IAEA,IAAIL,iBAAiBb,iCAAiC;QACpD,MAAM,IAAIE,YAAY,iCAAiC,iCAAiC;YACtFa,QAAQ;YACRC,SAAS;gBAACW,KAAKd,MAAMc,GAAG;YAAA;QAC1B;IACF;IAEA,IAAId,iBAAiBd,0BAA0B;QAC7C,MAAM,IAAIG,YAAYW,MAAMM,OAAO,EAAE,mBAAmB;YACtDJ,QAAQ;YACRC,SAAS;gBAACY,WAAWf,MAAMgB,QAAQ;YAAA;QACrC;IACF;IAEA,MAAMhB;AACR"}
|
|
@@ -0,0 +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;AAatD,eAAO,MAAM,WAAW,EAAE,UAAU,EAsBnC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AUTH_USER } from '@shipfox/api-auth-context';
|
|
2
|
+
import { createCustomModelProviderRoute } from './create-custom-model-provider.js';
|
|
3
|
+
import { deleteModelProviderConfigRoute } from './delete-model-provider-config.js';
|
|
4
|
+
import { discoverCustomModelProviderModelsRoute } from './discover-custom-model-provider-models.js';
|
|
5
|
+
import { discoverCustomModelProviderModelsBySlugRoute } from './discover-custom-model-provider-models-by-slug.js';
|
|
6
|
+
import { listModelProviderCatalogRoute } from './list-model-provider-catalog.js';
|
|
7
|
+
import { listModelProviderConfigsRoute } from './list-model-provider-configs.js';
|
|
8
|
+
import { setDefaultHarnessRoute } from './set-default-harness.js';
|
|
9
|
+
import { setDefaultModelProviderRoute } from './set-default-model-provider.js';
|
|
10
|
+
import { updateCustomModelProviderRoute } from './update-custom-model-provider.js';
|
|
11
|
+
import { updateModelProviderDefaultModelRoute } from './update-model-provider-default-model.js';
|
|
12
|
+
import { upsertModelProviderConfigRoute } from './upsert-model-provider-config.js';
|
|
13
|
+
export const agentRoutes = [
|
|
14
|
+
{
|
|
15
|
+
prefix: '/workspaces/:workspaceId/agent',
|
|
16
|
+
auth: AUTH_USER,
|
|
17
|
+
routes: [
|
|
18
|
+
listModelProviderConfigsRoute,
|
|
19
|
+
createCustomModelProviderRoute,
|
|
20
|
+
discoverCustomModelProviderModelsRoute,
|
|
21
|
+
discoverCustomModelProviderModelsBySlugRoute,
|
|
22
|
+
updateCustomModelProviderRoute,
|
|
23
|
+
upsertModelProviderConfigRoute,
|
|
24
|
+
updateModelProviderDefaultModelRoute,
|
|
25
|
+
deleteModelProviderConfigRoute,
|
|
26
|
+
setDefaultHarnessRoute,
|
|
27
|
+
setDefaultModelProviderRoute
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
prefix: '/agent',
|
|
32
|
+
auth: AUTH_USER,
|
|
33
|
+
routes: [
|
|
34
|
+
listModelProviderCatalogRoute
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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 {deleteModelProviderConfigRoute} from './delete-model-provider-config.js';\nimport {discoverCustomModelProviderModelsRoute} from './discover-custom-model-provider-models.js';\nimport {discoverCustomModelProviderModelsBySlugRoute} 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 {updateCustomModelProviderRoute} from './update-custom-model-provider.js';\nimport {updateModelProviderDefaultModelRoute} from './update-model-provider-default-model.js';\nimport {upsertModelProviderConfigRoute} from './upsert-model-provider-config.js';\n\nexport const agentRoutes: RouteGroup[] = [\n {\n prefix: '/workspaces/:workspaceId/agent',\n auth: AUTH_USER,\n routes: [\n listModelProviderConfigsRoute,\n createCustomModelProviderRoute,\n discoverCustomModelProviderModelsRoute,\n discoverCustomModelProviderModelsBySlugRoute,\n updateCustomModelProviderRoute,\n upsertModelProviderConfigRoute,\n updateModelProviderDefaultModelRoute,\n deleteModelProviderConfigRoute,\n setDefaultHarnessRoute,\n setDefaultModelProviderRoute,\n ],\n },\n {\n prefix: '/agent',\n auth: AUTH_USER,\n routes: [listModelProviderCatalogRoute],\n },\n];\n"],"names":["AUTH_USER","createCustomModelProviderRoute","deleteModelProviderConfigRoute","discoverCustomModelProviderModelsRoute","discoverCustomModelProviderModelsBySlugRoute","listModelProviderCatalogRoute","listModelProviderConfigsRoute","setDefaultHarnessRoute","setDefaultModelProviderRoute","updateCustomModelProviderRoute","updateModelProviderDefaultModelRoute","upsertModelProviderConfigRoute","agentRoutes","prefix","auth","routes"],"mappings":"AAAA,SAAQA,SAAS,QAAO,4BAA4B;AAEpD,SAAQC,8BAA8B,QAAO,oCAAoC;AACjF,SAAQC,8BAA8B,QAAO,oCAAoC;AACjF,SAAQC,sCAAsC,QAAO,6CAA6C;AAClG,SAAQC,4CAA4C,QAAO,qDAAqD;AAChH,SAAQC,6BAA6B,QAAO,mCAAmC;AAC/E,SAAQC,6BAA6B,QAAO,mCAAmC;AAC/E,SAAQC,sBAAsB,QAAO,2BAA2B;AAChE,SAAQC,4BAA4B,QAAO,kCAAkC;AAC7E,SAAQC,8BAA8B,QAAO,oCAAoC;AACjF,SAAQC,oCAAoC,QAAO,2CAA2C;AAC9F,SAAQC,8BAA8B,QAAO,oCAAoC;AAEjF,OAAO,MAAMC,cAA4B;IACvC;QACEC,QAAQ;QACRC,MAAMd;QACNe,QAAQ;YACNT;YACAL;YACAE;YACAC;YACAK;YACAE;YACAD;YACAR;YACAK;YACAC;SACD;IACH;IACA;QACEK,QAAQ;QACRC,MAAMd;QACNe,QAAQ;YAACV;SAA8B;IACzC;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-model-provider-catalog.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/list-model-provider-catalog.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,6BAA6B,iDAUxC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { modelProviderCatalogResponseSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { defineRoute } from '@shipfox/node-fastify';
|
|
3
|
+
import { buildModelProviderCatalog } from '#core/index.js';
|
|
4
|
+
export const listModelProviderCatalogRoute = defineRoute({
|
|
5
|
+
method: 'GET',
|
|
6
|
+
path: '/model-provider-catalog',
|
|
7
|
+
description: 'List available model providers and models',
|
|
8
|
+
schema: {
|
|
9
|
+
response: {
|
|
10
|
+
200: modelProviderCatalogResponseSchema
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
handler: ()=>({
|
|
14
|
+
providers: buildModelProviderCatalog()
|
|
15
|
+
})
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
//# sourceMappingURL=list-model-provider-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/list-model-provider-catalog.ts"],"sourcesContent":["import {modelProviderCatalogResponseSchema} from '@shipfox/api-agent-dto';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {buildModelProviderCatalog} from '#core/index.js';\n\nexport const listModelProviderCatalogRoute = defineRoute({\n method: 'GET',\n path: '/model-provider-catalog',\n description: 'List available model providers and models',\n schema: {\n response: {\n 200: modelProviderCatalogResponseSchema,\n },\n },\n handler: () => ({providers: buildModelProviderCatalog()}),\n});\n"],"names":["modelProviderCatalogResponseSchema","defineRoute","buildModelProviderCatalog","listModelProviderCatalogRoute","method","path","description","schema","response","handler","providers"],"mappings":"AAAA,SAAQA,kCAAkC,QAAO,yBAAyB;AAC1E,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,yBAAyB,QAAO,iBAAiB;AAEzD,OAAO,MAAMC,gCAAgCF,YAAY;IACvDG,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,UAAU;YACR,KAAKR;QACP;IACF;IACAS,SAAS,IAAO,CAAA;YAACC,WAAWR;QAA2B,CAAA;AACzD,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-model-provider-configs.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/list-model-provider-configs.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,6BAA6B,iDAyBxC,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { listModelProviderConfigsResponseSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { requireWorkspaceAccess } from '@shipfox/api-auth-context';
|
|
3
|
+
import { defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { getAgentWorkspaceSettings, listModelProviderConfigs } from '#db/index.js';
|
|
6
|
+
import { toModelProviderConfigResponseDto } from '#presentation/dto/index.js';
|
|
7
|
+
export const listModelProviderConfigsRoute = defineRoute({
|
|
8
|
+
method: 'GET',
|
|
9
|
+
path: '/model-providers',
|
|
10
|
+
description: 'List model provider configurations for a workspace',
|
|
11
|
+
schema: {
|
|
12
|
+
params: z.object({
|
|
13
|
+
workspaceId: z.string().uuid()
|
|
14
|
+
}),
|
|
15
|
+
response: {
|
|
16
|
+
200: listModelProviderConfigsResponseSchema
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
handler: async (request)=>{
|
|
20
|
+
const { workspaceId } = request.params;
|
|
21
|
+
requireWorkspaceAccess({
|
|
22
|
+
request,
|
|
23
|
+
workspaceId
|
|
24
|
+
});
|
|
25
|
+
const [configs, settings] = await Promise.all([
|
|
26
|
+
listModelProviderConfigs(workspaceId),
|
|
27
|
+
getAgentWorkspaceSettings(workspaceId)
|
|
28
|
+
]);
|
|
29
|
+
return {
|
|
30
|
+
configs: configs.map(toModelProviderConfigResponseDto),
|
|
31
|
+
default_harness_id: settings?.defaultHarnessId ?? null,
|
|
32
|
+
default_provider_id: settings?.defaultProviderId ?? null
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=list-model-provider-configs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/list-model-provider-configs.ts"],"sourcesContent":["import {listModelProviderConfigsResponseSchema} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {getAgentWorkspaceSettings, listModelProviderConfigs} from '#db/index.js';\nimport {toModelProviderConfigResponseDto} from '#presentation/dto/index.js';\n\nexport const listModelProviderConfigsRoute = defineRoute({\n method: 'GET',\n path: '/model-providers',\n description: 'List model provider configurations for a workspace',\n schema: {\n params: z.object({workspaceId: z.string().uuid()}),\n response: {\n 200: listModelProviderConfigsResponseSchema,\n },\n },\n handler: async (request) => {\n const {workspaceId} = request.params;\n requireWorkspaceAccess({request, workspaceId});\n\n const [configs, settings] = await Promise.all([\n listModelProviderConfigs(workspaceId),\n getAgentWorkspaceSettings(workspaceId),\n ]);\n\n return {\n configs: configs.map(toModelProviderConfigResponseDto),\n default_harness_id: settings?.defaultHarnessId ?? null,\n default_provider_id: settings?.defaultProviderId ?? null,\n };\n },\n});\n"],"names":["listModelProviderConfigsResponseSchema","requireWorkspaceAccess","defineRoute","z","getAgentWorkspaceSettings","listModelProviderConfigs","toModelProviderConfigResponseDto","listModelProviderConfigsRoute","method","path","description","schema","params","object","workspaceId","string","uuid","response","handler","request","configs","settings","Promise","all","map","default_harness_id","defaultHarnessId","default_provider_id","defaultProviderId"],"mappings":"AAAA,SAAQA,sCAAsC,QAAO,yBAAyB;AAC9E,SAAQC,sBAAsB,QAAO,4BAA4B;AACjE,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,yBAAyB,EAAEC,wBAAwB,QAAO,eAAe;AACjF,SAAQC,gCAAgC,QAAO,6BAA6B;AAE5E,OAAO,MAAMC,gCAAgCL,YAAY;IACvDM,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,QAAQT,EAAEU,MAAM,CAAC;YAACC,aAAaX,EAAEY,MAAM,GAAGC,IAAI;QAAE;QAChDC,UAAU;YACR,KAAKjB;QACP;IACF;IACAkB,SAAS,OAAOC;QACd,MAAM,EAACL,WAAW,EAAC,GAAGK,QAAQP,MAAM;QACpCX,uBAAuB;YAACkB;YAASL;QAAW;QAE5C,MAAM,CAACM,SAASC,SAAS,GAAG,MAAMC,QAAQC,GAAG,CAAC;YAC5ClB,yBAAyBS;YACzBV,0BAA0BU;SAC3B;QAED,OAAO;YACLM,SAASA,QAAQI,GAAG,CAAClB;YACrBmB,oBAAoBJ,UAAUK,oBAAoB;YAClDC,qBAAqBN,UAAUO,qBAAqB;QACtD;IACF;AACF,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-default-harness.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/set-default-harness.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB,iDA0BjC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { setDefaultHarnessBodySchema, setDefaultHarnessResponseSchema } from '@shipfox/api-agent-dto';
|
|
2
|
+
import { requireWorkspaceAccess } from '@shipfox/api-auth-context';
|
|
3
|
+
import { defineRoute } from '@shipfox/node-fastify';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { setDefaultHarness } from '#db/index.js';
|
|
6
|
+
export const setDefaultHarnessRoute = defineRoute({
|
|
7
|
+
method: 'PUT',
|
|
8
|
+
path: '/default-harness',
|
|
9
|
+
description: 'Set the default agent harness for a workspace',
|
|
10
|
+
schema: {
|
|
11
|
+
params: z.object({
|
|
12
|
+
workspaceId: z.string().uuid()
|
|
13
|
+
}),
|
|
14
|
+
body: setDefaultHarnessBodySchema,
|
|
15
|
+
response: {
|
|
16
|
+
200: setDefaultHarnessResponseSchema
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
handler: async (request)=>{
|
|
20
|
+
const { workspaceId } = request.params;
|
|
21
|
+
requireWorkspaceAccess({
|
|
22
|
+
request,
|
|
23
|
+
workspaceId
|
|
24
|
+
});
|
|
25
|
+
const settings = await setDefaultHarness({
|
|
26
|
+
workspaceId,
|
|
27
|
+
harnessId: request.body.harness_id
|
|
28
|
+
});
|
|
29
|
+
if (settings.defaultHarnessId === null) {
|
|
30
|
+
throw new Error('Default harness upsert returned a null harness');
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
default_harness_id: settings.defaultHarnessId
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
//# sourceMappingURL=set-default-harness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/presentation/routes/set-default-harness.ts"],"sourcesContent":["import {setDefaultHarnessBodySchema, setDefaultHarnessResponseSchema} from '@shipfox/api-agent-dto';\nimport {requireWorkspaceAccess} from '@shipfox/api-auth-context';\nimport {defineRoute} from '@shipfox/node-fastify';\nimport {z} from 'zod';\nimport {setDefaultHarness} from '#db/index.js';\n\nexport const setDefaultHarnessRoute = defineRoute({\n method: 'PUT',\n path: '/default-harness',\n description: 'Set the default agent harness for a workspace',\n schema: {\n params: z.object({workspaceId: z.string().uuid()}),\n body: setDefaultHarnessBodySchema,\n response: {\n 200: setDefaultHarnessResponseSchema,\n },\n },\n handler: async (request) => {\n const {workspaceId} = request.params;\n requireWorkspaceAccess({request, workspaceId});\n\n const settings = await setDefaultHarness({\n workspaceId,\n harnessId: request.body.harness_id,\n });\n\n if (settings.defaultHarnessId === null) {\n throw new Error('Default harness upsert returned a null harness');\n }\n\n return {default_harness_id: settings.defaultHarnessId};\n },\n});\n"],"names":["setDefaultHarnessBodySchema","setDefaultHarnessResponseSchema","requireWorkspaceAccess","defineRoute","z","setDefaultHarness","setDefaultHarnessRoute","method","path","description","schema","params","object","workspaceId","string","uuid","body","response","handler","request","settings","harnessId","harness_id","defaultHarnessId","Error","default_harness_id"],"mappings":"AAAA,SAAQA,2BAA2B,EAAEC,+BAA+B,QAAO,yBAAyB;AACpG,SAAQC,sBAAsB,QAAO,4BAA4B;AACjE,SAAQC,WAAW,QAAO,wBAAwB;AAClD,SAAQC,CAAC,QAAO,MAAM;AACtB,SAAQC,iBAAiB,QAAO,eAAe;AAE/C,OAAO,MAAMC,yBAAyBH,YAAY;IAChDI,QAAQ;IACRC,MAAM;IACNC,aAAa;IACbC,QAAQ;QACNC,QAAQP,EAAEQ,MAAM,CAAC;YAACC,aAAaT,EAAEU,MAAM,GAAGC,IAAI;QAAE;QAChDC,MAAMhB;QACNiB,UAAU;YACR,KAAKhB;QACP;IACF;IACAiB,SAAS,OAAOC;QACd,MAAM,EAACN,WAAW,EAAC,GAAGM,QAAQR,MAAM;QACpCT,uBAAuB;YAACiB;YAASN;QAAW;QAE5C,MAAMO,WAAW,MAAMf,kBAAkB;YACvCQ;YACAQ,WAAWF,QAAQH,IAAI,CAACM,UAAU;QACpC;QAEA,IAAIF,SAASG,gBAAgB,KAAK,MAAM;YACtC,MAAM,IAAIC,MAAM;QAClB;QAEA,OAAO;YAACC,oBAAoBL,SAASG,gBAAgB;QAAA;IACvD;AACF,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-default-model-provider.d.ts","sourceRoot":"","sources":["../../../src/presentation/routes/set-default-model-provider.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,4BAA4B,iDAkCvC,CAAC"}
|