@truefoundry/trueforge 0.1.3 → 0.1.4-rc.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.
Files changed (159) hide show
  1. package/dist/_frontend/assets/{ConnectorSettings-EYOQ72OS-DdSqeM08.js → ConnectorSettings-ODC3LVHN-jhiXpbVc.js} +1 -1
  2. package/dist/_frontend/assets/ConnectorSettings-ODC3LVHN-jhiXpbVc.js.br +0 -0
  3. package/dist/_frontend/assets/ConnectorSettings-ODC3LVHN-jhiXpbVc.js.gz +0 -0
  4. package/dist/_frontend/assets/{DockLayout-XIOJZ2YM-htVfvSLo.js → DockLayout-2RWDSUKE-DY3y3Is3.js} +1 -1
  5. package/dist/_frontend/assets/{DrawerLayout-CNKNNVI7-CQ7wZgB6.js → DrawerLayout-CZLJYMIN-BYncSNoi.js} +2 -2
  6. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-BYncSNoi.js.br +0 -0
  7. package/dist/_frontend/assets/DrawerLayout-CZLJYMIN-BYncSNoi.js.gz +0 -0
  8. package/dist/_frontend/assets/{ModelSettings-WBDPLI6O-CYfqXYXo.js → ModelSettings-CKQ5CVAC-DxQtYKup.js} +1 -1
  9. package/dist/_frontend/assets/ModelSettings-CKQ5CVAC-DxQtYKup.js.br +0 -0
  10. package/dist/_frontend/assets/ModelSettings-CKQ5CVAC-DxQtYKup.js.gz +0 -0
  11. package/dist/_frontend/assets/{SandboxSettings-4GHBXULN-BPT3vPku.js → SandboxSettings-HSCPYUOC-DMFf-U04.js} +1 -1
  12. package/dist/_frontend/assets/SandboxSettings-HSCPYUOC-DMFf-U04.js.br +0 -0
  13. package/dist/_frontend/assets/SandboxSettings-HSCPYUOC-DMFf-U04.js.gz +0 -0
  14. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-C4p8uaXT.js +2 -0
  15. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-C4p8uaXT.js.br +0 -0
  16. package/dist/_frontend/assets/SettingsBuilder-MYWRFXRI-C4p8uaXT.js.gz +0 -0
  17. package/dist/_frontend/assets/{ShellRouteSync-T4WLY57Q-BKbLAZEv.js → ShellRouteSync-T4WLY57Q-BC8a0ojU.js} +1 -1
  18. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-BC8a0ojU.js.br +0 -0
  19. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-BC8a0ojU.js.gz +0 -0
  20. package/dist/_frontend/assets/{SidebarLayout-JGLTENB3-BiZz45he.js → SidebarLayout-WVY54TGZ-Ds7NVk-f.js} +2 -2
  21. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-Ds7NVk-f.js.br +0 -0
  22. package/dist/_frontend/assets/SidebarLayout-WVY54TGZ-Ds7NVk-f.js.gz +0 -0
  23. package/dist/_frontend/assets/{SkillSettings-UG6USX4N-DhQTOueg.js → SkillSettings-ECH6SHZ7-BtdCmc6B.js} +1 -1
  24. package/dist/_frontend/assets/SkillSettings-ECH6SHZ7-BtdCmc6B.js.br +0 -0
  25. package/dist/_frontend/assets/SkillSettings-ECH6SHZ7-BtdCmc6B.js.gz +0 -0
  26. package/dist/_frontend/assets/{TrueForgeUIWithRouter-CTC5XRSY-BnWelV-R.js → TrueForgeUIWithRouter-RKZ2E7PV-vF7U7cGf.js} +1 -1
  27. package/dist/_frontend/assets/{WidgetLayout-6P6OUUTG-B1G5uZ4_.js → WidgetLayout-NWWB2SXI-DJtuM33Y.js} +1 -1
  28. package/dist/_frontend/assets/WidgetLayout-NWWB2SXI-DJtuM33Y.js.br +0 -0
  29. package/dist/_frontend/assets/WidgetLayout-NWWB2SXI-DJtuM33Y.js.gz +0 -0
  30. package/dist/_frontend/assets/{chunk-62JRHF6Z-yJ2twjOf.js → chunk-62JRHF6Z-TG4aaXok.js} +1 -1
  31. package/dist/_frontend/assets/chunk-62JRHF6Z-TG4aaXok.js.br +0 -0
  32. package/dist/_frontend/assets/chunk-62JRHF6Z-TG4aaXok.js.gz +0 -0
  33. package/dist/_frontend/assets/{chunk-27MKI3HF-CVw53aeu.js → chunk-OZTNBS6V-axorP9qO.js} +1 -1
  34. package/dist/_frontend/assets/chunk-OZTNBS6V-axorP9qO.js.br +0 -0
  35. package/dist/_frontend/assets/{chunk-27MKI3HF-CVw53aeu.js.gz → chunk-OZTNBS6V-axorP9qO.js.gz} +0 -0
  36. package/dist/_frontend/assets/{chunk-H75C5ETA-CX-fQN0e.js → chunk-TCAVLWYL-BXtNAtCy.js} +2 -2
  37. package/dist/_frontend/assets/chunk-TCAVLWYL-BXtNAtCy.js.br +0 -0
  38. package/dist/_frontend/assets/chunk-TCAVLWYL-BXtNAtCy.js.gz +0 -0
  39. package/dist/_frontend/assets/{cssMode-CEpMXY8Z.js → cssMode-yEIs6GIw.js} +1 -1
  40. package/dist/_frontend/assets/cssMode-yEIs6GIw.js.br +0 -0
  41. package/dist/_frontend/assets/cssMode-yEIs6GIw.js.gz +0 -0
  42. package/dist/_frontend/assets/{freemarker2-cQSgojlC.js → freemarker2-aDGnYU8i.js} +1 -1
  43. package/dist/_frontend/assets/freemarker2-aDGnYU8i.js.br +0 -0
  44. package/dist/_frontend/assets/freemarker2-aDGnYU8i.js.gz +0 -0
  45. package/dist/_frontend/assets/{handlebars-BQ-clQ7_.js → handlebars-B6ny31dN.js} +1 -1
  46. package/dist/_frontend/assets/handlebars-B6ny31dN.js.br +0 -0
  47. package/dist/_frontend/assets/handlebars-B6ny31dN.js.gz +0 -0
  48. package/dist/_frontend/assets/{html-ChfWgJt-.js → html-D7u-MYoP.js} +1 -1
  49. package/dist/_frontend/assets/html-D7u-MYoP.js.br +0 -0
  50. package/dist/_frontend/assets/html-D7u-MYoP.js.gz +0 -0
  51. package/dist/_frontend/assets/{htmlMode-D1PmpoAx.js → htmlMode-kNcFDXKs.js} +1 -1
  52. package/dist/_frontend/assets/htmlMode-kNcFDXKs.js.br +0 -0
  53. package/dist/_frontend/assets/htmlMode-kNcFDXKs.js.gz +0 -0
  54. package/dist/_frontend/assets/{index-aEojVaVa.js → index-CLJuaUhx.js} +3 -3
  55. package/dist/_frontend/assets/index-CLJuaUhx.js.br +0 -0
  56. package/dist/_frontend/assets/index-CLJuaUhx.js.gz +0 -0
  57. package/dist/_frontend/assets/{index-BRS0kvLQ.js → index-D1GDH6ia.js} +122 -122
  58. package/dist/_frontend/assets/index-D1GDH6ia.js.br +0 -0
  59. package/dist/_frontend/assets/index-D1GDH6ia.js.gz +0 -0
  60. package/dist/_frontend/assets/{javascript-DFHGvkjD.js → javascript-BLSK7s1P.js} +1 -1
  61. package/dist/_frontend/assets/{jsonMode-DWo0prLv.js → jsonMode-XHJKWC_S.js} +1 -1
  62. package/dist/_frontend/assets/jsonMode-XHJKWC_S.js.br +0 -0
  63. package/dist/_frontend/assets/jsonMode-XHJKWC_S.js.gz +0 -0
  64. package/dist/_frontend/assets/{liquid-Bs2__P9v.js → liquid-Db1WZdZB.js} +1 -1
  65. package/dist/_frontend/assets/liquid-Db1WZdZB.js.br +0 -0
  66. package/dist/_frontend/assets/liquid-Db1WZdZB.js.gz +0 -0
  67. package/dist/_frontend/assets/{lspLanguageFeatures-zZ0stYf4.js → lspLanguageFeatures-BFyBtl8M.js} +1 -1
  68. package/dist/_frontend/assets/lspLanguageFeatures-BFyBtl8M.js.br +0 -0
  69. package/dist/_frontend/assets/lspLanguageFeatures-BFyBtl8M.js.gz +0 -0
  70. package/dist/_frontend/assets/{mdx-C7c8MDI_.js → mdx-DtFWu4ex.js} +1 -1
  71. package/dist/_frontend/assets/mdx-DtFWu4ex.js.br +0 -0
  72. package/dist/_frontend/assets/mdx-DtFWu4ex.js.gz +0 -0
  73. package/dist/_frontend/assets/{python-CLO39XAV.js → python-2R7BOup6.js} +1 -1
  74. package/dist/_frontend/assets/python-2R7BOup6.js.br +0 -0
  75. package/dist/_frontend/assets/python-2R7BOup6.js.gz +0 -0
  76. package/dist/_frontend/assets/{razor-efddsYhk.js → razor-DQLxdj72.js} +1 -1
  77. package/dist/_frontend/assets/razor-DQLxdj72.js.br +0 -0
  78. package/dist/_frontend/assets/razor-DQLxdj72.js.gz +0 -0
  79. package/dist/_frontend/assets/{tsMode-xfchPgTX.js → tsMode-Ctn4PuNt.js} +1 -1
  80. package/dist/_frontend/assets/tsMode-Ctn4PuNt.js.br +0 -0
  81. package/dist/_frontend/assets/tsMode-Ctn4PuNt.js.gz +0 -0
  82. package/dist/_frontend/assets/{typescript-BFzaCQP8.js → typescript-DGwzICBa.js} +1 -1
  83. package/dist/_frontend/assets/typescript-DGwzICBa.js.br +0 -0
  84. package/dist/_frontend/assets/typescript-DGwzICBa.js.gz +0 -0
  85. package/dist/_frontend/assets/{workers-DKwMBzKS.js → workers-CRRTWuKZ.js} +1 -1
  86. package/dist/_frontend/assets/workers-CRRTWuKZ.js.br +0 -0
  87. package/dist/_frontend/assets/workers-CRRTWuKZ.js.gz +0 -0
  88. package/dist/_frontend/assets/{xml-Cx6gHwq3.js → xml-CFZg-QqB.js} +1 -1
  89. package/dist/_frontend/assets/xml-CFZg-QqB.js.br +0 -0
  90. package/dist/_frontend/assets/xml-CFZg-QqB.js.gz +0 -0
  91. package/dist/_frontend/assets/{yaml-DyrfMWlf.js → yaml-DUIIx9CV.js} +1 -1
  92. package/dist/_frontend/assets/yaml-DUIIx9CV.js.br +0 -0
  93. package/dist/_frontend/assets/yaml-DUIIx9CV.js.gz +0 -0
  94. package/dist/_frontend/index.html +1 -1
  95. package/dist/_frontend/index.html.br +0 -0
  96. package/dist/_frontend/index.html.gz +0 -0
  97. package/dist/main.js +2152 -468
  98. package/dist/main.js.map +1 -1
  99. package/package.json +10 -4
  100. package/dist/_frontend/assets/ConnectorSettings-EYOQ72OS-DdSqeM08.js.br +0 -0
  101. package/dist/_frontend/assets/ConnectorSettings-EYOQ72OS-DdSqeM08.js.gz +0 -0
  102. package/dist/_frontend/assets/DrawerLayout-CNKNNVI7-CQ7wZgB6.js.br +0 -0
  103. package/dist/_frontend/assets/DrawerLayout-CNKNNVI7-CQ7wZgB6.js.gz +0 -0
  104. package/dist/_frontend/assets/ModelSettings-WBDPLI6O-CYfqXYXo.js.br +0 -0
  105. package/dist/_frontend/assets/ModelSettings-WBDPLI6O-CYfqXYXo.js.gz +0 -0
  106. package/dist/_frontend/assets/SandboxSettings-4GHBXULN-BPT3vPku.js.br +0 -0
  107. package/dist/_frontend/assets/SandboxSettings-4GHBXULN-BPT3vPku.js.gz +0 -0
  108. package/dist/_frontend/assets/SettingsBuilder-TD42LCIU-COZb69Wb.js +0 -2
  109. package/dist/_frontend/assets/SettingsBuilder-TD42LCIU-COZb69Wb.js.br +0 -0
  110. package/dist/_frontend/assets/SettingsBuilder-TD42LCIU-COZb69Wb.js.gz +0 -0
  111. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-BKbLAZEv.js.br +0 -0
  112. package/dist/_frontend/assets/ShellRouteSync-T4WLY57Q-BKbLAZEv.js.gz +0 -0
  113. package/dist/_frontend/assets/SidebarLayout-JGLTENB3-BiZz45he.js.br +0 -0
  114. package/dist/_frontend/assets/SidebarLayout-JGLTENB3-BiZz45he.js.gz +0 -0
  115. package/dist/_frontend/assets/SkillSettings-UG6USX4N-DhQTOueg.js.br +0 -0
  116. package/dist/_frontend/assets/SkillSettings-UG6USX4N-DhQTOueg.js.gz +0 -0
  117. package/dist/_frontend/assets/WidgetLayout-6P6OUUTG-B1G5uZ4_.js.br +0 -0
  118. package/dist/_frontend/assets/WidgetLayout-6P6OUUTG-B1G5uZ4_.js.gz +0 -0
  119. package/dist/_frontend/assets/chunk-27MKI3HF-CVw53aeu.js.br +0 -0
  120. package/dist/_frontend/assets/chunk-62JRHF6Z-yJ2twjOf.js.br +0 -0
  121. package/dist/_frontend/assets/chunk-62JRHF6Z-yJ2twjOf.js.gz +0 -0
  122. package/dist/_frontend/assets/chunk-H75C5ETA-CX-fQN0e.js.br +0 -0
  123. package/dist/_frontend/assets/chunk-H75C5ETA-CX-fQN0e.js.gz +0 -0
  124. package/dist/_frontend/assets/cssMode-CEpMXY8Z.js.br +0 -0
  125. package/dist/_frontend/assets/cssMode-CEpMXY8Z.js.gz +0 -0
  126. package/dist/_frontend/assets/freemarker2-cQSgojlC.js.br +0 -0
  127. package/dist/_frontend/assets/freemarker2-cQSgojlC.js.gz +0 -0
  128. package/dist/_frontend/assets/handlebars-BQ-clQ7_.js.br +0 -0
  129. package/dist/_frontend/assets/handlebars-BQ-clQ7_.js.gz +0 -0
  130. package/dist/_frontend/assets/html-ChfWgJt-.js.br +0 -0
  131. package/dist/_frontend/assets/html-ChfWgJt-.js.gz +0 -0
  132. package/dist/_frontend/assets/htmlMode-D1PmpoAx.js.br +0 -0
  133. package/dist/_frontend/assets/htmlMode-D1PmpoAx.js.gz +0 -0
  134. package/dist/_frontend/assets/index-BRS0kvLQ.js.br +0 -0
  135. package/dist/_frontend/assets/index-BRS0kvLQ.js.gz +0 -0
  136. package/dist/_frontend/assets/index-aEojVaVa.js.br +0 -0
  137. package/dist/_frontend/assets/index-aEojVaVa.js.gz +0 -0
  138. package/dist/_frontend/assets/jsonMode-DWo0prLv.js.br +0 -0
  139. package/dist/_frontend/assets/jsonMode-DWo0prLv.js.gz +0 -0
  140. package/dist/_frontend/assets/liquid-Bs2__P9v.js.br +0 -0
  141. package/dist/_frontend/assets/liquid-Bs2__P9v.js.gz +0 -0
  142. package/dist/_frontend/assets/lspLanguageFeatures-zZ0stYf4.js.br +0 -0
  143. package/dist/_frontend/assets/lspLanguageFeatures-zZ0stYf4.js.gz +0 -0
  144. package/dist/_frontend/assets/mdx-C7c8MDI_.js.br +0 -0
  145. package/dist/_frontend/assets/mdx-C7c8MDI_.js.gz +0 -0
  146. package/dist/_frontend/assets/python-CLO39XAV.js.br +0 -0
  147. package/dist/_frontend/assets/python-CLO39XAV.js.gz +0 -0
  148. package/dist/_frontend/assets/razor-efddsYhk.js.br +0 -0
  149. package/dist/_frontend/assets/razor-efddsYhk.js.gz +0 -0
  150. package/dist/_frontend/assets/tsMode-xfchPgTX.js.br +0 -0
  151. package/dist/_frontend/assets/tsMode-xfchPgTX.js.gz +0 -0
  152. package/dist/_frontend/assets/typescript-BFzaCQP8.js.br +0 -0
  153. package/dist/_frontend/assets/typescript-BFzaCQP8.js.gz +0 -0
  154. package/dist/_frontend/assets/workers-DKwMBzKS.js.br +0 -0
  155. package/dist/_frontend/assets/workers-DKwMBzKS.js.gz +0 -0
  156. package/dist/_frontend/assets/xml-Cx6gHwq3.js.br +0 -0
  157. package/dist/_frontend/assets/xml-Cx6gHwq3.js.gz +0 -0
  158. package/dist/_frontend/assets/yaml-DyrfMWlf.js.br +0 -0
  159. package/dist/_frontend/assets/yaml-DyrfMWlf.js.gz +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@truefoundry/trueforge",
