@truefoundry/trueforge-ui 0.3.0-rc.2 → 0.3.0-rc.3

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 (107) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.md +17 -9
  3. package/dist/{AgentCodeSnippets-637HQUXD.js → AgentCodeSnippets-N546FNNS.js} +38 -23
  4. package/dist/AgentCodeSnippets-N546FNNS.js.map +1 -0
  5. package/dist/AgentMetricChart-YWJYVYYA.js +15 -0
  6. package/dist/{AgentOverview-3FJ5EE6N.js → AgentOverview-VF74XC7I.js} +7 -7
  7. package/dist/{AgentSessionEventTimeline-VELWUYPR.js → AgentSessionEventTimeline-RFR6LQMY.js} +8 -8
  8. package/dist/{AgentSessionEventTimeline-VELWUYPR.js.map → AgentSessionEventTimeline-RFR6LQMY.js.map} +1 -1
  9. package/dist/{AgentSessionEventTimelineChart-CUKETHWM.js → AgentSessionEventTimelineChart-27CQF6FX.js} +12 -12
  10. package/dist/AgentSessionEventTimelineChart-27CQF6FX.js.map +1 -0
  11. package/dist/{AgentSessions-T7MOGOTZ.js → AgentSessions-4IVX2SGD.js} +36 -12
  12. package/dist/AgentSessions-4IVX2SGD.js.map +1 -0
  13. package/dist/{ConnectorSettings-ESZ2RSRG.js → ConnectorSettings-R5VEP7BO.js} +156 -116
  14. package/dist/ConnectorSettings-R5VEP7BO.js.map +1 -0
  15. package/dist/{DockLayout-NLFNU6F2.js → DockLayout-F44RWGEY.js} +10 -10
  16. package/dist/{DrawerLayout-PR3SMKA6.js → DrawerLayout-SQ323AVM.js} +13 -11
  17. package/dist/DrawerLayout-SQ323AVM.js.map +1 -0
  18. package/dist/{ModelSettings-LYW64IRR.js → ModelSettings-6QLS63HM.js} +10 -10
  19. package/dist/{ModelSettings-LYW64IRR.js.map → ModelSettings-6QLS63HM.js.map} +1 -1
  20. package/dist/OpenUiFenceBlock-4ROX3G4X.js +9 -0
  21. package/dist/{SandboxSettings-DF64LHYI.js → SandboxSettings-OLKDXIQS.js} +9 -9
  22. package/dist/SchedulesPage-TMOTK6DR.js +15 -0
  23. package/dist/{SettingsBuilder-LSXK2VN4.js → SettingsBuilder-GISAH2WU.js} +8 -8
  24. package/dist/{ShellRouteSync-B22IAV2W.js → ShellRouteSync-EN33DUQ7.js} +157 -22
  25. package/dist/ShellRouteSync-EN33DUQ7.js.map +1 -0
  26. package/dist/{SidebarLayout-XW6LXB7R.js → SidebarLayout-35K4AKTC.js} +74 -53
  27. package/dist/SidebarLayout-35K4AKTC.js.map +1 -0
  28. package/dist/{SkillSettings-64VXUO6J.js → SkillSettings-JSX2BTII.js} +18 -13
  29. package/dist/SkillSettings-JSX2BTII.js.map +1 -0
  30. package/dist/{TrueForgeUIWithRouter-3TSLV22Q.js → TrueForgeUIWithRouter-6VCR7ES3.js} +9 -9
  31. package/dist/{WidgetLayout-Q5P7PYSJ.js → WidgetLayout-RKBSN2FZ.js} +10 -10
  32. package/dist/{chunk-YQO2NMJ3.js → chunk-2O5EJ6QS.js} +4096 -2825
  33. package/dist/chunk-2O5EJ6QS.js.map +1 -0
  34. package/dist/chunk-6WCIL3H2.js +517 -0
  35. package/dist/chunk-6WCIL3H2.js.map +1 -0
  36. package/dist/{chunk-SQGT43Z3.js → chunk-73FQVITT.js} +21 -4
  37. package/dist/chunk-73FQVITT.js.map +1 -0
  38. package/dist/{chunk-QC42MLAK.js → chunk-7AAO4UDQ.js} +4 -3
  39. package/dist/chunk-7AAO4UDQ.js.map +1 -0
  40. package/dist/{chunk-LGRHHFHN.js → chunk-F5QVQIBH.js} +166 -45
  41. package/dist/chunk-F5QVQIBH.js.map +1 -0
  42. package/dist/{chunk-I3AL54MA.js → chunk-GIPFF6FZ.js} +28 -24
  43. package/dist/chunk-GIPFF6FZ.js.map +1 -0
  44. package/dist/{chunk-GXYAOAK5.js → chunk-GSJAYYLR.js} +219 -162
  45. package/dist/chunk-GSJAYYLR.js.map +1 -0
  46. package/dist/{chunk-VJ7BZGAF.js → chunk-J5BPHEDT.js} +2 -2
  47. package/dist/chunk-KR7WYHVF.js +195 -0
  48. package/dist/chunk-KR7WYHVF.js.map +1 -0
  49. package/dist/{chunk-VUMGMGKZ.js → chunk-LUG7E6BL.js} +52 -8
  50. package/dist/chunk-LUG7E6BL.js.map +1 -0
  51. package/dist/chunk-LXJMINS6.js +587 -0
  52. package/dist/chunk-LXJMINS6.js.map +1 -0
  53. package/dist/{chunk-FQK2XVVE.js → chunk-PT4EENB3.js} +224 -72
  54. package/dist/chunk-PT4EENB3.js.map +1 -0
  55. package/dist/{chunk-H6WTY5PM.js → chunk-Q6TCT7ZJ.js} +17 -227
  56. package/dist/chunk-Q6TCT7ZJ.js.map +1 -0
  57. package/dist/{chunk-5I2COQNL.js → chunk-XLFOXQKZ.js} +13 -11
  58. package/dist/chunk-XLFOXQKZ.js.map +1 -0
  59. package/dist/{chunk-G2TUAD65.js → chunk-XY6LZQES.js} +235 -108
  60. package/dist/chunk-XY6LZQES.js.map +1 -0
  61. package/dist/{createTrueFoundryServer-CmZnBh_l.d.ts → createTrueFoundryServer-B_FYhSdn.d.ts} +8 -5
  62. package/dist/index.d.ts +291 -89
  63. package/dist/index.js +63 -488
  64. package/dist/index.js.map +1 -1
  65. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +36 -13
  66. package/dist/plugins/trueforge-agent-server-adapter/index.js +69 -35
  67. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  68. package/dist/styles.css +1 -1
  69. package/package.json +3 -3
  70. package/dist/AgentCodeSnippets-637HQUXD.js.map +0 -1
  71. package/dist/AgentMetricChart-4FYECRIN.js +0 -15
  72. package/dist/AgentSessionEventTimelineChart-CUKETHWM.js.map +0 -1
  73. package/dist/AgentSessions-T7MOGOTZ.js.map +0 -1
  74. package/dist/ConnectorSettings-ESZ2RSRG.js.map +0 -1
  75. package/dist/DrawerLayout-PR3SMKA6.js.map +0 -1
  76. package/dist/OpenUiFenceBlock-JEPNPJ7U.js +0 -9
  77. package/dist/SchedulesPage-WQU4H25F.js +0 -15
  78. package/dist/ShellRouteSync-B22IAV2W.js.map +0 -1
  79. package/dist/SidebarLayout-XW6LXB7R.js.map +0 -1
  80. package/dist/SkillSettings-64VXUO6J.js.map +0 -1
  81. package/dist/chunk-5I2COQNL.js.map +0 -1
  82. package/dist/chunk-BWHOZFIV.js +0 -587
  83. package/dist/chunk-BWHOZFIV.js.map +0 -1
  84. package/dist/chunk-FQK2XVVE.js.map +0 -1
  85. package/dist/chunk-G2TUAD65.js.map +0 -1
  86. package/dist/chunk-GXYAOAK5.js.map +0 -1
  87. package/dist/chunk-H6WTY5PM.js.map +0 -1
  88. package/dist/chunk-I3AL54MA.js.map +0 -1
  89. package/dist/chunk-LGRHHFHN.js.map +0 -1
  90. package/dist/chunk-NHHSZB5N.js +0 -74
  91. package/dist/chunk-NHHSZB5N.js.map +0 -1
  92. package/dist/chunk-QC42MLAK.js.map +0 -1
  93. package/dist/chunk-SFZNIO6U.js +0 -18
  94. package/dist/chunk-SFZNIO6U.js.map +0 -1
  95. package/dist/chunk-SQGT43Z3.js.map +0 -1
  96. package/dist/chunk-VUMGMGKZ.js.map +0 -1
  97. package/dist/chunk-YQO2NMJ3.js.map +0 -1
  98. /package/dist/{AgentMetricChart-4FYECRIN.js.map → AgentMetricChart-YWJYVYYA.js.map} +0 -0
  99. /package/dist/{AgentOverview-3FJ5EE6N.js.map → AgentOverview-VF74XC7I.js.map} +0 -0
  100. /package/dist/{DockLayout-NLFNU6F2.js.map → DockLayout-F44RWGEY.js.map} +0 -0
  101. /package/dist/{OpenUiFenceBlock-JEPNPJ7U.js.map → OpenUiFenceBlock-4ROX3G4X.js.map} +0 -0
  102. /package/dist/{SandboxSettings-DF64LHYI.js.map → SandboxSettings-OLKDXIQS.js.map} +0 -0
  103. /package/dist/{SchedulesPage-WQU4H25F.js.map → SchedulesPage-TMOTK6DR.js.map} +0 -0
  104. /package/dist/{SettingsBuilder-LSXK2VN4.js.map → SettingsBuilder-GISAH2WU.js.map} +0 -0
  105. /package/dist/{TrueForgeUIWithRouter-3TSLV22Q.js.map → TrueForgeUIWithRouter-6VCR7ES3.js.map} +0 -0
  106. /package/dist/{WidgetLayout-Q5P7PYSJ.js.map → WidgetLayout-RKBSN2FZ.js.map} +0 -0
  107. /package/dist/{chunk-VJ7BZGAF.js.map → chunk-J5BPHEDT.js.map} +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/icons/agent-2.svg","../src/icons/ai.svg","../src/icons/brain-regular.svg","../src/icons/compare.svg","../src/icons/empty.svg","../src/icons/mcp-server.svg","../src/icons/search-globe.svg","../src/icons/trueforge-logomark-dark.svg","../src/icons/trueforge-logomark-light.svg","../src/icons/registerAgentIcons.ts","../src/containers/McpOauthContainer/PostMcpOauthScreen.tsx","../src/containers/ThreadListContainer.tsx","../src/atoms/AgentHistoryFilterButton.tsx","../src/containers/ToolGroupContainer.tsx","../src/containers/TrueForgeUI.tsx","../src/index.ts"],"sourcesContent":["import * as React from \"react\";\nconst SvgAgent2 = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 16 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M8 0C8.40158 8.28071e-05 8.72754 0.325937 8.72754 0.727539V2.90918H12.3623C13.5671 2.90921 14.5437 3.88607 14.5439 5.09082V7.27246H15.2725C15.6741 7.27253 16 7.59839 16 8C15.9999 8.40155 15.674 8.72747 15.2725 8.72754H14.5439V10.9092C14.5437 12.1139 13.5671 13.0908 12.3623 13.0908H3.63477C2.43015 13.0906 1.45334 12.1138 1.45312 10.9092V8.72754H0.727539C0.325964 8.7275 7.21982e-05 8.40157 0 8C0 7.59837 0.32592 7.2725 0.727539 7.27246H1.45312V5.09082C1.45335 3.8862 2.43015 2.90942 3.63477 2.90918H7.27246V1.45508H5.09082C4.68943 1.4549 4.36346 1.12893 4.36328 0.727539C4.36328 0.325997 4.68932 0.00017902 5.09082 0H8ZM3.63477 4.36426C3.23346 4.3645 2.90843 4.68951 2.9082 5.09082V7.99023C2.90824 7.99344 2.90918 7.99678 2.90918 8C2.90918 8.00326 2.90825 8.00651 2.9082 8.00977V10.9092C2.90841 11.3105 3.23345 11.6365 3.63477 11.6367H12.3623C12.7638 11.6367 13.0896 11.3106 13.0898 10.9092V5.09082C13.0896 4.68937 12.7638 4.36428 12.3623 4.36426H3.63477ZM5.81738 6.54492C6.21902 6.54492 6.54489 6.87084 6.54492 7.27246V8.72656C6.54492 9.12822 6.21904 9.4541 5.81738 9.4541C5.41587 9.45393 5.08984 9.12811 5.08984 8.72656V7.27246C5.08988 6.87094 5.41589 6.54509 5.81738 6.54492ZM10.1816 6.54492C10.5831 6.54514 10.9091 6.87097 10.9092 7.27246V8.72656C10.9092 9.12808 10.5831 9.45388 10.1816 9.4541C9.77999 9.4541 9.4541 9.12822 9.4541 8.72656V7.27246C9.45413 6.87084 9.78001 6.54492 10.1816 6.54492Z\" fill=\"currentColor\" /></svg>;\nexport default SvgAgent2;","import * as React from \"react\";\nconst SvgAi = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g opacity={0.9}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.4419 9.43023C15.7501 9.43023 16 9.68012 16 9.98837V10.0304C16 11.398 16 12.4813 15.886 13.329C15.7687 14.2015 15.5216 14.9077 14.9647 15.4647C14.4077 16.0216 13.7015 16.2687 12.829 16.386C11.9813 16.5 10.898 16.5 9.53035 16.5H9.48837C9.18012 16.5 8.93023 16.2501 8.93023 15.9419C8.93023 15.6336 9.18012 15.3837 9.48837 15.3837C10.9074 15.3837 11.9155 15.3825 12.6803 15.2797C13.429 15.1791 13.8604 14.9903 14.1753 14.6753C14.4903 14.3604 14.6791 13.929 14.7797 13.1803C14.8825 12.4155 14.8837 11.4074 14.8837 9.98837C14.8837 9.68012 15.1336 9.43023 15.4419 9.43023Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0.55814 9.43023C0.866392 9.43023 1.11628 9.68012 1.11628 9.98837C1.11628 11.4074 1.11747 12.4155 1.22029 13.1803C1.32095 13.929 1.50973 14.3604 1.82467 14.6753C2.13962 14.9903 2.57098 15.1791 3.3197 15.2797C4.08448 15.3825 5.0926 15.3837 6.51163 15.3837C6.81988 15.3837 7.06977 15.6336 7.06977 15.9419C7.06977 16.2501 6.81988 16.5 6.51163 16.5H6.46965C5.10201 16.5 4.01875 16.5 3.17096 16.386C2.29846 16.2687 1.59227 16.0216 1.03534 15.4647C0.478423 14.9077 0.231266 14.2015 0.113961 13.329C-2.0957e-05 12.4813 -1.15596e-05 11.398 2.3934e-07 10.0304C3.72411e-07 10.0164 5.05482e-07 10.0024 5.05482e-07 9.98837C5.05482e-07 9.68012 0.249888 9.43023 0.55814 9.43023Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M6.46964 0.5L6.51163 0.500001C6.81988 0.500001 7.06977 0.749888 7.06977 1.05814C7.06977 1.36639 6.81988 1.61628 6.51163 1.61628C5.0926 1.61628 4.08448 1.61747 3.3197 1.72029C2.57098 1.82095 2.13962 2.00973 1.82467 2.32467C1.50973 2.63962 1.32095 3.07098 1.22029 3.8197C1.11747 4.58448 1.11628 5.5926 1.11628 7.01163C1.11628 7.31988 0.866392 7.56977 0.55814 7.56977C0.249888 7.56977 5.05482e-07 7.31988 5.05482e-07 7.01163L2.3934e-07 6.96964C-1.15596e-05 5.60201 -2.0957e-05 4.51875 0.113961 3.67096C0.231266 2.79846 0.478423 2.09227 1.03534 1.53534C1.59227 0.978423 2.29846 0.731266 3.17096 0.613961C4.01875 0.499979 5.10201 0.499988 6.46964 0.5Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12.6803 1.72029C11.9155 1.61747 10.9074 1.61628 9.48837 1.61628C9.18012 1.61628 8.93023 1.36639 8.93023 1.05814C8.93023 0.749888 9.18012 0.500001 9.48837 0.500001C9.5024 0.500001 9.51639 0.5 9.53036 0.5C10.898 0.499988 11.9813 0.499979 12.829 0.613961C13.7015 0.731266 14.4077 0.978423 14.9647 1.53534C15.5216 2.09227 15.7687 2.79846 15.886 3.67096C16 4.51875 16 5.60201 16 6.96965V7.01163C16 7.31988 15.7501 7.56977 15.4419 7.56977C15.1336 7.56977 14.8837 7.31988 14.8837 7.01163C14.8837 5.5926 14.8825 4.58448 14.7797 3.8197C14.6791 3.07098 14.4903 2.63962 14.1753 2.32467C13.8604 2.00973 13.429 1.82095 12.6803 1.72029Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M2.70041 3.20041C2.04651 3.85431 2.04651 4.90675 2.04651 7.01163V9.98837C2.04651 12.0933 2.04651 13.1457 2.70041 13.7996C3.35431 14.4535 4.40675 14.4535 6.51163 14.4535H9.48837C11.5933 14.4535 12.6457 14.4535 13.2996 13.7996C13.9535 13.1457 13.9535 12.0933 13.9535 9.98837V7.01163C13.9535 4.90675 13.9535 3.85431 13.2996 3.20041C12.6457 2.54651 11.5933 2.54651 9.48837 2.54651H6.51163C4.40675 2.54651 3.35431 2.54651 2.70041 3.20041ZM5.65417 10.5348C5.81478 10.3181 6.12065 10.2726 6.33733 10.4332C6.8116 10.7848 7.38407 10.9884 8 10.9884C8.61593 10.9884 9.1884 10.7848 9.66267 10.4332C9.87936 10.2726 10.1852 10.3181 10.3458 10.5348C10.5064 10.7514 10.461 11.0573 10.2443 11.2179C9.61111 11.6873 8.83673 11.9651 8 11.9651C7.16327 11.9651 6.38889 11.6873 5.75569 11.2179C5.53901 11.0573 5.49356 10.7514 5.65417 10.5348ZM10.6047 7.24419C10.6047 7.78363 10.3131 8.22093 9.95349 8.22093C9.59386 8.22093 9.30233 7.78363 9.30233 7.24419C9.30233 6.70475 9.59386 6.26744 9.95349 6.26744C10.3131 6.26744 10.6047 6.70475 10.6047 7.24419ZM6.04651 8.22093C6.40614 8.22093 6.69767 7.78363 6.69767 7.24419C6.69767 6.70475 6.40614 6.26744 6.04651 6.26744C5.68688 6.26744 5.39535 6.70475 5.39535 7.24419C5.39535 7.78363 5.68688 8.22093 6.04651 8.22093Z\" fill=\"currentColor\" /></g></svg>;\nexport default SvgAi;","import * as React from \"react\";\nconst SvgBrainRegular = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M0 6.9375C0 6.30469 0.234375 5.69531 0.609375 5.25C0.5625 5.0625 0.5625 4.875 0.5625 4.6875C0.5625 3.9375 0.9375 3.25781 1.52344 2.85938C1.61719 2.17969 2.01562 1.59375 2.60156 1.26562C2.90625 0.515625 3.63281 0 4.5 0C5.08594 0 5.60156 0.257812 6 0.65625C6.375 0.257812 6.89062 0 7.5 0C8.34375 0 9.07031 0.515625 9.375 1.26562C9.96094 1.59375 10.3594 2.17969 10.4531 2.85938C11.0391 3.25781 11.4375 3.9375 11.4375 4.6875C11.4375 4.875 11.4141 5.0625 11.3672 5.25C11.7422 5.69531 12 6.30469 12 6.9375C12 7.66406 11.6953 8.32031 11.2266 8.78906L11.25 8.8125C11.25 9.9375 10.4297 10.8516 9.375 11.0391C9 11.625 8.34375 12 7.59375 12C6.96094 12 6.375 11.7422 6 11.2969C5.60156 11.7422 5.01562 12 4.40625 12C3.63281 12 2.97656 11.625 2.60156 11.0391C1.54688 10.8516 0.75 9.9375 0.75 8.8125V8.78906C0.28125 8.32031 0 7.66406 0 6.9375ZM5.41406 9.9375H5.4375V2.0625C5.4375 1.54688 5.01562 1.125 4.5 1.125C3.96094 1.125 3.5625 1.54688 3.5625 2.0625V2.08594C3.07031 2.17969 2.69531 2.55469 2.625 3.04688C2.625 3.09375 2.625 3.14062 2.625 3.1875C2.625 3.32812 2.625 3.46875 2.67188 3.58594C2.50781 3.60938 2.32031 3.65625 2.17969 3.75C1.89844 3.9375 1.71094 4.24219 1.6875 4.57031C1.6875 4.61719 1.6875 4.66406 1.6875 4.6875C1.6875 5.03906 1.82812 5.34375 2.0625 5.55469C1.71094 5.69531 1.40625 5.97656 1.24219 6.32812C1.17188 6.51562 1.10156 6.72656 1.10156 6.9375C1.10156 7.5 1.42969 7.99219 1.875 8.25C1.92188 8.27344 1.94531 8.29688 1.99219 8.32031C1.96875 8.34375 1.96875 8.36719 1.94531 8.39062C1.89844 8.53125 1.875 8.67188 1.875 8.8125C1.875 9.32812 2.20312 9.77344 2.67188 9.91406C2.76562 9.9375 2.88281 9.9375 3 9.9375C3.11719 9.9375 3.25781 9.91406 3.375 9.89062C3.375 10.1016 3.44531 10.3125 3.58594 10.4766C3.77344 10.7344 4.05469 10.875 4.40625 10.875C4.92188 10.875 5.36719 10.4766 5.41406 9.9375ZM8.41406 2.08594L8.4375 2.0625C8.4375 1.54688 8.01562 1.125 7.5 1.125C6.96094 1.125 6.5625 1.54688 6.5625 2.0625V9.9375C6.60938 10.4766 7.05469 10.875 7.59375 10.875C7.92188 10.875 8.20312 10.7344 8.39062 10.4766C8.53125 10.3125 8.60156 10.1016 8.60156 9.89062C8.71875 9.91406 8.85938 9.9375 9 9.9375C9.09375 9.9375 9.21094 9.9375 9.30469 9.91406C9.77344 9.77344 10.125 9.32812 10.125 8.8125C10.125 8.67188 10.0781 8.53125 10.0312 8.39062C10.0078 8.36719 10.0078 8.34375 9.98438 8.32031C10.0312 8.29688 10.0547 8.27344 10.1016 8.25C10.5469 7.99219 10.875 7.5 10.875 6.9375C10.875 6.72656 10.8047 6.51562 10.7344 6.32812C10.5703 5.97656 10.2656 5.69531 9.91406 5.55469C10.1484 5.34375 10.3125 5.03906 10.3125 4.6875C10.3125 4.66406 10.2891 4.61719 10.2891 4.57031C10.2656 4.24219 10.0781 3.9375 9.79688 3.75C9.65625 3.65625 9.46875 3.60938 9.30469 3.58594C9.35156 3.46875 9.375 3.32812 9.375 3.1875C9.375 3.14062 9.35156 3.09375 9.35156 3.04688C9.28125 2.55469 8.90625 2.17969 8.41406 2.08594Z\" fill=\"currentColor\" /></svg>;\nexport default SvgBrainRegular;","import * as React from \"react\";\nconst SvgCompare = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 14 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M5.09091 16.5V15.0455H1.45455C1.05455 15.0455 0.712121 14.903 0.427273 14.6182C0.142424 14.3333 0 13.9909 0 13.5909V3.40909C0 3.00909 0.142424 2.66667 0.427273 2.38182C0.712121 2.09697 1.05455 1.95455 1.45455 1.95455H5.09091V0.5H6.54545V16.5H5.09091ZM8 15.0455V13.5909L11.6364 13.5909V3.40909H8V1.95455H11.6364C12.0364 1.95455 12.3788 2.09697 12.6636 2.38182C12.9485 2.66667 13.0909 3.00909 13.0909 3.40909V13.5909C13.0909 13.9909 12.9485 14.3333 12.6636 14.6182C12.3788 14.903 12.0364 15.0455 11.6364 15.0455H8Z\" fill=\"currentColor\" /></svg>;\nexport default SvgCompare;","import * as React from \"react\";\nconst SvgEmpty = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 22 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.4824 12.432L21.0265 6.20004L10.5441 0L0 6.20004L10.4824 12.432Z\" fill=\"#ECF2F9\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.4729 11.7499L19.75 6.23584L10.5271 0.749939L1.25 6.23584L10.4729 11.7499Z\" fill=\"#FDFEFF\" /><path d=\"M10.5 11.7499V0.749939L19.75 6.24994L10.5 11.7499Z\" fill=\"url(#paint0_linear_10651_178757)\" /><path d=\"M10.5 11.7499V0.749939L1.25 6.24994L10.5 11.7499Z\" fill=\"#0E1623\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0 6.20001V18.686L10.5441 25V12.4319L0 6.20001Z\" fill=\"#CEE0F8\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M21.0265 6.20001V18.686L10.4824 25V12.4319L21.0265 6.20001Z\" fill=\"#82A0CE\" /><path d=\"M10.4973 11.7478L4.64099 8.26706V8.95172L10.4973 12.4126L15.8148 9.27748V8.59062L10.4973 11.7478Z\" fill=\"#ECF2F9\" /><defs><linearGradient id=\"paint0_linear_10651_178757\" x1={15.0834} y1={2.10412} x2={15.125} y2={11.7499} gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#5E7BAA\" /><stop offset={1} stopColor=\"#030407\" /></linearGradient></defs></svg>;\nexport default SvgEmpty;","import * as React from \"react\";\nconst SvgMcpServer = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 14 14\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g clipPath=\"url(#clip0_5446_3655)\"><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9.15174 1.36702C8.86989 1.09272 8.49212 0.939234 8.09883 0.939234C7.70553 0.939234 7.32776 1.09272 7.04591 1.36702L1.43074 6.87369C1.33678 6.96502 1.21091 7.01611 1.07987 7.01611C0.948831 7.01611 0.822958 6.96502 0.728994 6.87369C0.68299 6.82895 0.646423 6.77544 0.621453 6.71633C0.596483 6.65721 0.583618 6.59369 0.583618 6.52952C0.583618 6.46535 0.596483 6.40183 0.621453 6.34272C0.646423 6.2836 0.68299 6.23009 0.728994 6.18536L6.34416 0.678689C6.81387 0.221585 7.44341 -0.0341797 8.09883 -0.0341797C8.75424 -0.0341797 9.38379 0.221585 9.85349 0.678689C10.1253 0.943 10.3306 1.26791 10.4527 1.62683C10.5748 1.98575 10.6101 2.36848 10.5558 2.74369C10.936 2.68962 11.3235 2.72356 11.6885 2.8429C12.0535 2.96224 12.3863 3.16379 12.6611 3.43202L12.6902 3.46119C12.9203 3.68489 13.1031 3.95243 13.2279 4.248C13.3528 4.54357 13.4171 4.86117 13.4171 5.18202C13.4171 5.50288 13.3528 5.82048 13.2279 6.11605C13.1031 6.41162 12.9203 6.67916 12.6902 6.90286L7.61174 11.8828C7.59642 11.8977 7.58423 11.9155 7.57591 11.9352C7.56759 11.9549 7.5633 11.976 7.5633 11.9974C7.5633 12.0188 7.56759 12.0399 7.57591 12.0596C7.58423 12.0793 7.59642 12.0971 7.61174 12.112L8.65474 13.1352C8.70075 13.1799 8.73731 13.2334 8.76228 13.2926C8.78725 13.3517 8.80012 13.4152 8.80012 13.4794C8.80012 13.5435 8.78725 13.607 8.76228 13.6662C8.73731 13.7253 8.70075 13.7788 8.65474 13.8235C8.56078 13.9149 8.43491 13.9659 8.30387 13.9659C8.17283 13.9659 8.04696 13.9149 7.95299 13.8235L6.90999 12.8009C6.80257 12.6966 6.71717 12.5717 6.65886 12.4337C6.60054 12.2957 6.5705 12.1475 6.5705 11.9977C6.5705 11.8479 6.60054 11.6996 6.65886 11.5617C6.71717 11.4237 6.80257 11.2988 6.90999 11.1944L11.9885 6.21394C12.1264 6.07968 12.2361 5.91914 12.3109 5.74181C12.3858 5.56447 12.4244 5.37393 12.4244 5.18144C12.4244 4.98895 12.3858 4.79841 12.3109 4.62107C12.2361 4.44374 12.1264 4.2832 11.9885 4.14894L11.9593 4.12036C11.6778 3.84634 11.3005 3.69287 10.9076 3.69254C10.5148 3.69222 10.1372 3.84506 9.85524 4.11861L5.67158 8.22177L5.67041 8.22294L5.61324 8.27952C5.51925 8.37103 5.39326 8.42223 5.26208 8.42223C5.1309 8.42223 5.0049 8.37103 4.91091 8.27952C4.86491 8.23478 4.82834 8.18128 4.80337 8.12216C4.7784 8.06305 4.76553 7.99953 4.76553 7.93536C4.76553 7.87118 4.7784 7.80766 4.80337 7.74855C4.82834 7.68944 4.86491 7.63593 4.91091 7.59119L9.15349 3.43027C9.29105 3.29592 9.40033 3.1354 9.47488 2.95816C9.54943 2.78093 9.58776 2.59056 9.58759 2.39828C9.58743 2.206 9.54878 2.0157 9.47393 1.83859C9.39907 1.66147 9.28953 1.50114 9.15174 1.36702Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.44964 2.74425C8.49564 2.69951 8.53221 2.646 8.55718 2.58689C8.58215 2.52777 8.59501 2.46425 8.59501 2.40008C8.59501 2.33591 8.58215 2.27239 8.55718 2.21328C8.53221 2.15416 8.49564 2.10066 8.44964 2.05592C8.35564 1.96441 8.22965 1.91321 8.09847 1.91321C7.96729 1.91321 7.84129 1.96441 7.7473 2.05592L3.59455 6.12875C3.36454 6.35245 3.1817 6.61999 3.05685 6.91556C2.932 7.21113 2.86768 7.52873 2.86768 7.84958C2.86768 8.17044 2.932 8.48804 3.05685 8.78361C3.1817 9.07918 3.36454 9.34672 3.59455 9.57042C4.06433 10.0274 4.69385 10.2831 5.34922 10.2831C6.00459 10.2831 6.63411 10.0274 7.10389 9.57042L11.2572 5.49758C11.3032 5.45284 11.3398 5.39934 11.3648 5.34022C11.3897 5.28111 11.4026 5.21759 11.4026 5.15342C11.4026 5.08925 11.3897 5.02573 11.3648 4.96661C11.3398 4.9075 11.3032 4.85399 11.2572 4.80925C11.1632 4.71774 11.0372 4.66654 10.9061 4.66654C10.7749 4.66654 10.6489 4.71774 10.5549 4.80925L6.40214 8.88208C6.12029 9.15639 5.74252 9.30987 5.34922 9.30987C4.95592 9.30987 4.57815 9.15639 4.2963 8.88208C4.15836 8.74782 4.04873 8.58729 3.97386 8.40995C3.899 8.23261 3.86043 8.04207 3.86043 7.84958C3.86043 7.65709 3.899 7.46655 3.97386 7.28922C4.04873 7.11188 4.15836 6.95134 4.2963 6.81708L8.44964 2.74425Z\" fill=\"currentColor\" /></g><defs><clipPath id=\"clip0_5446_3655\"><rect width={14} height={14} fill=\"white\" /></clipPath></defs></svg>;\nexport default SvgMcpServer;","import * as React from \"react\";\nconst SvgSearchGlobe = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M7 0C10.8555 0 14 3.14453 14 7C14 10.8828 10.8555 14 7 14C3.11719 14 0 10.8828 0 7C0 3.14453 3.11719 0 7 0ZM7 12.6875C7.19141 12.6875 7.71094 12.4961 8.28516 11.375C8.53125 10.8828 8.72266 10.3086 8.88672 9.625H5.08594C5.25 10.3086 5.44141 10.8828 5.6875 11.375C6.26172 12.4961 6.78125 12.6875 7 12.6875ZM4.86719 8.3125H9.10547C9.16016 7.90234 9.1875 7.46484 9.1875 7C9.1875 6.5625 9.16016 6.125 9.10547 5.6875H4.86719C4.8125 6.125 4.8125 6.5625 4.8125 7C4.8125 7.46484 4.8125 7.90234 4.86719 8.3125ZM8.88672 4.375C8.72266 3.71875 8.53125 3.14453 8.28516 2.65234C7.71094 1.53125 7.19141 1.3125 7 1.3125C6.78125 1.3125 6.26172 1.53125 5.6875 2.65234C5.44141 3.14453 5.25 3.71875 5.08594 4.375H8.88672ZM10.418 5.6875C10.4727 6.125 10.5 6.5625 10.5 7C10.5 7.46484 10.4727 7.90234 10.418 8.3125H12.5234C12.6328 7.90234 12.6875 7.46484 12.6875 7C12.6875 6.5625 12.6328 6.125 12.5234 5.6875H10.418ZM9.35156 1.83203C9.73438 2.54297 10.0352 3.41797 10.2266 4.375H12.0312C11.457 3.25391 10.5 2.35156 9.35156 1.83203ZM4.62109 1.83203C3.47266 2.35156 2.51562 3.25391 1.94141 4.375H3.74609C3.9375 3.41797 4.23828 2.54297 4.62109 1.83203ZM1.3125 7C1.3125 7.46484 1.33984 7.90234 1.44922 8.3125H3.55469C3.5 7.90234 3.5 7.46484 3.5 7C3.5 6.5625 3.5 6.125 3.55469 5.6875H1.44922C1.33984 6.125 1.3125 6.5625 1.3125 7ZM12.0312 9.625H10.2266C10.0352 10.6094 9.73438 11.4844 9.35156 12.1953C10.5 11.6758 11.457 10.7734 12.0312 9.625ZM3.74609 9.625H1.94141C2.51562 10.7734 3.47266 11.6758 4.62109 12.1953C4.23828 11.4844 3.9375 10.6094 3.74609 9.625Z\" fill=\"currentColor\" /></svg>;\nexport default SvgSearchGlobe;","import * as React from \"react\";\nconst SvgTrueforgeLogomarkDark = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g clipPath=\"url(#clip0_10581_4008)\"><path d=\"M-0.000793457 0.015625L39.9992 20.0156V40L19.9992 40V80.0156H39.9992V100.016L-0.000793457 120.016V0.015625Z\" fill=\"white\" /><path d=\"M119.999 0L79.9992 20V40H99.9992V80H79.9992V100L119.999 120V0Z\" fill=\"white\" /><path d=\"M59.9955 39.8193C61.054 45.6178 63.1935 50.1614 66.5756 53.5215C69.9439 56.868 74.4722 58.9678 80.2035 60.0088C74.4696 61.0714 69.9413 63.2075 66.5736 66.5752C63.1938 69.955 61.0542 74.5036 59.9955 80.2666C58.9314 74.5031 56.7838 69.9547 53.3988 66.5752C50.026 63.2078 45.4965 61.0704 39.7709 60.0078C45.4938 58.9668 50.0235 56.8676 53.3969 53.5215C56.7841 50.1616 58.9316 45.6182 59.9955 39.8193Z\" fill=\"white\" stroke=\"white\" strokeWidth={1.6} strokeLinejoin=\"round\" /></g><defs><clipPath id=\"clip0_10581_4008\"><rect width={120} height={120} fill=\"white\" /></clipPath></defs></svg>;\nexport default SvgTrueforgeLogomarkDark;","import * as React from \"react\";\nconst SvgTrueforgeLogomarkLight = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 140 140\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g clipPath=\"url(#clip0_10581_1729)\"><path d=\"M-0.000976562 0.0195312L46.6657 23.3529V46.668L23.3324 46.668V93.3529H46.6657V116.686L-0.000976562 140.02V0.0195312Z\" fill=\"#05090E\" /><path d=\"M139.999 0L93.3324 23.3333V46.6667H116.666V93.3333H93.3324V116.667L139.999 140V0Z\" fill=\"#05090E\" /><path d=\"M69.9941 46.4561C71.2291 53.2208 73.7252 58.5213 77.6709 62.4414C81.6 66.345 86.8814 68.7951 93.5664 70.0098C86.8784 71.2497 81.5974 73.7435 77.6689 77.6719C73.7259 81.615 71.2293 86.921 69.9941 93.6445C68.7527 86.9203 66.2461 81.6138 62.2969 77.6709C58.3624 73.7429 53.0791 71.2496 46.4004 70.0098C53.076 68.7952 58.3597 66.3456 62.2949 62.4424C66.2468 58.5225 68.7529 53.2215 69.9941 46.4561Z\" fill=\"#6D58FB\" stroke=\"#6D58FB\" strokeWidth={1.86667} strokeLinejoin=\"round\" /></g><defs><clipPath id=\"clip0_10581_1729\"><rect width={140} height={140} fill=\"white\" /></clipPath></defs></svg>;\nexport default SvgTrueforgeLogomarkLight;","import type React from 'react';\n\nimport { registerIcons } from './IconRegistry.js';\n\nimport Agent2Icon from './agent-2.svg';\nimport AiIcon from './ai.svg';\nimport BrainRegularIcon from './brain-regular.svg';\nimport CompareIcon from './compare.svg';\nimport EmptyIcon from './empty.svg';\nimport McpServerIcon from './mcp-server.svg';\nimport SearchGlobeIcon from './search-globe.svg';\nimport TrueForgeLogomarkDarkIcon from './trueforge-logomark-dark.svg';\nimport TrueForgeLogomarkLightIcon from './trueforge-logomark-light.svg';\n\ntype SvgIcon = React.FC<React.SVGProps<SVGSVGElement>>;\n\nregisterIcons({\n 'mcp-server': McpServerIcon as unknown as SvgIcon,\n 'agent-2': Agent2Icon as unknown as SvgIcon,\n // Prefer the custom agent glyph over Lucide Bot for bot/robot aliases.\n bot: Agent2Icon as unknown as SvgIcon,\n robot: Agent2Icon as unknown as SvgIcon,\n compare: CompareIcon as unknown as SvgIcon,\n ai: AiIcon as unknown as SvgIcon,\n searchGlobe: SearchGlobeIcon as unknown as SvgIcon,\n 'brain-regular': BrainRegularIcon as unknown as SvgIcon,\n empty: EmptyIcon as unknown as SvgIcon,\n 'trueforge-logomark-light': TrueForgeLogomarkLightIcon as unknown as SvgIcon,\n 'trueforge-logomark-dark': TrueForgeLogomarkDarkIcon as unknown as SvgIcon,\n});\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { MCP_AUTH_POPUP_CHANNEL, type McpAuthPopupMessage } from '../../hooks/useMcpAuth.js';\nimport { Icon } from '../../icons/Icon.js';\n\nconst BROADCAST_RETRY_DELAY_MS = 1000;\nconst WINDOW_CLOSE_DELAY_MS = 5000;\n\n/**\n * Prefer `isSuccess` when present; otherwise treat a `code` without `error` as success.\n */\nfunction resolvePopupSuccess(searchParams: URLSearchParams): boolean {\n if (searchParams.get('error')) {\n return false;\n }\n const flag = searchParams.get('isSuccess')?.toLowerCase();\n if (flag === 'true') {\n return true;\n }\n if (flag === 'false') {\n return false;\n }\n const code = searchParams.get('code');\n return code != null && code.length > 0;\n}\n\nconst PostMcpOauthScreen = () => {\n const [result, setResult] = useState<McpAuthPopupMessage | null>();\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const popupUid = searchParams.get('pUid');\n const isSuccess = resolvePopupSuccess(searchParams);\n setResult(popupUid ? { popupUid, isSuccess } : null);\n\n const broadcastResult = () => {\n if (!popupUid) return;\n\n const channel = new BroadcastChannel(MCP_AUTH_POPUP_CHANNEL);\n const message: McpAuthPopupMessage = { popupUid, isSuccess };\n channel.postMessage(message);\n channel.close();\n };\n\n broadcastResult();\n const retryTimeout = window.setTimeout(broadcastResult, BROADCAST_RETRY_DELAY_MS);\n const closeTimeout = window.setTimeout(() => {\n window.close();\n }, WINDOW_CLOSE_DELAY_MS);\n\n return () => {\n window.clearTimeout(retryTimeout);\n window.clearTimeout(closeTimeout);\n };\n }, []);\n\n const isSuccess = !!result?.isSuccess;\n const title =\n result === undefined ? 'Completing authorization' : isSuccess ? 'Authorization successful' : 'Authorization failed';\n const description =\n result === undefined\n ? 'Please wait while the authorization result is confirmed.'\n : result === null\n ? 'The authorization result is invalid. You can close this window and try again.'\n : isSuccess\n ? 'The MCP server is now connected. This window will close automatically.'\n : 'The MCP server could not be authorized. You can close this window and try again.';\n\n return (\n <main className=\"flex min-h-screen items-center justify-center bg-primary-bg p-6\">\n <div className=\"flex w-full max-w-md flex-col items-center gap-3 rounded-2xl border border-border bg-card-bg p-8 text-center shadow-sm\">\n {result === undefined ? (\n <Icon name=\"oauth-loading\" className=\"size-16 animate-spin text-text-secondary\" />\n ) : isSuccess ? (\n <Icon name=\"oauth-success\" className=\"size-16 text-success-bg\" />\n ) : (\n <Icon name=\"oauth-error\" className=\"size-16 text-failure-bg\" />\n )}\n <h1 className=\"text-2xl font-semibold text-text-primary\">{title}</h1>\n <p className=\"text-sm leading-6 text-text-secondary\">{description}</p>\n </div>\n </main>\n );\n};\n\nexport default PostMcpOauthScreen;\n","'use client';\n\nimport {\n ThreadListItemByIndexProvider,\n ThreadListItemMorePrimitive,\n ThreadListItemPrimitive,\n ThreadListPrimitive,\n useAui,\n useAuiState,\n} from '@assistant-ui/react';\nimport { useCallback, useEffect, useMemo, useRef, useState, type ReactNode, type Ref } from 'react';\n\nimport { AgentHistoryFilterButton } from '../atoms/AgentHistoryFilterButton.js';\nimport { auiButtonClass } from '../atoms/lib/buttonClasses.js';\nimport { cn } from '../atoms/lib/cn.js';\nimport { useCompactLayout } from '../atoms/lib/CompactLayoutContext.js';\nimport {\n canReuseMutableShell,\n readThreadAgentName,\n threadListIndicesByRecency,\n threadListItemIsMutable,\n} from '../atoms/lib/threadListMeta.js';\nimport { useIsMobile } from '../atoms/lib/useIsMobile.js';\nimport { BottomSheet } from '../atoms/primitives/BottomSheet.js';\nimport { Icon } from '../icons/Icon.js';\nimport { useOptionalServer } from '../server/ServerContext.js';\nimport { useOptionalShellMode } from '../server/ShellModeContext.js';\nimport { useSlot } from '../theme/SlotsProvider.js';\n\n/**\n * Simplified relative to the reference: renders threads in a single flat list\n * rather than grouping them by Today/Yesterday/Earlier.\n *\n * Delete uses assistant-ui ThreadListItemPrimitive.Delete / ThreadListItemMorePrimitive\n * (adapter.delete → server.deleteSession). Mobile/compact keeps a BottomSheet chrome.\n */\nexport type ThreadListContainerProps = {\n /** Called after New chat or selecting a row — used by stack/drawer chrome. */\n onThreadOpen?: () => void;\n};\n\nconst deleteItemClass =\n 'flex w-full cursor-pointer select-none items-center gap-2 rounded-md px-2 py-1.5 text-sm font-medium text-failure-bg outline-none transition-colors hover:bg-failure-bg/12 hover:text-failure-bg focus:bg-failure-bg/12 focus:text-failure-bg data-[highlighted]:bg-failure-bg/12 data-[highlighted]:text-failure-bg';\n\nfunction ThreadListItemDeleteMenu() {\n const compact = useCompactLayout();\n const isMobile = useIsMobile();\n const [sheetOpen, setSheetOpen] = useState(false);\n const [portalContainer, setPortalContainer] = useState<HTMLElement>();\n const useSheet = isMobile || compact;\n const setTriggerElement = useCallback((element: HTMLButtonElement | null) => {\n const themeRoot = element?.closest('.aui-theme-root');\n setPortalContainer(themeRoot instanceof HTMLElement ? themeRoot : undefined);\n }, []);\n\n const moreButtonClass = auiButtonClass({\n variant: 'ghost',\n size: 'icon',\n className: 'size-7 shrink-0 text-text-secondary hover:bg-transparent hover:text-text-primary',\n });\n\n if (useSheet) {\n return (\n <>\n <button\n type=\"button\"\n aria-label=\"Session actions\"\n title=\"Session actions\"\n aria-haspopup=\"dialog\"\n aria-expanded={sheetOpen}\n className={moreButtonClass}\n onClick={() => setSheetOpen(true)}\n >\n <Icon name=\"ellipsis\" className=\"size-3.5\" />\n </button>\n {sheetOpen ? (\n <BottomSheet open onOpenChange={setSheetOpen} aria-label=\"Session actions\">\n <div className=\"flex flex-col gap-1 p-2\" role=\"menu\">\n <ThreadListItemPrimitive.Delete className={deleteItemClass} onClick={() => setSheetOpen(false)}>\n <Icon name=\"trash\" className=\"size-3.5\" />\n Delete\n </ThreadListItemPrimitive.Delete>\n </div>\n </BottomSheet>\n ) : null}\n </>\n );\n }\n\n return (\n <ThreadListItemMorePrimitive.Root sharedFocusGroup>\n <ThreadListItemMorePrimitive.Trigger\n ref={setTriggerElement}\n aria-label=\"Session actions\"\n title=\"Session actions\"\n className={moreButtonClass}\n >\n <Icon name=\"ellipsis\" className=\"size-3.5\" />\n </ThreadListItemMorePrimitive.Trigger>\n <ThreadListItemMorePrimitive.Content\n portalProps={{ container: portalContainer }}\n align=\"end\"\n sideOffset={4}\n className=\"font-sans-flex z-50 min-w-[8rem] rounded-md border border-border bg-card-bg p-1 text-text-primary shadow-md\"\n >\n <ThreadListItemPrimitive.Delete asChild>\n <ThreadListItemMorePrimitive.Item className={deleteItemClass}>\n <Icon name=\"trash\" className=\"size-3.5\" />\n Delete\n </ThreadListItemMorePrimitive.Item>\n </ThreadListItemPrimitive.Delete>\n </ThreadListItemMorePrimitive.Content>\n </ThreadListItemMorePrimitive.Root>\n );\n}\n\nfunction ThreadListItemRow({\n onThreadOpen,\n canDeleteSession,\n}: {\n onThreadOpen?: () => void;\n canDeleteSession: boolean;\n}) {\n const aui = useAui();\n const shell = useOptionalShellMode();\n const ThreadListRow = useSlot('ThreadListRow');\n const id = useAuiState(s => s.threadListItem.id);\n const remoteId = useAuiState(s => s.threadListItem.remoteId);\n const title = useAuiState(s => s.threadListItem.title);\n const lastMessageAt = useAuiState(s => s.threadListItem.lastMessageAt);\n const custom = useAuiState(s => s.threadListItem.custom);\n const mainThreadId = useAuiState(s => s.threads.mainThreadId);\n const agentName = readThreadAgentName(custom);\n const showDelete = canDeleteSession && remoteId != null;\n const sidebarNavOpen = shell?.libraryOpen === true || shell?.sessionsOpen === true || shell?.schedulesOpen === true;\n\n return (\n <ThreadListItemPrimitive.Root className=\"min-w-0\">\n <ThreadListRow\n title={title ?? 'New Chat'}\n active={id === mainThreadId && !sidebarNavOpen}\n agentName={agentName}\n lastMessageAt={lastMessageAt}\n onSelect={() => {\n onThreadOpen?.();\n shell?.setSettingsOpen(false);\n shell?.setLibraryOpen(false);\n shell?.setSessionsOpen(false);\n shell?.setSchedulesOpen(false);\n\n // Prefer custom.isMutable (session wire); agentName-only is a legacy fallback.\n const sessionMutable = threadListItemIsMutable(custom);\n const sameImmutable =\n !sessionMutable &&\n shell?.mode.status === 'active' &&\n !shell.mode.isMutable &&\n (agentName == null\n ? shell.mode.agentName == null && shell.mode.agentId == null\n : shell.mode.agentName === agentName || shell.mode.agentId === agentName);\n const sameMutable = canReuseMutableShell({\n sessionMutable,\n shellMutable: shell?.mode.status === 'active' && shell.mode.isMutable,\n ...(shell?.mode.status === 'active' && shell.mode.isMutable\n ? { shellAgentName: shell.mode.agentName, shellAgentId: shell.mode.agentId }\n : {}),\n remoteId,\n pendingSessionId: shell?.pendingSessionId,\n });\n\n if ((sameImmutable || sameMutable) && remoteId != null) {\n void Promise.resolve(aui.threads().switchToThread(id)).catch(() => undefined);\n return;\n }\n if (remoteId != null) {\n shell?.openHistorySession({\n sessionId: remoteId,\n isMutable: sessionMutable,\n ...(agentName != null ? { agentName } : {}),\n });\n return;\n }\n void Promise.resolve(aui.threads().switchToThread(id)).catch(() => undefined);\n }}\n actions={showDelete ? <ThreadListItemDeleteMenu /> : undefined}\n />\n </ThreadListItemPrimitive.Root>\n );\n}\n\nfunction useThreadListIndicesByRecency(): number[] {\n const threadIds = useAuiState(s => s.threads.threadIds);\n const threadItems = useAuiState(s => s.threads.threadItems);\n\n return useMemo(() => threadListIndicesByRecency({ threadIds, threadItems }), [threadIds, threadItems]);\n}\n\nfunction ThreadListItemsByRecency({\n onThreadOpen,\n canDeleteSession,\n}: {\n onThreadOpen?: () => void;\n canDeleteSession: boolean;\n}) {\n // Newest-first: remount/switchToThread can append the active session to threadIds.\n const indices = useThreadListIndicesByRecency();\n const threadIds = useAuiState(s => s.threads.threadIds);\n\n return (\n <>\n {indices.map(index => {\n const key = threadIds[index] ?? String(index);\n return (\n <ThreadListItemByIndexProvider key={key} index={index} archived={false}>\n <ThreadListItemRow onThreadOpen={onThreadOpen} canDeleteSession={canDeleteSession} />\n </ThreadListItemByIndexProvider>\n );\n })}\n </>\n );\n}\n\nconst THREAD_LIST_VIEWPORT_SLOT = 'aui_thread-list-viewport';\n/** How close to the bottom (px) before the next sessions page is fetched. */\nconst LOAD_MORE_BOTTOM_PX = 80;\n\nfunction ChatHistorySection({ children, viewportRef }: { children: ReactNode; viewportRef: Ref<HTMLDivElement> }) {\n const [expanded, setExpanded] = useState(true);\n const shell = useOptionalShellMode();\n const showFilter = shell?.isLibraryEnabled === true;\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <div className=\"flex shrink-0 items-center gap-1 px-1 py-1\">\n <button\n type=\"button\"\n aria-expanded={expanded}\n className=\"flex min-w-0 flex-1 items-center gap-1 rounded-md px-1.5 py-1 text-left text-sm font-medium text-text-secondary hover:bg-ghost-button-hover hover:text-text-primary\"\n onClick={() => setExpanded(v => !v)}\n >\n <span className=\"truncate\">Chat History</span>\n <Icon\n name=\"chevron-down\"\n className={cn('size-3.5 shrink-0 transition-transform', !expanded && '-rotate-90')}\n />\n </button>\n {showFilter ? <AgentHistoryFilterButton /> : null}\n </div>\n {expanded ? (\n <div\n ref={viewportRef}\n data-slot={THREAD_LIST_VIEWPORT_SLOT}\n className=\"flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto\"\n >\n {children}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport function ThreadListContainer({ onThreadOpen }: ThreadListContainerProps = {}) {\n const aui = useAui();\n const server = useOptionalServer();\n const isLoading = useAuiState(s => s.threads.isLoading);\n const isLoadingMore = useAuiState(s => s.threads.isLoadingMore);\n const hasMore = useAuiState(s => s.threads.hasMore);\n const threadIds = useAuiState(s => s.threads.threadIds);\n const shell = useOptionalShellMode();\n\n const ThreadListShell = useSlot('ThreadListShell');\n const ThreadListNewButton = useSlot('ThreadListNewButton');\n const AgentsLibraryButton = useSlot('AgentsLibraryButton');\n const SessionsBrowserButton = useSlot('SessionsBrowserButton');\n const SchedulesButton = useSlot('SchedulesButton');\n const ThreadListRowSkeleton = useSlot('ThreadListRowSkeleton');\n const ThreadListEmptyState = useSlot('ThreadListEmptyState');\n\n const viewportRef = useRef<HTMLDivElement>(null);\n const hasMoreRef = useRef(hasMore);\n const auiRef = useRef(aui);\n hasMoreRef.current = hasMore;\n auiRef.current = aui;\n\n const showNewChat = shell?.isNewChatEnabled !== false;\n const isIdle = shell?.mode.status === 'idle';\n const canDeleteSession = typeof server?.deleteSession === 'function';\n\n // Fill an underflowing viewport; once it scrolls, paginate only near the bottom.\n // Re-measure after commit (threadIds / hasMore) instead of rAF-chaining, which\n // raced layout and could drain every remaining listSessions page.\n // The runtime owns request deduplication, so Strict Mode remounts can recheck safely.\n useEffect(() => {\n if (isIdle || isLoading || isLoadingMore) return;\n const viewport = viewportRef.current;\n if (!viewport) return;\n\n let cancelled = false;\n\n const tryLoadMore = () => {\n if (cancelled || !hasMoreRef.current) return;\n if (viewport.clientHeight <= 0) return;\n\n const remaining = viewport.scrollHeight - viewport.scrollTop - viewport.clientHeight;\n if (viewport.scrollHeight > viewport.clientHeight && remaining > LOAD_MORE_BOTTOM_PX) return;\n\n void auiRef.current.threads().loadMore();\n };\n\n viewport.addEventListener('scroll', tryLoadMore, { passive: true });\n const resizeObserver = typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(() => tryLoadMore());\n if (resizeObserver) {\n resizeObserver.observe(viewport);\n } else {\n window.addEventListener('resize', tryLoadMore);\n }\n tryLoadMore();\n\n return () => {\n cancelled = true;\n viewport.removeEventListener('scroll', tryLoadMore);\n resizeObserver?.disconnect();\n if (!resizeObserver) {\n window.removeEventListener('resize', tryLoadMore);\n }\n };\n }, [hasMore, isIdle, isLoading, isLoadingMore, threadIds.length]);\n\n const handleNewChat = () => {\n onThreadOpen?.();\n shell?.setLibraryOpen(false);\n shell?.setSessionsOpen(false);\n if (shell?.isComposerEnabled) {\n shell.openDraft();\n return;\n }\n shell?.setSettingsOpen(false);\n shell?.setSchedulesOpen(false);\n void Promise.resolve(aui.threads().switchToNewThread()).catch(() => undefined);\n };\n\n let listBody: ReactNode;\n if (isIdle) {\n listBody = <ThreadListEmptyState />;\n } else if (isLoading) {\n listBody = <ThreadListRowSkeleton />;\n } else if (threadIds.length === 0) {\n listBody = <ThreadListEmptyState />;\n } else {\n listBody = (\n <ThreadListPrimitive.Root className=\"flex min-h-0 flex-col gap-0.5\">\n <ThreadListItemsByRecency onThreadOpen={onThreadOpen} canDeleteSession={canDeleteSession} />\n </ThreadListPrimitive.Root>\n );\n }\n\n return (\n <ThreadListShell\n header={\n <div className=\"flex flex-col gap-1\">\n {showNewChat ? <ThreadListNewButton onClick={handleNewChat} /> : null}\n <AgentsLibraryButton />\n <SessionsBrowserButton />\n <SchedulesButton />\n </div>\n }\n >\n <ChatHistorySection viewportRef={viewportRef}>\n {listBody}\n {!isIdle && hasMore ? <div className=\"h-4 shrink-0\" aria-hidden /> : null}\n </ChatHistorySection>\n </ThreadListShell>\n );\n}\n","'use client';\n\nimport { useEffect, useId, useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { Icon } from '../icons/Icon.js';\nimport { useOptionalServer } from '../server/ServerContext.js';\nimport { libraryAgentId, useOptionalShellMode } from '../server/ShellModeContext.js';\nimport { auiButtonClass } from './lib/buttonClasses.js';\nimport { cn } from './lib/cn.js';\nimport { useCompactLayout } from './lib/CompactLayoutContext.js';\nimport { themePortalRoot } from './lib/themePortalRoot.js';\nimport { useIsMobile } from './lib/useIsMobile.js';\nimport { useSearchAgentsList } from './lib/useSearchAgentsList.js';\nimport { BottomSheet } from './primitives/BottomSheet.js';\nimport { DropdownMenuItem } from './primitives/DropdownMenu.js';\nimport SearchInput from './primitives/SearchInput.js';\n\n/**\n * Funnel popover for filtering chat history by agent id.\n * Desktop: fixed menu to the right of the funnel. Mobile/compact: bottom sheet.\n */\nexport function AgentHistoryFilterButton() {\n const shell = useOptionalShellMode();\n const server = useOptionalServer();\n const isMobile = useIsMobile();\n const compact = useCompactLayout();\n const useSheet = isMobile || compact;\n\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [menuPos, setMenuPos] = useState<{ top: number; left: number } | null>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const menuId = useId();\n\n const enabled = shell?.isLibraryEnabled === true && server != null;\n const selected = shell?.historyAgentFilter ?? null;\n\n useEffect(() => {\n if (!open) setQuery('');\n }, [open]);\n\n const { agents, isInitialLoading, isSearching, loadingMore, hasMore, listRef, sentinelRef } = useSearchAgentsList({\n enabled: open && enabled,\n query,\n });\n\n // Desktop only: anchor to the right of the funnel; portal escapes sidebar overflow.\n useLayoutEffect(() => {\n if (!open || useSheet) {\n setMenuPos(null);\n return;\n }\n const update = () => {\n const rect = buttonRef.current?.getBoundingClientRect();\n if (!rect) return;\n setMenuPos({ top: rect.top, left: rect.right + 4 });\n };\n update();\n window.addEventListener('resize', update);\n window.addEventListener('scroll', update, true);\n return () => {\n window.removeEventListener('resize', update);\n window.removeEventListener('scroll', update, true);\n };\n }, [open, useSheet]);\n\n useEffect(() => {\n if (!open || useSheet) return;\n const handler = (e: MouseEvent) => {\n const target = e.target as Node;\n if (buttonRef.current?.contains(target) || menuRef.current?.contains(target)) return;\n setOpen(false);\n };\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [open, useSheet]);\n\n if (!enabled) return null;\n\n const pick = (agentId: string | null) => {\n shell?.setHistoryAgentFilter(agentId);\n setOpen(false);\n };\n\n const filterBody = (\n <>\n <div className=\"p-1\" onMouseDown={e => e.stopPropagation()}>\n <SearchInput query={query} setQuery={setQuery} placeholder=\"Search agents\" />\n {isSearching ? (\n <p className=\"text-text-secondary px-1 pt-1 text-[11px]\" role=\"status\">\n Searching…\n </p>\n ) : null}\n </div>\n <div\n ref={listRef}\n className={cn('mt-1 overflow-y-auto', useSheet ? 'min-h-0 flex-1 px-1 pb-2' : 'min-h-48 max-h-64')}\n >\n {query.trim() === '' ? (\n <DropdownMenuItem\n className={cn(\n 'justify-between',\n selected == null && 'bg-dropdown-selected-item-bg text-dropdown-selected-item-text',\n )}\n onClick={() => pick(null)}\n >\n All chats\n {selected == null ? <Icon name=\"check\" className=\"size-3.5 shrink-0\" /> : null}\n </DropdownMenuItem>\n ) : null}\n {isInitialLoading ? (\n <p className=\"px-2 py-3 text-center text-xs text-text-secondary\">Loading…</p>\n ) : agents.length === 0 ? (\n <p className=\"text-text-secondary px-2 py-6 text-center text-xs\" role=\"status\">\n {query.trim() ? `No agents match \"${query.trim()}\".` : 'No agents yet.'}\n </p>\n ) : (\n <>\n {agents.map(agent => {\n const id = libraryAgentId(agent);\n const active = selected === id;\n return (\n <DropdownMenuItem\n key={id}\n className={cn(\n 'justify-between gap-2 text-left',\n active && 'bg-dropdown-selected-item-bg text-dropdown-selected-item-text',\n )}\n onClick={() => pick(id)}\n >\n <span className=\"min-w-0 truncate\">{agent.name}</span>\n {active ? <Icon name=\"check\" className=\"size-3.5 shrink-0\" /> : null}\n </DropdownMenuItem>\n );\n })}\n {hasMore ? (\n <div ref={sentinelRef} className=\"flex h-6 shrink-0 items-center justify-center\" aria-hidden>\n {loadingMore ? (\n <span className=\"text-text-secondary text-[11px]\" role=\"status\">\n Loading more…\n </span>\n ) : null}\n </div>\n ) : null}\n </>\n )}\n </div>\n </>\n );\n\n return (\n <div className=\"relative shrink-0\">\n <button\n ref={buttonRef}\n type=\"button\"\n aria-label={selected != null ? `Filter chat history by agent (${selected})` : 'Filter chat history by agent'}\n aria-haspopup={useSheet ? 'dialog' : 'menu'}\n aria-expanded={open}\n aria-controls={open ? menuId : undefined}\n title=\"Filter by agent\"\n className={auiButtonClass({\n variant: 'ghost',\n size: 'icon',\n className: cn(\n 'relative size-7 shrink-0 text-text-secondary hover:bg-ghost-button-hover hover:text-ghost-button-text',\n selected != null && 'text-text-primary',\n ),\n })}\n onClick={() => setOpen(v => !v)}\n >\n <Icon name=\"funnel\" className=\"size-3.5\" />\n {selected != null ? (\n <span\n className=\"bg-primary-button-bg absolute top-1 right-1 size-1.5 rounded-full\"\n aria-hidden\n data-testid=\"history-filter-active-dot\"\n />\n ) : null}\n </button>\n {useSheet && open ? (\n <BottomSheet open onOpenChange={setOpen} id={menuId} aria-label=\"Filter agents\">\n <div className=\"flex min-h-0 flex-1 flex-col p-2\" role=\"menu\">\n {filterBody}\n </div>\n </BottomSheet>\n ) : null}\n {!useSheet && open && menuPos != null\n ? createPortal(\n <div\n ref={menuRef}\n id={menuId}\n role=\"menu\"\n aria-label=\"Filter agents\"\n style={{ top: menuPos.top, left: menuPos.left }}\n className=\"font-sans-flex fixed z-50 w-56 rounded-md border border-border bg-card-bg p-1 text-text-primary shadow-md\"\n >\n {filterBody}\n </div>,\n themePortalRoot(buttonRef.current),\n )\n : null}\n </div>\n );\n}\n","'use client';\n\nimport { useAuiState, type MessagePrimitive } from '@assistant-ui/react';\nimport { useState, type PropsWithChildren, type ReactNode } from 'react';\n\nimport { useSlot } from '../theme/SlotsProvider.js';\n\nexport type ThreadGroupPart = MessagePrimitive.GroupedParts.GroupPart;\n\nexport function ToolGroupContainer({ children, group }: PropsWithChildren<{ group: ThreadGroupPart }>) {\n const ToolGroupCard = useSlot('ToolGroupCard');\n\n const toolCallCount = group.indices.length;\n\n const active = useAuiState(s => {\n if (s.message.status?.type !== 'running') return false;\n const lastIndex = s.message.parts.length - 1;\n if (lastIndex < 0) return false;\n if (s.message.parts[lastIndex]?.type !== 'tool-call') return false;\n const lastGroupIndex = group.indices[group.indices.length - 1];\n return lastGroupIndex !== undefined && lastIndex >= group.indices[0]! && lastIndex <= lastGroupIndex;\n });\n\n const [expanded, setExpanded] = useState(true);\n const [prevActive, setPrevActive] = useState(active);\n if (active !== prevActive) {\n setPrevActive(active);\n if (active) setExpanded(true);\n }\n\n return (\n <ToolGroupCard\n toolCallCount={toolCallCount}\n expanded={expanded}\n active={active}\n onToggle={() => setExpanded(prev => !prev)}\n >\n {children as ReactNode}\n </ToolGroupCard>\n );\n}\n","'use client';\n\nimport { lazy, Suspense, type ComponentType } from 'react';\n\nimport { SlotsProvider } from '../theme/SlotsProvider.js';\nimport PostMcpOauthScreen from './McpOauthContainer/PostMcpOauthScreen.js';\nimport { ServerInitLoader, TrueForgeUIShell, type TrueForgeUIProps } from './TrueForgeUIShell.js';\n\nexport type { RoutePlace, RoutesConfig } from '../routing/types.js';\nexport type { AgentConfig } from '../server/ShellModeContext.js';\nexport type { TrueForgeBuiltInServerConfig, TrueForgeServerConfig } from '../server/TrueForgeServerConfig.js';\nexport type { LayoutProp } from '../theme/types.js';\nexport type { ChatLayout, TrueForgeUIProps } from './TrueForgeUIShell.js';\n\n// Lazy so `react-router` stays out of the base bundle unless `withRouter` is set.\nconst TrueForgeUIWithRouter = lazy<ComponentType<Omit<TrueForgeUIProps, 'withRouter'>>>(() =>\n import('./TrueForgeUIWithRouter.js').then(m => ({ default: m.TrueForgeUIWithRouter })),\n);\n\n/**\n * Quick-start assistant UI: slots + runtime + a built-in or custom layout.\n * Pass a built-in `server` config, a ready `AgentUIServer`, and optional `agentConfig`.\n */\nexport function TrueForgeUI(props: TrueForgeUIProps) {\n const isMcpAuthScreen =\n typeof window !== 'undefined' && new URLSearchParams(window.location.search).get('screenType') === 'mcp-auth';\n\n // The callback skips server resolution but still inherits host theme and slots.\n if (isMcpAuthScreen) {\n return (\n <SlotsProvider overrides={props.overrides} theme={props.theme}>\n <PostMcpOauthScreen />\n </SlotsProvider>\n );\n }\n\n const { withRouter, ...rest } = props;\n if (withRouter) {\n return (\n <Suspense fallback={<ServerInitLoader className={props.className} />}>\n <TrueForgeUIWithRouter {...rest} />\n </Suspense>\n );\n }\n return <TrueForgeUIShell {...rest} />;\n}\n","'use client';\n\nimport './icons/registerAgentIcons.js';\n\nexport { BrandLogo, resolveBrandChrome, useBrandName } from './theme/brand.js';\nexport type { BrandChrome } from './theme/brand.js';\nexport { defaultSlots } from './theme/defaultSlots.js';\nexport { PRESETS, resolvePresetTokens } from './theme/presets/index.js';\nexport type { PublicAtomSlots as AtomSlots, SlotOverrides } from './theme/publicSlots.js';\nexport { SlotsProvider, useSlot, useThemeMode } from './theme/SlotsProvider.js';\nexport type { ThemeMode } from './theme/SlotsProvider.js';\nexport {\n ThemeProvider,\n useBrand,\n useContentClassNames,\n useOptionalContentClassNames,\n useThemeIcons,\n} from './theme/ThemeProvider.js';\nexport type {\n BrandConfig,\n BrandImage,\n BrandLogoConfig,\n BrandMode,\n ContentClassNames,\n IconMap,\n LayoutProp,\n SemanticTokens,\n ThemeConfig,\n IconProps as ThemeIconProps,\n ThemePreset,\n} from './theme/types.js';\n\nexport { BottomSheet } from './atoms/primitives/BottomSheet.js';\nexport type { BottomSheetProps } from './atoms/primitives/BottomSheet.js';\nexport { Button } from './atoms/primitives/Button.js';\nexport type { ButtonProps, ButtonSize, ButtonVariant, FixedVariantButtonProps } from './atoms/primitives/Button.js';\nexport { CenteredModal } from './atoms/primitives/CenteredModal.js';\nexport type { CenteredModalProps } from './atoms/primitives/CenteredModal.js';\nexport type { IconButtonProps } from './atoms/primitives/IconButton.js';\nexport { PopoverSelect } from './atoms/primitives/PopoverSelect.js';\nexport type { PopoverSelectOption, PopoverSelectProps } from './atoms/primitives/PopoverSelect.js';\nexport { SideDrawer } from './atoms/primitives/SideDrawer.js';\nexport type { SideDrawerAnchor, SideDrawerProps, SideDrawerSize } from './atoms/primitives/SideDrawer.js';\nexport { Switch } from './atoms/primitives/Switch.js';\nexport type { SwitchProps, SwitchSize } from './atoms/primitives/Switch.js';\nexport {\n DEFAULT_TABLE_PAGE_SIZE,\n TABLE_PAGE_SIZE_OPTIONS,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TablePagination,\n TableRow,\n TableTokenPagination,\n} from './atoms/primitives/Table.js';\nexport type {\n TableBodyProps,\n TableCellProps,\n TableHeadProps,\n TableHeaderProps,\n TablePaginationProps,\n TableProps,\n TableRowProps,\n TableTokenPaginationProps,\n} from './atoms/primitives/Table.js';\nexport { ScheduleFormDrawer } from './atoms/schedules/ScheduleFormDrawer.js';\nexport type { ScheduleFormDrawerProps } from './atoms/schedules/ScheduleFormDrawer.js';\nexport { ScheduleFormFields } from './atoms/schedules/ScheduleFormFields.js';\nexport type { ScheduleFormFieldsProps } from './atoms/schedules/ScheduleFormFields.js';\nexport { ScheduleLastRunsCell } from './atoms/schedules/ScheduleLastRunsCell.js';\nexport { ScheduleRunChip } from './atoms/schedules/ScheduleRunChip.js';\nexport { SchedulesPage } from './atoms/schedules/SchedulesPage.js';\nexport { ScheduleStatusBadge } from './atoms/schedules/ScheduleStatusBadge.js';\nexport { TestScheduleScreen } from './atoms/schedules/TestScheduleScreen.js';\nexport type { ScheduleMcpMount, TestScheduleScreenProps } from './atoms/schedules/TestScheduleScreen.js';\nexport { SchedulesButton } from './atoms/SchedulesButton.js';\nexport type { SchedulesButtonProps } from './atoms/SchedulesButton.js';\nexport { Icon } from './icons/Icon.js';\nexport type { IconProps } from './icons/Icon.js';\n\nexport { Avatar, AvatarFallback, AvatarImage } from './atoms/primitives/Avatar.js';\nexport type { AvatarFallbackProps, AvatarImageProps, AvatarProps } from './atoms/primitives/Avatar.js';\n\nexport { AssistantMessageBubble } from './atoms/AssistantMessageBubble.js';\nexport type { AssistantMessageBubbleProps } from './atoms/AssistantMessageBubble.js';\nexport { ChatFileDownload } from './atoms/ChatFileDownload.js';\nexport type { ChatFileDownloadFile, ChatFileDownloadProps } from './atoms/ChatFileDownload.js';\nexport { CodeEditor } from './atoms/CodeEditor.js';\nexport type { CodeEditorProps } from './atoms/CodeEditor.js';\nexport { HistoryLoader } from './atoms/HistoryLoader.js';\nexport type { HistoryLoaderProps } from './atoms/HistoryLoader.js';\nexport { Markdown, preloadMarkdownOpenUI } from './atoms/Markdown.js';\nexport type { MarkdownProps } from './atoms/Markdown.js';\nexport { MessageActionBar } from './atoms/MessageActionBar.js';\nexport type { MessageActionBarProps } from './atoms/MessageActionBar.js';\nexport { MessageErrorBanner } from './atoms/MessageErrorBanner.js';\nexport type { MessageErrorBannerProps } from './atoms/MessageErrorBanner.js';\nexport { MessageIndicator } from './atoms/MessageIndicator.js';\nexport type { MessageIndicatorProps } from './atoms/MessageIndicator.js';\nexport { MessageTimestamp } from './atoms/MessageTimestamp.js';\nexport type { MessageTimestampProps } from './atoms/MessageTimestamp.js';\nexport { MonacoEditorCore } from './atoms/MonacoEditorCore.js';\nexport type { MonacoEditorCoreProps } from './atoms/MonacoEditorCore.js';\nexport { OpenUiFenceBlock } from './atoms/OpenUiFenceBlock.js';\nexport type { OpenUiFenceBlockProps } from './atoms/OpenUiFenceBlock.js';\nexport { SandboxArtifactDownload } from './atoms/SandboxArtifactDownload.js';\nexport type { SandboxArtifactDownloadProps } from './atoms/SandboxArtifactDownload.js';\nexport { ScrollToBottomButton } from './atoms/ScrollToBottomButton.js';\nexport type { ScrollToBottomButtonProps } from './atoms/ScrollToBottomButton.js';\nexport { MessageListSkeleton } from './atoms/Skeletons.js';\nexport type { MessageListSkeletonProps } from './atoms/Skeletons.js';\nexport { SyntaxHighlighter } from './atoms/SyntaxHighlighter.js';\nexport type { SyntaxHighlighterProps } from './atoms/SyntaxHighlighter.js';\nexport { MessageGroup, ThreadComposerAreaShell, ThreadRootShell, ThreadViewportShell } from './atoms/ThreadShell.js';\nexport type {\n MessageGroupProps,\n ThreadComposerAreaShellProps,\n ThreadRootShellProps,\n ThreadViewportShellProps,\n} from './atoms/ThreadShell.js';\nexport { UserMessageActionBar } from './atoms/UserMessageActionBar.js';\nexport type { UserMessageActionBarProps } from './atoms/UserMessageActionBar.js';\nexport { UserMessageBubble } from './atoms/UserMessageBubble.js';\nexport type { UserMessageBubbleProps } from './atoms/UserMessageBubble.js';\nexport { UserMessageEdit } from './atoms/UserMessageEdit.js';\nexport type { UserMessageEditProps } from './atoms/UserMessageEdit.js';\nexport { WelcomeScreen } from './atoms/WelcomeScreen.js';\nexport type { WelcomeScreenProps } from './atoms/WelcomeScreen.js';\n\nexport { AgentStepsCard } from './atoms/adapters/AgentStepsCardAdapter.js';\nexport type { AgentStepsCardProps } from './atoms/adapters/AgentStepsCardAdapter.js';\nexport type {\n AskUserAnswerDraft,\n AnsweredQuestion as AskUserAnsweredQuestion,\n AskUserPromptProps,\n Question as AskUserQuestion,\n AskUserPromptProps as AskUserQuestionCardProps,\n} from './atoms/adapters/AskUserPromptAdapter.js';\nexport type {\n McpAuthPromptProps as McpAuthCardProps,\n McpAuthPromptProps,\n McpServer as McpAuthServer,\n} from './atoms/adapters/McpAuthPromptAdapter.js';\nexport type { ReasoningCardProps } from './atoms/adapters/ReasoningCardAdapter.js';\nexport { AttachmentCard, USER_MESSAGE_ATTACHMENT_PREVIEW_REM } from './atoms/AttachmentCard.js';\nexport type { AttachmentCardProps, AttachmentCardSize } from './atoms/AttachmentCard.js';\nexport { AttachmentPickerButton } from './atoms/AttachmentPickerButton.js';\nexport type { AttachmentPickerButtonProps } from './atoms/AttachmentPickerButton.js';\nexport { AttachmentPreviewDialog } from './atoms/AttachmentPreviewDialog.js';\nexport type { AttachmentPreviewDialogProps } from './atoms/AttachmentPreviewDialog.js';\nexport { ComposerLeftSection, ComposerRightSection, ComposerSendButton } from './atoms/ComposerSections.js';\nexport type {\n ComposerLeftSectionProps,\n ComposerRightSectionProps,\n ComposerSendButtonProps,\n} from './atoms/ComposerSections.js';\nexport { ComposerShell } from './atoms/ComposerShell.js';\nexport type { ComposerShellProps } from './atoms/ComposerShell.js';\nexport { ResumeUnavailable } from './atoms/ResumeUnavailable.js';\nexport type { ResumeUnavailableProps } from './atoms/ResumeUnavailable.js';\nexport { SandboxToolCallCard } from './atoms/SandboxToolCallCard.js';\nexport type { SandboxToolCallCardProps } from './atoms/SandboxToolCallCard.js';\nexport { SubAgentCard } from './atoms/SubAgentCard.js';\nexport type { SubAgentCardProps } from './atoms/SubAgentCard.js';\nexport {\n ThreadListEmptyState,\n ThreadListNewButton,\n ThreadListRowSkeleton,\n ThreadListShell,\n} from './atoms/ThreadListMisc.js';\nexport type {\n ThreadListEmptyStateProps,\n ThreadListNewButtonProps,\n ThreadListRowSkeletonProps,\n ThreadListShellProps,\n} from './atoms/ThreadListMisc.js';\nexport { ThreadListRow } from './atoms/ThreadListRow.js';\nexport type { ThreadListRowProps } from './atoms/ThreadListRow.js';\nexport { Toast, ToastStack } from './atoms/Toast.js';\nexport type { ToastProps, ToastStackProps } from './atoms/Toast.js';\nexport { ToolApprovalBar } from './atoms/ToolApprovalBar.js';\nexport type { ToolApprovalBarProps } from './atoms/ToolApprovalBar.js';\nexport { ToolCallCard } from './atoms/ToolCallCard.js';\nexport type { ToolCallCardProps, ToolCallStatus } from './atoms/ToolCallCard.js';\nexport { ToolCallContentBlock } from './atoms/ToolCallContentBlock.js';\nexport type { ToolCallContentBlockProps } from './atoms/ToolCallContentBlock.js';\nexport { ToolGroupCard } from './atoms/ToolGroupCard.js';\nexport type { ToolGroupCardProps } from './atoms/ToolGroupCard.js';\nexport { AgentStepsContainer } from './containers/AgentStepsContainer.js';\nexport type { AgentStepsContainerProps } from './containers/AgentStepsContainer.js';\nexport { AskUserContainer } from './containers/AskUserContainer.js';\nexport { AssistantMessageContainer } from './containers/AssistantMessageContainer.js';\nexport { AssistantTextContainer } from './containers/AssistantTextContainer.js';\nexport {\n ComposerAttachmentPickerContainer,\n ComposerAttachmentsContainer,\n MessageAttachmentsContainer,\n} from './containers/AttachmentsContainer.js';\nexport { ComposerContainer } from './containers/ComposerContainer.js';\nexport type { ComposerContainerProps } from './containers/ComposerContainer.js';\nexport { CustomActionContainer } from './containers/CustomActionContainer.js';\nexport { HistoryLoaderContainer } from './containers/HistoryLoaderContainer.js';\nexport { McpAuthContainer } from './containers/McpAuthContainer.js';\nexport { default as PostMcpOauthScreen } from './containers/McpOauthContainer/PostMcpOauthScreen.js';\nexport { ReasoningContainer } from './containers/ReasoningContainer.js';\nexport { ResumeUnavailableContainer } from './containers/ResumeUnavailableContainer.js';\nexport { Thread } from './containers/Thread.js';\nexport { ThreadContainer } from './containers/ThreadContainer.js';\nexport type { ThreadContainerProps } from './containers/ThreadContainer.js';\nexport { ThreadListContainer } from './containers/ThreadListContainer.js';\nexport type { ThreadListContainerProps } from './containers/ThreadListContainer.js';\nexport { ToasterProvider, useToaster, useToasterOptional } from './containers/ToasterContainer.js';\nexport { ToolApprovalContainer } from './containers/ToolApprovalContainer.js';\nexport type { ToolApprovalOption } from './containers/ToolApprovalContainer.js';\nexport { ToolCallContainer } from './containers/ToolCallContainer.js';\nexport { ToolCallContentBlockContainer } from './containers/ToolCallContentBlockContainer.js';\nexport { ToolGroupContainer } from './containers/ToolGroupContainer.js';\nexport type { ThreadGroupPart } from './containers/ToolGroupContainer.js';\nexport { TrueForgeUI } from './containers/TrueForgeUI.js';\nexport type {\n ChatLayout,\n RoutePlace,\n RoutesConfig,\n TrueForgeBuiltInServerConfig,\n TrueForgeServerConfig,\n TrueForgeUIProps,\n} from './containers/TrueForgeUI.js';\nexport { TrueFoundryChatProvider } from './containers/TrueFoundryChatProvider.js';\nexport type { TrueFoundryChatProviderProps } from './containers/TrueFoundryChatProvider.js';\nexport { UserEditComposerContainer } from './containers/UserEditComposerContainer.js';\nexport { UserMessageContainer } from './containers/UserMessageContainer.js';\nexport { ComposerBusyProvider, useComposerBusyState } from './hooks/useComposerBusyState.js';\nexport type { ComposerBusyState } from './hooks/useComposerBusyState.js';\nexport { threadHasPendingMcpAuth, useComposerPauseView } from './hooks/useComposerPauseView.js';\nexport type { ComposerPauseView, ThreadPauseState } from './hooks/useComposerPauseView.js';\nexport { MCP_AUTH_POPUP_CHANNEL, useMCPAuth } from './hooks/useMcpAuth.js';\nexport type { McpAuthCallback, McpAuthPopupMessage, UseMCPAuthOptions } from './hooks/useMcpAuth.js';\n\n// Curated chrome hooks (same instance as the SDK runtime). Deep primitives: install @assistant-ui/react.\nexport { useAui, useAuiState } from './assistant-ui.js';\nexport type { AssistantState } from './assistant-ui.js';\nexport { useTheme } from './theme/useTheme.js';\n\n// Runtime / server — consumer surface.\nexport {\n mergeAgentSpec,\n trueFoundryAttachmentAdapter,\n useTrueFoundryAgentRuntime,\n useTrueFoundryAgentSpec,\n useTrueFoundryCancel,\n useTrueFoundryDownloadSandboxFile,\n useTrueFoundryHistoryPagination,\n useTrueFoundryMcpAuth,\n useTrueFoundryRespondToToolApproval,\n useTrueFoundryToolResponses,\n useTrueFoundryTurnId,\n useTrueFoundryUpdateAgentSpec,\n} from '@truefoundry/assistant-ui-runtime';\nexport type {\n DraftAgentConfig,\n NamedAgentConfig,\n TrueFoundryAgentConfig,\n UseTrueFoundryAgentRuntimeOptions,\n} from '@truefoundry/assistant-ui-runtime';\n\n// Server port types + factory\nexport { ClearChatButton } from './atoms/ClearChatButton.js';\nexport {\n IS_CREATE_AGENT_METADATA_KEY,\n isCreateAgentMetadataValue,\n readSessionIsCreateAgent,\n sessionIsCreateAgent,\n} from './atoms/lib/sessionCreateAgent.js';\nexport { SelectAgentEmptyState } from './atoms/SelectAgentEmptyState.js';\nexport { ShellActionsActionSlot } from './atoms/ShellActionsActionSlot.js';\nexport { createTrueFoundryServer } from './server/createTrueFoundryServer.js';\nexport type { CreateTrueFoundryServerOptions, TrueFoundryServer } from './server/createTrueFoundryServer.js';\nexport {\n CustomActionRenderersProvider,\n useOptionalCustomActionRenderers,\n} from './server/CustomActionRenderersContext.js';\nexport type { CustomActionRendererProps, CustomActionRenderers } from './server/CustomActionRenderersContext.js';\nexport {\n ServerProvider,\n useAgentMetricsServer,\n useAgentSessionsServer,\n useCatalogServer,\n useOptionalAgentMetricsServer,\n useOptionalAgentSessionsServer,\n useOptionalCatalogServer,\n useOptionalScheduleServer,\n useOptionalServer,\n useScheduleServer,\n useServer,\n useServerCapabilities,\n} from './server/ServerContext.js';\nexport {\n DEFAULT_AGENT_CONFIG,\n ShellModeProvider,\n libraryAgentId,\n shellIsCreateAgent,\n shellIsMutable,\n useOptionalShellMode,\n useShellMode,\n} from './server/ShellModeContext.js';\nexport type { AgentConfig, SelectLibraryAgentRequest, ShellMode } from './server/ShellModeContext.js';\nexport type {\n AgentBuilderCapabilitiesResponse,\n AgentBuilderServer,\n AgentChatServer,\n AgentDetail,\n AgentLibraryEntry,\n AgentMetricChartData,\n AgentMetricChartDataRequest,\n AgentMetricChartDefinition,\n AgentMetricChartType,\n AgentMetricGraph,\n AgentMetricGraphLine,\n AgentMetricMeter,\n AgentMetricPoint,\n AgentMetricRangeRequest,\n AgentMetricsServer,\n AgentSessionsServer,\n AgentSkill,\n AgentSpec,\n AgentUIServer,\n ApprovalDecision,\n AuthenticateConnectorRequest,\n CatalogServer,\n CodeSnippet,\n CodeSnippetSampleCode,\n ConnectorAuth,\n ConnectorAuthApiKey,\n ConnectorAuthNone,\n ConnectorAuthOAuth,\n ConnectorAuthPublic,\n ConnectorAuthPublicApiKey,\n ConnectorAuthPublicNone,\n ConnectorAuthPublicOAuth,\n ConnectorAuthType,\n ConnectorAuthenticationResult,\n ConnectorBase,\n ConnectorCatalogEntry,\n ConnectorCatalogServer,\n ConnectorConfigBase,\n ConnectorState,\n CreateConnectorRequest,\n CreateModelProviderRequest,\n CreateSandboxProviderRequest,\n CreateSessionRequest,\n CreateSkillRequest,\n CreateSkillRequestBase,\n DefinedSkill,\n GithubSkill,\n ImportGithubSkillRequest,\n ListResult,\n ListSessionEventsParams,\n ListSessionsOrder,\n ListSessionsParams,\n McpServerMount,\n Model,\n ModelCatalogServer,\n ModelEntry,\n ModelParams,\n ModelProperties,\n ModelProviderBase,\n ModelProviderCatalogEntry,\n ModelProviderConfigBase,\n ModelSelection,\n ModelSelectorEntry,\n PageParams,\n PreviousTurnIdInput,\n ProviderEntry,\n ProviderType,\n RegistrySkill,\n SandboxCatalogServer,\n SandboxProviderBase,\n SandboxProviderCatalogEntry,\n SandboxProviderConfig,\n SandboxProviderListEntry,\n SandboxSnapshotSyncStatus,\n SaveAgentRequest,\n SaveAgentResult,\n SearchAgentsParams,\n SelectRegistrySkillRequest,\n Session,\n SessionEventItem,\n SessionListEntry,\n SessionListMetrics,\n SkillBase,\n SkillCatalogEntry,\n SkillCatalogServer,\n SkillConfigBase,\n SkillMount,\n ToolBase,\n Turn,\n TurnDoneMetrics,\n TurnInputItem,\n TurnState,\n TurnStreamData,\n TurnStreamingEvent,\n UpdateConnectorRequest,\n UpdateModelProviderRequest,\n UpdateSandboxProviderRequest,\n UpdateSessionRequest,\n UserMessage,\n UserMessageContent,\n UserToolApprovalEvent,\n UserToolResponseEvent,\n} from './server/types.js';\n\nexport { AgentCodeBlock } from './atoms/agent-details/AgentCodeBlock.js';\nexport { AgentDetailsHeader } from './atoms/agent-details/AgentDetailsHeader.js';\nexport { AgentDetailsPage } from './atoms/agent-details/AgentDetailsPage.js';\nexport { AgentDetailsTabs } from './atoms/agent-details/AgentDetailsTabs.js';\nexport { AgentDetailsUnavailable } from './atoms/agent-details/AgentDetailsUnavailable.js';\nexport { AgentMetricCard } from './atoms/agent-details/AgentMetricCard.js';\nexport { AgentMetricChart } from './atoms/agent-details/AgentMetricChart.js';\nexport { AgentMetricsTimeRangeFilter } from './atoms/agent-details/AgentMetricsTimeRangeFilter.js';\nexport { AgentMetricsView } from './atoms/agent-details/AgentMetricsView.js';\nexport { AgentOverviewCard } from './atoms/agent-details/AgentOverviewCard.js';\nexport type {\n AgentCodeBlockProps,\n AgentCodeSnippetsProps,\n AgentDetailsHeaderProps,\n AgentDetailsPageProps,\n AgentDetailsTab,\n AgentDetailsTabsProps,\n AgentDetailsUnavailableProps,\n AgentMetricCardProps,\n AgentMetricChartProps,\n AgentMetricChartResult,\n AgentMetricsProps,\n AgentMetricsTimeRangeFilterProps,\n AgentMetricsViewProps,\n AgentOverviewCardProps,\n AgentOverviewProps,\n AgentSessionDetailHeaderProps,\n AgentSessionEventTimelineChartProps,\n AgentSessionEventTimelineProps,\n AgentSessionListRowProps,\n AgentSessionMetricsStripProps,\n AgentSessionTurnHeaderProps,\n AgentSessionsProps,\n} from './atoms/agent-details/types.js';\nexport { AgentMetricsContainer } from './containers/AgentMetricsContainer.js';\nexport type { SessionEventTimelineSegment, SessionEventType } from './utils/sessionEventTimeline.js';\nexport type { SessionTurnView } from './utils/sessionTurnViews.js';\n\n// Utils\nexport { computeAgentStepsSplit } from './utils/computeAgentStepsSplit.js';\nexport type { AgentStepPart, AgentStepsSplitResult } from './utils/computeAgentStepsSplit.js';\nexport { getErrorMessage } from './utils/getErrorMessage.js';\n\nexport { AgentSessionsFilters } from './atoms/agent-details/AgentSessionsFilters.js';\nexport type { AgentSessionsFiltersProps } from './atoms/agent-details/AgentSessionsFilters.js';\nexport { SessionsPage } from './atoms/agent-details/SessionsPage.js';\nexport { AgentsLibrary } from './atoms/AgentsLibrary.js';\nexport type { AgentsLibraryProps } from './atoms/AgentsLibrary.js';\nexport { AgentsLibraryButton } from './atoms/AgentsLibraryButton.js';\nexport type { AgentsLibraryButtonProps } from './atoms/AgentsLibraryButton.js';\nexport { AgentConfigEditors } from './atoms/draft/AgentConfigEditors.js';\nexport type { AgentConfigEditor, AgentConfigEditorsProps } from './atoms/draft/AgentConfigEditors.js';\nexport { AgentConfigPanel, AgentConfigSection } from './atoms/draft/AgentConfigPanel.js';\nexport type { AgentConfigPanelProps } from './atoms/draft/AgentConfigPanel.js';\nexport { AgentInstructionsDrawer } from './atoms/draft/AgentInstructionsDrawer.js';\nexport type { AgentInstructionsDrawerProps } from './atoms/draft/AgentInstructionsDrawer.js';\nexport { AgentMcpEditorContent } from './atoms/draft/AgentMcpEditorContent.js';\nexport type { AgentMcpEditorContentProps } from './atoms/draft/AgentMcpEditorContent.js';\nexport { AgentModelConfigModal } from './atoms/draft/AgentModelConfigModal.js';\nexport type { AgentModelConfigModalProps } from './atoms/draft/AgentModelConfigModal.js';\nexport { AgentModelEditorContent } from './atoms/draft/AgentModelEditorContent.js';\nexport type { AgentModelEditorContentProps } from './atoms/draft/AgentModelEditorContent.js';\nexport { AgentModelSettingsContent } from './atoms/draft/AgentModelSettingsContent.js';\nexport type { AgentModelSettingsContentProps } from './atoms/draft/AgentModelSettingsContent.js';\nexport { AgentResourceConfigModal } from './atoms/draft/AgentResourceConfigModal.js';\nexport type { AgentResourceConfigModalProps } from './atoms/draft/AgentResourceConfigModal.js';\nexport { AgentResourceEditorContent } from './atoms/draft/AgentResourceEditorContent.js';\nexport type { AgentResourceEditorContentProps } from './atoms/draft/AgentResourceEditorContent.js';\nexport { AgentRuntimeConfigFields } from './atoms/draft/AgentRuntimeConfigFields.js';\nexport type { AgentRuntimeConfigFieldsProps } from './atoms/draft/AgentRuntimeConfigFields.js';\nexport { AgentRuntimeConfigModal } from './atoms/draft/AgentRuntimeConfigModal.js';\nexport type { AgentRuntimeConfigModalProps } from './atoms/draft/AgentRuntimeConfigModal.js';\nexport { AgentRuntimeEditorContent } from './atoms/draft/AgentRuntimeEditorContent.js';\nexport type { AgentRuntimeEditorContentProps } from './atoms/draft/AgentRuntimeEditorContent.js';\nexport { AgentSkillsEditorContent } from './atoms/draft/AgentSkillsEditorContent.js';\nexport type { AgentSkillsEditorContentProps } from './atoms/draft/AgentSkillsEditorContent.js';\nexport { DraftAgentConfigTrigger } from './atoms/draft/DraftAgentConfigTrigger.js';\nexport type { DraftAgentConfigTriggerProps } from './atoms/draft/DraftAgentConfigTrigger.js';\nexport { DraftCapabilitiesPanel } from './atoms/draft/DraftCapabilitiesPanel.js';\nexport { DraftCatalogProvider, useDraftCatalog } from './atoms/draft/DraftCatalogProvider.js';\nexport { DraftComposerLeftSection, DraftComposerRightSection } from './atoms/draft/DraftComposerSections.js';\nexport { DraftCompositeSelector } from './atoms/draft/DraftCompositeSelector.js';\nexport type { DraftCompositeSelectorProps } from './atoms/draft/DraftCompositeSelector.js';\nexport { DraftModelSelector } from './atoms/draft/DraftModelSelector.js';\nexport type { DraftModelSelectorProps } from './atoms/draft/DraftModelSelector.js';\nexport { SaveAgentButton } from './atoms/SaveAgentButton.js';\nexport type { SaveAgentButtonProps } from './atoms/SaveAgentButton.js';\nexport { SaveAgentForm } from './atoms/SaveAgentForm.js';\nexport type { SaveAgentFormProps } from './atoms/SaveAgentForm.js';\nexport { SaveAgentFormFields } from './atoms/SaveAgentFormFields.js';\nexport type { SaveAgentFormFieldsProps } from './atoms/SaveAgentFormFields.js';\nexport { SessionsBrowserButton } from './atoms/SessionsBrowserButton.js';\nexport type { SessionsBrowserButtonProps } from './atoms/SessionsBrowserButton.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,WAAW;AACgH;AAAvI,IAAM,YAAY,WAAS,oBAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO,8BAAC,UAAK,GAAE,43CAA23C,MAAK,gBAAe,GAAE;AAChiD,IAAO,kBAAQ;;;ACFf,YAAYA,YAAW;AAC4G,SAAiB,OAAAC,MAAjB;AAAnI,IAAM,QAAQ,WAAS,gBAAAA,KAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO,+BAAC,OAAE,SAAS,KAAK;AAAA,kBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,6jBAA4jB,MAAK,gBAAe;AAAA,EAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,4pBAA2pB,MAAK,gBAAe;AAAA,EAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,0oBAAyoB,MAAK,gBAAe;AAAA,EAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,mnBAAknB,MAAK,gBAAe;AAAA,EAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,ytCAAwtC,MAAK,gBAAe;AAAA,GAAE,GAAI;AACtpI,IAAO,aAAQ;;;ACFf,YAAYC,YAAW;AACsH,gBAAAC,YAAA;AAA7I,IAAM,kBAAkB,WAAS,gBAAAA,KAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO,0BAAAA,KAAC,UAAK,GAAE,6uFAA4uF,MAAK,gBAAe,GAAE;AACv5F,IAAO,wBAAQ;;;ACFf,YAAYC,YAAW;AACiH,gBAAAC,YAAA;AAAxI,IAAM,aAAa,WAAS,gBAAAA,KAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO,0BAAAA,KAAC,UAAK,GAAE,ogBAAmgB,MAAK,gBAAe,GAAE;AACzqB,IAAO,kBAAQ;;;ACFf,YAAYC,YAAW;AAC+G,gBAAAC,MAAyzB,QAAAC,aAAzzB;AAAtI,IAAM,WAAW,WAAS,gBAAAA,MAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO;AAAA,kBAAAD,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,uEAAsE,MAAK,WAAU;AAAA,EAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,iFAAgF,MAAK,WAAU;AAAA,EAAE,gBAAAA,KAAC,UAAK,GAAE,sDAAqD,MAAK,oCAAmC;AAAA,EAAE,gBAAAA,KAAC,UAAK,GAAE,qDAAoD,MAAK,WAAU;AAAA,EAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,mDAAkD,MAAK,WAAU;AAAA,EAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,+DAA8D,MAAK,WAAU;AAAA,EAAE,gBAAAA,KAAC,UAAK,GAAE,qGAAoG,MAAK,WAAU;AAAA,EAAE,gBAAAA,KAAC,UAAK,0BAAAC,MAAC,oBAAe,IAAG,8BAA6B,IAAI,SAAS,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,eAAc,kBAAiB;AAAA,oBAAAD,KAAC,UAAK,WAAU,WAAU;AAAA,IAAE,gBAAAA,KAAC,UAAK,QAAQ,GAAG,WAAU,WAAU;AAAA,KAAE,GAAiB;AAAA,GAAO;AAC5pC,IAAO,gBAAQ;;;ACFf,YAAYE,YAAW;AAC2H,SAAoC,OAAAC,MAApC,QAAAC,aAAA;AAAlJ,IAAM,eAAe,WAAS,gBAAAA,MAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,aAAY,MAAK,gBAAe,OAAM,8BAA8B,GAAG,OAAO;AAAA,kBAAAA,MAAC,OAAE,UAAS,yBAAwB;AAAA,oBAAAD,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,y9EAAw9E,MAAK,gBAAe;AAAA,IAAE,gBAAAA,KAAC,UAAK,UAAS,WAAU,UAAS,WAAU,GAAE,qsCAAosC,MAAK,gBAAe;AAAA,KAAE;AAAA,EAAI,gBAAAA,KAAC,UAAK,0BAAAA,KAAC,cAAS,IAAG,mBAAkB,0BAAAA,KAAC,UAAK,OAAO,IAAI,QAAQ,IAAI,MAAK,SAAQ,GAAE,GAAW;AAAA,GAAO;AACjkI,IAAO,qBAAQ;;;ACFf,YAAYE,YAAW;AACqH,gBAAAC,YAAA;AAA5I,IAAM,iBAAiB,WAAS,gBAAAA,KAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,aAAY,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO,0BAAAA,KAAC,UAAK,GAAE,6/CAA4/C,MAAK,gBAAe,GAAE;AACtqD,IAAO,uBAAQ;;;ACFf,YAAYC,YAAW;AACiI,SAAqC,OAAAC,MAArC,QAAAC,aAAA;AAAxJ,IAAM,2BAA2B,WAAS,gBAAAA,MAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,eAAc,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO;AAAA,kBAAAA,MAAC,OAAE,UAAS,0BAAyB;AAAA,oBAAAD,KAAC,UAAK,GAAE,+GAA8G,MAAK,SAAQ;AAAA,IAAE,gBAAAA,KAAC,UAAK,GAAE,kEAAiE,MAAK,SAAQ;AAAA,IAAE,gBAAAA,KAAC,UAAK,GAAE,iZAAgZ,MAAK,SAAQ,QAAO,SAAQ,aAAa,KAAK,gBAAe,SAAQ;AAAA,KAAE;AAAA,EAAI,gBAAAA,KAAC,UAAK,0BAAAA,KAAC,cAAS,IAAG,oBAAmB,0BAAAA,KAAC,UAAK,OAAO,KAAK,QAAQ,KAAK,MAAK,SAAQ,GAAE,GAAW;AAAA,GAAO;AACn+B,IAAO,kCAAQ;;;ACFf,YAAYE,YAAW;AACkI,SAAqC,OAAAC,MAArC,QAAAC,aAAA;AAAzJ,IAAM,4BAA4B,WAAS,gBAAAA,MAAC,SAAI,OAAM,OAAM,QAAO,OAAM,SAAQ,eAAc,MAAK,QAAO,OAAM,8BAA8B,GAAG,OAAO;AAAA,kBAAAA,MAAC,OAAE,UAAS,0BAAyB;AAAA,oBAAAD,KAAC,UAAK,GAAE,wHAAuH,MAAK,WAAU;AAAA,IAAE,gBAAAA,KAAC,UAAK,GAAE,qFAAoF,MAAK,WAAU;AAAA,IAAE,gBAAAA,KAAC,UAAK,GAAE,8YAA6Y,MAAK,WAAU,QAAO,WAAU,aAAa,SAAS,gBAAe,SAAQ;AAAA,KAAE;AAAA,EAAI,gBAAAA,KAAC,UAAK,0BAAAA,KAAC,cAAS,IAAG,oBAAmB,0BAAAA,KAAC,UAAK,OAAO,KAAK,QAAQ,KAAK,MAAK,SAAQ,GAAE,GAAW;AAAA,GAAO;AACzgC,IAAO,mCAAQ;;;ACcf,cAAc;AAAA,EACZ,cAAc;AAAA,EACd,WAAW;AAAA;AAAA,EAEX,KAAK;AAAA,EACL,OAAO;AAAA,EACP,SAAS;AAAA,EACT,IAAI;AAAA,EACJ,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,OAAO;AAAA,EACP,4BAA4B;AAAA,EAC5B,2BAA2B;AAC7B,CAAC;;;AC3BD,SAAS,WAAW,gBAAgB;AAsE9B,SAEI,OAAAE,OAFJ,QAAAC,aAAA;AAjEN,IAAM,2BAA2B;AACjC,IAAM,wBAAwB;AAK9B,SAAS,oBAAoB,cAAwC;AACnE,MAAI,aAAa,IAAI,OAAO,GAAG;AAC7B,WAAO;AAAA,EACT;AACA,QAAM,OAAO,aAAa,IAAI,WAAW,GAAG,YAAY;AACxD,MAAI,SAAS,QAAQ;AACnB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,SAAS;AACpB,WAAO;AAAA,EACT;AACA,QAAM,OAAO,aAAa,IAAI,MAAM;AACpC,SAAO,QAAQ,QAAQ,KAAK,SAAS;AACvC;AAEA,IAAM,qBAAqB,MAAM;AAC/B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAqC;AAEjE,YAAU,MAAM;AACd,UAAM,eAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM;AAC/D,UAAM,WAAW,aAAa,IAAI,MAAM;AACxC,UAAMC,aAAY,oBAAoB,YAAY;AAClD,cAAU,WAAW,EAAE,UAAU,WAAAA,WAAU,IAAI,IAAI;AAEnD,UAAM,kBAAkB,MAAM;AAC5B,UAAI,CAAC,SAAU;AAEf,YAAM,UAAU,IAAI,iBAAiB,sBAAsB;AAC3D,YAAM,UAA+B,EAAE,UAAU,WAAAA,WAAU;AAC3D,cAAQ,YAAY,OAAO;AAC3B,cAAQ,MAAM;AAAA,IAChB;AAEA,oBAAgB;AAChB,UAAM,eAAe,OAAO,WAAW,iBAAiB,wBAAwB;AAChF,UAAM,eAAe,OAAO,WAAW,MAAM;AAC3C,aAAO,MAAM;AAAA,IACf,GAAG,qBAAqB;AAExB,WAAO,MAAM;AACX,aAAO,aAAa,YAAY;AAChC,aAAO,aAAa,YAAY;AAAA,IAClC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,YAAY,CAAC,CAAC,QAAQ;AAC5B,QAAM,QACJ,WAAW,SAAY,6BAA6B,YAAY,6BAA6B;AAC/F,QAAM,cACJ,WAAW,SACP,6DACA,WAAW,OACT,kFACA,YACE,2EACA;AAEV,SACE,gBAAAF,MAAC,UAAK,WAAU,mEACd,0BAAAC,MAAC,SAAI,WAAU,0HACZ;AAAA,eAAW,SACV,gBAAAD,MAAC,QAAK,MAAK,iBAAgB,WAAU,4CAA2C,IAC9E,YACF,gBAAAA,MAAC,QAAK,MAAK,iBAAgB,WAAU,2BAA0B,IAE/D,gBAAAA,MAAC,QAAK,MAAK,eAAc,WAAU,2BAA0B;AAAA,IAE/D,gBAAAA,MAAC,QAAG,WAAU,4CAA4C,iBAAM;AAAA,IAChE,gBAAAA,MAAC,OAAE,WAAU,yCAAyC,uBAAY;AAAA,KACpE,GACF;AAEJ;AAEA,IAAO,6BAAQ;;;ACrFf;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAAG;AAAA,EACA,eAAAC;AAAA,OACK;AACP,SAAS,aAAa,aAAAC,YAAW,SAAS,UAAAC,SAAQ,YAAAC,iBAA0C;;;ACR5F,SAAS,aAAAC,YAAW,OAAO,iBAAiB,QAAQ,YAAAC,iBAAgB;AACpE,SAAS,oBAAoB;AAqFvB,SA+BI,UA9BF,OAAAC,OADF,QAAAC,aAAA;AAlEC,SAAS,2BAA2B;AACzC,QAAM,QAAQ,qBAAqB;AACnC,QAAM,SAAS,kBAAkB;AACjC,QAAM,WAAW,YAAY;AAC7B,QAAM,UAAU,iBAAiB;AACjC,QAAM,WAAW,YAAY;AAE7B,QAAM,CAAC,MAAM,OAAO,IAAIC,UAAS,KAAK;AACtC,QAAM,CAAC,OAAO,QAAQ,IAAIA,UAAS,EAAE;AACrC,QAAM,CAAC,SAAS,UAAU,IAAIA,UAA+C,IAAI;AACjF,QAAM,YAAY,OAA0B,IAAI;AAChD,QAAM,UAAU,OAAuB,IAAI;AAC3C,QAAM,SAAS,MAAM;AAErB,QAAM,UAAU,OAAO,qBAAqB,QAAQ,UAAU;AAC9D,QAAM,WAAW,OAAO,sBAAsB;AAE9C,EAAAC,WAAU,MAAM;AACd,QAAI,CAAC,KAAM,UAAS,EAAE;AAAA,EACxB,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,EAAE,QAAQ,kBAAkB,aAAa,aAAa,SAAS,SAAS,YAAY,IAAI,oBAAoB;AAAA,IAChH,SAAS,QAAQ;AAAA,IACjB;AAAA,EACF,CAAC;AAGD,kBAAgB,MAAM;AACpB,QAAI,CAAC,QAAQ,UAAU;AACrB,iBAAW,IAAI;AACf;AAAA,IACF;AACA,UAAM,SAAS,MAAM;AACnB,YAAM,OAAO,UAAU,SAAS,sBAAsB;AACtD,UAAI,CAAC,KAAM;AACX,iBAAW,EAAE,KAAK,KAAK,KAAK,MAAM,KAAK,QAAQ,EAAE,CAAC;AAAA,IACpD;AACA,WAAO;AACP,WAAO,iBAAiB,UAAU,MAAM;AACxC,WAAO,iBAAiB,UAAU,QAAQ,IAAI;AAC9C,WAAO,MAAM;AACX,aAAO,oBAAoB,UAAU,MAAM;AAC3C,aAAO,oBAAoB,UAAU,QAAQ,IAAI;AAAA,IACnD;AAAA,EACF,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,QAAQ,SAAU;AACvB,UAAM,UAAU,CAAC,MAAkB;AACjC,YAAM,SAAS,EAAE;AACjB,UAAI,UAAU,SAAS,SAAS,MAAM,KAAK,QAAQ,SAAS,SAAS,MAAM,EAAG;AAC9E,cAAQ,KAAK;AAAA,IACf;AACA,aAAS,iBAAiB,aAAa,OAAO;AAC9C,WAAO,MAAM,SAAS,oBAAoB,aAAa,OAAO;AAAA,EAChE,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,MAAI,CAAC,QAAS,QAAO;AAErB,QAAM,OAAO,CAAC,YAA2B;AACvC,WAAO,sBAAsB,OAAO;AACpC,YAAQ,KAAK;AAAA,EACf;AAEA,QAAM,aACJ,gBAAAF,MAAA,YACE;AAAA,oBAAAA,MAAC,SAAI,WAAU,OAAM,aAAa,OAAK,EAAE,gBAAgB,GACvD;AAAA,sBAAAD,MAAC,uBAAY,OAAc,UAAoB,aAAY,iBAAgB;AAAA,MAC1E,cACC,gBAAAA,MAAC,OAAE,WAAU,6CAA4C,MAAK,UAAS,6BAEvE,IACE;AAAA,OACN;AAAA,IACA,gBAAAC;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAW,GAAG,wBAAwB,WAAW,6BAA6B,mBAAmB;AAAA,QAEhG;AAAA,gBAAM,KAAK,MAAM,KAChB,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT;AAAA,gBACA,YAAY,QAAQ;AAAA,cACtB;AAAA,cACA,SAAS,MAAM,KAAK,IAAI;AAAA,cACzB;AAAA;AAAA,gBAEE,YAAY,OAAO,gBAAAD,MAAC,QAAK,MAAK,SAAQ,WAAU,qBAAoB,IAAK;AAAA;AAAA;AAAA,UAC5E,IACE;AAAA,UACH,mBACC,gBAAAA,MAAC,OAAE,WAAU,qDAAoD,2BAAQ,IACvE,OAAO,WAAW,IACpB,gBAAAA,MAAC,OAAE,WAAU,qDAAoD,MAAK,UACnE,gBAAM,KAAK,IAAI,oBAAoB,MAAM,KAAK,CAAC,OAAO,kBACzD,IAEA,gBAAAC,MAAA,YACG;AAAA,mBAAO,IAAI,WAAS;AACnB,oBAAM,KAAK,eAAe,KAAK;AAC/B,oBAAM,SAAS,aAAa;AAC5B,qBACE,gBAAAA;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAW;AAAA,oBACT;AAAA,oBACA,UAAU;AAAA,kBACZ;AAAA,kBACA,SAAS,MAAM,KAAK,EAAE;AAAA,kBAEtB;AAAA,oCAAAD,MAAC,UAAK,WAAU,oBAAoB,gBAAM,MAAK;AAAA,oBAC9C,SAAS,gBAAAA,MAAC,QAAK,MAAK,SAAQ,WAAU,qBAAoB,IAAK;AAAA;AAAA;AAAA,gBAR3D;AAAA,cASP;AAAA,YAEJ,CAAC;AAAA,YACA,UACC,gBAAAA,MAAC,SAAI,KAAK,aAAa,WAAU,iDAAgD,eAAW,MACzF,wBACC,gBAAAA,MAAC,UAAK,WAAU,mCAAkC,MAAK,UAAS,gCAEhE,IACE,MACN,IACE;AAAA,aACN;AAAA;AAAA;AAAA,IAEJ;AAAA,KACF;AAGF,SACE,gBAAAC,MAAC,SAAI,WAAU,qBACb;AAAA,oBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,MAAK;AAAA,QACL,cAAY,YAAY,OAAO,iCAAiC,QAAQ,MAAM;AAAA,QAC9E,iBAAe,WAAW,WAAW;AAAA,QACrC,iBAAe;AAAA,QACf,iBAAe,OAAO,SAAS;AAAA,QAC/B,OAAM;AAAA,QACN,WAAW,eAAe;AAAA,UACxB,SAAS;AAAA,UACT,MAAM;AAAA,UACN,WAAW;AAAA,YACT;AAAA,YACA,YAAY,QAAQ;AAAA,UACtB;AAAA,QACF,CAAC;AAAA,QACD,SAAS,MAAM,QAAQ,OAAK,CAAC,CAAC;AAAA,QAE9B;AAAA,0BAAAD,MAAC,QAAK,MAAK,UAAS,WAAU,YAAW;AAAA,UACxC,YAAY,OACX,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,eAAW;AAAA,cACX,eAAY;AAAA;AAAA,UACd,IACE;AAAA;AAAA;AAAA,IACN;AAAA,IACC,YAAY,OACX,gBAAAA,MAAC,eAAY,MAAI,MAAC,cAAc,SAAS,IAAI,QAAQ,cAAW,iBAC9D,0BAAAA,MAAC,SAAI,WAAU,oCAAmC,MAAK,QACpD,sBACH,GACF,IACE;AAAA,IACH,CAAC,YAAY,QAAQ,WAAW,OAC7B;AAAA,MACE,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,KAAK;AAAA,UACL,IAAI;AAAA,UACJ,MAAK;AAAA,UACL,cAAW;AAAA,UACX,OAAO,EAAE,KAAK,QAAQ,KAAK,MAAM,QAAQ,KAAK;AAAA,UAC9C,WAAU;AAAA,UAET;AAAA;AAAA,MACH;AAAA,MACA,gBAAgB,UAAU,OAAO;AAAA,IACnC,IACA;AAAA,KACN;AAEJ;;;AD9IM,qBAAAI,WAUI,OAAAC,OAKI,QAAAC,aAfR;AAtBN,IAAM,kBACJ;AAEF,SAAS,2BAA2B;AAClC,QAAM,UAAU,iBAAiB;AACjC,QAAM,WAAW,YAAY;AAC7B,QAAM,CAAC,WAAW,YAAY,IAAIC,UAAS,KAAK;AAChD,QAAM,CAAC,iBAAiB,kBAAkB,IAAIA,UAAsB;AACpE,QAAM,WAAW,YAAY;AAC7B,QAAM,oBAAoB,YAAY,CAAC,YAAsC;AAC3E,UAAM,YAAY,SAAS,QAAQ,iBAAiB;AACpD,uBAAmB,qBAAqB,cAAc,YAAY,MAAS;AAAA,EAC7E,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAkB,eAAe;AAAA,IACrC,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,EACb,CAAC;AAED,MAAI,UAAU;AACZ,WACE,gBAAAD,MAAAF,WAAA,EACE;AAAA,sBAAAC;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAW;AAAA,UACX,OAAM;AAAA,UACN,iBAAc;AAAA,UACd,iBAAe;AAAA,UACf,WAAW;AAAA,UACX,SAAS,MAAM,aAAa,IAAI;AAAA,UAEhC,0BAAAA,MAAC,QAAK,MAAK,YAAW,WAAU,YAAW;AAAA;AAAA,MAC7C;AAAA,MACC,YACC,gBAAAA,MAAC,eAAY,MAAI,MAAC,cAAc,cAAc,cAAW,mBACvD,0BAAAA,MAAC,SAAI,WAAU,2BAA0B,MAAK,QAC5C,0BAAAC,MAAC,wBAAwB,QAAxB,EAA+B,WAAW,iBAAiB,SAAS,MAAM,aAAa,KAAK,GAC3F;AAAA,wBAAAD,MAAC,QAAK,MAAK,SAAQ,WAAU,YAAW;AAAA,QAAE;AAAA,SAE5C,GACF,GACF,IACE;AAAA,OACN;AAAA,EAEJ;AAEA,SACE,gBAAAC,MAAC,4BAA4B,MAA5B,EAAiC,kBAAgB,MAChD;AAAA,oBAAAD;AAAA,MAAC,4BAA4B;AAAA,MAA5B;AAAA,QACC,KAAK;AAAA,QACL,cAAW;AAAA,QACX,OAAM;AAAA,QACN,WAAW;AAAA,QAEX,0BAAAA,MAAC,QAAK,MAAK,YAAW,WAAU,YAAW;AAAA;AAAA,IAC7C;AAAA,IACA,gBAAAA;AAAA,MAAC,4BAA4B;AAAA,MAA5B;AAAA,QACC,aAAa,EAAE,WAAW,gBAAgB;AAAA,QAC1C,OAAM;AAAA,QACN,YAAY;AAAA,QACZ,WAAU;AAAA,QAEV,0BAAAA,MAAC,wBAAwB,QAAxB,EAA+B,SAAO,MACrC,0BAAAC,MAAC,4BAA4B,MAA5B,EAAiC,WAAW,iBAC3C;AAAA,0BAAAD,MAAC,QAAK,MAAK,SAAQ,WAAU,YAAW;AAAA,UAAE;AAAA,WAE5C,GACF;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;AAEA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AACF,GAGG;AACD,QAAM,MAAMG,QAAO;AACnB,QAAM,QAAQ,qBAAqB;AACnC,QAAMC,iBAAgB,QAAQ,eAAe;AAC7C,QAAM,KAAKC,aAAY,OAAK,EAAE,eAAe,EAAE;AAC/C,QAAM,WAAWA,aAAY,OAAK,EAAE,eAAe,QAAQ;AAC3D,QAAM,QAAQA,aAAY,OAAK,EAAE,eAAe,KAAK;AACrD,QAAM,gBAAgBA,aAAY,OAAK,EAAE,eAAe,aAAa;AACrE,QAAM,SAASA,aAAY,OAAK,EAAE,eAAe,MAAM;AACvD,QAAM,eAAeA,aAAY,OAAK,EAAE,QAAQ,YAAY;AAC5D,QAAM,YAAY,oBAAoB,MAAM;AAC5C,QAAM,aAAa,oBAAoB,YAAY;AACnD,QAAM,iBAAiB,OAAO,gBAAgB,QAAQ,OAAO,iBAAiB,QAAQ,OAAO,kBAAkB;AAE/G,SACE,gBAAAL,MAAC,wBAAwB,MAAxB,EAA6B,WAAU,WACtC,0BAAAA;AAAA,IAACI;AAAA,IAAA;AAAA,MACC,OAAO,SAAS;AAAA,MAChB,QAAQ,OAAO,gBAAgB,CAAC;AAAA,MAChC;AAAA,MACA;AAAA,MACA,UAAU,MAAM;AACd,uBAAe;AACf,eAAO,gBAAgB,KAAK;AAC5B,eAAO,eAAe,KAAK;AAC3B,eAAO,gBAAgB,KAAK;AAC5B,eAAO,iBAAiB,KAAK;AAG7B,cAAM,iBAAiB,wBAAwB,MAAM;AACrD,cAAM,gBACJ,CAAC,kBACD,OAAO,KAAK,WAAW,YACvB,CAAC,MAAM,KAAK,cACX,aAAa,OACV,MAAM,KAAK,aAAa,QAAQ,MAAM,KAAK,WAAW,OACtD,MAAM,KAAK,cAAc,aAAa,MAAM,KAAK,YAAY;AACnE,cAAM,cAAc,qBAAqB;AAAA,UACvC;AAAA,UACA,cAAc,OAAO,KAAK,WAAW,YAAY,MAAM,KAAK;AAAA,UAC5D,GAAI,OAAO,KAAK,WAAW,YAAY,MAAM,KAAK,YAC9C,EAAE,gBAAgB,MAAM,KAAK,WAAW,cAAc,MAAM,KAAK,QAAQ,IACzE,CAAC;AAAA,UACL;AAAA,UACA,kBAAkB,OAAO;AAAA,QAC3B,CAAC;AAED,aAAK,iBAAiB,gBAAgB,YAAY,MAAM;AACtD,eAAK,QAAQ,QAAQ,IAAI,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,MAAM,MAAS;AAC5E;AAAA,QACF;AACA,YAAI,YAAY,MAAM;AACpB,iBAAO,mBAAmB;AAAA,YACxB,WAAW;AAAA,YACX,WAAW;AAAA,YACX,GAAI,aAAa,OAAO,EAAE,UAAU,IAAI,CAAC;AAAA,UAC3C,CAAC;AACD;AAAA,QACF;AACA,aAAK,QAAQ,QAAQ,IAAI,QAAQ,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,MAAM,MAAS;AAAA,MAC9E;AAAA,MACA,SAAS,aAAa,gBAAAJ,MAAC,4BAAyB,IAAK;AAAA;AAAA,EACvD,GACF;AAEJ;AAEA,SAAS,gCAA0C;AACjD,QAAM,YAAYK,aAAY,OAAK,EAAE,QAAQ,SAAS;AACtD,QAAM,cAAcA,aAAY,OAAK,EAAE,QAAQ,WAAW;AAE1D,SAAO,QAAQ,MAAM,2BAA2B,EAAE,WAAW,YAAY,CAAC,GAAG,CAAC,WAAW,WAAW,CAAC;AACvG;AAEA,SAAS,yBAAyB;AAAA,EAChC;AAAA,EACA;AACF,GAGG;AAED,QAAM,UAAU,8BAA8B;AAC9C,QAAM,YAAYA,aAAY,OAAK,EAAE,QAAQ,SAAS;AAEtD,SACE,gBAAAL,MAAAD,WAAA,EACG,kBAAQ,IAAI,WAAS;AACpB,UAAM,MAAM,UAAU,KAAK,KAAK,OAAO,KAAK;AAC5C,WACE,gBAAAC,MAAC,iCAAwC,OAAc,UAAU,OAC/D,0BAAAA,MAAC,qBAAkB,cAA4B,kBAAoC,KADjD,GAEpC;AAAA,EAEJ,CAAC,GACH;AAEJ;AAEA,IAAM,4BAA4B;AAElC,IAAM,sBAAsB;AAE5B,SAAS,mBAAmB,EAAE,UAAU,YAAY,GAA8D;AAChH,QAAM,CAAC,UAAU,WAAW,IAAIE,UAAS,IAAI;AAC7C,QAAM,QAAQ,qBAAqB;AACnC,QAAM,aAAa,OAAO,qBAAqB;AAE/C,SACE,gBAAAD,MAAC,SAAI,WAAU,gCACb;AAAA,oBAAAA,MAAC,SAAI,WAAU,8CACb;AAAA,sBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,iBAAe;AAAA,UACf,WAAU;AAAA,UACV,SAAS,MAAM,YAAY,OAAK,CAAC,CAAC;AAAA,UAElC;AAAA,4BAAAD,MAAC,UAAK,WAAU,YAAW,0BAAY;AAAA,YACvC,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAW,GAAG,0CAA0C,CAAC,YAAY,YAAY;AAAA;AAAA,YACnF;AAAA;AAAA;AAAA,MACF;AAAA,MACC,aAAa,gBAAAA,MAAC,4BAAyB,IAAK;AAAA,OAC/C;AAAA,IACC,WACC,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,aAAW;AAAA,QACX,WAAU;AAAA,QAET;AAAA;AAAA,IACH,IACE;AAAA,KACN;AAEJ;AAEO,SAAS,oBAAoB,EAAE,aAAa,IAA8B,CAAC,GAAG;AACnF,QAAM,MAAMG,QAAO;AACnB,QAAM,SAAS,kBAAkB;AACjC,QAAM,YAAYE,aAAY,OAAK,EAAE,QAAQ,SAAS;AACtD,QAAM,gBAAgBA,aAAY,OAAK,EAAE,QAAQ,aAAa;AAC9D,QAAM,UAAUA,aAAY,OAAK,EAAE,QAAQ,OAAO;AAClD,QAAM,YAAYA,aAAY,OAAK,EAAE,QAAQ,SAAS;AACtD,QAAM,QAAQ,qBAAqB;AAEnC,QAAMC,mBAAkB,QAAQ,iBAAiB;AACjD,QAAMC,uBAAsB,QAAQ,qBAAqB;AACzD,QAAMC,uBAAsB,QAAQ,qBAAqB;AACzD,QAAMC,yBAAwB,QAAQ,uBAAuB;AAC7D,QAAMC,mBAAkB,QAAQ,iBAAiB;AACjD,QAAMC,yBAAwB,QAAQ,uBAAuB;AAC7D,QAAMC,wBAAuB,QAAQ,sBAAsB;AAE3D,QAAM,cAAcC,QAAuB,IAAI;AAC/C,QAAM,aAAaA,QAAO,OAAO;AACjC,QAAM,SAASA,QAAO,GAAG;AACzB,aAAW,UAAU;AACrB,SAAO,UAAU;AAEjB,QAAM,cAAc,OAAO,qBAAqB;AAChD,QAAM,SAAS,OAAO,KAAK,WAAW;AACtC,QAAM,mBAAmB,OAAO,QAAQ,kBAAkB;AAM1D,EAAAC,WAAU,MAAM;AACd,QAAI,UAAU,aAAa,cAAe;AAC1C,UAAM,WAAW,YAAY;AAC7B,QAAI,CAAC,SAAU;AAEf,QAAI,YAAY;AAEhB,UAAM,cAAc,MAAM;AACxB,UAAI,aAAa,CAAC,WAAW,QAAS;AACtC,UAAI,SAAS,gBAAgB,EAAG;AAEhC,YAAM,YAAY,SAAS,eAAe,SAAS,YAAY,SAAS;AACxE,UAAI,SAAS,eAAe,SAAS,gBAAgB,YAAY,oBAAqB;AAEtF,WAAK,OAAO,QAAQ,QAAQ,EAAE,SAAS;AAAA,IACzC;AAEA,aAAS,iBAAiB,UAAU,aAAa,EAAE,SAAS,KAAK,CAAC;AAClE,UAAM,iBAAiB,OAAO,mBAAmB,cAAc,SAAY,IAAI,eAAe,MAAM,YAAY,CAAC;AACjH,QAAI,gBAAgB;AAClB,qBAAe,QAAQ,QAAQ;AAAA,IACjC,OAAO;AACL,aAAO,iBAAiB,UAAU,WAAW;AAAA,IAC/C;AACA,gBAAY;AAEZ,WAAO,MAAM;AACX,kBAAY;AACZ,eAAS,oBAAoB,UAAU,WAAW;AAClD,sBAAgB,WAAW;AAC3B,UAAI,CAAC,gBAAgB;AACnB,eAAO,oBAAoB,UAAU,WAAW;AAAA,MAClD;AAAA,IACF;AAAA,EACF,GAAG,CAAC,SAAS,QAAQ,WAAW,eAAe,UAAU,MAAM,CAAC;AAEhE,QAAM,gBAAgB,MAAM;AAC1B,mBAAe;AACf,WAAO,eAAe,KAAK;AAC3B,WAAO,gBAAgB,KAAK;AAC5B,QAAI,OAAO,mBAAmB;AAC5B,YAAM,UAAU;AAChB;AAAA,IACF;AACA,WAAO,gBAAgB,KAAK;AAC5B,WAAO,iBAAiB,KAAK;AAC7B,SAAK,QAAQ,QAAQ,IAAI,QAAQ,EAAE,kBAAkB,CAAC,EAAE,MAAM,MAAM,MAAS;AAAA,EAC/E;AAEA,MAAI;AACJ,MAAI,QAAQ;AACV,eAAW,gBAAAd,MAACY,uBAAA,EAAqB;AAAA,EACnC,WAAW,WAAW;AACpB,eAAW,gBAAAZ,MAACW,wBAAA,EAAsB;AAAA,EACpC,WAAW,UAAU,WAAW,GAAG;AACjC,eAAW,gBAAAX,MAACY,uBAAA,EAAqB;AAAA,EACnC,OAAO;AACL,eACE,gBAAAZ,MAAC,oBAAoB,MAApB,EAAyB,WAAU,iCAClC,0BAAAA,MAAC,4BAAyB,cAA4B,kBAAoC,GAC5F;AAAA,EAEJ;AAEA,SACE,gBAAAA;AAAA,IAACM;AAAA,IAAA;AAAA,MACC,QACE,gBAAAL,MAAC,SAAI,WAAU,uBACZ;AAAA,sBAAc,gBAAAD,MAACO,sBAAA,EAAoB,SAAS,eAAe,IAAK;AAAA,QACjE,gBAAAP,MAACQ,sBAAA,EAAoB;AAAA,QACrB,gBAAAR,MAACS,wBAAA,EAAsB;AAAA,QACvB,gBAAAT,MAACU,kBAAA,EAAgB;AAAA,SACnB;AAAA,MAGF,0BAAAT,MAAC,sBAAmB,aACjB;AAAA;AAAA,QACA,CAAC,UAAU,UAAU,gBAAAD,MAAC,SAAI,WAAU,gBAAe,eAAW,MAAC,IAAK;AAAA,SACvE;AAAA;AAAA,EACF;AAEJ;;;AElXA,SAAS,eAAAe,oBAA0C;AACnD,SAAS,YAAAC,iBAAwD;AA4B7D,gBAAAC,aAAA;AAtBG,SAAS,mBAAmB,EAAE,UAAU,MAAM,GAAkD;AACrG,QAAMC,iBAAgB,QAAQ,eAAe;AAE7C,QAAM,gBAAgB,MAAM,QAAQ;AAEpC,QAAM,SAASC,aAAY,OAAK;AAC9B,QAAI,EAAE,QAAQ,QAAQ,SAAS,UAAW,QAAO;AACjD,UAAM,YAAY,EAAE,QAAQ,MAAM,SAAS;AAC3C,QAAI,YAAY,EAAG,QAAO;AAC1B,QAAI,EAAE,QAAQ,MAAM,SAAS,GAAG,SAAS,YAAa,QAAO;AAC7D,UAAM,iBAAiB,MAAM,QAAQ,MAAM,QAAQ,SAAS,CAAC;AAC7D,WAAO,mBAAmB,UAAa,aAAa,MAAM,QAAQ,CAAC,KAAM,aAAa;AAAA,EACxF,CAAC;AAED,QAAM,CAAC,UAAU,WAAW,IAAIC,UAAS,IAAI;AAC7C,QAAM,CAAC,YAAY,aAAa,IAAIA,UAAS,MAAM;AACnD,MAAI,WAAW,YAAY;AACzB,kBAAc,MAAM;AACpB,QAAI,OAAQ,aAAY,IAAI;AAAA,EAC9B;AAEA,SACE,gBAAAH;AAAA,IAACC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA,UAAU,MAAM,YAAY,UAAQ,CAAC,IAAI;AAAA,MAExC;AAAA;AAAA,EACH;AAEJ;;;ACtCA,SAAS,MAAM,gBAAoC;AA6B3C,gBAAAG,aAAA;AAhBR,IAAM,wBAAwB;AAAA,EAA0D,MACtF,OAAO,qCAA4B,EAAE,KAAK,QAAM,EAAE,SAAS,EAAE,sBAAsB,EAAE;AACvF;AAMO,SAAS,YAAY,OAAyB;AACnD,QAAM,kBACJ,OAAO,WAAW,eAAe,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAAE,IAAI,YAAY,MAAM;AAGrG,MAAI,iBAAiB;AACnB,WACE,gBAAAA,MAAC,iBAAc,WAAW,MAAM,WAAW,OAAO,MAAM,OACtD,0BAAAA,MAAC,8BAAmB,GACtB;AAAA,EAEJ;AAEA,QAAM,EAAE,YAAY,GAAG,KAAK,IAAI;AAChC,MAAI,YAAY;AACd,WACE,gBAAAA,MAAC,YAAS,UAAU,gBAAAA,MAAC,oBAAiB,WAAW,MAAM,WAAW,GAChE,0BAAAA,MAAC,yBAAuB,GAAG,MAAM,GACnC;AAAA,EAEJ;AACA,SAAO,gBAAAA,MAAC,oBAAkB,GAAG,MAAM;AACrC;;;ACyMA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":["React","jsx","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","isSuccess","useAui","useAuiState","useEffect","useRef","useState","useEffect","useState","jsx","jsxs","useState","useEffect","Fragment","jsx","jsxs","useState","useAui","ThreadListRow","useAuiState","ThreadListShell","ThreadListNewButton","AgentsLibraryButton","SessionsBrowserButton","SchedulesButton","ThreadListRowSkeleton","ThreadListEmptyState","useRef","useEffect","useAuiState","useState","jsx","ToolGroupCard","useAuiState","useState","jsx"]}
