@truefoundry/trueforge-ui 0.3.0-rc.5 → 0.3.0-rc.7

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 (84) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/{AgentCodeSnippets-V5A56M7R.js → AgentCodeSnippets-T7PR6PDP.js} +7 -7
  3. package/dist/AgentMetricChart-J3RCSCAG.js +15 -0
  4. package/dist/{AgentOverview-NPC4P2EY.js → AgentOverview-WC7WMNMS.js} +11 -9
  5. package/dist/AgentOverview-WC7WMNMS.js.map +1 -0
  6. package/dist/{AgentSessionEventTimeline-UUXOJXTC.js → AgentSessionEventTimeline-SETKGGCI.js} +7 -7
  7. package/dist/{AgentSessionEventTimelineChart-FIAQCYJC.js → AgentSessionEventTimelineChart-4Y7PY5SJ.js} +7 -7
  8. package/dist/{AgentSessions-WHODEG2M.js → AgentSessions-YCAPM5GK.js} +8 -8
  9. package/dist/{ConnectorSettings-QTAI4TQX.js → ConnectorSettings-PXWRCFAL.js} +7 -7
  10. package/dist/{DockLayout-TATYU5SV.js → DockLayout-JRKCKAG2.js} +10 -10
  11. package/dist/{DrawerLayout-DXHNV33K.js → DrawerLayout-U7YPUZBR.js} +11 -11
  12. package/dist/{ModelSettings-UWTBHQRG.js → ModelSettings-VXYMJEMO.js} +7 -7
  13. package/dist/OpenUiFenceBlock-KPZFLUSC.js +9 -0
  14. package/dist/{SandboxSettings-BITQONS3.js → SandboxSettings-6DRUH72J.js} +7 -7
  15. package/dist/SchedulesPage-2G6F4XO6.js +15 -0
  16. package/dist/{SettingsBuilder-3OA4UCIM.js → SettingsBuilder-6FJVZLJT.js} +9 -9
  17. package/dist/{SettingsBuilder-3OA4UCIM.js.map → SettingsBuilder-6FJVZLJT.js.map} +1 -1
  18. package/dist/{ShellRouteSync-J74MV23Q.js → ShellRouteSync-SJXFKUAJ.js} +4 -4
  19. package/dist/{SidebarLayout-EQXQPYIU.js → SidebarLayout-EQ7EYCWR.js} +12 -12
  20. package/dist/{SkillSettings-KQ6GQ7JW.js → SkillSettings-IHVI7FDM.js} +7 -7
  21. package/dist/{TrueForgeUIWithRouter-R3UXQZRY.js → TrueForgeUIWithRouter-5OJFI3PF.js} +9 -9
  22. package/dist/{WidgetLayout-YWZTYFZL.js → WidgetLayout-PN5ZDOLM.js} +10 -10
  23. package/dist/{chunk-TAABBM7F.js → chunk-2GIZY3JJ.js} +3 -1
  24. package/dist/chunk-2GIZY3JJ.js.map +1 -0
  25. package/dist/{chunk-4MCIDE2C.js → chunk-2QTH6JHX.js} +3 -3
  26. package/dist/{chunk-ZZB3JIBQ.js → chunk-2UBSLCKB.js} +9 -9
  27. package/dist/{chunk-IIHJ32YH.js → chunk-3ZW74FHC.js} +3 -3
  28. package/dist/{chunk-CFGLAGWH.js → chunk-CG75X77Q.js} +2 -2
  29. package/dist/{chunk-TFFTZB26.js → chunk-E33DFTVN.js} +8 -8
  30. package/dist/chunk-E33DFTVN.js.map +1 -0
  31. package/dist/{chunk-ERIIJKJY.js → chunk-F7YRYFAF.js} +4 -4
  32. package/dist/chunk-JCL3Q7RW.js +587 -0
  33. package/dist/{chunk-OWDH67NY.js.map → chunk-JCL3Q7RW.js.map} +1 -1
  34. package/dist/{chunk-IVDIBAVH.js → chunk-L7HNKKS2.js} +2 -2
  35. package/dist/{chunk-INY3J2BV.js → chunk-OWXPMQ7N.js} +10 -10
  36. package/dist/{chunk-7NYDADYN.js → chunk-PX6MNNN3.js} +5 -5
  37. package/dist/{chunk-3QWUHGNL.js → chunk-T6QQV5LK.js} +55 -12
  38. package/dist/chunk-T6QQV5LK.js.map +1 -0
  39. package/dist/{chunk-DCVKW445.js → chunk-TMIILLHB.js} +478 -268
  40. package/dist/chunk-TMIILLHB.js.map +1 -0
  41. package/dist/{chunk-MMU55KCW.js → chunk-XANC4F2H.js} +318 -166
  42. package/dist/chunk-XANC4F2H.js.map +1 -0
  43. package/dist/index.d.ts +15 -11
  44. package/dist/index.js +12 -12
  45. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +2 -1
  46. package/dist/plugins/trueforge-agent-server-adapter/index.js +65 -14
  47. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  48. package/dist/styles.css +1 -1
  49. package/package.json +3 -3
  50. package/dist/AgentMetricChart-GEADURES.js +0 -15
  51. package/dist/AgentOverview-NPC4P2EY.js.map +0 -1
  52. package/dist/OpenUiFenceBlock-FHEYXZEQ.js +0 -9
  53. package/dist/SchedulesPage-JIUWNYUH.js +0 -15
  54. package/dist/chunk-3QWUHGNL.js.map +0 -1
  55. package/dist/chunk-DCVKW445.js.map +0 -1
  56. package/dist/chunk-MMU55KCW.js.map +0 -1
  57. package/dist/chunk-OWDH67NY.js +0 -587
  58. package/dist/chunk-TAABBM7F.js.map +0 -1
  59. package/dist/chunk-TFFTZB26.js.map +0 -1
  60. /package/dist/{AgentCodeSnippets-V5A56M7R.js.map → AgentCodeSnippets-T7PR6PDP.js.map} +0 -0
  61. /package/dist/{AgentMetricChart-GEADURES.js.map → AgentMetricChart-J3RCSCAG.js.map} +0 -0
  62. /package/dist/{AgentSessionEventTimeline-UUXOJXTC.js.map → AgentSessionEventTimeline-SETKGGCI.js.map} +0 -0
  63. /package/dist/{AgentSessionEventTimelineChart-FIAQCYJC.js.map → AgentSessionEventTimelineChart-4Y7PY5SJ.js.map} +0 -0
  64. /package/dist/{AgentSessions-WHODEG2M.js.map → AgentSessions-YCAPM5GK.js.map} +0 -0
  65. /package/dist/{ConnectorSettings-QTAI4TQX.js.map → ConnectorSettings-PXWRCFAL.js.map} +0 -0
  66. /package/dist/{DockLayout-TATYU5SV.js.map → DockLayout-JRKCKAG2.js.map} +0 -0
  67. /package/dist/{DrawerLayout-DXHNV33K.js.map → DrawerLayout-U7YPUZBR.js.map} +0 -0
  68. /package/dist/{ModelSettings-UWTBHQRG.js.map → ModelSettings-VXYMJEMO.js.map} +0 -0
  69. /package/dist/{OpenUiFenceBlock-FHEYXZEQ.js.map → OpenUiFenceBlock-KPZFLUSC.js.map} +0 -0
  70. /package/dist/{SandboxSettings-BITQONS3.js.map → SandboxSettings-6DRUH72J.js.map} +0 -0
  71. /package/dist/{SchedulesPage-JIUWNYUH.js.map → SchedulesPage-2G6F4XO6.js.map} +0 -0
  72. /package/dist/{ShellRouteSync-J74MV23Q.js.map → ShellRouteSync-SJXFKUAJ.js.map} +0 -0
  73. /package/dist/{SidebarLayout-EQXQPYIU.js.map → SidebarLayout-EQ7EYCWR.js.map} +0 -0
  74. /package/dist/{SkillSettings-KQ6GQ7JW.js.map → SkillSettings-IHVI7FDM.js.map} +0 -0
  75. /package/dist/{TrueForgeUIWithRouter-R3UXQZRY.js.map → TrueForgeUIWithRouter-5OJFI3PF.js.map} +0 -0
  76. /package/dist/{WidgetLayout-YWZTYFZL.js.map → WidgetLayout-PN5ZDOLM.js.map} +0 -0
  77. /package/dist/{chunk-4MCIDE2C.js.map → chunk-2QTH6JHX.js.map} +0 -0
  78. /package/dist/{chunk-ZZB3JIBQ.js.map → chunk-2UBSLCKB.js.map} +0 -0
  79. /package/dist/{chunk-IIHJ32YH.js.map → chunk-3ZW74FHC.js.map} +0 -0
  80. /package/dist/{chunk-CFGLAGWH.js.map → chunk-CG75X77Q.js.map} +0 -0
  81. /package/dist/{chunk-ERIIJKJY.js.map → chunk-F7YRYFAF.js.map} +0 -0
  82. /package/dist/{chunk-IVDIBAVH.js.map → chunk-L7HNKKS2.js.map} +0 -0
  83. /package/dist/{chunk-INY3J2BV.js.map → chunk-OWXPMQ7N.js.map} +0 -0
  84. /package/dist/{chunk-7NYDADYN.js.map → chunk-PX6MNNN3.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0-rc.7
4
+
5
+ ### Patch Changes
6
+
7
+ - 531f0ce: Keep close-on-click dropdown menus and bottom sheets open when a click or drag lands on their own scrollbar, so scrolling a long menu no longer dismisses it before a choice is made.
8
+ - 531f0ce: Cap the skill version menu height and scroll it, so skills with many versions no longer run off screen. While it is open, scrolling is confined to the menu.
9
+ - Updated dependencies [648273b]
10
+ - @truefoundry/trueforge-sdk@0.2.0-rc.6
11
+
12
+ ## 0.3.0-rc.6
13
+
14
+ ### Patch Changes
15
+
16
+ - 8c31eae: Round-trip agent description through save/load and show it in the library and agent details.
17
+ - d7136a1: Avatar fallbacks use a light primary-button gradient in light mode, a solid primary gradient in dark mode, and show a single initial character.
18
+ - d7136a1: Assistant message loading indicator uses ThinkingOrb with left-to-right shimmering Working... text.
19
+ - b316430: Slide SideDrawer/BottomSheet and add a light fade+scale enter on dropdowns and popup cards.
20
+ - dc2151f: Paginate `GET /api/v1/agents` with `limit` / `page_token` and a `pagination` envelope; optional `agent_name` filters by case-insensitive substring. Agents library uses rows-per-page and prev/next against the token-paginated API. Schedule create and the schedules listing agent filter use a searchable agent combobox backed by the same filtered list API.
21
+ - d7136a1: Flip PopoverSelect menus when the preferred side lacks viewport room (e.g. table rows-per-page).
22
+ - 04460fb: Prevent the schedule search field from shrinking and clipping its placeholder.
23
+ - fa0730b: Reduce the agent code snippet font size to match its surrounding controls.
24
+ - d7136a1: Stop draining the full agents catalog on Schedules mount; load agents only when the filter opens (infinite scroll).
25
+ - d7136a1: Settings sidebar uses a subtle primary tint for the selected section instead of a solid fill.
26
+ - Updated dependencies [648273b]
27
+ - Updated dependencies [9501536]
28
+ - Updated dependencies [dc2151f]
29
+ - @truefoundry/trueforge-sdk@0.2.0-rc.5
30
+
3
31
  ## 0.3.0-rc.5
4
32
 
5
33
  ### Patch Changes
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import {
3
3
  useSlot
4
- } from "./chunk-MMU55KCW.js";
5
- import "./chunk-3QWUHGNL.js";
4
+ } from "./chunk-XANC4F2H.js";
5
+ import "./chunk-T6QQV5LK.js";
6
6
  import {
7
7
  Icon
8
- } from "./chunk-IIHJ32YH.js";
9
- import "./chunk-TAABBM7F.js";
8
+ } from "./chunk-3ZW74FHC.js";
9
+ import "./chunk-2GIZY3JJ.js";
10
10
  import "./chunk-M6MHLVSO.js";
