@truefoundry/trueforge 0.1.0-rc.0 → 0.1.0-rc.1
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-CLBEWGQJ-BjMXOS3R.js → ConnectorSettings-ADACLWQI-BW-k4488.js} +1 -1
- package/dist/_frontend/assets/ConnectorSettings-ADACLWQI-BW-k4488.js.br +0 -0
- package/dist/_frontend/assets/ConnectorSettings-ADACLWQI-BW-k4488.js.gz +0 -0
- package/dist/_frontend/assets/{DockLayout-WRF7EQLD-BRAhcSNV.js → DockLayout-BH5XX2AQ-BIML9R6y.js} +1 -1
- package/dist/_frontend/assets/{DrawerLayout-X2UXYTOS-D60ziyi9.js → DrawerLayout-O2XZQCG4-BSHMxRL1.js} +2 -2
- package/dist/_frontend/assets/DrawerLayout-O2XZQCG4-BSHMxRL1.js.br +0 -0
- package/dist/_frontend/assets/DrawerLayout-O2XZQCG4-BSHMxRL1.js.gz +0 -0
- package/dist/_frontend/assets/ModelSettings-LKFJVUYQ-BmjB0mhb.js +1 -0
- package/dist/_frontend/assets/ModelSettings-LKFJVUYQ-BmjB0mhb.js.br +0 -0
- package/dist/_frontend/assets/ModelSettings-LKFJVUYQ-BmjB0mhb.js.gz +0 -0
- package/dist/_frontend/assets/{SandboxSettings-S5XGZWOL-BUQpWdqg.js → SandboxSettings-H5MDAE47-BMAnpZ4v.js} +1 -1
- package/dist/_frontend/assets/SandboxSettings-H5MDAE47-BMAnpZ4v.js.br +0 -0
- package/dist/_frontend/assets/SandboxSettings-H5MDAE47-BMAnpZ4v.js.gz +0 -0
- package/dist/_frontend/assets/SettingsBuilder-3JOLC56Z-kfSJGmj0.js +2 -0
- package/dist/_frontend/assets/SettingsBuilder-3JOLC56Z-kfSJGmj0.js.br +0 -0
- package/dist/_frontend/assets/SettingsBuilder-3JOLC56Z-kfSJGmj0.js.gz +0 -0
- package/dist/_frontend/assets/{SidebarLayout-M7HEOZVK-owseAySg.js → SidebarLayout-G6BGD7EY-DprxwhnC.js} +2 -2
- package/dist/_frontend/assets/SidebarLayout-G6BGD7EY-DprxwhnC.js.br +0 -0
- package/dist/_frontend/assets/SidebarLayout-G6BGD7EY-DprxwhnC.js.gz +0 -0
- package/dist/_frontend/assets/{SkillSettings-MXK4ZEI7-CrK7D1D-.js → SkillSettings-4VB42CVG-DjkYTFI_.js} +1 -1
- package/dist/_frontend/assets/SkillSettings-4VB42CVG-DjkYTFI_.js.br +0 -0
- package/dist/_frontend/assets/SkillSettings-4VB42CVG-DjkYTFI_.js.gz +0 -0
- package/dist/_frontend/assets/{WidgetLayout-7MDOKLHU-OdQcbsJk.js → WidgetLayout-ABSXZUSQ-s-y-do9f.js} +1 -1
- package/dist/_frontend/assets/WidgetLayout-ABSXZUSQ-s-y-do9f.js.br +0 -0
- package/dist/_frontend/assets/WidgetLayout-ABSXZUSQ-s-y-do9f.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-NBMP2XNL-DdVXEaJy.js → chunk-EFGSH3MO-BG2dZVGV.js} +2 -2
- package/dist/_frontend/assets/chunk-EFGSH3MO-BG2dZVGV.js.br +0 -0
- package/dist/_frontend/assets/chunk-EFGSH3MO-BG2dZVGV.js.gz +0 -0
- package/dist/_frontend/assets/{chunk-WFC3W4C3-DXFwnpmH.js → chunk-VJTCFZNM-DvnS6Ftw.js} +1 -1
- package/dist/_frontend/assets/chunk-VJTCFZNM-DvnS6Ftw.js.br +0 -0
- package/dist/_frontend/assets/chunk-VJTCFZNM-DvnS6Ftw.js.gz +0 -0
- package/dist/_frontend/assets/{cssMode-BIIwADkQ.js → cssMode-CG6nczKl.js} +1 -1
- package/dist/_frontend/assets/cssMode-CG6nczKl.js.br +0 -0
- package/dist/_frontend/assets/cssMode-CG6nczKl.js.gz +0 -0
- package/dist/_frontend/assets/{freemarker2-DWtRl63b.js → freemarker2-3d9R0xhA.js} +1 -1
- package/dist/_frontend/assets/freemarker2-3d9R0xhA.js.br +0 -0
- package/dist/_frontend/assets/freemarker2-3d9R0xhA.js.gz +0 -0
- package/dist/_frontend/assets/{handlebars-CJJYL_TE.js → handlebars-DsKUyrQw.js} +1 -1
- package/dist/_frontend/assets/handlebars-DsKUyrQw.js.br +0 -0
- package/dist/_frontend/assets/handlebars-DsKUyrQw.js.gz +0 -0
- package/dist/_frontend/assets/{html-CIyPQjdd.js → html-DTy6u4nq.js} +1 -1
- package/dist/_frontend/assets/html-DTy6u4nq.js.br +0 -0
- package/dist/_frontend/assets/html-DTy6u4nq.js.gz +0 -0
- package/dist/_frontend/assets/{htmlMode-CDsupPvj.js → htmlMode-DMWLTFGm.js} +1 -1
- package/dist/_frontend/assets/htmlMode-DMWLTFGm.js.br +0 -0
- package/dist/_frontend/assets/htmlMode-DMWLTFGm.js.gz +0 -0
- package/dist/_frontend/assets/{index-CKMEtdQA.js → index-D3W0WUUX.js} +3 -3
- package/dist/_frontend/assets/index-D3W0WUUX.js.br +0 -0
- package/dist/_frontend/assets/index-D3W0WUUX.js.gz +0 -0
- package/dist/_frontend/assets/{index-B8NomNE2.js → index-V5vAkbkm.js} +232 -232
- package/dist/_frontend/assets/index-V5vAkbkm.js.br +0 -0
- package/dist/_frontend/assets/index-V5vAkbkm.js.gz +0 -0
- package/dist/_frontend/assets/{javascript-CPSnXnaS.js → javascript-D9YF35d_.js} +1 -1
- package/dist/_frontend/assets/{jsonMode-DRy4DQT3.js → jsonMode-BmO9RwLP.js} +1 -1
- package/dist/_frontend/assets/jsonMode-BmO9RwLP.js.br +0 -0
- package/dist/_frontend/assets/jsonMode-BmO9RwLP.js.gz +0 -0
- package/dist/_frontend/assets/{liquid-a-xIf2lN.js → liquid-0rk1qWO4.js} +1 -1
- package/dist/_frontend/assets/liquid-0rk1qWO4.js.br +0 -0
- package/dist/_frontend/assets/liquid-0rk1qWO4.js.gz +0 -0
- package/dist/_frontend/assets/{lspLanguageFeatures-Tavpp1a0.js → lspLanguageFeatures-DTTkboOI.js} +1 -1
- package/dist/_frontend/assets/lspLanguageFeatures-DTTkboOI.js.br +0 -0
- package/dist/_frontend/assets/lspLanguageFeatures-DTTkboOI.js.gz +0 -0
- package/dist/_frontend/assets/{mdx-D3wOHh0p.js → mdx-DJcT8q-f.js} +1 -1
- package/dist/_frontend/assets/mdx-DJcT8q-f.js.br +0 -0
- package/dist/_frontend/assets/mdx-DJcT8q-f.js.gz +0 -0
- package/dist/_frontend/assets/{python-8zlVof3q.js → python-CLDE_vWh.js} +1 -1
- package/dist/_frontend/assets/python-CLDE_vWh.js.br +0 -0
- package/dist/_frontend/assets/python-CLDE_vWh.js.gz +0 -0
- package/dist/_frontend/assets/{razor-q_HfjjpC.js → razor-DtGC7wgt.js} +1 -1
- package/dist/_frontend/assets/razor-DtGC7wgt.js.br +0 -0
- package/dist/_frontend/assets/razor-DtGC7wgt.js.gz +0 -0
- package/dist/_frontend/assets/{tsMode-DOOZolwq.js → tsMode-DWdihmDi.js} +1 -1
- package/dist/_frontend/assets/tsMode-DWdihmDi.js.br +0 -0
- package/dist/_frontend/assets/tsMode-DWdihmDi.js.gz +0 -0
- package/dist/_frontend/assets/{typescript-CmhvHmNu.js → typescript-D1_IEBnH.js} +1 -1
- package/dist/_frontend/assets/typescript-D1_IEBnH.js.br +0 -0
- package/dist/_frontend/assets/typescript-D1_IEBnH.js.gz +0 -0
- package/dist/_frontend/assets/{workers-CfU2h0GU.js → workers-CiyDz6N8.js} +1 -1
- package/dist/_frontend/assets/workers-CiyDz6N8.js.br +0 -0
- package/dist/_frontend/assets/workers-CiyDz6N8.js.gz +0 -0
- package/dist/_frontend/assets/{xml-D3jhgOra.js → xml-WgPcpohY.js} +1 -1
- package/dist/_frontend/assets/xml-WgPcpohY.js.br +0 -0
- package/dist/_frontend/assets/xml-WgPcpohY.js.gz +0 -0
- package/dist/_frontend/assets/{yaml-B-q42846.js → yaml-DGY1pOYu.js} +1 -1
- package/dist/_frontend/assets/yaml-DGY1pOYu.js.br +0 -0
- package/dist/_frontend/assets/yaml-DGY1pOYu.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 +1 -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.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
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/db/postgres/migrations/20260815_000002_mcp_server_description.ts
|
|
2
|
+
import { sql } from "kysely";
|
|
3
|
+
async function up(db) {
|
|
4
|
+
await sql`SET LOCAL lock_timeout = '5s'`.execute(db);
|
|
5
|
+
await sql`
|
|
6
|
+
UPDATE mcp_server
|
|
7
|
+
SET manifest = manifest || jsonb_build_object('description', name || ' MCP Server')
|
|
8
|
+
WHERE btrim(coalesce(manifest->>'description', '')) = ''
|
|
9
|
+
`.execute(db);
|
|
10
|
+
}
|
|
11
|
+
async function down(db) {
|
|
12
|
+
await sql`SET LOCAL lock_timeout = '5s'`.execute(db);
|
|
13
|
+
await sql`
|
|
14
|
+
UPDATE mcp_server
|
|
15
|
+
SET manifest = manifest - 'description'
|
|
16
|
+
WHERE manifest->>'description' = name || ' MCP Server'
|
|
17
|
+
`.execute(db);
|
|
18
|
+
}
|
|
19
|
+
export {
|
|
20
|
+
down,
|
|
21
|
+
up
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=20260815_000002_mcp_server_description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/db/postgres/migrations/20260815_000002_mcp_server_description.ts"],"sourcesContent":["import { sql, type Kysely } from 'kysely';\n\n/**\n * Required `description` on `mcp_server.manifest`. Backfill `{name} MCP Server`\n * when the key is missing or blank so existing rows satisfy McpServerManifestSchema.\n */\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await sql`SET LOCAL lock_timeout = '5s'`.execute(db);\n await sql`\n UPDATE mcp_server\n SET manifest = manifest || jsonb_build_object('description', name || ' MCP Server')\n WHERE btrim(coalesce(manifest->>'description', '')) = ''\n `.execute(db);\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await sql`SET LOCAL lock_timeout = '5s'`.execute(db);\n await sql`\n UPDATE mcp_server\n SET manifest = manifest - 'description'\n WHERE manifest->>'description' = name || ' MCP Server'\n `.execute(db);\n}\n"],"mappings":";AAAA,SAAS,WAAwB;AAMjC,eAAsB,GAAG,IAAoC;AAC3D,QAAM,mCAAmC,QAAQ,EAAE;AACnD,QAAM;AAAA;AAAA;AAAA;AAAA,IAIJ,QAAQ,EAAE;AACd;AAEA,eAAsB,KAAK,IAAoC;AAC7D,QAAM,mCAAmC,QAAQ,EAAE;AACnD,QAAM;AAAA;AAAA;AAAA;AAAA,IAIJ,QAAQ,EAAE;AACd;","names":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// src/db/sqlite/migrations/20260815_000002_mcp_server_description.ts
|
|
2
|
+
import { sql } from "kysely";
|
|
3
|
+
async function up(db) {
|
|
4
|
+
await sql`
|
|
5
|
+
UPDATE mcp_server
|
|
6
|
+
SET manifest = jsonb_set(manifest, '$.description', jsonb(json_quote(name || ' MCP Server')))
|
|
7
|
+
WHERE trim(coalesce(json_extract(manifest, '$.description'), '')) = ''
|
|
8
|
+
`.execute(db);
|
|
9
|
+
}
|
|
10
|
+
async function down(db) {
|
|
11
|
+
await sql`
|
|
12
|
+
UPDATE mcp_server
|
|
13
|
+
SET manifest = jsonb_remove(manifest, '$.description')
|
|
14
|
+
WHERE json_extract(manifest, '$.description') = name || ' MCP Server'
|
|
15
|
+
`.execute(db);
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
down,
|
|
19
|
+
up
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=20260815_000002_mcp_server_description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/db/sqlite/migrations/20260815_000002_mcp_server_description.ts"],"sourcesContent":["import { type Kysely, sql } from 'kysely';\n\n/**\n * Required `description` on `mcp_server.manifest`. Backfill `{name} MCP Server`\n * when the key is missing or blank so existing rows satisfy McpServerManifestSchema.\n * Mirrors db/postgres/migrations/20260815_000002_mcp_server_description.ts.\n */\nexport async function up(db: Kysely<unknown>): Promise<void> {\n await sql`\n UPDATE mcp_server\n SET manifest = jsonb_set(manifest, '$.description', jsonb(json_quote(name || ' MCP Server')))\n WHERE trim(coalesce(json_extract(manifest, '$.description'), '')) = ''\n `.execute(db);\n}\n\nexport async function down(db: Kysely<unknown>): Promise<void> {\n await sql`\n UPDATE mcp_server\n SET manifest = jsonb_remove(manifest, '$.description')\n WHERE json_extract(manifest, '$.description') = name || ' MCP Server'\n `.execute(db);\n}\n"],"mappings":";AAAA,SAAsB,WAAW;AAOjC,eAAsB,GAAG,IAAoC;AAC3D,QAAM;AAAA;AAAA;AAAA;AAAA,IAIJ,QAAQ,EAAE;AACd;AAEA,eAAsB,KAAK,IAAoC;AAC7D,QAAM;AAAA;AAAA;AAAA;AAAA,IAIJ,QAAQ,EAAE;AACd;","names":[]}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{p as be,q as fe,r as o,s as Y,j as e,t as ge,B,I as L,v as ie,w as xe,A as ye,x as ve,e as P,y as je,z as Ne}from"./index-B8NomNE2.js";var me=Ne("h-11 shadow-sm"),we=({open:n,onOpenChange:l,onSave:b,title:k,description:p,initialBaseUrl:E="",baseUrlPlaceholder:d="https://api.openai.com/v1",requireApiKey:c=!0,submitLabel:S="Save",busy:O=!1,error:F})=>{const[M,$]=o.useState(""),[y,x]=o.useState(""),[w,A]=o.useState(!1),U=()=>{$(""),x(""),A(!1)};o.useEffect(()=>{n&&($(""),x(E),A(!1))},[n,E]);const X=i=>{i||U(),l(i)},T=M.trim(),G=!c||!!T,v=async i=>{if(i.preventDefault(),!(!G||O))try{await b({apiKey:T,baseUrl:y.trim()}),U(),l(!1)}catch{}};return e.jsx(xe,{open:n,onOpenChange:X,title:k,description:p,contentSized:!0,children:e.jsxs("form",{className:"flex flex-col overflow-y-auto p-5 md:p-6",onSubmit:v,children:[e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"model-provider-api-key",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["API key",c?null:e.jsx("span",{className:"font-normal text-text-secondary",children:" (optional)"})]}),e.jsx("input",{id:"model-provider-api-key",type:"password",required:c,value:M,onChange:i=>{$(i.target.value)},placeholder:c?"Enter API key":"Enter a new key",autoFocus:!0,className:me}),c?null:e.jsx("p",{className:"mt-1.5 text-xs text-text-secondary",children:"Leave blank to keep the current key; enter a new one to replace it."})]}),e.jsxs(ye,{expanded:w,onChange:(i,K)=>A(K),className:"rounded-md border border-border",children:[e.jsx(ve,{className:"px-3 py-2.5",children:e.jsxs("span",{className:"flex w-full items-center justify-between text-sm font-medium text-text-primary",children:["Advanced · custom endpoint",e.jsx(L,{name:"chevron-down",className:P("size-4 shrink-0 text-text-secondary transition-transform duration-200",w?"rotate-0":"-rotate-90")})]})}),e.jsxs(je,{className:"space-y-1.5 border-t border-border px-3 pb-3 pt-4",children:[e.jsx("label",{htmlFor:"model-provider-base-url",className:"block text-sm font-medium text-text-primary",children:"Base URL"}),e.jsx("input",{id:"model-provider-base-url",type:"url",value:y,onChange:i=>{x(i.target.value)},placeholder:d,className:me}),e.jsx("p",{className:"text-xs text-text-secondary",children:"Leave blank unless you use a regional or proxy endpoint."})]})]})]}),e.jsxs("div",{className:"mt-6 space-y-3",children:[F?e.jsx("p",{className:"text-failure-bg text-sm",children:F}):null,e.jsx(B,{type:"submit",size:"lg",disabled:!G||O,className:"w-full shrink-0",children:S})]})]})})},Ce=we,ke="128000",Ee="4096",pe=()=>({id:"",name:"",advancedExpanded:!0,contextLength:"",maxOutputTokens:""}),ue=n=>(n==null?void 0:n.models.map(l=>{var b,k,p,E,d;return{id:l.id,name:l.name,advancedExpanded:!0,reasoningEfforts:(b=l.properties)==null?void 0:b.reasoningEfforts,contextLength:((p=(k=l.properties)==null?void 0:k.contextLength)==null?void 0:p.toString())??"",maxOutputTokens:((d=(E=l.properties)==null?void 0:E.maxOutputTokens)==null?void 0:d.toString())??"",nameDirty:!0}}))??[pe()],Q="h-11 w-full rounded-md border border-border/70 bg-secondary-bg px-3 text-sm text-text-primary outline-none transition-colors placeholder:text-text-secondary/70 focus-visible:border-focus-ring focus-visible:ring-2 focus-visible:ring-focus-ring/50",V="border-failure-bg focus-visible:border-failure-bg focus-visible:ring-failure-bg";function ce(n){const l=n.trim();if(l==="")return null;const b=Number(l);return Number.isInteger(b)&&b>0?b:null}function Se(n){return n.replace(/([a-zA-Z])(\d)/g,"$1-$2").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^[^a-z]+/,"").slice(0,64).replace(/-+$/g,"")}var re=()=>e.jsx("span",{className:"ml-0.5 text-failure-bg","aria-hidden":!0,children:"*"}),ee=({children:n})=>e.jsx("p",{className:"mt-1 text-xs text-failure-bg",children:n}),ne=({children:n})=>e.jsx("p",{className:"mt-1 text-xs text-text-secondary",children:n}),Me=({open:n,onOpenChange:l,onSubmit:b,reasoningEffortOptions:k,busy:p=!1,error:E,isEditMode:d=!1,initialValues:c})=>{const[S,O]=o.useState((c==null?void 0:c.name)??""),[F,M]=o.useState((c==null?void 0:c.baseUrl)??""),[$,y]=o.useState(""),[x,w]=o.useState(()=>ue(c)),[A,U]=o.useState(!1),[X,T]=o.useState(!1),G=()=>{O((c==null?void 0:c.name)??""),M((c==null?void 0:c.baseUrl)??""),y(""),w(ue(c)),U(!1),T(!1)},v=s=>{s||G(),l(s)},i=(s,r)=>{w(g=>g.map((u,j)=>j===s?{...u,...r}:u))},K=()=>{U(!0),T(!0),w(s=>s.map(r=>({...r,idTouched:!0,contextTouched:!0,maxTouched:!0})))},f=S.trim(),D=f?null:"Name is required.",_=F.trim();let h=null;if(!_)h="Base URL is required.";else try{new URL(_)}catch{h="Enter a valid URL."}const W=s=>s.id.trim()?null:"Model ID is required.",te=s=>s.name.trim()?null:"Model name is required.",q=s=>ce(s.contextLength)==null?"Set the model's context window.":null,Z=s=>ce(s.maxOutputTokens)==null?"Set the max output tokens.":null,oe=!D&&!h&&x.every(s=>!W(s)&&!te(s)),se=A&&D,H=X&&h,I=async()=>{if(K(),!oe||p)return;const s=x.findIndex(r=>q(r)||Z(r));if(s!==-1){i(s,{advancedExpanded:!0});const r=x[s],g=r&&q(r)?"context-length":"max-output-tokens";setTimeout(()=>{var j;const u=document.getElementById(`custom-provider-model-${s}-${g}`);(j=u==null?void 0:u.scrollIntoView)==null||j.call(u,{block:"center",behavior:"smooth"}),u==null||u.focus()},0);return}try{await b({name:f,baseUrl:_,apiKey:$.trim(),models:x.map(r=>{var R;const g={};(R=r.reasoningEfforts)!=null&&R.length&&(g.reasoningEfforts=r.reasoningEfforts);const u=ce(r.contextLength);u!=null&&(g.contextLength=u);const j=ce(r.maxOutputTokens);return j!=null&&(g.maxOutputTokens=j),{id:r.id.trim(),name:r.name.trim(),...Object.keys(g).length>0?{properties:g}:{}}})}),v(!1)}catch{}};return e.jsx(xe,{open:n,onOpenChange:v,title:d?`Edit ${(c==null?void 0:c.name)??S}`:"Add custom provider",description:d?"Update the endpoint, credentials, and models for this provider.":"Connect any OpenAI-compatible endpoint, whether it's a local model, a proxy, or your own hosted service.",contentSized:!0,children:e.jsxs("form",{className:"flex min-h-0 flex-1 flex-col",onSubmit:s=>{s.preventDefault(),I()},children:[e.jsxs("div",{className:"min-h-0 flex-1 space-y-4 overflow-y-auto px-5 pt-4 pb-8",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"custom-provider-name",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["Name",e.jsx(re,{})]}),e.jsx("input",{id:"custom-provider-name",type:"text",value:S,onChange:s=>O(s.target.value),onBlur:()=>U(!0),placeholder:"local-llama",autoFocus:!d,readOnly:d,"aria-readonly":d,"aria-invalid":se?!0:void 0,className:P(Q,d&&"cursor-not-allowed bg-secondary-bg/60 text-text-secondary",se&&V)}),d?e.jsx(ne,{children:"Provider names cannot be changed after creation."}):null,se?e.jsx(ee,{children:D}):null]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"custom-provider-base-url",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["Base URL",e.jsx(re,{})]}),e.jsx("input",{id:"custom-provider-base-url",type:"text",value:F,onChange:s=>M(s.target.value),onBlur:()=>T(!0),placeholder:"http://localhost:11434/v1",autoFocus:d,"aria-invalid":H?!0:void 0,className:P(Q,H&&V)}),H?e.jsx(ee,{children:h}):_?null:e.jsx(ne,{children:"OpenAI-compatible endpoint, usually ending in /v1."})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"custom-provider-api-key",className:"mb-1.5 block text-sm font-medium text-text-primary",children:["API key",e.jsx("span",{className:"font-normal text-text-secondary",children:" (optional)"})]}),e.jsx("input",{id:"custom-provider-api-key",type:"password",value:$,onChange:s=>y(s.target.value),placeholder:"sk-…",className:Q}),e.jsx(ne,{children:d?"Leave blank to keep the saved key, or enter a new key to replace it.":"Leave blank if your endpoint needs no key (e.g. a local model)."})]}),e.jsxs("fieldset",{className:"m-0 min-w-0 border-0 p-0",children:[e.jsxs("legend",{className:"float-left mb-2 w-full p-0 text-sm font-medium text-text-primary",children:["Models",e.jsx(re,{})]}),e.jsx("div",{className:"clear-both",children:x.map((s,r)=>{const g=W(s),u=s.idTouched&&g,j=te(s),R=!!j&&s.nameDirty,le=q(s),C=Z(s),z=s.contextTouched&&le,ae=s.maxTouched&&C;return e.jsxs("div",{className:P("pb-6",r>0?"border-t border-border pt-6":"pt-1"),style:r>0?{borderTopWidth:"0.5px"}:void 0,children:[e.jsxs("div",{className:"grid grid-cols-[1fr_1fr_2rem] items-end gap-2",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("label",{htmlFor:`custom-provider-model-${r}-id`,className:"mb-1 block text-xs font-normal text-text-secondary",children:"Model ID"}),e.jsx("input",{id:`custom-provider-model-${r}-id`,type:"text",value:s.id,onChange:t=>{const a=t.target.value;i(r,{id:a,...s.nameDirty?{}:{name:Se(a)}})},onBlur:()=>i(r,{idTouched:!0}),placeholder:"llama3.1:70b","aria-invalid":u?!0:void 0,className:P(Q,"font-mono",u&&V)})]}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("label",{htmlFor:`custom-provider-model-${r}-name`,className:"mb-1 block text-xs font-normal text-text-secondary",children:"Model name"}),e.jsx("input",{id:`custom-provider-model-${r}-name`,type:"text",value:s.name,onChange:t=>i(r,{name:t.target.value,nameDirty:!0}),placeholder:"llama-3-1-70b","aria-invalid":R?!0:void 0,className:P(Q,R&&V)})]}),e.jsx("button",{type:"button","aria-label":`Remove model ${r+1}`,disabled:x.length===1||p,className:"mb-0.5 flex size-9 items-center justify-center rounded-md text-text-secondary transition-colors hover:text-text-primary disabled:opacity-40",onClick:()=>w(t=>t.filter((a,m)=>m!==r)),children:e.jsx(L,{name:"trash",className:"size-4"})})]}),u?e.jsx(ee,{children:g}):null,R?e.jsx(ee,{children:j}):null,e.jsxs("div",{className:"mt-2",children:[e.jsxs("button",{type:"button","aria-expanded":s.advancedExpanded,"aria-controls":`custom-provider-model-${r}-advanced`,className:"flex cursor-pointer items-center gap-1.5 text-sm font-medium text-text-primary",onClick:()=>i(r,{advancedExpanded:!s.advancedExpanded}),children:[e.jsx(L,{name:"chevron-down",className:P("size-4 text-text-secondary transition-transform",s.advancedExpanded?"":"-rotate-90")}),"Advanced"]}),s.advancedExpanded?e.jsxs("div",{id:`custom-provider-model-${r}-advanced`,className:"mt-3 space-y-4 pl-6",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:`custom-provider-model-${r}-context-length`,className:"mb-1.5 block text-xs font-medium text-text-secondary",children:["Context length",e.jsx(re,{})]}),e.jsx("input",{id:`custom-provider-model-${r}-context-length`,type:"number",min:1,inputMode:"numeric",value:s.contextLength,onChange:t=>i(r,{contextLength:t.target.value}),onBlur:()=>i(r,{contextTouched:!0}),placeholder:ke,"aria-invalid":z?!0:void 0,className:P(Q,z&&V)}),z?e.jsx(ee,{children:le}):s.contextLength.trim()===""?e.jsx(ne,{children:"Prevents the context window from overflowing during a run."}):null]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:`custom-provider-model-${r}-max-output-tokens`,className:"mb-1.5 block text-xs font-medium text-text-secondary",children:["Max output tokens",e.jsx(re,{})]}),e.jsx("input",{id:`custom-provider-model-${r}-max-output-tokens`,type:"number",min:1,inputMode:"numeric",value:s.maxOutputTokens,onChange:t=>i(r,{maxOutputTokens:t.target.value}),onBlur:()=>i(r,{maxTouched:!0}),placeholder:Ee,"aria-invalid":ae?!0:void 0,className:P(Q,ae&&V)}),ae?e.jsx(ee,{children:C}):s.maxOutputTokens.trim()===""?e.jsx(ne,{children:"Caps tokens per model call."}):null]}),k&&k.length>0?e.jsxs("div",{children:[e.jsxs("label",{className:"flex w-fit cursor-pointer items-center gap-2 select-none",children:[e.jsx("input",{type:"checkbox",className:"size-4 shrink-0 cursor-pointer accent-primary-button-bg disabled:cursor-not-allowed disabled:opacity-50",checked:s.reasoningEfforts!==void 0,"aria-label":`Enable reasoning effort for model ${r+1}`,disabled:p,onChange:t=>i(r,{reasoningEfforts:t.target.checked?[]:void 0})}),e.jsx("span",{className:"text-text-secondary text-xs font-medium",children:"Reasoning effort"})]}),s.reasoningEfforts!==void 0?e.jsx("div",{role:"group","aria-label":`Supported reasoning efforts for model ${r+1}`,className:"mt-2 flex flex-wrap gap-2",children:k.map(t=>{var m;const a=((m=s.reasoningEfforts)==null?void 0:m.includes(t))??!1;return e.jsx("button",{type:"button","aria-pressed":a,disabled:p,className:P("rounded-full border px-3 py-1 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring/40 disabled:opacity-50",a?"border-primary-button-bg bg-primary-button-bg text-primary-button-text":"border-border text-text-secondary hover:bg-ghost-button-hover"),onClick:()=>{var J;return i(r,{reasoningEfforts:a?(J=s.reasoningEfforts)==null?void 0:J.filter(de=>de!==t):[...s.reasoningEfforts??[],t]})},children:t},t)})}):null]}):null]}):null]})]},r)})}),e.jsxs(B,{variant:"secondary",size:"sm",type:"button",className:"mt-4 w-fit",onClick:()=>w(s=>[...s,pe()]),children:[e.jsx(L,{name:"plus",className:"size-3.5"}),"Add model"]})]})]}),e.jsxs("div",{className:"shrink-0 space-y-3 border-t border-border px-5 py-4",children:[E?e.jsx("p",{className:"text-failure-bg text-sm",children:E}):null,e.jsx(B,{type:"submit",size:"lg",disabled:!oe||p,className:"w-full",children:d?"Save changes":"Add provider"})]})]})})},Ue=Me;function Te(n){return"baseUrl"in n&&typeof n.baseUrl=="string"?n.baseUrl:""}var Pe=()=>{const{modelCatalog:n}=be(),l=fe(),[b,k]=o.useState(""),[p,E]=o.useState([]),[d,c]=o.useState([]),[S,O]=o.useState(!0),[F,M]=o.useState(null),[$,y]=o.useState(null),[x,w]=o.useState(!1),[A,U]=o.useState(null),[X,T]=o.useState(null),[G,v]=o.useState(null),[i,K]=o.useState(!1),[f,D]=o.useState(null),_=o.useMemo(()=>(d??[]).reduce((t,a)=>(t[a.name]=a.logo??"",t),{}),[d]),h=b.trim().toLowerCase(),W=o.useCallback(async()=>{O(!0),M(null);try{const[t,a]=await Promise.all([n.listModelProviders(),n.getModelProviderCatalog()]);E(t),c(a)}catch(t){M(Y(t,"Failed to load model providers"))}finally{O(!1)}},[n]);o.useEffect(()=>{W()},[W]);const te=o.useMemo(()=>new Set(p.map(t=>t.type)),[p]),q=o.useMemo(()=>p.filter(t=>{var a;return((a=t.name)==null?void 0:a.toLowerCase().includes(h))||t.models.some(m=>m.name.toLowerCase().includes(h)||m.id.toLowerCase().includes(h))}),[p,h]),Z=o.useMemo(()=>d.filter(t=>t.type!=="custom"&&!te.has(t.type)&&(t.name.toLowerCase().includes(h)||t.models.some(a=>a.name.toLowerCase().includes(h)||a.id.toLowerCase().includes(h)))),[d,te,h]),oe=o.useMemo(()=>{var t;return(t=d.find(a=>a.type==="custom"))==null?void 0:t.supportedReasoningEfforts},[d]),se=o.useMemo(()=>{const t=new Map;for(const a of d)t.set(a.type,a.models);return t},[d]),H=()=>{U(null),T(null),v(null)},I=async(t,a)=>{w(!0),M(null);try{await t(),await W(),H()}catch(m){throw a?a(m):l==null?M(Y(m,"Request failed")):l.showError(m),m}finally{w(!1)}},s=async(t,a)=>{v(null),await I(async()=>{await n.createModelProvider({type:t.type,name:t.name,...a.baseUrl?{baseUrl:a.baseUrl}:{},apiKey:a.apiKey,models:t.models})},m=>v(Y(m,"Request failed")))},r=async(t,a)=>{v(null),await I(async()=>{await n.updateModelProvider({id:t.id,type:t.type,name:t.name,...a.baseUrl?{baseUrl:a.baseUrl}:{},apiKey:a.apiKey,models:t.models})},m=>v(Y(m,"Request failed"))),l==null||l.showSuccess({title:`${t.name} updated`})},g=t=>{n.deleteModelProvider&&I(async()=>{await n.deleteModelProvider({id:t.id})}).catch(()=>{})},u=(t,a)=>{I(async()=>{await n.updateModelProvider({id:t.id,type:t.type,name:t.name,...t.baseUrl?{baseUrl:t.baseUrl}:{},apiKey:"",models:a})}).catch(()=>{})},j=async t=>{y(null),await I(async()=>{await n.createModelProvider({type:"custom",name:t.name,baseUrl:t.baseUrl,apiKey:t.apiKey,models:t.models})},a=>y(Y(a,"Request failed"))),setTimeout(()=>{l==null||l.showSuccess({title:`${t.name} added`})},0)},R=async t=>{if(!f)return;const a=f;y(null),await I(async()=>{await n.updateModelProvider({id:a.id,type:a.type,name:a.name,baseUrl:t.baseUrl,apiKey:t.apiKey,models:t.models})},m=>y(Y(m,"Request failed"))),setTimeout(()=>{l==null||l.showSuccess({title:"Model provider updated",description:`${a.name} was updated successfully.`})},0)},le=f?{name:f.name,baseUrl:f.baseUrl??"",models:f.models}:void 0,C=A!=null?p.find(t=>t.id===A)??null:null,z=X!=null?d.find(t=>t.type===X)??null:null,ae=C!=null||z!=null;return e.jsxs(e.Fragment,{children:[e.jsx("h3",{className:"text-xl font-semibold tracking-tight text-text-primary",children:"Models"}),e.jsx("p",{className:"mt-1 text-sm text-text-secondary",children:"Connect providers and choose which models are available."}),F?e.jsx("p",{className:"mt-3 rounded-md border border-failure-bg/30 bg-failure-bg/10 px-3 py-2 text-sm text-failure-bg",children:F}):null,e.jsx("div",{className:"mt-4 flex-1 overflow-y-hidden",children:e.jsxs("div",{className:"flex h-full flex-col gap-3",children:[e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1",children:e.jsx(ge,{query:b,setQuery:k,placeholder:"Search providers and models"})}),e.jsxs(B,{variant:"secondary",type:"button",onClick:()=>{y(null),D(null),K(!0)},children:[e.jsx(L,{name:"plus",size:"1rem",className:"mr-1"}),"Add Custom Provider"]})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-2 overflow-y-auto",children:[S?e.jsx("p",{className:"py-8 text-center text-sm text-text-secondary",children:"Loading…"}):null,!S&&q.length>0?e.jsxs("section",{"aria-labelledby":"configured-providers-heading",children:[e.jsx("div",{id:"configured-providers-heading",className:"mb-2 text-[0.8125rem] font-semibold uppercase text-text-secondary",children:"Configured"}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:q.map(t=>{const a=se.get(t.type)??[],m=new Set(t.models.map(N=>N.id)),J=a.filter(N=>!m.has(N.id)),de=_[t.name];return e.jsxs("article",{className:"border-b border-border p-3 last:border-b-0",children:[e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[e.jsx("div",{className:"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:de?e.jsx(ie,{src:de,alt:t.name,className:"size-4.5"}):e.jsx(L,{name:"cpu",className:"size-4.5"})}),e.jsx("h5",{className:"truncate text-base font-medium text-text-primary",children:t.name})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2.5 sm:justify-end",children:[e.jsxs("span",{className:"flex items-center gap-1.5 rounded-full border border-border bg-secondary-bg/40 px-2 py-0.5 text-xs font-medium text-success-bg",children:[e.jsx("span",{className:"h-1.5 w-1.5 rounded-full bg-success-bg"}),"Connected"]}),e.jsxs(B,{variant:"secondary",size:"sm",className:"text-[0.8125rem]",type:"button","aria-label":`Edit ${t.name}`,title:`Edit ${t.name}`,disabled:x,onClick:()=>{t.type==="custom"?(H(),y(null),D(t),K(!0)):(v(null),T(null),U(t.id))},children:[e.jsx(L,{name:"wrench",className:"size-3.5"}),"Edit"]}),n.deleteModelProvider?e.jsx(B,{variant:"outline",size:"sm",className:"transition-colors hover:bg-failure-bg/10 hover:text-failure-bg",type:"button",disabled:x,onClick:()=>{g(t)},children:"Remove"}):null]})]}),e.jsxs("div",{className:"mt-3 overflow-hidden rounded-lg border border-border bg-secondary-bg/30",children:[t.models.map(N=>e.jsxs("div",{className:"flex min-h-10 items-center gap-3 border-b border-border px-3 py-2 text-sm text-text-primary last:border-b-0",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate",children:N.name}),e.jsx("button",{type:"button","aria-label":`Remove ${N.name}`,disabled:x,className:"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-text-secondary hover:bg-ghost-button-hover hover:text-ghost-button-text focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring disabled:opacity-50",onClick:()=>{u(t,t.models.filter(he=>he.id!==N.id))},children:e.jsx(L,{name:"trash",className:"size-3.5"})})]},N.id)),J.length>0?e.jsxs("section",{children:[e.jsxs("div",{className:"border-b border-border bg-secondary-bg/40 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-text-secondary",children:["Available to add · ",J.length]}),J.map(N=>e.jsxs("div",{className:"flex min-h-12 items-center gap-3 border-b border-border px-3 py-2 text-sm text-text-primary last:border-b-0",children:[e.jsx("span",{className:"min-w-0 flex-1 truncate",children:N.name}),e.jsx(B,{variant:"outline",size:"sm",type:"button",disabled:x,onClick:()=>{u(t,[...t.models,N])},children:"Add"})]},N.id))]}):null]})]},t.id)})})]}):null,!S&&Z.length>0?e.jsxs("section",{"aria-labelledby":"available-providers-heading",className:"mt-2",children:[e.jsx("div",{id:"available-providers-heading",className:"mb-2 text-[0.8125rem] font-semibold uppercase text-text-secondary",children:"Available"}),e.jsx("div",{className:"overflow-hidden rounded-xl border border-border bg-card-bg",children:Z.map(t=>{const a=_[t.name];return e.jsx("article",{className:"border-b border-border p-3 last:border-b-0",children:e.jsxs("header",{className:"flex flex-col gap-3 sm:flex-row sm:items-center",children:[e.jsxs("div",{className:"flex min-w-0 flex-1 items-center gap-3",children:[e.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-lg border border-border bg-secondary-bg text-text-primary","aria-hidden":!0,children:a?e.jsx(ie,{src:a,alt:t.name,className:"size-4.5"}):e.jsx(L,{name:"cpu",className:"size-4.5"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h5",{className:"truncate text-base font-medium text-text-primary",children:t.name}),e.jsx("p",{className:"truncate text-sm text-text-secondary",children:t.models.map(m=>m.name).join(" · ")})]})]}),e.jsxs(B,{variant:"secondary",type:"button",disabled:x,onClick:()=>{v(null),U(null),T(t.type)},children:[e.jsx(L,{name:"wrench",className:"size-4"}),"Configure"]})]})},t.type)})})]}):null,!S&&q.length===0&&Z.length===0?e.jsx("div",{className:"flex flex-1 items-center justify-center rounded-xl border border-dashed border-border p-8 text-center text-sm text-text-secondary",children:h?`No providers match “${b.trim()}”.`:"No model providers yet."}):null]}),e.jsx(Ce,{open:ae,onOpenChange:t=>{t||H()},onSave:t=>{if(C)return r(C,t);if(z)return s(z,t)},title:C?"Edit Provider Details":"Configure Provider Details",initialBaseUrl:C?C.baseUrl??"":z?Te(z):"",requireApiKey:C==null,submitLabel:C?"Save":"Create",busy:x,error:G}),e.jsx(Ue,{open:i,onOpenChange:t=>{K(t),t||(y(null),D(null))},isEditMode:f!==null,initialValues:le,onSubmit:f?R:j,reasoningEffortOptions:oe,busy:x,error:$},(f==null?void 0:f.id)??"add-custom-provider")]})})]})},ze=Pe;export{ze as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ModelSettings-IJ55QJQO-BFV2nfxB.js","assets/index-B8NomNE2.js","assets/index-DEKCw40W.css","assets/ConnectorSettings-CLBEWGQJ-BjMXOS3R.js","assets/SkillSettings-MXK4ZEI7-CrK7D1D-.js","assets/SandboxSettings-S5XGZWOL-BUQpWdqg.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{n as p,k as h,o as g,r as l,j as e,I as m,f as v,e as x,_ as o,S as y}from"./index-B8NomNE2.js";var j=l.lazy(()=>o(()=>import("./ModelSettings-IJ55QJQO-BFV2nfxB.js"),__vite__mapDeps([0,1,2]))),S=l.lazy(()=>o(()=>import("./ConnectorSettings-CLBEWGQJ-BjMXOS3R.js"),__vite__mapDeps([3,1,2]))),_=l.lazy(()=>o(()=>import("./SkillSettings-MXK4ZEI7-CrK7D1D-.js"),__vite__mapDeps([4,1,2]))),k=l.lazy(()=>o(()=>import("./SandboxSettings-S5XGZWOL-BUQpWdqg.js"),__vite__mapDeps([5,1,2])));function w(){return e.jsxs("div",{className:"flex flex-1 items-center justify-center py-8",role:"status","aria-live":"polite","aria-busy":"true",children:[e.jsx(y,{size:20,className:"text-text-secondary"}),e.jsx("span",{className:"sr-only",children:"Loading"})]})}var E=()=>{const{settingsOpen:c,setSettingsOpen:d}=p(),n=h(),i=g(),[t,u]=l.useState("models"),r=(n==null?void 0:n.skillCatalog)!=null,a=(n==null?void 0:n.sandboxCatalog)!=null;l.useEffect(()=>{!r&&t==="skills"&&u("models"),!a&&t==="sandbox"&&u("models")},[r,a,t]),l.useEffect(()=>{if(!c)return;const s=f=>{f.key==="Escape"&&(f.stopImmediatePropagation(),d(!1))};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[c,d]);const b=l.useMemo(()=>{const s=[{id:"models",label:"Models",icon:"cpu"},{id:"connectors",label:"Connectors",icon:"plug"}];return r&&s.push({id:"skills",label:"Skills",icon:"lightbulb"}),a&&s.push({id:"sandbox",label:"Sandbox providers",icon:"cube"}),s},[r,a]);return!c||!n?null:e.jsxs("div",{className:"flex h-full min-h-0 w-full flex-col bg-primary-bg",children:[e.jsxs("header",{className:"flex shrink-0 items-center gap-2 border-b border-border px-2 py-1.5",children:[e.jsx("button",{type:"button","aria-label":"Back",title:"Back",className:v({variant:"ghost",size:"icon"}),onClick:()=>d(!1),children:e.jsx(m,{name:"arrow-left"})}),e.jsx("h1",{className:"text-lg font-semibold tracking-tight text-text-primary",children:"Settings"})]}),e.jsxs("div",{className:x("flex min-h-0 flex-1 flex-col",!i&&"md:flex-row"),children:[e.jsx("nav",{"aria-label":"Settings sections",className:x("flex w-full gap-1 border-b border-border bg-secondary-bg/40 p-2",i?"min-w-0":"justify-center md:w-48 md:flex-col md:justify-start md:border-b-0 md:border-r"),children:b.map(s=>e.jsxs("button",{type:"button","aria-current":t===s.id?"page":void 0,...i?{title:s.label}:{},className:x("flex min-h-9 items-center gap-2 rounded-md px-3 text-sm font-medium transition-colors","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring",i?"min-w-0 flex-1 justify-center gap-1.5 px-1.5":"shrink-0",t===s.id?"bg-primary-button-bg text-primary-button-text":"text-text-secondary hover:bg-ghost-button-hover/60 hover:text-text-primary"),onClick:()=>{u(s.id)},children:[e.jsx(m,{name:s.icon,className:"h-4 w-4 shrink-0"}),i?e.jsx("span",{className:"truncate",children:s.label}):s.label]},s.id))}),e.jsx("section",{className:"flex flex-col h-full flex-1 overflow-y-hidden px-6 py-4",children:e.jsx("div",{className:"w-full max-w-210 h-full min-h-0 flex flex-col mx-auto",children:e.jsxs(l.Suspense,{fallback:e.jsx(w,{}),children:[t==="models"?e.jsx(j,{}):null,t==="connectors"?e.jsx(S,{}):null,t==="skills"&&r?e.jsx(_,{}):null,t==="sandbox"&&a?e.jsx(k,{}):null]})})})]})]})},C=E;export{C as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
[ 䴩�~^�^>��M��A�t���0d���*fP4g1�y@z�����c/�X��@���ZD�\�
|
|
2
|
-
W�OL>����N���Ts�+YA�����*���#9� x���{���o����Ewk��>�D�i.J������mGu��.;>�:��/���o��n!*հB�&��7Ⱦܵ��AG�T������z��.��RSCҐ�o$������5G0������yo��������`%?~;���:ߔ��q$;�_�C�ղ�w` ����s�Vh������$�Hʅ�W��$�=:���S�-;�[����`�Q@*d�F�V��Dn�ȍ��M��Kȁ;�3�{EN��a9 )ɬ��ųg�+ˡϞ)\�B)%�F(_Ys49]�8�����l�sj1�u���S���X!�`�2�0�TGz�4������=z�,H}#iQکe�c h���#=
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|