@truefoundry/trueforge 0.1.0-rc.0 → 0.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/dist/_frontend/assets/ConnectorSettings-H37ZFC6Z-BoDzRBt-.js +1 -0
- package/dist/_frontend/assets/ConnectorSettings-H37ZFC6Z-BoDzRBt-.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-H37ZFC6Z-BoDzRBt-.js.gz +0 -0
- package/dist/_frontend/assets/{DockLayout-WRF7EQLD-BRAhcSNV.js → DockLayout-KEMFRWIR-2H2_fGVk.js} +1 -1
- package/dist/_frontend/assets/{DrawerLayout-X2UXYTOS-D60ziyi9.js → DrawerLayout-ZVWCKEIS-DFGUqK6q.js} +2 -2
- package/dist/_frontend/assets/DrawerLayout-ZVWCKEIS-DFGUqK6q.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-ZVWCKEIS-DFGUqK6q.js.gz +0 -0
- package/dist/_frontend/assets/ModelSettings-QJMYHCMD-DaR_pzAb.js +1 -0
- package/dist/_frontend/assets/ModelSettings-QJMYHCMD-DaR_pzAb.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-QJMYHCMD-DaR_pzAb.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-BUBMLW7Q-ChiNe2Y8.js +1 -0
- package/dist/_frontend/assets/SandboxSettings-BUBMLW7Q-ChiNe2Y8.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-BUBMLW7Q-ChiNe2Y8.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-26XSGIHK-DmgjXL0m.js +2 -0
- package/dist/_frontend/assets/SettingsBuilder-26XSGIHK-DmgjXL0m.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-26XSGIHK-DmgjXL0m.js.gz +0 -0
- package/dist/_frontend/assets/{SidebarLayout-M7HEOZVK-owseAySg.js → SidebarLayout-F3XFXW7B-BQV8bkzL.js} +2 -2
- package/dist/_frontend/assets/SidebarLayout-F3XFXW7B-BQV8bkzL.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-F3XFXW7B-BQV8bkzL.js.gz +0 -0
- package/dist/_frontend/assets/{SkillSettings-MXK4ZEI7-CrK7D1D-.js → SkillSettings-IRMGDFRG-ChKre3S8.js} +1 -1
- package/dist/_frontend/assets/SkillSettings-IRMGDFRG-ChKre3S8.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-IRMGDFRG-ChKre3S8.js.gz +0 -0
- package/dist/_frontend/assets/{WidgetLayout-7MDOKLHU-OdQcbsJk.js → WidgetLayout-SZMABKIR-BRKArpEm.js} +1 -1
- package/dist/_frontend/assets/WidgetLayout-SZMABKIR-BRKArpEm.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-SZMABKIR-BRKArpEm.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-NBMP2XNL-DdVXEaJy.js → chunk-7EEOWDLE-BIwInB6G.js} +2 -2
- package/dist/_frontend/assets/chunk-7EEOWDLE-BIwInB6G.js.br +0 -0
- package/dist/_frontend/assets/chunk-7EEOWDLE-BIwInB6G.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-WFC3W4C3-DXFwnpmH.js → chunk-LRQHHZDX-eb14Z2nA.js} +1 -1
- package/dist/_frontend/assets/chunk-LRQHHZDX-eb14Z2nA.js.br +0 -0
- package/dist/_frontend/assets/chunk-LRQHHZDX-eb14Z2nA.js.gz +0 -0
- package/dist/_frontend/assets/{cssMode-BIIwADkQ.js → cssMode-Bb1lR8Ti.js} +1 -1
- package/dist/_frontend/assets/cssMode-Bb1lR8Ti.js.br +0 -0
- package/dist/_frontend/assets/cssMode-Bb1lR8Ti.js.gz +0 -0
- package/dist/_frontend/assets/{freemarker2-DWtRl63b.js → freemarker2-BrrF7mKG.js} +1 -1
- package/dist/_frontend/assets/freemarker2-BrrF7mKG.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-BrrF7mKG.js.gz +0 -0
- package/dist/_frontend/assets/{handlebars-CJJYL_TE.js → handlebars-WQ7HMT1b.js} +1 -1
- package/dist/_frontend/assets/handlebars-WQ7HMT1b.js.br +0 -0
- package/dist/_frontend/assets/handlebars-WQ7HMT1b.js.gz +0 -0
- package/dist/_frontend/assets/{html-CIyPQjdd.js → html-CoOPnhCb.js} +1 -1
- package/dist/_frontend/assets/html-CoOPnhCb.js.br +0 -0
- package/dist/_frontend/assets/html-CoOPnhCb.js.gz +0 -0
- package/dist/_frontend/assets/{htmlMode-CDsupPvj.js → htmlMode-BW7taYty.js} +1 -1
- package/dist/_frontend/assets/htmlMode-BW7taYty.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-BW7taYty.js.gz +0 -0
- package/dist/_frontend/assets/{index-B8NomNE2.js → index-ChCGltYc.js} +242 -232
- package/dist/_frontend/assets/index-ChCGltYc.js.br +0 -0
- package/dist/_frontend/assets/index-ChCGltYc.js.gz +0 -0
- package/dist/_frontend/assets/{index-CKMEtdQA.js → index-DFQqb6R1.js} +3 -3
- package/dist/_frontend/assets/index-DFQqb6R1.js.br +0 -0
- package/dist/_frontend/assets/index-DFQqb6R1.js.gz +0 -0
- package/dist/_frontend/assets/{javascript-CPSnXnaS.js → javascript-CPINtbIt.js} +1 -1
- package/dist/_frontend/assets/{jsonMode-DRy4DQT3.js → jsonMode-C8qDzOfb.js} +1 -1
- package/dist/_frontend/assets/jsonMode-C8qDzOfb.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-C8qDzOfb.js.gz +0 -0
- package/dist/_frontend/assets/{liquid-a-xIf2lN.js → liquid-zGC9H1Dt.js} +1 -1
- package/dist/_frontend/assets/liquid-zGC9H1Dt.js.br +0 -0
- package/dist/_frontend/assets/liquid-zGC9H1Dt.js.gz +0 -0
- package/dist/_frontend/assets/{lspLanguageFeatures-Tavpp1a0.js → lspLanguageFeatures-B6VPH2Sv.js} +1 -1
- package/dist/_frontend/assets/lspLanguageFeatures-B6VPH2Sv.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-B6VPH2Sv.js.gz +0 -0
- package/dist/_frontend/assets/{mdx-D3wOHh0p.js → mdx-BrQrGCP9.js} +1 -1
- package/dist/_frontend/assets/mdx-BrQrGCP9.js.br +0 -0
- package/dist/_frontend/assets/mdx-BrQrGCP9.js.gz +0 -0
- package/dist/_frontend/assets/{python-8zlVof3q.js → python-zKGpYLwR.js} +1 -1
- package/dist/_frontend/assets/python-zKGpYLwR.js.br +0 -0
- package/dist/_frontend/assets/python-zKGpYLwR.js.gz +0 -0
- package/dist/_frontend/assets/{razor-q_HfjjpC.js → razor-BJ38lYsd.js} +1 -1
- package/dist/_frontend/assets/razor-BJ38lYsd.js.br +0 -0
- package/dist/_frontend/assets/razor-BJ38lYsd.js.gz +0 -0
- package/dist/_frontend/assets/{tsMode-DOOZolwq.js → tsMode-dPLqGMg8.js} +1 -1
- package/dist/_frontend/assets/tsMode-dPLqGMg8.js.br +0 -0
- package/dist/_frontend/assets/tsMode-dPLqGMg8.js.gz +0 -0
- package/dist/_frontend/assets/{typescript-CmhvHmNu.js → typescript-BJlivWry.js} +1 -1
- package/dist/_frontend/assets/typescript-BJlivWry.js.br +0 -0
- package/dist/_frontend/assets/typescript-BJlivWry.js.gz +0 -0
- package/dist/_frontend/assets/{workers-CfU2h0GU.js → workers-fMwav4jB.js} +1 -1
- package/dist/_frontend/assets/workers-fMwav4jB.js.br +0 -0
- package/dist/_frontend/assets/workers-fMwav4jB.js.gz +0 -0
- package/dist/_frontend/assets/{xml-D3jhgOra.js → xml-DZW470wi.js} +1 -1
- package/dist/_frontend/assets/xml-DZW470wi.js.br +0 -0
- package/dist/_frontend/assets/xml-DZW470wi.js.gz +0 -0
- package/dist/_frontend/assets/{yaml-B-q42846.js → yaml-Bs1DumYp.js} +1 -1
- package/dist/_frontend/assets/yaml-Bs1DumYp.js.br +0 -0
- package/dist/_frontend/assets/yaml-Bs1DumYp.js.gz +0 -0
- package/dist/_frontend/index.html +1 -1
- package/dist/_frontend/index.html.br +0 -0
- package/dist/_frontend/index.html.gz +0 -0
- package/dist/main.js +120 -79
- package/dist/main.js.map +1 -1
- package/dist/postgres/migrations/20260815_000002_mcp_server_description.js +23 -0
- package/dist/postgres/migrations/20260815_000002_mcp_server_description.js.map +1 -0
- package/dist/sqlite/migrations/20260815_000002_mcp_server_description.js +21 -0
- package/dist/sqlite/migrations/20260815_000002_mcp_server_description.js.map +1 -0
- package/package.json +2 -2
- package/dist/_frontend/assets/ConnectorSettings-CLBEWGQJ-BjMXOS3R.js +0 -1
- package/dist/_frontend/assets/ConnectorSettings-CLBEWGQJ-BjMXOS3R.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-CLBEWGQJ-BjMXOS3R.js.gz +0 -0
- package/dist/_frontend/assets/DrawerLayout-X2UXYTOS-D60ziyi9.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-X2UXYTOS-D60ziyi9.js.gz +0 -0
- package/dist/_frontend/assets/ModelSettings-IJ55QJQO-BFV2nfxB.js +0 -1
- package/dist/_frontend/assets/ModelSettings-IJ55QJQO-BFV2nfxB.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-IJ55QJQO-BFV2nfxB.js.gz +0 -0
- package/dist/_frontend/assets/SandboxSettings-S5XGZWOL-BUQpWdqg.js +0 -1
- package/dist/_frontend/assets/SandboxSettings-S5XGZWOL-BUQpWdqg.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-S5XGZWOL-BUQpWdqg.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-64Y33NP3-BQNwNwxh.js +0 -2
- package/dist/_frontend/assets/SettingsBuilder-64Y33NP3-BQNwNwxh.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-64Y33NP3-BQNwNwxh.js.gz +0 -0
- package/dist/_frontend/assets/SidebarLayout-M7HEOZVK-owseAySg.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-M7HEOZVK-owseAySg.js.gz +0 -0
- package/dist/_frontend/assets/SkillSettings-MXK4ZEI7-CrK7D1D-.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-MXK4ZEI7-CrK7D1D-.js.gz +0 -0
- package/dist/_frontend/assets/WidgetLayout-7MDOKLHU-OdQcbsJk.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-7MDOKLHU-OdQcbsJk.js.gz +0 -0
- package/dist/_frontend/assets/chunk-NBMP2XNL-DdVXEaJy.js.br +0 -2
- package/dist/_frontend/assets/chunk-NBMP2XNL-DdVXEaJy.js.gz +0 -0
- package/dist/_frontend/assets/chunk-WFC3W4C3-DXFwnpmH.js.br +0 -0
- package/dist/_frontend/assets/chunk-WFC3W4C3-DXFwnpmH.js.gz +0 -0
- package/dist/_frontend/assets/cssMode-BIIwADkQ.js.br +0 -0
- package/dist/_frontend/assets/cssMode-BIIwADkQ.js.gz +0 -0
- package/dist/_frontend/assets/freemarker2-DWtRl63b.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-DWtRl63b.js.gz +0 -0
- package/dist/_frontend/assets/handlebars-CJJYL_TE.js.br +0 -0
- package/dist/_frontend/assets/handlebars-CJJYL_TE.js.gz +0 -0
- package/dist/_frontend/assets/html-CIyPQjdd.js.br +0 -0
- package/dist/_frontend/assets/html-CIyPQjdd.js.gz +0 -0
- package/dist/_frontend/assets/htmlMode-CDsupPvj.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-CDsupPvj.js.gz +0 -0
- package/dist/_frontend/assets/index-B8NomNE2.js.br +0 -0
- package/dist/_frontend/assets/index-B8NomNE2.js.gz +0 -0
- package/dist/_frontend/assets/index-CKMEtdQA.js.br +0 -0
- package/dist/_frontend/assets/index-CKMEtdQA.js.gz +0 -0
- package/dist/_frontend/assets/jsonMode-DRy4DQT3.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-DRy4DQT3.js.gz +0 -0
- package/dist/_frontend/assets/liquid-a-xIf2lN.js.br +0 -0
- package/dist/_frontend/assets/liquid-a-xIf2lN.js.gz +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-Tavpp1a0.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-Tavpp1a0.js.gz +0 -0
- package/dist/_frontend/assets/mdx-D3wOHh0p.js.br +0 -0
- package/dist/_frontend/assets/mdx-D3wOHh0p.js.gz +0 -0
- package/dist/_frontend/assets/python-8zlVof3q.js.br +0 -0
- package/dist/_frontend/assets/python-8zlVof3q.js.gz +0 -0
- package/dist/_frontend/assets/razor-q_HfjjpC.js.br +0 -0
- package/dist/_frontend/assets/razor-q_HfjjpC.js.gz +0 -0
- package/dist/_frontend/assets/tsMode-DOOZolwq.js.br +0 -0
- package/dist/_frontend/assets/tsMode-DOOZolwq.js.gz +0 -0
- package/dist/_frontend/assets/typescript-CmhvHmNu.js.br +0 -0
- package/dist/_frontend/assets/typescript-CmhvHmNu.js.gz +0 -0
- package/dist/_frontend/assets/workers-CfU2h0GU.js.br +0 -0
- package/dist/_frontend/assets/workers-CfU2h0GU.js.gz +0 -0
- package/dist/_frontend/assets/xml-D3jhgOra.js.br +0 -0
- package/dist/_frontend/assets/xml-D3jhgOra.js.gz +0 -0
- package/dist/_frontend/assets/yaml-B-q42846.js.br +0 -0
- package/dist/_frontend/assets/yaml-B-q42846.js.gz +0 -0
package/dist/main.js
CHANGED
|
@@ -4169,7 +4169,7 @@ import { z } from "@hono/zod-openapi";
|
|
|
4169
4169
|
var NameSchema = z.string().min(2).max(64).regex(
|
|
4170
4170
|
/^[a-z](?:[a-z0-9._-]{0,62}[a-z0-9])$/,
|
|
4171
4171
|
'must be 2\u201364 lowercase chars: start with a letter, end with alphanumeric, optionally separated by ".", "_" or "-"'
|
|
4172
|
-
).
|
|
4172
|
+
).openapi("ResourceName");
|
|
4173
4173
|
function uniqueNames(entries, ctx) {
|
|
4174
4174
|
const seen = /* @__PURE__ */ new Set();
|
|
4175
4175
|
for (const entry of entries) {
|
|
@@ -4691,10 +4691,10 @@ var DaytonaSandboxProviderAuthSchema = z5.object({
|
|
|
4691
4691
|
api_key: z5.string().min(1).describe(
|
|
4692
4692
|
"Daytona API key. Responses are redacted; on PUT, a real value sets/rotates and a redacted value keeps the stored key."
|
|
4693
4693
|
)
|
|
4694
|
-
}).strict().openapi("DaytonaSandboxProviderAuth");
|
|
4694
|
+
}).strict().describe("Daytona authentication credentials.").openapi("DaytonaSandboxProviderAuth");
|
|
4695
4695
|
var DaytonaSandboxProviderSchema = z5.object({
|
|
4696
4696
|
type: z5.literal("daytona").describe("Daytona sandbox provider."),
|
|
4697
|
-
auth: DaytonaSandboxProviderAuthSchema
|
|
4697
|
+
auth: DaytonaSandboxProviderAuthSchema,
|
|
4698
4698
|
exec_timeout_ms: z5.number().int().positive().describe("Default sandbox command exec timeout in milliseconds."),
|
|
4699
4699
|
auto_stop_interval_in_minutes: z5.number().int().nonnegative().describe("Minutes of idle time before Daytona auto-stops the sandbox (0 disables)."),
|
|
4700
4700
|
auto_archive_interval_in_minutes: z5.number().int().nonnegative().describe("Minutes before Daytona auto-archives the sandbox (0 disables)."),
|
|
@@ -4710,17 +4710,16 @@ var SandboxStatusSchema = z5.object({
|
|
|
4710
4710
|
"Provider-specific build metadata; null when the provider has none."
|
|
4711
4711
|
)
|
|
4712
4712
|
}).strict();
|
|
4713
|
-
var
|
|
4713
|
+
var SandboxProviderSchema = z5.object({
|
|
4714
4714
|
manifest: SandboxProviderManifestSchema,
|
|
4715
4715
|
status: SandboxBuildStatusSchema,
|
|
4716
4716
|
status_reason: z5.string().nullable().describe("Human-readable detail for the current status; null when ready.")
|
|
4717
|
-
}).strict().openapi("
|
|
4718
|
-
var PutSandboxProviderRequestSchema =
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
}).openapi("PutSandboxProviderResponse");
|
|
4717
|
+
}).strict().openapi("SandboxProvider");
|
|
4718
|
+
var PutSandboxProviderRequestSchema = z5.object({
|
|
4719
|
+
manifest: SandboxProviderManifestSchema
|
|
4720
|
+
}).strict().openapi("PutSandboxProviderRequest");
|
|
4722
4721
|
var GetSandboxProviderResponseSchema = z5.object({
|
|
4723
|
-
data:
|
|
4722
|
+
data: SandboxProviderSchema
|
|
4724
4723
|
}).openapi("GetSandboxProviderResponse");
|
|
4725
4724
|
function toDaytonaSandboxProviderInput(manifest) {
|
|
4726
4725
|
return {
|
|
@@ -4747,7 +4746,7 @@ function toDaytonaSandboxProvider({
|
|
|
4747
4746
|
client: new Daytona({ apiKey }),
|
|
4748
4747
|
...settings,
|
|
4749
4748
|
tenantName: tenant_id,
|
|
4750
|
-
sandboxImage: SANDBOX_IMAGE_URI,
|
|
4749
|
+
sandboxImage: build_metadata?.["image_uri"] ?? SANDBOX_IMAGE_URI,
|
|
4751
4750
|
buildRef: build_metadata?.["build_ref"],
|
|
4752
4751
|
fileMaxBytesForDownload: config_default.SANDBOX_FILE_MAX_BYTES_FOR_DOWNLOAD,
|
|
4753
4752
|
logger
|
|
@@ -4810,39 +4809,42 @@ var McpServerHeaderAuthSchema = z6.object({
|
|
|
4810
4809
|
var McpServerDcrAuthSchema = z6.object({
|
|
4811
4810
|
type: z6.literal("dcr").describe("Authenticate via OAuth Dynamic Client Registration.")
|
|
4812
4811
|
}).strict().openapi("McpServerDcrAuth");
|
|
4813
|
-
var
|
|
4812
|
+
var McpServerManifestAuthSchema = z6.discriminatedUnion("type", [McpServerHeaderAuthSchema, McpServerDcrAuthSchema]).describe("Optional auth settings. Omit when the server needs no credentials.").openapi("McpServerManifestAuth");
|
|
4813
|
+
var McpServerDescriptionSchema = z6.string().trim().min(1).describe("Concise summary of what this MCP server provides.");
|
|
4814
4814
|
var McpServerManifestObjectSchema = z6.object({
|
|
4815
|
-
type: McpServerTypeSchema
|
|
4815
|
+
type: McpServerTypeSchema,
|
|
4816
4816
|
name: NameSchema,
|
|
4817
4817
|
url: z6.url().describe("URL of the remote MCP server."),
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
)
|
|
4818
|
+
description: McpServerDescriptionSchema,
|
|
4819
|
+
auth: McpServerManifestAuthSchema.optional()
|
|
4821
4820
|
}).strict();
|
|
4822
4821
|
var McpServerManifestSchema = McpServerManifestObjectSchema.openapi("McpServerManifest");
|
|
4823
4822
|
var McpAuthStatusSchema = z6.object({
|
|
4824
4823
|
status: z6.enum(["authenticated", "auth_required", "not_required"]).describe("Current auth state for this MCP server."),
|
|
4825
4824
|
authorization_url: z6.url().optional().describe("When auth is required, this contains the URL to redirect the user to for authorization.")
|
|
4826
|
-
}).strict().openapi("McpAuthStatus");
|
|
4827
|
-
var ConfiguredMcpServerSchema =
|
|
4825
|
+
}).strict().describe("Current auth state.").openapi("McpAuthStatus");
|
|
4826
|
+
var ConfiguredMcpServerSchema = z6.object({
|
|
4827
|
+
name: NameSchema,
|
|
4828
|
+
manifest: McpServerManifestSchema,
|
|
4828
4829
|
auth_status: McpAuthStatusSchema
|
|
4829
|
-
}).openapi("ConfiguredMcpServer");
|
|
4830
|
-
var
|
|
4831
|
-
|
|
4832
|
-
|
|
4830
|
+
}).strict().openapi("ConfiguredMcpServer");
|
|
4831
|
+
var CreateMcpServerRequestSchema = z6.object({
|
|
4832
|
+
manifest: McpServerManifestSchema
|
|
4833
|
+
}).strict().openapi("CreateMcpServerRequest");
|
|
4834
|
+
var PutMcpServerRequestSchema = z6.object({
|
|
4835
|
+
manifest: McpServerManifestSchema
|
|
4836
|
+
}).strict().openapi("PutMcpServerRequest");
|
|
4833
4837
|
var GetMcpServerResponseSchema = z6.object({ data: ConfiguredMcpServerSchema }).openapi("GetMcpServerResponse");
|
|
4834
4838
|
var ListMcpServersResponseSchema = z6.object({ data: z6.array(ConfiguredMcpServerSchema) }).openapi("ListMcpServersResponse");
|
|
4835
4839
|
var McpServerAuthPublicSchema = z6.discriminatedUnion("type", [
|
|
4836
4840
|
z6.object({ type: z6.literal("dcr") }).strict(),
|
|
4837
4841
|
z6.object({ type: z6.literal("header") }).strict()
|
|
4838
|
-
]).openapi("McpServerAuthPublic");
|
|
4842
|
+
]).describe("Auth mechanism when configured (no secrets). Omit when the server needs no credentials.").openapi("McpServerAuthPublic");
|
|
4839
4843
|
var McpServerReadEntrySchema = z6.object({
|
|
4840
4844
|
name: NameSchema,
|
|
4841
4845
|
url: z6.url().describe("URL of the remote MCP server."),
|
|
4842
|
-
auth: McpServerAuthPublicSchema.optional()
|
|
4843
|
-
|
|
4844
|
-
),
|
|
4845
|
-
auth_status: McpAuthStatusSchema.describe("Auth state for the calling user.")
|
|
4846
|
+
auth: McpServerAuthPublicSchema.optional(),
|
|
4847
|
+
auth_status: McpAuthStatusSchema
|
|
4846
4848
|
}).strict().openapi("McpServerReadEntry");
|
|
4847
4849
|
var ListAvailableMcpServersResponseSchema = z6.object({ data: z6.array(McpServerReadEntrySchema) }).openapi("ListAvailableMcpServersResponse");
|
|
4848
4850
|
function resolveConfiguredMcpRequestHeaders(manifest) {
|
|
@@ -6374,11 +6376,12 @@ import { createRoute as createRoute5 } from "@hono/zod-openapi";
|
|
|
6374
6376
|
// src/schemas/mcpCatalog.ts
|
|
6375
6377
|
import { z as z15 } from "@hono/zod-openapi";
|
|
6376
6378
|
var CatalogMcpServerSchema = z15.object({
|
|
6377
|
-
type: McpServerTypeSchema
|
|
6379
|
+
type: McpServerTypeSchema,
|
|
6378
6380
|
name: NameSchema,
|
|
6379
6381
|
logo: z15.url().optional().describe("URL of the MCP server logo asset."),
|
|
6380
6382
|
url: z15.url().describe("URL of the remote MCP server."),
|
|
6381
|
-
|
|
6383
|
+
description: McpServerDescriptionSchema,
|
|
6384
|
+
auth: McpServerManifestAuthSchema.optional()
|
|
6382
6385
|
}).strict().openapi("CatalogMcpServer");
|
|
6383
6386
|
var McpCatalogFileSchema = z15.object({
|
|
6384
6387
|
mcp_servers: z15.array(CatalogMcpServerSchema)
|
|
@@ -6401,11 +6404,11 @@ var ModelPropertiesSchema = z16.object({
|
|
|
6401
6404
|
context_length: z16.number().int().positive().optional().describe("Maximum context window size in tokens."),
|
|
6402
6405
|
max_output_tokens: z16.number().int().positive().optional().describe("Maximum output tokens the model can generate."),
|
|
6403
6406
|
reasoning_efforts: z16.array(ReasoningEffortSchema).min(1).optional().describe("Supported reasoning-effort values for this model.")
|
|
6404
|
-
}).strict().openapi("ModelProperties");
|
|
6407
|
+
}).strict().describe("Optional model capability metadata.").openapi("ModelProperties");
|
|
6405
6408
|
var ModelEntrySchema = z16.object({
|
|
6406
6409
|
model_id: z16.string().min(1).describe("Upstream, provider-specific identifier sent to the provider API."),
|
|
6407
|
-
name: NameSchema
|
|
6408
|
-
properties: ModelPropertiesSchema
|
|
6410
|
+
name: NameSchema,
|
|
6411
|
+
properties: ModelPropertiesSchema
|
|
6409
6412
|
}).strict().openapi("ModelEntry");
|
|
6410
6413
|
function refineUniqueModels(models, ctx) {
|
|
6411
6414
|
uniqueNames(models, ctx);
|
|
@@ -6425,9 +6428,9 @@ var ModelProviderAuthSchema = z16.object({
|
|
|
6425
6428
|
api_key: z16.string().min(1).describe(
|
|
6426
6429
|
"Provider API key. Responses are redacted; on PUT, a real value sets/rotates and a redacted value keeps the stored key."
|
|
6427
6430
|
)
|
|
6428
|
-
}).strict().openapi("ModelProviderAuth");
|
|
6431
|
+
}).strict().describe("Provider authentication credentials.").openapi("ModelProviderAuth");
|
|
6429
6432
|
var ModelProviderManifestBaseSchema = z16.object({
|
|
6430
|
-
auth: ModelProviderAuthSchema
|
|
6433
|
+
auth: ModelProviderAuthSchema,
|
|
6431
6434
|
models: z16.array(ModelEntrySchema).min(1).describe("Models exposed by this provider (at least one).")
|
|
6432
6435
|
}).strict();
|
|
6433
6436
|
function wellKnownProviderSchema({
|
|
@@ -6491,24 +6494,34 @@ var ModelProviderBodySchema = z16.discriminatedUnion("type", [
|
|
|
6491
6494
|
AlibabaModelProviderSchema,
|
|
6492
6495
|
CustomModelProviderSchema
|
|
6493
6496
|
]).superRefine(refineModelProviderManifest);
|
|
6494
|
-
var
|
|
6497
|
+
var ModelProviderManifestSchema = ModelProviderBodySchema.openapi("ModelProviderManifest");
|
|
6495
6498
|
function modelProviderName(provider) {
|
|
6496
6499
|
return provider.type === "custom" ? provider.name : provider.type;
|
|
6497
6500
|
}
|
|
6501
|
+
var ModelProviderSchema = z16.object({
|
|
6502
|
+
name: NameSchema,
|
|
6503
|
+
manifest: ModelProviderManifestSchema
|
|
6504
|
+
}).strict().openapi("ModelProvider");
|
|
6505
|
+
var CreateModelProviderRequestSchema = z16.object({
|
|
6506
|
+
manifest: ModelProviderManifestSchema
|
|
6507
|
+
}).strict().openapi("CreateModelProviderRequest");
|
|
6508
|
+
var PutModelProviderRequestSchema = z16.object({
|
|
6509
|
+
manifest: ModelProviderManifestSchema
|
|
6510
|
+
}).strict().openapi("PutModelProviderRequest");
|
|
6511
|
+
var GetModelProviderResponseSchema = z16.object({
|
|
6512
|
+
data: ModelProviderSchema
|
|
6513
|
+
}).openapi("GetModelProviderResponse");
|
|
6498
6514
|
var ListModelProvidersResponseSchema = z16.object({
|
|
6499
6515
|
data: z16.array(ModelProviderSchema)
|
|
6500
6516
|
}).openapi("ListModelProvidersResponse");
|
|
6501
|
-
var PutModelProviderResponseSchema = z16.object({
|
|
6502
|
-
data: ModelProviderSchema
|
|
6503
|
-
}).openapi("PutModelProviderResponse");
|
|
6504
6517
|
var ModelListProviderSchema = z16.object({
|
|
6505
6518
|
name: z16.string().min(1).describe("Configured provider resource name; matches the FQN prefix of `name`.")
|
|
6506
|
-
}).strict().openapi("ModelListProvider");
|
|
6519
|
+
}).strict().describe("Owning configured provider.").openapi("ModelListProvider");
|
|
6507
6520
|
var ModelSchema = z16.object({
|
|
6508
6521
|
name: z16.string().describe('Fully qualified name `provider_name/model_name`, e.g. "openai/gpt-5-6-sol". Unique within a tenant.'),
|
|
6509
6522
|
model_id: z16.string().describe("Upstream, provider-specific identifier sent to the provider API."),
|
|
6510
|
-
provider: ModelListProviderSchema
|
|
6511
|
-
properties: ModelPropertiesSchema
|
|
6523
|
+
provider: ModelListProviderSchema,
|
|
6524
|
+
properties: ModelPropertiesSchema
|
|
6512
6525
|
}).strict().openapi("Model");
|
|
6513
6526
|
var ListModelsResponseSchema = z16.object({
|
|
6514
6527
|
data: z16.array(ModelSchema)
|
|
@@ -6574,9 +6587,18 @@ var SkillManifestObjectSchema = z19.object({
|
|
|
6574
6587
|
description: SkillDescriptionSchema
|
|
6575
6588
|
}).strict();
|
|
6576
6589
|
var SkillManifestSchema = SkillManifestObjectSchema.openapi("SkillManifest");
|
|
6577
|
-
var ConfiguredSkillSchema =
|
|
6578
|
-
|
|
6579
|
-
|
|
6590
|
+
var ConfiguredSkillSchema = z19.object({
|
|
6591
|
+
name: NameSchema,
|
|
6592
|
+
manifest: SkillManifestSchema
|
|
6593
|
+
}).strict().openapi("ConfiguredSkill");
|
|
6594
|
+
var CreateSkillRequestSchema = z19.object({
|
|
6595
|
+
manifest: SkillManifestSchema
|
|
6596
|
+
}).strict().openapi("CreateSkillRequest");
|
|
6597
|
+
var PutSkillRequestSchema = z19.object({
|
|
6598
|
+
manifest: SkillManifestSchema
|
|
6599
|
+
}).strict().openapi("PutSkillRequest");
|
|
6600
|
+
var GetSkillResponseSchema = z19.object({ data: ConfiguredSkillSchema }).openapi("GetSkillResponse");
|
|
6601
|
+
var ListSkillsResponseSchema = z19.object({ data: z19.array(ConfiguredSkillSchema) }).openapi("ListSkillsResponse");
|
|
6580
6602
|
var SkillReadEntrySchema = z19.object({
|
|
6581
6603
|
name: NameSchema,
|
|
6582
6604
|
description: SkillDescriptionSchema
|
|
@@ -6896,8 +6918,8 @@ var createMcpServerRoute = createRoute7({
|
|
|
6896
6918
|
}
|
|
6897
6919
|
},
|
|
6898
6920
|
responses: {
|
|
6899
|
-
|
|
6900
|
-
content: { "application/json": { schema:
|
|
6921
|
+
201: {
|
|
6922
|
+
content: { "application/json": { schema: GetMcpServerResponseSchema } },
|
|
6901
6923
|
description: "The created MCP server with auth_status"
|
|
6902
6924
|
},
|
|
6903
6925
|
400: {
|
|
@@ -6930,7 +6952,7 @@ var putMcpServerRoute = createRoute7({
|
|
|
6930
6952
|
},
|
|
6931
6953
|
responses: {
|
|
6932
6954
|
200: {
|
|
6933
|
-
content: { "application/json": { schema:
|
|
6955
|
+
content: { "application/json": { schema: GetMcpServerResponseSchema } },
|
|
6934
6956
|
description: "The saved MCP server with auth_status"
|
|
6935
6957
|
},
|
|
6936
6958
|
400: {
|
|
@@ -7036,7 +7058,7 @@ var deleteAuthorizeMcpServerRoute = createRoute7({
|
|
|
7036
7058
|
},
|
|
7037
7059
|
responses: {
|
|
7038
7060
|
200: {
|
|
7039
|
-
content: { "application/json": { schema:
|
|
7061
|
+
content: { "application/json": { schema: GetMcpServerResponseSchema } },
|
|
7040
7062
|
description: "The MCP server after disconnect (auth_required for dcr)."
|
|
7041
7063
|
},
|
|
7042
7064
|
404: {
|
|
@@ -7125,7 +7147,8 @@ function toConfiguredMcpServer({
|
|
|
7125
7147
|
token
|
|
7126
7148
|
}) {
|
|
7127
7149
|
return {
|
|
7128
|
-
|
|
7150
|
+
name: record.name,
|
|
7151
|
+
manifest: redactMcpServerManifest(record.manifest),
|
|
7129
7152
|
auth_status: resolveMcpAuthStatus({
|
|
7130
7153
|
manifest: record.manifest,
|
|
7131
7154
|
...token !== void 0 ? { token } : {}
|
|
@@ -7172,7 +7195,8 @@ function createSettingsMcpServersRouter(deps) {
|
|
|
7172
7195
|
return c.json({ data: toConfiguredMcpServer({ record, token }) }, 200);
|
|
7173
7196
|
};
|
|
7174
7197
|
const createHandler = async (c) => {
|
|
7175
|
-
const
|
|
7198
|
+
const body = c.req.valid("json");
|
|
7199
|
+
const incomingManifest = body.manifest;
|
|
7176
7200
|
let dcrClientToSave;
|
|
7177
7201
|
if (incomingManifest.auth?.type === "dcr") {
|
|
7178
7202
|
try {
|
|
@@ -7218,7 +7242,7 @@ function createSettingsMcpServersRouter(deps) {
|
|
|
7218
7242
|
}
|
|
7219
7243
|
return saved;
|
|
7220
7244
|
});
|
|
7221
|
-
return c.json({ data: toConfiguredMcpServer({ record, token: void 0 }) },
|
|
7245
|
+
return c.json({ data: toConfiguredMcpServer({ record, token: void 0 }) }, 201);
|
|
7222
7246
|
} catch (error) {
|
|
7223
7247
|
if (error instanceof McpServerNameConflictError) {
|
|
7224
7248
|
return c.json({ error: { message: error.message } }, 409);
|
|
@@ -7228,7 +7252,8 @@ function createSettingsMcpServersRouter(deps) {
|
|
|
7228
7252
|
};
|
|
7229
7253
|
const putHandler = async (c) => {
|
|
7230
7254
|
const userRef = deps.resolveUserContext(c).userRef;
|
|
7231
|
-
const
|
|
7255
|
+
const body = c.req.valid("json");
|
|
7256
|
+
const incomingManifest = body.manifest;
|
|
7232
7257
|
try {
|
|
7233
7258
|
const record = await deps.withTransaction(async (transaction) => {
|
|
7234
7259
|
const existing = await deps.mcpServerStore.getServerForUpdate(
|
|
@@ -7458,7 +7483,7 @@ var listModelProvidersRoute = createRoute9({
|
|
|
7458
7483
|
path: "/",
|
|
7459
7484
|
tags: [MODEL_PROVIDERS_TAG],
|
|
7460
7485
|
summary: "List configured model providers",
|
|
7461
|
-
description: "All configured providers with
|
|
7486
|
+
description: "All configured providers with nested manifests.",
|
|
7462
7487
|
"x-fern-sdk-group-name": ["settings", "modelProviders"],
|
|
7463
7488
|
"x-fern-sdk-method-name": "list",
|
|
7464
7489
|
responses: {
|
|
@@ -7486,13 +7511,13 @@ var createModelProviderRoute = createRoute9({
|
|
|
7486
7511
|
"x-fern-sdk-method-name": "create",
|
|
7487
7512
|
request: {
|
|
7488
7513
|
body: {
|
|
7489
|
-
content: { "application/json": { schema:
|
|
7514
|
+
content: { "application/json": { schema: CreateModelProviderRequestSchema } },
|
|
7490
7515
|
required: true
|
|
7491
7516
|
}
|
|
7492
7517
|
},
|
|
7493
7518
|
responses: {
|
|
7494
|
-
|
|
7495
|
-
content: { "application/json": { schema:
|
|
7519
|
+
201: {
|
|
7520
|
+
content: { "application/json": { schema: GetModelProviderResponseSchema } },
|
|
7496
7521
|
description: "The created provider"
|
|
7497
7522
|
},
|
|
7498
7523
|
400: {
|
|
@@ -7515,13 +7540,13 @@ var putModelProviderRoute = createRoute9({
|
|
|
7515
7540
|
"x-fern-sdk-method-name": "upsert",
|
|
7516
7541
|
request: {
|
|
7517
7542
|
body: {
|
|
7518
|
-
content: { "application/json": { schema:
|
|
7543
|
+
content: { "application/json": { schema: PutModelProviderRequestSchema } },
|
|
7519
7544
|
required: true
|
|
7520
7545
|
}
|
|
7521
7546
|
},
|
|
7522
7547
|
responses: {
|
|
7523
7548
|
200: {
|
|
7524
|
-
content: { "application/json": { schema:
|
|
7549
|
+
content: { "application/json": { schema: GetModelProviderResponseSchema } },
|
|
7525
7550
|
description: "The saved provider"
|
|
7526
7551
|
},
|
|
7527
7552
|
400: {
|
|
@@ -7558,18 +7583,25 @@ function resolveModelProviderManifestForWrite({
|
|
|
7558
7583
|
}
|
|
7559
7584
|
};
|
|
7560
7585
|
}
|
|
7586
|
+
function toWireProvider(record) {
|
|
7587
|
+
return {
|
|
7588
|
+
name: record.name,
|
|
7589
|
+
manifest: redactModelProvider(record.manifest)
|
|
7590
|
+
};
|
|
7591
|
+
}
|
|
7561
7592
|
function createModelProvidersRouter(deps) {
|
|
7562
7593
|
const listHandler = async (c) => {
|
|
7563
7594
|
const records = await deps.modelProviderStore.listProviders(TENANT_ID);
|
|
7564
|
-
return c.json({ data: records.map(
|
|
7595
|
+
return c.json({ data: records.map(toWireProvider) }, 200);
|
|
7565
7596
|
};
|
|
7566
7597
|
const createHandler = async (c) => {
|
|
7567
|
-
const
|
|
7598
|
+
const body = c.req.valid("json");
|
|
7599
|
+
const provider = body.manifest;
|
|
7568
7600
|
const name = modelProviderName(provider);
|
|
7569
7601
|
try {
|
|
7570
7602
|
const manifest = resolveModelProviderManifestForWrite({ incoming: provider, existing: void 0 });
|
|
7571
7603
|
const record = await deps.modelProviderStore.createProvider({ tenant_id: TENANT_ID, name, manifest });
|
|
7572
|
-
return c.json({ data:
|
|
7604
|
+
return c.json({ data: toWireProvider(record) }, 201);
|
|
7573
7605
|
} catch (error) {
|
|
7574
7606
|
if (error instanceof MissingStoredSecretError) {
|
|
7575
7607
|
return c.json({ error: { message: "API key is required" } }, 400);
|
|
@@ -7581,7 +7613,8 @@ function createModelProvidersRouter(deps) {
|
|
|
7581
7613
|
}
|
|
7582
7614
|
};
|
|
7583
7615
|
const putHandler = async (c) => {
|
|
7584
|
-
const
|
|
7616
|
+
const body = c.req.valid("json");
|
|
7617
|
+
const provider = body.manifest;
|
|
7585
7618
|
const name = modelProviderName(provider);
|
|
7586
7619
|
try {
|
|
7587
7620
|
const record = await deps.withTransaction(async (transaction) => {
|
|
@@ -7595,7 +7628,7 @@ function createModelProvidersRouter(deps) {
|
|
|
7595
7628
|
});
|
|
7596
7629
|
return deps.modelProviderStore.upsertProvider({ tenant_id: TENANT_ID, name, manifest }, transaction);
|
|
7597
7630
|
});
|
|
7598
|
-
return c.json({ data:
|
|
7631
|
+
return c.json({ data: toWireProvider(record) }, 200);
|
|
7599
7632
|
} catch (error) {
|
|
7600
7633
|
if (error instanceof MissingStoredSecretError) {
|
|
7601
7634
|
return c.json({ error: { message: "API key is required" } }, 400);
|
|
@@ -7652,7 +7685,7 @@ var putSandboxProviderRoute = createRoute10({
|
|
|
7652
7685
|
},
|
|
7653
7686
|
responses: {
|
|
7654
7687
|
200: {
|
|
7655
|
-
content: { "application/json": { schema:
|
|
7688
|
+
content: { "application/json": { schema: GetSandboxProviderResponseSchema } },
|
|
7656
7689
|
description: "The saved sandbox provider."
|
|
7657
7690
|
},
|
|
7658
7691
|
400: {
|
|
@@ -7697,7 +7730,8 @@ function createSandboxProvidersRouter(deps) {
|
|
|
7697
7730
|
);
|
|
7698
7731
|
};
|
|
7699
7732
|
const putHandler = async (c) => {
|
|
7700
|
-
const
|
|
7733
|
+
const body = c.req.valid("json");
|
|
7734
|
+
const incoming = body.manifest;
|
|
7701
7735
|
const resolveManifest = (existing) => ({
|
|
7702
7736
|
...incoming,
|
|
7703
7737
|
auth: {
|
|
@@ -7711,7 +7745,12 @@ function createSandboxProvidersRouter(deps) {
|
|
|
7711
7745
|
const { manifest, status } = await deps.withTransaction(async (transaction) => {
|
|
7712
7746
|
const locked = await deps.sandboxProviderStore.getSandboxProviderForUpdate(TENANT_ID, transaction);
|
|
7713
7747
|
const resolved = resolveManifest(locked);
|
|
7714
|
-
const provider = toDaytonaSandboxProvider({
|
|
7748
|
+
const provider = toDaytonaSandboxProvider({
|
|
7749
|
+
manifest: resolved,
|
|
7750
|
+
tenant_id: TENANT_ID,
|
|
7751
|
+
logger: deps.logger,
|
|
7752
|
+
...locked ? { build_metadata: locked.build_metadata } : {}
|
|
7753
|
+
});
|
|
7715
7754
|
const built = toSandboxStatus(
|
|
7716
7755
|
await withTimeout(provider.buildImage(), BUILD_REQUEST_TIMEOUT_MS, "sandbox buildImage")
|
|
7717
7756
|
);
|
|
@@ -7778,12 +7817,12 @@ var listConfiguredSkillsRoute = createRoute11({
|
|
|
7778
7817
|
path: "/",
|
|
7779
7818
|
tags: [SKILLS_TAG],
|
|
7780
7819
|
summary: "List configured skills",
|
|
7781
|
-
description: "All configured skills with
|
|
7820
|
+
description: "All configured skills with nested manifests (settings / admin projection).",
|
|
7782
7821
|
"x-fern-sdk-group-name": ["settings", "skills"],
|
|
7783
7822
|
"x-fern-sdk-method-name": "list",
|
|
7784
7823
|
responses: {
|
|
7785
7824
|
200: {
|
|
7786
|
-
content: { "application/json": { schema:
|
|
7825
|
+
content: { "application/json": { schema: ListSkillsResponseSchema } },
|
|
7787
7826
|
description: "All configured skills."
|
|
7788
7827
|
},
|
|
7789
7828
|
401: {
|
|
@@ -7806,13 +7845,13 @@ var createSkillRoute = createRoute11({
|
|
|
7806
7845
|
"x-fern-sdk-method-name": "create",
|
|
7807
7846
|
request: {
|
|
7808
7847
|
body: {
|
|
7809
|
-
content: { "application/json": { schema:
|
|
7848
|
+
content: { "application/json": { schema: CreateSkillRequestSchema } },
|
|
7810
7849
|
required: true
|
|
7811
7850
|
}
|
|
7812
7851
|
},
|
|
7813
7852
|
responses: {
|
|
7814
|
-
|
|
7815
|
-
content: { "application/json": { schema:
|
|
7853
|
+
201: {
|
|
7854
|
+
content: { "application/json": { schema: GetSkillResponseSchema } },
|
|
7816
7855
|
description: "The created skill."
|
|
7817
7856
|
},
|
|
7818
7857
|
400: {
|
|
@@ -7835,13 +7874,13 @@ var putSkillRoute = createRoute11({
|
|
|
7835
7874
|
"x-fern-sdk-method-name": "upsert",
|
|
7836
7875
|
request: {
|
|
7837
7876
|
body: {
|
|
7838
|
-
content: { "application/json": { schema:
|
|
7877
|
+
content: { "application/json": { schema: PutSkillRequestSchema } },
|
|
7839
7878
|
required: true
|
|
7840
7879
|
}
|
|
7841
7880
|
},
|
|
7842
7881
|
responses: {
|
|
7843
7882
|
200: {
|
|
7844
|
-
content: { "application/json": { schema:
|
|
7883
|
+
content: { "application/json": { schema: GetSkillResponseSchema } },
|
|
7845
7884
|
description: "The saved skill."
|
|
7846
7885
|
},
|
|
7847
7886
|
400: {
|
|
@@ -7854,8 +7893,8 @@ var putSkillRoute = createRoute11({
|
|
|
7854
7893
|
// src/apis/skills.ts
|
|
7855
7894
|
function toConfiguredSkill(record) {
|
|
7856
7895
|
return {
|
|
7857
|
-
|
|
7858
|
-
|
|
7896
|
+
name: record.name,
|
|
7897
|
+
manifest: record.manifest
|
|
7859
7898
|
};
|
|
7860
7899
|
}
|
|
7861
7900
|
function createSkillsRouter(deps) {
|
|
@@ -7864,14 +7903,15 @@ function createSkillsRouter(deps) {
|
|
|
7864
7903
|
return c.json({ data: records.map(toConfiguredSkill) }, 200);
|
|
7865
7904
|
};
|
|
7866
7905
|
const createHandler = async (c) => {
|
|
7867
|
-
const
|
|
7906
|
+
const body = c.req.valid("json");
|
|
7907
|
+
const manifest = body.manifest;
|
|
7868
7908
|
try {
|
|
7869
7909
|
const record = await deps.skillStore.createSkill({
|
|
7870
7910
|
tenant_id: TENANT_ID,
|
|
7871
7911
|
name: manifest.name,
|
|
7872
7912
|
manifest
|
|
7873
7913
|
});
|
|
7874
|
-
return c.json({ data: toConfiguredSkill(record) },
|
|
7914
|
+
return c.json({ data: toConfiguredSkill(record) }, 201);
|
|
7875
7915
|
} catch (error) {
|
|
7876
7916
|
if (error instanceof SkillNameConflictError) {
|
|
7877
7917
|
return c.json({ error: { message: error.message } }, 409);
|
|
@@ -7880,7 +7920,8 @@ function createSkillsRouter(deps) {
|
|
|
7880
7920
|
}
|
|
7881
7921
|
};
|
|
7882
7922
|
const putHandler = async (c) => {
|
|
7883
|
-
const
|
|
7923
|
+
const body = c.req.valid("json");
|
|
7924
|
+
const manifest = body.manifest;
|
|
7884
7925
|
const record = await deps.skillStore.upsertSkill({
|
|
7885
7926
|
tenant_id: TENANT_ID,
|
|
7886
7927
|
name: manifest.name,
|
|
@@ -9217,7 +9258,7 @@ function loadYamlAtPath(filePath, schema) {
|
|
|
9217
9258
|
}
|
|
9218
9259
|
|
|
9219
9260
|
// src/catalog/mcpCatalog.gen.ts
|
|
9220
|
-
var shippedMcpCatalogYaml = "# Shipped MCP catalog: server presets offered by\n# GET /api/v1/catalog/mcp-servers for the UI to copy into\n# PUT /api/v1/settings/mcp-servers bodies. Discovery-only \u2014 never executed against.\nmcp_servers:\n - type: remote\n name: linear\n logo: https://assets.production.truefoundry.com/linear.svg\n url: https://mcp.linear.app/mcp\n auth:\n type: dcr\n - type: remote\n name: notion\n logo: https://assets.production.truefoundry.com/notion.svg\n url: https://mcp.notion.com/mcp\n auth:\n type: dcr\n - type: remote\n name: sentry\n logo: https://assets.production.truefoundry.com/sentry.svg\n url: https://mcp.sentry.dev/mcp\n auth:\n type: dcr\n - type: remote\n name: deepwiki\n logo: https://assets.production.truefoundry.com/deepwiki.png\n url: https://mcp.deepwiki.com/mcp\n - type: remote\n name: exa\n logo: https://assets.production.truefoundry.com/exa.svg\n url: https://mcp.exa.ai/mcp\n - type: remote\n name: parallel-web\n logo: https://assets.production.truefoundry.com/parallel-web.svg\n url: https://search.parallel.ai/mcp\n - type: remote\n name: github\n logo: https://assets.production.truefoundry.com/github.svg\n url: https://api.githubcopilot.com/mcp/\n auth:\n type: header\n headers:\n Authorization: Bearer YOUR_GITHUB_PAT\n - type: remote\n name: tavily\n logo: https://assets.production.truefoundry.com/tavily.svg\n url: https://mcp.tavily.com/mcp\n auth:\n type: header\n headers:\n Authorization: Bearer YOUR_TAVILY_API_KEY\n - type: remote\n name: bright-data\n logo: https://assets.production.truefoundry.com/bright-data.png\n url: https://mcp.brightdata.com/mcp\n auth:\n type: header\n headers:\n Authorization: Bearer YOUR_BRIGHT_DATA_API_TOKEN\n - type: remote\n name: supabase\n logo: https://assets.production.truefoundry.com/supabase.svg\n url: https://mcp.supabase.com/mcp\n auth:\n type: dcr\n - type: remote\n name: stripe\n logo: https://assets.production.truefoundry.com/stripe.svg\n url: https://mcp.stripe.com\n auth:\n type: dcr\n - type: remote\n name: confluence\n logo: https://assets.production.truefoundry.com/confluence.svg\n url: https://mcp.atlassian.com/v1/mcp\n auth:\n type: dcr\n - type: remote\n name: jira\n logo: https://assets.production.truefoundry.com/jira.png\n url: https://mcp.atlassian.com/v1/mcp\n auth:\n type: dcr\n";
|
|
9261
|
+
var shippedMcpCatalogYaml = "# Shipped MCP catalog: server presets offered by\n# GET /api/v1/catalog/mcp-servers for the UI to copy into\n# PUT /api/v1/settings/mcp-servers bodies. Discovery-only \u2014 never executed against.\nmcp_servers:\n - type: remote\n name: linear\n logo: https://assets.production.truefoundry.com/linear.svg\n url: https://mcp.linear.app/mcp\n description: Search, read, and create Linear issues.\n auth:\n type: dcr\n - type: remote\n name: notion\n logo: https://assets.production.truefoundry.com/notion.svg\n url: https://mcp.notion.com/mcp\n description: Search pages, read content, query databases, create pages.\n auth:\n type: dcr\n - type: remote\n name: sentry\n logo: https://assets.production.truefoundry.com/sentry.svg\n url: https://mcp.sentry.dev/mcp\n description: Search errors, read stack traces, and check releases.\n auth:\n type: dcr\n - type: remote\n name: deepwiki\n logo: https://assets.production.truefoundry.com/deepwiki.png\n url: https://mcp.deepwiki.com/mcp\n description: Read documentation and ask questions about any public GitHub repository.\n - type: remote\n name: exa\n logo: https://assets.production.truefoundry.com/exa.svg\n url: https://mcp.exa.ai/mcp\n description: Search the web, fetch page contents, and find similar pages.\n - type: remote\n name: parallel-web\n logo: https://assets.production.truefoundry.com/parallel-web.svg\n url: https://search.parallel.ai/mcp\n description: Search the web and get ranked results with extracted content.\n - type: remote\n name: github\n logo: https://assets.production.truefoundry.com/github.svg\n url: https://api.githubcopilot.com/mcp/\n description: Work with issues, pull requests, repository files, and CI status.\n auth:\n type: header\n headers:\n Authorization: Bearer YOUR_GITHUB_PAT\n - type: remote\n name: tavily\n logo: https://assets.production.truefoundry.com/tavily.svg\n url: https://mcp.tavily.com/mcp\n description: Search the web, extract page content, and crawl sites.\n auth:\n type: header\n headers:\n Authorization: Bearer YOUR_TAVILY_API_KEY\n - type: remote\n name: bright-data\n logo: https://assets.production.truefoundry.com/bright-data.png\n url: https://mcp.brightdata.com/mcp\n description: Search the web and scrape pages, including sites behind bot protection.\n auth:\n type: header\n headers:\n Authorization: Bearer YOUR_BRIGHT_DATA_API_TOKEN\n - type: remote\n name: supabase\n logo: https://assets.production.truefoundry.com/supabase.svg\n url: https://mcp.supabase.com/mcp\n description: Run SQL queries, manage tables, and inspect Supabase projects.\n auth:\n type: dcr\n - type: remote\n name: stripe\n logo: https://assets.production.truefoundry.com/stripe.svg\n url: https://mcp.stripe.com\n description: Create and manage customers, payments, invoices, and subscriptions.\n auth:\n type: dcr\n - type: remote\n name: confluence\n logo: https://assets.production.truefoundry.com/confluence.svg\n url: https://mcp.atlassian.com/v1/mcp\n description: Search spaces, read pages, and create or update content.\n auth:\n type: dcr\n - type: remote\n name: jira\n logo: https://assets.production.truefoundry.com/jira.png\n url: https://mcp.atlassian.com/v1/mcp\n description: Search, read, create, and update Jira issues.\n auth:\n type: dcr\n - type: remote\n name: posthog\n logo: https://assets.production.truefoundry.com/posthog.svg\n url: https://mcp.posthog.com/mcp\n description: Query product analytics, run SQL, and manage feature flags.\n auth:\n type: dcr\n";
|
|
9221
9262
|
|
|
9222
9263
|
// src/catalog/McpCatalog.ts
|
|
9223
9264
|
var McpCatalog = class _McpCatalog {
|