11
- import "./chunk-CFGLAGWH.js";
11
+ import "./chunk-CG75X77Q.js";
12
12
  import {
13
13
  cn
14
- } from "./chunk-OWDH67NY.js";
14
+ } from "./chunk-JCL3Q7RW.js";
15
15
 
16
16
  // src/atoms/agent-details/AgentCodeSnippets.tsx
17
17
  import { useEffect, useState } from "react";
@@ -86,4 +86,4 @@ function AgentCodeSnippets({ snippets }) {
86
86
  export {
87
87
  AgentCodeSnippets as default
88
88
  };
89
- //# sourceMappingURL=AgentCodeSnippets-V5A56M7R.js.map
89
+ //# sourceMappingURL=AgentCodeSnippets-T7PR6PDP.js.map
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import {
3
+ AgentMetricChart
4
+ } from "./chunk-L7HNKKS2.js";
5
+ import "./chunk-XANC4F2H.js";
6
+ import "./chunk-T6QQV5LK.js";
7
+ import "./chunk-3ZW74FHC.js";
8
+ import "./chunk-2GIZY3JJ.js";
9
+ import "./chunk-M6MHLVSO.js";
10
+ import "./chunk-CG75X77Q.js";
11
+ import "./chunk-JCL3Q7RW.js";
12
+ export {
13
+ AgentMetricChart
14
+ };
15
+ //# sourceMappingURL=AgentMetricChart-J3RCSCAG.js.map
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
  import {
3
3
  useSlot
4
- } from "./chunk-MMU55KCW.js";
5
- import "./chunk-3QWUHGNL.js";
4
+ } from "./chunk-XANC4F2H.js";
5
+ import "./chunk-T6QQV5LK.js";
6
6
  import {
7
7
  Icon
8
- } from "./chunk-IIHJ32YH.js";
9
- import "./chunk-TAABBM7F.js";
8
+ } from "./chunk-3ZW74FHC.js";
9
+ import "./chunk-2GIZY3JJ.js";
10
10
  import "./chunk-M6MHLVSO.js";
11
- import "./chunk-CFGLAGWH.js";
11
+ import "./chunk-CG75X77Q.js";
12
12
  import {
13
13
  cn
14
- } from "./chunk-OWDH67NY.js";
14
+ } from "./chunk-JCL3Q7RW.js";
15
15
 
16
16
  // src/atoms/agent-details/AgentOverview.tsx
17
17
  import { useState } from "react";
