@jini-ai/ui 0.3.4 → 0.3.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 (151) hide show
  1. package/dist/features/appearance/react/components/AppearanceTab.d.ts +4 -1
  2. package/dist/features/appearance/react/components/AppearanceTab.d.ts.map +1 -1
  3. package/dist/features/appearance/react/components/AppearanceTab.js +7 -4
  4. package/dist/features/appearance/react/components/AppearanceTab.js.map +1 -1
  5. package/dist/features/connectors/ConnectorsBrowser.d.ts +8 -1
  6. package/dist/features/connectors/ConnectorsBrowser.d.ts.map +1 -1
  7. package/dist/features/connectors/ConnectorsBrowser.js +4 -3
  8. package/dist/features/connectors/ConnectorsBrowser.js.map +1 -1
  9. package/dist/features/connectors/components/ConnectorCard.d.ts +4 -1
  10. package/dist/features/connectors/components/ConnectorCard.d.ts.map +1 -1
  11. package/dist/features/connectors/components/ConnectorCard.js +5 -4
  12. package/dist/features/connectors/components/ConnectorCard.js.map +1 -1
  13. package/dist/features/connectors/components/ConnectorDetailDrawer.d.ts +3 -1
  14. package/dist/features/connectors/components/ConnectorDetailDrawer.d.ts.map +1 -1
  15. package/dist/features/connectors/components/ConnectorDetailDrawer.js +3 -2
  16. package/dist/features/connectors/components/ConnectorDetailDrawer.js.map +1 -1
  17. package/dist/features/connectors/components/ConnectorGrid.d.ts +4 -1
  18. package/dist/features/connectors/components/ConnectorGrid.d.ts.map +1 -1
  19. package/dist/features/connectors/components/ConnectorGrid.js +4 -2
  20. package/dist/features/connectors/components/ConnectorGrid.js.map +1 -1
  21. package/dist/features/connectors/components/ConnectorSearchBar.d.ts +3 -1
  22. package/dist/features/connectors/components/ConnectorSearchBar.d.ts.map +1 -1
  23. package/dist/features/connectors/components/ConnectorSearchBar.js +4 -3
  24. package/dist/features/connectors/components/ConnectorSearchBar.js.map +1 -1
  25. package/dist/features/connectors/components/ProviderTabBar.d.ts +4 -1
  26. package/dist/features/connectors/components/ProviderTabBar.d.ts.map +1 -1
  27. package/dist/features/connectors/components/ProviderTabBar.js +5 -3
  28. package/dist/features/connectors/components/ProviderTabBar.js.map +1 -1
  29. package/dist/features/execution/react/components/ByokProviderForm.d.ts +3 -1
  30. package/dist/features/execution/react/components/ByokProviderForm.d.ts.map +1 -1
  31. package/dist/features/execution/react/components/ByokProviderForm.js +5 -4
  32. package/dist/features/execution/react/components/ByokProviderForm.js.map +1 -1
  33. package/dist/features/execution/react/components/ExecutionTab.d.ts +8 -1
  34. package/dist/features/execution/react/components/ExecutionTab.d.ts.map +1 -1
  35. package/dist/features/execution/react/components/ExecutionTab.js +4 -3
  36. package/dist/features/execution/react/components/ExecutionTab.js.map +1 -1
  37. package/dist/features/execution/react/components/LocalCliAgentCard.d.ts +4 -1
  38. package/dist/features/execution/react/components/LocalCliAgentCard.d.ts.map +1 -1
  39. package/dist/features/execution/react/components/LocalCliAgentCard.js +11 -5
  40. package/dist/features/execution/react/components/LocalCliAgentCard.js.map +1 -1
  41. package/dist/features/execution/react/components/LocalCliAgentList.d.ts +4 -1
  42. package/dist/features/execution/react/components/LocalCliAgentList.d.ts.map +1 -1
  43. package/dist/features/execution/react/components/LocalCliAgentList.js +4 -2
  44. package/dist/features/execution/react/components/LocalCliAgentList.js.map +1 -1
  45. package/dist/features/execution/react/components/ProviderChipGroup.d.ts +4 -1
  46. package/dist/features/execution/react/components/ProviderChipGroup.d.ts.map +1 -1
  47. package/dist/features/execution/react/components/ProviderChipGroup.js +7 -3
  48. package/dist/features/execution/react/components/ProviderChipGroup.js.map +1 -1
  49. package/dist/features/execution/react/components/SearchableModelSelect.d.ts +4 -1
  50. package/dist/features/execution/react/components/SearchableModelSelect.d.ts.map +1 -1
  51. package/dist/features/execution/react/components/SearchableModelSelect.js +3 -2
  52. package/dist/features/execution/react/components/SearchableModelSelect.js.map +1 -1
  53. package/dist/features/execution/react/hooks/useReasoningControl.d.ts +15 -0
  54. package/dist/features/execution/react/hooks/useReasoningControl.d.ts.map +1 -1
  55. package/dist/features/execution/react/hooks/useReasoningControl.js +42 -4
  56. package/dist/features/execution/react/hooks/useReasoningControl.js.map +1 -1
  57. package/dist/features/execution/types.d.ts +14 -0
  58. package/dist/features/execution/types.d.ts.map +1 -1
  59. package/dist/features/html-editor/react/components/InteractiveHtmlEditor.d.ts +1 -1
  60. package/dist/features/html-editor/react/hooks/useInteractiveHtmlEditor.js +1 -1
  61. package/dist/features/i18n/dictionaries/index.d.ts +1 -1
  62. package/dist/features/instructions/react/components/InstructionsTab.d.ts +3 -1
  63. package/dist/features/instructions/react/components/InstructionsTab.d.ts.map +1 -1
  64. package/dist/features/instructions/react/components/InstructionsTab.js +3 -2
  65. package/dist/features/instructions/react/components/InstructionsTab.js.map +1 -1
  66. package/dist/features/integrations/react/components/ClientPicker.d.ts +4 -1
  67. package/dist/features/integrations/react/components/ClientPicker.d.ts.map +1 -1
  68. package/dist/features/integrations/react/components/ClientPicker.js +7 -3
  69. package/dist/features/integrations/react/components/ClientPicker.js.map +1 -1
  70. package/dist/features/integrations/react/components/CodexInstallToggleButton.d.ts +3 -1
  71. package/dist/features/integrations/react/components/CodexInstallToggleButton.d.ts.map +1 -1
  72. package/dist/features/integrations/react/components/CodexInstallToggleButton.js +3 -2
  73. package/dist/features/integrations/react/components/CodexInstallToggleButton.js.map +1 -1
  74. package/dist/features/integrations/react/components/IntegrationsTab.d.ts +6 -1
  75. package/dist/features/integrations/react/components/IntegrationsTab.d.ts.map +1 -1
  76. package/dist/features/integrations/react/components/IntegrationsTab.js +4 -3
  77. package/dist/features/integrations/react/components/IntegrationsTab.js.map +1 -1
  78. package/dist/features/language/react/components/LanguageTab.d.ts +4 -1
  79. package/dist/features/language/react/components/LanguageTab.d.ts.map +1 -1
  80. package/dist/features/language/react/components/LanguageTab.js +5 -3
  81. package/dist/features/language/react/components/LanguageTab.js.map +1 -1
  82. package/dist/features/mcp-ui/sandbox-proxy.d.ts +1 -1
  83. package/dist/features/mcp-ui/sandbox-proxy.js +2 -2
  84. package/dist/features/mcp-ui/sandbox-proxy.js.map +1 -1
  85. package/dist/features/mcp-ui/surfaces/outcome.d.ts +1 -1
  86. package/dist/features/mcp-ui/surfaces/tokens.d.ts +6 -5
  87. package/dist/features/mcp-ui/surfaces/tokens.d.ts.map +1 -1
  88. package/dist/features/mcp-ui/surfaces/tokens.js +6 -5
  89. package/dist/features/mcp-ui/surfaces/tokens.js.map +1 -1
  90. package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts +4 -1
  91. package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts.map +1 -1
  92. package/dist/features/media-providers/react/components/MediaProvidersTab.js +9 -4
  93. package/dist/features/media-providers/react/components/MediaProvidersTab.js.map +1 -1
  94. package/dist/features/memory/react/components/MemoryEntryCard.d.ts +3 -1
  95. package/dist/features/memory/react/components/MemoryEntryCard.d.ts.map +1 -1
  96. package/dist/features/memory/react/components/MemoryEntryCard.js +3 -2
  97. package/dist/features/memory/react/components/MemoryEntryCard.js.map +1 -1
  98. package/dist/features/memory/react/components/MemoryExtractionCard.d.ts +3 -1
  99. package/dist/features/memory/react/components/MemoryExtractionCard.d.ts.map +1 -1
  100. package/dist/features/memory/react/components/MemoryExtractionCard.js +3 -2
  101. package/dist/features/memory/react/components/MemoryExtractionCard.js.map +1 -1
  102. package/dist/features/memory/react/components/MemoryHooksPanel.d.ts +3 -1
  103. package/dist/features/memory/react/components/MemoryHooksPanel.d.ts.map +1 -1
  104. package/dist/features/memory/react/components/MemoryHooksPanel.js +7 -2
  105. package/dist/features/memory/react/components/MemoryHooksPanel.js.map +1 -1
  106. package/dist/features/memory/react/components/MemoryHowPanel.d.ts +3 -1
  107. package/dist/features/memory/react/components/MemoryHowPanel.d.ts.map +1 -1
  108. package/dist/features/memory/react/components/MemoryHowPanel.js +2 -2
  109. package/dist/features/memory/react/components/MemoryHowPanel.js.map +1 -1
  110. package/dist/features/memory/react/components/MemoryList.d.ts +3 -1
  111. package/dist/features/memory/react/components/MemoryList.d.ts.map +1 -1
  112. package/dist/features/memory/react/components/MemoryList.js +12 -5
  113. package/dist/features/memory/react/components/MemoryList.js.map +1 -1
  114. package/dist/features/memory/react/components/MemorySettingsPanel.d.ts +7 -1
  115. package/dist/features/memory/react/components/MemorySettingsPanel.d.ts.map +1 -1
  116. package/dist/features/memory/react/components/MemorySettingsPanel.js +3 -2
  117. package/dist/features/memory/react/components/MemorySettingsPanel.js.map +1 -1
  118. package/dist/features/notifications/react/components/NotificationsTab.d.ts +3 -1
  119. package/dist/features/notifications/react/components/NotificationsTab.d.ts.map +1 -1
  120. package/dist/features/notifications/react/components/NotificationsTab.js +13 -6
  121. package/dist/features/notifications/react/components/NotificationsTab.js.map +1 -1
  122. package/dist/features/privacy/react/components/PrivacyTab.d.ts +9 -1
  123. package/dist/features/privacy/react/components/PrivacyTab.d.ts.map +1 -1
  124. package/dist/features/privacy/react/components/PrivacyTab.js +5 -4
  125. package/dist/features/privacy/react/components/PrivacyTab.js.map +1 -1
  126. package/dist/features/settings/dialog/react/components/SettingsDialogShell.d.ts +1 -1
  127. package/dist/features/settings/dialog/styles/settings-dialog.css +1 -0
  128. package/dist/features/skills/react/components/SkillDraftForm.d.ts +3 -1
  129. package/dist/features/skills/react/components/SkillDraftForm.d.ts.map +1 -1
  130. package/dist/features/skills/react/components/SkillDraftForm.js +3 -2
  131. package/dist/features/skills/react/components/SkillDraftForm.js.map +1 -1
  132. package/dist/features/skills/react/components/SkillRow.d.ts +3 -1
  133. package/dist/features/skills/react/components/SkillRow.d.ts.map +1 -1
  134. package/dist/features/skills/react/components/SkillRow.js +3 -2
  135. package/dist/features/skills/react/components/SkillRow.js.map +1 -1
  136. package/dist/features/skills/react/components/SkillsTab.d.ts +8 -1
  137. package/dist/features/skills/react/components/SkillsTab.d.ts.map +1 -1
  138. package/dist/features/skills/react/components/SkillsTab.js +7 -3
  139. package/dist/features/skills/react/components/SkillsTab.js.map +1 -1
  140. package/dist/features/tabbed-dialog/react/components/TabbedDialog.d.ts +1 -1
  141. package/dist/features/tabbed-dialog/react/components/TabbedDialog.js +1 -1
  142. package/dist/features/tabbed-dialog/types.d.ts +2 -2
  143. package/dist/features/tabbed-dialog/types.js +2 -2
  144. package/dist/react/components/RemixIcon.d.ts +42 -1
  145. package/dist/react/components/RemixIcon.d.ts.map +1 -1
  146. package/dist/react/components/RemixIcon.js +152 -8
  147. package/dist/react/components/RemixIcon.js.map +1 -1
  148. package/dist/utils/file-transfer.d.ts.map +1 -1
  149. package/dist/utils/file-transfer.js +2 -0
  150. package/dist/utils/file-transfer.js.map +1 -1
  151. package/package.json +3 -3
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useRef, useState } from 'react';
3
+ import { agentHandleProps } from '@jini-ai/agentic';
3
4
  import { filterAgentModelOptions } from '../../rules.js';