3
- "version": "0.1.3",
3
+ "version": "0.1.4-rc.0",
4
4
  "description": "TrueForge Agent Harness: server, HTTP API, and chat UI (npx @truefoundry/trueforge)",
5
5
  "author": "TrueFoundry",
6
6
  "license": "MIT",
@@ -27,6 +27,7 @@
27
27
  "node": ">=22"
28
28
  },
29
29
  "dependencies": {
30
+ "@anthropic-ai/sandbox-runtime": "0.0.71",
30
31
  "@daytona/sdk": "^0.204.1",
31
32
  "@hono/node-server": "^2.0.11",
32
33
  "@hono/swagger-ui": "^0.2.1",
@@ -44,7 +45,7 @@
44
45
  "winston": "^3.13.0",
45
46
  "yaml": "^2.9.0",
46
47
  "zod": "^4.4.3",
47
- "@truefoundry/trueforge-core": "0.1.3"
48
+ "@truefoundry/trueforge-core": "0.1.4-rc.0"
48
49
  },
49
50
  "devDependencies": {
50
51
  "@swc/core": "^1.11.0",
@@ -60,8 +61,9 @@
60
61
  },
61
62
  "scripts": {
62
63
  "build:frontend-assets": "node scripts/copy-frontend.mjs",
63
- "build:gen:watch": "node --watch-path=catalog/model-catalog.yaml --watch-path=catalog/mcp-catalog.yaml --watch-path=catalog/skill-catalog.yaml --watch-path=catalog/sandbox-catalog.yaml scripts/generate-catalog.mjs",
64
- "build:gen": "node scripts/generate-catalog.mjs",
64
+ "build:gen:local-sandbox": "node scripts/generate-local-sandbox-scripts.mjs",
65
+ "build:gen:watch": "node --watch-path=catalog/model-catalog.yaml --watch-path=catalog/mcp-catalog.yaml --watch-path=catalog/skill-catalog.yaml --watch-path=catalog/sandbox-catalog.yaml --watch-path=src/sandbox/local/scripts scripts/generate-dev.mjs",
66
+ "build:gen": "pnpm run build:gen:local-sandbox && node scripts/generate-catalog.mjs",
65
67
  "build:clean": "rm -rf dist",
66
68
  "build": "pnpm run build:gen && tsc --noEmit && pnpm run build:clean && tsup && chmod +x dist/cli.js && pnpm run build:frontend-assets",
67
69
  "dev:serve": "NODE_OPTIONS='--conditions=trueforge-dev' NODE_ENV=development tsx watch --env-file=.env src/main.ts",
@@ -79,6 +81,10 @@
79
81
  "test:store:postgres": "jest --config jest.store.postgres.config.cjs",
80
82
  "test:store:sqlite": "jest --config jest.store.sqlite.config.cjs",
81
83
  "test": "pnpm run build:gen && NODE_OPTIONS='--conditions=trueforge-dev' node --env-file=.env.test ./node_modules/jest/bin/jest.js --config jest.unit.config.cjs",
84
+ "test:local-sandbox:contract": "pnpm run build:gen && NODE_OPTIONS='--conditions=trueforge-dev' node --env-file=.env.test ./node_modules/jest/bin/jest.js --config jest.local-sandbox.contract.config.cjs",
85
+ "smoke:local-sandbox": "pnpm run build:gen && NODE_OPTIONS='--conditions=trueforge-dev' jest --config jest.local-sandbox.smoke.config.cjs --runInBand --forceExit tests/sandbox/local/smoke.test.ts",
86
+ "smoke:local-sandbox:lima": "bash scripts/local-sandbox/smoke-lima.sh",
87
+ "probe:loopback": "pnpm exec tsx scripts/local-sandbox/probe-loopback.ts",
82
88
  "typecheck": "pnpm run build:gen && tsc --noEmit && tsc --noEmit -p tests/db/tsconfig.json && tsc --noEmit -p tests/unit/tsconfig.json"
83
89
  },