@@ -54,6 +54,7 @@ function AgentOverview({ detail }) {
54
54
  const config = isRecord(spec.config) ? spec.config : null;
55
55
  const sandbox = isRecord(config?.sandbox) ? config.sandbox : null;
56
56
  const instructions = spec.instructions?.trim() ? spec.instructions : null;
57
+ const description = detail.description?.trim() ? detail.description : null;
57
58
  const execution = [
58
59
  ["Sandbox", typeof sandbox?.enabled === "boolean" ? sandbox.enabled ? "Enabled" : "Disabled" : void 0],
59
60
  ["Iteration limit", readRecordValue(config, "iterationLimit", "iteration_limit")],
@@ -67,7 +68,7 @@ function AgentOverview({ detail }) {
67
68
  ["Ask user questions", spec.config?.askUserQuestions?.enabled]
68
69
  ].filter((entry) => typeof entry[1] === "boolean");
69
70
  const toggleLabel = instructionsView === "markdown" ? "Raw" : "Markdown";
70
- return /* @__PURE__ */ jsxs("div", { className: "grid min-h-0 flex-1 gap-3 overflow-auto p-4 md:grid-cols-[minmax(0,1fr)_18rem] md:overflow-hidden", children: [
71
+ return /* @__PURE__ */ jsx("div", { className: "flex min-h-0 flex-1 flex-col gap-3 overflow-auto p-4 md:overflow-hidden", children: /* @__PURE__ */ jsxs("div", { className: "grid min-h-0 flex-1 gap-3 md:grid-cols-[minmax(0,1fr)_18rem] md:overflow-hidden", children: [
71
72
  /* @__PURE__ */ jsxs("section", { className: "flex min-h-64 flex-col rounded-lg border border-border bg-card-bg p-4 text-text-primary", children: [
72
73
  /* @__PURE__ */ jsxs("div", { className: "mb-3 flex shrink-0 items-center justify-between gap-2", children: [
73
74
  /* @__PURE__ */ jsxs("h2", { className: "flex items-center gap-1.5 text-sm font-semibold text-text-primary", children: [
@@ -115,6 +116,7 @@ function AgentOverview({ detail }) {
115
116
  /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto", children: instructions ? instructionsView === "markdown" ? /* @__PURE__ */ jsx(Markdown, { content: instructions, readOnly: true, className: "text-sm" }) : /* @__PURE__ */ jsx("pre", { className: "whitespace-pre-wrap break-words font-mono text-sm text-text-primary", children: instructions }) : /* @__PURE__ */ jsx("p", { className: "text-sm text-text-secondary", children: "No instructions for this agent." }) })
116
117
  ] }),
117
118
  /* @__PURE__ */ jsxs("aside", { className: "flex min-h-0 min-w-0 flex-col gap-3 md:overflow-auto", children: [
119
+ description ? /* @__PURE__ */ jsx(AgentOverviewCard, { title: "Description", icon: "file", children: /* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: description }) }) : null,
118
120
  /* @__PURE__ */ jsx(AgentOverviewCard, { title: "Model Configuration", icon: "cpu", children: /* @__PURE__ */ jsxs("dl", { className: "grid grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-1 text-xs", children: [
119
121
  /* @__PURE__ */ jsx("dt", { className: "text-text-secondary", children: "Model" }),
120
122
  /* @__PURE__ */ jsx("dd", { className: cn(valueClassName, "truncate"), title: spec.model.name, children: displayModelName(spec.model.name) }),
@@ -159,9 +161,9 @@ function AgentOverview({ detail }) {
159
161
  /* @__PURE__ */ jsx("dd", { className: valueClassName, children: enabled ? "Enabled" : "Disabled" })
160
162
  ] }, label)) }) }) : null
161
163
  ] })
162
- ] });
164
+ ] }) });
163
165
  }
164
166
  export {
165
167
  AgentOverview as default
166
168
  };
167
- //# sourceMappingURL=AgentOverview-NPC4P2EY.js.map
169
+ //# sourceMappingURL=AgentOverview-WC7WMNMS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/atoms/agent-details/AgentOverview.tsx"],"sourcesContent":["'use client';\n\nimport { useState, type ComponentType } from 'react';\nimport { Icon } from '../../icons/Icon.js';\nimport { useSlot } from '../../theme/SlotsProvider.js';\nimport { cn } from '../lib/cn.js';\nimport type { AgentOverviewProps } from './types.js';\n\ntype InstructionsView = 'markdown' | 'raw';\n\nconst valueClassName = 'text-right font-mono text-primary-button-bg';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value != null;\n}\n\nfunction readName(value: object): string | null {\n if (!('name' in value) || typeof value.name !== 'string') return null;\n return value.name;\n}\n\nfunction readRecordValue(record: Record<string, unknown> | null, ...keys: string[]): unknown {\n for (const key of keys) {\n const value = record?.[key];\n if (value !== undefined) return value;\n }\n return undefined;\n}\n\nfunction hasAllTools(value: object): boolean {\n if (!isRecord(value)) return false;\n const tools = readRecordValue(value, 'enableTools', 'enable_tools');\n return tools === undefined || (Array.isArray(tools) && tools.includes('@all'));\n}\n\nfunction displayModelName(name: string): string {\n const slash = name.lastIndexOf('/');\n return slash >= 0 ? name.slice(slash + 1) : name;\n}\n\nexport default function AgentOverview({ detail }: AgentOverviewProps) {\n const Markdown = useSlot('Markdown');\n const AgentOverviewCard = useSlot('AgentOverviewCard');\n const [instructionsView, setInstructionsView] = useState<InstructionsView>('markdown');\n const [copied, setCopied] = useState(false);\n const spec = detail.agentSpec;\n const skills = spec.skills ?? [];\n const connectors = spec.mcpServers ?? [];\n const modelParams = isRecord(spec.model.params) ? spec.model.params : null;\n const maxTokens = readRecordValue(modelParams, 'maxTokens', 'max_tokens');\n const temperature = readRecordValue(modelParams, 'temperature');\n const config = isRecord(spec.config) ? spec.config : null;\n const sandbox = isRecord(config?.sandbox) ? config.sandbox : null;\n const instructions = spec.instructions?.trim() ? spec.instructions : null;\n const description = detail.description?.trim() ? detail.description : null;\n const execution = [\n ['Sandbox', typeof sandbox?.enabled === 'boolean' ? (sandbox.enabled ? 'Enabled' : 'Disabled') : undefined],\n ['Iteration limit', readRecordValue(config, 'iterationLimit', 'iteration_limit')],\n ['Response format', readRecordValue(config, 'responseFormat', 'response_format')],\n ].filter((entry): entry is [string, string | number] => {\n return typeof entry[1] === 'string' || typeof entry[1] === 'number';\n });\n const capabilities = [\n ['Generative UI', spec.config?.generativeUi?.enabled],\n ['Dynamic sub-agents', spec.config?.dynamicSubAgents?.enabled],\n ['Ask user questions', spec.config?.askUserQuestions?.enabled],\n ].filter((entry): entry is [string, boolean] => typeof entry[1] === 'boolean');\n const toggleLabel = instructionsView === 'markdown' ? 'Raw' : 'Markdown';\n\n return (\n <div className=\"flex min-h-0 flex-1 flex-col gap-3 overflow-auto p-4 md:overflow-hidden\">\n <div className=\"grid min-h-0 flex-1 gap-3 md:grid-cols-[minmax(0,1fr)_18rem] md:overflow-hidden\">\n <section className=\"flex min-h-64 flex-col rounded-lg border border-border bg-card-bg p-4 text-text-primary\">\n <div className=\"mb-3 flex shrink-0 items-center justify-between gap-2\">\n <h2 className=\"flex items-center gap-1.5 text-sm font-semibold text-text-primary\">\n <Icon name=\"book-open\" className=\"size-4 text-text-secondary\" />\n Instructions\n </h2>\n {instructions ? (\n <div\n className=\"inline-flex h-7 items-stretch overflow-hidden rounded-md border border-border bg-primary-bg text-xs font-medium text-text-secondary\"\n role=\"group\"\n aria-label=\"Instructions actions\"\n >\n <button\n type=\"button\"\n aria-label={`Show ${toggleLabel}`}\n onClick={() => setInstructionsView(view => (view === 'markdown' ? 'raw' : 'markdown'))}\n className=\"cursor-pointer px-2.5 transition-colors hover:bg-ghost-button-hover hover:text-text-primary\"\n >\n {toggleLabel}\n </button>\n <span className=\"w-px self-stretch bg-border\" aria-hidden />\n <button\n type=\"button\"\n title={copied ? 'Copied!' : 'Copy'}\n aria-label={copied ? 'Copied!' : 'Copy'}\n onClick={() => {\n void navigator.clipboard.writeText(instructions).then(() => {\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n });\n }}\n className=\"inline-flex cursor-pointer items-center justify-center px-2 transition-colors hover:bg-ghost-button-hover hover:text-text-primary\"\n >\n <Icon name={copied ? 'check' : 'copy'} size={12} />\n </button>\n </div>\n ) : null}\n </div>\n <div className=\"min-h-0 flex-1 overflow-auto\">\n {instructions ? (\n instructionsView === 'markdown' ? (\n <Markdown content={instructions} readOnly className=\"text-sm\" />\n ) : (\n <pre className=\"whitespace-pre-wrap break-words font-mono text-sm text-text-primary\">\n {instructions}\n </pre>\n )\n ) : (\n <p className=\"text-sm text-text-secondary\">No instructions for this agent.</p>\n )}\n </div>\n </section>\n\n <aside className=\"flex min-h-0 min-w-0 flex-col gap-3 md:overflow-auto\">\n {description ? (\n <AgentOverviewCard title=\"Description\" icon=\"file\">\n <p className=\"text-xs text-text-secondary\">{description}</p>\n </AgentOverviewCard>\n ) : null}\n <AgentOverviewCard title=\"Model Configuration\" icon=\"cpu\">\n <dl className=\"grid grid-cols-[auto_minmax(0,1fr)] gap-x-3 gap-y-1 text-xs\">\n <dt className=\"text-text-secondary\">Model</dt>\n <dd className={cn(valueClassName, 'truncate')} title={spec.model.name}>\n {displayModelName(spec.model.name)}\n </dd>\n {typeof maxTokens === 'number' ? (\n <>\n <dt className=\"text-text-secondary\">Max tokens</dt>\n <dd className={valueClassName}>{maxTokens}</dd>\n </>\n ) : null}\n {spec.model.params?.reasoningEffort !== undefined ? (\n <>\n <dt className=\"text-text-secondary\">Reasoning</dt>\n <dd className={valueClassName}>{spec.model.params.reasoningEffort}</dd>\n </>\n ) : null}\n {typeof temperature === 'number' ? (\n <>\n <dt className=\"text-text-secondary\">Temperature</dt>\n <dd className={valueClassName}>{temperature}</dd>\n </>\n ) : null}\n </dl>\n </AgentOverviewCard>\n <AgentOverviewCard title=\"MCP Servers\" icon=\"plug\" count={connectors.length}>\n {connectors.length === 0 ? (\n <p className=\"text-xs text-text-secondary\">No connectors attached.</p>\n ) : (\n <ul className=\"space-y-1.5\">\n {connectors.map((connector, index) => (\n <li\n key={`${readName(connector) ?? 'connector'}-${index}`}\n className=\"rounded-md bg-secondary-bg px-2 py-1.5 text-xs\"\n >\n <span className=\"flex items-center justify-between gap-2\">\n <span className=\"truncate\">{readName(connector) ?? `Connector ${index + 1}`}</span>\n {hasAllTools(connector) ? (\n <span className=\"shrink-0 rounded-full bg-primary-button-bg/10 px-1.5 py-0.5 text-[10px] text-primary-button-bg\">\n All tools\n </span>\n ) : null}\n </span>\n </li>\n ))}\n </ul>\n )}\n </AgentOverviewCard>\n\n <AgentOverviewCard title=\"Attached Skills\" icon=\"lightbulb\" count={skills.length}>\n {skills.length === 0 ? (\n <p className=\"text-xs text-text-secondary\">No skills attached.</p>\n ) : (\n <ul className=\"space-y-1.5\">\n {skills.map((skill, index) => (\n <li\n key={`${readName(skill) ?? 'skill'}-${index}`}\n className=\"rounded-md bg-secondary-bg px-2 py-1.5 text-xs\"\n >\n {readName(skill) ?? `Skill ${index + 1}`}\n </li>\n ))}\n </ul>\n )}\n </AgentOverviewCard>\n\n {execution.length > 0 ? (\n <AgentOverviewCard title=\"Execution\" icon=\"terminal\">\n <dl className=\"space-y-1 text-xs\">\n {execution.map(([label, value]) => (\n <div key={label} className=\"flex justify-between gap-3\">\n <dt className=\"text-text-secondary\">{label}</dt>\n <dd className={valueClassName}>{value}</dd>\n </div>\n ))}\n </dl>\n </AgentOverviewCard>\n ) : null}\n\n {capabilities.length > 0 ? (\n <AgentOverviewCard title=\"Capabilities\" icon=\"cube\">\n <dl className=\"space-y-1 text-xs\">\n {capabilities.map(([label, enabled]) => (\n <div key={label} className=\"flex justify-between gap-3\">\n <dt className=\"text-text-secondary\">{label}</dt>\n <dd className={valueClassName}>{enabled ? 'Enabled' : 'Disabled'}</dd>\n </div>\n ))}\n </dl>\n </AgentOverviewCard>\n ) : null}\n </aside>\n </div>\n </div>\n );\n}\n\ndeclare module '../../theme/SlotsProvider.js' {\n interface AtomSlots {\n AgentOverview: ComponentType<AgentOverviewProps>;\n }\n}\n"],"mappings":"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","names":[]}
@@ -4,15 +4,15 @@ import {
4
4
  getSessionEventColor,
5
5
  useSlot,
6
6
  useThemeMode
7
- } from "./chunk-MMU55KCW.js";
8
- import "./chunk-3QWUHGNL.js";
9
- import "./chunk-IIHJ32YH.js";
10
- import "./chunk-TAABBM7F.js";
7
+ } from "./chunk-XANC4F2H.js";
8
+ import "./chunk-T6QQV5LK.js";
9
+ import "./chunk-3ZW74FHC.js";
10
+ import "./chunk-2GIZY3JJ.js";
11
11
  import "./chunk-M6MHLVSO.js";
12
- import "./chunk-CFGLAGWH.js";
12
+ import "./chunk-CG75X77Q.js";
13
13
  import {
14
14
  cn
15
- } from "./chunk-OWDH67NY.js";
15
+ } from "./chunk-JCL3Q7RW.js";
16
16
 
17
17
  // src/atoms/agent-details/AgentSessionEventTimeline.tsx
18
18
  import { useCallback, useMemo, useState } from "react";
@@ -85,4 +85,4 @@ function AgentSessionEventTimeline({ turns, segments, onSelectTurn }) {
85
85
  export {
86
86
  AgentSessionEventTimeline
87
87
  };
88
- //# sourceMappingURL=AgentSessionEventTimeline-UUXOJXTC.js.map
88
+ //# sourceMappingURL=AgentSessionEventTimeline-SETKGGCI.js.map
@@ -25,13 +25,13 @@ import {
25
25
  mergeOverlappingSubAgentSegments,
26
26
  roundDurationMsToSecond,
27
27
  useThemeMode
28
- } from "./chunk-MMU55KCW.js";
29
- import "./chunk-3QWUHGNL.js";
30
- import "./chunk-IIHJ32YH.js";
31
- import "./chunk-TAABBM7F.js";
28
+ } from "./chunk-XANC4F2H.js";
29
+ import "./chunk-T6QQV5LK.js";
30
+ import "./chunk-3ZW74FHC.js";
31
+ import "./chunk-2GIZY3JJ.js";
32
32
  import "./chunk-M6MHLVSO.js";
33
- import "./chunk-CFGLAGWH.js";
34
- import "./chunk-OWDH67NY.js";
33
+ import "./chunk-CG75X77Q.js";
34
+ import "./chunk-JCL3Q7RW.js";
35
35
 
36
36
  // src/atoms/agent-details/AgentSessionEventTimelineChart.tsx
37
37
  import {
@@ -588,4 +588,4 @@ function AgentSessionEventTimelineChart({
588
588
  export {
589
589
  AgentSessionEventTimelineChart
590
590
  };
591
- //# sourceMappingURL=AgentSessionEventTimelineChart-FIAQCYJC.js.map
591
+ //# sourceMappingURL=AgentSessionEventTimelineChart-4Y7PY5SJ.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  buildSessionResumeHref
4
- } from "./chunk-4MCIDE2C.js";
4
+ } from "./chunk-2QTH6JHX.js";
5
5
  import {
6
6
  useOptionalResolvedRoutes
7
7
  } from "./chunk-Y6S4OVVQ.js";
@@ -14,22 +14,22 @@ import {
14
14
  useResourcePermissions,
15
15
  useSessionShareSearch,
16
16
  useSlot
17
- } from "./chunk-MMU55KCW.js";
18
- import "./chunk-3QWUHGNL.js";
17
+ } from "./chunk-XANC4F2H.js";
18
+ import "./chunk-T6QQV5LK.js";
19
19
  import {
20
20
  Icon
21
- } from "./chunk-IIHJ32YH.js";
21
+ } from "./chunk-3ZW74FHC.js";
22
22
  import {
23
23
  sessionTimeRangeFromCreatedAt,
24
24
  useAgentSessionsServer,
25
25
  useOptionalShellMode,
26
26
  useServer
27
- } from "./chunk-TAABBM7F.js";
27
+ } from "./chunk-2GIZY3JJ.js";
28
28
  import "./chunk-M6MHLVSO.js";
29
- import "./chunk-CFGLAGWH.js";
29
+ import "./chunk-CG75X77Q.js";
30
30
  import {
31
31
  cn
32
- } from "./chunk-OWDH67NY.js";
32
+ } from "./chunk-JCL3Q7RW.js";
33
33
 
34
34
  // src/atoms/agent-details/AgentSessions.tsx
35
35
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -320,4 +320,4 @@ function AgentSessions({ agentId, startTimestamp, endTimestamp, shareView }) {
320
320
  export {
321
321
  AgentSessions
322
322
  };
323
- //# sourceMappingURL=AgentSessions-WHODEG2M.js.map
323
+ //# sourceMappingURL=AgentSessions-YCAPM5GK.js.map
@@ -7,20 +7,20 @@ import {
7
7
  auiInputClass,
8
8
  useMCPAuth,
9
9
  useToasterOptional
10
- } from "./chunk-MMU55KCW.js";
11
- import "./chunk-3QWUHGNL.js";
10
+ } from "./chunk-XANC4F2H.js";
11
+ import "./chunk-T6QQV5LK.js";
12
12
  import {
13
13
  Icon
14
- } from "./chunk-IIHJ32YH.js";
14
+ } from "./chunk-3ZW74FHC.js";
15
15
  import {
16
16
  getErrorMessage,
17
17
  useCatalogServer
18
- } from "./chunk-TAABBM7F.js";
18
+ } from "./chunk-2GIZY3JJ.js";
19
19
  import "./chunk-M6MHLVSO.js";
20
- import "./chunk-CFGLAGWH.js";
20
+ import "./chunk-CG75X77Q.js";
21
21
  import {
22
22
  cn
23
- } from "./chunk-OWDH67NY.js";
23
+ } from "./chunk-JCL3Q7RW.js";
24
24
 