4
5
  import { CustomSelect } from '../../../../react/components/CustomSelect.js';
5
6
  /**
@@ -18,7 +19,7 @@ import { CustomSelect } from '../../../../react/components/CustomSelect.js';
18
19
  * capability, and this package ships no such vocabulary for a host to hook
19
20
  * into. A host that needs per-option badges can compose them into `label`.
20
21
  */
21
- export function SearchableModelSelect({ models, value, onChange, ariaLabel, searchPlaceholder, additionalOptions, minSearchableOptions = 8, className, menuClassName, testId, searchInputTestId, }) {
22
+ export function SearchableModelSelect({ models, value, onChange, ariaLabel, searchPlaceholder, additionalOptions, minSearchableOptions = 8, className, menuClassName, testId, searchInputTestId, agentHandle, }) {
22
23
  const [query, setQuery] = useState('');
23
24
  const searchRef = useRef(null);
24
25
  const allOptions = [
@@ -45,7 +46,7 @@ export function SearchableModelSelect({ models, value, onChange, ariaLabel, sear
45
46
  setQuery('');
46
47
  }
47
48
  };
48
- return (_jsx("div", { className: "jini-searchable-select", "data-testid": testId, children: _jsx(CustomSelect, { value: value, options: visibleOptions, onChange: onChange, ariaLabel: ariaLabel, className: className, ...(menuClassName === undefined ? {} : { menuClassName }), onOpenChange: handleOpenChange, menuHeader: shouldShowSearch ? (_jsx("div", { className: "jini-searchable-select-search-row", children: _jsx("input", { ref: searchRef, type: "search", className: "jini-input jini-searchable-select-search", value: query, placeholder: searchPlaceholder, "aria-label": searchPlaceholder, "data-testid": searchInputTestId,
49
+ return (_jsx("div", { className: "jini-searchable-select", "data-testid": testId, ...agentHandleProps(agentHandle, { role: 'field', label: ariaLabel }), children: _jsx(CustomSelect, { value: value, options: visibleOptions, onChange: onChange, ariaLabel: ariaLabel, className: className, ...(menuClassName === undefined ? {} : { menuClassName }), onOpenChange: handleOpenChange, menuHeader: shouldShowSearch ? (_jsx("div", { className: "jini-searchable-select-search-row", children: _jsx("input", { ref: searchRef, type: "search", className: "jini-input jini-searchable-select-search", value: query, placeholder: searchPlaceholder, "aria-label": searchPlaceholder, "data-testid": searchInputTestId,
49
50
  // The popover's own outside-pointerdown/keydown listeners are
50
51
  // scoped to the menu element, so typing here never closes it
51
52
  // — but stopping propagation keeps that explicit rather than
@@ -1 +1 @@
1
- {"version":3,"file":"SearchableModelSelect.js","sourceRoot":"","sources":["../../../../../src/features/execution/react/components/SearchableModelSelect.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SearchableModelSelect.js","sourceRoot":"","sources":["../../../../../src/features/execution/react/components/SearchableModelSelect.tsx"],"names":[],"mappings":"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"}
@@ -3,6 +3,21 @@ export interface UseReasoningControlOptions {
3
3
  agent: DetectedAgent;
4
4
  config: LocalCliConfig;
5
5
  explicitCustomMode?: boolean | undefined;
6
+ /**
7
+ * Notified with `''` when the resolved model's reasoning-effort options no longer include the
8
+ * operator's previously persisted per-agent pick (`config.reasoningByAgentId[agent.id]`) — e.g.
9
+ * switching from a model that supports `xhigh` to one that tops out at `high`. Wire this to
10
+ * `onReasoningChange(agent.id, next)` so the stale value is actually cleared from persisted config,
11
+ * not just patched over at render time: `selectedAgentReasoning` (`rules.ts`) is a public rule a
12
+ * host's dispatch code may call directly, so a value corrected only inside this hook's derived
13
+ * `reasoningValue` could still leak an unsupported id into the CLI invocation.
14
+ *
15
+ * Never invoked on the `reasoningInModelId` path — that shape has no reasoning value of its own to
16
+ * clear; the level lives inside the model id itself, and picking a new base model already replaces
17
+ * it (`resolveNextModelId`). Omitted means nothing is auto-cleared, matching this hook's behavior
18
+ * before per-model narrowing existed.
19
+ */
20
+ onReasoningChange?: ((next: string) => void) | undefined;
6
21
  }
7
22
  export interface UseReasoningControlResult {
8
23
  /** The agent's model list, or empty array if not defined. */
@@ -1 +1 @@
1
- {"version":3,"file":"useReasoningControl.d.ts","sourceRoot":"","sources":["../../../../../src/features/execution/react/hooks/useReasoningControl.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,6DAA6D;IAC7D,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C,gCAAgC;IAChC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+EAA+E;IAC/E,WAAW,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI,CAAC;IACnD,mEAAmE;IACnE,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mEAAmE;IACnE,oBAAoB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,4GAA4G;IAC5G,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;IACtB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD;;;OAGG;IACH,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CAAC;AACpG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,kBAAkB,CAAC,EAAE,OAAO,GAC3B,yBAAyB,CAAC"}
1
+ {"version":3,"file":"useReasoningControl.d.ts","sourceRoot":"","sources":["../../../../../src/features/execution/react/hooks/useReasoningControl.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC1D;AAED,MAAM,WAAW,yBAAyB;IACxC,6DAA6D;IAC7D,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C,gCAAgC;IAChC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+EAA+E;IAC/E,WAAW,EAAE,SAAS,mBAAmB,EAAE,GAAG,IAAI,CAAC;IACnD,mEAAmE;IACnE,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mEAAmE;IACnE,oBAAoB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,4GAA4G;IAC5G,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,6DAA6D;IAC7D,YAAY,EAAE,OAAO,CAAC;IACtB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yDAAyD;IACzD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,0DAA0D;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB,uFAAuF;IACvF,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC1C,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD;;;OAGG;IACH,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAC3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,yBAAyB,CAAC;AACpG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,kBAAkB,CAAC,EAAE,OAAO,GAC3B,yBAAyB,CAAC"}
@@ -1,8 +1,8 @@
1
- import { useCallback } from 'react';
1
+ import { useCallback, useEffect } from 'react';
2
2
  import { CUSTOM_MODEL_SENTINEL } from '../../constants.js';
3
3
  import { modelIdForReasoningLevel, reasoningModelGroupFor, reasoningModelGroups, selectedAgentModel, selectedAgentReasoning, shouldShowCustomModelInput, splitReasoningModelId, } from '../../rules.js';
4
4
  export function useReasoningControl(optionsOrAgent, maybeConfig, maybeExplicitCustomMode) {
5
- const { agent, config, explicitCustomMode = false } = 'agent' in optionsOrAgent && 'config' in optionsOrAgent
5
+ const { agent, config, explicitCustomMode = false, onReasoningChange } = 'agent' in optionsOrAgent && 'config' in optionsOrAgent
6
6
  ? optionsOrAgent
7
7
  : {
8
8
  agent: optionsOrAgent,
@@ -32,16 +32,54 @@ export function useReasoningControl(optionsOrAgent, maybeConfig, maybeExplicitCu
32
32
  const activeGroup = modelGroups ? reasoningModelGroupFor(modelGroups, resolvedModel, suffixLevelIds) : null;
33
33
  const activeLevel = modelGroups ? splitReasoningModelId(resolvedModel, suffixLevelIds).level : null;
34
34
  const flatReasoningOptions = agent.reasoningOptions ?? [];
35
+ // Per-model narrowing: a runtime whose catalog reports reasoning levels PER MODEL rather than
36
+ // uniformly across the agent (Codex — see `AgentModelOption.reasoning`'s doc) declares them on the
37
+ // resolved model's own catalog row. `undefined` there means "this model's entry has nothing
38
+ // model-specific to say", so it falls back to the agent-wide union below — the same list every
39
+ // model rendered before this field existed. An explicit `[]` is honored AS-IS, even though a model
40
+ // with genuinely zero levels then hides the control: falling back to the union for `[]` too would
41
+ // just move today's "every model sees every level" bug one layer down instead of fixing it.
42
+ const selectedModelReasoning = models.find((model) => model.id === resolvedModel)?.reasoning;
35
43
  // Exactly one effort control, whichever shape declared it. `reasoningOptions` wins if a def ever
36
44
  // declares both, rather than rendering two controls that disagree about where the choice lands.
37
- const reasoningOptions = flatReasoningOptions.length > 0 ? flatReasoningOptions : (activeGroup?.levels ?? []);
45
+ const reasoningOptions = flatReasoningOptions.length === 0
46
+ ? (activeGroup?.levels ?? [])
47
+ : selectedModelReasoning === undefined
48
+ ? flatReasoningOptions
49
+ : selectedModelReasoning;
38
50
  const hasReasoning = reasoningOptions.length > 0;
39
- const reasoningValue = flatReasoningOptions.length > 0
51
+ const rawReasoningValue = flatReasoningOptions.length > 0
40
52
  ? selectedAgentReasoning(config, agent)
41
53
  : (activeLevel ?? reasoningOptions[0]?.id ?? '');
54
+ // The persisted (or agent-wide-default) pick can name a level the narrowed list above does not
55
+ // actually offer for the CURRENT model — that is the whole point of narrowing. Rendering it anyway
56
+ // would just relocate today's bug: the `<select>` below has no matching `<option>`, so it would
57
+ // silently show whatever the browser highlights first while the underlying value stays wrong. This
58
+ // guards what actually renders; the effect further down clears the persisted copy so every other
59
+ // reader of `config.reasoningByAgentId` (not just this hook) sees the correction too.
60
+ const reasoningSupported = reasoningOptions.some((option) => option.id === rawReasoningValue);
61
+ const reasoningValue = reasoningSupported ? rawReasoningValue : (reasoningOptions[0]?.id ?? '');
42
62
  // A base model with exactly one variant has a real, fixed level worth showing — but nothing to
43
63
  // choose between, so the control is shown disabled rather than offering an illusion of choice.
44
64
  const reasoningDisabled = flatReasoningOptions.length === 0 && reasoningOptions.length < 2;
65
+ const reasoningOptionIdsKey = reasoningOptions.map((option) => option.id).join('|');
66
+ useEffect(() => {
67
+ // The reasoningInModelId path has no reasoning value of its own to clear — the level lives
68
+ // inside the model id itself, and picking a new base model already replaces it.
69
+ if (flatReasoningOptions.length === 0)
70
+ return;
71
+ if (!onReasoningChange)
72
+ return;
73
+ const persisted = config.reasoningByAgentId?.[agent.id]?.trim();
74
+ if (!persisted)
75
+ return;
76
+ if (reasoningOptions.some((option) => option.id === persisted))
77
+ return;
78
+ onReasoningChange('');
79
+ // `reasoningOptionIdsKey` stands in for `reasoningOptions` (a fresh array every render) so this
80
+ // only re-runs when the narrowed vocabulary actually changes, not on every unrelated re-render.
81
+ // eslint-disable-next-line react-hooks/exhaustive-deps
82
+ }, [flatReasoningOptions.length, onReasoningChange, config.reasoningByAgentId, agent.id, reasoningOptionIdsKey]);
45
83
  // Adapters opt out via `supportsCustomModel: false` when their CLI has no
46
84
  // free-text model flag, or validates the id against a live catalog and
47
85
  // rejects unknown ones. `undefined` allows it, matching every adapter's
@@ -1 +1 @@
1
- {"version":3,"file":"useReasoningControl.js","sourceRoot":"","sources":["../../../../../src/features/execution/react/hooks/useReasoningControl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useReasoningControl.js","sourceRoot":"","sources":["../../../../../src/features/execution/react/hooks/useReasoningControl.ts"],"names":[],"mappings":"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"}
@@ -138,6 +138,20 @@ export interface ExecutionConfig {
138
138
  export interface AgentModelOption {
139
139
  id: string;
140
140
  label: string;
141
+ /**
142
+ * The reasoning-effort levels THIS model supports, when the runtime's own catalog reports them
143
+ * per model rather than uniformly across the agent. Mirrors `@jini-ai/agent-runtime`'s
144
+ * `RuntimeModelOption.reasoning` field-for-field, for the same reason every other field on this
145
+ * interface does (see this file's header doc) — Codex's `debug models` catalog reports it, and the
146
+ * levels genuinely differ between models on the same CLI.
147
+ *
148
+ * `undefined` means "nothing model-specific to say" and is read as agent-wide by
149
+ * `useReasoningControl`'s narrowing rule — it falls back to `DetectedAgent.reasoningOptions`'s
150
+ * union, the same list every model showed before this field existed. It is NOT a synonym for "zero
151
+ * levels". An explicit `[]` means the catalog said so outright, and is honored as-is even though it
152
+ * hides the effort control for that model.
153
+ */
154
+ reasoning?: readonly AgentModelOption[] | undefined;
141
155
  }
142
156
  /** Where an agent's model list came from. `'live'` was pulled from the CLI
143
157
  * itself (its config or a catalog call); `'fallback'` is the adapter's
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/execution/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;mEAGmE;AACnE,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,MAAM,CAAC;AAEjD;kFACkF;AAClF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE;;6CAE6C;AAC7C,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,SAAS,CAAC;AAExD;;6EAE6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,WAAW,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB;iFAC6E;IAC7E,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B;0FACsF;IACtF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;yEACqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;8EAC0E;IAC1E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxC;AAED;;kDAEkD;AAClD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,sEAAsE;IACtE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd;sEACkE;IAClE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B;qEACiE;IACjE,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;CACvE;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED;;4EAE4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;8EAG8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnD;;;8DAG8D;AAC9D,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,CAAC;AAE3D;;;;;qDAKqD;AACrD,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;8CAE0C;IAC1C,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,CAAC;IACjD,YAAY,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC5C;;;;;oEAKgE;IAChE,gBAAgB,CAAC,EAAE,SAAS,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAC3D;;;;;;;;;;;;;;;;;;OAkBG;IACH,kBAAkB,CAAC,EAAE;QAAE,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;KAAE,GAAG,SAAS,CAAC;IACzE;sEACkE;IAClE,mBAAmB,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC3D,UAAU,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACzC;;iCAE6B;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;2EACuE;IACvE,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC;;;kDAG8C;IAC9C,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,CAAC;IACrD;;;iCAG6B;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC;;wBAEoB;IACpB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;6DAEyD;IACzD,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC7C,uEAAuE;IACvE,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,CAAC;CACpD;AAED,MAAM,MAAM,qBAAqB;AAC/B,iEAAiE;AAC/D,aAAa;AACf,yEAAyE;GACvE,gBAAgB;AAClB,sEAAsE;GACpE,aAAa;AACf,wEAAwE;GACtE,wBAAwB;AAC1B,iEAAiE;GAC/D,cAAc;AAChB,wDAAwD;GACtD,cAAc,CAAC;AAEnB,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc;AACxB,gDAAgD;AAC9C;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE;AACtB,8CAA8C;GAC5C;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE;AACzB,6DAA6D;GAC3D;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE;AACpB;;sDAEsD;GACpD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACpC,8EAA8E;GAC5E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACtC;6DAC6D;GAC3D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf;;0BAEsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;8BAC0B;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B;;;;;4EAKwE;IACxE,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B;;8CAE0C;IAC1C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD;;+CAE2C;IAC3C,kBAAkB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD;;;;6DAIyD;IACzD,YAAY,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3E;AAED;mEACmE;AACnE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC9C;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAEvF;;;;;;oCAMoC;AACpC,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IACE,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,oBAAoB,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACzD,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,GACD;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D;;;;;;;0CAO0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf;;iGAE6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IACd;+DAC2D;IAC3D,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC;+FAC2F;IAC3F,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjD;8EAC0E;IAC1E,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,uEAAuE;AACvE,MAAM,MAAM,cAAc,GACtB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;;;kCAOkC;AAClC,MAAM,MAAM,mBAAmB,GAC3B;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/features/execution/types.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ import type { CanvasStyling } from '../../canvas-style.js';
33
33
  * `describeEmbedPlaceholder` is the same idea for a second, independent concern: recognizing an
34
34
  * unresolved embed marker and labeling it for `../../canvas-embed-placeholders.ts`'s explicit
35
35
  * placeholder card. See `@jini-ai/admin/react`'s `InteractiveHtmlEditor` for a worked example of both:
36
- * it composes this primitive with a predicate recognizing Tovu's legacy `data-embed-type` convention
36
+ * it composes this primitive with a predicate recognizing the host product's legacy `data-embed-type` convention
37
37
  * for the first, and a describer recognizing the current `data-embed-config` convention for the
38
38
  * second.
39
39
  *
@@ -19,7 +19,7 @@ import { prettifyCss } from '../../css.js';
19
19
  * cursor or require diffing GrapesJS's tree against a string to detect "did this change come from us",
20
20
  * which is real complexity this component's text-editing-only scope does not need. A host that needs a
21
21
  * fresh document only mounts this component while it's active and remounts with fresh `html` — see
22
- * `@jini-ai/admin/react`'s `InteractiveHtmlEditor` adapter and its caller in Tovu's `PageEditor.tsx`.
22
+ * `@jini-ai/admin/react`'s `InteractiveHtmlEditor` adapter and its caller in the host product's `PageEditor.tsx`.
23
23
  *
24
24
  * **This module has zero knowledge of what "protected" means.** It only knows how to register a
25
25
  * locked GrapesJS component type for whatever `isProtectedElement` predicate its caller supplies —
@@ -4,7 +4,7 @@
4
4
  * translation.
5
5
  *
6
6
  * This is a SEPARATE i18n system from any Jini-consuming host's own
7
- * dictionaries (e.g. Tovu's `apps/admin/src/lib/i18n-common.ts` +
7
+ * dictionaries (e.g. a host product's `apps/admin/src/lib/i18n-common.ts` +
8
8
  * `apps/admin/src/lib/dictionary-translator.ts` + one `*-i18n.ts` file per
9
9
  * admin feature) -- deliberately so, since this package is meant to be
10
10
  * reusable across hosts and a host's own product copy has no reason to ship
@@ -14,6 +14,8 @@ export interface InstructionsTabProps {
14
14
  placeholder?: string;
15
15
  rows?: number;
16
16
  maxLength?: number;
17
+ /** This tab's own agent handle — see other tabs' `agentHandle` doc for the split. */
18
+ agentHandle?: string;
17
19
  }
18
20
  /**
19
21
  * A plain textarea bound to a free-text "custom instructions" string.
@@ -21,5 +23,5 @@ export interface InstructionsTabProps {
21
23
  * GENERIC, the simplest tab in the whole sweep (no state beyond the bound
22
24
  * value, no branching, no side effects).
23
25
  */
24
- export declare function InstructionsTab({ value, onChange, title, description, placeholder, rows, maxLength, }: InstructionsTabProps): import("react").JSX.Element;
26
+ export declare function InstructionsTab({ value, onChange, title, description, placeholder, rows, maxLength, agentHandle, }: InstructionsTabProps): import("react").JSX.Element;
25
27
  //# sourceMappingURL=InstructionsTab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InstructionsTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/instructions/react/components/InstructionsTab.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,IAAQ,EACR,SAAgB,GACjB,EAAE,oBAAoB,+BA4BtB"}
1
+ {"version":3,"file":"InstructionsTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/instructions/react/components/InstructionsTab.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,IAAQ,EACR,SAAgB,EAChB,WAAW,GACZ,EAAE,oBAAoB,+BA6BtB"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { agentHandleProps } from '@jini-ai/agentic';
2
3
  import { useT } from '../../../i18n/index.js';
3
4
  /**
4
5
  * A plain textarea bound to a free-text "custom instructions" string.
@@ -6,11 +7,11 @@ import { useT } from '../../../i18n/index.js';
6
7
  * GENERIC, the simplest tab in the whole sweep (no state beyond the bound
7
8
  * value, no branching, no side effects).
8
9
  */
9
- export function InstructionsTab({ value, onChange, title, description, placeholder, rows = 5, maxLength = 5000, }) {
10
+ export function InstructionsTab({ value, onChange, title, description, placeholder, rows = 5, maxLength = 5000, agentHandle, }) {
10
11
  const t = useT();
11
12
  const resolvedTitle = title ?? t('Custom instructions');
12
13
  const resolvedDescription = description ?? t('Extra instructions applied to every conversation, in addition to any per-project instructions.');
13
14
  const resolvedPlaceholder = placeholder ?? t('e.g. Always respond concisely and avoid unnecessary caveats.');
14
- return (_jsx("section", { className: "jini-settings-section jini-settings-section-card jini-instructions-section", children: _jsxs("div", { className: "jini-field-block jini-instructions-card", children: [_jsx("div", { className: "jini-block-head", children: _jsxs("div", { children: [_jsx("h4", { children: resolvedTitle }), _jsx("p", { className: "jini-hint", children: resolvedDescription })] }) }), _jsx("textarea", { className: "jini-custom-instructions-input jini-instructions-input", rows: rows, maxLength: maxLength, placeholder: resolvedPlaceholder, "aria-label": resolvedTitle, value: value, onChange: (event) => onChange(event.target.value || undefined) })] }) }));
15
+ return (_jsx("section", { className: "jini-settings-section jini-settings-section-card jini-instructions-section", children: _jsxs("div", { className: "jini-field-block jini-instructions-card", children: [_jsx("div", { className: "jini-block-head", children: _jsxs("div", { children: [_jsx("h4", { children: resolvedTitle }), _jsx("p", { className: "jini-hint", children: resolvedDescription })] }) }), _jsx("textarea", { className: "jini-custom-instructions-input jini-instructions-input", rows: rows, maxLength: maxLength, placeholder: resolvedPlaceholder, "aria-label": resolvedTitle, value: value, onChange: (event) => onChange(event.target.value || undefined), ...agentHandleProps(agentHandle, { role: 'field', label: resolvedTitle }) })] }) }));
15
16
  }
16
17
  //# sourceMappingURL=InstructionsTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InstructionsTab.js","sourceRoot":"","sources":["../../../../../src/features/instructions/react/components/InstructionsTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAoB9C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,IAAI,GAAG,CAAC,EACR,SAAS,GAAG,IAAI,GACK;IACrB,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,mBAAmB,GACvB,WAAW,IAAI,CAAC,CAAC,gGAAgG,CAAC,CAAC;IACrH,MAAM,mBAAmB,GAAG,WAAW,IAAI,CAAC,CAAC,8DAA8D,CAAC,CAAC;IAE7G,OAAO,CACL,kBAAS,SAAS,EAAC,4EAA4E,YAC7F,eAAK,SAAS,EAAC,yCAAyC,aACtD,cAAK,SAAS,EAAC,iBAAiB,YAC9B,0BACE,uBAAK,aAAa,GAAM,EACxB,YAAG,SAAS,EAAC,WAAW,YAAE,mBAAmB,GAAK,IAC9C,GACF,EACN,mBACE,SAAS,EAAC,wDAAwD,EAClE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,mBAAmB,gBACpB,aAAa,EACzB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,GAC9D,IACE,GACE,CACX,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"InstructionsTab.js","sourceRoot":"","sources":["../../../../../src/features/instructions/react/components/InstructionsTab.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAsB9C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,WAAW,EACX,IAAI,GAAG,CAAC,EACR,SAAS,GAAG,IAAI,EAChB,WAAW,GACU;IACrB,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC;IACxD,MAAM,mBAAmB,GACvB,WAAW,IAAI,CAAC,CAAC,gGAAgG,CAAC,CAAC;IACrH,MAAM,mBAAmB,GAAG,WAAW,IAAI,CAAC,CAAC,8DAA8D,CAAC,CAAC;IAE7G,OAAO,CACL,kBAAS,SAAS,EAAC,4EAA4E,YAC7F,eAAK,SAAS,EAAC,yCAAyC,aACtD,cAAK,SAAS,EAAC,iBAAiB,YAC9B,0BACE,uBAAK,aAAa,GAAM,EACxB,YAAG,SAAS,EAAC,WAAW,YAAE,mBAAmB,GAAK,IAC9C,GACF,EACN,mBACE,SAAS,EAAC,wDAAwD,EAClE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,mBAAmB,gBACpB,aAAa,EACzB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,KAC1D,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,GAC1E,IACE,GACE,CACX,CAAC;AACJ,CAAC"}
@@ -18,10 +18,13 @@ export interface ClientPickerProps {
18
18
  * original's blank-until-loaded gate.
19
19
  */
20
20
  methodLabels?: Readonly<Partial<Record<McpClientId, string>>> | undefined;
21
+ /** This picker's own agent handle. The trigger button and each dropdown option get their own
22
+ * derived sub-handle — see `IntegrationsTab`'s `agentHandle` doc. */
23
+ agentHandle?: string;
21
24
  }
22
25
  /**
23
26
  * Dropdown client picker. Origin: the `ds-picker` markup inline in
24
27
  * `IntegrationsSection` — closes on outside click or Escape.
25
28
  */
26
- export declare function ClientPicker({ clients, selectedClientId, onSelect, methodLabel, methodLabels }: ClientPickerProps): import("react").JSX.Element;
29
+ export declare function ClientPicker({ clients, selectedClientId, onSelect, methodLabel, methodLabels, agentHandle }: ClientPickerProps): import("react").JSX.Element;
27
30
  //# sourceMappingURL=ClientPicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientPicker.d.ts","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/ClientPicker.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,gBAAgB,EAAE,WAAW,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C;;4CAEwC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,iBAAiB,+BA2DjH"}
1
+ {"version":3,"file":"ClientPicker.d.ts","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/ClientPicker.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACxC,gBAAgB,EAAE,WAAW,CAAC;IAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C;;4CAEwC;IACxC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1E;0EACsE;IACtE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,iBAAiB,+BAgE9H"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useRef, useState } from 'react';
3
+ import { agentHandleProps, agentSubHandle, buildAgentListHandles } from '@jini-ai/agentic';
3
4
  import { useT } from '../../../i18n/index.js';
4
5
  import { Icon } from '../../../../react/components/Icon.js';
5
6
  import { useDismissOnOutsideOrEscape } from '../../../../browser/useDismissOnOutsideOrEscape.js';
@@ -7,11 +8,14 @@ import { useDismissOnOutsideOrEscape } from '../../../../browser/useDismissOnOut
7
8
  * Dropdown client picker. Origin: the `ds-picker` markup inline in
8
9
  * `IntegrationsSection` — closes on outside click or Escape.
9
10
  */
10
- export function ClientPicker({ clients, selectedClientId, onSelect, methodLabel, methodLabels }) {
11
+ export function ClientPicker({ clients, selectedClientId, onSelect, methodLabel, methodLabels, agentHandle }) {
11
12
  const t = useT();
12
13
  const [open, setOpen] = useState(false);
13
14
  const rootRef = useRef(null);
14
15
  const selected = clients.find((c) => c.id === selectedClientId) ?? clients[0];
16
+ const optionHandles = agentHandle
17
+ ? buildAgentListHandles(agentSubHandle(agentHandle, 'option'), clients.map((c) => c.id))
18
+ : undefined;
15
19
  // Close on outside click or Escape — routed through the shared
16
20
  // `useDismissOnOutsideOrEscape` toolbox hook (packages/ui/src/browser/)
17
21
  // instead of a hand-rolled listener pair; the origin used `mousedown`,
@@ -20,12 +24,12 @@ export function ClientPicker({ clients, selectedClientId, onSelect, methodLabel,
20
24
  // behaviorally-equivalent upgrade for this same dismiss-on-outside-click
21
25
  // pattern.
22
26
  useDismissOnOutsideOrEscape(() => setOpen(false), { enabled: open, containerRef: rootRef });
23
- return (_jsxs("div", { className: "jini-picker", ref: rootRef, children: [_jsxs("button", { type: "button", className: `jini-picker-trigger${open ? ' open' : ''}`, onClick: () => setOpen((v) => !v), "aria-haspopup": "listbox", "aria-expanded": open, children: [_jsxs("span", { className: "jini-picker-meta", children: [_jsx("span", { className: "jini-picker-title", children: selected ? t(selected.label) : '' }), methodLabel ? _jsx("span", { className: "jini-picker-sub", children: methodLabel }) : null] }), _jsx(Icon, { name: "chevron-down", size: 14, className: "jini-picker-chevron", style: { transform: open ? 'rotate(180deg)' : undefined } })] }), open ? (_jsx("div", { className: "jini-picker-popover", role: "listbox", children: _jsx("div", { className: "jini-picker-list", children: clients.map((client) => {
27
+ return (_jsxs("div", { className: "jini-picker", ref: rootRef, children: [_jsxs("button", { type: "button", className: `jini-picker-trigger${open ? ' open' : ''}`, onClick: () => setOpen((v) => !v), "aria-haspopup": "listbox", "aria-expanded": open, ...agentHandleProps(agentHandle, { action: 'trigger', role: 'button', label: selected ? t(selected.label) : t('Client') }), children: [_jsxs("span", { className: "jini-picker-meta", children: [_jsx("span", { className: "jini-picker-title", children: selected ? t(selected.label) : '' }), methodLabel ? _jsx("span", { className: "jini-picker-sub", children: methodLabel }) : null] }), _jsx(Icon, { name: "chevron-down", size: 14, className: "jini-picker-chevron", style: { transform: open ? 'rotate(180deg)' : undefined } })] }), open ? (_jsx("div", { className: "jini-picker-popover", role: "listbox", children: _jsx("div", { className: "jini-picker-list", children: clients.map((client, index) => {
24
28
  const active = client.id === selectedClientId;
25
29
  return (_jsxs("button", { type: "button", role: "option", "aria-selected": active, className: `jini-picker-item${active ? ' active' : ''}`, onClick: () => {
26
30
  onSelect(client.id);
27
31
  setOpen(false);
28
- }, children: [_jsx("span", { className: "jini-picker-item-title", children: t(client.label) }), methodLabels?.[client.id] ? (_jsx("span", { className: "jini-picker-item-sub", children: methodLabels[client.id] })) : null] }, client.id));
32
+ }, ...agentHandleProps(optionHandles?.[index], { role: 'button', label: t(client.label) }), children: [_jsx("span", { className: "jini-picker-item-title", children: t(client.label) }), methodLabels?.[client.id] ? (_jsx("span", { className: "jini-picker-item-sub", children: methodLabels[client.id] })) : null] }, client.id));
29
33
  }) }) })) : null] }));
30
34
  }
31
35
  //# sourceMappingURL=ClientPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientPicker.js","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/ClientPicker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClientPicker.js","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/ClientPicker.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { McpIntegrationsPort } from '../../ports.js';
2
2
  export interface CodexInstallToggleButtonProps {
3
3
  port: Pick<McpIntegrationsPort, 'fetchCodexInstallStatus' | 'installCodexMcp' | 'uninstallCodexMcp'>;
4
+ /** This button's own agent handle — see `IntegrationsTab`'s `agentHandle` doc. */
5
+ agentHandle?: string;
4
6
  }
5
7
  /**
6
8
  * One-click Codex MCP install/uninstall button. Renders nothing until the
@@ -8,5 +10,5 @@ export interface CodexInstallToggleButtonProps {
8
10
  * doesn't support Codex one-click install (falls back to snippet-copy-only,
9
11
  * same as every other client).
10
12
  */
11
- export declare function CodexInstallToggleButton({ port }: CodexInstallToggleButtonProps): import("react").JSX.Element | null;
13
+ export declare function CodexInstallToggleButton({ port, agentHandle }: CodexInstallToggleButtonProps): import("react").JSX.Element | null;
12
14
  //# sourceMappingURL=CodexInstallToggleButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodexInstallToggleButton.d.ts","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/CodexInstallToggleButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,CAAC;CACtG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,IAAI,EAAE,EAAE,6BAA6B,sCA6B/E"}
1
+ {"version":3,"file":"CodexInstallToggleButton.d.ts","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/CodexInstallToggleButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,yBAAyB,GAAG,iBAAiB,GAAG,mBAAmB,CAAC,CAAC;IACrG,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,6BAA6B,sCAmC5F"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { agentHandleProps } from '@jini-ai/agentic';
2
3
  import { useT } from '../../../i18n/index.js';
3
4
  import { useCodexInstallToggle } from '../hooks/useCodexInstallToggle.js';
4
5
  /**
@@ -7,7 +8,7 @@ import { useCodexInstallToggle } from '../hooks/useCodexInstallToggle.js';
7
8
  * doesn't support Codex one-click install (falls back to snippet-copy-only,
8
9
  * same as every other client).
9
10
  */
10
- export function CodexInstallToggleButton({ port }) {
11
+ export function CodexInstallToggleButton({ port, agentHandle }) {
11
12
  const t = useT();
12
13
  const { available, installed, busy, error, successKind, toggle } = useCodexInstallToggle(port);
13
14
  if (available === null)
@@ -16,6 +17,6 @@ export function CodexInstallToggleButton({ port }) {
16
17
  return (_jsxs("div", { className: "jini-codex-install-row", children: [_jsx("button", { type: "button", className: "jini-button", disabled: true, children: t('One-click install') }), _jsx("span", { className: "jini-hint", children: t('Not available for this daemon.') })] }));
17
18
  }
18
19
  const label = installed ? t('Uninstall') : t('One-click install');
19
- return (_jsxs("div", { className: "jini-codex-install-row", children: [_jsx("button", { type: "button", className: installed ? 'jini-button' : 'jini-button jini-button-primary', disabled: busy, onClick: toggle, children: busy ? t('Working…') : label }), error ? _jsx("span", { className: "jini-hint jini-hint-error", children: t('Install failed: {error}', { error }) }) : null, !error && successKind === 'installed' ? _jsx("span", { className: "jini-hint", children: t('MCP server installed.') }) : null, !error && successKind === 'uninstalled' ? _jsx("span", { className: "jini-hint", children: t('MCP server uninstalled.') }) : null] }));
20
+ return (_jsxs("div", { className: "jini-codex-install-row", children: [_jsx("button", { type: "button", className: installed ? 'jini-button' : 'jini-button jini-button-primary', disabled: busy, onClick: toggle, ...agentHandleProps(agentHandle, { role: 'button', label }), children: busy ? t('Working…') : label }), error ? _jsx("span", { className: "jini-hint jini-hint-error", children: t('Install failed: {error}', { error }) }) : null, !error && successKind === 'installed' ? _jsx("span", { className: "jini-hint", children: t('MCP server installed.') }) : null, !error && successKind === 'uninstalled' ? _jsx("span", { className: "jini-hint", children: t('MCP server uninstalled.') }) : null] }));
20
21
  }
21
22
  //# sourceMappingURL=CodexInstallToggleButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CodexInstallToggleButton.js","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/CodexInstallToggleButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAM1E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAE,IAAI,EAAiC;IAC9E,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE/F,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,eAAK,SAAS,EAAC,wBAAwB,aACrC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,EAAC,QAAQ,kBACnD,CAAC,CAAC,mBAAmB,CAAC,GAChB,EACT,eAAM,SAAS,EAAC,WAAW,YAAE,CAAC,CAAC,gCAAgC,CAAC,GAAQ,IACpE,CACP,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAElE,OAAO,CACL,eAAK,SAAS,EAAC,wBAAwB,aACrC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iCAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAC5H,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GACtB,EACR,KAAK,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,2BAA2B,YAAE,CAAC,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC3G,CAAC,KAAK,IAAI,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,WAAW,YAAE,CAAC,CAAC,uBAAuB,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC9G,CAAC,KAAK,IAAI,WAAW,KAAK,aAAa,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,WAAW,YAAE,CAAC,CAAC,yBAAyB,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC/G,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"CodexInstallToggleButton.js","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/CodexInstallToggleButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAQ1E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAiC;IAC3F,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAE/F,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CACL,eAAK,SAAS,EAAC,wBAAwB,aACrC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,EAAC,QAAQ,kBACnD,CAAC,CAAC,mBAAmB,CAAC,GAChB,EACT,eAAM,SAAS,EAAC,WAAW,YAAE,CAAC,CAAC,gCAAgC,CAAC,GAAQ,IACpE,CACP,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAElE,OAAO,CACL,eAAK,SAAS,EAAC,wBAAwB,aACrC,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,iCAAiC,EACxE,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,MAAM,KACX,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,YAE3D,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GACtB,EACR,KAAK,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,2BAA2B,YAAE,CAAC,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC3G,CAAC,KAAK,IAAI,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,WAAW,YAAE,CAAC,CAAC,uBAAuB,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,EAC9G,CAAC,KAAK,IAAI,WAAW,KAAK,aAAa,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,WAAW,YAAE,CAAC,CAAC,yBAAyB,CAAC,GAAQ,CAAC,CAAC,CAAC,IAAI,IAC/G,CACP,CAAC;AACJ,CAAC"}
@@ -13,6 +13,11 @@ export interface IntegrationsTabProps {
13
13
  port?: McpIntegrationsPort;
14
14
  capabilitiesTitle?: string;
15
15
  capabilities?: readonly string[];
16
+ /**
17
+ * This tab's own agent handle. The client picker, the one-click install link, and the Codex
18
+ * install/uninstall toggle all derive their own `data-agent-*` handle from this ONE base.
19
+ */
20
+ agentHandle?: string;
16
21
  }
17
22
  /**
18
23
  * Multi-client "install me as an MCP server" snippet generator. Origin:
@@ -23,5 +28,5 @@ export interface IntegrationsTabProps {
23
28
  * (`/api/mcp/install-info`, `/api/mcp/install/codex*`) is routed through the
24
29
  * injected `McpIntegrationsPort` instead of a hardcoded `fetch()` call.
25
30
  */
26
- export declare function IntegrationsTab({ serverName, clients, initialClientId, port, capabilitiesTitle, capabilities, }: IntegrationsTabProps): import("react").JSX.Element;
31
+ export declare function IntegrationsTab({ serverName, clients, initialClientId, port, capabilitiesTitle, capabilities, agentHandle, }: IntegrationsTabProps): import("react").JSX.Element;
27
32
  //# sourceMappingURL=IntegrationsTab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationsTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/IntegrationsTab.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMvE,MAAM,WAAW,oBAAoB;IACnC;;;6CAGyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B;uDACmD;IACnD,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAC9B,UAAoC,EACpC,OAAqB,EACrB,eAAuC,EACvC,IAAI,EACJ,iBAAiB,EACjB,YAAY,GACb,EAAE,oBAAoB,+BAsGtB"}
1
+ {"version":3,"file":"IntegrationsTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/IntegrationsTab.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMvE,MAAM,WAAW,oBAAoB;IACnC;;;6CAGyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B;uDACmD;IACnD,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAC9B,UAAoC,EACpC,OAAqB,EACrB,eAAuC,EACvC,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,EAAE,oBAAoB,+BA0GtB"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMemo, useState } from 'react';
3
+ import { agentHandleProps, agentSubHandle } from '@jini-ai/agentic';
3
4
  import { useT } from '../../../i18n/index.js';
4
5
  import { DEFAULT_MCP_CLIENT_ID, DEFAULT_MCP_SERVER_NAME, MCP_CLIENTS } from '../../constants.js';
5
6
  import { createFakeMcpIntegrationsPort } from '../../dependencies.js';
@@ -17,7 +18,7 @@ import { CodexInstallToggleButton } from './CodexInstallToggleButton.js';
17
18
  * (`/api/mcp/install-info`, `/api/mcp/install/codex*`) is routed through the
18
19
  * injected `McpIntegrationsPort` instead of a hardcoded `fetch()` call.
19
20
  */
20
- export function IntegrationsTab({ serverName = DEFAULT_MCP_SERVER_NAME, clients = MCP_CLIENTS, initialClientId = DEFAULT_MCP_CLIENT_ID, port, capabilitiesTitle, capabilities, }) {
21
+ export function IntegrationsTab({ serverName = DEFAULT_MCP_SERVER_NAME, clients = MCP_CLIENTS, initialClientId = DEFAULT_MCP_CLIENT_ID, port, capabilitiesTitle, capabilities, agentHandle, }) {
21
22
  const t = useT();
22
23
  const resolvedPort = useMemo(() => port ?? createFakeMcpIntegrationsPort(), [port]);
23
24
  const [clientId, setClientId] = useState(initialClientId);
@@ -45,7 +46,7 @@ export function IntegrationsTab({ serverName = DEFAULT_MCP_SERVER_NAME, clients
45
46
  t('Pull context into the conversation'),
46
47
  t('Use default, safe tool permissions'),
47
48
  ];
48
- return (_jsxs("section", { className: "jini-settings-section jini-settings-integrations", children: [error ? _jsx("div", { className: "jini-empty-card jini-empty-card-error", children: t('Could not reach the daemon: {error}', { error }) }) : null, _jsxs("div", { className: "jini-mcp-capabilities-card", children: [_jsx("p", { className: "jini-mcp-capabilities-label", children: resolvedCapabilitiesTitle }), _jsx("ul", { className: "jini-mcp-capabilities-list", children: resolvedCapabilities.map((line) => (_jsx("li", { children: line }, line))) })] }), _jsxs("div", { className: "jini-mcp-setup-card", children: [_jsx(ClientPicker, { clients: clients, selectedClientId: clientId, onSelect: setClientId, methodLabel: methodLabel, methodLabels: methodLabels }), resolved ? _jsx("p", { className: "jini-mcp-instruction", children: t(resolved.instructionTemplate, resolved.instructionVars) }) : null, client?.id === 'codex' ? _jsx(CodexInstallToggleButton, { port: resolvedPort }) : null, resolved?.deeplink && info ? (_jsxs("div", { className: "jini-mcp-deeplink-row", children: [_jsx("a", { className: `jini-button jini-button-primary${isMcpInstallPrerequisiteMissing(info) ? ' jini-button-disabled' : ''}`,
49
+ return (_jsxs("section", { className: "jini-settings-section jini-settings-integrations", children: [error ? _jsx("div", { className: "jini-empty-card jini-empty-card-error", children: t('Could not reach the daemon: {error}', { error }) }) : null, _jsxs("div", { className: "jini-mcp-capabilities-card", children: [_jsx("p", { className: "jini-mcp-capabilities-label", children: resolvedCapabilitiesTitle }), _jsx("ul", { className: "jini-mcp-capabilities-list", children: resolvedCapabilities.map((line) => (_jsx("li", { children: line }, line))) })] }), _jsxs("div", { className: "jini-mcp-setup-card", children: [_jsx(ClientPicker, { clients: clients, selectedClientId: clientId, onSelect: setClientId, methodLabel: methodLabel, methodLabels: methodLabels, ...(agentHandle ? { agentHandle: agentSubHandle(agentHandle, 'client') } : {}) }), resolved ? _jsx("p", { className: "jini-mcp-instruction", children: t(resolved.instructionTemplate, resolved.instructionVars) }) : null, client?.id === 'codex' ? (_jsx(CodexInstallToggleButton, { port: resolvedPort, ...(agentHandle ? { agentHandle: agentSubHandle(agentHandle, 'codex-toggle') } : {}) })) : null, resolved?.deeplink && info ? (_jsxs("div", { className: "jini-mcp-deeplink-row", children: [_jsx("a", { className: `jini-button jini-button-primary${isMcpInstallPrerequisiteMissing(info) ? ' jini-button-disabled' : ''}`,
49
50
  // Origin disables this button via `disabled={!info.cliExists ||
50
51
  // !info.nodeExists}` — one-click install can't work until the
51
52
  // daemon/CLI prerequisite is actually built. An `<a>` has no
@@ -56,6 +57,6 @@ export function IntegrationsTab({ serverName = DEFAULT_MCP_SERVER_NAME, clients
56
57
  href: isMcpInstallPrerequisiteMissing(info) ? undefined : resolved.deeplink, "aria-disabled": isMcpInstallPrerequisiteMissing(info) || undefined, onClick: (event) => {
57
58
  if (isMcpInstallPrerequisiteMissing(info))
58
59
  event.preventDefault();
59
- }, rel: "noopener noreferrer", children: t('One-click install') }), _jsx("span", { className: "jini-hint", children: t('Your editor will ask you to approve the install.') })] })) : null, _jsx(SnippetBlock, { snippet: resolved?.snippet ?? '', language: resolved?.language ?? 'json', placeholder: loading ? t('Loading install paths…') : error ? t('Could not resolve install paths.') : '' }), info && isMcpInstallPrerequisiteMissing(info) ? (_jsxs("div", { className: "jini-empty-card jini-empty-card-warning", children: [_jsx("strong", { children: !info.cliExists ? t('Build the server first.') : t('Node.js was not found.') }), ' ', info.buildHint ?? t('See your host application for build instructions.')] })) : null, _jsxs("div", { className: "jini-mcp-restart-note", children: [_jsx("strong", { children: t('Restart your client after installing.') }), ' ', _jsx("span", { children: t('Most MCP clients only pick up new servers on restart.') })] })] })] }));
60
+ }, rel: "noopener noreferrer", ...agentHandleProps(agentHandle, { action: 'one-click-install', role: 'link', label: t('One-click install') }), children: t('One-click install') }), _jsx("span", { className: "jini-hint", children: t('Your editor will ask you to approve the install.') })] })) : null, _jsx(SnippetBlock, { snippet: resolved?.snippet ?? '', language: resolved?.language ?? 'json', placeholder: loading ? t('Loading install paths…') : error ? t('Could not resolve install paths.') : '' }), info && isMcpInstallPrerequisiteMissing(info) ? (_jsxs("div", { className: "jini-empty-card jini-empty-card-warning", children: [_jsx("strong", { children: !info.cliExists ? t('Build the server first.') : t('Node.js was not found.') }), ' ', info.buildHint ?? t('See your host application for build instructions.')] })) : null, _jsxs("div", { className: "jini-mcp-restart-note", children: [_jsx("strong", { children: t('Restart your client after installing.') }), ' ', _jsx("span", { children: t('Most MCP clients only pick up new servers on restart.') })] })] })] }));
60
61
  }
61
62
  //# sourceMappingURL=IntegrationsTab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrationsTab.js","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/IntegrationsTab.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IntegrationsTab.js","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/IntegrationsTab.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,9 @@ export interface LanguageTabProps {
4
4
  selectedLocale: string;
5
5
  onSelectLocale: (code: string) => void;
6
6
  ariaLabel?: string;
7
+ /** This tab's own agent handle. One distinct sub-handle per locale tile, derived from the
8
+ * locale's own code. */
9
+ agentHandle?: string;
7
10
  }
8
11
  /**
9
12
  * Locale radio-tile grid. Origin: the inline `language` tab body in
@@ -11,5 +14,5 @@ export interface LanguageTabProps {
11
14
  * dropped) analytics tracking call and OD's own fixed locale list (now a
12
15
  * host-supplied `locales` prop).
13
16
  */
14
- export declare function LanguageTab({ locales, selectedLocale, onSelectLocale, ariaLabel }: LanguageTabProps): import("react").JSX.Element;
17
+ export declare function LanguageTab({ locales, selectedLocale, onSelectLocale, ariaLabel, agentHandle }: LanguageTabProps): import("react").JSX.Element;
15
18
  //# sourceMappingURL=LanguageTab.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LanguageTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/language/react/components/LanguageTab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BA6BnG"}
1
+ {"version":3,"file":"LanguageTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/language/react/components/LanguageTab.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;6BACyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,gBAAgB,+BA+BhH"}