@jini-ai/ui 0.3.4 → 0.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/appearance/react/components/AppearanceTab.d.ts +4 -1
- package/dist/features/appearance/react/components/AppearanceTab.d.ts.map +1 -1
- package/dist/features/appearance/react/components/AppearanceTab.js +7 -4
- package/dist/features/appearance/react/components/AppearanceTab.js.map +1 -1
- package/dist/features/connectors/ConnectorsBrowser.d.ts +8 -1
- package/dist/features/connectors/ConnectorsBrowser.d.ts.map +1 -1
- package/dist/features/connectors/ConnectorsBrowser.js +4 -3
- package/dist/features/connectors/ConnectorsBrowser.js.map +1 -1
- package/dist/features/connectors/components/ConnectorCard.d.ts +4 -1
- package/dist/features/connectors/components/ConnectorCard.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorCard.js +5 -4
- package/dist/features/connectors/components/ConnectorCard.js.map +1 -1
- package/dist/features/connectors/components/ConnectorDetailDrawer.d.ts +3 -1
- package/dist/features/connectors/components/ConnectorDetailDrawer.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorDetailDrawer.js +3 -2
- package/dist/features/connectors/components/ConnectorDetailDrawer.js.map +1 -1
- package/dist/features/connectors/components/ConnectorGrid.d.ts +4 -1
- package/dist/features/connectors/components/ConnectorGrid.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorGrid.js +4 -2
- package/dist/features/connectors/components/ConnectorGrid.js.map +1 -1
- package/dist/features/connectors/components/ConnectorSearchBar.d.ts +3 -1
- package/dist/features/connectors/components/ConnectorSearchBar.d.ts.map +1 -1
- package/dist/features/connectors/components/ConnectorSearchBar.js +4 -3
- package/dist/features/connectors/components/ConnectorSearchBar.js.map +1 -1
- package/dist/features/connectors/components/ProviderTabBar.d.ts +4 -1
- package/dist/features/connectors/components/ProviderTabBar.d.ts.map +1 -1
- package/dist/features/connectors/components/ProviderTabBar.js +5 -3
- package/dist/features/connectors/components/ProviderTabBar.js.map +1 -1
- package/dist/features/execution/react/components/ByokProviderForm.d.ts +3 -1
- package/dist/features/execution/react/components/ByokProviderForm.d.ts.map +1 -1
- package/dist/features/execution/react/components/ByokProviderForm.js +5 -4
- package/dist/features/execution/react/components/ByokProviderForm.js.map +1 -1
- package/dist/features/execution/react/components/ExecutionTab.d.ts +8 -1
- package/dist/features/execution/react/components/ExecutionTab.d.ts.map +1 -1
- package/dist/features/execution/react/components/ExecutionTab.js +4 -3
- package/dist/features/execution/react/components/ExecutionTab.js.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.d.ts +4 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.d.ts.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentCard.js +11 -5
- package/dist/features/execution/react/components/LocalCliAgentCard.js.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentList.d.ts +4 -1
- package/dist/features/execution/react/components/LocalCliAgentList.d.ts.map +1 -1
- package/dist/features/execution/react/components/LocalCliAgentList.js +4 -2
- package/dist/features/execution/react/components/LocalCliAgentList.js.map +1 -1
- package/dist/features/execution/react/components/ProviderChipGroup.d.ts +4 -1
- package/dist/features/execution/react/components/ProviderChipGroup.d.ts.map +1 -1
- package/dist/features/execution/react/components/ProviderChipGroup.js +7 -3
- package/dist/features/execution/react/components/ProviderChipGroup.js.map +1 -1
- package/dist/features/execution/react/components/SearchableModelSelect.d.ts +4 -1
- package/dist/features/execution/react/components/SearchableModelSelect.d.ts.map +1 -1
- package/dist/features/execution/react/components/SearchableModelSelect.js +3 -2
- package/dist/features/execution/react/components/SearchableModelSelect.js.map +1 -1
- package/dist/features/execution/react/hooks/useReasoningControl.d.ts +15 -0
- package/dist/features/execution/react/hooks/useReasoningControl.d.ts.map +1 -1
- package/dist/features/execution/react/hooks/useReasoningControl.js +42 -4
- package/dist/features/execution/react/hooks/useReasoningControl.js.map +1 -1
- package/dist/features/execution/types.d.ts +14 -0
- package/dist/features/execution/types.d.ts.map +1 -1
- package/dist/features/html-editor/react/components/InteractiveHtmlEditor.d.ts +1 -1
- package/dist/features/html-editor/react/hooks/useInteractiveHtmlEditor.js +1 -1
- package/dist/features/i18n/dictionaries/index.d.ts +1 -1
- package/dist/features/instructions/react/components/InstructionsTab.d.ts +3 -1
- package/dist/features/instructions/react/components/InstructionsTab.d.ts.map +1 -1
- package/dist/features/instructions/react/components/InstructionsTab.js +3 -2
- package/dist/features/instructions/react/components/InstructionsTab.js.map +1 -1
- package/dist/features/integrations/react/components/ClientPicker.d.ts +4 -1
- package/dist/features/integrations/react/components/ClientPicker.d.ts.map +1 -1
- package/dist/features/integrations/react/components/ClientPicker.js +7 -3
- package/dist/features/integrations/react/components/ClientPicker.js.map +1 -1
- package/dist/features/integrations/react/components/CodexInstallToggleButton.d.ts +3 -1
- package/dist/features/integrations/react/components/CodexInstallToggleButton.d.ts.map +1 -1
- package/dist/features/integrations/react/components/CodexInstallToggleButton.js +3 -2
- package/dist/features/integrations/react/components/CodexInstallToggleButton.js.map +1 -1
- package/dist/features/integrations/react/components/IntegrationsTab.d.ts +6 -1
- package/dist/features/integrations/react/components/IntegrationsTab.d.ts.map +1 -1
- package/dist/features/integrations/react/components/IntegrationsTab.js +4 -3
- package/dist/features/integrations/react/components/IntegrationsTab.js.map +1 -1
- package/dist/features/language/react/components/LanguageTab.d.ts +4 -1
- package/dist/features/language/react/components/LanguageTab.d.ts.map +1 -1
- package/dist/features/language/react/components/LanguageTab.js +5 -3
- package/dist/features/language/react/components/LanguageTab.js.map +1 -1
- package/dist/features/mcp-ui/sandbox-proxy.d.ts +1 -1
- package/dist/features/mcp-ui/sandbox-proxy.js +2 -2
- package/dist/features/mcp-ui/sandbox-proxy.js.map +1 -1
- package/dist/features/mcp-ui/surfaces/outcome.d.ts +1 -1
- package/dist/features/mcp-ui/surfaces/tokens.d.ts +6 -5
- package/dist/features/mcp-ui/surfaces/tokens.d.ts.map +1 -1
- package/dist/features/mcp-ui/surfaces/tokens.js +6 -5
- package/dist/features/mcp-ui/surfaces/tokens.js.map +1 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts +4 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.d.ts.map +1 -1
- package/dist/features/media-providers/react/components/MediaProvidersTab.js +9 -4
- package/dist/features/media-providers/react/components/MediaProvidersTab.js.map +1 -1
- package/dist/features/memory/react/components/MemoryEntryCard.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryEntryCard.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryEntryCard.js +3 -2
- package/dist/features/memory/react/components/MemoryEntryCard.js.map +1 -1
- package/dist/features/memory/react/components/MemoryExtractionCard.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryExtractionCard.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryExtractionCard.js +3 -2
- package/dist/features/memory/react/components/MemoryExtractionCard.js.map +1 -1
- package/dist/features/memory/react/components/MemoryHooksPanel.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryHooksPanel.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryHooksPanel.js +7 -2
- package/dist/features/memory/react/components/MemoryHooksPanel.js.map +1 -1
- package/dist/features/memory/react/components/MemoryHowPanel.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryHowPanel.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryHowPanel.js +2 -2
- package/dist/features/memory/react/components/MemoryHowPanel.js.map +1 -1
- package/dist/features/memory/react/components/MemoryList.d.ts +3 -1
- package/dist/features/memory/react/components/MemoryList.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemoryList.js +12 -5
- package/dist/features/memory/react/components/MemoryList.js.map +1 -1
- package/dist/features/memory/react/components/MemorySettingsPanel.d.ts +7 -1
- package/dist/features/memory/react/components/MemorySettingsPanel.d.ts.map +1 -1
- package/dist/features/memory/react/components/MemorySettingsPanel.js +3 -2
- package/dist/features/memory/react/components/MemorySettingsPanel.js.map +1 -1
- package/dist/features/notifications/react/components/NotificationsTab.d.ts +3 -1
- package/dist/features/notifications/react/components/NotificationsTab.d.ts.map +1 -1
- package/dist/features/notifications/react/components/NotificationsTab.js +13 -6
- package/dist/features/notifications/react/components/NotificationsTab.js.map +1 -1
- package/dist/features/privacy/react/components/PrivacyTab.d.ts +9 -1
- package/dist/features/privacy/react/components/PrivacyTab.d.ts.map +1 -1
- package/dist/features/privacy/react/components/PrivacyTab.js +5 -4
- package/dist/features/privacy/react/components/PrivacyTab.js.map +1 -1
- package/dist/features/settings/dialog/react/components/SettingsDialogShell.d.ts +1 -1
- package/dist/features/settings/dialog/styles/settings-dialog.css +1 -0
- package/dist/features/skills/react/components/SkillDraftForm.d.ts +3 -1
- package/dist/features/skills/react/components/SkillDraftForm.d.ts.map +1 -1
- package/dist/features/skills/react/components/SkillDraftForm.js +3 -2
- package/dist/features/skills/react/components/SkillDraftForm.js.map +1 -1
- package/dist/features/skills/react/components/SkillRow.d.ts +3 -1
- package/dist/features/skills/react/components/SkillRow.d.ts.map +1 -1
- package/dist/features/skills/react/components/SkillRow.js +3 -2
- package/dist/features/skills/react/components/SkillRow.js.map +1 -1
- package/dist/features/skills/react/components/SkillsTab.d.ts +8 -1
- package/dist/features/skills/react/components/SkillsTab.d.ts.map +1 -1
- package/dist/features/skills/react/components/SkillsTab.js +7 -3
- package/dist/features/skills/react/components/SkillsTab.js.map +1 -1
- package/dist/features/tabbed-dialog/react/components/TabbedDialog.d.ts +1 -1
- package/dist/features/tabbed-dialog/react/components/TabbedDialog.js +1 -1
- package/dist/features/tabbed-dialog/types.d.ts +2 -2
- package/dist/features/tabbed-dialog/types.js +2 -2
- package/dist/react/components/RemixIcon.d.ts +42 -1
- package/dist/react/components/RemixIcon.d.ts.map +1 -1
- package/dist/react/components/RemixIcon.js +152 -8
- package/dist/react/components/RemixIcon.js.map +1 -1
- package/dist/utils/file-transfer.d.ts.map +1 -1
- package/dist/utils/file-transfer.js +2 -0
- package/dist/utils/file-transfer.js.map +1 -1
- 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":";AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchableModelSelect.js","sourceRoot":"","sources":["../../../../../src/features/execution/react/components/SearchableModelSelect.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAkC5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,qBAAqB,CAAC,EACpC,MAAM,EACN,KAAK,EACL,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GAAG,CAAC,EACxB,SAAS,EACT,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,WAAW,GACgB;IAC3B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAExD,MAAM,UAAU,GAAyB;QACvC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;KAC7B,CAAC;IACF,MAAM,gBAAgB,GAAG,UAAU,CAAC,MAAM,IAAI,oBAAoB,CAAC;IACnE,MAAM,cAAc,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,iEAAiE;IACjE,yEAAyE;IACzE,6DAA6D;IAC7D,MAAM,cAAc,GAAyB,gBAAgB;QAC3D,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;QACzI,CAAC,CAAC,UAAU,CAAC;IAEf,MAAM,gBAAgB,GAAG,CAAC,IAAa,EAAE,EAAE;QACzC,IAAI,IAAI,EAAE,CAAC;YACT,sEAAsE;YACtE,sEAAsE;YACtE,cAAc;YACd,qBAAqB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAC,wBAAwB,iBAAc,MAAM,KAAM,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,YACjI,KAAC,YAAY,IACX,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,KAChB,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAC1D,YAAY,EAAE,gBAAgB,EAC9B,UAAU,EACR,gBAAgB,CAAC,CAAC,CAAC,CACjB,cAAK,SAAS,EAAC,mCAAmC,YAChD,gBACE,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0CAA0C,EACpD,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,iBAAiB,gBAClB,iBAAiB,iBAChB,iBAAiB;oBAC9B,8DAA8D;oBAC9D,6DAA6D;oBAC7D,6DAA6D;oBAC7D,cAAc;oBACd,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GACjD,GACE,CACP,CAAC,CAAC,CAAC,SAAS,GAEf,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -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;
|
|
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
|
|
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
|
|
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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
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;
|
|
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
|
|
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
|
|
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.
|
|
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":"
|
|
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;
|
|
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":"
|
|
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":";AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"ClientPicker.js","sourceRoot":"","sources":["../../../../../src/features/integrations/react/components/ClientPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,sCAAsC,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AA2BjG;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAqB;IAC7H,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IACjB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,gBAAgB,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,WAAW;QAC/B,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC,CAAC,SAAS,CAAC;IAEd,+DAA+D;IAC/D,wEAAwE;IACxE,uEAAuE;IACvE,gEAAgE;IAChE,mEAAmE;IACnE,yEAAyE;IACzE,WAAW;IACX,2BAA2B,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5F,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,EAAC,GAAG,EAAE,OAAO,aACvC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,sBAAsB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EACtD,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,mBACnB,SAAS,mBACR,IAAI,KACf,gBAAgB,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,aAE3H,gBAAM,SAAS,EAAC,kBAAkB,aAChC,eAAM,SAAS,EAAC,mBAAmB,YAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAQ,EAC7E,WAAW,CAAC,CAAC,CAAC,eAAM,SAAS,EAAC,iBAAiB,YAAE,WAAW,GAAQ,CAAC,CAAC,CAAC,IAAI,IACvE,EACP,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,EAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,qBAAqB,EAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,EAAE,GAAI,IAC1H,EACR,IAAI,CAAC,CAAC,CAAC,CACN,cAAK,SAAS,EAAC,qBAAqB,EAAC,IAAI,EAAC,SAAS,YACjD,cAAK,SAAS,EAAC,kBAAkB,YAC9B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,KAAK,gBAAgB,CAAC;wBAC9C,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,QAAQ,mBACE,MAAM,EACrB,SAAS,EAAE,mBAAmB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EACvD,OAAO,EAAE,GAAG,EAAE;gCACZ,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gCACpB,OAAO,CAAC,KAAK,CAAC,CAAC;4BACjB,CAAC,KACG,gBAAgB,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,aAExF,eAAM,SAAS,EAAC,wBAAwB,YAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,EAChE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAC3B,eAAM,SAAS,EAAC,sBAAsB,YAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,CACxE,CAAC,CAAC,CAAC,IAAI,KAdH,MAAM,CAAC,EAAE,CAeP,CACV,CAAC;oBACJ,CAAC,CAAC,GACE,GACF,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -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":"
|
|
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;
|
|
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":"
|
|
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":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;
|
|
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":"
|
|
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"}
|