25
25
  // src/containers/SettingsBuilder/ConnectorSettings.tsx
26
26
  import { useCallback, useEffect as useEffect3, useMemo, useState as useState3 } from "react";
@@ -958,4 +958,4 @@ var ConnectorSettings_default = ConnectorSettings;
958
958
  export {
959
959
  ConnectorSettings_default as default
960
960
  };
961
- //# sourceMappingURL=ConnectorSettings-QTAI4TQX.js.map
961
+ //# sourceMappingURL=ConnectorSettings-PXWRCFAL.js.map
@@ -1,21 +1,21 @@
1
1
  "use client";
2
2
  import {
3
3
  StackChatPanel
4
- } from "./chunk-ZZB3JIBQ.js";
5
- import "./chunk-7NYDADYN.js";
6
- import "./chunk-ERIIJKJY.js";
4
+ } from "./chunk-2UBSLCKB.js";
5
+ import "./chunk-PX6MNNN3.js";
6
+ import "./chunk-F7YRYFAF.js";
7
7
  import "./chunk-BSIPI3KV.js";
8
- import "./chunk-MMU55KCW.js";
9
- import "./chunk-3QWUHGNL.js";
8
+ import "./chunk-XANC4F2H.js";
9
+ import "./chunk-T6QQV5LK.js";
10
10
  import {
11
11
  CompactLayoutProvider
12
- } from "./chunk-IIHJ32YH.js";
13
- import "./chunk-TAABBM7F.js";
12
+ } from "./chunk-3ZW74FHC.js";
13
+ import "./chunk-2GIZY3JJ.js";
14
14
  import "./chunk-M6MHLVSO.js";