1
+ {"version":3,"sources":["../src/icons/agent-2.svg","../src/icons/ai.svg","../src/icons/brain-regular.svg","../src/icons/compare.svg","../src/icons/empty.svg","../src/icons/mcp-server.svg","../src/icons/search-globe.svg","../src/icons/trueforge-logomark-dark.svg","../src/icons/trueforge-logomark-light.svg","../src/icons/registerAgentIcons.ts","../src/containers/McpOauthContainer/PostMcpOauthScreen.tsx","../src/containers/ToolGroupContainer.tsx","../src/containers/TrueForgeUI.tsx","../src/index.ts"],"sourcesContent":["import * as React from \"react\";\nconst SvgAgent2 = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 16 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M8 0C8.40158 8.28071e-05 8.72754 0.325937 8.72754 0.727539V2.90918H12.3623C13.5671 2.90921 14.5437 3.88607 14.5439 5.09082V7.27246H15.2725C15.6741 7.27253 16 7.59839 16 8C15.9999 8.40155 15.674 8.72747 15.2725 8.72754H14.5439V10.9092C14.5437 12.1139 13.5671 13.0908 12.3623 13.0908H3.63477C2.43015 13.0906 1.45334 12.1138 1.45312 10.9092V8.72754H0.727539C0.325964 8.7275 7.21982e-05 8.40157 0 8C0 7.59837 0.32592 7.2725 0.727539 7.27246H1.45312V5.09082C1.45335 3.8862 2.43015 2.90942 3.63477 2.90918H7.27246V1.45508H5.09082C4.68943 1.4549 4.36346 1.12893 4.36328 0.727539C4.36328 0.325997 4.68932 0.00017902 5.09082 0H8ZM3.63477 4.36426C3.23346 4.3645 2.90843 4.68951 2.9082 5.09082V7.99023C2.90824 7.99344 2.90918 7.99678 2.90918 8C2.90918 8.00326 2.90825 8.00651 2.9082 8.00977V10.9092C2.90841 11.3105 3.23345 11.6365 3.63477 11.6367H12.3623C12.7638 11.6367 13.0896 11.3106 13.0898 10.9092V5.09082C13.0896 4.68937 12.7638 4.36428 12.3623 4.36426H3.63477ZM5.81738 6.54492C6.21902 6.54492 6.54489 6.87084 6.54492 7.27246V8.72656C6.54492 9.12822 6.21904 9.4541 5.81738 9.4541C5.41587 9.45393 5.08984 9.12811 5.08984 8.72656V7.27246C5.08988 6.87094 5.41589 6.54509 5.81738 6.54492ZM10.1816 6.54492C10.5831 6.54514 10.9091 6.87097 10.9092 7.27246V8.72656C10.9092 9.12808 10.5831 9.45388 10.1816 9.4541C9.77999 9.4541 9.4541 9.12822 9.4541 8.72656V7.27246C9.45413 6.87084 9.78001 6.54492 10.1816 6.54492Z\" fill=\"currentColor\" /></svg>;\nexport default SvgAgent2;","import * as React from \"react\";\nconst SvgAi = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g opacity={0.9}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.4419 9.43023C15.7501 9.43023 16 9.68012 16 9.98837V10.0304C16 11.398 16 12.4813 15.886 13.329C15.7687 14.2015 15.5216 14.9077 14.9647 15.4647C14.4077 16.0216 13.7015 16.2687 12.829 16.386C11.9813 16.5 10.898 16.5 9.53035 16.5H9.48837C9.18012 16.5 8.93023 16.2501 8.93023 15.9419C8.93023 15.6336 9.18012 15.3837 9.48837 15.3837C10.9074 15.3837 11.9155 15.3825 12.6803 15.2797C13.429 15.1791 13.8604 14.9903 14.1753 14.6753C14.4903 14.3604 14.6791 13.929 14.7797 13.1803C14.8825 12.4155 14.8837 11.4074 14.8837 9.98837C14.8837 9.68012 15.1336 9.43023 15.4419 9.43023Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0.55814 9.43023C0.866392 9.43023 1.11628 9.68012 1.11628 9.98837C1.11628 11.4074 1.11747 12.4155 1.22029 13.1803C1.32095 13.929 1.50973 14.3604 1.82467 14.6753C2.13962 14.9903 2.57098 15.1791 3.3197 15.2797C4.08448 15.3825 5.0926 15.3837 6.51163 15.3837C6.81988 15.3837 7.06977 15.6336 7.06977 15.9419C7.06977 16.2501 6.81988 16.5 6.51163 16.5H6.46965C5.10201 16.5 4.01875 16.5 3.17096 16.386C2.29846 16.2687 1.59227 16.0216 1.03534 15.4647C0.478423 14.9077 0.231266 14.2015 0.113961 13.329C-2.0957e-05 12.4813 -1.15596e-05 11.398 2.3934e-07 10.0304C3.72411e-07 10.0164 5.05482e-07 10.0024 5.05482e-07 9.98837C5.05482e-07 9.68012 0.249888 9.43023 0.55814 9.43023Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M6.46964 0.5L6.51163 0.500001C6.81988 0.500001 7.06977 0.749888 7.06977 1.05814C7.06977 1.36639 6.81988 1.61628 6.51163 1.61628C5.0926 1.61628 4.08448 1.61747 3.3197 1.72029C2.57098 1.82095 2.13962 2.00973 1.82467 2.32467C1.50973 2.63962 1.32095 3.07098 1.22029 3.8197C1.11747 4.58448 1.11628 5.5926 1.11628 7.01163C1.11628 7.31988 0.866392 7.56977 0.55814 7.56977C0.249888 7.56977 5.05482e-07 7.31988 5.05482e-07 7.01163L2.3934e-07 6.96964C-1.15596e-05 5.60201 -2.0957e-05 4.51875 0.113961 3.67096C0.231266 2.79846 0.478423 2.09227 1.03534 1.53534C1.59227 0.978423 2.29846 0.731266 3.17096 0.613961C4.01875 0.499979 5.10201 0.499988 6.46964 0.5Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12.6803 1.72029C11.9155 1.61747 10.9074 1.61628 9.48837 1.61628C9.18012 1.61628 8.93023 1.36639 8.93023 1.05814C8.93023 0.749888 9.18012 0.500001 9.48837 0.500001C9.5024 0.500001 9.51639 0.5 9.53036 0.5C10.898 0.499988 11.9813 0.499979 12.829 0.613961C13.7015 0.731266 14.4077 0.978423 14.9647 1.53534C15.5216 2.09227 15.7687 2.79846 15.886 3.67096C16 4.51875 16 5.60201 16 6.96965V7.01163C16 7.31988 15.7501 7.56977 15.4419 7.56977C15.1336 7.56977 14.8837 7.31988 14.8837 7.01163C14.8837 5.5926 14.8825 4.58448 14.7797 3.8197C14.6791 3.07098 14.4903 2.63962 14.1753 2.32467C13.8604 2.00973 13.429 1.82095 12.6803 1.72029Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M2.70041 3.20041C2.04651 3.85431 2.04651 4.90675 2.04651 7.01163V9.98837C2.04651 12.0933 2.04651 13.1457 2.70041 13.7996C3.35431 14.4535 4.40675 14.4535 6.51163 14.4535H9.48837C11.5933 14.4535 12.6457 14.4535 13.2996 13.7996C13.9535 13.1457 13.9535 12.0933 13.9535 9.98837V7.01163C13.9535 4.90675 13.9535 3.85431 13.2996 3.20041C12.6457 2.54651 11.5933 2.54651 9.48837 2.54651H6.51163C4.40675 2.54651 3.35431 2.54651 2.70041 3.20041ZM5.65417 10.5348C5.81478 10.3181 6.12065 10.2726 6.33733 10.4332C6.8116 10.7848 7.38407 10.9884 8 10.9884C8.61593 10.9884 9.1884 10.7848 9.66267 10.4332C9.87936 10.2726 10.1852 10.3181 10.3458 10.5348C10.5064 10.7514 10.461 11.0573 10.2443 11.2179C9.61111 11.6873 8.83673 11.9651 8 11.9651C7.16327 11.9651 6.38889 11.6873 5.75569 11.2179C5.53901 11.0573 5.49356 10.7514 5.65417 10.5348ZM10.6047 7.24419C10.6047 7.78363 10.3131 8.22093 9.95349 8.22093C9.59386 8.22093 9.30233 7.78363 9.30233 7.24419C9.30233 6.70475 9.59386 6.26744 9.95349 6.26744C10.3131 6.26744 10.6047 6.70475 10.6047 7.24419ZM6.04651 8.22093C6.40614 8.22093 6.69767 7.78363 6.69767 7.24419C6.69767 6.70475 6.40614 6.26744 6.04651 6.26744C5.68688 6.26744 5.39535 6.70475 5.39535 7.24419C5.39535 7.78363 5.68688 8.22093 6.04651 8.22093Z\" fill=\"currentColor\" /></g></svg>;\nexport default SvgAi;","import * as React from \"react\";\nconst SvgBrainRegular = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M0 6.9375C0 6.30469 0.234375 5.69531 0.609375 5.25C0.5625 5.0625 0.5625 4.875 0.5625 4.6875C0.5625 3.9375 0.9375 3.25781 1.52344 2.85938C1.61719 2.17969 2.01562 1.59375 2.60156 1.26562C2.90625 0.515625 3.63281 0 4.5 0C5.08594 0 5.60156 0.257812 6 0.65625C6.375 0.257812 6.89062 0 7.5 0C8.34375 0 9.07031 0.515625 9.375 1.26562C9.96094 1.59375 10.3594 2.17969 10.4531 2.85938C11.0391 3.25781 11.4375 3.9375 11.4375 4.6875C11.4375 4.875 11.4141 5.0625 11.3672 5.25C11.7422 5.69531 12 6.30469 12 6.9375C12 7.66406 11.6953 8.32031 11.2266 8.78906L11.25 8.8125C11.25 9.9375 10.4297 10.8516 9.375 11.0391C9 11.625 8.34375 12 7.59375 12C6.96094 12 6.375 11.7422 6 11.2969C5.60156 11.7422 5.01562 12 4.40625 12C3.63281 12 2.97656 11.625 2.60156 11.0391C1.54688 10.8516 0.75 9.9375 0.75 8.8125V8.78906C0.28125 8.32031 0 7.66406 0 6.9375ZM5.41406 9.9375H5.4375V2.0625C5.4375 1.54688 5.01562 1.125 4.5 1.125C3.96094 1.125 3.5625 1.54688 3.5625 2.0625V2.08594C3.07031 2.17969 2.69531 2.55469 2.625 3.04688C2.625 3.09375 2.625 3.14062 2.625 3.1875C2.625 3.32812 2.625 3.46875 2.67188 3.58594C2.50781 3.60938 2.32031 3.65625 2.17969 3.75C1.89844 3.9375 1.71094 4.24219 1.6875 4.57031C1.6875 4.61719 1.6875 4.66406 1.6875 4.6875C1.6875 5.03906 1.82812 5.34375 2.0625 5.55469C1.71094 5.69531 1.40625 5.97656 1.24219 6.32812C1.17188 6.51562 1.10156 6.72656 1.10156 6.9375C1.10156 7.5 1.42969 7.99219 1.875 8.25C1.92188 8.27344 1.94531 8.29688 1.99219 8.32031C1.96875 8.34375 1.96875 8.36719 1.94531 8.39062C1.89844 8.53125 1.875 8.67188 1.875 8.8125C1.875 9.32812 2.20312 9.77344 2.67188 9.91406C2.76562 9.9375 2.88281 9.9375 3 9.9375C3.11719 9.9375 3.25781 9.91406 3.375 9.89062C3.375 10.1016 3.44531 10.3125 3.58594 10.4766C3.77344 10.7344 4.05469 10.875 4.40625 10.875C4.92188 10.875 5.36719 10.4766 5.41406 9.9375ZM8.41406 2.08594L8.4375 2.0625C8.4375 1.54688 8.01562 1.125 7.5 1.125C6.96094 1.125 6.5625 1.54688 6.5625 2.0625V9.9375C6.60938 10.4766 7.05469 10.875 7.59375 10.875C7.92188 10.875 8.20312 10.7344 8.39062 10.4766C8.53125 10.3125 8.60156 10.1016 8.60156 9.89062C8.71875 9.91406 8.85938 9.9375 9 9.9375C9.09375 9.9375 9.21094 9.9375 9.30469 9.91406C9.77344 9.77344 10.125 9.32812 10.125 8.8125C10.125 8.67188 10.0781 8.53125 10.0312 8.39062C10.0078 8.36719 10.0078 8.34375 9.98438 8.32031C10.0312 8.29688 10.0547 8.27344 10.1016 8.25C10.5469 7.99219 10.875 7.5 10.875 6.9375C10.875 6.72656 10.8047 6.51562 10.7344 6.32812C10.5703 5.97656 10.2656 5.69531 9.91406 5.55469C10.1484 5.34375 10.3125 5.03906 10.3125 4.6875C10.3125 4.66406 10.2891 4.61719 10.2891 4.57031C10.2656 4.24219 10.0781 3.9375 9.79688 3.75C9.65625 3.65625 9.46875 3.60938 9.30469 3.58594C9.35156 3.46875 9.375 3.32812 9.375 3.1875C9.375 3.14062 9.35156 3.09375 9.35156 3.04688C9.28125 2.55469 8.90625 2.17969 8.41406 2.08594Z\" fill=\"currentColor\" /></svg>;\nexport default SvgBrainRegular;","import * as React from \"react\";\nconst SvgCompare = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 14 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M5.09091 16.5V15.0455H1.45455C1.05455 15.0455 0.712121 14.903 0.427273 14.6182C0.142424 14.3333 0 13.9909 0 13.5909V3.40909C0 3.00909 0.142424 2.66667 0.427273 2.38182C0.712121 2.09697 1.05455 1.95455 1.45455 1.95455H5.09091V0.5H6.54545V16.5H5.09091ZM8 15.0455V13.5909L11.6364 13.5909V3.40909H8V1.95455H11.6364C12.0364 1.95455 12.3788 2.09697 12.6636 2.38182C12.9485 2.66667 13.0909 3.00909 13.0909 3.40909V13.5909C13.0909 13.9909 12.9485 14.3333 12.6636 14.6182C12.3788 14.903 12.0364 15.0455 11.6364 15.0455H8Z\" fill=\"currentColor\" /></svg>;\nexport default SvgCompare;","import * as React from \"react\";\nconst SvgEmpty = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 22 25\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.4824 12.432L21.0265 6.20004L10.5441 0L0 6.20004L10.4824 12.432Z\" fill=\"#ECF2F9\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.4729 11.7499L19.75 6.23584L10.5271 0.749939L1.25 6.23584L10.4729 11.7499Z\" fill=\"#FDFEFF\" /><path d=\"M10.5 11.7499V0.749939L19.75 6.24994L10.5 11.7499Z\" fill=\"url(#paint0_linear_10651_178757)\" /><path d=\"M10.5 11.7499V0.749939L1.25 6.24994L10.5 11.7499Z\" fill=\"#0E1623\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M0 6.20001V18.686L10.5441 25V12.4319L0 6.20001Z\" fill=\"#CEE0F8\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M21.0265 6.20001V18.686L10.4824 25V12.4319L21.0265 6.20001Z\" fill=\"#82A0CE\" /><path d=\"M10.4973 11.7478L4.64099 8.26706V8.95172L10.4973 12.4126L15.8148 9.27748V8.59062L10.4973 11.7478Z\" fill=\"#ECF2F9\" /><defs><linearGradient id=\"paint0_linear_10651_178757\" x1={15.0834} y1={2.10412} x2={15.125} y2={11.7499} gradientUnits=\"userSpaceOnUse\"><stop stopColor=\"#5E7BAA\" /><stop offset={1} stopColor=\"#030407\" /></linearGradient></defs></svg>;\nexport default SvgEmpty;","import * as React from \"react\";\nconst SvgMcpServer = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 14 14\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g clipPath=\"url(#clip0_5446_3655)\"><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9.15174 1.36702C8.86989 1.09272 8.49212 0.939234 8.09883 0.939234C7.70553 0.939234 7.32776 1.09272 7.04591 1.36702L1.43074 6.87369C1.33678 6.96502 1.21091 7.01611 1.07987 7.01611C0.948831 7.01611 0.822958 6.96502 0.728994 6.87369C0.68299 6.82895 0.646423 6.77544 0.621453 6.71633C0.596483 6.65721 0.583618 6.59369 0.583618 6.52952C0.583618 6.46535 0.596483 6.40183 0.621453 6.34272C0.646423 6.2836 0.68299 6.23009 0.728994 6.18536L6.34416 0.678689C6.81387 0.221585 7.44341 -0.0341797 8.09883 -0.0341797C8.75424 -0.0341797 9.38379 0.221585 9.85349 0.678689C10.1253 0.943 10.3306 1.26791 10.4527 1.62683C10.5748 1.98575 10.6101 2.36848 10.5558 2.74369C10.936 2.68962 11.3235 2.72356 11.6885 2.8429C12.0535 2.96224 12.3863 3.16379 12.6611 3.43202L12.6902 3.46119C12.9203 3.68489 13.1031 3.95243 13.2279 4.248C13.3528 4.54357 13.4171 4.86117 13.4171 5.18202C13.4171 5.50288 13.3528 5.82048 13.2279 6.11605C13.1031 6.41162 12.9203 6.67916 12.6902 6.90286L7.61174 11.8828C7.59642 11.8977 7.58423 11.9155 7.57591 11.9352C7.56759 11.9549 7.5633 11.976 7.5633 11.9974C7.5633 12.0188 7.56759 12.0399 7.57591 12.0596C7.58423 12.0793 7.59642 12.0971 7.61174 12.112L8.65474 13.1352C8.70075 13.1799 8.73731 13.2334 8.76228 13.2926C8.78725 13.3517 8.80012 13.4152 8.80012 13.4794C8.80012 13.5435 8.78725 13.607 8.76228 13.6662C8.73731 13.7253 8.70075 13.7788 8.65474 13.8235C8.56078 13.9149 8.43491 13.9659 8.30387 13.9659C8.17283 13.9659 8.04696 13.9149 7.95299 13.8235L6.90999 12.8009C6.80257 12.6966 6.71717 12.5717 6.65886 12.4337C6.60054 12.2957 6.5705 12.1475 6.5705 11.9977C6.5705 11.8479 6.60054 11.6996 6.65886 11.5617C6.71717 11.4237 6.80257 11.2988 6.90999 11.1944L11.9885 6.21394C12.1264 6.07968 12.2361 5.91914 12.3109 5.74181C12.3858 5.56447 12.4244 5.37393 12.4244 5.18144C12.4244 4.98895 12.3858 4.79841 12.3109 4.62107C12.2361 4.44374 12.1264 4.2832 11.9885 4.14894L11.9593 4.12036C11.6778 3.84634 11.3005 3.69287 10.9076 3.69254C10.5148 3.69222 10.1372 3.84506 9.85524 4.11861L5.67158 8.22177L5.67041 8.22294L5.61324 8.27952C5.51925 8.37103 5.39326 8.42223 5.26208 8.42223C5.1309 8.42223 5.0049 8.37103 4.91091 8.27952C4.86491 8.23478 4.82834 8.18128 4.80337 8.12216C4.7784 8.06305 4.76553 7.99953 4.76553 7.93536C4.76553 7.87118 4.7784 7.80766 4.80337 7.74855C4.82834 7.68944 4.86491 7.63593 4.91091 7.59119L9.15349 3.43027C9.29105 3.29592 9.40033 3.1354 9.47488 2.95816C9.54943 2.78093 9.58776 2.59056 9.58759 2.39828C9.58743 2.206 9.54878 2.0157 9.47393 1.83859C9.39907 1.66147 9.28953 1.50114 9.15174 1.36702Z\" fill=\"currentColor\" /><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M8.44964 2.74425C8.49564 2.69951 8.53221 2.646 8.55718 2.58689C8.58215 2.52777 8.59501 2.46425 8.59501 2.40008C8.59501 2.33591 8.58215 2.27239 8.55718 2.21328C8.53221 2.15416 8.49564 2.10066 8.44964 2.05592C8.35564 1.96441 8.22965 1.91321 8.09847 1.91321C7.96729 1.91321 7.84129 1.96441 7.7473 2.05592L3.59455 6.12875C3.36454 6.35245 3.1817 6.61999 3.05685 6.91556C2.932 7.21113 2.86768 7.52873 2.86768 7.84958C2.86768 8.17044 2.932 8.48804 3.05685 8.78361C3.1817 9.07918 3.36454 9.34672 3.59455 9.57042C4.06433 10.0274 4.69385 10.2831 5.34922 10.2831C6.00459 10.2831 6.63411 10.0274 7.10389 9.57042L11.2572 5.49758C11.3032 5.45284 11.3398 5.39934 11.3648 5.34022C11.3897 5.28111 11.4026 5.21759 11.4026 5.15342C11.4026 5.08925 11.3897 5.02573 11.3648 4.96661C11.3398 4.9075 11.3032 4.85399 11.2572 4.80925C11.1632 4.71774 11.0372 4.66654 10.9061 4.66654C10.7749 4.66654 10.6489 4.71774 10.5549 4.80925L6.40214 8.88208C6.12029 9.15639 5.74252 9.30987 5.34922 9.30987C4.95592 9.30987 4.57815 9.15639 4.2963 8.88208C4.15836 8.74782 4.04873 8.58729 3.97386 8.40995C3.899 8.23261 3.86043 8.04207 3.86043 7.84958C3.86043 7.65709 3.899 7.46655 3.97386 7.28922C4.04873 7.11188 4.15836 6.95134 4.2963 6.81708L8.44964 2.74425Z\" fill=\"currentColor\" /></g><defs><clipPath id=\"clip0_5446_3655\"><rect width={14} height={14} fill=\"white\" /></clipPath></defs></svg>;\nexport default SvgMcpServer;","import * as React from \"react\";\nconst SvgSearchGlobe = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M7 0C10.8555 0 14 3.14453 14 7C14 10.8828 10.8555 14 7 14C3.11719 14 0 10.8828 0 7C0 3.14453 3.11719 0 7 0ZM7 12.6875C7.19141 12.6875 7.71094 12.4961 8.28516 11.375C8.53125 10.8828 8.72266 10.3086 8.88672 9.625H5.08594C5.25 10.3086 5.44141 10.8828 5.6875 11.375C6.26172 12.4961 6.78125 12.6875 7 12.6875ZM4.86719 8.3125H9.10547C9.16016 7.90234 9.1875 7.46484 9.1875 7C9.1875 6.5625 9.16016 6.125 9.10547 5.6875H4.86719C4.8125 6.125 4.8125 6.5625 4.8125 7C4.8125 7.46484 4.8125 7.90234 4.86719 8.3125ZM8.88672 4.375C8.72266 3.71875 8.53125 3.14453 8.28516 2.65234C7.71094 1.53125 7.19141 1.3125 7 1.3125C6.78125 1.3125 6.26172 1.53125 5.6875 2.65234C5.44141 3.14453 5.25 3.71875 5.08594 4.375H8.88672ZM10.418 5.6875C10.4727 6.125 10.5 6.5625 10.5 7C10.5 7.46484 10.4727 7.90234 10.418 8.3125H12.5234C12.6328 7.90234 12.6875 7.46484 12.6875 7C12.6875 6.5625 12.6328 6.125 12.5234 5.6875H10.418ZM9.35156 1.83203C9.73438 2.54297 10.0352 3.41797 10.2266 4.375H12.0312C11.457 3.25391 10.5 2.35156 9.35156 1.83203ZM4.62109 1.83203C3.47266 2.35156 2.51562 3.25391 1.94141 4.375H3.74609C3.9375 3.41797 4.23828 2.54297 4.62109 1.83203ZM1.3125 7C1.3125 7.46484 1.33984 7.90234 1.44922 8.3125H3.55469C3.5 7.90234 3.5 7.46484 3.5 7C3.5 6.5625 3.5 6.125 3.55469 5.6875H1.44922C1.33984 6.125 1.3125 6.5625 1.3125 7ZM12.0312 9.625H10.2266C10.0352 10.6094 9.73438 11.4844 9.35156 12.1953C10.5 11.6758 11.457 10.7734 12.0312 9.625ZM3.74609 9.625H1.94141C2.51562 10.7734 3.47266 11.6758 4.62109 12.1953C4.23828 11.4844 3.9375 10.6094 3.74609 9.625Z\" fill=\"currentColor\" /></svg>;\nexport default SvgSearchGlobe;","import * as React from \"react\";\nconst SvgTrueforgeLogomarkDark = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 120 120\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g clipPath=\"url(#clip0_10581_4008)\"><path d=\"M-0.000793457 0.015625L39.9992 20.0156V40L19.9992 40V80.0156H39.9992V100.016L-0.000793457 120.016V0.015625Z\" fill=\"white\" /><path d=\"M119.999 0L79.9992 20V40H99.9992V80H79.9992V100L119.999 120V0Z\" fill=\"white\" /><path d=\"M59.9955 39.8193C61.054 45.6178 63.1935 50.1614 66.5756 53.5215C69.9439 56.868 74.4722 58.9678 80.2035 60.0088C74.4696 61.0714 69.9413 63.2075 66.5736 66.5752C63.1938 69.955 61.0542 74.5036 59.9955 80.2666C58.9314 74.5031 56.7838 69.9547 53.3988 66.5752C50.026 63.2078 45.4965 61.0704 39.7709 60.0078C45.4938 58.9668 50.0235 56.8676 53.3969 53.5215C56.7841 50.1616 58.9316 45.6182 59.9955 39.8193Z\" fill=\"white\" stroke=\"white\" strokeWidth={1.6} strokeLinejoin=\"round\" /></g><defs><clipPath id=\"clip0_10581_4008\"><rect width={120} height={120} fill=\"white\" /></clipPath></defs></svg>;\nexport default SvgTrueforgeLogomarkDark;","import * as React from \"react\";\nconst SvgTrueforgeLogomarkLight = props => <svg width=\"1em\" height=\"1em\" viewBox=\"0 0 140 140\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g clipPath=\"url(#clip0_10581_1729)\"><path d=\"M-0.000976562 0.0195312L46.6657 23.3529V46.668L23.3324 46.668V93.3529H46.6657V116.686L-0.000976562 140.02V0.0195312Z\" fill=\"#05090E\" /><path d=\"M139.999 0L93.3324 23.3333V46.6667H116.666V93.3333H93.3324V116.667L139.999 140V0Z\" fill=\"#05090E\" /><path d=\"M69.9941 46.4561C71.2291 53.2208 73.7252 58.5213 77.6709 62.4414C81.6 66.345 86.8814 68.7951 93.5664 70.0098C86.8784 71.2497 81.5974 73.7435 77.6689 77.6719C73.7259 81.615 71.2293 86.921 69.9941 93.6445C68.7527 86.9203 66.2461 81.6138 62.2969 77.6709C58.3624 73.7429 53.0791 71.2496 46.4004 70.0098C53.076 68.7952 58.3597 66.3456 62.2949 62.4424C66.2468 58.5225 68.7529 53.2215 69.9941 46.4561Z\" fill=\"#6D58FB\" stroke=\"#6D58FB\" strokeWidth={1.86667} strokeLinejoin=\"round\" /></g><defs><clipPath id=\"clip0_10581_1729\"><rect width={140} height={140} fill=\"white\" /></clipPath></defs></svg>;\nexport default SvgTrueforgeLogomarkLight;","import type React from 'react';\n\nimport { registerIcons } from './IconRegistry.js';\n\nimport Agent2Icon from './agent-2.svg';\nimport AiIcon from './ai.svg';\nimport BrainRegularIcon from './brain-regular.svg';\nimport CompareIcon from './compare.svg';\nimport EmptyIcon from './empty.svg';\nimport McpServerIcon from './mcp-server.svg';\nimport SearchGlobeIcon from './search-globe.svg';\nimport TrueForgeLogomarkDarkIcon from './trueforge-logomark-dark.svg';\nimport TrueForgeLogomarkLightIcon from './trueforge-logomark-light.svg';\n\ntype SvgIcon = React.FC<React.SVGProps<SVGSVGElement>>;\n\nregisterIcons({\n 'mcp-server': McpServerIcon as unknown as SvgIcon,\n 'agent-2': Agent2Icon as unknown as SvgIcon,\n // Prefer the custom agent glyph over Lucide Bot for bot/robot aliases.\n bot: Agent2Icon as unknown as SvgIcon,\n robot: Agent2Icon as unknown as SvgIcon,\n compare: CompareIcon as unknown as SvgIcon,\n ai: AiIcon as unknown as SvgIcon,\n searchGlobe: SearchGlobeIcon as unknown as SvgIcon,\n 'brain-regular': BrainRegularIcon as unknown as SvgIcon,\n empty: EmptyIcon as unknown as SvgIcon,\n 'trueforge-logomark-light': TrueForgeLogomarkLightIcon as unknown as SvgIcon,\n 'trueforge-logomark-dark': TrueForgeLogomarkDarkIcon as unknown as SvgIcon,\n});\n","'use client';\n\nimport { useEffect, useState } from 'react';\n\nimport { MCP_AUTH_POPUP_CHANNEL, type McpAuthPopupMessage } from '../../hooks/useMcpAuth.js';\nimport { Icon } from '../../icons/Icon.js';\n\nconst BROADCAST_RETRY_DELAY_MS = 1000;\nconst WINDOW_CLOSE_DELAY_MS = 5000;\n\n/**\n * Prefer `isSuccess` when present; otherwise treat a `code` without `error` as success.\n */\nfunction resolvePopupSuccess(searchParams: URLSearchParams): boolean {\n if (searchParams.get('error')) {\n return false;\n }\n const flag = searchParams.get('isSuccess')?.toLowerCase();\n if (flag === 'true') {\n return true;\n }\n if (flag === 'false') {\n return false;\n }\n const code = searchParams.get('code');\n return code != null && code.length > 0;\n}\n\nconst PostMcpOauthScreen = () => {\n const [result, setResult] = useState<McpAuthPopupMessage | null>();\n\n useEffect(() => {\n const searchParams = new URLSearchParams(window.location.search);\n const popupUid = searchParams.get('pUid');\n const isSuccess = resolvePopupSuccess(searchParams);\n setResult(popupUid ? { popupUid, isSuccess } : null);\n\n const broadcastResult = () => {\n if (!popupUid) return;\n\n const channel = new BroadcastChannel(MCP_AUTH_POPUP_CHANNEL);\n const message: McpAuthPopupMessage = { popupUid, isSuccess };\n channel.postMessage(message);\n channel.close();\n };\n\n broadcastResult();\n const retryTimeout = window.setTimeout(broadcastResult, BROADCAST_RETRY_DELAY_MS);\n const closeTimeout = window.setTimeout(() => {\n window.close();\n }, WINDOW_CLOSE_DELAY_MS);\n\n return () => {\n window.clearTimeout(retryTimeout);\n window.clearTimeout(closeTimeout);\n };\n }, []);\n\n const isSuccess = !!result?.isSuccess;\n const title =\n result === undefined ? 'Completing authorization' : isSuccess ? 'Authorization successful' : 'Authorization failed';\n const description =\n result === undefined\n ? 'Please wait while the authorization result is confirmed.'\n : result === null\n ? 'The authorization result is invalid. You can close this window and try again.'\n : isSuccess\n ? 'The MCP server is now connected. This window will close automatically.'\n : 'The MCP server could not be authorized. You can close this window and try again.';\n\n return (\n <main className=\"flex min-h-screen items-center justify-center bg-primary-bg p-6\">\n <div className=\"flex w-full max-w-md flex-col items-center gap-3 rounded-2xl border border-border bg-card-bg p-8 text-center shadow-sm\">\n {result === undefined ? (\n <Icon name=\"oauth-loading\" className=\"size-16 animate-spin text-text-secondary\" />\n ) : isSuccess ? (\n <Icon name=\"oauth-success\" className=\"size-16 text-success-bg\" />\n ) : (\n <Icon name=\"oauth-error\" className=\"size-16 text-failure-bg\" />\n )}\n <h1 className=\"text-2xl font-semibold text-text-primary\">{title}</h1>\n <p className=\"text-sm leading-6 text-text-secondary\">{description}</p>\n </div>\n </main>\n );\n};\n\nexport default PostMcpOauthScreen;\n","'use client';\n\nimport { useAuiState, type MessagePrimitive } from '@assistant-ui/react';\nimport { useState, type PropsWithChildren, type ReactNode } from 'react';\n\nimport { useSlot } from '../theme/SlotsProvider.js';\n\nexport type ThreadGroupPart = MessagePrimitive.GroupedParts.GroupPart;\n\nexport function ToolGroupContainer({ children, group }: PropsWithChildren<{ group: ThreadGroupPart }>) {\n const ToolGroupCard = useSlot('ToolGroupCard');\n\n const toolCallCount = group.indices.length;\n\n const active = useAuiState(s => {\n if (s.message.status?.type !== 'running') return false;\n const lastIndex = s.message.parts.length - 1;\n if (lastIndex < 0) return false;\n if (s.message.parts[lastIndex]?.type !== 'tool-call') return false;\n const lastGroupIndex = group.indices[group.indices.length - 1];\n return lastGroupIndex !== undefined && lastIndex >= group.indices[0]! && lastIndex <= lastGroupIndex;\n });\n\n const [expanded, setExpanded] = useState(true);\n const [prevActive, setPrevActive] = useState(active);\n if (active !== prevActive) {\n setPrevActive(active);\n if (active) setExpanded(true);\n }\n\n return (\n <ToolGroupCard\n toolCallCount={toolCallCount}\n expanded={expanded}\n active={active}\n onToggle={() => setExpanded(prev => !prev)}\n >\n {children as ReactNode}\n </ToolGroupCard>\n );\n}\n","'use client';\n\nimport { lazy, Suspense, type ComponentType } from 'react';\n\nimport { SlotsProvider } from '../theme/SlotsProvider.js';\nimport PostMcpOauthScreen from './McpOauthContainer/PostMcpOauthScreen.js';\nimport { ServerInitLoader, TrueForgeUIShell, type TrueForgeUIProps } from './TrueForgeUIShell.js';\n\nexport type { RoutePlace, RoutesConfig } from '../routing/types.js';\nexport type { AgentConfig } from '../server/ShellModeContext.js';\nexport type { TrueForgeBuiltInServerConfig, TrueForgeServerConfig } from '../server/TrueForgeServerConfig.js';\nexport type { LayoutProp } from '../theme/types.js';\nexport type { ChatLayout, TrueForgeUIProps } from './TrueForgeUIShell.js';\n\n// Lazy so `react-router` stays out of the base bundle unless `withRouter` is set.\nconst TrueForgeUIWithRouter = lazy<ComponentType<Omit<TrueForgeUIProps, 'withRouter'>>>(() =>\n import('./TrueForgeUIWithRouter.js').then(m => ({ default: m.TrueForgeUIWithRouter })),\n);\n\n/**\n * Quick-start assistant UI: slots + runtime + a built-in or custom layout.\n * Pass a built-in `server` config, a ready `AgentUIServer`, and optional `agentConfig`.\n */\nexport function TrueForgeUI(props: TrueForgeUIProps) {\n const isMcpAuthScreen =\n typeof window !== 'undefined' && new URLSearchParams(window.location.search).get('screenType') === 'mcp-auth';\n\n // The callback skips server resolution but still inherits host theme and slots.\n if (isMcpAuthScreen) {\n return (\n <SlotsProvider overrides={props.overrides} theme={props.theme}>\n <PostMcpOauthScreen />\n </SlotsProvider>\n );\n }\n\n const { withRouter, ...rest } = props;\n if (withRouter) {\n return (\n <Suspense fallback={<ServerInitLoader className={props.className} />}>\n <TrueForgeUIWithRouter {...rest} />\n </Suspense>\n );\n }\n return <TrueForgeUIShell {...rest} />;\n}\n","'use client';\n\nimport './icons/registerAgentIcons.js';\n\nexport { BrandLogo, resolveBrandChrome, useBrandName } from './theme/brand.js';\nexport type { BrandChrome } from './theme/brand.js';\nexport { defaultSlots } from './theme/defaultSlots.js';\nexport { PRESETS, resolvePresetTokens } from './theme/presets/index.js';\nexport type { PublicAtomSlots as AtomSlots, SlotOverrides } from './theme/publicSlots.js';\nexport { SlotsProvider, useSlot, useThemeMode } from './theme/SlotsProvider.js';\nexport type { ThemeMode } from './theme/SlotsProvider.js';\nexport {\n ThemeProvider,\n useBrand,\n useContentClassNames,\n useOptionalContentClassNames,\n useThemeIcons,\n} from './theme/ThemeProvider.js';\nexport type {\n BrandConfig,\n BrandImage,\n BrandLogoConfig,\n BrandMode,\n ContentClassNames,\n IconMap,\n LayoutProp,\n SemanticTokens,\n ThemeConfig,\n IconProps as ThemeIconProps,\n ThemePreset,\n} from './theme/types.js';\n\nexport { PermissionGuard } from './atoms/PermissionGuard.js';\nexport type { PermissionGuardProps } from './atoms/PermissionGuard.js';\nexport { BottomSheet } from './atoms/primitives/BottomSheet.js';\nexport type { BottomSheetProps } from './atoms/primitives/BottomSheet.js';\nexport { Button } from './atoms/primitives/Button.js';\nexport type { ButtonProps, ButtonSize, ButtonVariant, FixedVariantButtonProps } from './atoms/primitives/Button.js';\nexport { CenteredModal } from './atoms/primitives/CenteredModal.js';\nexport type { CenteredModalProps } from './atoms/primitives/CenteredModal.js';\nexport type { IconButtonProps } from './atoms/primitives/IconButton.js';\nexport { PopoverSelect } from './atoms/primitives/PopoverSelect.js';\nexport type { PopoverSelectOption, PopoverSelectProps } from './atoms/primitives/PopoverSelect.js';\nexport { ResponsiveDropdownMenu } from './atoms/primitives/ResponsiveDropdownMenu.js';\nexport type { ResponsiveDropdownMenuProps } from './atoms/primitives/ResponsiveDropdownMenu.js';\nexport { SideDrawer } from './atoms/primitives/SideDrawer.js';\nexport type { SideDrawerAnchor, SideDrawerProps, SideDrawerSize } from './atoms/primitives/SideDrawer.js';\nexport { Switch } from './atoms/primitives/Switch.js';\nexport type { SwitchProps, SwitchSize } from './atoms/primitives/Switch.js';\nexport {\n DEFAULT_TABLE_PAGE_SIZE,\n TABLE_PAGE_SIZE_OPTIONS,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TablePagination,\n TableRow,\n TableTokenPagination,\n} from './atoms/primitives/Table.js';\nexport type {\n TableBodyProps,\n TableCellProps,\n TableHeadProps,\n TableHeaderProps,\n TablePaginationProps,\n TableProps,\n TableRowProps,\n TableTokenPaginationProps,\n} from './atoms/primitives/Table.js';\nexport { ScheduleFormDrawer } from './atoms/schedules/ScheduleFormDrawer.js';\nexport type { ScheduleFormDrawerProps } from './atoms/schedules/ScheduleFormDrawer.js';\nexport { ScheduleFormFields } from './atoms/schedules/ScheduleFormFields.js';\nexport type { ScheduleFormFieldsProps } from './atoms/schedules/ScheduleFormFields.js';\nexport { ScheduleLastRunsCell } from './atoms/schedules/ScheduleLastRunsCell.js';\nexport { ScheduleRunChip } from './atoms/schedules/ScheduleRunChip.js';\nexport { SchedulesPage } from './atoms/schedules/SchedulesPage.js';\nexport type { SchedulesPageProps } from './atoms/schedules/SchedulesPage.js';\nexport { ScheduleStatusBadge } from './atoms/schedules/ScheduleStatusBadge.js';\nexport { TestScheduleScreen } from './atoms/schedules/TestScheduleScreen.js';\nexport type { ScheduleMcpMount, TestScheduleScreenProps } from './atoms/schedules/TestScheduleScreen.js';\nexport { SchedulesButton } from './atoms/SchedulesButton.js';\nexport type { SchedulesButtonProps } from './atoms/SchedulesButton.js';\nexport { Icon } from './icons/Icon.js';\nexport type { IconProps } from './icons/Icon.js';\n\nexport { Avatar, AvatarFallback, AvatarImage } from './atoms/primitives/Avatar.js';\nexport type { AvatarFallbackProps, AvatarImageProps, AvatarProps } from './atoms/primitives/Avatar.js';\n\nexport { AssistantMessageBubble } from './atoms/AssistantMessageBubble.js';\nexport type { AssistantMessageBubbleProps } from './atoms/AssistantMessageBubble.js';\nexport { ChatFileDownload } from './atoms/ChatFileDownload.js';\nexport type { ChatFileDownloadFile, ChatFileDownloadProps } from './atoms/ChatFileDownload.js';\nexport { CodeEditor } from './atoms/CodeEditor.js';\nexport type { CodeEditorProps } from './atoms/CodeEditor.js';\nexport { HistoryLoader } from './atoms/HistoryLoader.js';\nexport type { HistoryLoaderProps } from './atoms/HistoryLoader.js';\nexport { Markdown, preloadMarkdownOpenUI } from './atoms/Markdown.js';\nexport type { MarkdownProps } from './atoms/Markdown.js';\nexport { MessageActionBar } from './atoms/MessageActionBar.js';\nexport type { MessageActionBarProps } from './atoms/MessageActionBar.js';\nexport { MessageErrorBanner } from './atoms/MessageErrorBanner.js';\nexport type { MessageErrorBannerProps } from './atoms/MessageErrorBanner.js';\nexport { MessageIndicator } from './atoms/MessageIndicator.js';\nexport type { MessageIndicatorProps } from './atoms/MessageIndicator.js';\nexport { MessageTimestamp } from './atoms/MessageTimestamp.js';\nexport type { MessageTimestampProps } from './atoms/MessageTimestamp.js';\nexport { MonacoEditorCore } from './atoms/MonacoEditorCore.js';\nexport type { MonacoEditorCoreProps } from './atoms/MonacoEditorCore.js';\nexport { OpenUiFenceBlock } from './atoms/OpenUiFenceBlock.js';\nexport type { OpenUiFenceBlockProps } from './atoms/OpenUiFenceBlock.js';\nexport { SandboxArtifactDownload } from './atoms/SandboxArtifactDownload.js';\nexport type { SandboxArtifactDownloadProps } from './atoms/SandboxArtifactDownload.js';\nexport { ScrollToBottomButton } from './atoms/ScrollToBottomButton.js';\nexport type { ScrollToBottomButtonProps } from './atoms/ScrollToBottomButton.js';\nexport { MessageListSkeleton } from './atoms/Skeletons.js';\nexport type { MessageListSkeletonProps } from './atoms/Skeletons.js';\nexport { SyntaxHighlighter } from './atoms/SyntaxHighlighter.js';\nexport type { SyntaxHighlighterProps } from './atoms/SyntaxHighlighter.js';\nexport { MessageGroup, ThreadComposerAreaShell, ThreadRootShell, ThreadViewportShell } from './atoms/ThreadShell.js';\nexport type {\n MessageGroupProps,\n ThreadComposerAreaShellProps,\n ThreadRootShellProps,\n ThreadViewportShellProps,\n} from './atoms/ThreadShell.js';\nexport { UserAvatar } from './atoms/UserAvatar.js';\nexport type { UserAvatarProps } from './atoms/UserAvatar.js';\nexport { UserMessageActionBar } from './atoms/UserMessageActionBar.js';\nexport type { UserMessageActionBarProps } from './atoms/UserMessageActionBar.js';\nexport { UserMessageBubble } from './atoms/UserMessageBubble.js';\nexport type { UserMessageBubbleProps } from './atoms/UserMessageBubble.js';\nexport { UserMessageEdit } from './atoms/UserMessageEdit.js';\nexport type { UserMessageEditProps } from './atoms/UserMessageEdit.js';\nexport { WelcomeScreen } from './atoms/WelcomeScreen.js';\nexport type { WelcomeScreenProps } from './atoms/WelcomeScreen.js';\n\nexport { AgentStepsCard } from './atoms/adapters/AgentStepsCardAdapter.js';\nexport type { AgentStepsCardProps } from './atoms/adapters/AgentStepsCardAdapter.js';\nexport type {\n AskUserAnswerDraft,\n AnsweredQuestion as AskUserAnsweredQuestion,\n AskUserPromptProps,\n Question as AskUserQuestion,\n AskUserPromptProps as AskUserQuestionCardProps,\n} from './atoms/adapters/AskUserPromptAdapter.js';\nexport type {\n McpAuthPromptProps as McpAuthCardProps,\n McpAuthPromptProps,\n McpServer as McpAuthServer,\n} from './atoms/adapters/McpAuthPromptAdapter.js';\nexport type { ReasoningCardProps } from './atoms/adapters/ReasoningCardAdapter.js';\nexport { AttachmentCard, USER_MESSAGE_ATTACHMENT_PREVIEW_REM } from './atoms/AttachmentCard.js';\nexport type { AttachmentCardProps, AttachmentCardSize } from './atoms/AttachmentCard.js';\nexport { AttachmentPickerButton } from './atoms/AttachmentPickerButton.js';\nexport type { AttachmentPickerButtonProps } from './atoms/AttachmentPickerButton.js';\nexport { AttachmentPreviewDialog } from './atoms/AttachmentPreviewDialog.js';\nexport type { AttachmentPreviewDialogProps } from './atoms/AttachmentPreviewDialog.js';\nexport { ComposerLeftSection, ComposerRightSection, ComposerSendButton } from './atoms/ComposerSections.js';\nexport type {\n ComposerLeftSectionProps,\n ComposerRightSectionProps,\n ComposerSendButtonProps,\n} from './atoms/ComposerSections.js';\nexport { ComposerShell } from './atoms/ComposerShell.js';\nexport type { ComposerShellProps } from './atoms/ComposerShell.js';\nexport { ResumeUnavailable } from './atoms/ResumeUnavailable.js';\nexport type { ResumeUnavailableProps } from './atoms/ResumeUnavailable.js';\nexport { SandboxToolCallCard } from './atoms/SandboxToolCallCard.js';\nexport type { SandboxToolCallCardProps } from './atoms/SandboxToolCallCard.js';\nexport { SubAgentCard } from './atoms/SubAgentCard.js';\nexport type { SubAgentCardProps } from './atoms/SubAgentCard.js';\nexport {\n ThreadListEmptyState,\n ThreadListNewButton,\n ThreadListRowSkeleton,\n ThreadListShell,\n} from './atoms/ThreadListMisc.js';\nexport type {\n ThreadListEmptyStateProps,\n ThreadListNewButtonProps,\n ThreadListRowSkeletonProps,\n ThreadListShellProps,\n} from './atoms/ThreadListMisc.js';\nexport { ThreadListRow } from './atoms/ThreadListRow.js';\nexport type { ThreadListRowProps } from './atoms/ThreadListRow.js';\nexport { Toast, ToastStack } from './atoms/Toast.js';\nexport type { ToastProps, ToastStackProps } from './atoms/Toast.js';\nexport { ToolApprovalBar } from './atoms/ToolApprovalBar.js';\nexport type { ToolApprovalBarProps } from './atoms/ToolApprovalBar.js';\nexport { ToolCallCard } from './atoms/ToolCallCard.js';\nexport type { ToolCallCardProps, ToolCallStatus } from './atoms/ToolCallCard.js';\nexport { ToolCallContentBlock } from './atoms/ToolCallContentBlock.js';\nexport type { ToolCallContentBlockProps } from './atoms/ToolCallContentBlock.js';\nexport { ToolGroupCard } from './atoms/ToolGroupCard.js';\nexport type { ToolGroupCardProps } from './atoms/ToolGroupCard.js';\nexport { AgentStepsContainer } from './containers/AgentStepsContainer.js';\nexport type { AgentStepsContainerProps } from './containers/AgentStepsContainer.js';\nexport { ApprovalNavContainer } from './containers/ApprovalNavContainer.js';\nexport { AskUserContainer } from './containers/AskUserContainer.js';\nexport { AssistantMessageContainer } from './containers/AssistantMessageContainer.js';\nexport { AssistantTextContainer } from './containers/AssistantTextContainer.js';\nexport {\n ComposerAttachmentPickerContainer,\n ComposerAttachmentsContainer,\n MessageAttachmentsContainer,\n} from './containers/AttachmentsContainer.js';\nexport { ComposerContainer } from './containers/ComposerContainer.js';\nexport type { ComposerContainerProps } from './containers/ComposerContainer.js';\nexport { CustomActionContainer } from './containers/CustomActionContainer.js';\nexport { HistoryLoaderContainer } from './containers/HistoryLoaderContainer.js';\nexport { McpAuthContainer } from './containers/McpAuthContainer.js';\nexport { default as PostMcpOauthScreen } from './containers/McpOauthContainer/PostMcpOauthScreen.js';\nexport { ReasoningContainer } from './containers/ReasoningContainer.js';\nexport { ResumeUnavailableContainer } from './containers/ResumeUnavailableContainer.js';\nexport { Thread } from './containers/Thread.js';\nexport { ThreadContainer } from './containers/ThreadContainer.js';\nexport type { ThreadContainerProps } from './containers/ThreadContainer.js';\nexport { ThreadListContainer } from './containers/ThreadListContainer.js';\nexport type { ThreadListContainerProps } from './containers/ThreadListContainer.js';\nexport { ToasterProvider, useToaster, useToasterOptional } from './containers/ToasterContainer.js';\nexport { ToolApprovalContainer } from './containers/ToolApprovalContainer.js';\nexport type { ToolApprovalOption } from './containers/ToolApprovalContainer.js';\nexport { ToolCallContainer } from './containers/ToolCallContainer.js';\nexport { ToolCallContentBlockContainer } from './containers/ToolCallContentBlockContainer.js';\nexport { ToolGroupContainer } from './containers/ToolGroupContainer.js';\nexport type { ThreadGroupPart } from './containers/ToolGroupContainer.js';\nexport { TrueForgeUI } from './containers/TrueForgeUI.js';\nexport type {\n ChatLayout,\n RoutePlace,\n RoutesConfig,\n TrueForgeBuiltInServerConfig,\n TrueForgeServerConfig,\n TrueForgeUIProps,\n} from './containers/TrueForgeUI.js';\nexport { TrueFoundryChatProvider } from './containers/TrueFoundryChatProvider.js';\nexport type { TrueFoundryChatProviderProps } from './containers/TrueFoundryChatProvider.js';\nexport { UserEditComposerContainer } from './containers/UserEditComposerContainer.js';\nexport { UserMessageContainer } from './containers/UserMessageContainer.js';\nexport { useApprovalNav } from './hooks/useApprovalNav.js';\nexport type { ApprovalNavState } from './hooks/useApprovalNav.js';\nexport { ComposerBusyProvider, useComposerBusyState } from './hooks/useComposerBusyState.js';\nexport type { ComposerBusyState } from './hooks/useComposerBusyState.js';\nexport { threadHasPendingMcpAuth, useComposerPauseView } from './hooks/useComposerPauseView.js';\nexport type { ComposerPauseView, ThreadPauseState } from './hooks/useComposerPauseView.js';\nexport { MCP_AUTH_POPUP_CHANNEL, useMCPAuth } from './hooks/useMcpAuth.js';\nexport type { McpAuthCallback, McpAuthPopupMessage, UseMCPAuthOptions } from './hooks/useMcpAuth.js';\nexport { useResourcePermissions } from './hooks/useResourcePermissions.js';\nexport type { UseResourcePermissionsOptions, UseResourcePermissionsResult } from './hooks/useResourcePermissions.js';\n\n// Curated chrome hooks (same instance as the SDK runtime). Deep primitives: install @assistant-ui/react.\nexport { useAui, useAuiState } from './assistant-ui.js';\nexport type { AssistantState } from './assistant-ui.js';\nexport { useOptionalCurrentUser } from './contexts/CurrentUserContext.js';\nexport type { CurrentUser } from './contexts/CurrentUserContext.js';\nexport { useTheme } from './theme/useTheme.js';\n\n// Runtime / server — consumer surface.\nexport {\n mergeAgentSpec,\n trueFoundryAttachmentAdapter,\n useTrueFoundryAgentRuntime,\n useTrueFoundryAgentSpec,\n useTrueFoundryApprovals,\n useTrueFoundryCancel,\n useTrueFoundryDownloadSandboxFile,\n useTrueFoundryHistoryPagination,\n useTrueFoundryMcpAuth,\n useTrueFoundryRespondToToolApproval,\n useTrueFoundryToolResponses,\n useTrueFoundryTurnId,\n useTrueFoundryUpdateAgentSpec,\n} from '@truefoundry/assistant-ui-runtime';\nexport type {\n DraftAgentConfig,\n NamedAgentConfig,\n TrueFoundryAgentConfig,\n UseTrueFoundryAgentRuntimeOptions,\n} from '@truefoundry/assistant-ui-runtime';\n\n// Server port types + factory\nexport { ClearChatButton } from './atoms/ClearChatButton.js';\nexport {\n IS_CREATE_AGENT_METADATA_KEY,\n isCreateAgentMetadataValue,\n readSessionIsCreateAgent,\n sessionIsCreateAgent,\n} from './atoms/lib/sessionCreateAgent.js';\nexport { SelectAgentEmptyState } from './atoms/SelectAgentEmptyState.js';\nexport { ShellActionsActionSlot } from './atoms/ShellActionsActionSlot.js';\nexport { createTrueFoundryServer } from './server/createTrueFoundryServer.js';\nexport type { CreateTrueFoundryServerOptions, TrueFoundryServer } from './server/createTrueFoundryServer.js';\nexport {\n CustomActionRenderersProvider,\n useOptionalCustomActionRenderers,\n} from './server/CustomActionRenderersContext.js';\nexport type { CustomActionRendererProps, CustomActionRenderers } from './server/CustomActionRenderersContext.js';\nexport {\n ServerProvider,\n useAgentMetricsServer,\n useAgentSessionsServer,\n useCatalogServer,\n useOptionalAgentMetricsServer,\n useOptionalAgentSessionsServer,\n useOptionalCatalogServer,\n useOptionalPermissionsServer,\n useOptionalScheduleServer,\n useOptionalServer,\n useScheduleServer,\n useServer,\n useServerCapabilities,\n} from './server/ServerContext.js';\nexport {\n DEFAULT_AGENT_CONFIG,\n ShellModeProvider,\n libraryAgentId,\n shellIsCreateAgent,\n shellIsMutable,\n useOptionalShellMode,\n useShellMode,\n} from './server/ShellModeContext.js';\nexport type { AgentConfig, SelectLibraryAgentRequest, ShellMode } from './server/ShellModeContext.js';\nexport type {\n AgentBuilderCapabilitiesResponse,\n AgentBuilderServer,\n AgentChatServer,\n AgentDetail,\n AgentLibraryEntry,\n AgentMetricChartData,\n AgentMetricChartDataRequest,\n AgentMetricChartDefinition,\n AgentMetricChartType,\n AgentMetricGraph,\n AgentMetricGraphLine,\n AgentMetricMeter,\n AgentMetricPoint,\n AgentMetricRangeRequest,\n AgentMetricsServer,\n AgentSessionsServer,\n AgentSkill,\n AgentSpec,\n AgentUIServer,\n ApprovalDecision,\n AuthenticateConnectorRequest,\n CatalogServer,\n CodeSnippet,\n CodeSnippetSampleCode,\n ConnectorAuth,\n ConnectorAuthApiKey,\n ConnectorAuthNone,\n ConnectorAuthOAuth,\n ConnectorAuthPublic,\n ConnectorAuthPublicApiKey,\n ConnectorAuthPublicNone,\n ConnectorAuthPublicOAuth,\n ConnectorAuthType,\n ConnectorAuthenticationResult,\n ConnectorBase,\n ConnectorCatalogEntry,\n ConnectorCatalogServer,\n ConnectorConfigBase,\n ConnectorState,\n CreateConnectorRequest,\n CreateModelProviderRequest,\n CreateSandboxProviderRequest,\n CreateSessionRequest,\n CreateSkillRequest,\n CreateSkillRequestBase,\n DefinedSkill,\n GithubSkill,\n ImportGithubSkillRequest,\n ListPermissionsRequest,\n ListPermissionsResponse,\n ListResult,\n ListSessionEventsParams,\n ListSessionsOrder,\n ListSessionsParams,\n McpServerMount,\n Model,\n ModelCatalogServer,\n ModelEntry,\n ModelParams,\n ModelProperties,\n ModelProviderBase,\n ModelProviderCatalogEntry,\n ModelProviderConfigBase,\n ModelSelection,\n ModelSelectorEntry,\n PageParams,\n PermissionResourceType,\n PermissionsServer,\n PreviousTurnIdInput,\n ProviderEntry,\n ProviderType,\n RegistrySkill,\n ResourcePermission,\n SandboxCatalogServer,\n SandboxProviderBase,\n SandboxProviderCatalogEntry,\n SandboxProviderConfig,\n SandboxProviderListEntry,\n SandboxSnapshotSyncStatus,\n SaveAgentRequest,\n SaveAgentResult,\n SearchAgentsParams,\n SelectRegistrySkillRequest,\n Session,\n SessionEventItem,\n SessionListEntry,\n SessionListMetrics,\n SkillBase,\n SkillCatalogEntry,\n SkillCatalogServer,\n SkillConfigBase,\n SkillMount,\n ToolBase,\n Turn,\n TurnDoneMetrics,\n TurnInputItem,\n TurnState,\n TurnStreamData,\n TurnStreamingEvent,\n UpdateConnectorRequest,\n UpdateModelProviderRequest,\n UpdateSandboxProviderRequest,\n UpdateSessionRequest,\n UserMessage,\n UserMessageContent,\n UserToolApprovalEvent,\n UserToolResponseEvent,\n} from './server/types.js';\n\nexport { AgentCodeBlock } from './atoms/agent-details/AgentCodeBlock.js';\nexport { AgentDetailsHeader } from './atoms/agent-details/AgentDetailsHeader.js';\nexport { AgentDetailsPage } from './atoms/agent-details/AgentDetailsPage.js';\nexport { AgentDetailsTabs } from './atoms/agent-details/AgentDetailsTabs.js';\nexport { AgentDetailsUnavailable } from './atoms/agent-details/AgentDetailsUnavailable.js';\nexport { AgentMetricCard } from './atoms/agent-details/AgentMetricCard.js';\nexport { AgentMetricChart } from './atoms/agent-details/AgentMetricChart.js';\nexport { AgentMetricsTimeRangeFilter } from './atoms/agent-details/AgentMetricsTimeRangeFilter.js';\nexport { AgentMetricsView } from './atoms/agent-details/AgentMetricsView.js';\nexport { AgentOverviewCard } from './atoms/agent-details/AgentOverviewCard.js';\nexport type {\n AgentCodeBlockProps,\n AgentCodeSnippetsProps,\n AgentDetailsHeaderProps,\n AgentDetailsPageProps,\n AgentDetailsTab,\n AgentDetailsTabsProps,\n AgentDetailsUnavailableProps,\n AgentMetricCardProps,\n AgentMetricChartProps,\n AgentMetricChartResult,\n AgentMetricsProps,\n AgentMetricsTimeRangeFilterProps,\n AgentMetricsViewProps,\n AgentOverviewCardProps,\n AgentOverviewProps,\n AgentSessionDetailHeaderProps,\n AgentSessionEventTimelineChartProps,\n AgentSessionEventTimelineProps,\n AgentSessionListRowProps,\n AgentSessionMetricsStripProps,\n AgentSessionTurnHeaderProps,\n AgentSessionsProps,\n} from './atoms/agent-details/types.js';\nexport { AgentMetricsContainer } from './containers/AgentMetricsContainer.js';\nexport type { SessionEventTimelineSegment, SessionEventType } from './utils/sessionEventTimeline.js';\nexport type { SessionTurnView } from './utils/sessionTurnViews.js';\n\n// Utils\nexport { computeAgentStepsSplit } from './utils/computeAgentStepsSplit.js';\nexport type { AgentStepPart, AgentStepsSplitResult } from './utils/computeAgentStepsSplit.js';\nexport { findSubAgentAncestorsForApproval } from './utils/findApprovalAncestors.js';\nexport { getErrorMessage } from './utils/getErrorMessage.js';\n\nexport { AgentSessionsFilters } from './atoms/agent-details/AgentSessionsFilters.js';\nexport type { AgentSessionsFiltersProps } from './atoms/agent-details/AgentSessionsFilters.js';\nexport { SessionsPage } from './atoms/agent-details/SessionsPage.js';\nexport { AgentsLibrary } from './atoms/AgentsLibrary.js';\nexport type { AgentsLibraryProps } from './atoms/AgentsLibrary.js';\nexport { AgentsLibraryButton } from './atoms/AgentsLibraryButton.js';\nexport type { AgentsLibraryButtonProps } from './atoms/AgentsLibraryButton.js';\nexport { ApprovalNavBanner } from './atoms/ApprovalNavBanner.js';\nexport type { ApprovalNavBannerProps } from './atoms/ApprovalNavBanner.js';\nexport { AgentConfigEditors } from './atoms/draft/AgentConfigEditors.js';\nexport type { AgentConfigEditor, AgentConfigEditorsProps } from './atoms/draft/AgentConfigEditors.js';\nexport { AgentConfigPanel, AgentConfigSection } from './atoms/draft/AgentConfigPanel.js';\nexport type { AgentConfigPanelProps } from './atoms/draft/AgentConfigPanel.js';\nexport { AgentCustomParametersEditor } from './atoms/draft/AgentCustomParametersEditor.js';\nexport type { AgentCustomParametersEditorProps } from './atoms/draft/AgentCustomParametersEditor.js';\nexport { AgentInstructionsDrawer } from './atoms/draft/AgentInstructionsDrawer.js';\nexport type { AgentInstructionsDrawerProps } from './atoms/draft/AgentInstructionsDrawer.js';\nexport { AgentMcpEditorContent } from './atoms/draft/AgentMcpEditorContent.js';\nexport type { AgentMcpEditorContentProps } from './atoms/draft/AgentMcpEditorContent.js';\nexport { AgentModelConfigModal } from './atoms/draft/AgentModelConfigModal.js';\nexport type { AgentModelConfigModalProps } from './atoms/draft/AgentModelConfigModal.js';\nexport { AgentModelEditorContent } from './atoms/draft/AgentModelEditorContent.js';\nexport type { AgentModelEditorContentProps } from './atoms/draft/AgentModelEditorContent.js';\nexport { AgentModelSettingsContent } from './atoms/draft/AgentModelSettingsContent.js';\nexport type { AgentModelSettingsContentProps } from './atoms/draft/AgentModelSettingsContent.js';\nexport { AgentResourceConfigModal } from './atoms/draft/AgentResourceConfigModal.js';\nexport type { AgentResourceConfigModalProps } from './atoms/draft/AgentResourceConfigModal.js';\nexport { AgentResourceEditorContent } from './atoms/draft/AgentResourceEditorContent.js';\nexport type { AgentResourceEditorContentProps } from './atoms/draft/AgentResourceEditorContent.js';\nexport { AgentRuntimeConfigDrawer } from './atoms/draft/AgentRuntimeConfigDrawer.js';\nexport type { AgentRuntimeConfigDrawerProps } from './atoms/draft/AgentRuntimeConfigDrawer.js';\nexport { AgentRuntimeConfigFields } from './atoms/draft/AgentRuntimeConfigFields.js';\nexport type { AgentRuntimeConfigFieldsProps } from './atoms/draft/AgentRuntimeConfigFields.js';\nexport { AgentRuntimeEditorContent } from './atoms/draft/AgentRuntimeEditorContent.js';\nexport type { AgentRuntimeEditorContentProps } from './atoms/draft/AgentRuntimeEditorContent.js';\nexport { AgentSkillsEditorContent } from './atoms/draft/AgentSkillsEditorContent.js';\nexport type { AgentSkillsEditorContentProps } from './atoms/draft/AgentSkillsEditorContent.js';\nexport { DraftAgentConfigTrigger } from './atoms/draft/DraftAgentConfigTrigger.js';\nexport type { DraftAgentConfigTriggerProps } from './atoms/draft/DraftAgentConfigTrigger.js';\nexport { DraftCapabilitiesPanel } from './atoms/draft/DraftCapabilitiesPanel.js';\nexport { DraftCatalogProvider, useDraftCatalog } from './atoms/draft/DraftCatalogProvider.js';\nexport { DraftComposerActionsMenu } from './atoms/draft/DraftComposerActionsMenu.js';\nexport type { DraftComposerAction, DraftComposerActionsMenuProps } from './atoms/draft/DraftComposerActionsMenu.js';\nexport { DraftComposerLeftSection, DraftComposerRightSection } from './atoms/draft/DraftComposerSections.js';\nexport { DraftCompositeSelector } from './atoms/draft/DraftCompositeSelector.js';\nexport type { DraftCompositeSelectorProps } from './atoms/draft/DraftCompositeSelector.js';\nexport { DraftModelSelector } from './atoms/draft/DraftModelSelector.js';\nexport type { DraftModelSelectorProps } from './atoms/draft/DraftModelSelector.js';\nexport { SaveAgentButton } from './atoms/SaveAgentButton.js';\nexport type { SaveAgentButtonProps } from './atoms/SaveAgentButton.js';\nexport { SaveAgentForm } from './atoms/SaveAgentForm.js';\nexport type { SaveAgentFormProps } from './atoms/SaveAgentForm.js';\nexport { SessionsBrowserButton } from './atoms/SessionsBrowserButton.js';\nexport type { SessionsBrowserButtonProps } from './atoms/SessionsBrowserButton.js';\n"],"mappings":"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","names":["React","jsx","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsxs","React","jsx","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","isSuccess","useAuiState","useState","jsx","ToolGroupCard","useAuiState","useState","jsx"]}
@@ -1,6 +1,6 @@
1
- import { T as TrueFoundryServer } from '../../createTrueFoundryServer-CmZnBh_l.js';
1
+ import { T as TrueFoundryServer } from '../../createTrueFoundryServer-B_FYhSdn.js';
2
2
  import * as _truefoundry_assistant_ui_runtime from '@truefoundry/assistant-ui-runtime';