84
90
  "bin": {
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ModelSettings-WBDPLI6O-CYfqXYXo.js","assets/index-BRS0kvLQ.js","assets/index-DEKCw40W.css","assets/ConnectorSettings-EYOQ72OS-DdSqeM08.js","assets/SkillSettings-UG6USX4N-DhQTOueg.js","assets/SandboxSettings-4GHBXULN-BPT3vPku.js"])))=>i.map(i=>d[i]);
2
- import{g,i as v,k as y,l as j,m as S,r as l,j as e,I as p,f as _,e as f,_ as u,S as k}from"./index-BRS0kvLQ.js";var w=l.lazy(()=>u(()=>import("./ModelSettings-WBDPLI6O-CYfqXYXo.js"),__vite__mapDeps([0,1,2]))),E=l.lazy(()=>u(()=>import("./ConnectorSettings-EYOQ72OS-DdSqeM08.js"),__vite__mapDeps([3,1,2]))),N=l.lazy(()=>u(()=>import("./SkillSettings-UG6USX4N-DhQTOueg.js"),__vite__mapDeps([4,1,2]))),C=l.lazy(()=>u(()=>import("./SandboxSettings-4GHBXULN-BPT3vPku.js"),__vite__mapDeps([5,1,2])));function L(){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(k,{size:20,className:"text-text-secondary"}),e.jsx("span",{className:"sr-only",children:"Loading"})]})}var O=()=>{const{settingsOpen:a,settingsSection:t,setSettingsOpen:r}=g(),n=v(),d=y(),{refresh:m}=j(),i=S(),o=(n==null?void 0:n.skillCatalog)!=null,c=(n==null?void 0:n.sandboxCatalog)!=null,x=l.useCallback(()=>{r(!1),m(),d==null||d()},[m,d,r]);l.useEffect(()=>{!o&&t==="skills"&&r(a,"models"),!c&&t==="sandbox"&&r(a,"models")},[o,c,t,a,r]),l.useEffect(()=>{if(!a)return;const s=b=>{b.key==="Escape"&&(b.stopImmediatePropagation(),x())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[x,a]);const h=l.useMemo(()=>{const s=[{id:"models",label:"Models",icon:"cpu"},{id:"connectors",label:"Connectors",icon:"plug"}];return o&&s.push({id:"skills",label:"Skills",icon:"lightbulb"}),c&&s.push({id:"sandbox",label:"Sandbox providers",icon:"cube"}),s},[o,c]);return!a||!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:_({variant:"ghost",size:"icon"}),onClick:x,children:e.jsx(p,{name:"arrow-left"})}),e.jsx("h1",{className:"text-lg font-semibold tracking-tight text-text-primary",children:"Settings"})]}),e.jsxs("div",{className:f("flex min-h-0 flex-1 flex-col",!i&&"md:flex-row"),children:[e.jsx("nav",{"aria-label":"Settings sections",className:f("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:h.map(s=>e.jsxs("button",{type:"button","aria-current":t===s.id?"page":void 0,...i?{title:s.label}:{},className:f("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:()=>{r(!0,s.id)},children:[e.jsx(p,{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(L,{}),children:[t==="models"?e.jsx(w,{}):null,t==="connectors"?e.jsx(E,{}):null,t==="skills"&&o?e.jsx(N,{}):null,t==="sandbox"&&c?e.jsx(C,{}):null]})})})]})]})},I=O;export{I as default};