15
- import "./chunk-CFGLAGWH.js";
15
+ import "./chunk-CG75X77Q.js";
16
16
  import {
17
17
  cn
18
- } from "./chunk-OWDH67NY.js";
18
+ } from "./chunk-JCL3Q7RW.js";
19
19
 
20
20
  // src/layouts/DockLayout.tsx
21
21
  import { jsx } from "react/jsx-runtime";
@@ -35,4 +35,4 @@ function DockLayout({ className }) {
35
35
  export {
36
36
  DockLayout
37
37
  };
38
- //# sourceMappingURL=DockLayout-TATYU5SV.js.map
38
+ //# sourceMappingURL=DockLayout-JRKCKAG2.js.map
@@ -3,40 +3,40 @@ import {
3
3
  AgentConfigDrawerContainer,
4
4
  NamedAgentHeaderLabel,
5
5
  ShellActions
6
- } from "./chunk-7NYDADYN.js";
6
+ } from "./chunk-PX6MNNN3.js";
7
7
  import {
8
8
  Thread
9
- } from "./chunk-ERIIJKJY.js";
9
+ } from "./chunk-F7YRYFAF.js";
10
10
  import "./chunk-BSIPI3KV.js";
11
11
  import {
12
12
  useIsMobile,
13
13
  useSlot
14
- } from "./chunk-MMU55KCW.js";
15
- import "./chunk-3QWUHGNL.js";
14
+ } from "./chunk-XANC4F2H.js";
15
+ import "./chunk-T6QQV5LK.js";
16
16
  import {
17
17
  Icon,
18
18
  PageHeader,
19
19
  Spinner,
20
20
  auiButtonClass
21
- } from "./chunk-IIHJ32YH.js";
21
+ } from "./chunk-3ZW74FHC.js";
22
22
  import {
23
23
  shellIsCreateAgent,
24
24
  useOptionalShellMode
25
- } from "./chunk-TAABBM7F.js";
25
+ } from "./chunk-2GIZY3JJ.js";
26
26
  import {
27
27
  useAui
28
28
  } from "./chunk-M6MHLVSO.js";
29
- import "./chunk-CFGLAGWH.js";
29
+ import "./chunk-CG75X77Q.js";
30
30
  import {
31
31
  cn
32
- } from "./chunk-OWDH67NY.js";
32
+ } from "./chunk-JCL3Q7RW.js";
33
33
 
34
34
  // src/layouts/DrawerLayout.tsx
35
35
  import { lazy, Suspense, useRef } from "react";
36
36
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
37
- var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-3OA4UCIM.js"));
37
+ var TruefoundrySettingsBuilder = lazy(() => import("./SettingsBuilder-6FJVZLJT.js"));
38
38
  var SchedulesPage = lazy(
39
- () => import("./SchedulesPage-JIUWNYUH.js").then((m) => ({ default: m.SchedulesPage }))
39
+ () => import("./SchedulesPage-2G6F4XO6.js").then((m) => ({ default: m.SchedulesPage }))
40
40
  );
41
41
  function DrawerLayout({ className }) {
42
42
  const aui = useAui();
@@ -183,4 +183,4 @@ function DrawerLayout({ className }) {
183
183
  export {
184
184
  DrawerLayout
185
185
  };
186
- //# sourceMappingURL=DrawerLayout-DXHNV33K.js.map
186
+ //# sourceMappingURL=DrawerLayout-U7YPUZBR.js.map
@@ -9,20 +9,20 @@ import {
9
9
  SearchInput_default,
10
10
  auiInputClass,
11
11
  useToasterOptional
12
- } from "./chunk-MMU55KCW.js";
13
- import "./chunk-3QWUHGNL.js";
12
+ } from "./chunk-XANC4F2H.js";
13
+ import "./chunk-T6QQV5LK.js";
14
14
  import {
15
15
  Icon
16
- } from "./chunk-IIHJ32YH.js";
16
+ } from "./chunk-3ZW74FHC.js";
17
17
  import {
18
18
  getErrorMessage,
19
19
  useCatalogServer
20
- } from "./chunk-TAABBM7F.js";
20
+ } from "./chunk-2GIZY3JJ.js";
21
21
  import "./chunk-M6MHLVSO.js";
22
- import "./chunk-CFGLAGWH.js";
22
+ import "./chunk-CG75X77Q.js";
23
23
  import {
24
24
  cn
25
- } from "./chunk-OWDH67NY.js";
25
+ } from "./chunk-JCL3Q7RW.js";
26
26
 
27
27
  // src/containers/SettingsBuilder/ModelSettings.tsx
28
28
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState3 } from "react";
@@ -1077,4 +1077,4 @@ var ModelSettings_default = ModelSettings;
1077
1077
  export {
1078
1078
  ModelSettings_default as default
1079
1079
  };
1080
- //# sourceMappingURL=ModelSettings-UWTBHQRG.js.map
1080
+ //# sourceMappingURL=ModelSettings-VXYMJEMO.js.map
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ OpenUiFenceBlock
4
+ } from "./chunk-CG75X77Q.js";
5
+ import "./chunk-JCL3Q7RW.js";
6
+ export {
7
+ OpenUiFenceBlock
8
+ };
9
+ //# sourceMappingURL=OpenUiFenceBlock-KPZFLUSC.js.map
@@ -8,21 +8,21 @@ import {
8
8
  Tooltip,
9
9
  auiInputClass,
10
10
  useToasterOptional
11
- } from "./chunk-MMU55KCW.js";
12
- import "./chunk-3QWUHGNL.js";
11
+ } from "./chunk-XANC4F2H.js";
12
+ import "./chunk-T6QQV5LK.js";
13
13
  import {
14
14
  Icon,
15
15
  Spinner
16
- } from "./chunk-IIHJ32YH.js";
16
+ } from "./chunk-3ZW74FHC.js";
17
17
  import {
18
18
  getErrorMessage,
19
19
  useCatalogServer
20
- } from "./chunk-TAABBM7F.js";
20
+ } from "./chunk-2GIZY3JJ.js";
21
21
  import "./chunk-M6MHLVSO.js";
22
- import "./chunk-CFGLAGWH.js";
22
+ import "./chunk-CG75X77Q.js";
23
23
  import {
24
24
  cn
25
- } from "./chunk-OWDH67NY.js";
25
+ } from "./chunk-JCL3Q7RW.js";
26
26
 
27
27
  // src/containers/SettingsBuilder/SandboxSettings.tsx
28
28
  import { useCallback, useEffect as useEffect2, useMemo, useState as useState2 } from "react";