3
- import { AgentSpec as AgentSpec$1, AgentMetricsServer as AgentMetricsServer$1, AgentSessionsServer as AgentSessionsServer$1, AgentBuilderServer, ModelSelection as ModelSelection$1, ConnectorCatalogServer as ConnectorCatalogServer$1, ToolBase as ToolBase$1, ConnectorAuth as ConnectorAuth$1, ConnectorAuthPublic as ConnectorAuthPublic$1, ConnectorBase as ConnectorBase$1, ConnectorCatalogEntry as ConnectorCatalogEntry$1, CreateConnectorRequest as CreateConnectorRequest$1, UpdateConnectorRequest as UpdateConnectorRequest$1, ModelCatalogServer as ModelCatalogServer$1, ModelEntry as ModelEntry$1, ModelProviderBase as ModelProviderBase$1, ModelProviderCatalogEntry as ModelProviderCatalogEntry$1, CreateModelProviderRequest as CreateModelProviderRequest$1, UpdateModelProviderRequest as UpdateModelProviderRequest$1, SandboxProviderConfig, SandboxCatalogServer as SandboxCatalogServer$1, SandboxProviderListEntry as SandboxProviderListEntry$1, SandboxProviderBase, SkillCatalogServer as SkillCatalogServer$1, DefinedSkill, SkillConfigBase as SkillConfigBase$1, AgentChatServer, Session, CreateSessionRequest, PageParams as PageParams$1, ListResult as ListResult$1, ScheduleServer as ScheduleServer$1, CatalogServer } from '@truefoundry/assistant-ui-runtime/server';
3
+ import { AgentSpec as AgentSpec$1, AgentMetricsServer as AgentMetricsServer$1, AgentSessionsServer as AgentSessionsServer$1, AgentBuilderServer, ModelSelection as ModelSelection$1, ConnectorCatalogServer as ConnectorCatalogServer$1, ToolBase as ToolBase$1, ConnectorAuth as ConnectorAuth$1, ConnectorAuthPublic as ConnectorAuthPublic$1, ConnectorBase as ConnectorBase$1, ConnectorCatalogEntry as ConnectorCatalogEntry$1, CreateConnectorRequest as CreateConnectorRequest$1, UpdateConnectorRequest as UpdateConnectorRequest$1, ModelCatalogServer as ModelCatalogServer$1, ModelEntry as ModelEntry$1, ModelProviderBase as ModelProviderBase$1, ModelProviderCatalogEntry as ModelProviderCatalogEntry$1, CreateModelProviderRequest as CreateModelProviderRequest$1, UpdateModelProviderRequest as UpdateModelProviderRequest$1, SandboxProviderConfig, SandboxCatalogServer as SandboxCatalogServer$1, SandboxProviderListEntry as SandboxProviderListEntry$1, SandboxProviderBase, SkillCatalogServer as SkillCatalogServer$1, DefinedSkill, SkillConfigBase as SkillConfigBase$1, AgentChatServer, Session, CreateSessionRequest, PermissionsServer, ScheduleServer as ScheduleServer$1, CatalogServer } from '@truefoundry/assistant-ui-runtime/server';
4
4
  import { TrueForge, TrueForgeApi } from '@truefoundry/trueforge-sdk';
