@vybestack/llxprt-code 0.8.0 → 0.9.0-nightly.260119.0f050754d

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 (120) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/auth/BucketFailoverHandlerImpl.spec.js +6 -0
  3. package/dist/src/auth/BucketFailoverHandlerImpl.spec.js.map +1 -1
  4. package/dist/src/auth/__tests__/OAuthBucketManager.spec.js +6 -0
  5. package/dist/src/auth/__tests__/OAuthBucketManager.spec.js.map +1 -1
  6. package/dist/src/auth/__tests__/oauth-manager.issue913.spec.js +2 -0
  7. package/dist/src/auth/__tests__/oauth-manager.issue913.spec.js.map +1 -1
  8. package/dist/src/auth/anthropic-oauth-provider.d.ts +7 -0
  9. package/dist/src/auth/anthropic-oauth-provider.js +48 -0
  10. package/dist/src/auth/anthropic-oauth-provider.js.map +1 -1
  11. package/dist/src/auth/anthropic-oauth-provider.local-flow.spec.js +2 -0
  12. package/dist/src/auth/anthropic-oauth-provider.local-flow.spec.js.map +1 -1
  13. package/dist/src/auth/anthropic-oauth-provider.refresh.spec.js +2 -0
  14. package/dist/src/auth/anthropic-oauth-provider.refresh.spec.js.map +1 -1
  15. package/dist/src/auth/anthropic-oauth-provider.test.js +2 -0
  16. package/dist/src/auth/anthropic-oauth-provider.test.js.map +1 -1
  17. package/dist/src/auth/codex-oauth-provider.spec.js +2 -0
  18. package/dist/src/auth/codex-oauth-provider.spec.js.map +1 -1
  19. package/dist/src/auth/oauth-manager.bucketFailover.spec.js +2 -0
  20. package/dist/src/auth/oauth-manager.bucketFailover.spec.js.map +1 -1
  21. package/dist/src/auth/oauth-manager.bucketRefresh.spec.js +2 -0
  22. package/dist/src/auth/oauth-manager.bucketRefresh.spec.js.map +1 -1
  23. package/dist/src/auth/oauth-manager.concurrency.spec.js +2 -0
  24. package/dist/src/auth/oauth-manager.concurrency.spec.js.map +1 -1
  25. package/dist/src/auth/oauth-manager.js +66 -10
  26. package/dist/src/auth/oauth-manager.js.map +1 -1
  27. package/dist/src/auth/oauth-manager.logout.spec.js +6 -0
  28. package/dist/src/auth/oauth-manager.logout.spec.js.map +1 -1
  29. package/dist/src/auth/oauth-manager.refresh-race.spec.d.ts +11 -0
  30. package/dist/src/auth/oauth-manager.refresh-race.spec.js +191 -0
  31. package/dist/src/auth/oauth-manager.refresh-race.spec.js.map +1 -0
  32. package/dist/src/auth/oauth-manager.spec.js +6 -0
  33. package/dist/src/auth/oauth-manager.spec.js.map +1 -1
  34. package/dist/src/auth/qwen-oauth-provider.test.js +2 -0
  35. package/dist/src/auth/qwen-oauth-provider.test.js.map +1 -1
  36. package/dist/src/generated/git-commit.d.ts +1 -1
  37. package/dist/src/generated/git-commit.js +1 -1
  38. package/dist/src/providers/aliases/anthropic.config +9 -0
  39. package/dist/src/providers/aliases/cerebras-code.config +3 -1
  40. package/dist/src/providers/aliases/chutes-ai.config +4 -2
  41. package/dist/src/providers/aliases/codex.config +1 -0
  42. package/dist/src/providers/aliases/fireworks.config +3 -1
  43. package/dist/src/providers/aliases/gemini.config +9 -0
  44. package/dist/src/providers/aliases/kimi.config +1 -0
  45. package/dist/src/providers/aliases/llama-cpp.config +1 -0
  46. package/dist/src/providers/aliases/lm-studio.config +1 -0
  47. package/dist/src/providers/aliases/mistral.config +1 -0
  48. package/dist/src/providers/aliases/openai-responses.config +9 -0
  49. package/dist/src/providers/aliases/openai-vercel.config +9 -0
  50. package/dist/src/providers/aliases/openai.config +9 -0
  51. package/dist/src/providers/aliases/openrouter.config +3 -1
  52. package/dist/src/providers/aliases/qwen.config +1 -0
  53. package/dist/src/providers/aliases/qwenvercel.config +1 -0
  54. package/dist/src/providers/aliases/synthetic.config +1 -0
  55. package/dist/src/providers/aliases/xai.config +3 -1
  56. package/dist/src/providers/providerAliases.builtin-qwen.test.js +3 -1
  57. package/dist/src/providers/providerAliases.builtin-qwen.test.js.map +1 -1
  58. package/dist/src/providers/providerAliases.codex.test.js +3 -1
  59. package/dist/src/providers/providerAliases.codex.test.js.map +1 -1
  60. package/dist/src/providers/providerAliases.d.ts +2 -0
  61. package/dist/src/providers/providerAliases.js.map +1 -1
  62. package/dist/src/providers/providerManagerInstance.js +67 -33
  63. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  64. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js +2 -0
  65. package/dist/src/providers/providerManagerInstance.oauthRegistration.test.js.map +1 -1
  66. package/dist/src/runtime/runtimeSettings.d.ts +2 -2
  67. package/dist/src/runtime/runtimeSettings.js.map +1 -1
  68. package/dist/src/ui/AppContainer.js +20 -30
  69. package/dist/src/ui/AppContainer.js.map +1 -1
  70. package/dist/src/ui/commands/__tests__/diagnosticsCommand.bucket.spec.js +2 -0
  71. package/dist/src/ui/commands/__tests__/diagnosticsCommand.bucket.spec.js.map +1 -1
  72. package/dist/src/ui/commands/__tests__/statsCommand.bucket.spec.js +2 -0
  73. package/dist/src/ui/commands/__tests__/statsCommand.bucket.spec.js.map +1 -1
  74. package/dist/src/ui/commands/modelCommand.js +95 -26
  75. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  76. package/dist/src/ui/commands/providerCommand.test.js +2 -0
  77. package/dist/src/ui/commands/providerCommand.test.js.map +1 -1
  78. package/dist/src/ui/commands/types.d.ts +24 -2
  79. package/dist/src/ui/commands/types.js.map +1 -1
  80. package/dist/src/ui/components/DialogManager.js +66 -5
  81. package/dist/src/ui/components/DialogManager.js.map +1 -1
  82. package/dist/src/ui/components/ModelDialog.d.ts +25 -0
  83. package/dist/src/ui/components/ModelDialog.js +373 -0
  84. package/dist/src/ui/components/ModelDialog.js.map +1 -0
  85. package/dist/src/ui/components/ProfileCreateWizard/ModelSelectStep.js +36 -4
  86. package/dist/src/ui/components/ProfileCreateWizard/ModelSelectStep.js.map +1 -1
  87. package/dist/src/ui/contexts/UIActionsContext.d.ts +11 -3
  88. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  89. package/dist/src/ui/contexts/UIStateContext.d.ts +16 -3
  90. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  91. package/dist/src/ui/hooks/index.d.ts +0 -1
  92. package/dist/src/ui/hooks/index.js +0 -1
  93. package/dist/src/ui/hooks/index.js.map +1 -1
  94. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -2
  95. package/dist/src/ui/hooks/slashCommandProcessor.js +6 -3
  96. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  97. package/dist/src/ui/hooks/useEditorSettings.test.js +0 -1
  98. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  99. package/dist/src/ui/layouts/DefaultAppLayout.js +1 -1
  100. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  101. package/dist/src/ui/reducers/appReducer.d.ts +2 -3
  102. package/dist/src/ui/reducers/appReducer.js +0 -1
  103. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  104. package/dist/src/ui/reducers/appReducer.test.js +0 -4
  105. package/dist/src/ui/reducers/appReducer.test.js.map +1 -1
  106. package/dist/src/zed-integration/schema.d.ts +18 -18
  107. package/dist/tsconfig.build.tsbuildinfo +1 -1
  108. package/package.json +3 -3
  109. package/dist/src/ui/components/ProviderModelDialog.d.ts +0 -15
  110. package/dist/src/ui/components/ProviderModelDialog.js +0 -182
  111. package/dist/src/ui/components/ProviderModelDialog.js.map +0 -1
  112. package/dist/src/ui/components/ProviderModelDialog.responsive.test.d.ts +0 -6
  113. package/dist/src/ui/components/ProviderModelDialog.responsive.test.js +0 -252
  114. package/dist/src/ui/components/ProviderModelDialog.responsive.test.js.map +0 -1
  115. package/dist/src/ui/components/ProviderModelDialog.test.d.ts +0 -6
  116. package/dist/src/ui/components/ProviderModelDialog.test.js +0 -197
  117. package/dist/src/ui/components/ProviderModelDialog.test.js.map +0 -1
  118. package/dist/src/ui/hooks/useProviderModelDialog.d.ts +0 -26
  119. package/dist/src/ui/hooks/useProviderModelDialog.js +0 -61
  120. package/dist/src/ui/hooks/useProviderModelDialog.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vybestack/llxprt-code",