@@ -596,4 +596,4 @@ var SandboxSettings_default = SandboxSettings;
596
596
  export {
597
597
  SandboxSettings_default as default
598
598
  };
599
- //# sourceMappingURL=SandboxSettings-BITQONS3.js.map
599
+ //# sourceMappingURL=SandboxSettings-6DRUH72J.js.map
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import {
3
+ SchedulesPage
4
+ } from "./chunk-TMIILLHB.js";
5
+ import "./chunk-XANC4F2H.js";
6
+ import "./chunk-T6QQV5LK.js";
7
+ import "./chunk-3ZW74FHC.js";
8
+ import "./chunk-2GIZY3JJ.js";
9
+ import "./chunk-M6MHLVSO.js";
10
+ import "./chunk-CG75X77Q.js";
11
+ import "./chunk-JCL3Q7RW.js";
12
+ export {
13
+ SchedulesPage
14
+ };
15
+ //# sourceMappingURL=SchedulesPage-2G6F4XO6.js.map
@@ -6,23 +6,23 @@ import {
6
6
  auiButtonClass,
7
7
  useCompactLayout,
8
8
  useDraftCatalog
9
- } from "./chunk-IIHJ32YH.js";
9
+ } from "./chunk-3ZW74FHC.js";
10
10
  import {
11
11
  useOptionalCatalogServer,
12
12
  useOptionalRefreshServerCapabilities,
13
13
  useShellMode
14
- } from "./chunk-TAABBM7F.js";
14
+ } from "./chunk-2GIZY3JJ.js";
15
15
  import {
16
16
  cn
17
- } from "./chunk-OWDH67NY.js";
17
+ } from "./chunk-JCL3Q7RW.js";
18
18
 
19
19
  // src/containers/SettingsBuilder/index.tsx
20
20
  import { lazy, Suspense, useCallback, useEffect, useMemo } from "react";
21
21
  import { jsx, jsxs } from "react/jsx-runtime";