5
5
 
6
6
  /**
@@ -273,6 +273,11 @@ type PageParams = {
273
273
  interface ListSessionsParams extends PageParams {
274
274
  /** Host-owned agent identity filter. Omit for all sessions (current user). */
275
275
  agentId?: string;
276
+ /**
277
+ * When true, only sessions created by the authenticated subject.
278
+ * Omit to include managed-agent visibility where the host supports it.
279
+ */
280
+ createdByMe?: boolean;
276
281
  /** Inclusive lower bound on session activity (ISO-8601). */
277
282
  startTimestamp?: string;
278
283
  /** Inclusive upper bound on session activity (ISO-8601). */
@@ -669,7 +674,7 @@ interface CodeSnippet<TSample extends CodeSnippetSampleCode = CodeSnippetSampleC
669
674
  */
670
675
  interface SessionListMetrics {
671
676
  totalTurns: number;
672
- totalCostInUsd: number;
677
+ totalCostInUsd?: number;
673
678
  totalDurationMs: number;
674
679
  }
675
680
  /**
@@ -711,8 +716,9 @@ interface AgentSessionsServer<TSpec extends AgentSpec = AgentSpec, TDetail exten
711
716
  agentId: string;
712
717
  }): Promise<TSnippet[]>;
713
718
  /**
714
- * List sessions for the current user. Pass `agentId` to scope to one agent;
715
- * omit for all sessions. Use `startTimestamp` / `endTimestamp` for date filters.
719
+ * List sessions visible to the current user. Pass `agentId` to scope to one
720
+ * agent; `createdByMe: true` for only sessions they created. Use
721
+ * `startTimestamp` / `endTimestamp` for date filters.
716
722
  */