3
- "version": "0.8.0",
3
+ "version": "0.9.0-nightly.260119.0f050754d",
4
4
  "description": "LLxprt Code",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,7 +33,7 @@
33
33
  "dist"
34
34
  ],
35
35
  "config": {
36
- "sandboxImageUri": "ghcr.io/vybestack/llxprt-code/sandbox:0.8.0"
36
+ "sandboxImageUri": "ghcr.io/vybestack/llxprt-code/sandbox:0.9.0-nightly.260119.0f050754d"
37
37
  },
38
38
  "dependencies": {
39
39
  "@anthropic-ai/sdk": "^0.55.1",
@@ -42,7 +42,7 @@
42
42
  "@iarna/toml": "^2.2.5",
43
43
  "@modelcontextprotocol/sdk": "^1.25.2",
44
44
  "@types/update-notifier": "^6.0.8",
45
- "@vybestack/llxprt-code-core": "0.8.0",
45
+ "@vybestack/llxprt-code-core": "0.9.0-nightly.260119.0f050754d",
46
46
  "ansi-regex": "^6.2.2",
47
47
  "chalk": "^5.3.0",
48
48
  "cli-spinners": "2.9.2",
@@ -1,15 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Vybestack LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- import React from 'react';
7
- import { IModel } from '../../providers/index.js';
8
- interface ProviderModelDialogProps {
9
- models: IModel[];
10
- currentModel: string;
11
- onSelect: (id: string) => void;
12
- onClose: () => void;
13
- }
14
- export declare const ProviderModelDialog: React.FC<ProviderModelDialogProps>;
15
- export {};
@@ -1,182 +0,0 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Vybestack LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import React, { useState, useMemo } from 'react';
8
- import { Box, Text } from 'ink';
9
- import { SemanticColors } from '../colors.js';
10
- import { useResponsive } from '../hooks/useResponsive.js';
11
- import { truncateStart } from '../utils/responsive.js';
12
- import { useKeypress } from '../hooks/useKeypress.js';
13
- export const ProviderModelDialog = ({ models, currentModel, onSelect, onClose, }) => {
14
- const { isNarrow, isWide, width } = useResponsive();
15
- const [searchTerm, setSearchTerm] = useState('');
16
- const [isSearching, setIsSearching] = useState(true);
17
- // Sort models alphabetically by ID
18
- const sortedModels = useMemo(() => [...models].sort((a, b) => a.id.toLowerCase().localeCompare(b.id.toLowerCase())), [models]);
19
- // Filter models based on search term
20
- const filteredModels = useMemo(() => sortedModels.filter((m) => m.id.toLowerCase().includes(searchTerm.toLowerCase())), [sortedModels, searchTerm]);
21
- const [index, setIndex] = useState(() => Math.max(0, sortedModels.findIndex((m) => m.id === currentModel)));
22
- // Reset index when search term changes
23
- React.useEffect(() => {
24
- const currentIndex = filteredModels.findIndex((m) => m.id === currentModel);
25
- setIndex(Math.max(0, currentIndex));
26
- }, [searchTerm, filteredModels, currentModel]);
27
- // Calculate optimal layout based on available width and content
28
- const calculateLayout = () => {
29
- // Calculate minimum column width needed
30
- const longestModelName = filteredModels.reduce((len, m) => Math.max(len, m.id.length), 0);
31
- if (isNarrow) {
32
- return { columns: 1, colWidth: Math.max(longestModelName + 4, 25) };
33
- }
34
- // Step 1: Get actual content width - responsive to screen size
35
- // For narrow screens, use full width; for wider screens, use 80% of width
36
- const maxDialogWidth = isNarrow ? width : Math.floor(width * 0.8);
37
- const contentWidth = maxDialogWidth - 4; // 4 for padding/borders
38
- // Step 2: Calculate column width needed (model name + marker + small buffer)
39
- const markerWidth = 2; // "● " or "○ "
40
- const spacingBetweenCols = 4; // Fixed spacing between columns
41
- const colWidthNeeded = longestModelName + markerWidth + 1; // +1 for a tiny buffer
42
- // Step 3: Determine optimal column count
43
- // Try to fit as many columns as possible without truncation
44
- let optimalColumns = 1;
45
- for (let cols = 5; cols >= 1; cols--) {
46
- // Calculate total width needed for this many columns
47
- const totalWidthNeeded = colWidthNeeded * cols + spacingBetweenCols * (cols - 1);
48
- if (totalWidthNeeded <= contentWidth) {
49
- optimalColumns = cols;
50
- break;
51
- }
52
- }
53
- // If even 1 column doesn't fit, we'll need to truncate
54
- const columns = optimalColumns;
55
- // Step 4: Calculate actual column width
56
- if (columns === 1) {
57
- // Single column: use all available width
58
- return { columns: 1, colWidth: contentWidth };
59
- }
60
- else {
61
- // Multiple columns: use exact width needed + spacing
62
- return { columns, colWidth: colWidthNeeded };
63
- }
64
- };
65
- const layout = calculateLayout();
66
- const { columns, colWidth } = layout;
67
- const rows = Math.ceil(filteredModels.length / columns);
68
- const maxDialogWidth = isNarrow ? width : Math.floor(width * 0.8);
69
- const move = (delta) => {
70
- if (filteredModels.length === 0)
71
- return;
72
- let next = index + delta;
73
- if (next < 0)
74
- next = 0;
75
- if (next >= filteredModels.length)
76
- next = filteredModels.length - 1;
77
- setIndex(next);
78
- };
79
- useKeypress((key) => {
80
- if (key.name === 'escape') {
81
- if (isSearching && searchTerm.length > 0) {
82
- setSearchTerm('');
83
- }
84
- else {
85
- return onClose();
86
- }
87
- }
88
- if (isSearching) {
89
- if (key.name === 'return') {
90
- if (filteredModels.length > 0) {
91
- setIsSearching(false);
92
- }
93
- }
94
- else if (key.name === 'tab' ||
95
- (key.name === 'down' && searchTerm.length === 0)) {
96
- setIsSearching(false);
97
- }
98
- else if (key.name === 'backspace' || key.name === 'delete') {
99
- setSearchTerm((prev) => prev.slice(0, -1));
100
- }
101
- else if (key.sequence &&
102
- typeof key.sequence === 'string' &&
103
- !key.ctrl &&
104
- !key.meta &&
105
- key.insertable !== false) {
106
- setSearchTerm((prev) => prev + key.sequence);
107
- }
108
- }
109
- else {
110
- if (key.name === 'return' && filteredModels.length > 0) {
111
- return onSelect(filteredModels[index].id);
112
- }
113
- if (key.name === 'tab' || (key.name === 'up' && index === 0)) {
114
- setIsSearching(true);
115
- return;
116
- }
117
- if (key.name === 'left')
118
- move(-1);
119
- if (key.name === 'right')
120
- move(1);
121
- if (key.name === 'up')
122
- move(-columns);
123
- if (key.name === 'down')
124
- move(columns);
125
- }
126
- }, { isActive: true });
127
- const renderItem = (m, i, isLastInRow) => {
128
- const selected = i === index;
129
- // Calculate display name - truncate from start to preserve model name
130
- let displayName;
131
- const maxLength = colWidth - 3; // Account for marker and space
132
- if (m.id.length > maxLength) {
133
- // Truncate from start to preserve the important model name at the end
134
- displayName = truncateStart(m.id, maxLength);
135
- }
136
- else {
137
- displayName = m.id;
138
- }
139
- return (_jsx(Box, { width: colWidth, marginRight: isLastInRow ? 0 : 1, children: _jsxs(Text, { color: selected
140
- ? SemanticColors.text.accent
141
- : isSearching && !isNarrow
142
- ? SemanticColors.text.secondary
143
- : SemanticColors.text.primary, children: [selected ? '● ' : '○ ', displayName] }) }, m.id));
144
- };
145
- // Calculate visible items for scrolling (limit to reasonable amount)
146
- const maxVisibleRows = Math.min(rows, 10);
147
- const currentRow = Math.floor(index / columns);
148
- const scrollOffset = Math.max(0, Math.min(currentRow - Math.floor(maxVisibleRows / 2), rows - maxVisibleRows));
149
- const startIndex = scrollOffset * columns;
150
- const endIndex = Math.min(startIndex + maxVisibleRows * columns, filteredModels.length);
151
- const visibleModels = filteredModels.slice(startIndex, endIndex);
152
- // Create the model grid with proper row/column layout
153
- const renderModelGrid = () => {
154
- const gridRows = [];
155
- for (let row = 0; row < maxVisibleRows; row++) {
156
- const rowItems = [];
157
- for (let col = 0; col < columns; col++) {
158
- const idx = row * columns + col;
159
- if (idx < visibleModels.length) {
160
- const isLastInRow = col === columns - 1;
161
- rowItems.push(renderItem(visibleModels[idx], startIndex + idx, isLastInRow));
162
- }
163
- }
164
- if (rowItems.length > 0) {
165
- gridRows.push(_jsx(Box, { flexDirection: "row", children: rowItems }, row));
166
- }
167
- }
168
- return _jsx(Box, { flexDirection: "column", children: gridRows });
169
- };
170
- const renderContent = () => {
171
- if (isNarrow) {
172
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: SemanticColors.text.primary, children: "Select Model" }), _jsxs(Box, { marginY: 1, children: [_jsxs(Text, { color: SemanticColors.text.primary, children: ["search: ", _jsx(Text, { color: SemanticColors.text.accent, children: "\u258C" })] }), _jsx(Text, { color: SemanticColors.text.primary, children: searchTerm })] }), _jsx(Text, { color: SemanticColors.text.secondary, children: "Tab to switch modes, Enter to select, Esc to cancel" }), _jsxs(Text, { color: SemanticColors.text.secondary, children: [filteredModels.length, " models", searchTerm && ` found`] }), filteredModels.length > 0 ? (renderModelGrid()) : (_jsx(Box, { marginY: 1, children: _jsxs(Text, { color: SemanticColors.text.secondary, children: ["No models match \"", searchTerm, "\""] }) }))] }));
173
- }
174
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, color: SemanticColors.text.primary, children: isSearching
175
- ? 'Search Models'
176
- : 'Select Model (Tab to switch modes, Enter to select, Esc to cancel)' }), _jsxs(Box, { marginY: 1, children: [_jsxs(Text, { color: isSearching
177
- ? SemanticColors.text.primary
178
- : SemanticColors.text.secondary, children: ["search:", ' ', isSearching && _jsx(Text, { color: SemanticColors.text.accent, children: "\u258C" })] }), _jsx(Text, { color: SemanticColors.text.primary, children: searchTerm })] }), _jsxs(Text, { color: SemanticColors.text.secondary, children: ["Found ", filteredModels.length, " of ", sortedModels.length, " models"] }), isWide && rows > maxVisibleRows && (_jsxs(Text, { color: SemanticColors.text.secondary, children: ["Showing ", scrollOffset + 1, "-", Math.min(scrollOffset + maxVisibleRows, rows), " of ", rows, " rows"] })), filteredModels.length > 0 ? (renderModelGrid()) : (_jsx(Box, { marginY: 1, children: _jsxs(Text, { color: SemanticColors.text.secondary, children: ["No models match \"", searchTerm, "\""] }) })), filteredModels.length > 0 && !isSearching && (_jsxs(Text, { color: SemanticColors.text.secondary, children: ["Selected: ", filteredModels[index].id] })), _jsx(Text, { color: SemanticColors.text.secondary, children: "Tab to switch modes" })] }));
179
- };
180
- return isNarrow ? (_jsx(Box, { flexDirection: "column", padding: 1, children: renderContent() })) : (_jsx(Box, { borderStyle: "round", borderColor: SemanticColors.border.default, flexDirection: "column", padding: 1, width: maxDialogWidth, children: renderContent() }));
181
- };
182
- //# sourceMappingURL=ProviderModelDialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProviderModelDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/ProviderModelDialog.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Vybestack LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};
@@ -1,252 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Vybestack LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
- import { render } from 'ink-testing-library';
8
- import { describe, it, expect, vi, beforeEach, } from 'vitest';
9
- import { ProviderModelDialog } from './ProviderModelDialog.js';
10
- import { useTerminalSize } from '../hooks/useTerminalSize.js';
11
- vi.mock('../hooks/useTerminalSize.js');
12
- const testModels = [
13
- {
14
- id: 'gpt-4',
15
- name: 'GPT-4',
16
- provider: 'openai',
17
- supportedToolFormats: ['openai'],
18
- },
19
- {
20
- id: 'gpt-3.5-turbo',
21
- name: 'GPT-3.5 Turbo',
22
- provider: 'openai',
23
- supportedToolFormats: ['openai'],
24
- },
25
- {
26
- id: 'claude-3-opus-20240229',
27
- name: 'Claude 3 Opus',
28
- provider: 'anthropic',
29
- supportedToolFormats: ['anthropic'],
30
- },
31
- {
32
- id: 'claude-3-sonnet-20240229',
33
- name: 'Claude 3 Sonnet',
34
- provider: 'anthropic',
35
- supportedToolFormats: ['anthropic'],
36
- },
37
- {
38
- id: 'gemini-pro-very-long-model-name-that-should-be-truncated',
39
- name: 'Gemini Pro Long',
40
- provider: 'google',
41
- supportedToolFormats: ['google'],
42
- },
43
- {
44
- id: 'text-embedding-ada-002',
45
- name: 'Ada Embedding',
46
- provider: 'openai',
47
- supportedToolFormats: ['openai'],
48
- },
49
- {
50
- id: 'another-very-long-model-identifier-for-testing-truncation',
51
- name: 'Long Model',
52
- provider: 'test',
53
- supportedToolFormats: ['test'],
54
- },
55
- ];
56
- describe('ProviderModelDialog Responsive Behavior', () => {
57
- let mockUseTerminalSize;
58
- const mockOnSelect = vi.fn();
59
- const mockOnClose = vi.fn();
60
- beforeEach(() => {
61
- vi.clearAllMocks();
62
- mockUseTerminalSize = useTerminalSize;
63
- });
64
- describe('NARROW width behavior (< 80 cols)', () => {
65
- beforeEach(() => {
66
- mockUseTerminalSize.mockReturnValue({ columns: 60, rows: 20 });
67
- });
68
- it('should prioritize search-first approach with help text below search', () => {
69
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose }));
70
- const output = lastFrame();
71
- // Should prominently show search functionality
72
- expect(output).toMatch(/search:/i);
73
- expect(output).toContain('▌'); // Active search cursor
74
- // Should show help text below search
75
- expect(output).toMatch(/tab.*switch modes/i);
76
- expect(output).toMatch(/enter.*select/i);
77
- expect(output).toMatch(/esc.*cancel/i);
78
- // Should have minimal borders to save space
79
- expect(output).not.toMatch(/┌─+┐/); // No fancy borders or simpler borders
80
- // Should show model IDs (may not be truncated at narrow width anymore)
81
- expect(output).toContain('gemini-pro'); // Should show at least part of the model name
82
- // Should show model results but prioritize search
83
- expect(output).toContain('gpt-4');
84
- expect(output).toContain('claude-3-opus');
85
- });
86
- it('should focus search over grid layout for narrow width', () => {
87
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-3.5-turbo", onSelect: mockOnSelect, onClose: mockOnClose }));
88
- const output = lastFrame();
89
- // Should not show complex multi-column layout
90
- expect(output).not.toMatch(/├|┤|│.*│.*│/); // No multi-column separators
91
- // Search should be the primary focus
92
- expect(output).toMatch(/search:.*▌/);
93
- // Should show models in simple list format (note: gpt-3.5-turbo is selected, hence ●)
94
- expect(output).toMatch(/○ gpt-4/);
95
- expect(output).toMatch(/● gpt-3.5-turbo/);
96
- });
97
- });
98
- describe('STANDARD width behavior (80-120 cols)', () => {
99
- beforeEach(() => {
100
- mockUseTerminalSize.mockReturnValue({ columns: 100, rows: 20 });
101
- });
102
- it('should show condensed layout with abbreviated model descriptions', () => {
103
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "claude-3-opus-20240229", onSelect: mockOnSelect, onClose: mockOnClose }));
104
- const output = lastFrame();
105
- // Should have proper borders
106
- expect(output).toMatch(/┌─+┐|╭─+╮/);
107
- // Should show search but not as prominently
108
- expect(output).toMatch(/search:/i);
109
- // Should show model names (may not truncate anymore)
110
- expect(output).toContain('gemini-pro'); // Should show model names
111
- // Should show model grid in condensed form
112
- expect(output).toContain('gpt-4');
113
- expect(output).toContain('● claude-3-opus-20240229'); // Selected model
114
- // Should show model count information
115
- expect(output).toMatch(/found \d+ of \d+ models/i);
116
- // Should have scrolling indicators if needed
117
- expect(output).toMatch(/tab.*switch modes/i);
118
- });
119
- it('should balance search functionality with grid layout', () => {
120
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose }));
121
- const output = lastFrame();
122
- // Should show both search and grid effectively
123
- expect(output).toMatch(/search:.*▌/);
124
- // Should have multi-column layout but condensed
125
- const lines = output.split('\n');
126
- const modelLines = lines.filter((line) => line.includes('○') || line.includes('●'));
127
- expect(modelLines.length).toBeGreaterThan(2); // Multiple rows
128
- // Should show current selection info
129
- expect(output).toMatch(/● gpt-4/);
130
- });
131
- });
132
- describe('WIDE width behavior (> 120 cols)', () => {
133
- beforeEach(() => {
134
- mockUseTerminalSize.mockReturnValue({ columns: 180, rows: 20 });
135
- });
136
- it('should show full layout with all model details visible', () => {
137
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "text-embedding-ada-002", onSelect: mockOnSelect, onClose: mockOnClose }));
138
- const output = lastFrame();
139
- // Should show full model names without truncation
140
- expect(output).toContain('gemini-pro-very-long-model-name-that-should-be-truncated');
141
- expect(output).toContain('another-very-long-model-identifier-for-testing-truncation');
142
- // Should have full decorative borders
143
- expect(output).toMatch(/┌─+┐|╭─+╮/);
144
- // Should show comprehensive search interface
145
- expect(output).toMatch(/search:.*▌/);
146
- // Should show complete instructions (simplified check)
147
- expect(output).toMatch(/tab.*switch modes/i);
148
- expect(output).toMatch(/search models/i);
149
- // Should show the selected model with ● marker
150
- expect(output).toMatch(/● text-embedding-ada-002/);
151
- // Should show model count information
152
- expect(output).toMatch(/found \d+ of \d+ models/i);
153
- });
154
- it('should utilize full width for optimal model grid layout', () => {
155
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "claude-3-sonnet-20240229", onSelect: mockOnSelect, onClose: mockOnClose }));
156
- const output = lastFrame();
157
- // Should efficiently use wide layout for multiple columns
158
- expect(output).toContain('● claude-3-sonnet-20240229');
159
- // Should show all models with full names
160
- expect(output).toContain('gpt-4');
161
- expect(output).toContain('gpt-3.5-turbo');
162
- expect(output).toContain('claude-3-opus-20240229');
163
- // Should pack efficiently - fewer rows due to more columns
164
- const lines = output.split('\n');
165
- const contentLines = lines.filter((line) => line.includes('○') || line.includes('●'));
166
- expect(contentLines.length).toBeLessThanOrEqual(4); // Efficient packing
167
- });
168
- it('should create proper fixed-width columns with consistent spacing', () => {
169
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose }));
170
- const output = lastFrame();
171
- // Parse model grid lines to check column layout
172
- const lines = output.split('\n');
173
- const modelLines = lines.filter((line) => line.includes('○') || line.includes('●'));
174
- // Each model line should have consistent column widths
175
- // Models should be spaced with proper fixed-width columns, not just single spaces
176
- expect(modelLines.length).toBeGreaterThan(0);
177
- const firstLine = modelLines[0];
178
- // Should NOT have models separated by only single spaces (the zigzag issue)
179
- // Instead should have proper column alignment
180
- const modelMatches = firstLine.match(/[○●]\s+[^\s]+/g);
181
- // Verify proper column spacing if multiple models on same line
182
- const hasProperSpacing = !modelMatches ||
183
- modelMatches.length <= 1 ||
184
- (() => {
185
- const model1End = firstLine.indexOf(modelMatches[0]) + modelMatches[0].length;
186
- const model2Start = firstLine.indexOf(modelMatches[1]);
187
- return model2Start - model1End >= 2;
188
- })();
189
- expect(hasProperSpacing).toBe(true); // Fixed-width columns should have adequate spacing
190
- });
191
- });
192
- describe('Search functionality across breakpoints', () => {
193
- it('should maintain search functionality at all breakpoints', () => {
194
- const widths = [60, 100, 180];
195
- widths.forEach((width) => {
196
- mockUseTerminalSize.mockReturnValue({ columns: width, rows: 20 });
197
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose }));
198
- const output = lastFrame();
199
- // Search should be available at all breakpoints
200
- expect(output).toMatch(/search:/i);
201
- expect(output).toContain('▌'); // Search cursor
202
- // Models should be visible
203
- expect(output).toContain('gpt-4');
204
- });
205
- });
206
- it('should show search results count at standard and wide breakpoints', () => {
207
- // Standard width
208
- mockUseTerminalSize.mockReturnValue({ columns: 100, rows: 20 });
209
- let { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose }));
210
- expect(lastFrame()).toMatch(/found \d+ of \d+ models/i);
211
- // Wide width
212
- mockUseTerminalSize.mockReturnValue({ columns: 180, rows: 20 });
213
- ({ lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose })));
214
- expect(lastFrame()).toMatch(/found \d+ of \d+ models/i);
215
- });
216
- });
217
- describe('Responsive breakpoint transitions', () => {
218
- it('should handle transitions between breakpoints correctly', () => {
219
- // Test at NARROW/STANDARD boundary (80 cols)
220
- mockUseTerminalSize.mockReturnValue({ columns: 80, rows: 20 });
221
- const { lastFrame: standardFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose }));
222
- const standardOutput = standardFrame();
223
- // At 80 columns, should be STANDARD behavior
224
- expect(standardOutput).toMatch(/┌─+┐|╭─+╮/); // Should have borders
225
- expect(standardOutput).toMatch(/found.*models/i); // Should show model count
226
- // Test at STANDARD/WIDE boundary (120 cols)
227
- mockUseTerminalSize.mockReturnValue({ columns: 120, rows: 20 });
228
- const { lastFrame: wideFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "gpt-4", onSelect: mockOnSelect, onClose: mockOnClose }));
229
- const wideOutput = wideFrame();
230
- // At 120 columns, should be STANDARD (not WIDE yet)
231
- expect(wideOutput).toContain('gemini-pro'); // Should show model name
232
- });
233
- });
234
- describe('Semantic color preservation', () => {
235
- it('should maintain semantic colors across all breakpoints', () => {
236
- const widths = [60, 100, 180];
237
- widths.forEach((width) => {
238
- mockUseTerminalSize.mockReturnValue({ columns: width, rows: 20 });
239
- const { lastFrame } = render(_jsx(ProviderModelDialog, { models: testModels, currentModel: "claude-3-opus-20240229", onSelect: mockOnSelect, onClose: mockOnClose }));
240
- const output = lastFrame();
241
- // Should show selected model with accent color (●)
242
- // Note: Model names might be truncated at narrow width
243
- expect(output).toMatch(/● claude-3-opus/);
244
- // Should show unselected models with appropriate colors (○)
245
- expect(output).toMatch(/○ gpt-4/);
246
- // Search cursor should use accent color
247
- expect(output).toContain('▌');
248
- });
249
- });
250
- });
251
- });
252
- //# sourceMappingURL=ProviderModelDialog.responsive.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ProviderModelDialog.responsive.test.js","sourceRoot":"","sources":["../../../../src/ui/components/ProviderModelDialog.responsive.test.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2025 Vybestack LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
- export {};