22
- var ModelSettings = lazy(() => import("./ModelSettings-UWTBHQRG.js"));
23
- var ConnectorSettings = lazy(() => import("./ConnectorSettings-QTAI4TQX.js"));
24
- var SkillSettings = lazy(() => import("./SkillSettings-KQ6GQ7JW.js"));
25
- var SandboxSettings = lazy(() => import("./SandboxSettings-BITQONS3.js"));
22
+ var ModelSettings = lazy(() => import("./ModelSettings-VXYMJEMO.js"));
23
+ var ConnectorSettings = lazy(() => import("./ConnectorSettings-PXWRCFAL.js"));
24
+ var SkillSettings = lazy(() => import("./SkillSettings-IHVI7FDM.js"));
25
+ var SandboxSettings = lazy(() => import("./SandboxSettings-6DRUH72J.js"));
26
26
  function SettingsSectionFallback() {
27
27
  return /* @__PURE__ */ jsxs("div", { className: "flex flex-1 items-center justify-center py-8", role: "status", "aria-live": "polite", "aria-busy": "true", children: [
28
28
  /* @__PURE__ */ jsx(Spinner, { size: 20, className: "text-text-secondary" }),
@@ -117,7 +117,7 @@ var TruefoundrySettingsBuilder = () => {
117
117
  "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring",
118
118
  // Narrow panels cannot fit fixed-width tabs, so tabs split the row instead.
119
119
  compact ? "min-w-0 flex-1 justify-center gap-1.5 px-1.5" : "shrink-0",
120
- section === item.id ? "bg-primary-button-bg text-primary-button-text" : "text-text-secondary hover:bg-ghost-button-hover/60 hover:text-text-primary"
120
+ section === item.id ? "bg-primary-button-bg/10 text-primary-button-bg" : "text-text-secondary hover:bg-ghost-button-hover/60 hover:text-text-primary"
121
121
  ),
122
122
  onClick: () => {
123
123
  setSettingsOpen(true, item.id);
@@ -144,4 +144,4 @@ var SettingsBuilder_default = TruefoundrySettingsBuilder;
144
144
  export {
145
145
  SettingsBuilder_default as default
146
146
  };
147
- //# sourceMappingURL=SettingsBuilder-3OA4UCIM.js.map
147
+ //# sourceMappingURL=SettingsBuilder-6FJVZLJT.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/containers/SettingsBuilder/index.tsx"],"sourcesContent":["'use client';\n\nimport { lazy, Suspense, useCallback, useEffect, useMemo } from 'react';\n\nimport { useDraftCatalog } from '@/atoms/draft/DraftCatalogProvider.js';\nimport { auiButtonClass } from '@/atoms/lib/buttonClasses.js';\nimport { cn } from '@/atoms/lib/cn.js';\nimport { useCompactLayout } from '@/atoms/lib/CompactLayoutContext.js';\nimport { PageHeader } from '@/atoms/PageHeader.js';\nimport { Spinner } from '@/atoms/primitives/Spinner.js';\nimport { Icon } from '@/icons/Icon.js';\nimport { useOptionalCatalogServer, useOptionalRefreshServerCapabilities } from '@/server/ServerContext.js';\nimport { useShellMode, type SettingsSection } from '@/server/ShellModeContext.js';\n\n// Section modules (and their list/catalog APIs) load only when that tab mounts.\nconst ModelSettings = lazy(() => import('./ModelSettings.js'));\nconst ConnectorSettings = lazy(() => import('./ConnectorSettings.js'));\nconst SkillSettings = lazy(() => import('./SkillSettings.js'));\nconst SandboxSettings = lazy(() => import('./SandboxSettings.js'));\n\nfunction SettingsSectionFallback() {\n return (\n <div className=\"flex flex-1 items-center justify-center py-8\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <Spinner size={20} className=\"text-text-secondary\" />\n <span className=\"sr-only\">Loading</span>\n </div>\n );\n}\n\nconst TruefoundrySettingsBuilder = () => {\n const { settingsOpen, settingsSection: section, setSettingsOpen } = useShellMode();\n const catalog = useOptionalCatalogServer();\n const refreshServerCapabilities = useOptionalRefreshServerCapabilities();\n const { refresh: refreshDraftCatalog } = useDraftCatalog();\n // dock/widget panels are ~mobile width even on a wide viewport — keep Settings stacked.\n const compact = useCompactLayout();\n const hasSkills = catalog?.skillCatalog != null;\n const hasSandbox = catalog?.sandboxCatalog != null;\n\n const closeSettings = useCallback(() => {\n setSettingsOpen(false);\n }, [setSettingsOpen]);\n\n // Refresh catalogs whenever settings are closed or navigated away from.\n useEffect(() => {\n if (!settingsOpen) return;\n return () => {\n refreshDraftCatalog();\n refreshServerCapabilities?.();\n };\n }, [settingsOpen, refreshDraftCatalog, refreshServerCapabilities]);\n\n useEffect(() => {\n if (!hasSkills && section === 'skills') {\n setSettingsOpen(settingsOpen, 'models');\n }\n if (!hasSandbox && section === 'sandbox') {\n setSettingsOpen(settingsOpen, 'models');\n }\n }, [hasSkills, hasSandbox, section, settingsOpen, setSettingsOpen]);\n\n useEffect(() => {\n if (!settingsOpen) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n event.stopImmediatePropagation();\n closeSettings();\n };\n // Capture so layout Escape handlers (sessions drawer / widget) do not also fire.\n window.addEventListener('keydown', onKeyDown, true);\n return () => window.removeEventListener('keydown', onKeyDown, true);\n }, [closeSettings, settingsOpen]);\n\n const sections = useMemo<\n Array<{\n id: SettingsSection;\n label: string;\n icon: 'cpu' | 'plug' | 'lightbulb' | 'cube';\n }>\n >(() => {\n const baseSections: Array<{\n id: SettingsSection;\n label: string;\n icon: 'cpu' | 'plug' | 'lightbulb' | 'cube';\n }> = [\n { id: 'models', label: 'Models', icon: 'cpu' },\n { id: 'connectors', label: 'Connectors', icon: 'plug' },\n ];\n if (hasSkills) {\n baseSections.push({ id: 'skills', label: 'Skills', icon: 'lightbulb' });\n }\n if (hasSandbox) {\n baseSections.push({ id: 'sandbox', label: 'Sandbox providers', icon: 'cube' });\n }\n return baseSections;\n }, [hasSkills, hasSandbox]);\n\n if (!settingsOpen || !catalog) return null;\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col bg-primary-bg\">\n <PageHeader\n title=\"Settings\"\n start={\n <button\n type=\"button\"\n aria-label=\"Back\"\n title=\"Back\"\n className={auiButtonClass({ variant: 'ghost', size: 'icon' })}\n onClick={closeSettings}\n >\n <Icon name=\"arrow-left\" />\n </button>\n }\n />\n\n <div className={cn('flex min-h-0 flex-1 flex-col', !compact && 'md:flex-row')}>\n <nav\n aria-label=\"Settings sections\"\n className={cn(\n 'flex w-full gap-1 border-b border-border bg-secondary-bg/40 p-2',\n compact ? 'min-w-0' : 'justify-center md:w-48 md:flex-col md:justify-start md:border-b-0 md:border-r',\n )}\n >\n {sections.map(item => (\n <button\n key={item.id}\n type=\"button\"\n aria-current={section === item.id ? 'page' : undefined}\n {...(compact ? { title: item.label } : {})}\n className={cn(\n 'flex min-h-9 items-center gap-2 rounded-md px-3 text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring',\n // Narrow panels cannot fit fixed-width tabs, so tabs split the row instead.\n compact ? 'min-w-0 flex-1 justify-center gap-1.5 px-1.5' : 'shrink-0',\n section === item.id\n ? 'bg-primary-button-bg text-primary-button-text'\n : 'text-text-secondary hover:bg-ghost-button-hover/60 hover:text-text-primary',\n )}\n onClick={() => {\n setSettingsOpen(true, item.id);\n }}\n >\n <Icon name={item.icon} className=\"h-4 w-4 shrink-0\" />\n {compact ? <span className=\"truncate\">{item.label}</span> : item.label}\n </button>\n ))}\n </nav>\n\n <section className=\"flex flex-col h-full flex-1 overflow-y-hidden px-6 py-4\">\n <div className=\"w-full max-w-210 h-full min-h-0 flex flex-col mx-auto\">\n <Suspense fallback={<SettingsSectionFallback />}>\n {section === 'models' ? <ModelSettings /> : null}\n {section === 'connectors' ? <ConnectorSettings /> : null}\n {section === 'skills' && hasSkills ? <SkillSettings /> : null}\n {section === 'sandbox' && hasSandbox ? <SandboxSettings /> : null}\n </Suspense>\n </div>\n </section>\n </div>\n </div>\n );\n};\n\nexport default TruefoundrySettingsBuilder;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/containers/SettingsBuilder/index.tsx"],"sourcesContent":["'use client';\n\nimport { lazy, Suspense, useCallback, useEffect, useMemo } from 'react';\n\nimport { useDraftCatalog } from '@/atoms/draft/DraftCatalogProvider.js';\nimport { auiButtonClass } from '@/atoms/lib/buttonClasses.js';\nimport { cn } from '@/atoms/lib/cn.js';\nimport { useCompactLayout } from '@/atoms/lib/CompactLayoutContext.js';\nimport { PageHeader } from '@/atoms/PageHeader.js';\nimport { Spinner } from '@/atoms/primitives/Spinner.js';\nimport { Icon } from '@/icons/Icon.js';\nimport { useOptionalCatalogServer, useOptionalRefreshServerCapabilities } from '@/server/ServerContext.js';\nimport { useShellMode, type SettingsSection } from '@/server/ShellModeContext.js';\n\n// Section modules (and their list/catalog APIs) load only when that tab mounts.\nconst ModelSettings = lazy(() => import('./ModelSettings.js'));\nconst ConnectorSettings = lazy(() => import('./ConnectorSettings.js'));\nconst SkillSettings = lazy(() => import('./SkillSettings.js'));\nconst SandboxSettings = lazy(() => import('./SandboxSettings.js'));\n\nfunction SettingsSectionFallback() {\n return (\n <div className=\"flex flex-1 items-center justify-center py-8\" role=\"status\" aria-live=\"polite\" aria-busy=\"true\">\n <Spinner size={20} className=\"text-text-secondary\" />\n <span className=\"sr-only\">Loading</span>\n </div>\n );\n}\n\nconst TruefoundrySettingsBuilder = () => {\n const { settingsOpen, settingsSection: section, setSettingsOpen } = useShellMode();\n const catalog = useOptionalCatalogServer();\n const refreshServerCapabilities = useOptionalRefreshServerCapabilities();\n const { refresh: refreshDraftCatalog } = useDraftCatalog();\n // dock/widget panels are ~mobile width even on a wide viewport — keep Settings stacked.\n const compact = useCompactLayout();\n const hasSkills = catalog?.skillCatalog != null;\n const hasSandbox = catalog?.sandboxCatalog != null;\n\n const closeSettings = useCallback(() => {\n setSettingsOpen(false);\n }, [setSettingsOpen]);\n\n // Refresh catalogs whenever settings are closed or navigated away from.\n useEffect(() => {\n if (!settingsOpen) return;\n return () => {\n refreshDraftCatalog();\n refreshServerCapabilities?.();\n };\n }, [settingsOpen, refreshDraftCatalog, refreshServerCapabilities]);\n\n useEffect(() => {\n if (!hasSkills && section === 'skills') {\n setSettingsOpen(settingsOpen, 'models');\n }\n if (!hasSandbox && section === 'sandbox') {\n setSettingsOpen(settingsOpen, 'models');\n }\n }, [hasSkills, hasSandbox, section, settingsOpen, setSettingsOpen]);\n\n useEffect(() => {\n if (!settingsOpen) return;\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') return;\n event.stopImmediatePropagation();\n closeSettings();\n };\n // Capture so layout Escape handlers (sessions drawer / widget) do not also fire.\n window.addEventListener('keydown', onKeyDown, true);\n return () => window.removeEventListener('keydown', onKeyDown, true);\n }, [closeSettings, settingsOpen]);\n\n const sections = useMemo<\n Array<{\n id: SettingsSection;\n label: string;\n icon: 'cpu' | 'plug' | 'lightbulb' | 'cube';\n }>\n >(() => {\n const baseSections: Array<{\n id: SettingsSection;\n label: string;\n icon: 'cpu' | 'plug' | 'lightbulb' | 'cube';\n }> = [\n { id: 'models', label: 'Models', icon: 'cpu' },\n { id: 'connectors', label: 'Connectors', icon: 'plug' },\n ];\n if (hasSkills) {\n baseSections.push({ id: 'skills', label: 'Skills', icon: 'lightbulb' });\n }\n if (hasSandbox) {\n baseSections.push({ id: 'sandbox', label: 'Sandbox providers', icon: 'cube' });\n }\n return baseSections;\n }, [hasSkills, hasSandbox]);\n\n if (!settingsOpen || !catalog) return null;\n\n return (\n <div className=\"flex h-full min-h-0 w-full flex-col bg-primary-bg\">\n <PageHeader\n title=\"Settings\"\n start={\n <button\n type=\"button\"\n aria-label=\"Back\"\n title=\"Back\"\n className={auiButtonClass({ variant: 'ghost', size: 'icon' })}\n onClick={closeSettings}\n >\n <Icon name=\"arrow-left\" />\n </button>\n }\n />\n\n <div className={cn('flex min-h-0 flex-1 flex-col', !compact && 'md:flex-row')}>\n <nav\n aria-label=\"Settings sections\"\n className={cn(\n 'flex w-full gap-1 border-b border-border bg-secondary-bg/40 p-2',\n compact ? 'min-w-0' : 'justify-center md:w-48 md:flex-col md:justify-start md:border-b-0 md:border-r',\n )}\n >\n {sections.map(item => (\n <button\n key={item.id}\n type=\"button\"\n aria-current={section === item.id ? 'page' : undefined}\n {...(compact ? { title: item.label } : {})}\n className={cn(\n 'flex min-h-9 items-center gap-2 rounded-md px-3 text-sm font-medium transition-colors',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-focus-ring',\n // Narrow panels cannot fit fixed-width tabs, so tabs split the row instead.\n compact ? 'min-w-0 flex-1 justify-center gap-1.5 px-1.5' : 'shrink-0',\n section === item.id\n ? 'bg-primary-button-bg/10 text-primary-button-bg'\n : 'text-text-secondary hover:bg-ghost-button-hover/60 hover:text-text-primary',\n )}\n onClick={() => {\n setSettingsOpen(true, item.id);\n }}\n >\n <Icon name={item.icon} className=\"h-4 w-4 shrink-0\" />\n {compact ? <span className=\"truncate\">{item.label}</span> : item.label}\n </button>\n ))}\n </nav>\n\n <section className=\"flex flex-col h-full flex-1 overflow-y-hidden px-6 py-4\">\n <div className=\"w-full max-w-210 h-full min-h-0 flex flex-col mx-auto\">\n <Suspense fallback={<SettingsSectionFallback />}>\n {section === 'models' ? <ModelSettings /> : null}\n {section === 'connectors' ? <ConnectorSettings /> : null}\n {section === 'skills' && hasSkills ? <SkillSettings /> : null}\n {section === 'sandbox' && hasSandbox ? <SandboxSettings /> : null}\n </Suspense>\n </div>\n </section>\n </div>\n </div>\n );\n};\n\nexport default TruefoundrySettingsBuilder;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAEA,SAAS,MAAM,UAAU,aAAa,WAAW,eAAe;AAoB5D,SACE,KADF;AAPJ,IAAM,gBAAgB,KAAK,MAAM,OAAO,6BAAoB,CAAC;AAC7D,IAAM,oBAAoB,KAAK,MAAM,OAAO,iCAAwB,CAAC;AACrE,IAAM,gBAAgB,KAAK,MAAM,OAAO,6BAAoB,CAAC;AAC7D,IAAM,kBAAkB,KAAK,MAAM,OAAO,+BAAsB,CAAC;AAEjE,SAAS,0BAA0B;AACjC,SACE,qBAAC,SAAI,WAAU,gDAA+C,MAAK,UAAS,aAAU,UAAS,aAAU,QACvG;AAAA,wBAAC,WAAQ,MAAM,IAAI,WAAU,uBAAsB;AAAA,IACnD,oBAAC,UAAK,WAAU,WAAU,qBAAO;AAAA,KACnC;AAEJ;AAEA,IAAM,6BAA6B,MAAM;AACvC,QAAM,EAAE,cAAc,iBAAiB,SAAS,gBAAgB,IAAI,aAAa;AACjF,QAAM,UAAU,yBAAyB;AACzC,QAAM,4BAA4B,qCAAqC;AACvE,QAAM,EAAE,SAAS,oBAAoB,IAAI,gBAAgB;AAEzD,QAAM,UAAU,iBAAiB;AACjC,QAAM,YAAY,SAAS,gBAAgB;AAC3C,QAAM,aAAa,SAAS,kBAAkB;AAE9C,QAAM,gBAAgB,YAAY,MAAM;AACtC,oBAAgB,KAAK;AAAA,EACvB,GAAG,CAAC,eAAe,CAAC;AAGpB,YAAU,MAAM;AACd,QAAI,CAAC,aAAc;AACnB,WAAO,MAAM;AACX,0BAAoB;AACpB,kCAA4B;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,cAAc,qBAAqB,yBAAyB,CAAC;AAEjE,YAAU,MAAM;AACd,QAAI,CAAC,aAAa,YAAY,UAAU;AACtC,sBAAgB,cAAc,QAAQ;AAAA,IACxC;AACA,QAAI,CAAC,cAAc,YAAY,WAAW;AACxC,sBAAgB,cAAc,QAAQ;AAAA,IACxC;AAAA,EACF,GAAG,CAAC,WAAW,YAAY,SAAS,cAAc,eAAe,CAAC;AAElE,YAAU,MAAM;AACd,QAAI,CAAC,aAAc;AACnB,UAAM,YAAY,CAAC,UAAyB;AAC1C,UAAI,MAAM,QAAQ,SAAU;AAC5B,YAAM,yBAAyB;AAC/B,oBAAc;AAAA,IAChB;AAEA,WAAO,iBAAiB,WAAW,WAAW,IAAI;AAClD,WAAO,MAAM,OAAO,oBAAoB,WAAW,WAAW,IAAI;AAAA,EACpE,GAAG,CAAC,eAAe,YAAY,CAAC;AAEhC,QAAM,WAAW,QAMf,MAAM;AACN,UAAM,eAID;AAAA,MACH,EAAE,IAAI,UAAU,OAAO,UAAU,MAAM,MAAM;AAAA,MAC7C,EAAE,IAAI,cAAc,OAAO,cAAc,MAAM,OAAO;AAAA,IACxD;AACA,QAAI,WAAW;AACb,mBAAa,KAAK,EAAE,IAAI,UAAU,OAAO,UAAU,MAAM,YAAY,CAAC;AAAA,IACxE;AACA,QAAI,YAAY;AACd,mBAAa,KAAK,EAAE,IAAI,WAAW,OAAO,qBAAqB,MAAM,OAAO,CAAC;AAAA,IAC/E;AACA,WAAO;AAAA,EACT,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,MAAI,CAAC,gBAAgB,CAAC,QAAS,QAAO;AAEtC,SACE,qBAAC,SAAI,WAAU,qDACb;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,OAAM;AAAA,QACN,OACE;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,OAAM;AAAA,YACN,WAAW,eAAe,EAAE,SAAS,SAAS,MAAM,OAAO,CAAC;AAAA,YAC5D,SAAS;AAAA,YAET,8BAAC,QAAK,MAAK,cAAa;AAAA;AAAA,QAC1B;AAAA;AAAA,IAEJ;AAAA,IAEA,qBAAC,SAAI,WAAW,GAAG,gCAAgC,CAAC,WAAW,aAAa,GAC1E;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,cAAW;AAAA,UACX,WAAW;AAAA,YACT;AAAA,YACA,UAAU,YAAY;AAAA,UACxB;AAAA,UAEC,mBAAS,IAAI,UACZ;AAAA,YAAC;AAAA;AAAA,cAEC,MAAK;AAAA,cACL,gBAAc,YAAY,KAAK,KAAK,SAAS;AAAA,cAC5C,GAAI,UAAU,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA,cACxC,WAAW;AAAA,gBACT;AAAA,gBACA;AAAA;AAAA,gBAEA,UAAU,iDAAiD;AAAA,gBAC3D,YAAY,KAAK,KACb,mDACA;AAAA,cACN;AAAA,cACA,SAAS,MAAM;AACb,gCAAgB,MAAM,KAAK,EAAE;AAAA,cAC/B;AAAA,cAEA;AAAA,oCAAC,QAAK,MAAM,KAAK,MAAM,WAAU,oBAAmB;AAAA,gBACnD,UAAU,oBAAC,UAAK,WAAU,YAAY,eAAK,OAAM,IAAU,KAAK;AAAA;AAAA;AAAA,YAlB5D,KAAK;AAAA,UAmBZ,CACD;AAAA;AAAA,MACH;AAAA,MAEA,oBAAC,aAAQ,WAAU,2DACjB,8BAAC,SAAI,WAAU,yDACb,+BAAC,YAAS,UAAU,oBAAC,2BAAwB,GAC1C;AAAA,oBAAY,WAAW,oBAAC,iBAAc,IAAK;AAAA,QAC3C,YAAY,eAAe,oBAAC,qBAAkB,IAAK;AAAA,QACnD,YAAY,YAAY,YAAY,oBAAC,iBAAc,IAAK;AAAA,QACxD,YAAY,aAAa,aAAa,oBAAC,mBAAgB,IAAK;AAAA,SAC/D,GACF,GACF;AAAA,OACF;AAAA,KACF;AAEJ;AAEA,IAAO,0BAAQ;","names":[]}
@@ -4,13 +4,13 @@ import {
4
4
  matchLocation,
5
5
  placesEqual,
6
6
  sanitizeSearchForPlace
7
- } from "./chunk-4MCIDE2C.js";
7
+ } from "./chunk-2QTH6JHX.js";
8
8
  import {
9
9
  sessionIsCreateAgent
10
10
  } from "./chunk-RDXBMTP5.js";
11
11
  import {
12
12
  findAgentByName
13
- } from "./chunk-3QWUHGNL.js";
13
+ } from "./chunk-T6QQV5LK.js";
14
14
  import {
15
15
  libraryAgentId,
16
16
  toEffectiveRoutes,
@@ -21,7 +21,7 @@ import {
21
21
  useServerCapabilities,
22
22
  useServerCapabilitiesSettled,
23
23
  useShellMode
24
- } from "./chunk-TAABBM7F.js";
24
+ } from "./chunk-2GIZY3JJ.js";
25
25
 
26
26
  // src/routing/ShellRouteSync.tsx
27
27
  import { useCallback, useEffect, useMemo, useRef } from "react";
@@ -387,4 +387,4 @@ function ShellRouteSync({
387
387
  export {
388
388
  ShellRouteSync
389
389
  };
390
- //# sourceMappingURL=ShellRouteSync-J74MV23Q.js.map
390
+ //# sourceMappingURL=ShellRouteSync-SJXFKUAJ.js.map