717
723
  listSessions(req?: TList): Promise<ListResult<TListEntry>>;
718
724
  /**
@@ -787,6 +793,15 @@ interface ScheduleServer<TSchedule extends Schedule = Schedule, TCreate extends
787
793
  }): Promise<TRun[]>;
788
794
  createScheduleRun(req: CreateScheduleRunRequest): Promise<TRun>;
789
795
  }
796
+ type PermissionResourceType = "agent" | "schedule" | "session";
797
+ type ResourcePermission = "USE" | "MANAGE" | "DELETE";
798
+ interface ListPermissionsRequest {
799
+ resourceType: PermissionResourceType;
800
+ resourceIds: string[];
801
+ }
802
+ interface ListPermissionsResponse {
803
+ data: Record<string, ResourcePermission[]>;
804
+ }
790
805
  type AgentMetricChartType = "line";
791
806
  interface AgentMetricChartDefinition {
792
807
  name: string;
@@ -847,9 +862,12 @@ interface CreateTrueForgeClientOptions {
847
862
  }
848
863
  declare function createTrueForgeClient(options?: CreateTrueForgeClientOptions): TrueForge;
849
864
 
850
- type HarnessSkillMount = TrueForgeApi.Skill;
865
+ /** Catalog attach key may sit on `id`; wire Skill is name-only. See builder getSkills. */
866
+ type HarnessSkillMount = TrueForgeApi.Skill & {
867
+ id?: string;
868
+ };
851
869
  type HarnessMcpServerMount = TrueForgeApi.McpServer;
852
- interface HarnessAgentSpec extends AgentSpec$1<TrueForgeApi.Model, HarnessSkillMount, HarnessMcpServerMount, TrueForgeApi.RuntimeConfig>, TrueForgeApi.AgentSpec {
870
+ interface HarnessAgentSpec extends AgentSpec$1<TrueForgeApi.Model, HarnessSkillMount, HarnessMcpServerMount, TrueForgeApi.RuntimeConfig>, Omit<TrueForgeApi.AgentSpec, 'skills'> {
853
871
  }
854
872
 
855
873
  type CreateHarnessAgentMetricsServerOptions = CreateTrueForgeClientOptions & {
@@ -962,7 +980,7 @@ declare function createSandboxProviderCatalog(client: TrueForge): SandboxCatalog
962
980
  */
963
981
 
964
982
  type UiSkill = DefinedSkill;
965
- declare function toHarnessManifest(req: SkillConfigBase$1): TrueForgeApi.SkillManifest;
983
+ declare function toHarnessManifest(req: SkillConfigBase$1): TrueForgeApi.settings.CreateSkillRequest['manifest'];
966
984
  declare function toUiSkill(skill: TrueForgeApi.ConfiguredSkill, catalogNames: ReadonlySet<string>): UiSkill;
967
985
  /** Settings skill-catalog port for `createTrueFoundryServer`. Delete omitted (no BE route). */
968
986
  declare function createSkillCatalog(client: TrueForge): SkillCatalogServer$1<UiSkill>;
@@ -974,7 +992,7 @@ declare function createSkillCatalog(client: TrueForge): SkillCatalogServer$1<UiS
974
992
  * `nextPageToken`), and `null` normalized to absent. Harness keys MCP mounts by
975
993
  * name and returns `null` for optional fields — the maps below bridge both.
976
994
  *
977
- * Skills are name refs on the wire (`Skill`).
995
+ * Skills are name (+ optional preload) refs on the wire (`Skill`).
978
996
  *
979
997
  * Session create takes `{ name }` or `{ spec }`; reads carry the
980
998
  * `reference`/`inline` discriminator, with reference rows already naming their
@@ -1003,12 +1021,15 @@ declare function createHarnessChatServer(options?: CreateHarnessChatServerOption
1003
1021
  */
1004
1022
 
1005
1023
  declare function listModels(client: TrueForge): Promise<TrueForgeApi.AvailableModel[]>;
1006
- declare function listConfiguredMcpServersPage(client: TrueForge, req?: PageParams$1): Promise<ListResult$1<TrueForgeApi.AvailableMcpServer>>;
1007
- /** Drain every MCP page (full catalog for non-picker callers). */
1008
1024
  declare function listConfiguredMcpServers(client: TrueForge): Promise<TrueForgeApi.AvailableMcpServer[]>;
1009
1025
  declare function listSkills(client: TrueForge): Promise<TrueForgeApi.AvailableSkill[]>;
1010
1026
  declare function getCapabilities(client: TrueForge): Promise<TrueForgeApi.CapabilitiesData>;
1011
1027
 
1028
+ type CreateHarnessPermissionsServerOptions = CreateTrueForgeClientOptions & {
1029
+ client?: TrueForge;
1030
+ };
1031
+ declare function createHarnessPermissionsServer(options?: CreateHarnessPermissionsServerOptions): PermissionsServer;
1032
+
1012
1033
  /**
1013
1034
  * Harness ScheduleServer adapter — maps flat runtime DTOs to SDK wire (manifest + agentName).
1014
1035
  */
@@ -1020,10 +1041,12 @@ declare function createScheduleServer(options: {
1020
1041
  type CreateTrueForgeAgentUIServerOptions = CreateTrueForgeClientOptions & {
1021
1042
  /** Override the default Harness settings catalogs. */
1022
1043
  catalog?: CatalogServer;
1044
+ /** Optional host-provided resource permissions port. */
1045
+ permissions?: PermissionsServer;
1023
1046
  };
1024
1047
  /**
1025
1048
  * Compose chat + builder + agent sessions + default settings catalogs into an `AgentUIServer`.
1026
1049
  */
1027
- declare function createTrueForgeAgentUIServer(options?: CreateTrueForgeAgentUIServerOptions): TrueFoundryServer<HarnessAgentSpec, ModelSelection, _truefoundry_assistant_ui_runtime.SkillSelectorEntry, _truefoundry_assistant_ui_runtime.ConnectorSelectorEntry, _truefoundry_assistant_ui_runtime.AgentSelectorEntry, SaveAgentResult, CatalogServer<ModelCatalogServer<ModelEntry, ModelProviderBase<ModelEntry>, ModelProviderCatalogEntry<ModelEntry>, CreateModelProviderRequest<ModelEntry>, UpdateModelProviderRequest<ModelEntry>>, ConnectorCatalogServer<ToolBase, ConnectorAuth, ConnectorAuthPublic, ConnectorBase<ConnectorAuthPublic>, ConnectorCatalogEntry<ConnectorAuthPublic>, CreateConnectorRequest<ConnectorAuth>, UpdateConnectorRequest<ConnectorAuth>>, SkillCatalogServer<SkillBase, SkillCatalogEntry, CreateSkillRequest>, SandboxCatalogServer<_truefoundry_assistant_ui_runtime.SandboxBase, _truefoundry_assistant_ui_runtime.SandboxCatalogEntry, _truefoundry_assistant_ui_runtime.CreateSandboxRequest, _truefoundry_assistant_ui_runtime.UpdateSandboxRequest, SandboxProviderListEntry<_truefoundry_assistant_ui_runtime.SandboxBase>>>, AgentBuilderCapabilitiesResponse, AgentSessionsServer<HarnessAgentSpec, AgentDetail<HarnessAgentSpec>, CodeSnippet<CodeSnippetSampleCode>, SessionListEntry<HarnessAgentSpec>, ListSessionsParams>, AgentMetricsServer<AgentMetricChartDefinition, AgentMetricMeter, AgentMetricChartData<AgentMetricGraph<AgentMetricGraphLine<AgentMetricPoint>>>, AgentMetricRangeRequest, AgentMetricChartDataRequest>, ScheduleServer<Schedule, CreateScheduleRequest, UpdateScheduleRequest, ScheduleRun>>;
1050
+ declare function createTrueForgeAgentUIServer(options?: CreateTrueForgeAgentUIServerOptions): TrueFoundryServer<HarnessAgentSpec, ModelSelection, _truefoundry_assistant_ui_runtime.SkillSelectorEntry, _truefoundry_assistant_ui_runtime.ConnectorSelectorEntry, _truefoundry_assistant_ui_runtime.AgentSelectorEntry, SaveAgentResult, CatalogServer<ModelCatalogServer<ModelEntry, ModelProviderBase<ModelEntry>, ModelProviderCatalogEntry<ModelEntry>, CreateModelProviderRequest<ModelEntry>, UpdateModelProviderRequest<ModelEntry>>, ConnectorCatalogServer<ToolBase, ConnectorAuth, ConnectorAuthPublic, ConnectorBase<ConnectorAuthPublic>, ConnectorCatalogEntry<ConnectorAuthPublic>, CreateConnectorRequest<ConnectorAuth>, UpdateConnectorRequest<ConnectorAuth>>, SkillCatalogServer<SkillBase, SkillCatalogEntry, CreateSkillRequest>, SandboxCatalogServer<_truefoundry_assistant_ui_runtime.SandboxBase, _truefoundry_assistant_ui_runtime.SandboxCatalogEntry, _truefoundry_assistant_ui_runtime.CreateSandboxRequest, _truefoundry_assistant_ui_runtime.UpdateSandboxRequest, SandboxProviderListEntry<_truefoundry_assistant_ui_runtime.SandboxBase>>>, AgentBuilderCapabilitiesResponse, AgentSessionsServer<HarnessAgentSpec, AgentDetail<HarnessAgentSpec>, CodeSnippet<CodeSnippetSampleCode>, SessionListEntry<HarnessAgentSpec>, ListSessionsParams>, AgentMetricsServer<AgentMetricChartDefinition, AgentMetricMeter, AgentMetricChartData<AgentMetricGraph<AgentMetricGraphLine<AgentMetricPoint>>>, AgentMetricRangeRequest, AgentMetricChartDataRequest>, ScheduleServer<Schedule, CreateScheduleRequest, UpdateScheduleRequest, ScheduleRun>, PermissionsServer<ListPermissionsRequest, ListPermissionsResponse>>;
1028
1051
 
1029
- export { type CreateHarnessAgentMetricsServerOptions, type CreateHarnessAgentSessionsServerOptions, type CreateHarnessBuilderServerOptions, type CreateHarnessChatServerOptions, type CreateTrueForgeAgentUIServerOptions, type CreateTrueForgeClientOptions, type HarnessAgentSpec, type HarnessMcpServerMount, type HarnessSkillMount, configFromHarness, createConnectorCatalog, createHarnessAgentMetricsServer, createHarnessAgentSessionsServer, createHarnessBuilderServer, createHarnessChatServer, createModelProviderCatalog, createSandboxProviderCatalog, createScheduleServer, createSkillCatalog, createTrueForgeAgentUIServer, createTrueForgeClient, filterUiSandboxProviders, getCapabilities, listConfiguredMcpServers, listConfiguredMcpServersPage, listModels, listSkills, modelProviderLogosByName, toHarnessAgentSpec, toHarnessAuth, toHarnessManifest$2 as toHarnessConnectorManifest, toHarnessModelProvider, toHarnessManifest$1 as toHarnessSandboxManifest, toHarnessManifest as toHarnessSkillManifest, toModelSelection, toUiAgentSpec, toUiCatalogModelProviderEntry, toUiConnector, toUiConnectorFromReadEntry, toUiModelProvider, toUiSandboxProvider, toUiSandboxProviderListEntry, toUiSkill };
1052
+ export { type CreateHarnessAgentMetricsServerOptions, type CreateHarnessAgentSessionsServerOptions, type CreateHarnessBuilderServerOptions, type CreateHarnessChatServerOptions, type CreateHarnessPermissionsServerOptions, type CreateTrueForgeAgentUIServerOptions, type CreateTrueForgeClientOptions, type HarnessAgentSpec, type HarnessMcpServerMount, type HarnessSkillMount, configFromHarness, createConnectorCatalog, createHarnessAgentMetricsServer, createHarnessAgentSessionsServer, createHarnessBuilderServer, createHarnessChatServer, createHarnessPermissionsServer, createModelProviderCatalog, createSandboxProviderCatalog, createScheduleServer, createSkillCatalog, createTrueForgeAgentUIServer, createTrueForgeClient, filterUiSandboxProviders, getCapabilities, listConfiguredMcpServers, listModels, listSkills, modelProviderLogosByName, toHarnessAgentSpec, toHarnessAuth, toHarnessManifest$2 as toHarnessConnectorManifest, toHarnessModelProvider, toHarnessManifest$1 as toHarnessSandboxManifest, toHarnessManifest as toHarnessSkillManifest, toModelSelection, toUiAgentSpec, toUiCatalogModelProviderEntry, toUiConnector, toUiConnectorFromReadEntry, toUiModelProvider, toUiSandboxProvider, toUiSandboxProviderListEntry, toUiSkill };